{
  "version": 3,
  "sources": ["/cdn/shop/t/14/assets/admin-os.js?orbit_build=V643.0.0"],
  "sourcesContent": ["(function () {\n  // PROTECTED CANONICAL ADMIN RUNTIME CONTRACT (V355+).\n  // There is exactly ONE Admin JavaScript asset: assets/admin-os.js. Never create\n  // admin-os-vXXX.js. The guard stores the exact claimant identity so a stale or\n  // duplicate runtime cannot silently win without leaving visible diagnostics.\n  const ORBIT_RELEASE = \"V764.0.0\";\n  const ORBIT_ADMIN_BUILD = \"admin-canonical-v632-vendor-club-finish-20260925\";\n  const ORBIT_ADMIN_SCRIPT_URL = (document.currentScript && document.currentScript.src) || \"unknown-script-url\";\n  const existingAdminRuntime = window.__ORBIT_ADMIN_RUNTIME_CANONICAL__;\n  function showRuntimeConflict(existing) {\n    const render=function(){\n      const canary=document.getElementById(\"orbitCanonicalAdminCanary\");\n      const owner=(existing && typeof existing === \"object\") ? JSON.stringify(existing) : String(existing);\n      if(canary){\n        canary.textContent=\"ADMIN RUNTIME CONFLICT \u2014 canonical admin-os.js was blocked by an earlier guard claimant: \"+owner;\n        canary.style.background=\"#ffe1e1\"; canary.style.borderColor=\"#b42318\"; canary.style.color=\"#8a1710\";\n      }\n    };\n    if(document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\",render,{once:true}); else render();\n  }\n  if (existingAdminRuntime) { showRuntimeConflict(existingAdminRuntime); return; }\n  window.__ORBIT_ADMIN_RUNTIME_CANONICAL__ = {\n    asset:\"admin-os.js\", release:ORBIT_RELEASE, build:ORBIT_ADMIN_BUILD, scriptUrl:ORBIT_ADMIN_SCRIPT_URL, claimedAt:new Date().toISOString()\n  };\n  /* PROTECTED AI PROJECT ZIP UI + ACCEPTANCE QUEUE UI. Do not change download or Ready-for-Testing filtering without protected regressions. */\n  const API_BASE = \"https://orbit-membership-service.onrender.com\";\n\n  const params = new URLSearchParams(window.location.search);\n  const secret = params.get(\"secret\") || \"\";\n  let adminSessionTokenV329 = \"\";\n  try { adminSessionTokenV329 = sessionStorage.getItem(\"orbitAdminSessionV329\") || \"\"; } catch (_) {}\n  let adminCurrentUserV329 = null;\n  let adminRuntimeStartedV329 = false;\n  let adminRuntimeTimersStartedV329 = false;\n  let orbitStartupModuleV329 = \"dashboard\";\n  let homeNoticeTimerV834 = null;\n\n  // V359 permanent Admin document-cache recovery contract. Shopify Storefront\n  // Renderer can retain an older rendered Liquid document even after the MAIN\n  // theme source and asset read-back have advanced. From V359 onward the Admin\n  // browser lives on a release-addressed URL and the executing runtime compares\n  // itself with the backend. A future release mismatch navigates to that new\n  // release key, forcing a new Shopify document cache key without creating a\n  // versioned JavaScript filename.\n  const ORBIT_ADMIN_RELEASE_PARAM = \"orbit_admin_release\";\n  function orbitAdminReleaseAddressedUrlV359(release, {forceRefresh=false}={}) {\n    const target = new URL(window.location.href);\n    target.searchParams.set(ORBIT_ADMIN_RELEASE_PARAM, String(release || ORBIT_RELEASE));\n    if (forceRefresh) target.searchParams.set(\"orbit_admin_refresh\", String(Date.now()));\n    else target.searchParams.delete(\"orbit_admin_refresh\");\n    return target;\n  }\n  function renderAdminDocumentCacheFailureV359(backendRelease) {\n    const render=function(){\n      const canary=document.getElementById(\"orbitCanonicalAdminCanary\");\n      if(!canary)return;\n      canary.textContent=\"ADMIN DOCUMENT CACHE CONFLICT \u2014 browser runtime \"+ORBIT_RELEASE+\" but backend is \"+backendRelease+\". Release-addressed refresh did not advance Shopify rendering.\";\n      canary.style.background=\"#ffe1e1\";canary.style.borderColor=\"#b42318\";canary.style.color=\"#8a1710\";\n    };\n    if(document.readyState === \"loading\")document.addEventListener(\"DOMContentLoaded\",render,{once:true});else render();\n  }\n  function renderAuthoritativeAdminReleaseV632(release){\n    const value=String(release||\"\").trim();if(!/^V\\d+\\.\\d+\\.\\d+$/.test(value))return;\n    const chip=document.getElementById(\"orbitAdminVersionChip\");if(chip){chip.textContent=value;chip.dataset.liveRelease=value;}\n    const runtime=document.getElementById(\"orbitAdminRuntimeRelease\");if(runtime)runtime.value=value;\n  }\n  async function hydrateAuthoritativeAdminReleaseV632(){\n    try{\n      const response=await fetch(API_BASE+\"/runtime-version?admin_release_identity=\"+Date.now(),{cache:\"no-store\",headers:{\"Cache-Control\":\"no-cache\"}});\n      if(!response.ok)return;const payload=await response.json();renderAuthoritativeAdminReleaseV632(payload?.version||payload?.releaseVersion||payload?.orbitVersion);\n    }catch(_error){}\n  }\n  async function ensureAdminDocumentReleaseV359(){\n    try{\n      const response=await fetch(API_BASE+\"/health?orbit_admin_runtime_probe=\"+encodeURIComponent(ORBIT_RELEASE)+\"-\"+Date.now(),{cache:\"no-store\",headers:{\"Cache-Control\":\"no-cache\"}});\n      if(!response.ok)return;\n      const health=await response.json();\n      const backendRelease=String(health?.version||\"\").trim();\n      if(!/^V\\d+\\.\\d+\\.\\d+$/.test(backendRelease))return;\n      renderAuthoritativeAdminReleaseV632(backendRelease);\n      const addressed=params.get(ORBIT_ADMIN_RELEASE_PARAM)||\"\";\n      if(backendRelease!==ORBIT_RELEASE){\n        const loopKey=\"orbitAdminDocumentRefreshV359:\"+backendRelease;\n        let alreadyTried=false;\n        try{alreadyTried=sessionStorage.getItem(loopKey)===\"1\";}catch(_){}\n        if(addressed===backendRelease&&alreadyTried){renderAdminDocumentCacheFailureV359(backendRelease);return;}\n        try{sessionStorage.setItem(loopKey,\"1\");}catch(_){}\n        window.location.replace(orbitAdminReleaseAddressedUrlV359(backendRelease,{forceRefresh:addressed===backendRelease}).toString());\n        return;\n      }\n      // Once the correct runtime is executing, keep the release token in the URL\n      // so ordinary refreshes use the same proven browser cache key.\n      if(addressed!==ORBIT_RELEASE){\n        const target=orbitAdminReleaseAddressedUrlV359(ORBIT_RELEASE);\n        window.history.replaceState(window.history.state,\"\",target.pathname+target.search+target.hash);\n      }\n      try{sessionStorage.removeItem(\"orbitAdminDocumentRefreshV359:\"+ORBIT_RELEASE);}catch(_){}\n    }catch(error){console.warn(\"Admin document release check failed:\",error.message||error);}\n  }\n  ensureAdminDocumentReleaseV359();\n  if(document.readyState === \"loading\")document.addEventListener(\"DOMContentLoaded\",hydrateAuthoritativeAdminReleaseV632,{once:true});else hydrateAuthoritativeAdminReleaseV632();\n\n  document.addEventListener(\"DOMContentLoaded\", function(){ document.querySelectorAll(\"[data-orbit-scanner-link]\").forEach(function(link){ link.href = API_BASE + \"/scanner?secret=\" + encodeURIComponent(secret); }); });\n\n\n  function renderCanonicalRuntimeDiagnostic(){\n    const canary=document.getElementById(\"orbitCanonicalAdminCanary\");\n    if(canary){\n      canary.textContent=\"Runtime verified \u00B7 \"+ORBIT_RELEASE;\n      canary.title=\"ADMIN CANONICAL RUNTIME VERIFIED \u2014 V647.0.0 \u00B7 assets/admin-os.js executing\";\n      canary.style.cssText=\"display:inline-flex!important;position:static!important;inset:auto!important;width:auto!important;max-width:100%!important;padding:6px 9px!important;margin:0!important;border:1px solid #a8ddbc!important;border-radius:8px!important;background:#eaf8ef!important;color:#17613a!important;font:700 11px/1.2 Arial,sans-serif!important;text-align:left!important;box-shadow:none!important;visibility:visible!important;opacity:1!important;z-index:auto!important;\";\n      const homeStatus=document.querySelector(\".orbit-home-header .orbit-command-status\");\n      if(homeStatus && canary.parentElement!==homeStatus) homeStatus.appendChild(canary);\n    }\n    const runtime=window.__ORBIT_ADMIN_RUNTIME_CANONICAL__ || {};\n    const setRuntimeField=(id,value)=>{ const el=document.getElementById(id); if(el) el.value=String(value||\"\u2014\"); };\n    setRuntimeField(\"orbitAdminRuntimeAsset\",runtime.asset||\"admin-os.js\");\n    setRuntimeField(\"orbitAdminRuntimeRelease\",runtime.release||ORBIT_RELEASE);\n    setRuntimeField(\"orbitAdminRuntimeBuild\",runtime.build||ORBIT_ADMIN_BUILD);\n    setRuntimeField(\"orbitAdminRuntimeUrl\",runtime.scriptUrl||ORBIT_ADMIN_SCRIPT_URL);\n    setRuntimeField(\"orbitAdminRuntimeGuard\",JSON.stringify(runtime));\n  }\n  if(document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\",renderCanonicalRuntimeDiagnostic,{once:true}); else renderCanonicalRuntimeDiagnostic();\n  const state = { currentModule: \"dashboard\", currentMemberView: \"active\", adminAuthenticated: false, acceptanceReadyCount: 0, acceptanceHeldCount: 0, operationsTaskCount: 0, homeNotice: { message: \"Orbit OS loaded with live backend data.\", isError: false }, summary: null, fulfilmentCentre: null, fulfilment: null, shippingConfig: null, draws: null, golden: null, events: null, scheduler: null, communications: null, communicationTemplates: null, selectedTemplateKey: null, eventbrite: null, attendance: null, attendanceDetail: null, testMember: null, health: null, shopify: null, ticketCheckouts: null, supportInbox: null, currentSupportTicketId: null, specialShipments: null, shippingCostEstimate: null, eventPlanningEntriesV485: [], eventPlanningMonthV485: new Date(new Date().getFullYear(), new Date().getMonth(), 1), eventPlanningLoadedV485: false, vendorBriefingBatchJobV487: null, vendorBriefingBatchPollTimerV487: null };\n\n  function $(id) { return document.getElementById(id); }\n\n  function esc(value) {\n    return String(value == null ? \"\" : value)\n      .replace(/&/g, \"&amp;\")\n      .replace(/</g, \"&lt;\")\n      .replace(/>/g, \"&gt;\")\n      .replace(/\"/g, \"&quot;\")\n      .replace(/'/g, \"&#039;\");\n  }\n\n  function text(id, value) {\n    const el = $(id);\n    if (el) el.textContent = value == null ? \"\u2014\" : String(value);\n  }\n\n  function setCountBadge(id, value) {\n    const el = $(id);\n    if (!el) return;\n    const count = Math.max(0, Number(value) || 0);\n    el.textContent = count > 0 ? String(count) : \"\";\n    el.dataset.count = String(count);\n    el.hidden = count === 0;\n    el.setAttribute(\"aria-hidden\", count === 0 ? \"true\" : \"false\");\n  }\n\n  function prettyDate(value) {\n    if (!value) return \"\u2014\";\n    const date = new Date(value);\n    if (Number.isNaN(date.getTime())) return value;\n    return date.toLocaleString(\"en-GB\", {\n      day: \"2-digit\",\n      month: \"short\",\n      year: \"numeric\",\n      hour: \"2-digit\",\n      minute: \"2-digit\"\n    });\n  }\n\n  function money(value) {\n    const number = Number(value);\n    return Number.isFinite(number) ? \"\u00A3\" + number.toFixed(2) : \"\u2014\";\n  }\n\n  /*\n   * Canonical operator-facing status formatter. Keep this utility available\n   * before any workspace renders so an unfamiliar backend status can never\n   * abort the Admin bootstrap (the live v80 build called an undefined helper).\n   */\n  function humanStatus(value, fallback = \"Not recorded\") {\n    const raw = String(value == null || value === \"\" ? fallback : value).trim();\n    const key = raw.toLowerCase();\n    const labels = {\n      awaiting_claim: \"Legacy claim state\", not_required: \"No claim required\", awaiting_dispatch: \"Awaiting Dispatch\",\n      awaiting_label: \"Awaiting Label\", ready_for_label: \"Ready for Label\",\n      broadcast_and_email_sent: \"Broadcast + email sent\", broadcast_sent: \"Broadcast sent\", email_sent: \"Email sent\", attention_required: \"Needs Attention\",\n      label_generated: \"Label Ready\", labelled: \"Label Ready\",\n      needs_attention: \"Needs Attention\", partially_verified: \"Partially Verified\",\n      fulfilled: \"Dispatched\", shipped: \"Dispatched\", dispatched: \"Dispatched\",\n      delivered: \"Delivered\", drawn: \"Winner Selected\", completed: \"Completed\",\n      approved: \"Approved\", pending: \"Pending\", active: \"Active\", failed: \"Failed\"\n    };\n    return labels[key] || raw.replace(/_/g, \" \").replace(/\\b\\w/g, function (character) {\n      return character.toUpperCase();\n    });\n  }\n\n  /* V553: run one explicitly refreshed workspace without allowing its failure\n   * to stop the others. Transient browser/network fetch failures get one bounded\n   * retry before an operator-facing failure is reported. Background startup no\n   * longer calls the full workspace hydrator at all. */\n  function transientWorkspaceFetchFailureV553(error) {\n    const message=String(error?.message||error||\"\");\n    return error instanceof TypeError || /networkerror|failed to fetch|network request|load failed/i.test(message);\n  }\n  async function loadWorkspace(name, loader) {\n    let lastError=null;\n    for(let attempt=0;attempt<2;attempt+=1){\n      try {\n        await loader();\n        return { name, ok: true, retried:attempt>0 };\n      } catch (error) {\n        lastError=error;\n        if(attempt===0&&transientWorkspaceFetchFailureV553(error)){\n          await new Promise(resolve=>setTimeout(resolve,350));\n          continue;\n        }\n        break;\n      }\n    }\n    console.error(\"Orbit Admin workspace failed:\", name, lastError);\n    return { name, ok: false, error:lastError };\n  }\n\n  function prettyShortDate(value) {\n    if (!value) return \"\u2014\";\n    const date = new Date(value);\n    if (Number.isNaN(date.getTime())) return value;\n    return date.toLocaleString(\"en-GB\", {\n      day: \"2-digit\",\n      month: \"short\",\n      hour: \"2-digit\",\n      minute: \"2-digit\"\n    });\n  }\n\n  function checkoutStatusClass(status) {\n    if (status === \"fulfilled\") return \"good\";\n    if (String(status || \"\").includes(\"failed\") || String(status || \"\").includes(\"error\")) return \"bad\";\n    return \"\";\n  }\n\n  function checkoutStatusLabel(row) {\n    if (row.status === \"fulfilled\") return \"fulfilled\";\n    if (row.status === \"fulfilment_in_progress\") return \"issuing tickets\";\n    if (row.lastSyncError) return \"needs attention\";\n    return row.status || \"unknown\";\n  }\n\n  function currentMonthKey() {\n    const now = new Date();\n    return now.getUTCFullYear() + \"-\" + String(now.getUTCMonth() + 1).padStart(2, \"0\");\n  }\n\n  /* V542 global status: keep the last action visible across workspaces.\n   * Dialog and deployment errors retain their existing protected routes. */\n  function setNotice(message, isError) {\n    const notice = $(\"adminNotice\");\n    if (!notice) return;\n    window.clearTimeout(homeNoticeTimerV834);\n    if (state.currentModule === \"dashboard\") {\n      state.homeNotice = { message: String(message || \"\"), isError: Boolean(isError) };\n    }\n    // V571: adminNotice is the single persistent global status/error surface.\n    // The old centred global error duplicated the same message and obscured work.\n    const globalError=$(\"orbitGlobalErrorNotice\");\n    if(globalError){globalError.hidden=true;globalError.classList.remove(\"visible\");globalError.textContent=\"\";}\n    const openDialog=document.querySelector(\"dialog[open]\");\n    if(openDialog){\n      let local=openDialog.querySelector(\".orbit-dialog-error-v418\");\n      if(isError){\n        if(!local){local=document.createElement(\"div\");local.className=\"orbit-dialog-error-v418\";local.setAttribute(\"role\",\"alert\");const heading=openDialog.querySelector(\".orbit-dialog-heading, h2, .orbit-kicker\");if(heading?.parentNode)heading.parentNode.insertBefore(local,heading.nextSibling);else openDialog.prepend(local);}\n        local.textContent=String(message||\"Something needs attention\");local.hidden=false;\n      }else if(local){local.hidden=true;local.textContent=\"\";}\n    }\n    notice.textContent = message;\n    notice.classList.toggle(\"error\", Boolean(isError));\n    notice.classList.remove(\"orbit-notice-fading\", \"orbit-notice-collapsed\");\n    notice.title = String(message || \"\");\n  }\n\n  function restoreHomeNotice() {\n    // Global status is not a Home module. Never resurrect a previous Home message.\n    const notice = $(\"adminNotice\");\n    if (notice) notice.classList.remove(\"orbit-notice-fading\", \"orbit-notice-collapsed\");\n  }\n\n\n  function setActionResult(message, isError) {\n    const target = $(\"commandActionResult\") || $(\"workflowResult\");\n    if (!target) return;\n    if (target.tagName === \"PRE\") {\n      target.textContent = message;\n    } else {\n      target.textContent = message;\n      target.classList.toggle(\"error\", Boolean(isError));\n    }\n  }\n\n  function setOrdersResult(message, isError) {\n    const target = $(\"shippingQueueResult\");\n    if (!target) return;\n    target.hidden = false;\n    target.textContent = message || \"Orders action completed.\";\n    target.classList.toggle(\"error\", Boolean(isError));\n  }\n\n  function setMonthStartOrdersResult(message, isError) {\n    const target = $(\"latestMonthStartOrdersResult\");\n    if (!target) return;\n    target.hidden = false;\n    target.textContent = message || \"Latest Month Start summary will appear here.\";\n    target.classList.toggle(\"error\", Boolean(isError));\n  }\n\n  /*\n   * Authoritative two-level Admin navigation.\n   *\n   * The left rail selects a business workspace (Home, Customers, Sales, etc.)\n   * while the context navigation selects a module inside that workspace.  Earlier\n   * emergency navigation code was removed because it competed with activateModule,\n   * but the legitimate data-workspace-nav controller also disappeared.  Keep this\n   * mapping and controller as the single source of truth for both navigation levels.\n   */\n  const adminWorkspaceConfig = {\n    home:{title:\"Home\",description:\"What needs your attention today\",defaultModule:\"dashboard\"},\n    customers:{title:\"Members\",description:\"Member management and support\",defaultModule:\"members\",businessWorkspace:\"members-club\"},\n    sales:{title:\"Tickets\",description:\"Ticket orders and promo codes\",defaultModule:\"shopify\",businessWorkspace:\"card-shows\"},\n    \"card-shopify\":{title:\"Shopify\",description:\"Orbit Card Show store, products, inventory and website management\",defaultModule:\"card-shopify\",preferredTab:\"overview\",businessWorkspace:\"card-shows\"},\n    events:{title:\"Events\",description:\"Event records and show management\",defaultModule:\"events\",preferredTab:\"eventbrite\",businessWorkspace:\"card-shows\"},\n    calendar:{title:\"Calendar\",description:\"Show schedule and planning calendar\",defaultModule:\"events\",preferredTab:\"calendar\",businessWorkspace:\"card-shows\"},\n    attendance:{title:\"Attendance\",description:\"Live and historical attendance reporting\",defaultModule:\"events\",preferredTab:\"attendance\",businessWorkspace:\"card-shows\"},\n    scanner:{title:\"Scanner\",description:\"Door-entry scanner\",defaultModule:\"scanner-admin\",businessWorkspace:\"card-shows\"},\n    directory:{title:\"Directory\",description:\"Directory records, review and publication\",defaultModule:\"directory\",preferredTab:\"events\",businessWorkspace:\"directory\"},\n    \"directory-control\":{title:\"Control Centre\",description:\"Manual Directory agents, pipeline forensics and live spend\",defaultModule:\"directory\",preferredTab:\"control\",businessWorkspace:\"directory\"},\n    \"directory-sources\":{title:\"Sources\",description:\"Approved discovery sources and human review queue\",defaultModule:\"directory\",preferredTab:\"sources\",businessWorkspace:\"directory\"},\n    \"directory-sponsorship\":{title:\"Sponsorship\",description:\"Directory sponsor bookings and display assets\",defaultModule:\"directory\",preferredTab:\"sponsors\",businessWorkspace:\"directory\"},\n    \"directory-organisers\":{title:\"Organiser Access\",description:\"Verified organiser claims and access\",defaultModule:\"directory\",preferredTab:\"organisers\",businessWorkspace:\"directory\"},\n    \"directory-media\":{title:\"Directory Media\",description:\"CardShowIndex images and managed directory assets\",defaultModule:\"media\",businessWorkspace:\"directory\"},\n    vendors:{title:\"Vendors\",description:\"Vendor customers and booking changes\",defaultModule:\"vendors\",preferredTab:\"customers\",businessWorkspace:\"card-shows\"},\n    \"vendor-live\":{title:\"Show Plan\",description:\"Plan and manage vendor bookings by upcoming event\",defaultModule:\"vendors\",preferredTab:\"live\",businessWorkspace:\"card-shows\"},\n    \"table-planner\":{title:\"Table Plan\",description:\"Table allocations and floor plans\",defaultModule:\"vendors\",preferredTab:\"planner\",businessWorkspace:\"card-shows\"},\n    venues:{title:\"Venues\",description:\"Venue records and show locations\",defaultModule:\"vendors\",preferredTab:\"venues\",businessWorkspace:\"card-shows\"},\n    fulfil:{title:\"Fulfilment\",description:\"Parcels, labels and dispatch\",defaultModule:\"shipping\",businessWorkspace:\"members-club\"},\n    \"box-inventory\":{title:\"Box Accounting\",description:\"Members Club inventory, costs and fulfilment profitability\",defaultModule:\"box-inventory\",businessWorkspace:\"members-club\"},\n    draws:{title:\"Prizes\",description:\"Monthly draws and Golden Tickets\",defaultModule:\"automation\",preferredTab:\"current\",businessWorkspace:\"members-club\"},\n    loyalty:{title:\"Loyalty\",description:\"Live rewards, drafts, stock and redemption history\",defaultModule:\"loyalty\",preferredTab:\"live\",businessWorkspace:\"members-club\"},\n    \"member-store\":{title:\"Store\",description:\"Exclusive member products and orders\",defaultModule:\"member-store\",preferredTab:\"overview\",businessWorkspace:\"members-club\"},\n    \"orbit-chase\":{title:\"Orbit Chase\",description:\"Member-only Chases, entries and verification\",defaultModule:\"member-store\",preferredTab:\"draws\",businessWorkspace:\"members-club\"},\n    \"poke-alerts\":{title:\"Pok\u00E9 Alerts\",description:\"Pok\u00E9mon stock intelligence, retailer health and notifications\",defaultModule:\"member-store\",preferredTab:\"poke-alerts\",businessWorkspace:\"members-club\"},\n    support: { title:\"Support\", description:\"Member support requests and replies\", defaultModule:\"support\", businessWorkspace:\"members-club\" },\n    \"vendor-support\": { title:\"Support\", description:\"Vendor Club support inbox and replies\", defaultModule:\"vendors\", preferredTab:\"club-support\", businessWorkspace:\"card-shows\" },\n    sms: { title:\"SMS\", description:\"SMS connection and delivery settings\", defaultModule:\"member-store\", preferredTab:\"sms\", businessWorkspace:\"development\" },\n    communications:{title:\"Email\",description:\"Workspace email inbox, templates and delivery history\",defaultModule:\"comms\",preferredTab:\"inbox\"},\n    \"gmail-hub\":{title:\"Personal Assistant (legacy link)\",description:\"Open your AI assistant\",defaultModule:\"gmail-hub\",preferredTab:\"home\",businessWorkspace:\"communications\"},\n    \"pa-home\":{title:\"My assistant\",description:\"Your important actions, already prepared\",defaultModule:\"gmail-hub\",preferredTab:\"home\",businessWorkspace:\"communications\"},\n    \"pa-mail\":{title:\"Mailbox\",description:\"Gmail, with Orbit AI helping\",defaultModule:\"gmail-hub\",preferredTab:\"mail\",businessWorkspace:\"communications\"},\n    \"pa-tasks\":{title:\"My actions\",description:\"Things which genuinely need your input\",defaultModule:\"gmail-hub\",preferredTab:\"tasks\",businessWorkspace:\"communications\"},\n    \"pa-settings\":{title:\"Assistant settings\",description:\"Accounts, Gmail rules and background processing\",defaultModule:\"gmail-hub\",preferredTab:\"accounts\",businessWorkspace:\"communications\"},\n    \"member-broadcasts\":{title:\"Broadcasts\",description:\"Member announcements, drafts and history\",defaultModule:\"engagement\",preferredTab:\"broadcasts\",businessWorkspace:\"members-club\"},\n    \"member-newsletters\":{title:\"Newsletters\",description:\"Newsletter studio, subscribers and delivery\",defaultModule:\"engagement\",preferredTab:\"newsletters\",businessWorkspace:\"members-club\"},\n    marketing:{title:\"Event Marketing\",description:\"Advertising intelligence, reconciliation and event costs\",defaultModule:\"advertising\",businessWorkspace:\"card-shows\"},\n    performance:{title:\"Analytics\",description:\"Card Shows analytics for orbitshowtickets.co.uk\",defaultModule:\"performance\",businessWorkspace:\"card-shows\"},\n    \"member-analytics\":{title:\"Analytics\",description:\"Members Club analytics for orbitcollectorsclub.com\",defaultModule:\"performance\",businessWorkspace:\"members-club\"},\n    \"directory-analytics\":{title:\"Analytics\",description:\"CardShowIndex analytics, Search Console and SEO measurement\",defaultModule:\"directory\",preferredTab:\"analytics\",businessWorkspace:\"directory\"},\n    content:{title:\"Content\",description:\"Members Club website images and media\",defaultModule:\"website-images\",businessWorkspace:\"members-club\"},\n    intelligence:{title:\"Intelligence\",description:\"Engineering findings, investigations and AI execution\",defaultModule:\"intelligence\",preferredTab:\"overview\",businessWorkspace:\"development\"},\n    knowledge:{title:\"Knowledge\",description:\"Orbit handbook and engineering manual\",defaultModule:\"intelligence\",preferredTab:\"knowledge\",businessWorkspace:\"development\"},\n    incidents:{title:\"Incidents\",description:\"Recorded engineering and deployment incidents\",defaultModule:\"intelligence\",preferredTab:\"incidents\",businessWorkspace:\"development\"},\n    \"protected-systems\":{title:\"Protected\",description:\"Protected workflows, proof rules and guardrails\",defaultModule:\"intelligence\",preferredTab:\"protected-systems\",businessWorkspace:\"development\"},\n    agents:{title:\"Agents\",description:\"All Orbit agents grouped by business workspace\",defaultModule:\"intelligence\",preferredTab:\"agents\",businessWorkspace:\"development\"},\n    \"ask-orbit\":{title:\"Ask Orbit\",description:\"Ask about anything in Orbit; this workspace is only context\",defaultModule:\"intelligence\",preferredTab:\"assistant\"},\n    development:{title:\"Development\",description:\"Issues, roadmap and release history\",defaultModule:\"development\",businessWorkspace:\"development\"},\n    finance:{title:\"Finance\",description:\"Past-event income, costs and profit or loss\",defaultModule:\"finance\",businessWorkspace:\"card-shows\"},\n    system:{title:\"System\",description:\"Connections, delivery and testing\",defaultModule:\"settings\",businessWorkspace:\"development\"}\n  };\n\n  const moduleWorkspaceMap = {\n    dashboard: \"home\", operations: \"home\",\n    members: \"customers\", support: \"customers\",\n    shopify: \"sales\", \"card-shopify\":\"card-shopify\", events: \"events\", \"scanner-admin\":\"scanner\", directory: \"directory\",\n    vendors: \"vendors\", \"vendor-history\": \"vendors\",\n    shipping: \"fulfil\", fulfilment: \"fulfil\", \"box-inventory\":\"box-inventory\",\n    automation: \"draws\",\n    loyalty: \"loyalty\",\n    \"member-store\": \"member-store\",\n    engagement: \"communications\", comms: \"communications\", support: \"support\", advertising: \"marketing\",\n    performance: \"performance\", reports: \"performance\", seo: \"performance\",\n    \"ad-performance\": \"performance\", \"analytics-overview\": \"performance\", \"analytics-sales\": \"performance\", \"analytics-google\": \"performance\", \"analytics-meta\": \"performance\",\n    content: \"content\", \"golden-schedule\": \"draws\", media: \"content\", \"website-images\": \"content\",\n    intelligence: \"intelligence\", development: \"development\", finance: \"finance\",\n    settings: \"system\", storage: \"system\", activity: \"system\", testing: \"system\"\n  };\n\n  // V599 Admin OS business workspaces. These are presentation/navigation\n  // contexts over one protected Admin runtime; they never duplicate business\n  // services, authentication, routes or persisted data.\n  const businessWorkspaceConfigV599={\n    \"card-shows\":{label:\"Card Shows\",description:\"Events, tickets, attendance, vendors, marketing and show finance\",rail:[\"home\",\"vendor-support\",\"sales\",\"card-shopify\",\"events\",\"attendance\",\"vendors\",\"vendor-live\",\"table-planner\",\"venues\",\"finance\",\"communications\",\"marketing\",\"performance\",\"calendar\",\"scanner\",\"ask-orbit\"]},\n    \"members-club\":{label:\"Members Club\",description:\"Members, fulfilment, prizes, loyalty and content\",rail:[\"home\",\"support\",\"customers\",\"fulfil\",\"box-inventory\",\"draws\",\"loyalty\",\"member-store\",\"orbit-chase\",\"poke-alerts\",\"communications\",\"member-broadcasts\",\"member-newsletters\",\"member-analytics\",\"content\",\"ask-orbit\"]},\n    directory:{label:\"Directory\",description:\"Directory records, pipeline acceptance, analytics, sponsorship, organiser access and media\",rail:[\"home\",\"directory\",\"directory-control\",\"directory-sources\",\"directory-analytics\",\"directory-sponsorship\",\"directory-organisers\",\"directory-media\"]},\n    development:{label:\"Development\",description:\"Engineering, Intelligence, releases and system control\",rail:[\"home\",\"intelligence\",\"knowledge\",\"incidents\",\"protected-systems\",\"development\",\"sms\",\"system\",\"agents\",\"ask-orbit\"]},\n    communications:{label:\"Personal Assistant\",description:\"Your private executive assistant\",rail:[\"pa-home\",\"pa-mail\",\"pa-tasks\",\"pa-settings\"]}\n  };\n  const businessWorkspaceForModuleV599={\n    shopify:\"card-shows\",\"card-shopify\":\"card-shows\",events:\"card-shows\",\"scanner-admin\":\"card-shows\",vendors:\"card-shows\",advertising:\"card-shows\",finance:\"card-shows\",performance:\"card-shows\",\"ad-performance\":\"card-shows\",\"analytics-overview\":\"card-shows\",\"analytics-sales\":\"card-shows\",\"analytics-google\":\"card-shows\",\"analytics-meta\":\"card-shows\",reports:\"card-shows\",seo:\"card-shows\",\n    members:\"members-club\",shipping:\"members-club\",fulfilment:\"members-club\",\"box-inventory\":\"members-club\",automation:\"members-club\",loyalty:\"members-club\",\"member-store\":\"members-club\",content:\"members-club\",media:\"members-club\",\"website-images\":\"members-club\",support:\"members-club\",engagement:\"members-club\",\n    \"gmail-hub\":\"communications\", directory:\"directory\",development:\"development\",settings:\"development\",storage:\"development\",testing:\"development\",activity:\"development\",\"vendor-history\":\"card-shows\"\n  };\n  function canonicalBusinessWorkspaceV599(value){return Object.prototype.hasOwnProperty.call(businessWorkspaceConfigV599,value)?value:\"card-shows\";}\n  function savedBusinessWorkspaceV599(){try{return canonicalBusinessWorkspaceV599(localStorage.getItem(\"orbitAdminBusinessWorkspaceV599\")||\"card-shows\");}catch(_){return \"card-shows\";}}\n  function businessWorkspaceLabelForRailV599(key){return ({home:\"Home\",customers:\"Members\",sales:\"Tickets\",\"card-shopify\":\"Shopify\",events:\"Events\",calendar:\"Calendar\",attendance:\"Attendance\",scanner:\"Scanner\",directory:\"Directory\",\"directory-control\":\"Control Centre\",\"directory-sources\":\"Sources\",\"directory-analytics\":\"Analytics\",\"directory-sponsorship\":\"Sponsorship\",\"directory-organisers\":\"Organiser Access\",\"directory-media\":\"Media\",vendors:\"Vendors\",\"vendor-support\":\"Support\",\"vendor-live\":\"Show Plan\",\"table-planner\":\"Table Plan\",venues:\"Venues\",fulfil:\"Fulfilment\",draws:\"Prizes\",\"box-inventory\":\"Box Accounting\",loyalty:\"Loyalty\",\"member-store\":\"Store\",\"orbit-chase\":\"Orbit Chase\",\"poke-alerts\":\"Pok\u00E9 Alerts\",support:\"Support\",sms:\"SMS\",communications:\"Email\",\"member-broadcasts\":\"Broadcasts\",\"member-newsletters\":\"Newsletters\",marketing:\"Marketing\",performance:\"Analytics\",\"member-analytics\":\"Analytics\",content:\"Content\",intelligence:\"Intelligence\",knowledge:\"Knowledge\",incidents:\"Incidents\",\"protected-systems\":\"Protected\",agents:\"Agents\",\"ask-orbit\":\"Ask Orbit\",development:\"Development\",finance:\"Finance\",system:\"System\",\"gmail-hub\":\"AI Email\",\"pa-home\":\"Home\",\"pa-mail\":\"Mailbox\",\"pa-tasks\":\"My Actions\",\"pa-settings\":\"Settings\"})[key]||key;}\n  function primaryRouteForModuleV5991(module,preferredTab=\"\",explicitRoute=\"\"){\n    if(explicitRoute&&adminWorkspaceConfig[explicitRoute])return explicitRoute;\n    const tab=String(preferredTab||\"\");\n    if(module===\"gmail-hub\")return ({home:\"pa-home\",mail:\"pa-mail\",tasks:\"pa-tasks\",accounts:\"pa-settings\"})[tab]||\"pa-home\";\n    if(module===\"engagement\")return tab===\"newsletters\"||tab===\"subscribers\"?\"member-newsletters\":\"member-broadcasts\";\n    if(module===\"events\")return tab===\"calendar\"?\"calendar\":tab===\"attendance\"?\"attendance\":\"events\";\n    if(module===\"directory\")return tab===\"control\"?\"directory-control\":tab===\"sources\"?\"directory-sources\":tab===\"analytics\"?\"directory-analytics\":tab===\"sponsors\"?\"directory-sponsorship\":tab===\"organisers\"?\"directory-organisers\":\"directory\";\n    if(module===\"media\"&&canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599())===\"directory\")return \"directory-media\";\n    if(module===\"vendors\")return tab===\"club-support\"?\"vendor-support\":tab===\"live\"||tab===\"changes\"?\"vendor-live\":tab===\"planner\"?\"table-planner\":tab===\"venues\"||tab===\"rules\"?\"venues\":\"vendors\";\n    if(module===\"intelligence\"){if(tab===\"assistant\")return \"ask-orbit\";if(tab===\"agents\"||tab===\"ondemand\")return \"agents\";if(tab===\"knowledge\")return \"knowledge\";if(tab===\"incidents\")return \"incidents\";if(tab===\"protected-systems\")return \"protected-systems\";return \"intelligence\";}\n    if(module===\"member-store\"){if(tab===\"sms\")return \"sms\";if(tab.startsWith(\"poke-\"))return \"poke-alerts\";if(tab===\"draws\")return \"orbit-chase\";if(tab===\"poke-alerts\")return \"poke-alerts\";return \"member-store\";}\n    if([\"performance\",\"ad-performance\",\"analytics-overview\",\"analytics-sales\",\"analytics-google\",\"analytics-meta\",\"seo\"].includes(module)&&canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599())===\"members-club\")return \"member-analytics\";\n    return moduleWorkspaceMap[module]||\"home\";\n  }\n  function routeBusinessWorkspaceV5991(route,module){const fixed=adminWorkspaceConfig[route]?.businessWorkspace||businessWorkspaceForModuleV599[module];return fixed?canonicalBusinessWorkspaceV599(fixed):canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());}\n  function updateAdminRouteLocationV5991(route,module,tab,historyMode=\"replace\"){\n    if(historyMode===\"none\")return;\n    try{const url=new URL(window.location.href),workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());url.searchParams.set(\"orbit_admin_workspace\",workspace);url.searchParams.set(\"orbit_admin_route\",route||\"home\");if(tab)url.searchParams.set(\"orbit_admin_tab\",tab);else url.searchParams.delete(\"orbit_admin_tab\");url.hash=\"orbit-module-\"+(module||\"dashboard\");const payload={orbitAdminV5991:true,workspace,route:route||\"home\",module:module||\"dashboard\",tab:tab||\"\"};historyMode===\"push\"?history.pushState(payload,\"\",url.toString()):history.replaceState(payload,\"\",url.toString());}catch(_){}\n  }\n  function applyBusinessWorkspaceV599(value,{persist=true,activateHome=false,historyMode=\"push\"}={}){\n    const workspace=canonicalBusinessWorkspaceV599(value),config=businessWorkspaceConfigV599[workspace];state.businessWorkspaceV599=workspace;\n    const app=document.getElementById(\"orbitAdminApplication\");if(app)app.dataset.businessWorkspaceV599=workspace;\n    const headerShow=document.getElementById(\"orbitHomeNextShowSpotlightV731\");if(headerShow&&workspace!==\"card-shows\"){headerShow.hidden=true;headerShow.innerHTML=\"\";}\n    const select=document.getElementById(\"orbitBusinessWorkspaceV599\");if(select&&select.value!==workspace)select.value=workspace;\n    if(persist){try{localStorage.setItem(\"orbitAdminBusinessWorkspaceV599\",workspace);}catch(_){}}\n    const rail=document.querySelector(\"[data-workspace-nav]\")?.parentElement; if(rail)config.rail.forEach(key=>{const node=Array.from(rail.children).find(el=>el.dataset.workspaceNav===key);if(node)rail.appendChild(node);});\n    const allowed=new Set(config.rail);document.querySelectorAll(\"[data-workspace-nav]\").forEach(button=>{const key=button.dataset.workspaceNav;button.hidden=!allowed.has(key);const strong=button.querySelector(\"strong\");if(strong)strong.textContent=businessWorkspaceLabelForRailV599(key);});\n    document.querySelectorAll(\"[data-workspace-only-v5991]\").forEach(element=>{const scopes=String(element.dataset.workspaceOnlyV5991||\"\").split(\",\").map(v=>v.trim()).filter(Boolean);element.hidden=scopes.length>0&&!scopes.includes(workspace);});\n    if(state.currentModule===\"dashboard\"){const title=document.getElementById(\"orbitContextTitle\"),description=document.getElementById(\"orbitContextDescription\"),section=document.getElementById(\"orbitAdminSectionLabel\");if(title)title.textContent=config.label+\" Home\";if(description)description.textContent=config.description;if(section)section.textContent=config.label+\" Home\";}\n    if(workspace===\"members-club\"&&state.adminAuthenticated&&!state.supportBadgeReadV618){state.supportBadgeReadV618=true;Promise.allSettled([loadSummary(),refreshMemberSupportBadgeV688()]).finally(()=>{state.supportBadgeReadV618=false;});}\n    if(activateHome){if(workspace===\"communications\")activateModule(\"gmail-hub\",\"home\",{routeKey:\"pa-home\",historyMode});else activateModule(\"dashboard\",undefined,{routeKey:\"home\",historyMode});}return workspace;\n  }\n  function syncBusinessWorkspaceV599(module,routeKey){const workspace=routeBusinessWorkspaceV5991(routeKey||primaryRouteForModuleV5991(module,\"\"),module);return applyBusinessWorkspaceV599(workspace,{persist:true,activateHome:false,historyMode:\"none\"});\n  }\n  function intelligenceTabForBusinessV599(){const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());return workspace===\"development\"?\"overview\":workspace===\"directory\"?\"agents\":\"assistant\";}\n  function bindBusinessWorkspaceV599(){\n    const select=document.getElementById(\"orbitBusinessWorkspaceV599\");if(select&&!select.dataset.boundV599){select.dataset.boundV599=\"1\";select.addEventListener(\"change\",()=>applyBusinessWorkspaceV599(select.value,{persist:true,activateHome:true,historyMode:\"push\"}));}\n    const home=document.getElementById(\"orbitBusinessHomeV599\");if(home&&!home.dataset.boundV599){home.dataset.boundV599=\"1\";home.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-v599-home-module]\");if(!button)return;const module=button.dataset.v599HomeModule,tab=button.dataset.v599HomeTab||\"\";activateModule(module,tab||undefined,{historyMode:\"push\"});if(module===\"intelligence\"&&tab)setOrbitIntelligenceTab(tab);});}\n    const nextShowHeader=document.getElementById(\"orbitHomeNextShowSpotlightV731\");\n    if(nextShowHeader&&!nextShowHeader.dataset.boundV731){nextShowHeader.dataset.boundV731=\"1\";nextShowHeader.addEventListener(\"click\",event=>{const b=event.target.closest(\"[data-v599-home-module]\");if(b)activateModule(b.dataset.v599HomeModule,b.dataset.v599HomeTab||undefined,{historyMode:\"push\"});});}\n    applyBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599(),{persist:false,activateHome:false,historyMode:\"none\"});\n  }\n  function homeMetricV599(label,value,detail=\"\"){return `<article class=\"orbit-business-home-metric-v599\"><small>${esc(label)}</small><strong>${esc(String(value??\"\u2014\"))}</strong>${detail?`<span>${esc(detail)}</span>`:\"\"}</article>`;}\n  function homeActionV599(title,copy,module,tab=\"\"){return `<button type=\"button\" class=\"orbit-business-home-action-v599\" data-v599-home-module=\"${esc(module)}\"${tab?` data-v599-home-tab=\"${esc(tab)}\"`:\"\"}><span><strong>${esc(title)}</strong><small>${esc(copy)}</small></span><b>Open</b></button>`;}\n  function homeQuickV599(label,module,tab=\"\"){return `<button type=\"button\" class=\"secondary\" data-v599-home-module=\"${esc(module)}\"${tab?` data-v599-home-tab=\"${esc(tab)}\"`:\"\"}>${esc(label)}</button>`;}\n  function homeSpotlightV688(title,detail,module,tab=\"\"){return `<button type=\"button\" class=\"orbit-business-home-spotlight-v688\" data-v599-home-module=\"${esc(module)}\"${tab?` data-v599-home-tab=\"${esc(tab)}\"`:\"\"}><small>NEXT SHOW</small><strong>${esc(title)}</strong><span>${esc(detail)}</span></button>`;}\n  function homePeriodControlV600(period=\"today\",label=\"Period\"){const options=[[\"today\",\"Today\"],[\"yesterday\",\"Yesterday\"],[\"last_7_days\",\"Last 7 days\"],[\"last_30_days\",\"Last 30 days\"]];return `<label class=\"orbit-business-home-period-v600\"><span>${esc(label)}</span><select data-v600-home-period>${options.map(([value,text])=>`<option value=\"${value}\"${value===period?\" selected\":\"\"}>${text}</option>`).join(\"\")}</select></label>`;}\n  function homeShellV599({workspace,title,eyebrow,summary,metrics=[],actions=[],quick=[],controls=\"\",spotlight=\"\"}){const target=document.getElementById(\"orbitBusinessHomeV599\");if(!target)return;target.innerHTML=`<div class=\"orbit-business-home-hero-v599\"><div><p class=\"orbit-kicker\">${esc(eyebrow)}</p><h1>${esc(title)}</h1><p>${esc(summary)}</p></div><div class=\"orbit-business-home-hero-actions-v600\">${workspace===\"card-shows\"?'':spotlight||\"\"}${controls||\"\"}<button type=\"button\" class=\"secondary orbit-business-home-refresh-v599\" data-v599-home-refresh>Refresh</button></div></div><div class=\"orbit-business-home-metrics-v599\">${metrics.join(\"\")}</div><section class=\"orbit-business-home-attention-v599\"><div class=\"orbit-business-home-section-head-v599\"><div><p class=\"orbit-kicker\">NEEDS YOUR ATTENTION</p><h2>${actions.length?`${actions.length} item${actions.length===1?\"\":\"s\"}`:\"Nothing urgent\"}</h2></div></div><div class=\"orbit-business-home-actions-v599\">${actions.length?actions.join(\"\"):`<div class=\"orbit-business-home-clear-v599\"><strong>\u2713 Nothing needs your attention</strong><span>This workspace has no actionable exception in the current snapshot.</span></div>`}</div></section>`;const headerShow=document.getElementById(\"orbitHomeNextShowSpotlightV731\");\n    if(headerShow){headerShow.hidden=!(workspace===\"card-shows\"&&spotlight);headerShow.innerHTML=workspace===\"card-shows\"?spotlight||\"\":\"\";}\n    const refresh=target.querySelector(\"[data-v599-home-refresh]\");if(refresh)refresh.addEventListener(\"click\",()=>refreshBusinessHomeV599(true).catch(err=>setNotice(err.message||err,true)));const periodSelect=target.querySelector(\"[data-v600-home-period]\");if(periodSelect)periodSelect.addEventListener(\"change\",()=>{if(workspace===\"members-club\")state.memberClubHomePeriodV6001=periodSelect.value;else state.cardShowHomePeriodV600=periodSelect.value;refreshBusinessHomeV599(true).then(()=>setNotice((workspace===\"members-club\"?\"Members Club\":\"Card Shows\")+\" Home updated for \"+dashboardPeriodLabel(periodSelect.value)+\".\")).catch(err=>setNotice(err.message||err,true));});target.dataset.workspace=workspace;}\n  function eventDateV599(row={}){return row.start?.local||row.start?.utc||row.startDate||row.date||\"\";}\n  function eventTitleV599(row={}){return row.name?.text||row.name||row.title||\"Upcoming event\";}\n  function specialShipmentActiveV601(row={}){const status=String(row.status||row.fulfilment_status||row.fulfilmentStatus||\"\").trim().toLowerCase();return ![\"dispatched\",\"shipped\",\"delivered\",\"fulfilled\",\"completed\",\"cancelled\",\"canceled\",\"archived\",\"deleted\",\"void\",\"replaced\",\"superseded\",\"combined\"].includes(status);}\n  async function refreshBusinessHomeV599(force=false){\n    if(state.currentModule!==\"dashboard\")return;bindBusinessWorkspaceV599();const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599()),target=document.getElementById(\"orbitBusinessHomeV599\");if(!target)return;\n    if(!target.children.length||force)target.innerHTML='<div class=\"orbit-business-home-loading-v599\"><strong>Refreshing '+esc(businessWorkspaceConfigV599[workspace].label)+'\u2026</strong><span>Loading only this workspace\u2019s operational snapshot.</span></div>';\n    if(workspace===\"card-shows\"){\n      const period=state.cardShowHomePeriodV600||\"today\",[summaryResult,eventsResult,vendorResult]=await Promise.allSettled([loadSummary(period,force),api(\"/api/admin/eventbrite/events?limit=100&metrics=0\",{cacheMs:force?0:5000,timeoutMs:15000}),api(\"/api/admin/vendors/workspace-metrics?period=\"+encodeURIComponent(period),{cacheMs:force?0:5000,timeoutMs:8000})]),summary=summaryResult.status===\"fulfilled\"?summaryResult.value:{period,snapshot:{}},snap=summary.snapshot||{},events=(eventsResult.status===\"fulfilled\"?eventsResult.value?.events:[])||[],vendor=vendorResult.status===\"fulfilled\"?vendorResult.value:{period,ready:false},now=Date.now(),upcoming=events.filter(e=>{const t=Date.parse(eventDateV599(e));return !Number.isFinite(t)||t>=now-86400000;}).sort((a,b)=>String(eventDateV599(a)).localeCompare(String(eventDateV599(b)))),next=upcoming[0]||null,actions=[],periodLabel=dashboardPeriodLabel(period);\n      state.vendorHomeMetricsV5991=vendor;renderDashboardSnapshot(summary,vendor);\n      if(eventsResult.status===\"fulfilled\"&&!next)actions.push(homeActionV599(\"No upcoming show loaded\",\"No future Eventbrite show exists in the current canonical event list.\",\"events\",\"eventbrite\"));\n      homeShellV599({workspace,title:\"Card Shows\",eyebrow:\"CARD SHOWS COMMAND CENTRE\",summary:\"Tickets, vendor tables and event operations across every Orbit Card Show.\",spotlight:next?homeSpotlightV688(eventTitleV599(next),prettyDate(eventDateV599(next)),\"events\",\"eventbrite\"):\"\",controls:homePeriodControlV600(period),metrics:[homeMetricV599(\"Tickets\",snap.ticketsPurchased??0,periodLabel),homeMetricV599(\"Ticket revenue\",\"\u00A3\"+Number(snap.ticketRevenue||0).toFixed(2),periodLabel),homeMetricV599(\"Tables sold\",vendor.tablesSold??\"\u2014\",vendor.ready===false?\"Updating period read model\":periodLabel),homeMetricV599(\"Vendor table revenue\",vendor.vendorTableRevenue==null?\"\u2014\":\"\u00A3\"+Number(vendor.vendorTableRevenue||0).toFixed(2),vendor.ready===false?\"Updating period read model\":periodLabel)],actions,quick:[homeQuickV599(\"Tickets\",\"shopify\"),homeQuickV599(\"Events\",\"events\",\"eventbrite\"),homeQuickV599(\"Calendar\",\"events\",\"calendar\"),homeQuickV599(\"Attendance\",\"events\",\"attendance\"),homeQuickV599(\"Scanner\",\"scanner-admin\"),homeQuickV599(\"Vendors\",\"vendors\",\"customers\"),homeQuickV599(\"Show Plan\",\"vendors\",\"live\"),homeQuickV599(\"Table Plan\",\"vendors\",\"planner\"),homeQuickV599(\"Venues\",\"vendors\",\"venues\"),homeQuickV599(\"Event Marketing\",\"advertising\"),homeQuickV599(\"Analytics\",\"performance\"),homeQuickV599(\"Finance\",\"finance\"),homeQuickV599(\"Ask Orbit\",\"intelligence\",\"assistant\")]});return;\n    }\n    if(workspace===\"members-club\"){\n      const period=state.memberClubHomePeriodV6001||\"today\",[summaryResult,fulfilResult,performanceResult,specialResult]=await Promise.allSettled([loadSummary(period,force),api(\"/api/admin/fulfilment/centre\"+(force?\"?refresh=\"+Date.now():\"\"),{cacheMs:force?0:5000,timeoutMs:15000}),api(\"/api/admin/v79/performance?period=\"+encodeURIComponent(period)+\"&site=collectors_club\",{cacheMs:force?0:5000,timeoutMs:25000}),api(\"/api/admin/shipping/special-shipments\",{cacheMs:force?0:5000,timeoutMs:15000})]),summary=summaryResult.status===\"fulfilled\"?summaryResult.value:{period,snapshot:{}},centre=fulfilResult.status===\"fulfilled\"?fulfilResult.value:{},performance=performanceResult.status===\"fulfilled\"?performanceResult.value:{},special=(specialResult.status===\"fulfilled\"?specialResult.value?.shipments:[])||[],actions=[],periodLabel=dashboardPeriodLabel(period),loyaltyParcels=special.filter(x=>specialShipmentActiveV601(x)&&String(x.source||x.source_type||\"\")===\"loyalty_store\").length,prizeParcels=special.filter(x=>specialShipmentActiveV601(x)&&[\"monthly_draw\",\"golden_ticket\",\"member_store_prize_draw\"].includes(String(x.source||x.source_type||\"\"))).length,parcelCount=Number(centre?.counts?.total??summary.pendingPacks??0),attentionCount=Number(centre?.counts?.needsAddress??summary.blockedAddressPacks??0),revenue=performance.revenue,rebill=performance.forecast?.gross,rebillDate=performance.forecast?.date;\n      if(Number(summary.unansweredTickets||0)>0)actions.push(homeActionV599(`${Number(summary.unansweredTickets)} support conversation${Number(summary.unansweredTickets)===1?\"\":\"s\"} waiting`,`Members are waiting for a reply.`,\"support\"));\n      if(attentionCount>0)actions.push(homeActionV599(`${attentionCount} parcel${attentionCount===1?\"\":\"s\"} need attention`,`Resolve blocked delivery details before fulfilment.`,\"shipping\",\"attention\"));\n      if(prizeParcels>0)actions.push(homeActionV599(`${prizeParcels} prize parcel${prizeParcels===1?\"\":\"s\"} waiting`,`Winner fulfilment is ready to review.`,\"shipping\",\"prizes\"));\n      homeShellV599({workspace,title:\"Members Club\",eyebrow:\"MEMBERS CLUB COMMAND CENTRE\",summary:\"Membership, renewal and fulfilment health in one Members Club-only view.\",controls:homePeriodControlV600(period,\"Membership period\"),metrics:[homeMetricV599(\"Total members\",summary.totalMembers??0,\"Operational members\"),homeMetricV599(\"Active members\",summary.activeMembers??0,\"Current membership\"),homeMetricV599(\"Pending activation\",summary.pendingMembers??0,\"Waiting for first full payment\"),homeMetricV599(\"Members in period\",summary.snapshot?.newSignups??0,periodLabel),homeMetricV599(\"Membership revenue\",revenue==null?\"\u2014\":\"\u00A3\"+Number(revenue||0).toFixed(2),periodLabel+\" signup receipts\"),homeMetricV599(\"Due next rebill\",rebill==null?\"\u2014\":\"\u00A3\"+Number(rebill||0).toFixed(2),rebillDate?\"Scheduled \"+prettyDate(rebillDate):\"Next 1st\"),homeMetricV599(\"Parcels waiting\",parcelCount,\"Canonical fulfilment queue\"),homeMetricV599(\"Needs attention\",attentionCount,\"Blocked delivery details\"),homeMetricV599(\"Loyalty parcels\",loyaltyParcels,\"Awaiting fulfilment\"),homeMetricV599(\"Prize parcels\",prizeParcels,\"Awaiting fulfilment\")],actions,quick:[homeQuickV599(\"Members\",\"members\"),homeQuickV599(\"Fulfilment\",\"shipping\",\"monthly\"),homeQuickV599(\"Prizes\",\"automation\",\"current\"),homeQuickV599(\"Loyalty\",\"loyalty\"),homeQuickV599(\"Email\",\"comms\",\"inbox\"),homeQuickV599(\"Content\",\"website-images\"),homeQuickV599(\"Media\",\"media\"),homeQuickV599(\"Ask Orbit\",\"intelligence\",\"assistant\")]});return;\n    }\n    if(workspace===\"directory\"){\n      const [summaryResult,pipelineResult]=await Promise.allSettled([api(\"/api/admin/directory/summary\",{cacheMs:force?0:3000,timeoutMs:12000}),api(\"/api/admin/directory/pipeline/status\",{cacheMs:0,timeoutMs:12000})]),summary=summaryResult.status===\"fulfilled\"?summaryResult.value:{},pipeline=pipelineResult.status===\"fulfilled\"?pipelineResult.value?.run:null,actions=[];\n      if(Number(summary.reviewQueue||summary.needsReview||0)>0)actions.push(homeActionV599(`${Number(summary.reviewQueue||summary.needsReview)} review decision${Number(summary.reviewQueue||summary.needsReview)===1?\"\":\"s\"}`,\"Only genuinely ambiguous evidence should appear here.\",\"directory\",\"review_queue\"));\n      if(Number(summary.imageMetrics?.unresolved||0)>0)actions.push(homeActionV599(`${Number(summary.imageMetrics.unresolved)} live image${Number(summary.imageMetrics.unresolved)===1?\"\":\"s\"} unresolved`,`Image Resolver will keep researching fallback artwork.`,\"directory\",\"approved\"));\n      if(pipeline&&String(pipeline.status)===\"failed\")actions.push(homeActionV599(\"Directory pipeline stopped safely\",pipeline.lastError||\"Open Directory to inspect the persisted run.\",\"directory\"));\n      homeShellV599({workspace,title:\"CardShowIndex\",eyebrow:\"DIRECTORY COMMAND CENTRE\",summary:\"Public catalogue health, research backlog and the small set of decisions that need you.\",metrics:[homeMetricV599(\"Live published\",summary.approved??0,\"Public shows\"),homeMetricV599(\"Researching\",summary.enriching??0,\"Background enrichment\"),homeMetricV599(\"Your decisions\",summary.reviewQueue??summary.needsReview??0,\"Canonical review queue\"),homeMetricV599(\"All indexed\",summary.total??0,\"Known show records\")],actions,quick:[homeQuickV599(\"Events\",\"directory\",\"events\"),homeQuickV599(\"Sponsorship\",\"directory\",\"sponsors\"),homeQuickV599(\"Organiser Access\",\"directory\",\"organisers\"),homeQuickV599(\"Media\",\"media\")]});return;\n    }\n    const notesResult=await Promise.allSettled([api(\"/api/admin/development-notes?active=1\",{cacheMs:force?0:3000,timeoutMs:15000})]),notes=((notesResult[0].status===\"fulfilled\"?notesResult[0].value?.notes:[])||[]).filter(operatorDevelopmentItemV559),open=notes.filter(n=>String(n.status||\"\").toLowerCase()===\"open\").length,ready=notes.filter(n=>/ready for testing/i.test(String(n.status||\"\"))).length,high=notes.filter(n=>String(n.status||\"\").toLowerCase()===\"open\"&&/high|critical/i.test(String(n.priority||\"\"))).length,actions=[];\n    if(ready)actions.push(homeActionV599(`${ready} Acceptance item${ready===1?\"\":\"s\"} ready`,`These changes are waiting for operator testing.`,\"development\",\"verification\"));\n    if(high)actions.push(homeActionV599(`${high} high-priority Development Note${high===1?\"\":\"s\"}`,\"Open Development Notes to review the highest-priority backlog.\",\"development\",\"notes\"));\n    homeShellV599({workspace,title:\"Development\",eyebrow:\"ORBIT OS CONTROL ROOM\",summary:\"Release work, Acceptance, Intelligence and system controls without mixing them into business operations.\",metrics:[homeMetricV599(\"Production\",ORBIT_RELEASE,\"Admin runtime\"),homeMetricV599(\"Open notes\",open,\"Canonical active backlog\"),homeMetricV599(\"Ready for Acceptance\",ready,\"Waiting for your test\"),homeMetricV599(\"High priority\",high,\"Open Development Notes\")],actions,quick:[homeQuickV599(\"Intelligence\",\"intelligence\",\"overview\"),homeQuickV599(\"Development\",\"development\"),homeQuickV599(\"System\",\"settings\"),homeQuickV599(\"Agents\",\"intelligence\",\"agents\"),homeQuickV599(\"Ask Orbit\",\"intelligence\",\"assistant\")]});\n  }\n\n\n  function openAdvertisingViewV451(view){\n    const wanted=(view===\"meta\"||view===\"import\")?\"overview\":(view||\"overview\");\n    const advanced=document.querySelector('.orbit-marketing-history-integrated-v726'),settings=document.querySelector('[data-advertising-view=\"settings\"]');\n    if(advanced&&settings&&advanced.parentElement!==settings)settings.appendChild(advanced);\n    const toggle=document.querySelector('[data-marketing-history-toggle-v726]');\n    if(toggle&&!toggle.dataset.boundV726){toggle.dataset.boundV726=\"1\";toggle.addEventListener(\"click\",()=>{if(!advanced)return;advanced.hidden=!advanced.hidden;toggle.setAttribute('aria-expanded',String(!advanced.hidden));if(!advanced.hidden)loadMetaAdsSummaryV453().catch(err=>renderMetaAdsSummaryErrorV601(err));});}\n    if(wanted===\"import\"&&state.adminAuthenticated&&!metaAdsHistoryPollingV538&&!metaAdsHistoryPollTimerV450){const job=savedMetaHistoryJobV538();if(job?.jobId)pollMetaAdsHistoryJobV450(job.jobId,job.startedAt||Date.now());}\n    document.querySelectorAll(\"[data-advertising-view]\").forEach(panel=>{panel.hidden=panel.dataset.advertisingView!==wanted;});\n    document.querySelectorAll(\"[data-advertising-open]\").forEach(button=>{const active=button.dataset.advertisingOpen===wanted;button.classList.toggle(\"active\",active);button.setAttribute(\"aria-current\",active?\"page\":\"false\");});\n    try{sessionStorage.setItem(\"orbitAdvertisingView\",wanted);}catch(_){}\n    if(state.adminAuthenticated){\n      if(wanted===\"overview\"||wanted===\"import\")loadMetaAdsSummaryV453().catch(err=>renderMetaAdsSummaryErrorV601(err));\n      if(wanted===\"reconciliation\")loadMetaAdsReconciliationV453(1).catch(err=>{if(state.currentModule===\"advertising\")setNotice(\"Reconciliation unavailable: \"+(err.message||err),true);});\n      if(wanted===\"costs\")loadMetaAdsCostsV453().catch(err=>{if(state.currentModule===\"advertising\")setNotice(\"Event costs unavailable: \"+(err.message||err),true);});\n      if(wanted===\"overview\"||wanted===\"meta\")loadMetaAdsDashboardV449(false).catch(err=>{if(state.currentModule===\"advertising\")setNotice(\"Saved Meta performance unavailable: \"+(err.message||err),true);});\n      if(wanted===\"settings\")loadMetaAdsHealthV449().catch(err=>{if(state.currentModule===\"advertising\")setNotice(\"Meta connection health unavailable: \"+(err.message||err),true);});\n    }\n  }\n\n  function syncWorkspaceNavigation(module,preferredTab=\"\",explicitRoute=\"\") {\n    const route=primaryRouteForModuleV5991(module,preferredTab,explicitRoute);state.currentPrimaryRouteV5991=route;syncBusinessWorkspaceV599(module,route);const config=adminWorkspaceConfig[route]||adminWorkspaceConfig.home;bindBusinessWorkspaceV599();\n    const app=document.getElementById(\"orbitAdminApplication\");if(app){app.dataset.adminRouteV5991=route;app.dataset.adminModuleV5991=module||\"dashboard\";}\n    document.querySelectorAll(\"[data-workspace-nav]\").forEach(button=>{const active=button.dataset.workspaceNav===route;button.classList.toggle(\"active\",active);button.setAttribute(\"aria-selected\",String(active));if(active)button.setAttribute(\"aria-current\",\"page\");else button.removeAttribute(\"aria-current\");});\n    document.querySelectorAll(\"[data-workspace-group]\").forEach(group=>group.classList.toggle(\"active\",group.dataset.workspaceGroup===route));\n    const title=document.getElementById(\"orbitContextTitle\"),description=document.getElementById(\"orbitContextDescription\");if(module===\"dashboard\"){const business=businessWorkspaceConfigV599[canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599())];if(title)title.textContent=business.label+\" Home\";if(description)description.textContent=business.description;}else{if(title)title.textContent=config.title;if(description)description.textContent=config.description;}\n  }\n\n  function activateWorkspace(routeKey) {const config=adminWorkspaceConfig[routeKey];if(!config)return;setPerformanceWorkspaceSiteV628(routeKey);activateModule(config.defaultModule,config.preferredTab,{routeKey,historyMode:\"push\"});if(config.defaultModule===\"intelligence\"&&config.preferredTab)setOrbitIntelligenceTab(config.preferredTab);if(routeKey===\"marketing\")openAdvertisingViewV451(\"overview\");\n  }\n\n  /* ORBIT OS LOCKED HOME RENDER CONTRACT\n   * Rebuilds the four member and four fulfilment cards from canonical templates.\n   * This prevents any shared loading/action helper from leaving flattened text. */\n  const homeOverviewTemplates = {\n    metricTotalMembers: [\"Total Members\", \"View members\"],\n    metricActiveMembers: [\"Active Members\", \"View active\"],\n    metricPendingMembers: [\"Pending Activation\", \"View pending\"],\n    snapshotDirectMembers: [\"Members Today\", \"New signups today\"],\n    metricPendingPacks: [\"Monthly Parcels\", \"Ready or in progress\"],\n    metricFulfilmentAttention: [\"Needs Attention\", \"Blocked shipments\"],\n    metricLoyaltyOrders: [\"Loyalty Orders\", \"Awaiting fulfilment\"],\n    metricPrizeClaims: [\"Prize Shipments\", \"Awaiting fulfilment\"]\n  };\n  function restoreHomeOverviewCards() {\n    Object.entries(homeOverviewTemplates).forEach(function(entry){\n      const valueId=entry[0], card=document.getElementById(valueId)?.closest('.orbit-metric');\n      if(!card) return;\n      const current=document.getElementById(valueId)?.textContent || '\u2014';\n      card.innerHTML='<span>'+esc(entry[1][0])+'</span><strong id=\"'+esc(valueId)+'\">'+esc(current)+'</strong><small>'+esc(entry[1][1])+'</small>';\n      card.dataset.originalHtml=card.innerHTML;\n      card.classList.add('orbit-home-card-ready');\n    });\n  }\n\n  function orbitSubtabStorageKey(module){ return \"orbitAdminSubtab:\" + String(module || \"dashboard\"); }\n  function canonicalOrbitSubtab(module, tab){\n    const value=String(tab||\"\");\n    /* Events buttons use the human label `events`, while activateModule needs\n     * the real panel id suffix `eventbrite`. Persist only the canonical value. */\n    if(module===\"events\" && value===\"events\") return \"eventbrite\";\n    if(module===\"shipping\" && (!value||value===\"attention\"||value===\"fulfilment\"))return \"monthly\";\n    if(module===\"comms\" && ![\"inbox\",\"templates\",\"history\"].includes(value))return \"inbox\";\n    if(module===\"card-shopify\" && ![\"overview\",\"products\",\"inventory\",\"collections\",\"drafts\",\"theme\",\"pages\",\"files\",\"integrations\",\"history\"].includes(value))return \"overview\";\n    return value;\n  }\n  function rememberOrbitSubtab(module, tab){\n    if(!module || !tab) return;\n    try { localStorage.setItem(orbitSubtabStorageKey(module), canonicalOrbitSubtab(module,tab)); } catch (_) {}\n  }\n  function savedOrbitSubtab(module){\n    try { return canonicalOrbitSubtab(module, localStorage.getItem(orbitSubtabStorageKey(module)) || \"\"); } catch (_) { return \"\"; }\n  }\n  function restoreOrbitSubtab(module){\n    const tab=savedOrbitSubtab(module); if(!tab) return;\n    /* V191 reliability rule: restoration is state-only. Programmatically\n     * clicking a subtab from activateModule re-enters activateModule and can\n     * create an infinite render/navigation loop. activateModule already applies\n     * the canonical saved panel directly. */\n    if(module === \"automation\") state.currentDrawPane = tab;\n    if(module === \"engagement\") state.currentEngagementPane = tab;\n  }\n\n  function setShippingPaneV540(value){\n    const canonical=canonicalOrbitSubtab(\"shipping\",value),pane=[\"monthly\",\"shop\",\"prizes\",\"loyalty\",\"history\",\"labels\"].includes(canonical)?canonical:\"monthly\";\n    state.currentShippingPane=pane;rememberOrbitSubtab(\"shipping\",pane);\n    document.querySelectorAll(\"[data-shipping-pane]\").forEach(node=>node.hidden=node.dataset.shippingPane!==pane);\n    document.querySelectorAll(\"[data-shipping-tab]\").forEach(button=>{const active=button.dataset.shippingTab===pane;button.classList.toggle(\"active\",active);button.setAttribute(\"aria-selected\",String(active));if(active)button.setAttribute(\"aria-current\",\"page\");else button.removeAttribute(\"aria-current\");});\n  }\n\n  function setTicketPaneV305(pane){\n    const selected=pane===\"promo\"?\"promo\":\"tickets\";\n    state.currentTicketPane=selected;\n    document.querySelectorAll(\"[data-ticket-pane]\").forEach(panel=>panel.hidden=panel.dataset.ticketPane!==selected);\n    document.querySelectorAll('[data-workspace-group=\"sales\"] [data-ticket-open]').forEach(button=>button.classList.toggle(\"active\",button.dataset.ticketOpen===selected));\n    const sectionLabel=document.getElementById(\"orbitAdminSectionLabel\");\n    if(sectionLabel && state.currentModule===\"shopify\")sectionLabel.textContent=selected===\"promo\"?\"Promo Codes\":\"Tickets\";\n    rememberOrbitSubtab(\"shopify\",selected);\n    if(selected===\"promo\")loadTicketDiscountCodes().catch(err=>setNotice(\"Promo Codes unavailable: \"+(err.message||err),true));\n  }\n\n  function setSettingsPane(targetId, options={}) {\n    const grid=document.getElementById(\"orbitSettingsPages\");\n    const overview=document.getElementById(\"settingsOverview\");\n    const id=String(targetId||\"\").trim();\n    document.querySelectorAll(\"#tab-admin-settings .orbit-settings-card\").forEach(card=>{\n      const active=Boolean(id)&&card.id===id;\n      card.classList.toggle(\"orbit-settings-pane-active\",active);\n      card.hidden=Boolean(id)&&!active;\n    });\n    if(grid)grid.classList.toggle(\"is-single-pane\",Boolean(id));\n    if(overview)overview.hidden=Boolean(id);\n    document.querySelectorAll(\"#tab-admin-settings [data-settings-jump]\").forEach(button=>{\n      button.classList.toggle(\"active\",Boolean(id)&&button.dataset.settingsJump===id);\n    });\n    document.querySelectorAll(\"#tab-admin-settings [data-settings-pane]\").forEach(button=>{\n      button.classList.toggle(\"active\",!id);\n    });\n    try{\n      if(id)localStorage.setItem(\"orbitAdminSettingsPane\",id);\n      else localStorage.removeItem(\"orbitAdminSettingsPane\");\n    }catch(_e){}\n    if(id){\n      const card=document.getElementById(id);\n      card?.classList.add(\"orbit-settings-focus\");\n      if(options.scroll!==false)document.getElementById(\"tab-admin-settings\")?.scrollIntoView({behavior:\"smooth\",block:\"start\"});\n    }\n  }\n\n  // V563 UK Card Show Directory evidence pipeline. Discovery is breadth-first and\n  // exhaustive across all announced future dates; enrichment remains a separate\n  // candidate-only verification layer. Approval/publication stays operator-owned.\n  let orbitDirectoryFilterV560=\"review_queue\",orbitDirectoryRowsV560=[],orbitDirectorySummaryV567=null,orbitDirectoryPipelinePollV580=null,orbitDirectoryPipelinePollTickV580=0,orbitDirectoryControlPollV625=null,orbitDirectorySplitPollV648=null,orbitDirectorySplitPayloadV657=null,orbitDirectoryPageV6001=1,orbitDirectoryAbortV6001=null,orbitDirectoryReadV6001=0;\n  const ORBIT_DIRECTORY_PAGE_SIZE_V6001=50;\n  try{orbitDirectoryFilterV560=localStorage.getItem(\"orbitDirectoryFilterV581\")||orbitDirectoryFilterV560;}catch(_e){}\n  orbitDirectoryFilterV560=({needs_review:\"review_queue\",conflict:\"review_queue\",live_updates:\"review_queue\",ignored:\"duplicate\",investigating:\"enriching\"})[orbitDirectoryFilterV560]||orbitDirectoryFilterV560;\n  if(![\"review_queue\",\"enriching\",\"approved\",\"past\",\"duplicate\",\"all\"].includes(orbitDirectoryFilterV560))orbitDirectoryFilterV560=\"review_queue\";\n  const orbitDirectoryViewCacheV567=new Map();\n  function ensureDirectoryModuleV560(){\n    if($(\"orbitDirectoryModuleV560\"))return;\n    const shell=document.querySelector(\".orbit-admin-shell\");if(!shell)return;\n    const section=document.createElement(\"section\");section.className=\"orbit-module orbit-directory-v561\";section.dataset.module=\"directory\";section.id=\"orbitDirectoryModuleV560\";\n    section.innerHTML=`<div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">CARDSHOWINDEX \u00B7 UK DIRECTORY</p><h2>Verified event database</h2><p>Discovery finds every announced UK card show it can. AI keeps incomplete records in the background and sends only mature, corroborated candidates to you.</p></div></div>\n      <div data-directory-pane-v594=\"events\"><div id=\"directorySummaryV560\" class=\"orbit-summary-grid\"></div><div class=\"orbit-panel-header orbit-directory-review-heading-v565\"><div><h3>Directory review</h3><p>Publication-safe records can auto-publish from 95% when backed by a verified authoritative source with no material conflict. Orbit keeps enriching published records quietly where useful.</p></div><label class=\"orbit-search-field\"><span>Search</span><input id=\"directorySearchV560\" type=\"search\" placeholder=\"Show, town, venue or postcode\"></label></div><div id=\"directoryEventsV560\" class=\"orbit-table-wrap\"><p class=\"orbit-muted\">Open Directory to load discovered events.</p></div></div>\n      <section data-directory-pane-v594=\"control\" hidden class=\"orbit-directory-control-pane-v626\"><div id=\"directoryControlCentreV625\" class=\"orbit-directory-control-v626\"><p class=\"orbit-muted\">Loading Directory Control Centre\u2026</p></div><section class=\"orbit-directory-full-pipeline-v626 orbit-directory-full-pipeline-v645\"><div><p class=\"orbit-kicker\">V656 \u00B7 RELEVANCE-FIRST ENRICHMENT</p><h3>Prove one clean handoff at a time</h3><p>Run small proving batches with live progress. V656 researches missing card-show relevance instead of treating it as a dead-end blocker, keeps deterministic foreign/non-show exclusions separate, and preserves bounded retry and human-only Review.</p></div></section><div id=\"directorySplitPipelinesV648\"><p class=\"orbit-muted\">Loading split pipelines\u2026</p></div><div id=\"directoryExclusionReviewV654\"><p class=\"orbit-muted\">Loading exclusion review\u2026</p></div><div id=\"directoryPipelineNoticeV580\" class=\"orbit-directory-pipeline-status-v580\" hidden></div></section>\n      <section data-directory-pane-v594=\"sources\" hidden class=\"orbit-directory-sources-v651\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">DISCOVERY SOURCE REGISTRY</p><h3>Approved sources</h3><p>Only enabled, human-approved sources can feed automated Discovery. Agents may propose new recurring sources here but cannot approve them.</p></div><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" id=\"directorySourcesRefreshV651\">Refresh</button><button type=\"button\" id=\"directorySourceAddV651\">Add source</button></div></div><div id=\"directorySourceSummaryV651\" class=\"orbit-summary-grid\"></div><div id=\"directorySourcesV651\" class=\"orbit-table-wrap\"><p class=\"orbit-muted\">Loading source registry\u2026</p></div><div class=\"orbit-panel-header compact\"><div><h3>Proposed sources</h3><p>Review agent-discovered source hubs before they can be used automatically.</p></div></div><div id=\"directorySourceProposalsV651\" class=\"orbit-table-wrap\"><p class=\"orbit-muted\">No proposals loaded.</p></div></section>\n      <section class=\"orbit-directory-sponsors-v589\" data-directory-pane-v594=\"sponsors\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">DIRECTORY SPONSORSHIP</p><h3>Sponsor management</h3><p>Review sponsor bookings and manage the fallback CardShowIndex banner and compact Fallback Powered by logo without editing code.</p></div><button type=\"button\" class=\"secondary\" id=\"directorySponsorsRefreshV589\">Refresh sponsors</button></div><div id=\"directorySponsorSettingsV593\" class=\"orbit-directory-sponsor-settings-v593\"><p class=\"orbit-muted\">Loading sponsor display settings\u2026</p></div><div class=\"orbit-panel-header orbit-directory-sponsor-bookings-head-v593\"><div><h4>Sponsor bookings</h4><p>Paid bookings stay offline until you approve them. Both required assets must be present; any creative edit clears approval automatically.</p></div></div><div id=\"directorySponsorBookingsV589\" class=\"orbit-directory-sponsor-list-v589\"><p class=\"orbit-muted\">Loading sponsor bookings\u2026</p></div></section><section class=\"orbit-directory-organisers-v594\" data-directory-pane-v594=\"organisers\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">ORGANISER ACCESS</p><h3>Claims and verified owners</h3><p>Review proof-of-control claims, then suspend or revoke organiser access without altering the underlying public event record.</p></div><button type=\"button\" class=\"secondary\" id=\"directoryOrganiserAccessRefreshV594\">Refresh access</button></div><div id=\"directoryOrganiserAccessV594\"><p class=\"orbit-muted\">Loading organiser access\u2026</p></div></section>\n      <section data-directory-pane-v594=\"analytics\" hidden class=\"orbit-directory-analytics-v628\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">CARDSHOWINDEX \u00B7 ANALYTICS</p><h3>Search, traffic and indexing</h3><p>CardShowIndex owns this analytics surface. Configure Search Console and GA4 here without leaving the Directory workspace.</p></div><button type=\"button\" class=\"secondary\" id=\"directoryAnalyticsRefreshV628\">Refresh analytics</button></div><div id=\"directoryAnalyticsMetricsV628\" class=\"orbit-summary-grid\"><p class=\"orbit-muted\">Open Directory Analytics to load CardShowIndex traffic and search data.</p></div><article class=\"orbit-panel\"><div class=\"orbit-panel-header compact\"><div><h3>Google connection</h3><p>Search Console uses the same saved Google OAuth client but its own read-only authorization. The redirect URI below must match Google Cloud exactly.</p></div></div><div class=\"orbit-form-grid\"><label>OAuth Client ID<input id=\"directoryGoogleOauthClientIdV628\" autocomplete=\"off\"></label><label>OAuth Client Secret<input id=\"directoryGoogleOauthClientSecretV628\" type=\"password\" autocomplete=\"new-password\" placeholder=\"Leave blank to keep saved secret\"></label><label class=\"orbit-span-2\">Exact Search Console redirect URI<input id=\"directorySearchConsoleRedirectV628\" readonly></label><label>CardShowIndex Search Console property<input id=\"directorySearchConsolePropertyV628\" placeholder=\"sc-domain:cardshowindex.co.uk\"></label><label>CardShowIndex sitemap<input id=\"directorySitemapUrlV628\" placeholder=\"https://cardshowindex.co.uk/sitemap.xml\"></label><label>GA4 Measurement ID<input id=\"directoryGaMeasurementIdV628\" placeholder=\"G-XXXXXXXXXX\"></label><label>GA4 Property ID<input id=\"directoryGaPropertyIdV628\" inputmode=\"numeric\" placeholder=\"123456789\"></label></div><div class=\"orbit-action-row\"><button type=\"button\" id=\"directoryAnalyticsSaveV628\">Save CardShowIndex analytics</button><button type=\"button\" class=\"secondary\" id=\"directorySearchConsoleConnectV628\">Connect Search Console</button><button type=\"button\" class=\"secondary\" id=\"directorySearchConsoleTestV628\">Test connection</button><button type=\"button\" class=\"secondary\" id=\"directorySearchConsoleSyncV628\">Sync last 30 days</button></div><div id=\"directoryAnalyticsSearchConsoleV628\" class=\"orbit-info-banner\">Search Console status not loaded.</div><div id=\"directoryAnalyticsLastSyncV628\" class=\"orbit-muted\"></div></article><div class=\"orbit-analytics-grid-v468\"><article class=\"orbit-panel\"><div class=\"orbit-panel-header compact\"><div><h3>GA4 traffic</h3><p>Read-only CardShowIndex traffic for the last 30 days.</p></div></div><div id=\"directoryAnalyticsGaV628\" class=\"orbit-table-wrap\">Not loaded.</div></article><article class=\"orbit-panel\"><div class=\"orbit-panel-header compact\"><div><h3>Google search visibility</h3><p>Search Console clicks, impressions, CTR and position for CardShowIndex only.</p></div></div><div id=\"directoryAnalyticsSearchV628\" class=\"orbit-table-wrap\">Not loaded.</div></article></div></section>`\n    shell.appendChild(section);\n    if(!$(\"directoryEventDialogV560\")){\n      const d=document.createElement(\"dialog\");d.id=\"directoryEventDialogV560\";d.className=\"orbit-admin-dialog orbit-directory-review-dialog-v561\";d.innerHTML=`<header class=\"orbit-dialog-heading orbit-directory-dialog-heading-v566\"><div class=\"orbit-directory-dialog-title-v565\"><p class=\"orbit-kicker\">DIRECTORY REVIEW</p><h2 id=\"directoryEventDialogTitleV560\">Event</h2><p id=\"directoryEventDialogSubtitleV560\"></p><div id=\"directoryEventDialogMetaV565\" class=\"orbit-directory-dialog-meta-v565\"></div></div><button type=\"button\" class=\"secondary orbit-directory-permanent-close-v566\" id=\"directoryEventCloseHeaderV566\">Close</button></header><div class=\"orbit-directory-toolbar-v566\" id=\"directoryEventToolbarV566\"><div id=\"directoryEventDialogActionsV565\" class=\"orbit-directory-dialog-actions-v565\"></div></div><div id=\"directoryEventDialogBodyV560\"></div>`;document.body.appendChild(d);\n      const closeDirectory=()=>{try{d.close();}catch(_){d.removeAttribute(\"open\");}};d.addEventListener(\"cancel\",e=>{e.preventDefault();closeDirectory();});$(\"directoryEventCloseHeaderV566\")?.addEventListener(\"click\",closeDirectory);\n    }\n    $(\"directoryRefreshV560\")?.addEventListener(\"click\",()=>loadDirectoryV560(true,{viewChanged:true}).catch(()=>{}));\n    $(\"directoryRunPipelineV580\")?.addEventListener(\"click\",e=>runDirectoryPipelineV580(e.currentTarget));\n    $(\"directoryControlCentreV625\")?.addEventListener(\"click\",e=>{const run=e.target.closest(\"[data-directory-agent-run-v625]\"),control=e.target.closest(\"[data-directory-run-control-v625]\"),modelSave=e.target.closest(\"[data-directory-model-save-v625]\"),analytics=e.target.closest(\"[data-directory-open-analytics-v628]\");if(analytics){activateWorkspace(\"directory-analytics\");return;}if(run)runDirectoryAgentV625(run.dataset.directoryAgentRunV625,run).catch(err=>setNotice(err.message||err,true));if(control)controlDirectoryRunV625(control.dataset.directoryRunIdV625,control.dataset.directoryRunControlV625,control).catch(err=>setNotice(err.message||err,true));if(modelSave)saveDirectoryModelRoutingV625(modelSave).catch(err=>setNotice(err.message||err,true));});\n    $(\"directorySplitPipelinesV648\")?.addEventListener(\"click\",e=>{const run=e.target.closest(\"[data-directory-split-run-v648]\"),stop=e.target.closest(\"[data-directory-split-stop-v648]\"),copy=e.target.closest(\"[data-directory-split-copy-v657]\");if(run)runDirectorySplitV648(run.dataset.directorySplitRunV648,run.dataset.directorySplitLimitV648||\"10\",run.dataset.directorySplitSubstageV648||\"all\",run,run.dataset.directorySplitNewCohortV657===\"true\",run.dataset.directorySplitCohortSourceV658||\"discovery\").catch(err=>setNotice(err.message||err,true));if(stop)stopDirectorySplitV648(stop.dataset.directorySplitStopV648,stop).catch(err=>setNotice(err.message||err,true));if(copy)copyDirectorySplitResultV657(copy.dataset.directorySplitCopyV657,copy).catch(err=>setNotice(err.message||err,true));});\n    $(\"directoryExclusionReviewV654\")?.addEventListener(\"click\",e=>{const confirm=e.target.closest(\"[data-directory-exclusion-confirm-v654]\"),back=e.target.closest(\"[data-directory-exclusion-return-v654]\"),reopen=e.target.closest(\"[data-directory-exclusion-reopen-v654]\");if(confirm)directoryExclusionDecisionV654(confirm.dataset.directoryExclusionConfirmV654,\"confirm\",confirm).catch(err=>setNotice(err.message||err,true));if(back)directoryExclusionDecisionV654(back.dataset.directoryExclusionReturnV654,\"return\",back).catch(err=>setNotice(err.message||err,true));if(reopen)directoryExclusionDecisionV654(reopen.dataset.directoryExclusionReopenV654,\"reopen\",reopen).catch(err=>setNotice(err.message||err,true));});\n    $(\"directorySourcesRefreshV651\")?.addEventListener(\"click\",()=>loadDirectorySourcesV651(true).catch(err=>setNotice(\"Directory sources unavailable: \"+(err.message||err),true)));$(\"directorySourceAddV651\")?.addEventListener(\"click\",()=>addDirectorySourceV651().catch(err=>setNotice(\"Source could not be added: \"+(err.message||err),true)));$(\"directorySourcesV651\")?.addEventListener(\"click\",e=>handleDirectorySourceActionV651(e).catch(err=>setNotice(\"Source action failed: \"+(err.message||err),true)));$(\"directorySourceProposalsV651\")?.addEventListener(\"click\",e=>handleDirectorySourceProposalV651(e).catch(err=>setNotice(\"Source proposal action failed: \"+(err.message||err),true)));\n    $(\"directorySponsorsRefreshV589\")?.addEventListener(\"click\",()=>Promise.all([loadDirectorySponsorsV589(true),loadDirectorySponsorSettingsV593(true)]).catch(()=>{}));$(\"directoryOrganiserAccessRefreshV594\")?.addEventListener(\"click\",()=>loadDirectoryOrganiserAccessV594(true).catch(err=>setNotice(\"Organiser access unavailable: \"+(err.message||err),true)));$(\"directoryOrganiserAccessV594\")?.addEventListener(\"click\",e=>{const b=e.target.closest(\"[data-csi-organiser-access-action]\");if(b)handleDirectoryOrganiserAccessV594(b).catch(err=>setNotice(\"Organiser access action failed: \"+(err.message||err),true));});\n    $(\"directoryAnalyticsRefreshV628\")?.addEventListener(\"click\",e=>loadDirectoryAnalyticsV628(true,e.currentTarget).catch(err=>setNotice(\"Directory analytics unavailable: \"+(err.message||err),true)));$(\"directoryAnalyticsSaveV628\")?.addEventListener(\"click\",e=>saveDirectoryAnalyticsV628(e.currentTarget).catch(err=>setNotice(err.message||err,true)));$(\"directorySearchConsoleConnectV628\")?.addEventListener(\"click\",e=>connectDirectorySearchConsoleV628(e.currentTarget).catch(err=>setNotice(err.message||err,true)));$(\"directorySearchConsoleTestV628\")?.addEventListener(\"click\",e=>testCardShowIndexSearchConsoleV625(e.currentTarget).catch(err=>setNotice(err.message||err,true)));$(\"directorySearchConsoleSyncV628\")?.addEventListener(\"click\",e=>syncCardShowIndexSearchConsoleV625(e.currentTarget).then(()=>loadDirectoryAnalyticsV628(true,null)).catch(err=>setNotice(err.message||err,true)));\n    $(\"directorySponsorBookingsV589\")?.addEventListener(\"click\",e=>{const b=e.target.closest(\"[data-csi-sponsor-action]\");if(!b)return;handleDirectorySponsorActionV589(b).catch(err=>setNotice(\"Sponsor action failed: \"+(err.message||err),true));});\n    $(\"directorySponsorSettingsV593\")?.addEventListener(\"click\",e=>{const b=e.target.closest(\"[data-csi-sponsor-settings-save]\");if(b)saveDirectorySponsorSettingsV593(b).catch(err=>setNotice(\"Sponsor settings failed: \"+(err.message||err),true));});\n    try{const savedSearch=localStorage.getItem(\"orbitDirectorySearchV581\")||\"\";if($(\"directorySearchV560\"))$(\"directorySearchV560\").value=savedSearch;}catch(_e){}\n    document.querySelectorAll(\"[data-directory-filter-v560]\").forEach(x=>{const active=x.dataset.directoryFilterV560===orbitDirectoryFilterV560;x.classList.toggle(\"active\",active);x.setAttribute(\"aria-selected\",String(active));if(active)x.setAttribute(\"aria-current\",\"page\");else x.removeAttribute(\"aria-current\");});\n    $(\"directorySearchV560\")?.addEventListener(\"input\",()=>{try{localStorage.setItem(\"orbitDirectorySearchV581\",$(\"directorySearchV560\")?.value||\"\");}catch(_e){}orbitDirectoryPageV6001=1;window.clearTimeout(window.orbitDirectorySearchTimerV560);window.orbitDirectorySearchTimerV560=setTimeout(()=>loadDirectoryV560(false,{viewChanged:true}).catch(()=>{}),250);});\n    $(\"directoryFiltersV560\")?.addEventListener(\"click\",e=>{const b=e.target.closest(\"[data-directory-filter-v560]\");if(!b)return;orbitDirectoryFilterV560=b.dataset.directoryFilterV560;orbitDirectoryPageV6001=1;try{localStorage.setItem(\"orbitDirectoryFilterV581\",orbitDirectoryFilterV560);}catch(_e){}document.querySelectorAll(\"[data-directory-filter-v560]\").forEach(x=>{const active=x.dataset.directoryFilterV560===orbitDirectoryFilterV560;x.classList.toggle(\"active\",active);x.setAttribute(\"aria-selected\",String(active));if(active)x.setAttribute(\"aria-current\",\"page\");else x.removeAttribute(\"aria-current\");});loadDirectoryV560(false,{viewChanged:true}).catch(()=>{});});\n    $(\"directoryEventsV560\")?.addEventListener(\"click\",e=>{const pageButton=e.target.closest(\"[data-directory-page-v6001]\");if(pageButton){const next=Number(pageButton.dataset.directoryPageV6001||1);if(next>=1&&next!==orbitDirectoryPageV6001){orbitDirectoryPageV6001=next;loadDirectoryV560(true,{viewChanged:true,keepPage:true}).catch(()=>{});}return;}const retry=e.target.closest(\"[data-directory-retry-v6001]\");if(retry){loadDirectoryV560(true,{viewChanged:true,keepPage:true}).catch(()=>{});return;}const b=e.target.closest(\"[data-directory-open-v560]\");if(b)openDirectoryEventV560(b.dataset.directoryOpenV560).catch(err=>setNotice(\"Directory event unavailable: \"+(err.message||err),true));});\n    window.setTimeout(()=>resumeDirectoryPipelineV580().catch(()=>{}),150);\n    // V594 sponsor data loads only when the Sponsorship sub-tab is opened.\n  }\n  function sponsorAssetPreviewV593(asset,label){let path=String(asset?.path||asset?.url||\"\").trim();if(path.startsWith(\"/\"))path=API_BASE+path;return path?`<div class=\"orbit-directory-sponsor-preview-v593\"><span>${esc(label)}</span><img src=\"${esc(path)}\" alt=\"${esc(label)} preview\"></div>`:`<div class=\"orbit-directory-sponsor-preview-v593 is-empty\"><span>${esc(label)}</span><small>No asset uploaded yet</small></div>`;}\n  function fileDataUrlV593(file){return new Promise((resolve,reject)=>{if(!file){resolve(\"\");return;}if(!/^image\\/(png|jpeg|webp|gif)$/i.test(file.type||\"\")){reject(new Error(\"Use a PNG, JPEG, WebP or GIF image.\"));return;}if(Number(file.size||0)>5*1024*1024){reject(new Error(\"Sponsor images must be 5 MB or smaller.\"));return;}const reader=new FileReader();reader.onload=()=>resolve(String(reader.result||\"\"));reader.onerror=()=>reject(new Error(\"The sponsor image could not be read.\"));reader.readAsDataURL(file);});}\n  async function loadDirectoryOrganiserAccessV594(force=false){\n    const box=$(\"directoryOrganiserAccessV594\");if(!box)return;\n    try{\n      const data=await api(\"/api/admin/cardshowindex/organiser-claims?limit=150\",{cacheMs:force?0:5000,timeoutMs:12000}),claims=data.claims||[],owners=data.owners||[],pending=claims.filter(x=>[\"manual_review\",\"proof_required\",\"proof_submitted\",\"verification_sent\"].includes(String(x.status||\"\")));\n      const claimHtml=pending.length?pending.map(row=>{const canApprove=[\"manual_review\",\"proof_submitted\"].includes(String(row.status||\"\"));return `<article class=\"orbit-directory-access-card-v594\"><div><strong>${esc(row.organiserName||row.organiserEntityId||\"Organiser claim\")}</strong><small>${esc(row.email||\"\")} \u00B7 ${esc(String(row.status||\"\").replace(/_/g,\" \"))}</small>${row.proofUrl?`<a href=\"${esc(row.proofUrl)}\" target=\"_blank\" rel=\"noopener noreferrer\">Review public proof \u2197</a>`:\"\"}</div><div>${canApprove?`<button type=\"button\" data-csi-organiser-access-action=\"approve\" data-claim-id=\"${esc(row.id)}\">Approve verified claim</button>`:'<small>Awaiting claimant verification</small>'}</div></article>`;}).join(\"\"):'<p class=\"orbit-muted\">No organiser claims currently need Admin action.</p>';\n      const ownerHtml=owners.length?owners.map(row=>{let actions='';if(row.status!==\"active\")actions=`<button type=\"button\" class=\"secondary\" data-csi-organiser-access-action=\"status\" data-owner-id=\"${esc(row.id)}\" data-owner-status=\"active\">Reactivate</button>`;else actions=`<button type=\"button\" class=\"secondary\" data-csi-organiser-access-action=\"status\" data-owner-id=\"${esc(row.id)}\" data-owner-status=\"suspended\">Suspend</button><button type=\"button\" class=\"danger\" data-csi-organiser-access-action=\"status\" data-owner-id=\"${esc(row.id)}\" data-owner-status=\"revoked\">Revoke</button>`;return `<article class=\"orbit-directory-access-card-v594\"><div><strong>${esc(row.organiserName||row.organiserEntityId||\"Verified organiser\")}</strong><small>${esc(row.email||\"\")} \u00B7 ${esc(row.status||\"active\")}</small><small>${row.updatedAt?esc(prettyDate(row.updatedAt)):\"\"}</small></div><div>${actions}</div></article>`;}).join(\"\"):'<p class=\"orbit-muted\">No verified organiser owners yet.</p>';\n      box.innerHTML=`<div class=\"orbit-directory-access-grid-v594\"><section><div class=\"orbit-panel-header\"><div><h4>Claims needing attention</h4><p>${pending.length} claim${pending.length===1?\"\":\"s\"} awaiting or completing verification.</p></div></div><div class=\"orbit-directory-access-list-v594\">${claimHtml}</div></section><section><div class=\"orbit-panel-header\"><div><h4>Verified owners</h4><p>Access can be suspended or revoked independently of public listing data.</p></div></div><div class=\"orbit-directory-access-list-v594\">${ownerHtml}</div></section></div>`;\n    }catch(error){box.innerHTML='<p class=\"orbit-muted\">Organiser access could not be loaded right now.</p>';if(force)throw error;}\n  }\n  async function handleDirectoryOrganiserAccessV594(button){\n    const action=button.dataset.csiOrganiserAccessAction;button.disabled=true;\n    try{\n      if(action===\"approve\"){\n        if(!window.confirm(\"Approve this organiser claim as verified? A fresh single-use activation link will be emailed.\"))return;\n        await api(\"/api/admin/cardshowindex/organiser-claims/\"+encodeURIComponent(button.dataset.claimId)+\"/approve\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:20000});setNotice(\"Organiser claim approved and activation link issued.\");\n      }else if(action===\"status\"){\n        const status=button.dataset.ownerStatus||\"\";if([\"suspended\",\"revoked\"].includes(status)&&!window.confirm(`Set this organiser access to ${status}? Existing management access will stop immediately.`))return;\n        await api(\"/api/admin/cardshowindex/organiser-owners/\"+encodeURIComponent(button.dataset.ownerId)+\"/status\",{method:\"POST\",body:JSON.stringify({status}),cacheMs:0,timeoutMs:20000});setNotice(\"Organiser access updated.\");\n      }\n      await loadDirectoryOrganiserAccessV594(true);\n    }finally{button.disabled=false;}\n  }\n  async function loadDirectorySponsorSettingsV593(force=false){const box=$(\"directorySponsorSettingsV593\");if(!box)return;try{const data=await api(\"/api/admin/cardshowindex/sponsor-settings\",{cacheMs:force?0:5000,timeoutMs:12000}),settings=data.settings||{},fallback=settings.fallback||{},branding=settings.branding||{},audit=data.audit||[];box.innerHTML=`<div class=\"orbit-directory-sponsor-settings-grid-v593\"><div class=\"orbit-directory-sponsor-form-v593\"><div class=\"orbit-notice\"><strong>Fallback sponsor</strong><br>Used automatically whenever no approved paid booking is live. Default: Orbit Collectors Club.</div><label><span>Sponsor name</span><input id=\"directorySponsorNameV593\" value=\"${esc(fallback.sponsorName||\"Orbit Collectors Club\")}\" placeholder=\"Sponsor name\"></label><label><span>Destination URL</span><input id=\"directorySponsorUrlV593\" type=\"url\" value=\"${esc(fallback.destinationUrl||\"https://orbitcollectorsclub.com/\")}\" placeholder=\"https://...\"></label><label><span>Alt text</span><input id=\"directorySponsorAltV593\" value=\"${esc(fallback.altText||\"Orbit Collectors Club\")}\" placeholder=\"Sponsor name\"></label><label><span>Fallback homepage banner \u00B7 EXACT 2450 \u00D7 200</span><input id=\"directorySponsorBannerV593\" type=\"file\" accept=\"image/png,image/jpeg,image/webp,image/gif\"></label><label><span>Fallback Powered by logo</span><input id=\"directorySponsorLogoV593\" type=\"file\" accept=\"image/png,image/jpeg,image/webp,image/gif\"></label><div class=\"orbit-notice orbit-directory-branding-note-v595\"><strong>CardShowIndex public branding</strong><br>These assets are independent from sponsorship. Upload a homepage hero background, header logo, or high-contrast footer logo whenever you want to refresh the public site.</div><label><span>Homepage hero background \u00B7 min 1200 \u00D7 400</span><input id=\"directoryHeroBackgroundV595\" type=\"file\" accept=\"image/png,image/jpeg,image/webp,image/gif\"></label><label><span>Header logo</span><input id=\"directoryHeaderLogoV595\" type=\"file\" accept=\"image/png,image/jpeg,image/webp,image/gif\"></label><label><span>Footer logo</span><input id=\"directoryFooterLogoV595\" type=\"file\" accept=\"image/png,image/jpeg,image/webp,image/gif\"></label><div class=\"orbit-directory-sponsor-controls-v593\"><button type=\"button\" data-csi-sponsor-settings-save>Save sponsor & branding display</button></div></div><div class=\"orbit-directory-sponsor-assets-v593\">${sponsorAssetPreviewV593(fallback.homepageBanner,\"Fallback homepage banner\")}${sponsorAssetPreviewV593(fallback.logo,\"Fallback Powered by logo\")}<div class=\"orbit-directory-branding-preview-v595\"><strong>Public branding</strong>${sponsorAssetPreviewV593(branding.heroBackground,\"Homepage hero background\")}${sponsorAssetPreviewV593(branding.headerLogo,\"Header logo\")}${sponsorAssetPreviewV593(branding.footerLogo,\"Footer logo\")}</div><div class=\"orbit-directory-sponsor-audit-v593\"><strong>Recent changes</strong>${audit.length?audit.slice(0,5).map(row=>`<small>${esc(prettyDate(row.createdAt||row.updatedAt||\"\"))} \u00B7 ${esc(row.actor||\"Admin\")}</small>`).join(\"\"):\"<small>No managed sponsor changes yet.</small>\"}</div></div></div>`;}catch(error){box.innerHTML='<p class=\"orbit-muted\">Sponsor display settings could not be loaded right now.</p>';if(force)throw error;}}\n  async function saveDirectorySponsorSettingsV593(button){button.disabled=true;button.textContent=\"Saving\u2026\";try{const banner=$(\"directorySponsorBannerV593\")?.files?.[0]||null,logo=$(\"directorySponsorLogoV593\")?.files?.[0]||null,hero=$(\"directoryHeroBackgroundV595\")?.files?.[0]||null,headerLogo=$(\"directoryHeaderLogoV595\")?.files?.[0]||null,footerLogo=$(\"directoryFooterLogoV595\")?.files?.[0]||null,[homepageBannerDataUrl,logoDataUrl,heroBackgroundDataUrl,headerLogoDataUrl,footerLogoDataUrl]=await Promise.all([fileDataUrlV593(banner),fileDataUrlV593(logo),fileDataUrlV593(hero),fileDataUrlV593(headerLogo),fileDataUrlV593(footerLogo)]),payload={enabled:false,fallbackSponsorName:$(\"directorySponsorNameV593\")?.value||\"\",fallbackDestinationUrl:$(\"directorySponsorUrlV593\")?.value||\"\",fallbackAltText:$(\"directorySponsorAltV593\")?.value||\"\"};if(homepageBannerDataUrl)payload.fallbackHomepageBannerDataUrl=homepageBannerDataUrl;if(logoDataUrl)payload.fallbackLogoDataUrl=logoDataUrl;if(heroBackgroundDataUrl)payload.heroBackgroundDataUrl=heroBackgroundDataUrl;if(headerLogoDataUrl)payload.headerLogoDataUrl=headerLogoDataUrl;if(footerLogoDataUrl)payload.footerLogoDataUrl=footerLogoDataUrl;await api(\"/api/admin/cardshowindex/sponsor-settings\",{method:\"PATCH\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:30000});setNotice(\"CardShowIndex sponsor and public branding display updated.\");await loadDirectorySponsorSettingsV593(true);}finally{button.disabled=false;button.textContent=\"Save sponsor & branding display\";}}\n  async function loadDirectorySponsorsV589(force=false){const box=$(\"directorySponsorBookingsV589\");if(!box)return;try{const data=await api(\"/api/admin/cardshowindex/sponsors?limit=40\",{cacheMs:force?0:5000,timeoutMs:12000}),rows=data.bookings||[];if(!rows.length){box.innerHTML='<p class=\"orbit-muted\">No sponsor bookings yet. Public sponsorship checkout is available, but nothing can go live without approval.</p>';return;}box.innerHTML=rows.map(row=>{const status=String(row.status||\"unknown\"),approval=row.approval||{},creative=row.creative||{},actions=status===\"paid_awaiting_approval\"?`<button type=\"button\" data-csi-sponsor-action=\"approve\" data-id=\"${esc(row.id)}\">Approve for scheduled dates</button>`:status===\"checkout_pending\"?`<button type=\"button\" class=\"secondary\" data-csi-sponsor-action=\"mark-paid\" data-id=\"${esc(row.id)}\">Mark paid</button>`:'';return `<article class=\"orbit-directory-sponsor-card-v589\"><div><strong>${esc(row.company||\"Sponsor\")}</strong><span>${esc(row.packageLabel||row.packageId||\"\")} \u00B7 \u00A3${Number(row.priceGbp||0).toLocaleString(\"en-GB\")} \u00B7 ${esc(row.startDate||\"\")} \u2192 ${esc(row.endDate||\"\")}</span><small>Status: ${esc(status.replaceAll(\"_\",\" \"))}${approval.approved?\" \u00B7 manually approved\":\"\"}</small>${creative.headline?`<p>${esc(creative.headline)}</p>`:\"\"}<small>Assets: ${creative.assetsReady?\"banner + logo ready\":\"INCOMPLETE \u2014 banner and logo required\"}</small>${creative.bannerMedia?sponsorAssetPreviewV593(creative.bannerMedia,\"2450 \u00D7 200 banner\"):\"\"}${creative.logoMedia?sponsorAssetPreviewV593(creative.logoMedia,\"Sponsor logo\"):\"\"}</div><div>${actions}</div></article>`;}).join(\"\");}catch(error){box.innerHTML='<p class=\"orbit-muted\">Sponsor bookings could not be loaded right now.</p>';if(force)throw error;}}\n  async function handleDirectorySponsorActionV589(button){const id=button.dataset.id,action=button.dataset.csiSponsorAction;if(!id||!action)return;button.disabled=true;const path=action===\"approve\"?`/api/admin/cardshowindex/sponsors/${encodeURIComponent(id)}/approve`:`/api/admin/cardshowindex/sponsors/${encodeURIComponent(id)}/mark-paid`;try{await api(path,{method:\"POST\",body:JSON.stringify({})});setNotice(action===\"approve\"?\"Sponsor approved for its scheduled dates.\":\"Sponsor marked paid and is awaiting manual approval.\");await loadDirectorySponsorsV589(true);}finally{button.disabled=false;}}\n  function directoryDateV560(v){if(!v)return \"Date needed\";const d=new Date(v+\"T12:00:00\");return Number.isNaN(d.getTime())?v:d.toLocaleDateString(\"en-GB\",{weekday:\"short\",day:\"numeric\",month:\"short\",year:\"numeric\"});}\n  function directoryLocationV560(e){return [e.venueName,e.city,e.county,e.postcode].filter(Boolean).join(\" \u00B7 \")||\"Location needed\";}\n  function directoryMissingLabelV561(field){return ({imageUrl:\"official image\",displayImage:\"usable event image\",description:\"description\",venueName:\"venue\",addressLine1:\"street address\",city:\"town / city\",postcode:\"postcode\",organiser:\"organiser\",landingUrl:\"event / ticket link\",coordinates:\"map coordinates\",independentSources:\"independent evidence\",identityCorroboration:\"identity verification\",identityVerification:\"authoritative source or corroboration\",publicCopy:\"public copy\",startDate:\"event date\",title:\"show title\"})[field]||String(field||\"\").replace(/([a-z])([A-Z])/g,\"$1 $2\").toLowerCase();}\n  function directoryQualityLabelV561(e){const q=e.dataQuality||{},score=Number(q.score||0),status=String(e?.status||'').toLowerCase();if(status==='ignored')return `${score}% complete \u00B7 ignored / publication suppressed`;if(status==='past')return `${score}% complete \u00B7 past event`;if(status==='rejected')return `${score}% complete \u00B7 rejected`;if(status==='approved'&&e?.canonicalLocked)return `${score}% \u00B7 live published`;if(q.autoPublishReady)return `${score}% \u00B7 auto publish ready`;if(q.hasConflicts)return `${score}% complete \u00B7 ${Number(q.conflictCount||1)} publication blocker${Number(q.conflictCount||1)===1?\"\":\"s\"}`;const blockers=(q.publicationBlockers||[]).map(directoryMissingLabelV561).filter(Boolean);if(blockers.length)return `${score}% \u00B7 blocked: ${blockers.join(\", \")}`;if(q.approvalReady)return `${score}% \u00B7 verified, enrichment continues`;const missing=(q.publicationCriticalMissing||q.missingFields||[]).map(directoryMissingLabelV561).join(\", \");return `${score}%${missing?\" \u00B7 missing \"+missing:\"\"}`;}\n  function directoryConflictFieldLabelV575(field){return ({title:\"Show title\",venueName:\"Venue name\",city:\"Town / city\",postcode:\"Postcode\",startDate:\"Event date\",endDate:\"End date\",organiser:\"Organiser\",imageUrl:\"Event image\"})[field]||String(field||\"evidence\").replace(/([a-z])([A-Z])/g,\"$1 $2\");}\n  function directoryConflictCurrentValueV575(e,field){return ({title:e.title,venueName:e.venueName,city:e.city,postcode:e.postcode,startDate:e.startDate,endDate:e.endDate,organiser:e.organiser,imageUrl:e.imageUrl})[field]||\"\";}\n  function directoryConflictHtmlV575(conflicts=[],e={}){return conflicts.map(c=>{const values=(c.values||[]).map(v=>`<div class=\"orbit-directory-conflict-option-v575\"><div><strong>${esc(v.value||\"Unknown value\")}</strong><span>Authority ${Number(v.authority||0)}</span></div><div class=\"orbit-directory-conflict-sources-v575\">${(v.sources||[]).slice(0,5).map(src=>src.url?`<a href=\"${esc(src.url)}\" target=\"_blank\" rel=\"noopener\">${esc(src.type||\"source\")} \u00B7 ${esc(src.reliability||\"\")} \u2197</a>`:`<span>${esc(src.type||\"source\")}</span>`).join(\"\")}</div></div>`).join(\"\");const recommended=c.recommendedValue?`<p class=\"orbit-directory-conflict-recommend-v575\"><strong>Orbit recommendation:</strong> ${esc(c.recommendedValue)}</p>`:\"\";return `<article class=\"orbit-directory-conflict-card-v575\"><header><strong>CONFLICT \u2014 ${esc(directoryConflictFieldLabelV575(c.field))}</strong><span>Publication blocker</span></header><p><b>Current value:</b> ${esc(directoryConflictCurrentValueV575(e,c.field)||\"Not set\")}</p>${values}${recommended}<small>Orbit will auto-resolve aliases and presentation differences. This remains here only while credible evidence still points to materially different facts.</small></article>`}).join(\"\");}\n  function renderDirectorySummaryV560(s={}){orbitDirectorySummaryV567=s;const counts={review_queue:s.reviewQueue??s.needsReview??0,enriching:Number(s.enriching||0)+Number(s.investigating||0)+Number(s.conflict||0),approved:s.approved||0,past:s.past||0,duplicate:s.duplicate||0,all:s.total||0};document.querySelectorAll(\"[data-directory-count-v567]\").forEach(node=>{node.textContent=Number(counts[node.dataset.directoryCountV567]||0).toLocaleString(\"en-GB\");});const box=$(\"directorySummaryV560\");if(!box)return;const aiBackground=Number(s.enriching||0)+Number(s.investigating||0)+Number(s.conflict||0),audit=s.conflictAudit||{},images=s.imageMetrics||{},imageDetail=`${Number(images.official||0).toLocaleString(\"en-GB\")} official artwork${Number(images.generatedFallback||0)?` \u00B7 ${Number(images.generatedFallback).toLocaleString(\"en-GB\")} temporary fallback`:\"\"}`,researchDetail=`Under 80% \u00B7 ${Number(audit.materialEvents||s.conflict||0).toLocaleString(\"en-GB\")} material conflicts${Number(audit.noiseEvents||0)?` \u00B7 ${Number(audit.noiseEvents).toLocaleString(\"en-GB\")} normalised`:\"\"}`;box.innerHTML=[[\"All indexed\",s.total||0,\"Known UK show records\"],[\"AI researching\",aiBackground,researchDetail],[\"Your decisions\",s.reviewQueue??s.needsReview??0,\"Only genuine decisions Orbit cannot resolve safely\"],[\"Live published\",s.approved||0,imageDetail||\"Locked public listings\"]].map(x=>`<article class=\"orbit-summary-card orbit-directory-headline-card-v567\"><small>${esc(x[0])}</small><strong>${Number(x[1]).toLocaleString(\"en-GB\")}</strong><span>${esc(x[2])}</span></article>`).join(\"\");const n=$(\"directoryDiscoveryNoticeV560\"),r=s.lastDiscoveryRun,enr=s.lastEnrichmentRun,rev=s.lastApprovedVerificationRun;if(n){const coverage=r?.coverage||{};const running=r?.status===\"running\";const coverageText=coverage.planTasks?` \u00B7 ${Number(coverage.tasksThisRun||0)}/${Number(coverage.planTasks||0)} discovery lanes${coverage.longRangeFuture?\" \u00B7 all future years\":\"\"}`:\"\",firstPartyText=Number(r?.firstParty?.found||0)?` \u00B7 ${Number(r.firstParty.found).toLocaleString(\"en-GB\")} Orbit first-party synced`:\"\";n.innerHTML=`<strong>${Number(s.registeredSources||0)} registered sources${Number(s.learnedResearchSources||0)?` + ${Number(s.learnedResearchSources)} learned research source${Number(s.learnedResearchSources)===1?\"\":\"s\"}`:\"\"} \u00B7 ${esc(s.verificationPolicy||\"one authoritative source or corroborating independent sources\")}</strong><span>${r?`${running?\"Discovery running\":\"Discovery \"+esc(prettyDate(r.completedAt||r.startedAt||\"\"))}: ${Number(r.found||0)} found \u00B7 ${Number(r.created||0)} new \u00B7 ${Number(r.merged||0)} refreshed${firstPartyText}${coverageText}.`:\"No discovery run yet.\"}${enr?` Enrichment ${esc(prettyDate(enr.completedAt||enr.startedAt||\"\"))}: ${Number(enr.investigated||0)} checked, ${Number(enr.enriched||0)} improved.`:\"\"}${rev?` Approved recheck ${esc(prettyDate(rev.completedAt||rev.startedAt||\"\"))}: ${Number(rev.investigated||0)} checked.`:\"\"} Organiser is optional. Routine title, venue and geography variants are resolved automatically; only genuinely material attendee-impacting conflicts remain in the Review Queue.</span>`;}}\n  function renderDirectoryEventsV560(rows=[],pagination=null){const box=$(\"directoryEventsV560\");if(!box)return;orbitDirectoryRowsV560=rows;const page=Number(pagination?.page||orbitDirectoryPageV6001||1),hasMore=Boolean(pagination?.hasMore);if(!rows.length){box.innerHTML=\"<div class='orbit-empty-state'><strong>No events in this view</strong><span>Run discovery/enrichment or choose another status.</span></div>\"+(page>1?`<div class=\"orbit-directory-pager-v6001\"><button type=\"button\" class=\"secondary\" data-directory-page-v6001=\"${page-1}\">Previous 50</button></div>`:\"\");return;}box.innerHTML=`<table><thead><tr><th>Show</th><th>Date</th><th>Location</th><th>Data quality</th><th>Evidence</th><th>Status</th><th></th></tr></thead><tbody>${rows.map(e=>{const q=e.dataQuality||{};return `<tr><td><strong>${esc(e.title||\"Untitled event\")}</strong>${e.organiser?`<br><small>${esc(e.organiser)}</small>`:\"\"}</td><td>${esc(directoryDateV560(e.startDate))}${e.startTime?`<br><small>${esc(e.startTime)}</small>`:\"\"}</td><td>${esc(directoryLocationV560(e))}</td><td><strong>${esc(directoryQualityLabelV561(e))}</strong><br><small>${q.conflictCount?`${Number(q.conflictCount)} conflict${Number(q.conflictCount)===1?\"\":\"s\"}`:(q.autoPublishReady?\"Eligible for automatic publication\":((q.publicationBlockers||[]).length?`Still needed: ${(q.publicationBlockers||[]).map(directoryMissingLabelV561).join(\", \")}`:(q.approvalReady?\"Fields verified; confidence enrichment continues\":(e.status===\"enriching\"?\"Working in the AI background queue\":\"Enrichment continues automatically\"))))}</small></td><td><strong>${Number(q.independentSourceCount||0)} independent</strong><br><small>${Number(q.sourceCount||(e.sources||[]).length)} evidence source${Number(q.sourceCount||(e.sources||[]).length)===1?\"\":\"s\"}</small></td><td>${esc(String(e.status||\"needs_review\").replace(/_/g,\" \"))}</td><td><button type=\"button\" class=\"secondary\" data-directory-open-v560=\"${esc(e.id)}\">Preview</button></td></tr>`}).join(\"\")}</tbody></table><div class=\"orbit-directory-pager-v6001\"><span>Page ${page} \u00B7 up to ${ORBIT_DIRECTORY_PAGE_SIZE_V6001} shows at a time</span><div>${page>1?`<button type=\"button\" class=\"secondary\" data-directory-page-v6001=\"${page-1}\">Previous 50</button>`:\"\"}${hasMore?`<button type=\"button\" class=\"secondary\" data-directory-page-v6001=\"${page+1}\">Next 50</button>`:\"\"}</div></div>`;}\n  function renderDirectoryLocalErrorV6001(error,{stale=false}={}){const box=$(\"directoryEventsV560\");if(!box)return;const message=error?.code===\"ADMIN_REQUEST_TIMEOUT\"?\"This Directory view took too long to respond.\":(error?.message||\"This Directory view could not be loaded.\");const warning=`<div class=\"orbit-directory-local-error-v6001\"><div><strong>${stale?\"Showing the last good view\":\"Directory view unavailable\"}</strong><span>${esc(message)} This affects only this Directory panel.</span></div><button type=\"button\" class=\"secondary\" data-directory-retry-v6001>Retry</button></div>`;if(stale)box.insertAdjacentHTML(\"afterbegin\",warning);else{box.innerHTML=warning;orbitDirectoryRowsV560=[];}}\n\n  function setDirectoryReviewCountV599(value){const count=Math.max(0,Number(value)||0);document.querySelectorAll('[data-directory-count-v567=\"review_queue\"]').forEach(node=>{node.textContent=count.toLocaleString(\"en-GB\");});if(orbitDirectorySummaryV567)orbitDirectorySummaryV567={...orbitDirectorySummaryV567,reviewQueue:count,needsReview:count};}\n  function directoryReviewSourcesV586(item={}){const raw=[...(Array.isArray(item.evidence)?item.evidence:[]),...(Array.isArray(item.options)?item.options.flatMap(option=>Array.isArray(option.sources)?option.sources:[]):[])],seen=new Set(),out=[];for(const source of raw){const url=String(source?.url||source?.sourceUrl||\"\").trim();if(!url||seen.has(url))continue;seen.add(url);out.push({url,label:String(source?.label||source?.title||source?.sourceType||source?.type||\"Evidence source\").trim()||\"Evidence source\"});if(out.length>=8)break;}return out;}\n  function renderDirectoryReviewQueueV586(items=[],totalOpen=items.length,reviewSummary={}){setDirectoryReviewCountV599(totalOpen);const box=$(\"directoryEventsV560\");if(!box)return;orbitDirectoryRowsV560=[];const reasons=Array.isArray(reviewSummary?.byReason)?reviewSummary.byReason.slice(0,6):[],machine=Number(reviewSummary?.machineResolvable||0),reasonHtml=reasons.length?`<div class=\"orbit-directory-decision-sources-v586\"><span>Human decisions by reason:</span>${reasons.map(r=>`<span>${esc(r.reason||\"decision\")} \u00B7 ${Number(r.count||0)}</span>`).join(\"\")}</div>`:\"\";if(!items.length){box.innerHTML=`<div class='orbit-directory-review-queue-v586 is-complete'><div class='orbit-directory-review-complete-v586'><strong>Review Queue clear \u2713</strong><span>Orbit has no genuine decisions waiting for you. Routine enrichment continues automatically.</span></div>${reasonHtml}</div>`;return;}const item=items[0],options=item.options||[],sources=directoryReviewSourcesV586(item),machineAction=machine>0?`<button type=\"button\" class=\"secondary\" data-directory-review-requeue-machine-v655>Return ${machine.toLocaleString(\"en-GB\")} machine item${machine===1?\"\":\"s\"} to enrichment</button>`:\"\";box.innerHTML=`<div class=\"orbit-directory-review-queue-v586\"><div class=\"orbit-directory-review-progress-v586\"><strong>Review Queue</strong><span>${Number(totalOpen||items.length)} genuine decision${Number(totalOpen||items.length)===1?\"\":\"s\"} remaining</span></div>${reasonHtml}${machineAction?`<div class=\"orbit-directory-decision-actions-v586\">${machineAction}</div>`:\"\"}<article class=\"orbit-directory-decision-card-v586\"><p class=\"orbit-kicker\">${esc(String(item.kind||\"decision\").replace(/_/g,\" \"))}</p><h3>${esc(item.question||\"Orbit needs one decision\")}</h3><p class=\"orbit-directory-decision-event-v586\"><strong>${esc(item.eventTitle||\"Directory event\")}</strong>${item.eventDate?` \u00B7 ${esc(directoryDateV560(item.eventDate))}`:\"\"}${item.venueName?` \u00B7 ${esc(item.venueName)}`:\"\"}</p><p class=\"orbit-directory-decision-explain-v586\">${esc(item.explanation||\"Orbit could not safely resolve this from the available evidence.\")}</p><div class=\"orbit-directory-decision-options-v586\">${options.map((o,index)=>{const role=o.role||(item.kind===\"live_change\"?(index===0?\"current\":\"proposed\"):\"option\"),roleLabel=role===\"current\"?\"Current value\":role===\"proposed\"?\"Proposed new value\":`Option ${index+1}`,valueText=o.displayValue??o.value??\"\";return `<button type=\"button\" class=\"orbit-directory-decision-option-v586${String(o.value)===String(item.recommendedValue)?\" is-recommended\":\"\"}\" data-directory-review-choice-v586=\"${esc(String(o.value??o.displayValue??\"\"))}\"><small class=\"orbit-directory-value-role-v588\">${esc(roleLabel)}</small><strong class=\"orbit-directory-value-text-v588\">${esc(String(valueText||\"Not set\"))}</strong><span>${esc(o.label||\"Use this value\")}</span>${String(o.value)===String(item.recommendedValue)?'<small class=\"orbit-directory-recommendation-v588\">Orbit recommendation</small>':''}</button>`;}).join(\"\")}</div>${sources.length?`<div class=\"orbit-directory-decision-sources-v586\"><span>Check the evidence if you want:</span>${sources.map(src=>`<a href=\"${esc(src.url)}\" target=\"_blank\" rel=\"noopener\">${esc(src.label)} \u2197</a>`).join(\"\")}</div>`:\"\"}<label class=\"orbit-directory-decision-note-v586\"><span>Optional note</span><textarea id=\"directoryReviewNoteV586\" rows=\"2\" placeholder=\"Only add a note if it will help Orbit remember why.\"></textarea></label><div class=\"orbit-directory-decision-actions-v586\"><button type=\"button\" class=\"secondary\" data-directory-review-investigate-v586>Investigate further</button><button type=\"button\" class=\"secondary\" data-directory-review-skip-v586>Skip for now</button></div><p id=\"directoryReviewResultV586\" class=\"orbit-muted\" aria-live=\"polite\"></p></article></div>`;const submit=async(decision,value=null)=>{const result=$(\"directoryReviewResultV586\");if(result)result.textContent=\"Saving your decision\u2026\";try{const saved=await api(\"/api/admin/directory/review-queue/\"+encodeURIComponent(item.id)+\"/decision\",{method:\"POST\",body:JSON.stringify({decision,value,note:$(\"directoryReviewNoteV586\")?.value||\"\"}),cacheMs:0,timeoutMs:20000}),remaining=Math.max(0,Number(saved.open??Math.max(0,Number(totalOpen||1)-1)));setDirectoryReviewCountV599(remaining);orbitDirectoryViewCacheV567.delete(\"review_queue|\");box.classList.add(\"is-advancing\");window.setTimeout(()=>{box.classList.remove(\"is-advancing\");if(saved.next)renderDirectoryReviewQueueV586([saved.next],remaining,reviewSummary);else if(remaining===0)renderDirectoryReviewQueueV586([],0,reviewSummary);else loadDirectoryV560(true).catch(err=>setNotice(err.message||err,true));api(\"/api/admin/directory/summary\",{cacheMs:0,timeoutMs:10000}).then(summary=>renderDirectorySummaryV560(summary)).catch(()=>{});},150);}catch(err){if(result)result.textContent=err.message||String(err);}};box.querySelectorAll(\"[data-directory-review-choice-v586]\").forEach(button=>button.addEventListener(\"click\",()=>submit(\"choose\",button.dataset.directoryReviewChoiceV586)));box.querySelector(\"[data-directory-review-investigate-v586]\")?.addEventListener(\"click\",()=>submit(\"investigate\"));box.querySelector(\"[data-directory-review-skip-v586]\")?.addEventListener(\"click\",()=>submit(\"skip\"));box.querySelector(\"[data-directory-review-requeue-machine-v655]\")?.addEventListener(\"click\",async e=>{const button=e.currentTarget;setLoading(button,true);try{const moved=await api(\"/api/admin/directory/review-queue/requeue-machine\",{method:\"POST\",body:JSON.stringify({limit:5000}),cacheMs:0,timeoutMs:30000});setNotice(`${Number(moved.migrated||0).toLocaleString(\"en-GB\")} machine-solvable review item${Number(moved.migrated||0)===1?\"\":\"s\"} returned to automated enrichment.`);orbitDirectoryViewCacheV567.clear();await loadDirectoryV560(true,{viewChanged:true});}finally{setLoading(button,false);}});}\n  function renderDirectoryDuplicatesV586(items=[]){const box=$(\"directoryEventsV560\");if(!box)return;orbitDirectoryRowsV560=items;if(!items.length){box.innerHTML=\"<div class='orbit-empty-state'><strong>No duplicates waiting</strong><span>High-confidence duplicates are quarantined here for seven days before the redundant record is removed. A lightweight tombstone remains so it cannot simply reappear.</span></div>\";return;}box.innerHTML=`<div class=\"orbit-directory-duplicates-v586\"><div class=\"orbit-info-banner\"><strong>${items.length} duplicate${items.length===1?\"\":\"s\"} in the 7-day safety window</strong><span>Useful evidence has already been merged into the canonical event. If Orbit got one wrong, restore it here and that pair will never be auto-merged again.</span></div>${items.map(e=>`<article class=\"orbit-directory-duplicate-card-v586\"><div><strong>${esc(e.title||\"Duplicate event\")}</strong><span>${esc(directoryDateV560(e.startDate))} \u00B7 ${esc(directoryLocationV560(e))}</span><small>Duplicate of ${esc(e.duplicateOf||\"canonical event\")} \u00B7 automatic deletion ${esc(e.duplicateDeleteAfter?prettyDate(e.duplicateDeleteAfter):\"after 7-day safety window\")}</small></div><div><button type=\"button\" class=\"secondary\" data-directory-open-v560=\"${esc(e.id)}\">Open</button><button type=\"button\" class=\"secondary\" data-directory-not-duplicate-v586=\"${esc(e.id)}\">Not a duplicate</button></div></article>`).join(\"\")}</div>`;box.querySelectorAll(\"[data-directory-not-duplicate-v586]\").forEach(button=>button.addEventListener(\"click\",async()=>{const note=window.prompt(\"Why is this not a duplicate? Orbit will remember your decision and will not auto-merge this pair again.\",\"\");if(note===null)return;button.disabled=true;try{await api(\"/api/admin/directory/duplicates/\"+encodeURIComponent(button.dataset.directoryNotDuplicateV586)+\"/restore\",{method:\"POST\",body:JSON.stringify({note}),cacheMs:0,timeoutMs:20000});await loadDirectoryV560(true);}catch(err){setNotice(err.message||err,true);button.disabled=false;}}));}\n  function updateDirectoryHeadingV586(){const section=$(\"orbitDirectoryModuleV560\"),header=section?.querySelector(\".orbit-directory-review-heading-v565\"),title=header?.querySelector(\"h3\"),copy=header?.querySelector(\"p\"),searchWrap=$(\"directorySearchV560\")?.closest(\"label\");if(!title||!copy)return;const map={review_queue:[\"Review Queue\",\"One decision at a time. Orbit only asks when credible evidence genuinely needs your judgement.\"],enriching:[\"Researching\",\"Background agents are resolving incomplete records. You normally do not need to do anything here.\"],approved:[\"Approved listings\",\"Search and edit the live catalogue. Any field you edit is locked to your decision and agents cannot silently undo it.\"],past:[\"Past events\",\"Historical events remain useful intelligence for recurring shows, organisers, venues and future discovery.\"],duplicate:[\"Duplicates\",\"High-confidence duplicates are held for seven days so you can undo a bad match before the redundant record is removed.\"],all:[\"All shows\",\"Complete Directory record view for diagnostics and search.\"]};const selected=map[orbitDirectoryFilterV560]||map.enriching;title.textContent=selected[0];copy.textContent=selected[1];if(searchWrap)searchWrap.hidden=[\"review_queue\",\"duplicate\"].includes(orbitDirectoryFilterV560);}\n  function renderDirectoryLoadingV567(){const box=$(\"directoryEventsV560\");if(box){box.innerHTML=\"<div class=\\'orbit-empty-state orbit-directory-loading-v567\\'><strong>Loading this Directory view\u2026</strong><span>The previous view has been cleared so stale rows are never shown under the wrong tab.</span></div>\";box.setAttribute(\"aria-busy\",\"true\");}orbitDirectoryRowsV560=[];}\n  async function loadDirectoryV560(force=false,{viewChanged=false,keepPage=false}={}){\n    ensureDirectoryModuleV560();updateDirectoryHeadingV586();\n    if(viewChanged&&!keepPage)orbitDirectoryPageV6001=1;\n    const q=$(\"directorySearchV560\")?.value||\"\",paged=!['review_queue','duplicate'].includes(orbitDirectoryFilterV560),page=paged?Math.max(1,orbitDirectoryPageV6001):1,cacheKey=orbitDirectoryFilterV560+\"|\"+q.trim().toLowerCase()+\"|p\"+page,cached=orbitDirectoryViewCacheV567.get(cacheKey),fresh=cached&&cached.expiresAt>Date.now();\n    if(viewChanged&&orbitDirectoryAbortV6001){orbitDirectoryAbortV6001.abort();orbitDirectoryAbortV6001=null;}\n    if(!force&&fresh){if(cached.summary)renderDirectorySummaryV560(cached.summary);if(orbitDirectoryFilterV560===\"review_queue\")renderDirectoryReviewQueueV586(cached.items||[],cached.open??cached.items?.length??0,cached.reviewSummary||{});else if(orbitDirectoryFilterV560===\"duplicate\")renderDirectoryDuplicatesV586(cached.items||[]);else renderDirectoryEventsV560(cached.events||[],cached.pagination||{page,hasMore:false});return {success:true,cached:true};}\n    if(viewChanged||!cached)renderDirectoryLoadingV567();\n    const requestId=++orbitDirectoryReadV6001,controller=new AbortController();if(orbitDirectoryAbortV6001)orbitDirectoryAbortV6001.abort();orbitDirectoryAbortV6001=controller;\n    const summaryPromise=api(\"/api/admin/directory/summary\",{cacheMs:force?0:5000,timeoutMs:10000});\n    let dataPromise;\n    if(orbitDirectoryFilterV560===\"review_queue\")dataPromise=api(\"/api/admin/directory/review-queue?limit=25\",{cacheMs:force?0:2500,timeoutMs:10000,signal:controller.signal});\n    else if(orbitDirectoryFilterV560===\"duplicate\")dataPromise=api(\"/api/admin/directory/duplicates?limit=100\",{cacheMs:force?0:2500,timeoutMs:10000,signal:controller.signal});\n    else dataPromise=api(\"/api/admin/directory/events?status=\"+encodeURIComponent(orbitDirectoryFilterV560)+\"&q=\"+encodeURIComponent(q)+\"&page=\"+page+\"&limit=\"+ORBIT_DIRECTORY_PAGE_SIZE_V6001,{cacheMs:force?0:3000,timeoutMs:10000,signal:controller.signal});\n    const [summaryResult,dataResult]=await Promise.allSettled([summaryPromise,dataPromise]);\n    if(requestId!==orbitDirectoryReadV6001)return {success:false,staleRequest:true};\n    if(orbitDirectoryAbortV6001===controller)orbitDirectoryAbortV6001=null;\n    const summary=summaryResult.status===\"fulfilled\"?summaryResult.value:(cached?.summary||orbitDirectorySummaryV567||null);if(summary)renderDirectorySummaryV560(summary);else if(summaryResult.status===\"rejected\"){const summaryBox=$(\"directorySummaryV560\");if(summaryBox)summaryBox.innerHTML='<div class=\"orbit-directory-summary-warning-v6001\">Directory counts are temporarily unavailable. The event view can still be used.</div>';}\n    if(dataResult.status!==\"fulfilled\"){\n      if(dataResult.reason?.code===\"ADMIN_REQUEST_CANCELLED\")return {success:false,cancelled:true};\n      if(cached){if(orbitDirectoryFilterV560===\"review_queue\")renderDirectoryReviewQueueV586(cached.items||[],cached.open??cached.items?.length??0,cached.reviewSummary||{});else if(orbitDirectoryFilterV560===\"duplicate\")renderDirectoryDuplicatesV586(cached.items||[]);else renderDirectoryEventsV560(cached.events||[],cached.pagination||{page,hasMore:false});renderDirectoryLocalErrorV6001(dataResult.reason,{stale:true});return {success:true,stale:true};}\n      renderDirectoryLocalErrorV6001(dataResult.reason);return {success:false,error:dataResult.reason};\n    }\n    const data=dataResult.value,events=data.events||[],items=data.items||[],open=Number(data.open??items.length),reviewSummary=data.summary||{},pagination=data.pagination||{page,limit:ORBIT_DIRECTORY_PAGE_SIZE_V6001,hasMore:false};\n    orbitDirectoryViewCacheV567.set(cacheKey,{summary,events,items,open,reviewSummary,pagination,expiresAt:Date.now()+8000});\n    if(orbitDirectoryFilterV560===\"review_queue\")renderDirectoryReviewQueueV586(items,open,reviewSummary);else if(orbitDirectoryFilterV560===\"duplicate\")renderDirectoryDuplicatesV586(items);else renderDirectoryEventsV560(events,pagination);\n    return data;\n  }\n\n\n\n\n  function directorySpendV625(run={}){\n    const s=run.spend||{},estimate=Number(s.estimatedUsd||0),settled=s.reconciledUsd==null?null:Number(s.reconciledUsd||0),input=Number(s.inputTokens||0),cached=Number(s.cachedInputTokens||0),output=Number(s.outputTokens||0),reasoning=Number(s.reasoningTokens||0),tools=Number(s.toolCalls||0),calls=Number(s.providerCalls||0),tokenUsd=Number(s.estimatedTokenUsd||0),toolUsd=Number(s.estimatedToolUsd||0),reconciliationAvailable=s.providerReconciliationAvailable!==false&&settled!=null,unattributedUsd=s.unattributedProviderSpendUsd==null?null:Number(s.unattributedProviderSpendUsd),unattributedCalls=Number(s.unattributedProviderCalls||0),legacy=s.attribution===\"legacy_time_window\";\n    const headline=s.reconciliationPending?`Estimated $${estimate.toFixed(3)} \u00B7 provider ledger settling`:reconciliationAvailable?`Provider ledger $${settled.toFixed(3)} \u00B7 usage estimate $${estimate.toFixed(3)}`:`Usage estimate $${estimate.toFixed(3)} \u00B7 provider reconciliation unavailable`;\n    const warning=!reconciliationAvailable?` <b class=\"orbit-directory-spend-warning-v627 is-unavailable\">PROVIDER RECONCILIATION UNAVAILABLE \u00B7 estimate is not settled spend</b>`:((unattributedUsd>.01||unattributedCalls>0)?` <b class=\"orbit-directory-spend-warning-v627\">UNATTRIBUTED PROVIDER SPEND \u00B7 $${Number(unattributedUsd||0).toFixed(3)} \u00B7 ${unattributedCalls} unmatched call${unattributedCalls===1?\"\":\"s\"}</b>`:(legacy?` <b class=\"orbit-directory-spend-warning-v627 is-legacy\">Legacy time-window attribution \u00B7 not exact run attribution</b>`:\"\"));\n    return `${headline} \u00B7 ${calls.toLocaleString(\"en-GB\")} provider call${calls===1?\"\":\"s\"} \u00B7 tokens ${Number(s.totalTokens||0).toLocaleString(\"en-GB\")} \u00B7 tools ${tools.toLocaleString(\"en-GB\")} \u00B7 token est. $${tokenUsd.toFixed(3)} \u00B7 tool est. $${toolUsd.toFixed(3)} \u00B7 in ${input.toLocaleString(\"en-GB\")} / cached ${cached.toLocaleString(\"en-GB\")} / out ${output.toLocaleString(\"en-GB\")} / reasoning ${reasoning.toLocaleString(\"en-GB\")}${warning}`;\n  }\n  function directoryModelRoutingMarkupV625(routing={}){const models=Array.isArray(routing.allowedModels)&&routing.allowedModels.length?routing.allowedModels:[\"gpt-6-luna\",\"gpt-6-sol\",\"gpt-6-astra\"],routes=Object.values(routing.routes||{});if(!routes.length)return \"\";const opts=(value,allowNone=false)=>`${allowNone?`<option value=\"\">None</option>`:\"\"}${models.map(m=>`<option value=\"${esc(m)}\" ${m===value?\"selected\":\"\"}>${esc(m.replace(\"gpt-6-\",\"GPT-6 \"))}</option>`).join(\"\")}`;return `<details class=\"orbit-directory-model-routing-v626\"><summary><span><small>DIRECTORY MODEL ROUTING</small><strong>Luna / Sol / Astra policy</strong></span><span>Directory only</span></summary><div class=\"orbit-directory-model-routing-grid-v626\">${routes.map(r=>`<label><span>${esc(r.label||r.key)}</span><small>Default</small><select data-directory-model-default-v625=\"${esc(r.key)}\">${opts(r.defaultModel,false)}</select><small>Escalation</small><select data-directory-model-escalation-v625=\"${esc(r.key)}\">${opts(r.escalationModel||\"\",true)}</select></label>`).join(\"\")}</div><div class=\"orbit-directory-model-routing-actions-v626\"><span>Changes affect CardShowIndex Directory work only.</span><button type=\"button\" class=\"secondary\" data-directory-model-save-v625>Save routing</button></div></details>`;}\n  async function saveDirectoryModelRoutingV625(button){const box=$(\"directoryControlCentreV625\"),routes={};box?.querySelectorAll(\"[data-directory-model-default-v625]\").forEach(sel=>{const key=sel.dataset.directoryModelDefaultV625;routes[key]??={};routes[key].defaultModel=sel.value;});box?.querySelectorAll(\"[data-directory-model-escalation-v625]\").forEach(sel=>{const key=sel.dataset.directoryModelEscalationV625;routes[key]??={};routes[key].escalationModel=sel.value||null;});setLoading(button,true);try{await api(\"/api/admin/directory/model-routing\",{method:\"POST\",body:JSON.stringify({routes}),cacheMs:0,timeoutMs:15000});setNotice(\"Directory model routing saved. New manual runs will use the selected policy.\");await loadDirectoryControlCentreV625(true);}finally{setLoading(button,false);}}\n  function directoryRunControlsV625(run={}){const st=String(run.status||\"\").toLowerCase(),display=String(run.displayStatus||st).toLowerCase();if(!run.id)return \"\";if([\"pausing\",\"stopping\"].includes(display))return `<div class=\"orbit-directory-agent-controls-v626\"><span class=\"orbit-directory-control-pending-v626\">${display===\"pausing\"?\"Pausing after current in-flight work\u2026\":\"Stopping after current in-flight work\u2026\"}</span></div>`;if([\"queued\",\"running\"].includes(st))return `<div class=\"orbit-directory-agent-controls-v626\"><button type=\"button\" class=\"secondary\" data-directory-run-control-v625=\"pause\" data-directory-run-id-v625=\"${esc(run.id)}\">Pause</button><button type=\"button\" class=\"secondary danger\" data-directory-run-control-v625=\"stop\" data-directory-run-id-v625=\"${esc(run.id)}\">Stop</button></div>`;if(st===\"paused\")return `<div class=\"orbit-directory-agent-controls-v626\"><button type=\"button\" data-directory-run-control-v625=\"resume\" data-directory-run-id-v625=\"${esc(run.id)}\">Resume</button><button type=\"button\" class=\"secondary danger\" data-directory-run-control-v625=\"stop\" data-directory-run-id-v625=\"${esc(run.id)}\">Stop</button></div>`;return \"\";}\n  function directoryDiscoveryCountersV626(run={}){const m=run.metrics||{},p=run.progress||{};if(!Number(m.found||m.created||m.merged||m.rejected||m.sourceTasksTotal||p.total))return \"\";return `<div class=\"orbit-directory-discovery-counters-v626\"><span><small>Sources</small><strong>${Number(m.sourceTasksCompleted||p.completed||0)} / ${Number(m.sourceTasksTotal||p.total||0)}</strong></span><span><small>Candidates</small><strong>${Number(m.found||0)}</strong></span><span><small>New</small><strong>${Number(m.created||0)}</strong></span><span><small>Existing</small><strong>${Number(m.merged||0)}</strong></span><span><small>Rejected</small><strong>${Number(m.rejected||0)}</strong></span><span><small>Failed / zero</small><strong>${Number(m.sourceTasksFailed||0)} / ${Number(m.sourceTasksZero||0)}</strong></span></div>`;}\n  function directorySourceOutcomesV626(run={}){const finalRows=Array.isArray(run.resultBreakdown?.sources)?run.resultBreakdown.sources:[],activity=(Array.isArray(run.activity)?run.activity:[]).filter(x=>Number(x.found||x.created||x.merged||x.rejected)||x.error||x.zeroReason||x.sourceUrl).slice(-12).reverse(),rows=finalRows.length?finalRows.slice(-12).reverse():activity;if(!rows.length)return \"\";return `<div class=\"orbit-directory-source-outcomes-v626\"><div class=\"orbit-directory-subhead-v626\"><strong>Recent source outcomes</strong><span>What Discovery actually found or why a source failed</span></div>${rows.map(x=>{const name=x.taskLabel||x.targetTitle||x.sourceUrl||\"Source task\",found=Number(x.found||0),created=Number(x.created||0),merged=Number(x.merged||0),rejected=Number(x.rejected||0),reason=x.error||x.zeroReason||(!found?\"No candidates returned\":\"\");return `<article class=\"${x.error?\"is-error\":(!found?\"is-zero\":\"is-ok\")}\"><div><strong>${esc(name)}</strong>${x.sourceUrl?`<small>${esc(x.sourceUrl)}</small>`:\"\"}</div><span>${found} found \u00B7 ${created} new \u00B7 ${merged} existing \u00B7 ${rejected} rejected${reason?` \u00B7 ${esc(reason)}`:\"\"}</span></article>`;}).join(\"\")}</div>`;}\n  function directoryLiveRunMarkupV625(payload={}){const run=(Array.isArray(payload.runs)?payload.runs:[]).find(r=>[\"queued\",\"running\",\"paused\"].includes(String(r.status||\"\").toLowerCase()));if(!run)return \"\";const activity=(Array.isArray(run.activity)?run.activity:[]).slice(-8).reverse(),progress=run.progress||{},pct=Number(progress.total)>0?Math.min(100,Math.round(Number(progress.completed||0)/Number(progress.total)*100)):0;return `<section class=\"orbit-directory-live-run-v626\"><div class=\"orbit-directory-live-run-head-v626\"><div><small>LIVE RUN CONSOLE</small><strong>${esc(run.label||run.agentId||\"Directory component\")}</strong><span>${esc(String(run.displayStatus||run.status||\"running\").replace(/_/g,\" \"))}</span></div><div class=\"orbit-directory-live-progress-number-v626\">${Number(progress.total||0)?`${Number(progress.completed||0)} / ${Number(progress.total||0)}`:\"Working\"}</div></div>${Number(progress.total||0)?`<div class=\"orbit-directory-live-progress-v626\"><i style=\"width:${pct}%\"></i></div>`:\"\"}<div class=\"orbit-directory-live-grid-v626\"><div><small>Current step</small><strong>${esc(run.currentStep||\"Starting\")}</strong></div><div><small>Current record / task</small><strong>${esc(run.currentTarget?.title||run.currentTarget?.id||\"Waiting for first item\")}</strong></div><div><small>Current source</small><strong>${esc(run.currentSource||\"No source reported yet\")}</strong></div><div><small>Configured model</small><strong>${esc(run.model||\"deterministic\")}</strong></div></div><div class=\"orbit-directory-live-spend-v626\"><strong>Live provider usage</strong><span>${directorySpendV625(run)}</span></div>${run.agentId===\"event-planner-discovery\"?directoryDiscoveryCountersV626(run):\"\"}${activity.length?`<ol class=\"orbit-directory-live-timeline-v626\">${activity.map(item=>`<li><time>${esc(prettyDate(item.at||\"\"))}</time><span>${esc(String(item.phase||\"working\").replace(/_/g,\" \"))}${item.targetTitle?` \u00B7 ${esc(item.targetTitle)}`:\"\"}${Number(item.found||0)||Number(item.created||0)||Number(item.merged||0)?` \u00B7 ${Number(item.found||0)} found / ${Number(item.created||0)} new / ${Number(item.merged||0)} existing`:\"\"}${item.error?` \u00B7 ${esc(item.error)}`:\"\"}</span></li>`).join(\"\")}</ol>`:`<small class=\"orbit-directory-live-empty-v626\">Activity will appear as the component reaches records or sources.</small>`}${run.agentId===\"event-planner-discovery\"?directorySourceOutcomesV626(run):\"\"}${directoryRunControlsV625(run)}</section>`;}\n  function directoryPublicationFunnelV627(run={}){const f=run.resultBreakdown?.funnel;if(!f)return \"\";const blockers=Array.isArray(f.topBlockers)?f.topBlockers.slice(0,5):[];return `<div class=\"orbit-directory-publication-funnel-v627\"><strong>Publication funnel</strong><span>${Number(f.unpublished||0)} unpublished \u2192 ${Number(f.ready||0)} ready \u2192 ${Number(f.attempted||0)} attempted \u2192 ${Number(f.published||0)} published</span>${blockers.length?`<small>Top blockers: ${blockers.map(x=>`${esc(x.reason||\"unknown\")} (${Number(x.count||0)})`).join(\" \u00B7 \")}</small>`:\"\"}</div>`;}\n  function directoryAgentCardV626(a,lock={}){const r=a.lastRun||{},busy=[\"queued\",\"running\",\"paused\"].includes(String(r.status||\"\")),display=String(r.displayStatus||r.status||\"Not run\").replace(/_/g,\" \"),m=r.metrics||{},isDiscovery=a.id===\"event-planner-discovery\",prefix=a.order?`${a.order} \u00B7 `:(a.supporting?\"SUPPORTING \u00B7 \":\"\");return `<article class=\"orbit-directory-agent-card-v626 ${busy?\"is-active\":\"\"} ${a.supporting?\"is-supporting-v627\":\"\"}\"><div class=\"orbit-directory-agent-card-head-v626\"><div><small>${esc(prefix+(a.stage||\"Directory\"))}</small><strong>${esc(a.label||a.id)}</strong></div><span>${esc(a.model||\"configurable\")}</span></div><p>${esc(a.description||\"\")}</p>${r.id?`<div class=\"orbit-directory-agent-last-v626\"><div><b>${esc(display)}</b><small>${r.updatedAt?`Updated ${esc(prettyDate(r.updatedAt))}`:\"\"}</small></div><span>${directorySpendV625(r)}</span>${isDiscovery?directoryDiscoveryCountersV626(r):`<span>${Number(m.attempted||0)} attempted \u00B7 ${Number(m.solved||0)} solved \u00B7 ${Number(m.blocked||0)} blocked \u00B7 ${Number(m.failed||0)} failed</span>`}${r.message?`<small>${esc(r.message)}</small>`:\"\"}${a.id===\"directory-auto-publisher\"?directoryPublicationFunnelV627(r):\"\"}</div>`:'<div class=\"orbit-directory-agent-last-v626\"><span>Not manually proven yet.</span></div>'}${directoryRunControlsV625(r)}<button type=\"button\" ${lock.active&&!busy?\"disabled\":\"\"} data-directory-agent-run-v625=\"${esc(a.id)}\">Run manually</button>${isDiscovery&&r.id?directorySourceOutcomesV626(r):\"\"}</article>`;}\n  function renderDirectoryControlCentreV625(payload={}){const box=$(\"directoryControlCentreV625\");if(!box)return;const f=payload.forensics||{},providerCost=f.providerCostReconciliation||{},lock=payload.executionLock||{},queue=f.queues||{},signals=Array.isArray(f.signals)?f.signals:[],progress=f.progress||{},agents=Array.isArray(payload.agents)?payload.agents:[],forensicsAgent=agents.find(a=>a.id===\"pipeline-forensics\"),coreAgents=agents.filter(a=>a.coreStage&&!['pipeline-forensics','directory-pipeline'].includes(a.id)),supportingAgents=agents.filter(a=>a.supporting&&!['directory-pipeline'].includes(a.id));const stageRows=[[\"Discovered\",progress.candidate],[\"Enriched\",progress.enrichment],[\"Geography\",progress.geography],[\"Images\",progress.image],[\"Organiser\",progress.organiser],[\"Dedupe\",progress.dedupe],[\"Published\",progress.publication]];box.innerHTML=`<div class=\"orbit-directory-control-head-v626\"><div><p class=\"orbit-kicker\">DIRECTORY CONTROL CENTRE</p><h2>Small-pipeline proving</h2><p>V648 separates Discovery, Canonical Identity, Enrichment, Truth/Publication and SEO so one bad resolver cannot hide inside a multi-hour run. Paid research comes only after deterministic/cache work.</p><button type=\"button\" class=\"secondary\" data-directory-open-analytics-v628>Open Directory Analytics &amp; Search Console</button></div><div class=\"orbit-directory-manual-state-v626\"><strong>Schedules OFF</strong><span>${lock.active?`Active: ${esc(lock.agentId||\"Directory component\")}`:\"Ready for one manual run\"}</span></div></div>${directoryLiveRunMarkupV625(payload)}<section class=\"orbit-directory-forensics-panel-v626\"><div class=\"orbit-directory-section-title-v626\"><div><p class=\"orbit-kicker\">1 \u00B7 PIPELINE FORENSICS</p><h3>Where the Directory is stuck</h3><p>Read-only diagnostics before state-changing work. No paid AI and no canonical writes.</p></div><button type=\"button\" class=\"secondary\" data-directory-agent-run-v625=\"${esc(forensicsAgent?.id||\"pipeline-forensics\")}\">Refresh forensics</button></div>${signals.length?`<div class=\"orbit-directory-forensic-signals-v626\">${signals.slice(0,6).map(x=>`<article class=\"is-${esc(x.severity||\"info\")}\"><strong>${esc(String(x.code||\"signal\").replace(/_/g,\" \"))}</strong><span>${esc(x.message||\"\")}</span></article>`).join(\"\")}</div>`:\"\"}<div class=\"orbit-directory-forensics-v626\"><article><small>Unpublished queue</small><strong>${Number(queue.total||0).toLocaleString(\"en-GB\")}</strong><span>${queue.oldest?`Oldest: ${esc(queue.oldest.title||queue.oldest.eventId)} \u00B7 ${esc(prettyDate(queue.oldest.waitingSince||\"\"))}`:\"No waiting record\"}</span></article><article><small>Coverage cursor</small><strong>${Number(f.crawlState?.cursor||0)}</strong><span>Sweep ${Number(f.crawlState?.sweepNumber||0)} \u00B7 last found ${Number(f.crawlState?.lastFound||0)}</span></article><article><small>7-day Directory AI</small><strong>$${Number(f.usage?.estimatedSpendUsd||0).toFixed(2)}</strong><span>${Number(f.usage?.totalTokens||0).toLocaleString(\"en-GB\")} tokens \u00B7 ${Number(f.usage?.webSearchCalls||0)+Number(f.usage?.imageWebSearchCalls||0)} search calls</span></article><article class=\"${providerCost.reconciliationAvailable===false||providerCost.providerCostUsd==null?\"is-cost-warning-v627\":(Number(providerCost.unattributedProviderSpendUsd||0)>.01?\"is-cost-warning-v627\":\"\")}\"><small>Provider reconciliation</small><strong>${providerCost.providerCostUsd==null?\"Unavailable \u00B7 not $0\":`$${Number(providerCost.providerCostUsd||0).toFixed(2)} provider`}</strong><span>${providerCost.providerCostUsd==null?`Provider cost is not connected or could not be read. Orbit estimate $${Number(providerCost.usageEstimatedUsd||f.usage?.estimatedSpendUsd||0).toFixed(2)} is not settled provider spend.`:(Number(providerCost.unattributedProviderSpendUsd||0)>.01?`UNATTRIBUTED PROVIDER SPEND $${Number(providerCost.unattributedProviderSpendUsd||0).toFixed(3)}`:`Orbit ledger $${Number(providerCost.settledLedgerUsd||0).toFixed(2)} \u00B7 ${esc(providerCost.providerScope||\"provider scope\")}`)}</span>${providerCost.providerError?`<small>${esc(providerCost.providerError)}</small>`:(providerCost.scopeWarning?`<small>${esc(providerCost.scopeWarning)}</small>`:\"\")}</article><article><small>Top blocker</small><strong>${esc(queue.publicationBlockers?.[0]?.reason||\"None\")}</strong><span>${Number(queue.publicationBlockers?.[0]?.count||0).toLocaleString(\"en-GB\")} record${Number(queue.publicationBlockers?.[0]?.count||0)===1?\"\":\"s\"}</span></article></div><div class=\"orbit-directory-progress-strip-v626\">${stageRows.map(([label,row])=>`<div><small>${esc(label)}</small><strong>${row?.at?esc(prettyDate(row.at)):\"No progress\"}</strong></div>`).join(\"\")}</div></section>${directoryModelRoutingMarkupV625(payload.modelRouting||{})}<div class=\"orbit-directory-section-title-v626\"><div><p class=\"orbit-kicker\">ADVANCED INDIVIDUAL AGENTS</p><h3>Resolver-level diagnostics</h3><p>Use these when diagnosing one resolver. The primary V648 workflow is the small pipeline cards below, not the legacy full pipeline.</p></div></div><div class=\"orbit-directory-agent-grid-v626\">${coreAgents.map(a=>directoryAgentCardV626(a,lock)).join(\"\")}</div>${supportingAgents.length?`<div class=\"orbit-directory-section-title-v626 orbit-directory-supporting-title-v627\"><div><p class=\"orbit-kicker\">SUPPORTING RESEARCH</p><h3>Optional tools outside the core pipeline</h3><p>Use these deliberately. They do not change the proven numbered Full Pipeline order.</p></div></div><div class=\"orbit-directory-agent-grid-v626\">${supportingAgents.map(a=>directoryAgentCardV626(a,lock)).join(\"\")}</div>`:\"\"}`;}\n  function directorySplitBudgetV648(run={}){const b=run.budget||{},settled=Number(b.settledUsd??b.spendUsd??0),reserved=Number(b.reservedUsd??0);return (settled||reserved)?`$${settled.toFixed(2)} settled${reserved?` + $${reserved.toFixed(2)} reserved`:\"\"}`:\"$0.00 / deterministic or no paid usage\";}\n  function directorySplitResultItemsV649(result={}){const items=Array.isArray(result.items)?result.items:[];if(!items.length)return \"\";const timing=result.researchTiming||{},timingLabel=Number(timing.batchDurationMs||0)?` \u00B7 research batch ${(Number(timing.batchDurationMs)/1000).toFixed(1)}s \u00B7 p50 ${(Number(timing.p50DurationMs||0)/1000).toFixed(1)}s \u00B7 p95 ${(Number(timing.p95DurationMs||0)/1000).toFixed(1)}s`:\"\";return `<details class=\"orbit-directory-model-routing-v626\"><summary><span><small>EXACT RECORD OUTCOMES</small><strong>View ${items.length} processed record${items.length===1?\"\":\"s\"}</strong></span><span>${Number(result.published||0)} published${esc(timingLabel)}</span></summary><div class=\"orbit-directory-source-outcomes-v626\">${items.map(item=>{const status=String(item.status||\"checked\"),isBad=[\"failed\",\"review\",\"rejected\",\"exclusion_review\"].includes(status),url=String(item.publicUrl||\"\"),blockers=[...(item.blockersAfter||item.blockers||item.remainingPublicationBlockers||[])].filter(Boolean),reason=item.reason||\"\",title=item.title||item.eventId||\"Directory record\",research=(item.evidence||[]).find(x=>x.step===\"event_research\"),elapsed=Number(research?.durationMs||research?.timings?.totalMs||0);return `<article class=\"${isBad?\"is-error\":\"is-ok\"}\"><div><strong>${url?`<a href=\"${esc(url)}\" target=\"_blank\" rel=\"noopener\">${esc(title)}</a>`:esc(title)}</strong><small>${esc(item.eventId||\"\")}${item.nextStage?` \u00B7 next ${esc(item.nextStage)}`:\"\"}${elapsed?` \u00B7 research ${(elapsed/1000).toFixed(1)}s`:\"\"}</small></div><span>${esc(status.replace(/_/g,\" \"))}${blockers.length?` \u00B7 blockers: ${esc(blockers.join(\", \"))}`:\"\"}${reason?` \u00B7 ${esc(reason)}`:\"\"}</span></article>`;}).join(\"\")}</div></details>`;}\n  function directorySplitCopyTextV657(run={},payload={}){const result=run.result||{},pipeline=(payload.pipelines||[]).find(p=>p.key===run.pipelineKey)||{},cohort=payload.cohort||{},items=Array.isArray(result.items)?result.items:[],steps=Array.isArray(result.steps)?result.steps:[],lines=[`CardShowIndex ${ORBIT_RELEASE} proving result`,`Stage: ${pipeline.order?pipeline.order+\" \u00B7 \":\"\"}${pipeline.label||run.label||run.pipelineKey||\"Directory stage\"}`,`Pipeline key: ${run.pipelineKey||\"\"}`,`Cohort: ${run.cohortId||cohort.id||\"none\"}`,`Run ID: ${run.id||\"\"}`,`Status: ${run.status||\"unknown\"}`,`Started: ${run.startedAt||\"\"}`,`Completed: ${run.completedAt||\"\"}`,`Budget: ${directorySplitBudgetV648(run)}`,`Result: ${Number(result.selected||0)} selected \u00B7 ${Number(result.solved||0)} solved \u00B7 ${Number(result.retrying||0)} retrying \u00B7 ${Number(result.exclusionReview||0)} exclusion review \u00B7 ${Number(result.reviewed||0)} human review \u00B7 ${Number(result.failed||0)} failed \u00B7 ${Number(result.published||0)} published${Number(result.deduped||0)?` \u00B7 ${Number(result.deduped)} deduped`:\"\"}`];if(steps.length){lines.push(\"\",\"Steps:\");for(const step of steps)lines.push(`- ${step.name||\"step\"}: ${step.status||\"completed\"} \u00B7 requested ${Number(step.requested||0)} \u00B7 resolved ${Number(step.resolved||0)} \u00B7 review ${Number(step.review||0)} \u00B7 rejected ${Number(step.rejected||0)} \u00B7 failed ${Number(step.failed||0)}${step.error?` \u00B7 ${step.error}`:\"\"}`);}if(items.length){lines.push(\"\",\"Exact records:\");for(const item of items){const blockers=[...(item.blockersAfter||item.blockers||item.remainingPublicationBlockers||[])].filter(Boolean),parts=[`- ${item.title||item.eventId||\"Directory record\"}`,`[${item.eventId||\"no id\"}]`,`=> ${String(item.status||\"checked\").replace(/_/g,\" \")}`];if(item.nextStage)parts.push(`next ${item.nextStage}`);if(blockers.length)parts.push(`blockers: ${blockers.join(\", \")}`);if(item.reason)parts.push(item.reason);if(item.publicUrl)parts.push(`public: ${item.publicUrl}`);if(item.ticketUrl)parts.push(`ticket: ${item.ticketUrl}`);lines.push(parts.join(\" \u00B7 \"));}}return lines.join(\"\\n\");}\n  async function copyDirectorySplitResultV657(runId,button){const payload=orbitDirectorySplitPayloadV657||{},run=(payload.runs||[]).find(r=>String(r.id)===String(runId))||(payload.pipelines||[]).map(p=>p.lastRun).find(r=>r&&String(r.id)===String(runId));if(!run)throw new Error(\"That pipeline result is no longer loaded. Refresh and try again.\");const textValue=directorySplitCopyTextV657(run,payload);if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(textValue);else{const area=document.createElement(\"textarea\");area.value=textValue;area.setAttribute(\"readonly\",\"\");area.style.position=\"fixed\";area.style.opacity=\"0\";document.body.appendChild(area);area.select();document.execCommand(\"copy\");area.remove();}const original=button?.textContent;if(button){button.textContent=\"Copied \u2713\";window.setTimeout(()=>{button.textContent=original||\"Copy result\";},1200);}setNotice(\"Pipeline result copied. Paste it straight into ChatGPT.\");return textValue;}\n  function renderDirectorySplitV648(payload={}){const box=$(\"directorySplitPipelinesV648\");if(!box)return;orbitDirectorySplitPayloadV657=payload;const all=Array.isArray(payload.pipelines)?payload.pipelines:[],primary=all.filter(p=>p.primary).sort((a,b)=>Number(a.order||99)-Number(b.order||99)),support=all.filter(p=>!p.primary),cohort=payload.cohort||{},cc=cohort.counts||{},cohortSummary=cohort.id?`${Number(cohort.claimed||0)}/${Number(cohort.target||25)} claimed \u00B7 ${Number(cc.intake||0)} Intake \u00B7 ${Number(cc.canonical||0)} Identity \u00B7 ${Number(cc.enrichment||0)} Enrichment \u00B7 ${Number(cc.truth||0)} Truth \u00B7 ${Number(cc.publication||0)} Publication \u00B7 ${Number(cc.published||0)} published \u00B7 ${Number(cc.exclusionReview||0)} exclusion review \u00B7 ${Number(cc.humanReview||0)} human review \u00B7 ${Number(cc.deduped||0)} deduped`:`No active proving cohort. Start at Stage 1.`;const card=p=>{const r=p.lastRun||{},busy=[\"queued\",\"running\",\"stopping\"].includes(String(r.status||\"\")),result=r.result||{},progress=r.progress||{},selection=r.selection||{},selected=Number(result.selected??progress.selected??selection.count??0),claimed=Number(result.claimed??selection.claimed??0),claimSkipped=Number(result.claimSkipped??selection.claimSkipped??0),deferred=Number(result.deferred??selection.deferred??0),paidResearchRequested=Number(result.paidResearchRequested??0),solved=Number(result.solved??progress.solved??0),reviewed=Number(result.reviewed??progress.reviewed??0),exclusionReview=Number(result.exclusionReview??progress.exclusionReview??0),retrying=Number(result.retrying??progress.retrying??0),failed=Number(result.failed??progress.failed??0),rejected=Number(result.rejected??progress.rejected??0),published=Number(result.published??progress.published??0),deduped=Number(result.deduped??progress.deduped??0),eligible=p.eligible==null?\"\u2014\":Number(p.eligible).toLocaleString(\"en-GB\"),sub=p.key===\"enrichment\",progressText=busy&&progress.currentStep?` \u00B7 ${esc(String(progress.currentStep).replace(/_/g,\" \"))}${Number(progress.researchTotal||0)?` ${Number(progress.researchCompleted||0)}/${Number(progress.researchTotal||0)}`:\"\"}`:\"\",stageLabel=p.order?`${p.order} \u00B7 ${String(p.key||\"\").toUpperCase()}`:String(p.key||\"\").toUpperCase(),runControls=busy?`<button type=\"button\" class=\"secondary danger\" data-directory-split-stop-v648=\"${esc(r.id)}\" ${String(r.status)===\"stopping\"?\"disabled\":\"\"}>${String(r.status)===\"stopping\"?\"Stopping\u2026\":\"Stop\"}</button>`:p.key===\"discovery\"?`<button type=\"button\" data-directory-split-run-v648=\"discovery\" data-directory-split-limit-v648=\"25\" data-directory-split-new-cohort-v657=\"true\" data-directory-split-cohort-source-v658=\"existing\">Load 25 existing candidates</button><button type=\"button\" class=\"secondary\" data-directory-split-run-v648=\"discovery\" data-directory-split-limit-v648=\"25\" data-directory-split-new-cohort-v657=\"true\" data-directory-split-cohort-source-v658=\"discovery\">Discover 25 new</button>`:`<button type=\"button\" data-directory-split-run-v648=\"${esc(p.key)}\" data-directory-split-limit-v648=\"25\">Run cohort (up to 25)</button>`;return `<article class=\"orbit-directory-agent-card-v626 ${busy?\"is-active\":\"\"}\"><div class=\"orbit-directory-agent-card-head-v626\"><div><small>${esc(stageLabel)}</small><strong>${esc(p.label||p.key)}</strong></div><span>${eligible} waiting</span></div><p>${esc(p.description||\"\")}</p>${r.id?`<div class=\"orbit-directory-agent-last-v626\"><div><b>${esc(String(r.status||\"not run\").replace(/_/g,\" \"))}</b><small>${r.completedAt?esc(prettyDate(r.completedAt)):esc(r.message||\"\")}${progressText}</small></div><span>${directorySplitBudgetV648(r)}</span><span>${selected} selected${p.key===\"enrichment\"?` \u00B7 ${claimed} claimed \u00B7 ${claimSkipped} claim-skipped \u00B7 ${deferred} cooling/deferred \u00B7 ${paidResearchRequested} paid-research candidates`:\"\"} \u00B7 ${solved} solved \u00B7 ${retrying} retrying \u00B7 ${exclusionReview} exclusion review \u00B7 ${reviewed} human review${deduped?` \u00B7 ${deduped} deduped`:\"\"}${rejected?` \u00B7 ${rejected} discovery rejected`:\"\"} \u00B7 ${failed} failed${published?` \u00B7 ${published} published`:\"\"}</span></div>${directorySplitResultItemsV649(result)}`:'<div class=\"orbit-directory-agent-last-v626\"><span>Not run for this active cohort yet.</span></div>'}<div class=\"orbit-directory-run-controls-v625\">${runControls}${r.id?`<button type=\"button\" class=\"secondary\" data-directory-split-copy-v657=\"${esc(r.id)}\">Copy result</button>`:\"\"}</div>${sub&&!busy?`<div class=\"orbit-directory-run-controls-v625\"><button type=\"button\" class=\"secondary\" data-directory-split-run-v648=\"enrichment\" data-directory-split-limit-v648=\"10\" data-directory-split-substage-v648=\"ticket\">10 Tickets</button><button type=\"button\" class=\"secondary\" data-directory-split-run-v648=\"enrichment\" data-directory-split-limit-v648=\"10\" data-directory-split-substage-v648=\"image\">10 Images</button><button type=\"button\" class=\"secondary\" data-directory-split-run-v648=\"enrichment\" data-directory-split-limit-v648=\"10\" data-directory-split-substage-v648=\"geography\">10 Geography</button></div>`:\"\"}</article>`;};const supportHtml=support.length?`<details class=\"orbit-panel\"><summary><strong>Outside the six-stage proving cohort</strong><span>Legacy backlog is parked; SEO and freshness remain separate from factual publication.</span></summary><div class=\"orbit-directory-agent-grid-v626\">${support.map(p=>`<article class=\"orbit-directory-agent-card-v626\"><div class=\"orbit-directory-agent-card-head-v626\"><div><small>${esc(p.postPublish?\"POST-PUBLICATION\":\"PARKED\")}</small><strong>${esc(p.label||p.key)}</strong></div><span>${p.eligible==null?\"\u2014\":Number(p.eligible).toLocaleString(\"en-GB\")}</span></div><p>${esc(p.description||\"\")}</p></article>`).join(\"\")}</div></details>`:\"\";box.innerHTML=`<div class=\"orbit-directory-section-title-v626\"><div><p class=\"orbit-kicker\">V662 FACTUAL PIPELINE PROVING</p><h3>Follow the same 25 records from Cohort Intake to Publication</h3><p>Stage 1 can instantly load 25 suitable unresolved candidates already in Orbit, or deliberately discover 25 new ones. Nothing enters paid enrichment until Intake has proved UK trading-card scope and Identity has resolved safe duplicates.</p></div><span>${cohort.id?esc(cohort.id):\"No cohort\"}</span></div><div class=\"orbit-info-banner\"><strong>${cohort.id?`Active cohort \u00B7 ${esc(cohort.id)}`:\"Start with Stage 1\"}</strong><span>${esc(cohortSummary)}</span></div><div class=\"orbit-directory-agent-grid-v626\">${primary.map(card).join(\"\")}</div>${supportHtml}`;}\n  async function loadDirectorySplitV648(force=false){const payload=await api(\"/api/admin/directory/split-pipelines/status\",{cacheMs:force?0:2000,timeoutMs:15000});orbitDirectorySplitPayloadV657=payload;renderDirectorySplitV648(payload);const running=(payload.runs||[]).some(r=>[\"queued\",\"running\",\"stopping\"].includes(String(r.status||\"\")));if(running&&!orbitDirectorySplitPollV648)orbitDirectorySplitPollV648=window.setInterval(()=>loadDirectorySplitV648(true).catch(()=>{}),2500);if(!running&&orbitDirectorySplitPollV648){window.clearInterval(orbitDirectorySplitPollV648);orbitDirectorySplitPollV648=null;}return payload;}\n  async function runDirectorySplitV648(key,limit,substage,button,newCohort=false,cohortSource=\"discovery\"){setLoading(button,true);try{const body={limit:String(limit)===\"all\"?\"all\":Number(limit)||10,substage:substage||\"all\",newCohort:newCohort===true,cohortSource:cohortSource===\"existing\"?\"existing\":\"discovery\"},result=await api(\"/api/admin/directory/split-pipelines/\"+encodeURIComponent(key)+\"/start\",{method:\"POST\",body:JSON.stringify(body),cacheMs:0,timeoutMs:15000});setNotice(result?.existing?\"That lane was already running, so Orbit kept the existing run.\":newCohort?(body.cohortSource===\"existing\"?\"Loading 25 existing candidates into the proving cohort.\":\"Discovering up to 25 new candidates for the proving cohort.\"):\"Cohort stage started.\");window.setTimeout(()=>loadDirectorySplitV648(true).catch(()=>{}),250);window.setTimeout(()=>loadDirectoryControlCentreV625(true).catch(()=>{}),500);return result;}finally{setLoading(button,false);}}\n  async function stopDirectorySplitV648(runId,button){setLoading(button,true);try{if(orbitDirectorySplitPollV648){window.clearInterval(orbitDirectorySplitPollV648);orbitDirectorySplitPollV648=null;}if(orbitDirectoryControlPollV625){window.clearInterval(orbitDirectoryControlPollV625);orbitDirectoryControlPollV625=null;}const result=await api(\"/api/admin/directory/split-pipelines/runs/\"+encodeURIComponent(runId)+\"/stop\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:15000});orbitReadUnavailableUntil=0;if(orbitDirectorySplitPayloadV657&&result?.run){const runs=(orbitDirectorySplitPayloadV657.runs||[]).map(row=>String(row.id)===String(runId)?{...row,...result.run}:row),pipelines=(orbitDirectorySplitPayloadV657.pipelines||[]).map(row=>row.lastRun&&String(row.lastRun.id)===String(runId)?{...row,lastRun:{...row.lastRun,...result.run}}:row);orbitDirectorySplitPayloadV657={...orbitDirectorySplitPayloadV657,runs,pipelines};renderDirectorySplitV648(orbitDirectorySplitPayloadV657);}setNotice(\"Directory stage stopped safely. No server outage was detected.\");window.setTimeout(()=>{orbitReadUnavailableUntil=0;loadDirectorySplitV648(true).catch(()=>{});loadDirectoryControlCentreV625(true).catch(()=>{});},1000);return result;}finally{setLoading(button,false);}}\n  function renderDirectoryExclusionsV654(pending=[],confirmed=[]){const box=$(\"directoryExclusionReviewV654\");if(!box)return;const card=x=>`<article class=\"orbit-directory-agent-card-v626\"><div class=\"orbit-directory-agent-card-head-v626\"><div><small>PROPOSED EXCLUSION</small><strong>${esc(x.eventTitle||\"Directory event\")}</strong></div><span>${x.eventDate?esc(directoryDateV560(x.eventDate)):\"\"}</span></div><p><b>${esc(String(x.reasonCode||\"review\").replace(/_/g,\" \"))}</b> \u00B7 ${esc(x.explanation||x.reason||\"Orbit proposes blocking this exact occurrence.\")}</p>${Array.isArray(x.evidence)&&x.evidence.length?`<div class=\"orbit-directory-run-evidence-v649\">${x.evidence.map(ev=>`<a href=\"${esc(ev.url||\"#\")}\" target=\"_blank\" rel=\"noopener\">${esc(ev.title||ev.role||\"Evidence source\")}</a>`).join(\" \u00B7 \")}</div>`:\"\"}<label><span>Evidence / note to send back</span><textarea rows=\"2\" data-directory-exclusion-note-v654=\"${esc(x.id||x.eventId)}\" placeholder=\"Optional: paste an official URL or explain why this should return to research.\"></textarea></label><div class=\"orbit-directory-run-controls-v625\"><button type=\"button\" class=\"danger\" data-directory-exclusion-confirm-v654=\"${esc(x.id)}\">Confirm block</button><button type=\"button\" class=\"secondary\" data-directory-exclusion-return-v654=\"${esc(x.id)}\">Return to pipeline</button></div></article>`;const blocked=x=>`<article class=\"orbit-directory-agent-card-v626\"><div class=\"orbit-directory-agent-card-head-v626\"><div><small>CONFIRMED BLOCK</small><strong>${esc(x.eventTitle||\"Directory event\")}</strong></div><span>${x.eventDate?esc(directoryDateV560(x.eventDate)):\"\"}</span></div><p>${esc(String(x.reasonCode||x.reason||\"confirmed exclusion\").replace(/_/g,\" \"))}</p><button type=\"button\" class=\"secondary\" data-directory-exclusion-reopen-v654=\"${esc(x.eventId)}\">Reopen</button></article>`;box.innerHTML=`<div class=\"orbit-directory-section-title-v626\"><div><p class=\"orbit-kicker\">EXCLUSION REVIEW</p><h3>Nothing leaves CardShowIndex silently</h3><p>Agents can propose an exclusion, but only you can confirm the permanent discovery block. Missing evidence returns to research instead. Confirmed blocks are retained as reversible exact-occurrence tombstones, never deleted.</p></div><span>${pending.length} awaiting decision</span></div>${pending.length?`<div class=\"orbit-directory-agent-grid-v626\">${pending.map(card).join(\"\")}</div>`:'<div class=\"orbit-info-banner\"><strong>No proposed exclusions</strong><span>There is nothing waiting to be permanently blocked.</span></div>'}${confirmed.length?`<details class=\"orbit-panel\"><summary><strong>Confirmed block list (${confirmed.length})</strong></summary><div class=\"orbit-directory-agent-grid-v626\">${confirmed.map(blocked).join(\"\")}</div></details>`:\"\"}`;}\n  async function loadDirectoryExclusionsV654(force=false){const [pending,confirmed]=await Promise.all([api(\"/api/admin/directory/exclusions?status=pending&limit=200\",{cacheMs:force?0:2000,timeoutMs:15000}),api(\"/api/admin/directory/exclusions?status=confirmed&limit=200\",{cacheMs:force?0:2000,timeoutMs:15000})]);renderDirectoryExclusionsV654(pending.items||[],confirmed.items||[]);return {pending,confirmed};}\n  async function directoryExclusionDecisionV654(id,action,button){setLoading(button,true);try{const note=$(\"directoryExclusionReviewV654\")?.querySelector(`[data-directory-exclusion-note-v654=\"${String(id)}\"]`)?.value||\"\",url=action===\"reopen\"?`/api/admin/directory/exclusions/events/${encodeURIComponent(id)}/reopen`:`/api/admin/directory/exclusions/${encodeURIComponent(id)}/${action===\"confirm\"?\"confirm\":\"return\"}`;await api(url,{method:\"POST\",body:JSON.stringify(action===\"return\"?{note,evidence:note}:{note}),cacheMs:0,timeoutMs:20000});setNotice(action===\"confirm\"?\"Event added to the confirmed exclusion list.\":action===\"reopen\"?\"Confirmed block reopened and returned to the pipeline.\":\"Event returned to the pipeline with your evidence.\");await Promise.all([loadDirectoryExclusionsV654(true),loadDirectorySplitV648(true)]);}finally{setLoading(button,false);}}\n  async function loadDirectoryControlCentreV625(force=false){const payload=await api(\"/api/admin/directory/control-centre\",{cacheMs:force?0:2500,timeoutMs:15000});renderDirectoryControlCentreV625(payload);loadDirectorySplitV648(force).catch(()=>{});loadDirectoryExclusionsV654(force).catch(()=>{});const running=(payload.runs||[]).some(r=>[\"queued\",\"running\",\"stopping\"].includes(String(r.status||\"\")))||payload.executionLock?.active;if(running&&!orbitDirectoryControlPollV625)orbitDirectoryControlPollV625=window.setInterval(()=>loadDirectoryControlCentreV625(true).catch(()=>{}),2500);if(!running&&orbitDirectoryControlPollV625){window.clearInterval(orbitDirectoryControlPollV625);orbitDirectoryControlPollV625=null;}return payload;}\n  async function runDirectoryAgentV625(agentId,button){if(agentId===\"directory-pipeline\")return runDirectoryPipelineV580(button);setLoading(button,true);try{const result=await api(\"/api/admin/directory/control-centre/\"+encodeURIComponent(agentId)+\"/run\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:20000});await loadDirectoryControlCentreV625(true);if(agentId!==\"pipeline-forensics\")loadDirectoryV560(true).catch(()=>{});return result;}finally{setLoading(button,false);}}\n  async function controlDirectoryRunV625(runId,action,button){setLoading(button,true);try{await api(\"/api/admin/directory/control-centre/runs/\"+encodeURIComponent(runId)+\"/\"+encodeURIComponent(action),{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:15000});await loadDirectoryControlCentreV625(true);}finally{setLoading(button,false);}}\n\n  function directoryPipelineCountV580(v){return Number(v||0).toLocaleString(\"en-GB\");}\n  function formatPipelineDurationV587(ms){const total=Math.max(0,Math.round(Number(ms||0)/1000)),m=Math.floor(total/60),s=total%60;if(m>=60)return `${Math.floor(m/60)}h ${m%60}m`;return m?`${m}m ${s}s`:`${s}s`;}\n  function directoryPipelineStageStatusV644(status){const value=String(status||\"pending\").toLowerCase();return [\"passed\",\"failed\",\"skipped\",\"aborted\",\"running\"].includes(value)?value:\"pending\";}\n  function directoryPipelineSummaryTextV644(run={}){const s=run.stageSummary||{};return `${Number(s.passed||0)} Passed \u00B7 ${Number(s.failed||0)} Failed \u00B7 ${Number(s.aborted||0)} Aborted \u00B7 ${Number(s.skipped||0)} Skipped`;}\n  function directoryPipelineStorageV644(key,value){try{if(value===undefined)return localStorage.getItem(key)||\"\";if(value===null)localStorage.removeItem(key);else localStorage.setItem(key,String(value));}catch(_e){}return \"\";}\n  function showDirectoryPipelineToastV644(run={}){\n    if(!run?.id)return;const summary=run.stageSummary||{},attention=String(run.outcome||\"\")===\"attention_needed\"||Number(summary.failed||0)>0||Number(summary.aborted||0)>0||String(run.status||\"\")===\"failed\";let toast=$(\"directoryPipelineGlobalToastV644\");\n    if(!toast){toast=document.createElement(\"aside\");toast.id=\"directoryPipelineGlobalToastV644\";toast.className=\"orbit-directory-pipeline-toast-v644\";toast.setAttribute(\"role\",\"status\");toast.setAttribute(\"aria-live\",\"polite\");document.body.appendChild(toast);}\n    toast.classList.toggle(\"is-attention\",attention);toast.innerHTML=`<div><strong>${attention?\"Pipeline complete \u2014 attention needed\":\"Directory pipeline run complete\"}</strong><span>${esc(directoryPipelineSummaryTextV644(run))}</span></div><div class=\"orbit-directory-pipeline-toast-actions-v644\"><button type=\"button\" data-directory-pipeline-view-v644>View results</button><button type=\"button\" class=\"secondary\" data-directory-pipeline-dismiss-v644 aria-label=\"Dismiss pipeline notification\">Dismiss</button></div>`;toast.hidden=false;\n    toast.querySelector(\"[data-directory-pipeline-view-v644]\")?.addEventListener(\"click\",()=>{toast.hidden=true;activateWorkspace(\"directory-control\");window.setTimeout(()=>$(\"directoryPipelineNoticeV580\")?.scrollIntoView({behavior:\"smooth\",block:\"start\"}),120);});toast.querySelector(\"[data-directory-pipeline-dismiss-v644]\")?.addEventListener(\"click\",()=>{toast.hidden=true;});\n  }\n  function trackDirectoryPipelineCompletionV644(payload={}){\n    const run=payload?.run;if(!run?.id)return;const terminal=[\"completed\",\"failed\",\"stopped\"].includes(String(run.status||\"\"));if(payload?.active===true||[\"queued\",\"running\",\"paused\"].includes(String(run.status||\"\"))){directoryPipelineStorageV644(\"orbitDirectoryActivePipelineRunV644\",run.id);return;}\n    const activeId=directoryPipelineStorageV644(\"orbitDirectoryActivePipelineRunV644\");if(!terminal||activeId!==String(run.id))return;const notified=directoryPipelineStorageV644(\"orbitDirectoryPipelineNotifiedV644\");if(notified!==String(run.id)){directoryPipelineStorageV644(\"orbitDirectoryPipelineNotifiedV644\",run.id);showDirectoryPipelineToastV644(run);}directoryPipelineStorageV644(\"orbitDirectoryActivePipelineRunV644\",null);\n  }\n  function renderDirectoryPipelineV580(payload={}){\n    const run=payload?.run||null,n=$(\"directoryPipelineNoticeV580\"),button=$(\"directoryRunPipelineV580\");\n    const status=String(run?.status||\"\").toLowerCase(),stopping=String(run?.controlRequested||\"\").toLowerCase()===\"stop\",active=payload?.active===true||[\"queued\",\"running\",\"paused\"].includes(status);trackDirectoryPipelineCompletionV644(payload);\n    if(button){button.disabled=active;button.textContent=active?(stopping?\"Stopping pipeline\u2026\":status===\"paused\"?\"Pipeline test paused\":\"Pipeline test running\u2026\"):\"Run full pipeline test\";button.setAttribute(\"aria-busy\",String(active&&status!==\"paused\"));}\n    if(!n||!run)return;n.hidden=false;const c=run.counts||{},stage=String(run.currentStage||run.status||\"queued\").replace(/[-_]/g,\" \"),percent=Math.max(0,Math.min(100,Number(run.stageProgress||0))),figures=`Queued ${directoryPipelineCountV580(c.queued)} \u00B7 New ${directoryPipelineCountV580(c.discovered)} \u00B7 Refreshed ${directoryPipelineCountV580(c.refreshed)} \u00B7 Enriched ${directoryPipelineCountV580(c.enriched)} \u00B7 Geography ${directoryPipelineCountV580(Number(c.venuesResolved||0)+Number(c.geocoded||0))} \u00B7 Copy ${directoryPipelineCountV580(c.copyPrepared)} \u00B7 Images ${directoryPipelineCountV580(c.imagesResolved)} \u00B7 Duplicates ${directoryPipelineCountV580(c.duplicatesMerged)} \u00B7 Published ${directoryPipelineCountV580(Math.max(Number(c.published||0),Number(c.netPublished||0)))} \u00B7 Failed ${directoryPipelineCountV580(c.failed)}`;\n    const title=stopping?`Pipeline stopping \u00B7 ${stage}`:status===\"paused\"?`Pipeline paused \u00B7 ${stage}`:(status===\"running\"||status===\"queued\"?`Pipeline running \u00B7 ${stage}`:(status===\"completed\"?(String(run.outcome||\"\")===\"attention_needed\"?\"Pipeline complete \u2014 attention needed\":\"Directory pipeline run complete\"):status===\"stopped\"?\"Directory pipeline stopped\":\"Directory pipeline stopped safely\")),bits=[];if(run.currentItem?.title||run.currentItem?.id)bits.push(`Current: ${run.currentItem.title||run.currentItem.id}`);const spent=Number(run.manualSpentUsd||0),reserved=Number(run.manualReservedUsd||0),stageKey=String(run.currentStage||\"\"),stageSpent=Number(run.stageSpentUsd?.[stageKey]||0);bits.push(`Total AI $${spent.toFixed(3)} settled \u00B7 $${reserved.toFixed(3)} reserved${stageKey?` \u00B7 current stage $${stageSpent.toFixed(3)} / $10 max`:\"\"}`);bits.push(`Elapsed ${formatPipelineDurationV587(run.elapsedMs)} \u00B7 no hard time cap while productive`);if(run.lastProgressAt)bits.push(`Last activity ${prettyDate(run.lastProgressAt)}`);\n    const canSkip=!stopping&&status===\"running\"&&Array.isArray(run.stages)&&run.stages.some(x=>String(x.key||\"\")===String(run.currentStage||\"\"));const controls=stopping?`<div class=\"orbit-directory-pipeline-controls-v625\"><button type=\"button\" class=\"secondary danger\" disabled aria-busy=\"true\">Stopping\u2026</button></div>`:[\"queued\",\"running\"].includes(status)?`<div class=\"orbit-directory-pipeline-controls-v625\">${canSkip?`<button type=\"button\" class=\"secondary\" data-pipeline-action-v625=\"skip\" data-pipeline-run-v625=\"${esc(run.id)}\">Skip this stage</button>`:\"\"}<button type=\"button\" class=\"secondary\" data-pipeline-action-v625=\"pause\" data-pipeline-run-v625=\"${esc(run.id)}\">Pause</button><button type=\"button\" class=\"secondary danger\" data-pipeline-action-v625=\"stop\" data-pipeline-run-v625=\"${esc(run.id)}\">Stop</button></div>`:status===\"paused\"?`<div class=\"orbit-directory-pipeline-controls-v625\"><button type=\"button\" data-pipeline-action-v625=\"resume\" data-pipeline-run-v625=\"${esc(run.id)}\">Resume</button><button type=\"button\" class=\"secondary danger\" data-pipeline-action-v625=\"stop\" data-pipeline-run-v625=\"${esc(run.id)}\">Stop</button></div>`:\"\";\n    const stages=Array.isArray(run.stages)?run.stages:[],stageRows=stages.map(item=>{const result=item.result||{},stageStatus=directoryPipelineStageStatusV644(result.status||(String(run.currentStage||\"\")===item.key&&status===\"running\"?\"running\":\"pending\")),policy=item.policy||{},cost=result.aiSpentUsd==null?Number(run.stageSpentUsd?.[item.key]||0):Number(result.aiSpentUsd||0),reason=result.reason?String(result.reason).replace(/_/g,\" \"):\"\",time=result.durationMs!=null?formatPipelineDurationV587(result.durationMs):(stageStatus===\"running\"?formatPipelineDurationV587(Math.max(0,Date.now()-Date.parse(result.startedAt||run.stageStartedAt||run.startedAt||Date.now()))):\"\u2014\"),effectiveness=result.effectiveness&&result.effectiveness!==\"productive\"?String(result.effectiveness).replace(/_/g,\" \"):\"\",aiMeta=Number(policy.aiBudgetUsd||0)>0?`AI $${cost.toFixed(3)} / $10 max`:\"Deterministic \u00B7 $0 AI\",detail=[time,aiMeta,effectiveness,reason].filter(Boolean).join(\" \u00B7 \");return `<article class=\"orbit-directory-pipeline-stage-v644 orbit-directory-pipeline-stage-v645 is-${esc(stageStatus)}\"><div class=\"orbit-directory-stage-id-v645\"><small>${esc(item.order||\"\")}</small><strong>${esc(item.label||item.key||\"\")}</strong></div><span class=\"orbit-directory-pipeline-stage-pill-v644\">${esc(stageStatus.replace(/_/g,\" \"))}</span><small class=\"orbit-directory-stage-meta-v645\">${esc(detail)}</small></article>`;}).join(\"\");\n    n.classList.toggle(\"is-running\",[\"queued\",\"running\"].includes(status));n.classList.toggle(\"is-failed\",status===\"failed\"||String(run.outcome||\"\")===\"attention_needed\");n.classList.toggle(\"is-stalled\",Boolean(run.stalled));const icon=[\"queued\",\"running\"].includes(status)?'<span class=\"orbit-directory-pipeline-spinner-v587 is-active\" aria-hidden=\"true\"></span>':status===\"completed\"&&String(run.outcome||\"\")!==\"attention_needed\"?'<span class=\"orbit-directory-pipeline-complete-v588\" aria-hidden=\"true\">\u2713</span>':'<span class=\"orbit-directory-pipeline-stopped-v588\" aria-hidden=\"true\">!</span>';\n    n.innerHTML=`<div class=\"orbit-directory-pipeline-head-v587\">${icon}<div><strong>${esc(title)}</strong><small>${esc(`${Number(run.completedStages||0)} of ${Number(run.totalStages||17)} numbered stages complete \u00B7 ${Number(run.completedSteps??run.completedStages??0)} of ${Number(run.totalSteps??run.totalStages??0)} execution steps \u00B7 ${directoryPipelineSummaryTextV644(run)}`)}</small></div><b>${Math.round(percent)}%</b></div><div class=\"orbit-directory-pipeline-progress-v587\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"${Math.round(percent)}\"><i style=\"width:${percent}%\"></i></div><span>${esc(figures)}</span><small>${esc(bits.join(\" \u00B7 \"))}</small>${run.message?`<small>${esc(run.message)}</small>`:\"\"}${controls}${stageRows?`<div class=\"orbit-directory-pipeline-stages-v644 orbit-directory-pipeline-stages-v645\">${stageRows}</div>`:\"\"}`;\n    n.querySelectorAll(\"[data-pipeline-action-v625]\").forEach(b=>b.addEventListener(\"click\",()=>controlDirectoryPipelineV625(b.dataset.pipelineRunV625,b.dataset.pipelineActionV625,b).catch(err=>setNotice(err.message||err,true))));\n  }\n  async function controlDirectoryPipelineV625(runId,action,button){setLoading(button,true);try{const payload=await api(`/api/admin/directory/pipeline/${encodeURIComponent(runId)}/${encodeURIComponent(action)}`,{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:15000});renderDirectoryPipelineV580({...payload,active:[\"queued\",\"running\",\"paused\"].includes(String(payload?.run?.status||\"\"))});if([\"resume\",\"skip\"].includes(action))startDirectoryPipelinePollV580();if(state.currentModule===\"directory\")await loadDirectoryControlCentreV625(true).catch(()=>{});}finally{setLoading(button,false);}}\n\n  function stopDirectoryPipelinePollV580(){if(orbitDirectoryPipelinePollV580){window.clearInterval(orbitDirectoryPipelinePollV580);orbitDirectoryPipelinePollV580=null;}}\n  async function pollDirectoryPipelineV580(){\n    try{\n      const payload=await api(\"/api/admin/directory/pipeline/status\",{cacheMs:0,timeoutMs:12000});renderDirectoryPipelineV580(payload);orbitDirectoryPipelinePollTickV580++;\n      if(payload?.active===true){if(state.currentModule===\"directory\"&&orbitDirectoryPipelinePollTickV580%3===0)await loadDirectoryV560(true,{keepPage:true}).catch(()=>{});return payload;}\n      stopDirectoryPipelinePollV580();if(state.currentModule===\"directory\")await loadDirectoryV560(true,{keepPage:true}).catch(()=>{});return payload;\n    }catch(error){const n=$(\"directoryPipelineNoticeV580\");if(n&&state.currentModule===\"directory\"){n.hidden=false;n.innerHTML=`<strong>Pipeline status temporarily unavailable</strong><span>${esc(error.message||error)}. The server-side job is not cancelled; Orbit will keep checking.</span>`;}return null;}\n  }\n  function startDirectoryPipelinePollV580(){stopDirectoryPipelinePollV580();orbitDirectoryPipelinePollTickV580=0;orbitDirectoryPipelinePollV580=window.setInterval(()=>pollDirectoryPipelineV580().catch(()=>{}),4000);}\n  async function resumeDirectoryPipelineV580(){const payload=await pollDirectoryPipelineV580();if(payload?.active===true)startDirectoryPipelinePollV580();return payload;}\n  async function runDirectoryPipelineV580(button){\n    if(button){button.disabled=true;button.textContent=\"Starting pipeline test\u2026\";button.setAttribute(\"aria-busy\",\"true\");}const n=$(\"directoryPipelineNoticeV580\");if(n){n.hidden=false;n.classList.add(\"is-running\");n.innerHTML='<strong>Starting Directory pipeline test\u2026</strong><span>The run continues server-side if you navigate away. Orbit will let productive stages finish and stop only for hang/no-progress, operator control, or the $10 per-stage AI ceiling.</span>';}try{const payload=await api(\"/api/admin/directory/pipeline/start\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:15000});if(payload?.run?.id)directoryPipelineStorageV644(\"orbitDirectoryActivePipelineRunV644\",payload.run.id);renderDirectoryPipelineV580({...payload,active:true});startDirectoryPipelinePollV580();window.setTimeout(()=>pollDirectoryPipelineV580().catch(()=>{}),500);if(state.currentModule===\"directory\")await loadDirectoryControlCentreV625(true).catch(()=>{});}catch(error){if(n){n.classList.remove(\"is-running\");n.classList.add(\"is-failed\");n.innerHTML=`<strong>Pipeline could not be started</strong><span>${esc(error.message||error)}</span>`;}if(button){button.disabled=false;button.textContent=\"Run full pipeline test\";button.setAttribute(\"aria-busy\",\"false\");}}\n  }\n\n  async function runDirectoryDiscoveryV560(button){setLoading(button,true);const n=$(\"directoryDiscoveryNoticeV560\");if(n)n.innerHTML=\"<strong>Full UK discovery sweep starting\u2026</strong><span>Orbit will work through every registered source and national coverage lane, including all announced 2027 and later dates. You can leave this screen while it continues.</span>\";try{const result=await api(\"/api/admin/directory/discover\",{method:\"POST\",body:JSON.stringify({full:true}),cacheMs:0,timeoutMs:30000});if(n)n.innerHTML=`<strong>${result.queued?\"Full discovery sweep queued\":(result.alreadyRunning?\"Discovery already running\":\"Full discovery sweep started\")}</strong><span>${esc(result.message||\"\")} ${Number(result.planTasks||0)} discovery lanes \u00B7 up to ${Number(result.maxEventsPerTask||0)} candidates per lane \u00B7 all announced future years. Enrichment will improve the records separately.</span>`;let attempts=0;window.clearInterval(window.orbitDirectoryDiscoveryPollV562);window.orbitDirectoryDiscoveryPollV562=window.setInterval(async()=>{attempts++;try{await loadDirectoryV560(true);const summary=await api(\"/api/admin/directory/summary\",{cacheMs:0});if(summary?.lastDiscoveryRun?.status!==\"running\"||attempts>=24){window.clearInterval(window.orbitDirectoryDiscoveryPollV562);window.orbitDirectoryDiscoveryPollV562=null;}}catch(_e){if(attempts>=24){window.clearInterval(window.orbitDirectoryDiscoveryPollV562);window.orbitDirectoryDiscoveryPollV562=null;}}},10000);await loadDirectoryV560(true);}catch(err){if(n)n.innerHTML=`<strong>Discovery stopped safely</strong><span>${esc(err.message||err)}</span>`;}finally{setLoading(button,false);}}\n  async function runDirectoryEnrichmentV561(button){setLoading(button,true);const n=$(\"directoryDiscoveryNoticeV560\");if(n)n.innerHTML=\"<strong>Data Enrichment is working\u2026</strong><span>Orbit is following source evidence, checking Eventbrite detail where available, validating postcodes and re-researching incomplete/conflicting records.</span>\";try{const result=await api(\"/api/admin/directory/enrich\",{method:\"POST\",body:JSON.stringify({limit:10}),cacheMs:0,timeoutMs:240000});if(n)n.innerHTML=`<strong>Enrichment complete</strong><span>${Number(result.investigated||0)} checked \u00B7 ${Number(result.enriched||0)} improved \u00B7 ${Number(result.conflicts||0)} identity conflict${Number(result.conflicts||0)===1?\"\":\"s\"} quarantined. Nothing was approved or published.</span>`;await loadDirectoryV560(true);}catch(err){if(n)n.innerHTML=`<strong>Enrichment stopped safely</strong><span>${esc(err.message||err)}</span>`;}finally{setLoading(button,false);}}\n  function directoryEvidenceRowsV561(e){const fields=[\"title\",\"startDate\",\"venueName\",\"addressLine1\",\"city\",\"postcode\",\"organiser\",\"imageUrl\",\"description\",\"latitude\",\"longitude\"];return fields.map(field=>{const ev=e.fieldEvidence?.[field]||[];return `<tr><td><strong>${esc(field)}</strong></td><td>${ev.length?ev.map(x=>`<a href=\"${esc(x.sourceUrl||\"#\")}\" target=\"_blank\" rel=\"noopener\">${esc(x.sourceType||\"source\")}</a> <small>${esc(x.confidence||\"\")}</small>`).join(\"<br>\"):\"<small>No provenance yet</small>\"}</td></tr>`;}).join(\"\");}\n  async function openDirectoryEventV560(id){\n    ensureDirectoryModuleV560();\n    const data=await api(\"/api/admin/directory/events/\"+encodeURIComponent(id),{cacheMs:0,timeoutMs:15000}),e=data.event,d=$(\"directoryEventDialogV560\"),body=$(\"directoryEventDialogBodyV560\"),actions=$(\"directoryEventDialogActionsV565\");if(!d||!body||!actions)return;\n    $(\"directoryEventDialogTitleV560\").textContent=e.title||\"Directory event\";$(\"directoryEventDialogSubtitleV560\").textContent=directoryDateV560(e.startDate)+\" \u00B7 \"+directoryLocationV560(e);\n    const sources=e.sources||[],q=e.dataQuality||{},conflicts=q.conflicts||[],approved=e.status===\"approved\",ignored=e.status===\"ignored\",imageVerified=Boolean(q.imageVerified),displayImageReady=Boolean(q.displayImageReady),generatedImage=q.displayImageType===\"generated\",pendingApproval=Boolean(approved&&e.reapprovalRequired);\n    const hasConflictV575=(field)=>conflicts.some(c=>c.field===field);\n    const meta=$(\"directoryEventDialogMetaV565\");if(meta)meta.innerHTML=`<span class=\"orbit-directory-status-pill-v565\">${esc(String(e.status||\"needs_review\").replace(/_/g,\" \"))}</span><span><strong>${Number(q.score||0)}%</strong> data quality</span><span><strong>${Number(q.independentSourceCount||0)}</strong> independent sources</span>${e.seoBlueprint?`<span><strong>${Number(e.seoBlueprint.readiness?.score||0)}%</strong> SEO readiness</span>`:\"\"}`;\n    actions.innerHTML=`<span class=\"orbit-directory-toolbar-state-v566\"><strong>${pendingApproval?\"Published \u00B7 update waiting\":esc(String(e.status||\"needs_review\").replace(/_/g,\" \"))}</strong><span>${Number(q.score||0)}% quality \u00B7 ${Number(q.independentSourceCount||0)} sources</span></span><div class=\"orbit-directory-toolbar-buttons-v566\"><button type=\"button\" id=\"dirSaveV560\">Save</button>${pendingApproval?`<button type=\"button\" id=\"dirApproveV560\">Approve live update</button>`:(!approved&&!ignored&&e.status!==\"past\"?`<button type=\"button\" id=\"dirApproveV560\">Approve & lock</button>`:\"\")}${!ignored?`<button type=\"button\" class=\"secondary\" id=\"dirInvestigateButtonV561\">Investigate</button><button type=\"button\" class=\"secondary danger\" id=\"dirIgnoreV561\">Exclude false positive</button>`:`<button type=\"button\" class=\"secondary\" id=\"dirRestoreV561\">Restore</button>`}<button type=\"button\" class=\"secondary\" id=\"directoryEventCloseV560\">Close</button></div>`;\n    body.innerHTML=`<div class=\"orbit-directory-review-v565\">\n      <div id=\"dirActionResultV560\" class=\"orbit-action-result orbit-directory-action-result-v565\" hidden></div>\n      ${approved?`<div class=\"orbit-info-banner\"><strong>Your edits are authoritative</strong><span>If you change a field and save it, Orbit locks that field to your decision. Agents may flag genuinely new contradictory evidence in Review Queue, but they cannot silently undo your edit.</span></div>`:\"\"}\n      <section class=\"orbit-directory-summary-v565\">\n        <div class=\"orbit-info-banner ${q.hasConflicts?\"warning\":\"\"}\"><strong>${q.autoPublishReady?\"100% verified \u00B7 automatic publication eligible\":(q.approvalReady?\"Publication-ready evidence\":\"AI is still verifying this record\")}</strong><span>${q.autoPublishReady?\"All critical gates have passed. Orbit can publish this new listing automatically without operator approval.\":(q.approvalReady?\"All publication-critical fields are verified.\":`Still needed: ${esc((q.publicationCriticalMissing||[]).map(directoryMissingLabelV561).join(\", \")||\"resolve evidence conflicts\")}.`)}</span></div>\n        ${approved?`<div class=\"orbit-info-banner ${pendingApproval?\"warning\":\"\"}\"><strong>${pendingApproval?\"Live listing preserved \u00B7 proposed update needs you\":\"Published record locked\"}</strong><span>${pendingApproval?\"Directory Night Watch detected a material change. The public listing has NOT been changed; review the proposed diff below and approve only if correct.\":\"AI verifies this show nightly. It can update internal freshness evidence, but cannot change, hide or remove public listing facts without your approval.\"}</span></div>`:\"\"}\n        ${conflicts.length?`<div class=\"orbit-directory-conflict-stack-v575\">${directoryConflictHtmlV575(conflicts,e)}</div>`:\"\"}\n      </section>\n      <div class=\"orbit-directory-review-grid-v565\">\n        <section class=\"orbit-directory-section-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">EVENT DATA</p><h3>Core details</h3></div><span>${Number(q.score||0)}% complete</span></div>\n          <div class=\"orbit-directory-core-grid-v565\"><label class=\"${hasConflictV575(\"title\")?\"orbit-directory-field-conflict-v575\":\"\"}\">Show title<input id=\"dirEditTitleV560\" value=\"${esc(e.title||\"\")}\"></label><label class=\"${hasConflictV575(\"startDate\")?\"orbit-directory-field-conflict-v575\":\"\"}\">Start date<input id=\"dirEditStartV560\" type=\"date\" value=\"${esc(e.startDate||\"\")}\"></label><label>Start time<input id=\"dirEditStartTimeV561\" type=\"time\" value=\"${esc(e.startTime||\"\")}\"></label><label class=\"${hasConflictV575(\"endDate\")?\"orbit-directory-field-conflict-v575\":\"\"}\">End date<input id=\"dirEditEndV560\" type=\"date\" value=\"${esc(e.endDate||\"\")}\"></label><label>End time<input id=\"dirEditEndTimeV561\" type=\"time\" value=\"${esc(e.endTime||\"\")}\"></label><label class=\"${hasConflictV575(\"venueName\")?\"orbit-directory-field-conflict-v575\":\"\"}\">Venue<input id=\"dirEditVenueV560\" value=\"${esc(e.venueName||\"\")}\"></label><label class=\"orbit-span-2-v565\">Address<input id=\"dirEditAddressV560\" value=\"${esc(e.addressLine1||\"\")}\"></label><label class=\"${hasConflictV575(\"city\")?\"orbit-directory-field-conflict-v575\":\"\"}\">Town / city<input id=\"dirEditCityV560\" value=\"${esc(e.city||\"\")}\"></label><label>County<input id=\"dirEditCountyV560\" value=\"${esc(e.county||\"\")}\"></label><label>Region<input id=\"dirEditRegionV560\" value=\"${esc(e.region||\"\")}\"></label><label class=\"${hasConflictV575(\"postcode\")?\"orbit-directory-field-conflict-v575\":\"\"}\">Postcode<input id=\"dirEditPostcodeV560\" value=\"${esc(e.postcode||\"\")}\"></label><label class=\"${hasConflictV575(\"organiser\")?\"orbit-directory-field-conflict-v575\":\"\"}\">Organiser<input id=\"dirEditOrganiserV560\" value=\"${esc(e.organiser||\"\")}\"></label></div>\n          <label class=\"orbit-directory-description-v565\">Description<textarea id=\"dirEditDescriptionV560\" rows=\"6\" placeholder=\"Verified factual description\">${esc(e.description||\"\")}</textarea></label>\n          <details class=\"orbit-directory-advanced-v565\"><summary>URLs, coordinates and advanced fields</summary><div class=\"orbit-directory-core-grid-v565\"><label>Organiser URL<input id=\"dirEditOrganiserUrlV561\" value=\"${esc(e.organiserUrl||\"\")}\"></label><label>Ticket URL<input id=\"dirEditTicketV560\" value=\"${esc(e.ticketUrl||\"\")}\"></label><label>Website URL<input id=\"dirEditWebsiteV561\" value=\"${esc(e.websiteUrl||\"\")}\"></label><label>Image URL<input id=\"dirEditImageV560\" value=\"${esc(e.imageUrl||\"\")}\"></label><label>Latitude<input id=\"dirEditLatV561\" inputmode=\"decimal\" value=\"${esc(e.latitude??\"\")}\"></label><label>Longitude<input id=\"dirEditLongV561\" inputmode=\"decimal\" value=\"${esc(e.longitude??\"\")}\"></label></div></details>\n        </section>\n        <aside class=\"orbit-directory-side-v565\">\n          <section class=\"orbit-directory-section-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">MEDIA</p><h3>${generatedImage?\"Directory display image\":\"Official event image\"}</h3></div>${imageVerified?`<span class=\"orbit-good-v565\">Official verified</span>`:(displayImageReady?`<span class=\"orbit-good-v565\">Generated fallback</span>`:`<span class=\"orbit-warn-v565\">Needs work</span>`)}</div>\n            ${imageVerified?`<div class=\"orbit-directory-image-preview-v565\"><img src=\"${esc(e.imageUrl)}\" alt=\"${esc(e.title||\"Event image\")}\"><div><a href=\"${esc(e.imageUrl)}\" target=\"_blank\" rel=\"noopener\">Open image asset \u2197</a>${e.imageSourceUrl?`<a href=\"${esc(e.imageSourceUrl)}\" target=\"_blank\" rel=\"noopener\">View source page \u2197</a>`:\"\"}</div></div>`:(generatedImage?`<div class=\"orbit-directory-image-empty-v565\"><strong>Safe CardShowIndex fallback is ready</strong><span>Orbit could not yet resolve official artwork, so the public card can use a generated listing banner made only from verified event facts. Official-image research continues and will replace it when verified.</span>${e.imageSourceUrl?`<a href=\"${esc(e.imageSourceUrl)}\" target=\"_blank\" rel=\"noopener\">Known official image source page \u2197</a>`:\"\"}</div>`:`<div class=\"orbit-directory-image-empty-v565\"><strong>No usable image yet</strong><span>${esc(q.imageValidationReason||\"The image pipeline is still finding, extracting and visually verifying official artwork.\")}</span>${e.imageSourceUrl?`<a href=\"${esc(e.imageSourceUrl)}\" target=\"_blank\" rel=\"noopener\">Known image source page \u2197</a>`:\"\"}</div>`)}\n          </section>\n          ${e.socialLinks&&Object.keys(e.socialLinks).length?`<section class=\"orbit-directory-section-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">OFFICIAL PRESENCE</p><h3>Website & socials</h3></div></div><div class=\"orbit-directory-socials-v565\">${Object.entries(e.socialLinks).flatMap(([k,v])=>Array.isArray(v)?v.map(url=>`<a href=\"${esc(url)}\" target=\"_blank\" rel=\"noopener\">${esc(k)} \u2197</a>`):[`<a href=\"${esc(v)}\" target=\"_blank\" rel=\"noopener\">${esc(k)} \u2197</a>`]).join(\"\")}</div></section>`:\"\"}\n          ${e.seoBlueprint?`<section class=\"orbit-directory-section-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">SEO FOUNDATION</p><h3>Search readiness</h3></div><strong>${Number(e.seoBlueprint.readiness?.score||0)}%</strong></div><p class=\"orbit-muted\">Planned canonical path</p><code class=\"orbit-directory-code-v565\">${esc(e.seoBlueprint.canonicalPath||\"\")}</code><p class=\"orbit-muted\">${esc(e.seoBlueprint.metaTitle||\"\")}</p></section>`:\"\"}\n        </aside>\n      </div>\n      ${(e.pendingChanges||[]).length?`<section class=\"orbit-directory-section-v565 orbit-directory-warning-section-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">CHANGE DETECTION</p><h3>${e.pendingChanges.length} material live change${e.pendingChanges.length===1?\"\":\"s\"} need your approval</h3></div></div><div class=\"orbit-directory-change-list-v565\">${e.pendingChanges.slice(-12).map(x=>`<div><strong>${esc(x.field)}</strong><span>${esc(String(x.from??\"\"))}</span><b>\u2192</b><span>${esc(String(x.to??\"\"))}</span></div>`).join(\"\")}</div></section>`:\"\"}\n      ${(e.possibleDuplicates||[]).length?`<section class=\"orbit-directory-section-v565 orbit-directory-warning-section-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">DUPLICATE CHECK</p><h3>Possible duplicate</h3></div></div>${e.possibleDuplicates.map(x=>`<p><strong>${esc(x.title)}</strong> \u00B7 ${esc(x.startDate)} \u00B7 ${esc(x.city||\"\")} \u00B7 match ${Number(x.identityScore||0)}</p>`).join(\"\")}</section>`:\"\"}\n      <div class=\"orbit-directory-evidence-grid-v565\"><section class=\"orbit-directory-section-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">EVIDENCE</p><h3>Source evidence (${sources.length})</h3></div></div><p class=\"orbit-muted\">${Number(q.independentSourceCount||0)} genuinely independent event source${Number(q.independentSourceCount||0)===1?\"\":\"s\"}. Eventbrite web + API count as one.</p><div class=\"orbit-directory-source-grid-v565\">${sources.length?sources.map(x=>`<a class=\"orbit-directory-source-card-v565\" href=\"${esc(x.url)}\" target=\"_blank\" rel=\"noopener\"><strong>${esc(x.type||\"source\")}</strong><span>${esc(x.reliability||\"unknown\")} reliability${x.channel?` \u00B7 ${esc(x.channel)}`:\"\"}</span><small>${esc((x.url||\"\").replace(/^https?:\\/\\//,\"\"))}</small></a>`).join(\"\"):\"<p>No direct source evidence recorded.</p>\"}</div></section><section class=\"orbit-directory-section-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">PROVENANCE</p><h3>Field evidence</h3></div></div><div class=\"orbit-directory-provenance-v565\"><table><tbody>${directoryEvidenceRowsV561(e)}</tbody></table></div></section></div>\n      <section class=\"orbit-directory-section-v565 orbit-directory-investigate-v565\"><div class=\"orbit-directory-section-heading-v565\"><div><p class=\"orbit-kicker\">AI RESEARCH</p><h3>Investigate with AI</h3></div></div><label>Paste a URL, clue or instruction<textarea id=\"dirInvestigateV561\" rows=\"4\" placeholder=\"Example: this organiser page has the correct image and venue address\u2026\">${esc(e.researchInstruction||\"\")}</textarea></label><p>AI treats what you paste as a research lead, verifies the source, records provenance and learns useful source patterns for future events. Your text never becomes canonical data by itself.</p></section>\n    </div>`;\n    const payload=()=>({title:$(\"dirEditTitleV560\")?.value,startDate:$(\"dirEditStartV560\")?.value,startTime:$(\"dirEditStartTimeV561\")?.value,endDate:$(\"dirEditEndV560\")?.value,endTime:$(\"dirEditEndTimeV561\")?.value,venueName:$(\"dirEditVenueV560\")?.value,addressLine1:$(\"dirEditAddressV560\")?.value,city:$(\"dirEditCityV560\")?.value,county:$(\"dirEditCountyV560\")?.value,region:$(\"dirEditRegionV560\")?.value,postcode:$(\"dirEditPostcodeV560\")?.value,organiser:$(\"dirEditOrganiserV560\")?.value,organiserUrl:$(\"dirEditOrganiserUrlV561\")?.value,imageUrl:$(\"dirEditImageV560\")?.value,ticketUrl:$(\"dirEditTicketV560\")?.value,websiteUrl:$(\"dirEditWebsiteV561\")?.value,latitude:$(\"dirEditLatV561\")?.value,longitude:$(\"dirEditLongV561\")?.value,description:$(\"dirEditDescriptionV560\")?.value});\n    const originalPayload={title:e.title||\"\",startDate:e.startDate||\"\",startTime:e.startTime||\"\",endDate:e.endDate||\"\",endTime:e.endTime||\"\",venueName:e.venueName||\"\",addressLine1:e.addressLine1||\"\",city:e.city||\"\",county:e.county||\"\",region:e.region||\"\",postcode:e.postcode||\"\",organiser:e.organiser||\"\",organiserUrl:e.organiserUrl||\"\",imageUrl:e.imageUrl||\"\",ticketUrl:e.ticketUrl||\"\",websiteUrl:e.websiteUrl||\"\",latitude:e.latitude==null?\"\":String(e.latitude),longitude:e.longitude==null?\"\":String(e.longitude),description:e.description||\"\"};\n    const hasManualChanges=()=>JSON.stringify(payload())!==JSON.stringify(originalPayload);\n    const showResult=(text,error=false)=>{const r=$(\"dirActionResultV560\");if(!r)return;r.hidden=false;r.classList.toggle(\"error\",Boolean(error));r.textContent=text;};\n    const refreshListQuietly=()=>{loadDirectoryV560(true).catch(()=>{});};\n    $(\"directoryEventCloseV560\")?.addEventListener(\"click\",()=>d.close());\n    $(\"dirSaveV560\")?.addEventListener(\"click\",async ev=>{const button=ev.currentTarget;setLoading(button,true);try{await api(\"/api/admin/directory/events/\"+encodeURIComponent(e.id),{method:\"PATCH\",body:JSON.stringify(payload()),cacheMs:0,timeoutMs:15000});showResult(approved?\"Saved and locked to your decision. Agents cannot silently overwrite the fields you changed.\":\"Saved successfully. AI enrichment continues separately in the background.\");refreshListQuietly();}catch(err){showResult(err.message||err,true);}finally{setLoading(button,false);}});\n    $(\"dirApproveV560\")?.addEventListener(\"click\",async ev=>{const button=ev.currentTarget;setLoading(button,true);try{if(hasManualChanges())await api(\"/api/admin/directory/events/\"+encodeURIComponent(e.id),{method:\"PATCH\",body:JSON.stringify(payload()),cacheMs:0,timeoutMs:15000});await api(\"/api/admin/directory/events/\"+encodeURIComponent(e.id)+\"/approve\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:15000});d.close();refreshListQuietly();setNotice(pendingApproval?\"Live Directory update approved. The public record has now been updated and re-locked.\":\"Directory event approved and locked. Night Watch will verify it, but any material public change will always wait for your approval.\");}catch(err){showResult(err.message||err,true);}finally{setLoading(button,false);}});\n    $(\"dirInvestigateButtonV561\")?.addEventListener(\"click\",async ev=>{const instruction=$(\"dirInvestigateV561\")?.value?.trim();if(!instruction){showResult(\"Paste a URL, clue or tell the agent what you want investigated.\",true);return;}const button=ev.currentTarget;setLoading(button,true);try{await api(\"/api/admin/directory/events/\"+encodeURIComponent(e.id)+\"/investigate\",{method:\"POST\",body:JSON.stringify({instruction}),cacheMs:0,timeoutMs:15000});d.close();refreshListQuietly();setNotice(\"Research lead saved. Directory AI will verify it in the background.\");}catch(err){showResult(err.message||err,true);}finally{setLoading(button,false);}});\n    $(\"dirIgnoreV561\")?.addEventListener(\"click\",async ev=>{if(!window.confirm(\"Exclude this item from CardShowIndex because it is not a real/in-scope card show? Orbit will remember the exclusion so the same false positive is not rediscovered.\"))return;const button=ev.currentTarget;setLoading(button,true);try{await api(\"/api/admin/directory/events/\"+encodeURIComponent(e.id)+\"/ignore\",{method:\"POST\",body:JSON.stringify({reason:\"Excluded as a false positive by Orbit Admin\"}),cacheMs:0,timeoutMs:15000});d.close();orbitDirectoryFilterV560=\"enriching\";refreshListQuietly();}catch(err){showResult(err.message||err,true);}finally{setLoading(button,false);}});\n    $(\"dirRestoreV561\")?.addEventListener(\"click\",async ev=>{const button=ev.currentTarget;setLoading(button,true);try{await api(\"/api/admin/directory/events/\"+encodeURIComponent(e.id)+\"/restore\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:15000});d.close();refreshListQuietly();}catch(err){showResult(err.message||err,true);}finally{setLoading(button,false);}});\n    if(typeof d.showModal===\"function\")d.showModal();else d.setAttribute(\"open\",\"\");\n  }\n\n\n  // V601 Members Store / Member Credit / Members Prize Draw preview.\n  let memberStoreAdminDataV601=null;\n  function memberStoreMoneyV601(pence){return new Intl.NumberFormat(\"en-GB\",{style:\"currency\",currency:\"GBP\"}).format((Number(pence)||0)/100);}\n  function memberStoreDateV601(value){if(!value)return \"\u2014\";try{return new Date(value).toLocaleString(\"en-GB\",{dateStyle:\"medium\",timeStyle:\"short\"});}catch(_){return String(value);}}\n  function memberStoreStatusV601(value){return String(value||\"draft\").replaceAll(\"_\",\" \").replace(/\\b\\w/g,c=>c.toUpperCase());}\n  // V614: private, lazy-loaded operations. No credentials are retained after save.\n  let paOpsDataV614=null,paOpsPaneV614='overview';\n  const paDateV614=value=>value?memberStoreDateV601(value):'Not yet';\n  const paMoneyV614=value=>'$'+Number(value||0).toFixed(4);\n  function paFieldV614(label,name,type='text',value='',help=''){return `<label>${esc(label)}<input name=\"${esc(name)}\" type=\"${esc(type)}\" value=\"${esc(String(value??''))}\" ${type==='password'?'autocomplete=\"new-password\" spellcheck=\"false\"':'autocomplete=\"off\"'}>${help?`<small>${esc(help)}</small>`:''}</label>`;}\n  function paOptionV614(value,label,current){return `<option value=\"${esc(value)}\" ${value===current?'selected':''}>${esc(label)}</option>`;}\n  function paChoiceV614(label,name,value=false,help=''){return `<label class=\"pa614-check\"><input type=\"checkbox\" name=\"${esc(name)}\" ${value?'checked':''}><span>${esc(label)}${help?`<small>${esc(help)}</small>`:''}</span></label>`;}\n  function paShowPaneV614(pane){paOpsPaneV614=['overview','connections','agents','diagnostics'].includes(pane)?pane:'overview';const root=$('paOpsV614');if(!root)return;root.querySelectorAll('[data-pa614-pane]').forEach(el=>el.hidden=el.dataset.pa614Pane!==paOpsPaneV614);root.querySelectorAll('[data-pa614-tab]').forEach(el=>{const on=el.dataset.pa614Tab===paOpsPaneV614;el.classList.toggle('active',on);el.setAttribute('aria-selected',String(on));});}\n  async function loadPokeOpsV614(force=false){\n    const root=$('paOpsV614');if(!root||root.dataset.loading==='true'||root.dataset.loaded==='true'&&!force)return;\n    root.dataset.loading='true';if(!root.dataset.loaded)root.innerHTML='<p role=\"status\">Loading source connections and monitoring evidence\u2026</p>';\n    try{const data=await api('/api/admin/poke-alerts/operations',{cacheMs:0,timeoutMs:60000});if($('paOpsV614')!==root)return;paOpsDataV614=data;root.dataset.loaded='true';renderPokeOpsV614(data);}\n    catch(error){if($('paOpsV614')===root){root.innerHTML='<p role=\"alert\">Monitoring evidence could not load. Your source settings were not changed.</p><button type=\"button\" data-pa614-retry>Try again</button>';root.querySelector('[data-pa614-retry]').onclick=()=>loadPokeOpsV614(true);}}\n    finally{root.dataset.loading='false';}\n  }\n  function renderPokeOpsV614(data){\n    const root=$('paOpsV614');if(!root)return;const queue=data.queue||{},intel=data.intelligence||{},cost=intel.costs||{},policy=cost.policy||{},agents=intel.agents||[],connections=data.connections?.connections||[],runs=data.diagnostics?.runs||[],signals=data.signals?.signals||[];\n    const connRows=connections.map(c=>`<tr data-pa614-connection-row=\"${esc((c.name+' '+c.providerId+' '+c.sourceId).toLowerCase())}\"><td><strong>${esc(c.name)}</strong><small>${esc(c.providerId)} \u00B7 ${esc(c.kind)} \u00B7 ${c.enabled?'Enabled':'Disabled'}</small></td><td><strong>${esc(c.status)}</strong><small>${esc(c.lastErrorCode||'No recorded error')} \u00B7 HTTP ${Number(c.lastHttpStatus)||0}</small></td><td>${esc(c.networkConnected?'Network account verified':c.networkApproval==='reported_by_mark'?'Account approval reported, not API verified':c.networkApproval==='website_verification_pending'?'Website verification pending':'Network account not verified')}<small>${esc(c.entitlement)} \u00B7 ${esc(c.freshness)}</small></td><td>${esc(paDateV614(c.lastSuccessAt))}<small>Next ${esc(paDateV614(c.nextRunAt))}</small></td><td><button type=\"button\" class=\"secondary\" data-pa614-edit=\"${esc(c.connectionId)}\">Edit</button> <button type=\"button\" data-pa614-test=\"${esc(c.connectionId)}\">Test connection</button></td></tr>`).join('');\n    const agentRows=agents.map(a=>`<tr><td><strong>${esc(a.name)}</strong><small>${esc(a.trigger)}</small></td><td>${esc(a.health)}<small>${esc(a.attentionReason||a.summary||'No recorded result yet')}</small></td><td>${esc(a.modelRoute)}<small>${a.deterministicCompleted?'Deterministic check completed':'Awaiting check'}${a.paidAiDeferred?' \u00B7 Paid AI deferred':''}${a.aiReason?' \u00B7 '+esc(a.aiReason):''}</small></td><td>${esc(paDateV614(a.lastRunAt))}<small>Next ${esc(paDateV614(a.nextRunAt))}</small></td><td>${esc(paMoneyV614(a.cost30DaysUsd))}<small>${Number(a.calls30Days)||0} paid calls / 30 days</small></td><td><button type=\"button\" class=\"secondary\" data-pa614-agent=\"${esc(a.id)}\">Run now</button></td></tr>`).join('');\n    const policies=agents.map(a=>`<div class=\"pa614-agent-policy\"><strong>${esc(a.name)}</strong><label>Model route<select name=\"route:${esc(a.id)}\">${[['deterministic','No paid AI'],['routine','Luna \u00B7 routine'],['analysis','Terra \u00B7 analysis'],['engineering','Sol \u00B7 engineering'],['expert','Astra \u00B7 escalation only']].map(([v,l])=>paOptionV614(v,l,policy.routes?.[a.id]||'routine')).join('')}</select></label>${paFieldV614('Cadence (minutes)','cadence:'+a.id,'number',Math.ceil((policy.cadences?.[a.id]||a.cadenceSeconds)/60))}</div>`).join('');\n    const runRows=runs.map(r=>`<tr><td><strong>${esc(r.sourceId)}</strong><small>${esc(r.worker)} \u00B7 ${esc(r.version)}</small></td><td>${esc(r.status)}<small>${esc(r.blocker||'No blocker recorded')}</small></td><td>${esc(r.reconciliationStatus||'Pending')}<small>${Number(r.observations)||0} observations \u00B7 ${Number(r.alertsGenerated)||0} events</small></td><td>${esc(paDateV614(r.startedAt))}<small>${Number(r.durationMs)||0} ms \u00B7 next ${esc(paDateV614(r.nextRunAt))}</small></td><td><details><summary>Evidence</summary><pre>${esc(JSON.stringify(r,null,2))}</pre></details></td></tr>`).join('');\n    const signalRows=signals.map(r=>`<tr><td><strong>${esc(r.sourceId)}</strong><small>${esc(r.sku||'SKU awaits exact verification')}</small></td><td>${esc(r.classification)}<small>${esc(r.status)} \u00B7 ${esc(r.blocker||'No blocker')}</small></td><td>${esc(r.independenceKey)}<small>${esc(r.kind)} \u00B7 ${esc(paDateV614(r.observedAt))}</small></td><td>${r.eventId?`<button type=\"button\" class=\"secondary\" data-pa614-trace=\"${esc(r.eventId)}\">View delivery trace</button>`:'No stock alert created'}<details><summary>Signal evidence</summary><pre>${esc(JSON.stringify(r,null,2))}</pre></details></td></tr>`).join('');\n    root.innerHTML=`<div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">SOURCE OPERATIONS</p><h3>Sources, connections & evidence</h3><p>Read real blockers, manage supported feeds and keep routine monitoring token-free. Stock claims still require exact fresh product evidence.</p></div><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-pa614-refresh>Refresh evidence</button><button type=\"button\" class=\"secondary\" data-pa614-export>Export safe diagnostics</button></div></div>\n      <div class=\"pa614-tabs\" role=\"tablist\" aria-label=\"Pok\u00E9 Alerts operations\">${[['overview','Overview'],['connections','Sources & Connections'],['agents','Agents & Cost'],['diagnostics','Diagnostics & Traces']].map(([v,l])=>`<button type=\"button\" role=\"tab\" data-pa614-tab=\"${v}\">${l}</button>`).join('')}</div><div id=\"paOpsResultV614\" class=\"orbit-action-result\" role=\"status\" aria-live=\"polite\"></div>\n      <div data-pa614-pane=\"overview\"><div class=\"pa614-summary\"><article><small>Pok\u00E9mon Center UK \u00B7 priority zero</small><strong>${esc(queue.label||'Queue state unknown')}</strong><p>${esc(queue.blocker||'A queue is an early warning, never proof that a product is available.')}</p><small>Last check ${esc(paDateV614(queue.lastCheckAt))}<br>Last successful check ${esc(paDateV614(queue.lastSuccessAt))}<br>Next ${esc(paDateV614(queue.nextRunAt))} \u00B7 HTTP ${Number(queue.httpStatus)||0}</small><button type=\"button\" class=\"secondary\" data-pa614-queue>Check queue when due</button></article><article><small>AI cost today</small><strong>${esc(paMoneyV614(cost.costTodayUsd))} / $${Number(policy.dailyBudgetUsd||0).toFixed(2)}</strong><p>${Number(cost.callsToday)||0} / ${Number(policy.dailyCallCap)||0} paid calls \u00B7 ${Number(cost.expertCallsToday)||0} Astra escalations</p><small>7 days ${esc(paMoneyV614(cost.cost7DaysUsd))}<br>30 days ${esc(paMoneyV614(cost.cost30DaysUsd))}<br>${cost.budgetDeferred?'Paid AI deferred. Deterministic monitoring continues.':'Deterministic polling uses no AI tokens.'}</small></article><article><small>Delivery protection</small><strong>Existing test member only</strong><p>Saving a connection never enables member sends. Email, SMS, consent, credit balance and spend caps remain separate gates.</p><small>Fixtures and connection tests are not live delivery proof. Email acceptance is not inbox confirmation.</small></article></div></div>\n      <div data-pa614-pane=\"connections\" hidden><div class=\"pa614-toolbar\"><label>Find a connection<input type=\"search\" id=\"paConnectionSearchV614\" placeholder=\"Provider, retailer or name\"></label><button type=\"button\" data-pa614-new>Add connection</button></div><div class=\"pa614-table-wrap\"><table><thead><tr><th>Connection</th><th>Connection health</th><th>Account & entitlement</th><th>Last success / next check</th><th>Actions</th></tr></thead><tbody>${connRows||'<tr><td colspan=\"5\">No new connections yet. Existing retailer monitors and legacy feeds remain intact. Add approved credentials below.</td></tr>'}</tbody></table></div><div id=\"paConnectionEditorV614\"></div></div>\n      <div data-pa614-pane=\"agents\" hidden><p>These five agents belong to Members Club. Polling, parsing, queue checks and delivery never need a paid model. Paid explanations are advisory and cannot override stock or billing gates.</p><div class=\"pa614-table-wrap\"><table><thead><tr><th>Agent</th><th>Health / attention</th><th>Model & execution</th><th>Last / next run</th><th>Cost</th><th>Action</th></tr></thead><tbody>${agentRows||'<tr><td colspan=\"6\">Agent evidence is not available yet.</td></tr>'}</tbody></table></div><form id=\"paCostFormV614\"><h4>Hard cost controls</h4><div class=\"pa614-fields\">${paFieldV614('Daily AI budget (USD)','dailyBudgetUsd','number',policy.dailyBudgetUsd??0.5)}${paFieldV614('Maximum paid calls per day','dailyCallCap','number',policy.dailyCallCap??12)}${paFieldV614('Minimum AI cooldown (minutes)','cooldownMinutes','number',Math.ceil((policy.cooldownSeconds||900)/60))}${paFieldV614('Maximum Astra escalations per day','expertDailyCap','number',policy.expertDailyCap??1)}</div>${policies}<p>Astra also requires a recent cheap diagnosis that explicitly needs deeper analysis. Source Scout cannot run more often than every four hours. Existing shared Orbit AI limits still apply. Unknown execution retains its reservation rather than replenishing the budget.</p><button type=\"submit\">Save cost controls</button></form><details><summary>Per-source cost and paid-call evidence</summary><pre>${esc(JSON.stringify({bySource:cost.bySource||[],recent:cost.recent||[],note:cost.note},null,2))}</pre></details></div>\n      <div data-pa614-pane=\"diagnostics\" hidden><h4>Latest source acquisitions</h4><p>Bounded recent history with HTTP, parser, exact identity, latency, backoff and reconciliation evidence. Failed checks stay Unknown or Blocked, not Out of stock.</p><div class=\"pa614-table-wrap\"><table><thead><tr><th>Worker</th><th>Result / blocker</th><th>Reconciliation</th><th>Time / next run</th><th>Details</th></tr></thead><tbody>${runRows||'<tr><td colspan=\"5\">No V614 source run has been recorded yet.</td></tr>'}</tbody></table></div><h4>Authorised signals & verification</h4><div class=\"pa614-table-wrap\"><table><thead><tr><th>Exact target</th><th>Classification</th><th>Original source</th><th>Trace</th></tr></thead><tbody>${signalRows||'<tr><td colspan=\"4\">No authorised connector signals have arrived yet.</td></tr>'}</tbody></table></div><form id=\"paTraceFormV614\" class=\"pa614-toolbar\">${paFieldV614('Stock event reference','eventId','text','','Copy an event reference from the stock or delivery evidence.')}<button type=\"submit\">View delivery trace</button></form><pre id=\"paTraceResultV614\" hidden></pre></div>`;\n    const budgetInput=root.querySelector('[name=\"dailyBudgetUsd\"]');if(budgetInput){budgetInput.step='0.01';budgetInput.min='0';budgetInput.max='10';}\n    paShowPaneV614(paOpsPaneV614);paEditConnectionV614(null);syncPokePageV618();\n    root.querySelectorAll('[data-pa614-tab]').forEach(b=>b.onclick=()=>paShowPaneV614(b.dataset.pa614Tab));\n    root.querySelector('[data-pa614-refresh]').onclick=()=>loadPokeOpsV614(true);\n    root.querySelector('[data-pa614-export]').onclick=()=>{const blob=new Blob([JSON.stringify(paOpsDataV614,null,2)],{type:'application/json'}),url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download='Orbit_Poke_Alerts_V614_Safe_Diagnostics.json';document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),1000);};\n    root.querySelector('[data-pa614-new]').onclick=()=>{paEditConnectionV614(null);$('paConnectionEditorV614')?.scrollIntoView({block:'nearest',behavior:'smooth'});};\n    root.querySelector('#paConnectionSearchV614').oninput=e=>root.querySelectorAll('[data-pa614-connection-row]').forEach(tr=>tr.hidden=!tr.dataset.pa614ConnectionRow.includes(e.target.value.toLowerCase().trim()));\n    root.querySelectorAll('[data-pa614-edit]').forEach(b=>b.onclick=()=>paEditConnectionV614(connections.find(c=>c.connectionId===b.dataset.pa614Edit)));\n    root.querySelectorAll('[data-pa614-test]').forEach(b=>b.onclick=()=>paActionV614(b,'/connections/'+encodeURIComponent(b.dataset.pa614Test)+'/test',{},'Connection tested. No member message was sent.'));\n    root.querySelectorAll('[data-pa614-agent]').forEach(b=>b.onclick=()=>paActionV614(b,'/agents/'+encodeURIComponent(b.dataset.pa614Agent)+'/run',{},'Agent run completed within the configured limits.'));\n    root.querySelector('[data-pa614-queue]').onclick=e=>paActionV614(e.currentTarget,'/queue-sentinel/run',{},'Queue check processed. Cadence and access backoff are still enforced.');\n    root.querySelectorAll('[data-pa614-trace]').forEach(b=>b.onclick=()=>paTraceV614(b.dataset.pa614Trace));\n    root.querySelector('#paTraceFormV614').onsubmit=e=>{e.preventDefault();paTraceV614(new FormData(e.target).get('eventId'));};\n    root.querySelector('#paCostFormV614').onsubmit=e=>{e.preventDefault();const form=e.target,fd=new FormData(form),routes={},cadences={};for(const a of agents){routes[a.id]=fd.get('route:'+a.id);cadences[a.id]=Number(fd.get('cadence:'+a.id))*60;}paActionV614(form.querySelector('[type=\"submit\"]'),'/ai-policy',{dailyBudgetUsd:Number(fd.get('dailyBudgetUsd')),dailyCallCap:Number(fd.get('dailyCallCap')),cooldownSeconds:Number(fd.get('cooldownMinutes'))*60,expertDailyCap:Number(fd.get('expertDailyCap')),routes,cadences},'Cost controls saved. Deterministic monitoring remains independent of paid AI.');};\n  }\n  function paEditConnectionV614(row){\n    const root=$('paConnectionEditorV614');if(!root)return;const r=row||{},providers=paOpsDataV614?.connections?.providers||[],sources=memberStoreAdminDataV601?.pokeAlerts?.sources||[],p=r.proxy||{};\n    const select=(label,name,options,current)=>`<label>${esc(label)}<select name=\"${esc(name)}\">${options.map(([v,l])=>paOptionV614(v,l,current)).join('')}</select></label>`;\n    root.innerHTML=`<form id=\"paConnectionFormV614\" class=\"pa614-editor\"><h4>${row?'Edit connection':'Add a supported connection'}</h4><p>Secret fields stay blank after saving. A blank field keeps its saved value. Network approval alone does not prove merchant access or a current stock feed.</p><input type=\"hidden\" name=\"connectionId\" value=\"${esc(r.connectionId||'')}\"><div class=\"pa614-fields\">${select('Provider','providerId',providers.map(p=>[p.id,p.name]),r.providerId||'avelon')}${paFieldV614('Connection name','name','text',r.name||'')}${select('Connection method','kind',[['feed','Merchant / affiliate product feed'],['discord_bot','Authorised Discord bot'],['relay','Authorised JSON webhook / announcement relay'],['social_api','Authorised normalised X / social API'],['proxy','Permitted fixed proxy routing'],['manual_benchmark','Manual benchmark only']],r.kind||'feed')}${select('Retailer','sourceId',[['','Match approved product links automatically'],...sources.map(s=>[s.id,s.name])],r.sourceId||'')}${paFieldV614('Account / publisher ID','publisherId','text',r.publisherId||'')}${paFieldV614('Merchant / advertiser ID','merchantId','text',r.merchantId||'')}${paFieldV614('Check every (minutes)','cadenceMinutes','number',Math.ceil((r.cadenceSeconds||900)/60))}${paFieldV614('Source freshness limit (minutes)','maxAgeMinutes','number',Math.ceil((r.maxAgeSeconds||600)/60))}${paFieldV614('Original source group','independenceGroup','text',r.independenceGroup||'unattributed-relay','Keep copied / rebroadcast signals in the same source group.')}</div>\n      <div class=\"pa614-fields\" data-pa614-kind=\"feed social_api\">${paFieldV614('Feed / API URL (secret)','endpointUrl','password','','Use the authorised machine-readable endpoint. Saved URL paths are never returned.')}${select('Authentication','authMode',[['none','None / token already in secret URL'],['bearer','Bearer API token'],['header','Named API key header'],['basic','Basic key + secret']],r.authMode||'none')}${paFieldV614('API header name','authHeader','text',r.authHeader||'Authorization')}${paFieldV614('API key / token','apiKey','password')}${paFieldV614('API secret','apiSecret','password')}${paFieldV614('Additional account secret (stored only)','accountSecret','password')}${select('Feed format','format',[['normalized_json','Normalised product JSON'],['google_csv','Google-style CSV'],['google_xml','Google-style XML']],r.format||'normalized_json')}</div>\n      <div data-pa614-kind=\"feed\"><div class=\"pa614-checks\">${paChoiceV614('Merchant access confirmed','merchantAccessConfirmed',r.merchantAccessConfirmed,'Confirm actual access to this retailer, not just the affiliate network.')}${paChoiceV614('This product / stock feed is permitted','feedAccessConfirmed',r.feedAccessConfirmed)}${paChoiceV614('Impact website verification completed','websiteVerificationConfirmed',r.websiteVerificationConfirmed)}</div><details><summary>Custom field mapping</summary><label>JSON field map<textarea name=\"fieldMap\" rows=\"4\" spellcheck=\"false\">${esc(JSON.stringify(r.fieldMap||{},null,2))}</textarea></label><small>Optional keys: title, url, sku, availability, observedAt, price, category, image, currency, market. A feed without a genuine source timestamp is discovery-only.</small></details></div>\n      <div class=\"pa614-fields\" data-pa614-kind=\"discord_bot\">${paFieldV614('Authorised bot token','botToken','password','','Bot tokens only. Personal user tokens, self-bots and logged-in scraping are not supported.')}${paFieldV614('Discord channel ID','channelId','text',r.channelId||'')}${paFieldV614('Allowed author IDs (optional)','allowedAuthorIds','text',(r.allowedAuthorIds||[]).join(', '))}</div>\n      <div data-pa614-kind=\"relay\">${paFieldV614('Incoming relay key','relayKey','password','','At least 24 random characters. Save your own copy securely; Orbit will not show it again.')}<p>Send authorised JSON signals to <code>/api/poke-alerts/relay/${esc(r.connectionId||'{saved connection ID}')}</code> with the <code>X-Orbit-Source-Key</code> header. Each signal needs an exact UK product <code>url</code>, original <code>observedAt</code> timestamp and preferably <code>originalId</code>. This does not read a private Discord account.</p></div>\n      <div data-pa614-kind=\"social_api\">${paFieldV614('Allowed UK / official accounts','allowedAccounts','text',(r.allowedAccounts||['PokemonStockUK']).join(', '),'The approved API must return account, url and original observedAt. Broad social scraping is not used.')}</div>\n      <div data-pa614-kind=\"manual_benchmark\"><p>Manual comparison only. A paid Discord without supported bot or supplier access cannot be automated here.</p></div>\n      <div data-pa614-kind=\"proxy\"><div class=\"pa614-fields\">${paFieldV614('Proxy host (secret)','proxyHost','password')}${paFieldV614('Proxy port','proxyPort','number',p.port||443)}${select('Protocol','proxyProtocol',[['https','HTTPS CONNECT'],['http','HTTP CONNECT']],p.protocol||'https')}${paFieldV614('Proxy username','proxyUsername','password')}${paFieldV614('Proxy password','proxyPassword','password')}${paFieldV614('Region','proxyRegion','text',p.region||'GB')}${select('Session policy','proxySessionPolicy',[['static','Static fixed route'],['sticky','Provider sticky session']],p.sessionPolicy||'static')}${paFieldV614('Daily traffic cap (MB)','proxyCapMb','number',p.dailyTrafficCapMb||20)}${paFieldV614('Assigned retailer IDs','proxySourceIds','text',(p.assignedSourceIds||[]).join(', '))}</div>${paChoiceV614('This source permits this regional / reliability route','permittedRouting',p.permittedRouting)}<p>Pok\u00E9mon Center UK cannot use a proxy. No rotation, queue bypass, WAF bypass, CAPTCHA solving or automatic fallback after access denial. Proxy tests respect retailer backoff.</p></div>\n      <div class=\"pa614-checks\">${paChoiceV614('Enable this connection','enabled',r.enabled,'Delivery switches and member protections are not changed.')}<label class=\"pa614-check\"><input type=\"checkbox\" name=\"clearSavedSecrets\"><span>Clear all stored secrets on save</span></label></div><small>Stored secret fields: ${esc((r.secretFieldsConfigured||[]).join(', ')||'None')}. Values are never returned to this page.</small><div class=\"orbit-action-row\"><button type=\"submit\">Save connection</button></div></form>`;\n    const form=root.querySelector('form'),kind=form.elements.kind,provider=form.elements.providerId;\n    const show=()=>form.querySelectorAll('[data-pa614-kind]').forEach(el=>el.hidden=!el.dataset.pa614Kind.split(' ').includes(kind.value));\n    provider.onchange=()=>{kind.value=providers.find(p=>p.id===provider.value)?.kind||'feed';show();};kind.onchange=show;show();\n    form.onsubmit=async e=>{e.preventDefault();const fd=new FormData(form),payload={};for(const [k,v] of fd.entries())if(!['clearSavedSecrets','fieldMap'].includes(k))payload[k]=String(v);for(const k of ['enabled','merchantAccessConfirmed','feedAccessConfirmed','websiteVerificationConfirmed','permittedRouting'])payload[k]=form.elements[k]?.checked===true;for(const k of ['proxyPort','proxyCapMb'])payload[k]=Number(fd.get(k));payload.cadenceSeconds=Number(fd.get('cadenceMinutes'))*60;payload.maxAgeSeconds=Number(fd.get('maxAgeMinutes'))*60;try{payload.fieldMap=JSON.parse(fd.get('fieldMap')||'{}');}catch(_){$('paOpsResultV614').textContent='Field mapping must be valid JSON. Nothing was saved.';return;}if(form.elements.clearSavedSecrets.checked)payload.clearSecretFields=['endpointUrl','apiKey','apiSecret','accountSecret','botToken','relayKey','proxyHost','proxyUsername','proxyPassword'];await paActionV614(form.querySelector('[type=\"submit\"]'),'/connections',payload,'Connection saved. Secret values have been cleared from this form.',()=>form.querySelectorAll('input[type=\"password\"]').forEach(i=>i.value=''));};\n  }\n  async function paActionV614(button,suffix,payload,message,onSaved){setLoading(button,true);const resultNode=$('paOpsResultV614');if(resultNode)resultNode.textContent='Processing\u2026';try{const result=await api('/api/admin/poke-alerts'+suffix,{method:'POST',body:JSON.stringify(payload),cacheMs:0,timeoutMs:100000});onSaved?.();await loadPokeOpsV614(true);const out=$('paOpsResultV614');if(out)out.textContent=(result.success===false?'Not completed: '+(result.code||result.status||'Unknown blocker'):message)+(result.status?' Result: '+result.status+'.':'')+(result.code?' '+result.code:'')+(result.nextRunAt?' Next check: '+paDateV614(result.nextRunAt):'');}catch(error){if($('paOpsResultV614'))$('paOpsResultV614').textContent=error.message||'The action could not complete. No delivery settings were changed.';}finally{setLoading(button,false);}}\n  async function paTraceV614(eventId){if(!String(eventId||'').trim())return;activateModule('member-store','poke-diagnostics',{historyMode:'push'});paShowPaneV614('diagnostics');const out=$('paTraceResultV614');if(!out)return;out.hidden=false;out.textContent='Loading delivery trace\u2026';try{const data=await api('/api/admin/poke-alerts/trace/'+encodeURIComponent(String(eventId).trim()),{cacheMs:0,timeoutMs:30000});if($('paTraceResultV614')===out)out.textContent=JSON.stringify(data,null,2);}catch(error){out.textContent=error.message||'Trace could not be loaded.';}}\n\n  const POKE_PAGES_V618=Object.freeze({\"poke-alerts\":\"Overview\",\"poke-delivery\":\"Delivery evidence\",\"poke-pc\":\"Pok\u00E9mon Center UK\",\"poke-connections\":\"Connections\",\"poke-sources\":\"Stock source broker\",\"poke-products\":\"Products Orbit sees\",\"poke-source-engineer\":\"Source Engineer\",\"poke-stock-scout\":\"Stock Scout\",\"poke-guardian\":\"Guardian\",\"poke-events\":\"Recent stock events\",\"poke-agents\":\"Agents & cost\",\"poke-diagnostics\":\"Diagnostics\"});\n  const POKE_OPERATIONS_V618={\"poke-pc\":\"overview\",\"poke-connections\":\"connections\",\"poke-agents\":\"agents\",\"poke-diagnostics\":\"diagnostics\"};\n  let vendorSmsAdminV674=null,vendorSmsPaneV674='connection';\n  function vendorSmsShowPaneV674(name){vendorSmsPaneV674=['connection','templates','usage'].includes(name)?name:'connection';document.querySelectorAll('[data-vendor-sms-pane-v674]').forEach(n=>n.hidden=n.dataset.vendorSmsPaneV674!==vendorSmsPaneV674);document.querySelectorAll('[data-vendor-sms-tab-v674]').forEach(b=>{const active=b.dataset.vendorSmsTabV674===vendorSmsPaneV674;b.classList.toggle('active',active);b.setAttribute('aria-current',active?'page':'false');});if(vendorSmsPaneV674!=='connection')void loadVendorSmsAdminV674(true);}\n  function vendorSmsSampleVarsV674(key){if(key==='new_show')return {event_name:'Warwick Racecourse',event_date:'9 Jan 2027',booking_url:'https://orbitvendorclub.co.uk/?tab=book'};if(key==='floor_plan')return {event_name:'Warwick Racecourse',vendor_club_url:'https://orbitvendorclub.co.uk/?tab=bookings'};return {event_name:'Warwick Racecourse',ticket_count:'2',plural:'s',points:'4',points_plural:'s'};}\n  function renderVendorSmsAdminV674(data){vendorSmsAdminV674=data;const templates=$('vendorSmsTemplatesV674'),usage=$('vendorSmsUsageV674');if(templates){templates.innerHTML=`<div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">VENDOR CLUB SMS</p><h3>Approved message templates</h3><p>Edit operational SMS templates. Event announcements are manual-only in SMS Campaigns. Saving a change removes live approval until you approve the new version.</p></div></div>${(data.templates||[]).map(t=>`<article class=\"orbit-panel\" data-vendor-sms-template-card=\"${esc(t.key)}\"><div class=\"orbit-panel-header\"><div><h3>${esc(t.name)}</h3><p>Version ${Number(t.version)||1} \u00B7 ${t.approved?'<strong>Approved for live use</strong>':'Not approved \u00B7 automatic sends blocked'}</p></div><span class=\"orbit-status ${t.approved?'success':'warning'}\">${t.approved?'Approved':'Needs approval'}</span></div><label>SMS body<textarea rows=\"4\" data-vendor-sms-body=\"${esc(t.key)}\">${esc(t.body)}</textarea></label><p><small>Variables: ${(t.variables||[]).map(v=>'{{'+esc(v)+'}}').join(' \u00B7 ')}</small></p><div class=\"orbit-info-banner\"><strong>Live preview</strong><span data-vendor-sms-preview=\"${esc(t.key)}\">${esc(t.preview||'')}</span><small>${Number(t.characters)||0} characters \u00B7 ${Number(t.segments)||0} segment${Number(t.segments)===1?'':'s'} \u00B7 ${esc(t.encoding||'')}</small></div><div class=\"orbit-action-row\"><button type=\"button\" data-vendor-sms-save=\"${esc(t.key)}\">Save draft</button><button type=\"button\" class=\"secondary\" data-vendor-sms-approve=\"${esc(t.key)}\" data-approved=\"${t.approved?'1':'0'}\">${t.approved?'Remove approval':'Approve for live use'}</button><button type=\"button\" class=\"secondary\" data-vendor-sms-test=\"${esc(t.key)}\">Send authorised test SMS</button></div></article>`).join('')}`;templates.querySelectorAll('[data-vendor-sms-body]').forEach(area=>area.addEventListener('input',()=>{const card=area.closest('[data-vendor-sms-template-card]'),key=area.dataset.vendorSmsBody,t=(data.templates||[]).find(x=>x.key===key),vars=vendorSmsSampleVarsV674(key);let text=area.value;for(const [k,v] of Object.entries(vars))text=text.replace(new RegExp('\\\\{\\\\{\\\\s*'+k+'\\\\s*\\\\}\\\\}','gi'),v);const out=card?.querySelector('[data-vendor-sms-preview]');if(out)out.textContent=text;}));templates.querySelectorAll('[data-vendor-sms-save]').forEach(b=>b.onclick=async()=>{const key=b.dataset.vendorSmsSave,body=templates.querySelector(`[data-vendor-sms-body=\"${CSS.escape(key)}\"]`)?.value||'';setLoading(b,true);try{await api('/api/admin/vendors/club/sms/templates/'+encodeURIComponent(key),{method:'POST',body:JSON.stringify({body}),cacheMs:0});setNotice('SMS draft saved. Re-approve it before live use.');await loadVendorSmsAdminV674(true);}catch(e){setNotice(e.message,true);}finally{setLoading(b,false);}});templates.querySelectorAll('[data-vendor-sms-approve]').forEach(b=>b.onclick=async()=>{const key=b.dataset.vendorSmsApprove,approved=b.dataset.approved!=='1';setLoading(b,true);try{await api('/api/admin/vendors/club/sms/templates/'+encodeURIComponent(key)+'/approval',{method:'POST',body:JSON.stringify({approved}),cacheMs:0});setNotice(approved?'SMS template approved for live use.':'SMS template approval removed.');await loadVendorSmsAdminV674(true);}catch(e){setNotice(e.message,true);}finally{setLoading(b,false);}});templates.querySelectorAll('[data-vendor-sms-test]').forEach(b=>b.onclick=async()=>{const key=b.dataset.vendorSmsTest,to=prompt('Authorised UK mobile number for this test SMS:');if(!to)return;setLoading(b,true);try{const result=await api('/api/admin/vendors/club/sms/templates/'+encodeURIComponent(key)+'/test-send',{method:'POST',body:JSON.stringify({to,vars:vendorSmsSampleVarsV674(key)}),cacheMs:0,timeoutMs:30000});setNotice('Test SMS submitted to Twilio'+(result?.result?.messageSid?' \u00B7 '+result.result.messageSid:'')+'.');await loadVendorSmsAdminV674(true);}catch(e){setNotice(e.message,true);}finally{setLoading(b,false);}});}\n    if(usage){const u=data.usage||{},c=u.counts||{},bal=u.balance;usage.innerHTML=`<div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">TWILIO USAGE</p><h3>SMS credit & delivery</h3><p>Provider balance is shown only when Twilio returns it. Orbit never invents an SMS credit figure.</p></div><button type=\"button\" class=\"secondary\" id=\"vendorSmsRefreshV674\">Refresh</button></div><div class=\"orbit-stat-grid\"><article><small>Available Twilio balance</small><strong>${bal&&bal.balance!=null?esc(String(bal.currency||'USD'))+' '+Number(bal.balance).toFixed(2):'Unavailable'}</strong><p>${u.balanceError?esc(u.balanceError):(u.configuration?.configured?'Live provider account':'Twilio not configured')}</p></article><article><small>Sent \u00B7 last 30 days</small><strong>${Number(c.sent)||0}</strong><p>${Number(c.segments)||0} SMS segment${Number(c.segments)===1?'':'s'}</p></article><article><small>Failed \u00B7 last 30 days</small><strong>${Number(c.failed)||0}</strong><p>Failed sends are retained for audit.</p></article><article><small>Recorded provider cost</small><strong>${Number(c.estimatedSpend||0).toFixed(4)}</strong><p>Only provider-returned message prices are totalled.</p></article></div><div class=\"orbit-panel\"><h4>Recent Vendor Club SMS activity</h4><div class=\"orbit-table-wrap\"><table><thead><tr><th>Template</th><th>Status</th><th>Show</th><th>Segments / cost</th><th>Time</th></tr></thead><tbody>${(u.recent||[]).map(r=>`<tr><td>${esc(r.templateKey||'')}</td><td>${esc(r.status||'')}</td><td>${esc(r.eventKey||'\u2014')}</td><td>${Number(r.segments)||0}${r.price!=null?' \u00B7 '+esc(r.priceUnit||'')+' '+Math.abs(Number(r.price)).toFixed(4):''}</td><td>${esc(r.sentAt||r.createdAt||'')}</td></tr>`).join('')||'<tr><td colspan=\"5\">No Vendor Club SMS activity recorded yet.</td></tr>'}</tbody></table></div></div>`;$('vendorSmsRefreshV674')?.addEventListener('click',()=>loadVendorSmsAdminV674(true));}}\n  async function loadVendorSmsAdminV674(force=false){if(!force&&vendorSmsAdminV674){renderVendorSmsAdminV674(vendorSmsAdminV674);return;}try{const data=await api('/api/admin/vendors/club/sms',{cacheMs:0,timeoutMs:30000});renderVendorSmsAdminV674(data);}catch(e){const target=vendorSmsPaneV674==='usage'?$('vendorSmsUsageV674'):$('vendorSmsTemplatesV674');if(target)target.innerHTML=`<div class=\"orbit-info-banner warning\"><strong>Vendor Club SMS data unavailable</strong><span>${esc(e.message||'Unable to load SMS settings.')}</span></div>`;}}\n  function organisePokeAdminV618(){\n    const mount=$(\"memberStoreAdminMountV601\"),poke=mount?.querySelector('[data-member-store-pane-v601=\"poke-alerts\"]');if(!poke||poke.dataset.organisedV618)return;\n    poke.dataset.organisedV618=\"1\";const original=Array.from(poke.children),pages={};\n    for(const [key,label]of Object.entries(POKE_PAGES_V618)){const section=document.createElement('div');section.dataset.pokePageV618=key;section.className='orbit-poke-page-v618';section.setAttribute('aria-label',label);pages[key]=section;poke.appendChild(section);}\n    const move=(node,key)=>{if(node)pages[key].appendChild(node);};\n    move(poke.querySelector('.orbit-v613-delivery'),'poke-delivery');move(poke.querySelector('.orbit-v612-pc-registry'),'poke-pc');\n    const broker=poke.querySelector('.orbit-v609-stock-sources');\n    if(broker){\n      const products=broker.querySelector('#paProductEvidenceV610')?.closest('section'),engineer=broker.querySelector('#paScoutQueueV610')?.closest('section');\n      if(products){const label=document.createElement('label');label.className='orbit-poke-retailer-v618';label.textContent='Retailer';const select=document.createElement('select');select.id='paProductsRetailerV618';const originalSelect=broker.querySelector('#paSourceProviderRetailerV609');for(const option of originalSelect?.options||[])select.appendChild(option.cloneNode(true));label.appendChild(select);products.insertBefore(label,products.querySelector('#paInspectProductsV610'));const copy=products.querySelector('p');if(copy)copy.textContent='Choose a retailer here. Last confirmed stock may be old when a source is degraded; this view does not certify delivery.';move(products,'poke-products');}\n      move(engineer,'poke-source-engineer');\n      const scout=broker.querySelector('#paStockScoutRetailerV609')?.closest('.orbit-form-grid');if(scout){move(scout.previousElementSibling,'poke-stock-scout');move(scout,'poke-stock-scout');move(broker.querySelector('#paStockScoutResultV609'),'poke-stock-scout');}\n      move(broker,'poke-sources');\n    }\n    move(poke.querySelector('.orbit-v605-guardian-panel'),'poke-guardian');\n    move(poke.querySelector('#paEventTableV602')?.closest('.orbit-panel'),'poke-events');\n    move(poke.querySelector('#pokeAlertObservationFormV602')?.closest('details'),'poke-diagnostics');\n    const sms=document.createElement('section');sms.dataset.memberStorePaneV601='sms';sms.className='orbit-sms-page-v618';sms.hidden=true;\n    const smsHeader=document.createElement('div');smsHeader.className='orbit-panel-header';smsHeader.innerHTML='<div><p class=\"orbit-kicker\">MEMBERS CLUB</p><h2>SMS</h2><p>Manage the Twilio connection, approve Vendor Club message templates and inspect real usage.</p></div>';sms.appendChild(smsHeader);\n    const smsNav=document.createElement('div');smsNav.className='orbit-context-nav';smsNav.innerHTML='<button type=\"button\" data-vendor-sms-tab-v674=\"connection\">Connection & Delivery Settings</button><button type=\"button\" data-vendor-sms-tab-v674=\"templates\">SMS Templates</button><button type=\"button\" data-vendor-sms-tab-v674=\"usage\">Usage & Credit</button>';sms.appendChild(smsNav);\n    const connection=document.createElement('div');connection.dataset.vendorSmsPaneV674='connection';const templates=document.createElement('div');templates.dataset.vendorSmsPaneV674='templates';templates.id='vendorSmsTemplatesV674';templates.hidden=true;const usage=document.createElement('div');usage.dataset.vendorSmsPaneV674='usage';usage.id='vendorSmsUsageV674';usage.hidden=true;sms.append(connection,templates,usage);\n    const provider=poke.querySelector('.orbit-pa-provider-v603'),delivery=poke.querySelector('#pokeAlertSettingsFormV602')?.closest('.orbit-panel');if(provider)connection.appendChild(provider);if(delivery)connection.appendChild(delivery);poke.parentElement.appendChild(sms);smsNav.querySelectorAll('[data-vendor-sms-tab-v674]').forEach(b=>b.onclick=()=>vendorSmsShowPaneV674(b.dataset.vendorSmsTabV674));vendorSmsShowPaneV674('connection');\n    const operations=$('paOpsV614');\n    for(const node of original)if(node.parentElement===poke&&node!==operations)move(node,'poke-alerts');\n    if(operations)poke.appendChild(operations);\n    const toolbar=document.createElement('div');toolbar.className='orbit-poke-tools-v618';toolbar.innerHTML='<span id=\"pokePageTitleV618\"></span><button type=\"button\" class=\"secondary\" data-poke-refresh-v618>Refresh view</button>';poke.prepend(toolbar);\n    toolbar.querySelector('[data-poke-refresh-v618]').onclick=()=>loadMemberStoreAdminV601(true).catch(error=>setNotice(error.message,true));\n  }\n  function syncPokePageV618(){\n    const pane=state.currentMemberStorePaneV601||'overview',ops=$('paOpsV614');\n    document.querySelectorAll('[data-poke-page-v618]').forEach(node=>node.hidden=node.dataset.pokePageV618!==pane);\n    if(ops){ops.hidden=!POKE_OPERATIONS_V618[pane];if(!ops.hidden)paShowPaneV614(POKE_OPERATIONS_V618[pane]);}\n    if($('pokePageTitleV618'))$('pokePageTitleV618').textContent=POKE_PAGES_V618[pane]||'';\n    const wrapper=$('memberStoreAdminMountV601')?.querySelector('.orbit-member-store-admin-v601');if(wrapper)wrapper.dataset.pageV618=pane;\n  }\n  function memberStorePaneV601(name){\n    const value=['overview','products','orders','draws','topups','store-fulfilment','launch','wallets','settings','sms',...Object.keys(POKE_PAGES_V618)].includes(name)?name:'overview';state.currentMemberStorePaneV601=value;\n    const parent=POKE_PAGES_V618[value]?'poke-alerts':value;\n    document.querySelectorAll('[data-member-store-pane-v601]').forEach(node=>node.hidden=node.dataset.memberStorePaneV601!==parent);\n    document.querySelectorAll('[data-member-store-view]').forEach(button=>{const active=button.dataset.memberStoreView===value;button.classList.toggle('active',active);button.setAttribute('aria-selected',String(active));if(active)button.setAttribute('aria-current','page');else button.removeAttribute('aria-current');});\n    syncPokePageV618();if(POKE_OPERATIONS_V618[value])void loadPokeOpsV614();if(value==='sms'&&vendorSmsPaneV674!=='connection')void loadVendorSmsAdminV674();\n  }\n\n  async function memberStoreUploadImageV601(file,title,type){if(!file)return {mediaId:\"\",imageUrl:\"\"};if(!/^image\\/(webp|png|jpe?g)$/i.test(file.type||\"\"))throw new Error(\"Use a WebP, JPG or PNG image.\");if(file.size>5*1024*1024)throw new Error(\"Images must be 5 MB or smaller.\");const dataUrl=await fileToDataUrlV74(file);const image=new Image();const dimensions=await new Promise(resolve=>{image.onload=()=>resolve({width:image.naturalWidth,height:image.naturalHeight});image.onerror=()=>resolve({});image.src=dataUrl;});const data=await api(\"/api/admin/media\",{method:\"POST\",body:JSON.stringify({filename:file.name,title:title||file.name,tags:[\"member-store\",type].join(\",\"),scope:\"members-club\",dataUrl,width:dimensions.width,height:dimensions.height}),cacheMs:0,timeoutMs:30000});return {mediaId:data.item?.id||\"\",imageUrl:data.item?.url||\"\"};}\n  function memberStoreFormStatusOptionsV601(value){return [[\"draft\",\"Draft\"],[\"preview\",\"Preview\"],[\"coming_soon\",\"Coming Soon\"]].map(([v,l])=>`<option value=\"${v}\"${String(value||\"draft\")===v?\" selected\":\"\"}>${l}</option>`).join(\"\");}\n  function memberStoreTopUpsTableV712(rows=[]){\n    if(!rows.length)return \"<div class='orbit-empty-state'><strong>No Member Credit top ups found</strong><span>Shopify Member Credit checkouts will appear here as soon as they are created.</span></div>\";\n    return table([\"Order / checkout\",\"Member\",\"Credit\",\"Shopify payment\",\"Orbit settlement\",\"Email\",\"Action\"],rows.map(row=>{const codes=(row.discountCodes||[]).join(', '),status=row.settlementStatus||row.checkoutStatus||'pending',needsRepair=status!=='credited'&&status!=='reversed';return `<tr><td><strong>${esc(row.shopifyOrderName||row.shopifyOrderId||'Pending Shopify order')}</strong><small>${esc(row.checkoutId||'')}</small><small>${esc(memberStoreDateV601(row.createdAt))}</small></td><td><strong>${esc(row.memberName||row.memberNumber||row.subscriptionId||'Member')}</strong><small>${esc(row.memberNumber||'')} \u00B7 ${esc(row.email||'')}</small></td><td><strong>${esc(memberStoreMoneyV601(row.grossCreditPence||0))}</strong><small>Expected ${esc(memberStoreMoneyV601(row.expectedPayPence||0))}</small></td><td><strong>${esc(memberStoreMoneyV601(row.cashPaidPence||0))}</strong><small>${codes?`Promo ${esc(codes)} \u00B7 ${esc(memberStoreMoneyV601(row.discountPence||0))} discount`:'No promo'} \u00B7 ${esc(row.financialStatus||row.providerStatus||'pending')}</small></td><td><span class=\"orbit-status-pill ${status==='credited'?'success':status==='reconciliation_error'?'danger':status==='reversed'?'warning':'muted'}\">${esc(memberStoreStatusV601(status))}</span><small>${row.ledgerId?`Ledger ${esc(row.ledgerId)}`:(row.reconcileError?esc(row.reconcileError):esc(row.providerReason||'Awaiting reconciliation'))}</small></td><td>${esc(row.emailStatus||'not queued')}<small>${esc(row.emailSentAt?memberStoreDateV601(row.emailSentAt):'')}</small></td><td>${needsRepair?`<button type=\"button\" class=\"secondary\" data-ms-topup-reconcile-v712=\"${esc(row.checkoutId)}\">Reconcile now</button>`:'\u2014'}</td></tr>`;}),\"No Member Credit top ups found.\");\n  }\n  async function loadMemberStoreTopUpsV712({button=null}={}){if(button)setLoading(button,true);try{const query=new URLSearchParams();const search=$('msTopUpSearchV712')?.value?.trim();const status=$('msTopUpStatusV712')?.value||'';const promo=$('msTopUpPromoV712')?.value?.trim();if(search)query.set('search',search);if(status)query.set('status',status);if(promo)query.set('promo',promo);query.set('limit','200');const result=await api('/api/admin/member-store/top-ups?'+query.toString(),{cacheMs:0,timeoutMs:20000});const mount=$('msTopUpsMountV712');if(mount)mount.innerHTML=memberStoreTopUpsTableV712(result.topUps||[]);const summary=$('msTopUpsSummaryV712');if(summary)summary.textContent=`${Number(result.counts?.total||0)} top ups \u00B7 ${Number(result.counts?.credited||0)} credited \u00B7 ${Number(result.counts?.pending||0)} pending \u00B7 ${Number(result.counts?.errors||0)} errors`;bindMemberStoreTopUpsV712();return result;}finally{if(button)setLoading(button,false);}}\n  function bindMemberStoreTopUpsV712(){document.querySelectorAll('[data-ms-topup-reconcile-v712]').forEach(button=>{if(button.dataset.boundV712)return;button.dataset.boundV712='1';button.addEventListener('click',async()=>{setLoading(button,true);try{const result=await api('/api/admin/member-store/top-ups/'+encodeURIComponent(button.dataset.msTopupReconcileV712)+'/reconcile',{method:'POST',body:'{}',cacheMs:0,timeoutMs:30000});setNotice(result.status==='credited'?'Member Credit top up reconciled and credited.':(result.error||'Top up checked.'));await loadMemberStoreTopUpsV712();}catch(error){setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});});}\n  function renderMemberStoreAdminV601(data){memberStoreAdminDataV601=data;const mount=$(\"memberStoreAdminMountV601\");if(!mount)return;const launch=data.launch||{},settings=data.settings||{},paymentConnection=data.paymentConnection||{},bundles=data.bundles||[],products=data.products||[],draws=data.draws||[],wallets=data.wallets||[],orders=data.orders||[],storeFulfilments=data.storeFulfilments||[],launchCredit=data.launchCredit||{},launchCampaign=data.launchCampaign||{},launchBroadcast=data.launchBroadcast||{},launchReadiness=data.launchReadiness||{},launchBlockers=Array.isArray(launchReadiness.blockers)?launchReadiness.blockers:[],launchCreditRemaining=Math.max(0,Number(launchCredit.eligible||0)-Number(launchCredit.granted||0)),poke=data.pokeAlerts||{},pokeSettings=poke.settings||{},pokeLaunch=poke.launch||{},pokeProvider=poke.provider||{},pokeSourceProviders=poke.sourceProviders||[];\n    const productRows=products.length?products.map(row=>`<article class=\"orbit-member-store-admin-item-v601\"><div class=\"orbit-member-store-admin-thumb-v601\">${row.imageUrl?`<img src=\"${esc(row.imageUrl)}\" alt=\"\">`:\"<span>\uD83D\uDCE6</span>\"}</div><div><span class=\"orbit-pill\">${esc(memberStoreStatusV601(row.status))}</span><h3>${esc(row.title)}</h3><p>${esc(row.description||\"No description yet.\")}</p><small>${esc(memberStoreMoneyV601(row.creditPricePence))} Member Credit \u00B7 ${esc(String(row.stock))} in stock</small></div><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-ms-product-edit-v601=\"${esc(row.id)}\">Edit</button>${(launch.productOrdersEnabled||launch.sandboxCommerceEnabled)&&row.status!==\"active\"?`<button type=\"button\" data-ms-status-v601=\"product:${esc(row.id)}:active\">Activate</button>`:\"\"}<button type=\"button\" class=\"danger\" data-ms-archive-v601=\"product:${esc(row.id)}\">Archive</button></div></article>`).join(\"\"):\"<div class='orbit-empty-state'><strong>No Members Store products yet</strong><span>Create a normal members-only product below.</span></div>\";\n    const drawRows=draws.length?draws.map(row=>`<article class=\"orbit-member-store-admin-item-v601\"><div class=\"orbit-member-store-admin-thumb-v601\">${row.imageUrl?`<img src=\"${esc(row.imageUrl)}\" alt=\"\">`:\"<span>\uD83C\uDFC6</span>\"}</div><div><span class=\"orbit-pill\">${esc(memberStoreStatusV601(row.status))}</span><h3>${esc(row.title)}</h3><p>${esc(row.description||\"No description yet.\")}</p><small>${esc(memberStoreMoneyV601(row.entryCreditPence))} per entry \u00B7 ${esc(String(row.totalEntryCount||0))} entries \u00B7 closes ${esc(memberStoreDateV601(row.closeAt))} \u00B7 draws ${esc(memberStoreDateV601(row.drawAt))}</small></div><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-ms-draw-edit-v601=\"${esc(row.id)}\">Edit</button><button type=\"button\" class=\"secondary\" data-ms-draw-entries-v601=\"${esc(row.id)}\">Entries</button>${launch.sandboxCommerceEnabled?`<button type=\"button\" class=\"secondary\" data-ms-draw-reset-sandbox-v606=\"${esc(row.id)}\">Reset test data</button>`:\"\"}${(launch.drawEntriesEnabled||launch.sandboxCommerceEnabled)&&[\"draft\",\"preview\",\"coming_soon\"].includes(row.status)?`<button type=\"button\" data-ms-status-v601=\"draw:${esc(row.id)}:open\">Open draw</button>`:\"\"}<button type=\"button\" class=\"danger\" data-ms-archive-v601=\"draw:${esc(row.id)}\">Archive</button></div></article>`).join(\"\"):\"<div class='orbit-empty-state'><strong>No Orbit Chases yet</strong><span>Create your first Chase below. The approved test member can exercise the complete sandbox entry flow while ordinary members remain on the stable experience.</span></div>\";\n    const walletRows=wallets.length?table([\"Member\",\"Email\",\"Balance\",\"Updated\"],wallets.map(row=>`<tr><td><strong>${esc(row.memberNumber||row.subscriptionId||\"\u2014\")}</strong><small>${esc(row.subscriptionId||\"\")}</small></td><td>${esc(row.email||\"\u2014\")}</td><td><strong>${esc(memberStoreMoneyV601(row.balancePence))}</strong></td><td>${esc(memberStoreDateV601(row.updatedAt))}</td></tr>`),\"No Member Credit wallets yet.\"):\"<div class='orbit-empty-state'><strong>No Member Credit wallets yet</strong><span>Issue test credit to the existing Orbit test member to begin previewing the experience.</span></div>\",orderRows=orders.length?table([\"Order\",\"Member\",\"Items\",\"Credit\",\"Fulfilment\",\"Tracking\"],orders.map(row=>`<tr><td><strong>${esc(row.orderId||\"\u2014\")}</strong><small>${esc(memberStoreDateV601(row.createdAt))}</small></td><td>${esc(row.memberNumber||row.subscriptionId||row.email||\"\u2014\")}</td><td>${esc((row.items||[]).map(item=>`${item.quantity||1} \u00D7 ${item.title||\"Item\"}`).join(\", \")||\"\u2014\")}</td><td><strong>${esc(memberStoreMoneyV601(row.totalCreditPence||0))}</strong></td><td>${esc(memberStoreStatusV601(row.status||\"processing\"))}</td><td>${esc(row.trackingNumber||\"\u2014\")}</td></tr>`),\"No Members Store orders yet.\"):\"<div class='orbit-empty-state'><strong>No Members Store orders yet</strong><span>Completed preview/live purchases will appear here and physical items will flow into canonical Fulfilment.</span></div>\",storeFulfilmentRows=storeFulfilments.length?table([\"Order / parcel\",\"Member\",\"Items\",\"Delivery\",\"Status\",\"Tracking\"],storeFulfilments.map(row=>`<tr><td><strong>${esc(row.shipmentId||row.sourceId||\"\u2014\")}</strong><small>${esc(memberStoreDateV601(row.createdAt))}</small></td><td><strong>${esc(row.memberName||row.memberNumber||\"Member\")}</strong><small>${esc(row.memberNumber||\"\")} \u00B7 ${esc(row.email||\"\")}</small></td><td>${esc((row.contents||[]).map(item=>`${item.quantity||1} \u00D7 ${item.name||item.title||\"Item\"}`).join(\", \")||\"\u2014\")}</td><td>${row.deliveryComplete?`<strong>${esc(row.delivery?.postcode||\"\")}</strong><small>${esc([row.delivery?.addressLine1,row.delivery?.city].filter(Boolean).join(\", \"))}</small>`:`<span class=\"orbit-status-pill danger\">Address needed</span>`}</td><td><span class=\"orbit-status-pill ${row.status===\"awaiting_label\"?\"warning\":row.status===\"dispatched\"||row.status===\"delivered\"?\"success\":\"muted\"}\">${esc(memberStoreStatusV601(row.status||\"awaiting_label\"))}</span></td><td>${esc(row.trackingNumber||\"\u2014\")}</td></tr>`),\"No Store fulfilments yet.\"):\"<div class='orbit-empty-state'><strong>No Store fulfilments yet</strong><span>Paid Members Shop orders will appear here automatically ready for label generation.</span></div>\",testMembers=data.testMembers||[],defaultTestLookup=(testMembers[0]?.memberNumber||testMembers[0]?.subscriptionId||testMembers[0]?.email||\"\");\n    const pokeSourceRows=(poke.sources||[]).map(source=>{\n      const health=source.health||{},status=health.status||\"waiting\",tone=status===\"healthy\"?\"success\":status===\"attention\"?\"danger\":status===\"degraded\"?\"warning\":\"\",tracked=Number(health.trackedProducts??health.productsSeen??0),lastGood=Number(health.lastKnownGoodProducts??tracked),fails=Number(health.consecutiveFailures||0),sourceProducts=(poke.products||[]).filter(row=>String(row.sourceId||\"\")===String(source.id)).slice(0,12),warnings=Array.isArray(health.warnings)?health.warnings:[];\n      const capability=health.stockCapable?`${esc(String(health.stockKnownProducts||0))} stock-readable`:(tracked?\"catalogue only\":\"awaiting inventory\"),mode=health.acquisitionMode?String(health.acquisitionMode).replaceAll(\"_\",\" \"):\"not established\";\n      const certification=source.certification||{},certLabels={certified:\"Certified working\",awaiting_live_transition:\"Awaiting a live stock event\",discovery_only:\"Discovery only\",queue_only:\"Queue only\",degraded:\"Degraded\",unproven:\"Not yet proven\"};\n      const productsHtml=sourceProducts.length?sourceProducts.map(row=>`<li><span><strong>${esc(row.title||row.productKey||\"Pok\u00E9mon TCG product\")}</strong><small>${esc(row.category||\"Pok\u00E9mon TCG\")} \u00B7 ${esc(memberStoreStatusV601(row.currentAvailability||row.observedState||\"unknown\"))} now \u00B7 last confirmed ${esc(memberStoreStatusV601(row.stockState||\"unknown\"))}</small></span>${row.url?`<a href=\"${esc(row.url)}\" target=\"_blank\" rel=\"noopener\">Open</a>`:\"\"}</li>`).join(\"\"):`<li><span><strong>No tracked products yet</strong><small>Orbit will preserve the last-known-good catalogue while this source retries.</small></span></li>`;\n      return `<article class=\"orbit-pa-admin-source-v602 orbit-pa-live-source-v603 orbit-v607-source-card\"><div><span class=\"orbit-pill ${tone}\">${esc(source.enabled?memberStoreStatusV601(status):\"Disabled\")}</span><h3>${esc(source.name||source.id)}</h3><p class=\"orbit-v612-certification\"><strong>${esc(certLabels[certification.status]||\"Not yet proven\")}</strong>${certification.verifiedChannels?.length?` \u00B7 ${esc(certification.verifiedChannels.join(\", \"))}`:\"\"}</p><p>${esc(String(source.coverage||\"national\").replaceAll(\"_\",\" \"))} \u00B7 checks about every ${esc(String(source.pollEveryMinutes||5))} min</p><small>${health.lastSuccessAt?`Last healthy ${esc(memberStoreDateV601(health.lastSuccessAt))} \u00B7 ${esc(String(tracked))} products now \u00B7 ${esc(String(lastGood))} last known good`:\"Waiting for first successful retailer scan\"}${fails?`<br>${esc(String(fails))} consecutive failure${fails===1?\"\":\"s\"}${health.nextRetryAt?` \u00B7 retry ${esc(memberStoreDateV601(health.nextRetryAt))}`:\"\"}`:\"\"}${health.lastError?`<br><b>${esc(health.lastError)}</b>`:\"\"}</small><div class=\"orbit-v607-source-meta\"><span>Acquisition \u00B7 ${esc(mode)}</span><span>Environment \u00B7 ${esc(health.executionEnvironment||\"Not checked\")}</span><span>Source type \u00B7 ${esc(health.sourceType||\"Not checked\")}</span><span>Valid product \u00B7 ${esc(memberStoreDateV601(health.lastValidProductObservation))}</span><span>Parser failures \u00B7 ${esc(String(health.parserFailures||0))}</span><span>Capability \u00B7 ${esc(capability)}</span>${health.httpStatus?`<span>HTTP \u00B7 ${esc(String(health.httpStatus))}</span>`:\"\"}</div>${warnings.length?`<div class=\"orbit-v607-source-warning\">${warnings.slice(0,2).map(w=>`<span>${esc(w)}</span>`).join(\"\")}</div>`:\"\"}<details class=\"orbit-v612-proof\"><summary>What is actually proven?</summary><p>${esc(certification.note||\"No complete real stock-to-member delivery chain has been recorded.\")}</p>${Object.entries(certification.checks||{}).map(([name,passed])=>`<p>${passed?\"\u2713\":\"\u25CB\"} ${esc(name.replace(/([A-Z])/g,\" $1\"))}</p>`).join(\"\")}</details><details class=\"orbit-v607-source-products\"><summary>Products Orbit sees \u00B7 ${esc(String(sourceProducts.length||tracked))}</summary><ul>${productsHtml}</ul></details></div><div class=\"orbit-pa-source-actions-v603\"><a href=\"${esc(source.monitorUrl||\"#\")}\" target=\"_blank\" rel=\"noopener\">Open retailer</a><button type=\"button\" class=\"secondary\" data-pa-run-source-v603=\"${esc(source.id)}\">Check now</button></div></article>`;\n    }).join(\"\")||\"<div class='orbit-empty-state'><strong>No sources configured</strong></div>\";\n    const pokeEventRows=(poke.events||[]).length?table([\"When\",\"Retailer\",\"Product\",\"Event\",\"State\",\"Action\"],(poke.events||[]).slice(0,30).map(event=>`<tr><td>${esc(memberStoreDateV601(event.createdAt))}</td><td>${esc(event.retailerId||event.sourceId||\"\u2014\")}</td><td><strong>${esc(event.title||event.productKey||\"\u2014\")}</strong></td><td>${esc(memberStoreStatusV601(event.type||\"event\"))}</td><td>${esc(memberStoreStatusV601(event.stockState||\"unknown\"))}</td><td><button type=\"button\" class=\"secondary\" data-pa-fanout-v602=\"${esc(event.eventId)}\">Preview matches</button></td></tr>`),\"No stock transitions have been recorded yet.\"):\"<div class='orbit-empty-state'><strong>No stock transitions yet</strong><span>Use the test observation form below to exercise the transition/deduplication engine without contacting a retailer.</span></div>\";\n    const sourceBrokerRows=(poke.sources||[]).map(source=>{const cfg=source.sourceBroker?.configuredProvider||{};return `<option value=\"${esc(source.id)}\">${esc(source.name||source.id)}${cfg.enabled?` \u00B7 ${esc(cfg.providerLabel||cfg.format||\"partner source\")}`:\"\"}</option>`;}).join(\"\");\n    const pcProbe=poke.stockProbe||{},pcHealth=(poke.sources||[]).find(row=>row.id===\"pokemon-center-uk\")?.health||{};\n    const pcPanelV612=`<section class=\"orbit-panel orbit-v612-pc-registry\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">POK\u00C9MON CENTER UK</p><h3>Exact UK products, separate stock checks</h3><p>Search discovers a product. Only a trustworthy observation of its exact UK product page can confirm stock. A failed check means unknown, never sold out.</p></div></div><div class=\"orbit-v607-source-meta\"><span>Search: ${esc(pcHealth.discoveryStatus||\"Not checked\")}</span><span>Last search: ${esc(memberStoreDateV601(pcHealth.lastDiscoveryAt))}</span><span>UK products discovered: ${esc(String(pcHealth.discoveryCount||0))}</span></div>${pcHealth.lastDiscoveryError?`<p>${esc(pcHealth.lastDiscoveryError)}</p>`:\"\"}<form id=\"paPcDiscoveryV612\" class=\"orbit-form-grid\"><label>Search a UK SKU, product or set<input id=\"paPcSearchV612\" maxlength=\"160\" placeholder=\"10-10416-109 or Pitch Black\"></label><div class=\"orbit-form-action\"><button type=\"submit\">Discover UK products</button><button type=\"button\" id=\"paPcRegistryOpenV612\" class=\"secondary\">View UK SKU registry</button></div></form><details><summary>Add a known official UK product</summary><form id=\"paPcSeedV612\" class=\"orbit-form-grid\"><label>Exact UK product URL<input id=\"paPcUrlV612\" type=\"url\" required placeholder=\"https://www.pokemoncenter.com/en-gb/product/\u2026\"></label><label>Matching SKU<input id=\"paPcSkuV612\" required maxlength=\"64\"></label><label>Product title<input id=\"paPcTitleV612\" maxlength=\"240\"></label><div class=\"orbit-form-action\"><button type=\"submit\">Add for monitoring</button></div></form><p>This creates an unconfirmed registry entry. It cannot send an in-stock alert.</p></details><div id=\"paPcActionResultV612\" role=\"status\"></div><details class=\"orbit-v612-probe\"><summary>Connect an owner-controlled browser probe</summary><p>A normal visible browser can be used instead of the server for Pok\u00E9mon Center observations. It stops on a queue or access challenge and never purchases anything or bypasses protection. Pair only when you have the separate Orbit Stock Probe package ready. While paired, server product checks pause; revoking restores the server path.</p><p><strong>${pcProbe.enabled?\"Paired\":\"Not paired\"}</strong> \u00B7 ${esc(pcProbe.lastStatus||\"No browser observations yet\")} \u00B7 Last seen ${esc(memberStoreDateV601(pcProbe.lastSeenAt))}</p><button type=\"button\" id=\"paPcPairV612\" ${pcProbe.enabled?\"disabled\":\"\"}>Pair and save connection file</button> <button type=\"button\" class=\"secondary\" id=\"paPcRevokeV612\" ${pcProbe.enabled?\"\":\"disabled\"}>Revoke browser connection</button><p id=\"paPcProbeResultV612\" role=\"status\"></p><small>The connection file is shown once. Keep it private; never put it in a Development Note, diagnostic export or AI ZIP.</small></details></section>`;\n    const stockScoutPanelV609=renderPokeDeliveryV613(poke)+pcPanelV612+`<div class=\"orbit-panel orbit-v609-stock-sources\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">STOCK SOURCE BROKER</p><h3>Partner feeds, commercial APIs & Orbit Stock Scout</h3><p>Give any retailer a legitimate feed/API in front of the native monitor. Orbit tries the configured source first and safely falls back to the public retailer adapter. Credentials are encrypted server-side and never returned to this browser, diagnostics, AI handover or release ZIP.</p></div><span class=\"orbit-pill\">${esc(String(poke.stats?.configuredPartnerFeeds||0))} partner source${Number(poke.stats?.configuredPartnerFeeds||0)===1?\"\":\"s\"}</span></div><div class=\"orbit-info-banner\"><strong>Discovery and stock can use different sources.</strong><span>Affiliate/catalogue feeds can discover SKUs while a faster certified source monitors known-product availability. A source is not treated as live until Orbit certification proves the end-to-end path.</span></div><form id=\"paSourceProviderFormV609\" class=\"orbit-form-grid\"><label>Retailer<select id=\"paSourceProviderRetailerV609\">${sourceBrokerRows}</select></label><label class=\"orbit-checkbox-line\"><input id=\"paSourceProviderEnabledV609\" type=\"checkbox\"> Enable this partner/commercial source</label><div class=\"orbit-form-span-2\"><strong>Accounts already approved, as reported by Mark</strong><p>Avelon Network, Forbidden Planet, Partnerize, CJ Affiliate and Awin. Impact still needs website verification. Do not reapply merely because a merchant feed has not been confirmed.</p></div><label>Actual feed network<select id=\"paSourceNetworkV613\"><option value=\"\">Not recorded</option><option value=\"avelon\">Avelon Network</option><option value=\"forbidden-planet\">Forbidden Planet</option><option value=\"partnerize\">Partnerize</option><option value=\"cj\">CJ Affiliate</option><option value=\"awin\">Awin</option><option value=\"impact\">Impact (website verification pending)</option><option value=\"direct\">Other licensed direct feed</option></select></label><div><label class=\"orbit-checkbox-line\"><input type=\"checkbox\" id=\"paMerchantAccessV613\"> This specific merchant has approved our access</label><label class=\"orbit-checkbox-line\"><input type=\"checkbox\" id=\"paFeedAccessV613\"> This specific feed/API permits this stock-monitoring use</label><small>Account approval alone is not either permission. Unconfirmed feeds remain discovery-only.</small></div><label>Provider / network label<input id=\"paSourceProviderLabelV609\" placeholder=\"Awin \u00B7 Partnerize \u00B7 Impact \u00B7 commercial API\"></label><label>Feed format<select id=\"paSourceProviderFormatV609\"><option value=\"normalized_json\">Normalized JSON</option><option value=\"google_csv\">Google Shopping CSV</option><option value=\"google_xml\">Google Shopping XML</option></select></label><label class=\"orbit-form-span-2\">HTTPS feed/API endpoint<input id=\"paSourceProviderEndpointV609\" type=\"url\" placeholder=\"https://\u2026\"></label><label>Feed capability<select id=\"paSourceProviderCapabilityV610\"><option value=\"discovery\">Discovery only (safe default)</option><option value=\"stock\">Discovery + timestamped stock</option></select></label><label>Maximum stock age (seconds)<input id=\"paSourceProviderMaxAgeV610\" type=\"number\" min=\"60\" max=\"86400\" value=\"900\"></label><label class=\"orbit-checkbox-line orbit-form-span-2\"><input id=\"paSourceProviderCompleteV610\" type=\"checkbox\"> Provider guarantees a complete catalogue. JSON must also declare catalogueComplete and a fresh generatedAt timestamp.</label><label>Authentication<select id=\"paSourceProviderAuthModeV609\"><option value=\"none\">None</option><option value=\"bearer\">Bearer token</option><option value=\"header\">Custom header token</option></select></label><label>Custom auth header<input id=\"paSourceProviderAuthHeaderV609\" placeholder=\"X-API-Key\"></label><label class=\"orbit-form-span-2\">Secret token / password<input id=\"paSourceProviderSecretV609\" type=\"password\" autocomplete=\"new-password\" placeholder=\"Leave blank to keep the saved encrypted secret\"></label><label class=\"orbit-form-span-2\">Optional field map JSON<textarea id=\"paSourceProviderFieldMapV609\" rows=\"4\" placeholder='{\"title\":\"name\",\"url\":\"product_url\",\"availability\":\"stock\"}'></textarea></label><div class=\"orbit-form-action\"><button type=\"submit\">Save source securely</button><button type=\"button\" class=\"secondary\" id=\"paSourceProviderTestV609\">Test selected source</button></div></form><div id=\"paSourceProviderResultV609\" class=\"orbit-action-result\"></div><hr><section class=\"orbit-panel\"><h3>View products Orbit sees</h3><p>The selected retailer above controls this view. \u201CLast confirmed stock\u201D may be old when a source is degraded; unknown scans do not erase it.</p><button type=\"button\" id=\"paInspectProductsV610\">View products Orbit sees</button><div id=\"paProductEvidenceV610\" aria-live=\"polite\"></div><button type=\"button\" id=\"paProductsMoreV610\" hidden>Load more products</button></section><section class=\"orbit-panel\"><h3>Source Engineer investigation queue</h3><p>One investigation per retailer/root cause. Automatic research is budget-gated and limited to one attempt per six hours across the queue. Deterministic polling runs independently.</p><label class=\"orbit-checkbox-line\"><input id=\"paAutoScoutV610\" type=\"checkbox\" ${pokeSettings.stock_scout_automatic_enabled!==false?\"checked\":\"\"}> Automatic Stock Scout research</label><button type=\"button\" id=\"paSaveAutoScoutV610\">Save research policy</button><div id=\"paScoutQueueV610\">${(poke.stockScout?.queue||[]).map(row=>`<article class=\"orbit-info-banner\"><strong>${esc(row.source_id||\"Retailer\")} \u00B7 ${esc(row.status||\"pending\")}</strong><span>${esc(row.reason||row.code||\"\")}</span><small>Last attempt: ${esc(row.last_attempt_at||\"Not attempted\")} \u00B7 Candidate only, no production edits.</small></article>`).join(\"\")||\"No source investigations queued yet.\"}</div></section><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">ORBIT STOCK SCOUT</p><h3>Deep retailer source investigation</h3><p>Run the high-intelligence source-engineering agent only when a retailer needs investigation. Stock Scout can web-research legitimate APIs, affiliate feeds, structured public sources and commercial providers, but it cannot solve CAPTCHAs, defeat access controls, change production adapters or deploy code.</p></div></div><div class=\"orbit-form-grid\"><label>Retailer to investigate<select id=\"paStockScoutRetailerV609\">${sourceBrokerRows}</select></label><div class=\"orbit-form-action\"><button type=\"button\" id=\"paStockScoutRunV609\">Research source gap</button></div></div><div id=\"paStockScoutResultV609\" class=\"orbit-action-result\"></div></div>`;\n    const guardian=poke.guardian||{},guardianIssues=Array.isArray(guardian.issues)?guardian.issues:[],guardianIssueRows=guardianIssues.length?guardianIssues.map(issue=>`<article class=\"orbit-v605-guardian-issue ${esc(issue.severity||\"medium\")}\"><strong>${esc(issue.title||\"Monitoring issue\")}</strong><span>${esc(issue.reason||\"\")}</span><small>${esc(issue.sourceId||\"\")}</small></article>`).join(\"\"):`<div class=\"orbit-info-banner success\"><strong>Deterministic monitor health looks good</strong><span>The Guardian only calls low-cost AI when a real anomaly needs interpretation. Routine retailer scans never require AI.</span></div>`,pokeProducts=(poke.products||[]),productHealthRows=pokeProducts.length?table([\"Retailer\",\"Product\",\"Category\",\"State\",\"Seen / missing\",\"URL\"],pokeProducts.slice(0,100).map(row=>`<tr><td>${esc(row.sourceId||\"\u2014\")}</td><td><strong>${esc(row.title||row.productKey||\"\u2014\")}</strong></td><td>${esc(row.category||\"\u2014\")}</td><td>${esc(memberStoreStatusV601(row.stockState||\"unknown\"))}</td><td>${esc(row.lastSeenAt?memberStoreDateV601(row.lastSeenAt):\"Never\")} \u00B7 ${esc(String(row.missingScans||0))} miss(es)</td><td>${row.url?`<a href=\"${esc(row.url)}\" target=\"_blank\" rel=\"noopener\">Open</a>`:\"\u2014\"}</td></tr>`),\"No Pok\u00E9mon TCG products tracked yet.\"):\"<div class='orbit-empty-state'><strong>No tracked products yet</strong><span>Run the retailer monitors to build the quiet baseline.</span></div>\",pokeGuardianPanel=`<div class=\"orbit-panel orbit-v605-guardian-panel\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">POK\u00C9 ALERTS GUARDIAN</p><h3>Monitoring the monitors</h3><p>A deterministic health layer watches every retailer for zero-product scans, source errors, suspicious disappearances and parser drift. Cheap AI is invoked only when there is a meaningful anomaly; it can diagnose and recommend, but it cannot rewrite production code.</p></div><button type=\"button\" id=\"paGuardianRunV605\">Run Guardian now</button></div><div class=\"orbit-v605-guardian-status\"><strong>${esc(memberStoreStatusV601(guardian.status||\"healthy\"))}</strong><span>AI lane: ${esc(guardian.aiLane||\"routine-luna-on-anomaly\")} \u00B7 Production writes: OFF</span></div><div class=\"orbit-v605-guardian-issues\">${guardianIssueRows}</div><div id=\"paGuardianResultV605\" class=\"orbit-action-result\"></div><details><summary><strong>What Orbit currently sees</strong> \u00B7 ${esc(String(pokeProducts.length))} tracked products</summary><p class=\"orbit-muted\">Use this to sanity-check that the monitors are seeing real Pok\u00E9mon TCG products rather than unrelated merchandise.</p>${productHealthRows}</details></div>`;\n    mount.innerHTML=`<div class=\"orbit-member-store-admin-v601\"><section class=\"orbit-member-store-safety-v601\"><div><p class=\"orbit-kicker\">${launch.publicLive?\"MEMBERS CLUB \u00B7 LIVE COMMERCE\":\"MEMBERS CLUB \u00B7 PRIVATE LAUNCH TEST\"}</p><h2>Members Shop \u00B7 Orbit Chase</h2><p>${launch.publicLive?\"Orbit Chase, Members Credit and the Members Shop are live for eligible members. Pok\u00E9 Alerts remains hidden from the Members Area while its separate work continues.\":\"The Active Review Member can exercise the real Shopify Member Credit checkout, Members Shop purchases and Orbit Chase entries while ordinary members remain on the stable Members Area. Pok\u00E9 Alerts stays hidden from members.\"}</p></div><div class=\"orbit-member-store-safety-badges-v601\"><span>${launch.publicLive?\"Eligible members live\":\"Review member only\"}</span><span>${launch.publicLive?\"Live commerce ON\":\"Sandbox commerce ON\"}</span><span>${launch.publicLive?\"Launch persisted\":\"Public launch LOCKED\"}</span></div></section>\n      <section data-member-store-pane-v601=\"overview\"><div class=\"orbit-member-store-kpis-v601\"><article><small>Store products</small><strong>${products.length}</strong></article><article><small>Orbit Chases</small><strong>${draws.length}</strong></article><article><small>Wallets</small><strong>${wallets.length}</strong></article><article><small>Launch state</small><strong>${launch.publicLive?(launch.silentLiveProving?\"LIVE \u00B7 SILENT\":\"LIVE\"):launch.sandboxCommerceEnabled?\"Sandbox\":\"Paused\"}</strong></article></div><div class=\"orbit-panel\"><h3>Member Credit bundles</h3><div class=\"orbit-member-store-bundles-v601\">${bundles.map(b=>`<article><strong>${esc(memberStoreMoneyV601(b.payPence))}</strong><span>pay</span><b>${esc(memberStoreMoneyV601(b.creditPence))}</b><small>Member Credit</small></article>`).join(\"\")}</div><p class=\"orbit-muted\">Member Credit uses the protected MSTX Holdings Shopify checkout. Orbit credits only an authoritative paid Shopify order. Webhook retries, page refreshes and status reconciliation are idempotent.</p></div><div class=\"orbit-panel orbit-v606-mobile-preview-admin\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">ACTIVE REVIEW MEMBER</p><h3>Open the launch sandbox on your phone</h3><p>Generate a short lived one time sign in link for the protected review member. This remains available for controlled diagnostics during silent-live proving.</p></div></div><div class=\"orbit-form-grid\"><label>Review member<input id=\"msSandboxMemberV606\" list=\"msTestMembersListV601\" value=\"${esc(defaultTestLookup)}\" placeholder=\"Member number, subscription ID or email\"></label><div class=\"orbit-form-action\"><button type=\"button\" id=\"msSandboxGenerateV606\">Generate mobile QR</button></div></div><div id=\"msSandboxMobileResultV606\" class=\"orbit-v606-sandbox-link\" hidden></div></div><div class=\"orbit-panel orbit-v709-launch-readiness\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">PROTECTED LAUNCH CONTROL</p><h3>${launch.publicLive?\"Orbit Chase and Members Shop are live\":\"Launch readiness\"}</h3><p>V715 quietly opens Orbit Chase and the Members Shop to eligible members for final real-account proving. The launch email and Member Area broadcast remain held until you explicitly announce the launch.</p></div><span class=\"orbit-status-pill ${launch.publicLive||launchReadiness.ready?\"success\":launchBlockers.length?\"warning\":\"muted\"}\">${launch.publicLive?(launch.silentLiveProving?\"LIVE \u00B7 SILENT\":\"LIVE\"):launchReadiness.ready?\"READY\":\"BLOCKED\"}</span></div><div class=\"orbit-member-store-kpis-v601\"><article><small>MSTX Shopify</small><strong>${paymentConnection.ready?\"Ready\":\"Check\"}</strong></article><article><small>Launch Chases</small><strong>${esc(String(launchReadiness.candidateDrawCount??0))} / 4</strong></article><article><small>Shop products</small><strong>${esc(String(launchReadiness.candidateProductCount??0))}</strong></article><article><small>Current entries</small><strong>${esc(String(launchReadiness.currentEntryCount??launchReadiness.sandboxEntryCount??0))}</strong></article></div><p><strong>Store:</strong> ${esc(paymentConnection.shop||paymentConnection.approvedShop||\"zqtnxw-md.myshopify.com\")} \u00B7 <strong>Legal approval:</strong> ${esc(launch.legalApproval||\"pending\")} \u00B7 <strong>Payment approval:</strong> ${esc(launch.paymentApproval||\"pending\")}</p>${launchBlockers.length?`<div class=\"orbit-v709-launch-blockers\"><strong>Still required before announcement</strong><ul>${launchBlockers.map(item=>`<li>${esc(item)}</li>`).join(\"\")}</ul></div>`:`<div class=\"orbit-info-banner success\"><strong>${launch.silentLiveProving?\"Silent-live proving is green\":\"Announcement gates passed\"}</strong><span>${launch.silentLiveProving?\"Eligible members can use Orbit Chase and the Members Shop now. Communications are still held while you complete your real-member tests.\":\"The \u00A32 credit, email and Member Area broadcast are ready for the explicit announcement action.\"}</span></div>`}<div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" id=\"msPrepareLaunchV714\" ${launch.publicLive?\"\":\"disabled\"}>Prepare announcement</button><button type=\"button\" id=\"msLaunchPublicV709\" class=\"${launchReadiness.announcementReady&&launch.publicLive?\"orbit-v709-launch-button\":\"secondary\"}\" ${launchReadiness.announcementReady&&launch.publicLive?\"\":\"disabled\"}>${launch.announcedAt?\"Launch announced\":\"Announce launch\"}</button></div><div id=\"msLaunchPublicResultV709\" class=\"orbit-action-result\"></div></div><div class=\"orbit-panel\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">ORBIT CHASE LAUNCH KIT</p><h3>\u00A32 launch credit, rich email and Member Area broadcast</h3><p>Feature availability and launch communications are deliberately separate. Complete the live member tests first; when you are ready, prepare the \u00A32 credit and drafts, approve the final gates, then announce once.</p></div></div><div class=\"orbit-member-store-kpis-v601\"><article><small>Eligible genuine members</small><strong>${esc(String(launchCredit.eligible||0))}</strong></article><article><small>Already granted</small><strong>${esc(String(launchCredit.granted||0))}</strong></article><article><small>Still to grant</small><strong>${esc(String(launchCreditRemaining))}</strong></article><article><small>Email / broadcast</small><strong>${esc(memberStoreStatusV601(launchCampaign.status||\"draft\"))} / ${esc(memberStoreStatusV601(launchBroadcast.status||\"draft\"))}</strong></article></div><p><strong>Free Entry by Post:</strong><br>${esc(settings.free_entry_postal_address||'Orbit Collectors Club\\nPO BOX 776\\nWeston-Super-Mare\\nBS23 9UL').replaceAll('\\n','<br>')}</p><div class=\"orbit-action-row\"><button type=\"button\" id=\"msGrantLaunchCreditV708\" class=\"secondary\" disabled>${launchCreditRemaining?\"\u00A32 credit grants with Prepare announcement\":\"\u00A32 launch credit prepared\"}</button>${launchCampaign.id?`<a class=\"orbit-button-link secondary\" target=\"_blank\" rel=\"noopener\" href=\"${esc(adminDownloadUrlV73('/api/admin/newsletters/'+encodeURIComponent(launchCampaign.id)+'/preview'))}\">Preview full launch email</a><button type=\"button\" class=\"secondary\" id=\"msOpenLaunchCampaignV709\">Open email in Newsletter Studio</button>`:\"\"}<button type=\"button\" class=\"secondary\" id=\"msOpenLaunchBroadcastV709\">Open Member Area broadcast</button></div><div id=\"msLaunchCreditResultV708\" class=\"orbit-action-result\"></div><p class=\"orbit-muted\">Campaign: ${esc(launchCampaign.title||\"Your first taste of Orbit Chase is on us\")} \u00B7 Broadcast: ${esc(launchBroadcast.title||\"Orbit Chase is live\")} \u00B7 both remain held as drafts until the explicit announcement action sends/publishes them once.</p></div></section>\n      <section data-member-store-pane-v601=\"topups\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">MEMBER CREDIT \u00B7 SHOPIFY</p><h2>Top ups</h2><p>Support and reconciliation view for every Member Credit Shopify checkout. The settlement state shown here comes from the same checkout, Shopify order and immutable Member Credit ledger used to issue credit.</p></div><button type=\"button\" class=\"secondary\" id=\"msTopUpsRefreshV712\">Refresh</button></div><div class=\"orbit-panel orbit-v712-topups-toolbar\"><div class=\"orbit-form-grid\"><label>Search member or order<input id=\"msTopUpSearchV712\" placeholder=\"Member, order, checkout ID or email\"></label><label>Status<select id=\"msTopUpStatusV712\"><option value=\"\">All statuses</option><option value=\"credited\">Credited</option><option value=\"pending\">Pending</option><option value=\"payment_confirmed_pending_credit\">Payment confirmed, credit pending</option><option value=\"reconciliation_error\">Reconciliation error</option><option value=\"reversed\">Reversed</option></select></label><label>Promo code<input id=\"msTopUpPromoV712\" placeholder=\"e.g. TESTING\"></label><div class=\"orbit-form-action\"><button type=\"button\" id=\"msTopUpsSearchV712\">Search</button></div></div><p id=\"msTopUpsSummaryV712\" class=\"orbit-muted\"></p></div><div id=\"msTopUpsMountV712\" class=\"orbit-panel\">${memberStoreTopUpsTableV712(data.topUps||[])}</div></section>\n      <section data-member-store-pane-v601=\"store-fulfilment\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">MEMBERS SHOP \u00B7 FULFILMENT</p><h2>Store</h2><p>Every paid Members Shop order creates one canonical fulfilment record here, ready for the existing label and dispatch workflow. Monthly member parcels stay separate.</p></div><button type=\"button\" class=\"secondary\" data-module-nav=\"shipping\">Open Shipping Queue</button></div><div class=\"orbit-panel\"><div class=\"orbit-info-banner success\"><strong>Canonical fulfilment</strong><span>These rows are the same special shipment records used by Shipping, labels and tracking. There is no duplicate reporting truth.</span></div>${storeFulfilmentRows}</div></section>\n      <section data-member-store-pane-v601=\"launch\" hidden><div id=\"msLaunchPaneV712\"></div></section>\n      <section data-member-store-pane-v601=\"products\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">NORMAL MEMBERS STORE ITEMS</p><h2>Products</h2><p>Add slabs, accessories and member-exclusive products. The approved test member can purchase them now with Member Credit; ordinary members cannot see this sandbox.</p></div></div><div class=\"orbit-member-store-admin-list-v601\">${productRows}</div><form id=\"memberStoreProductFormV601\" class=\"orbit-panel orbit-member-store-form-v601\"><input type=\"hidden\" id=\"msProductIdV601\"><input type=\"hidden\" id=\"msProductMediaIdV601\"><input type=\"hidden\" id=\"msProductImageUrlV601\"><h3 id=\"msProductFormTitleV601\">Add product</h3><div class=\"orbit-form-grid\"><label>Title<input id=\"msProductTitleV601\" required maxlength=\"180\"></label><label>Status<select id=\"msProductStatusV601\">${memberStoreFormStatusOptionsV601(\"coming_soon\")}</select></label><label>Member Credit price (\u00A3)<input id=\"msProductPriceV601\" type=\"number\" min=\"0.01\" step=\"0.01\" value=\"1.00\" required></label><label>Estimated value (\u00A3)<input id=\"msProductValueV601\" type=\"number\" min=\"0\" step=\"0.01\"></label><label>Stock<input id=\"msProductStockV601\" type=\"number\" min=\"0\" step=\"1\" value=\"1\"></label><label>Product image (WebP/JPG/PNG)<input id=\"msProductImageV601\" type=\"file\" accept=\"image/webp,image/jpeg,image/png\"></label></div><label>Description<textarea id=\"msProductDescriptionV601\" rows=\"5\"></textarea></label><label class=\"orbit-checkbox-line\"><input id=\"msProductPhysicalV601\" type=\"checkbox\" checked> Physical item requiring fulfilment</label><div class=\"orbit-action-row\"><button type=\"submit\">Save product</button><button type=\"button\" class=\"secondary\" id=\"msProductResetV601\">Clear form</button></div><div id=\"msProductResultV601\" class=\"orbit-action-result\"></div></form></section>\n      <section data-member-store-pane-v601=\"orders\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">MEMBERS STORE FULFILMENT</p><h2>Orders</h2><p>Member Credit orders are listed here. Physical items continue through Orbit's canonical Fulfilment queue, so tracking and dispatch state stay in one source of truth.</p></div></div><div class=\"orbit-panel\">${orderRows}</div></section>\n      <section data-member-store-pane-v601=\"draws\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">ORBIT CHASE \u00B7 PRIVATE TEST MEMBER</p><h2>Orbit Chase</h2><p>Create premium member Chases with rich descriptions. Paid entries are uncapped, every Chase closes only at its published fixed time, and the draw time is calculated automatically for the same UK local clock time on the following calendar day.</p></div><button type=\"button\" class=\"secondary\" id=\"msProcessDrawsV601\">Check lifecycle</button></div><div class=\"orbit-member-store-admin-list-v601\">${drawRows}</div><section id=\"msDrawEntriesPanelV601\" class=\"orbit-panel\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">ENTRY LEDGER</p><h3 id=\"msDrawEntriesTitleV601\">Prize draw entries</h3><p>Paid Member Credit and valid free postal entries share this same immutable draw pool.</p></div><button type=\"button\" class=\"secondary\" id=\"msDrawEntriesCloseV601\">Close</button></div><div id=\"msDrawEntriesMountV601\" class=\"orbit-empty-state\"><span>Choose Entries on a draw to inspect its ledger.</span></div><form id=\"msPostalEntryFormV601\" class=\"orbit-form-grid\" ${(launch.drawEntriesEnabled||launch.sandboxCommerceEnabled)?\"\":\"hidden\"}><input type=\"hidden\" id=\"msPostalDrawIdV601\"><label>Member lookup<input id=\"msPostalMemberV601\" list=\"msTestMembersListV601\" placeholder=\"Member number, subscription ID or email\"></label><label>Postal reference<input id=\"msPostalReferenceV601\" placeholder=\"Envelope / postmark reference\"></label><div class=\"orbit-form-action\"><button type=\"submit\">Record valid postal entry</button></div></form><div id=\"msPostalEntryResultV601\" class=\"orbit-action-result\"></div></section><form id=\"memberStoreDrawFormV601\" class=\"orbit-panel orbit-member-store-form-v601\"><input type=\"hidden\" id=\"msDrawIdV601\"><input type=\"hidden\" id=\"msDrawMediaIdV601\"><input type=\"hidden\" id=\"msDrawImageUrlV601\"><h3 id=\"msDrawFormTitleV601\">Add Orbit Chase</h3><div class=\"orbit-form-grid\"><label>Prize title<input id=\"msDrawTitleV601\" required maxlength=\"180\"></label><label>Status<select id=\"msDrawStatusV601\">${memberStoreFormStatusOptionsV601(\"coming_soon\")}</select></label><label>Estimated prize value (\u00A3)<input id=\"msDrawValueV601\" type=\"number\" min=\"0.01\" step=\"0.01\" required></label><label>Member Credit per entry (\u00A3)<input id=\"msDrawEntryPriceV601\" type=\"number\" min=\"0.01\" step=\"0.01\" value=\"1.00\" required></label><label>Internal performance target<input id=\"msDrawTargetV601\" type=\"number\" min=\"1\" step=\"1\" value=\"180\" required><small>Admin analytics only \u00B7 never shown to members and never closes a Chase early.</small></label><label>Slab image (WebP/JPG/PNG)<input id=\"msDrawImageV601\" type=\"file\" accept=\"image/webp,image/jpeg,image/png\"></label><label>Opens<input id=\"msDrawOpenV601\" type=\"datetime-local\"></label><label>Fixed entry close<input id=\"msDrawCloseV601\" type=\"datetime-local\" required></label><label>Automatic draw time<input id=\"msDrawAtV602\" type=\"datetime-local\" readonly><small>Always the same UK local time on the next calendar day after entries close.</small></label><label>Terms version<input id=\"msDrawTermsV601\" value=\"v1\"></label></div><label class=\"orbit-span-2\">Rich Chase description<div class=\"orbit-v605-rich-toolbar\" role=\"toolbar\" aria-label=\"Orbit Chase description formatting\"><button type=\"button\" data-ms-draw-format=\"bold\"><b>B</b></button><button type=\"button\" data-ms-draw-format=\"italic\"><i>I</i></button><button type=\"button\" data-ms-draw-format=\"formatBlock\" data-format-value=\"h3\">Heading</button><button type=\"button\" data-ms-draw-format=\"insertUnorderedList\">Bullets</button><button type=\"button\" data-ms-draw-format=\"insertOrderedList\">Numbers</button><button type=\"button\" data-ms-draw-format=\"createLink\">Link</button><button type=\"button\" data-ms-draw-format=\"removeFormat\">Clear</button><button type=\"button\" id=\"msDrawHtmlToggleV605\">HTML source</button></div><div id=\"msDrawDescriptionEditorV605\" class=\"orbit-v605-admin-rich-editor\" contenteditable=\"true\" data-placeholder=\"Sell the Chase: prize story, key highlights and why members should want it...\"></div><textarea id=\"msDrawDescriptionV601\" rows=\"8\" hidden></textarea></label><label class=\"orbit-span-2\">Draw-specific free-entry note<textarea id=\"msDrawFreeInstructionsV601\" rows=\"4\" placeholder=\"Optional draw-specific note. The standard free-entry-by-post rules and postal address come from the shared Orbit Chase policy/settings.\"></textarea></label><div class=\"orbit-action-row\"><button type=\"submit\">Save Orbit Chase</button><button type=\"button\" class=\"secondary\" id=\"msDrawResetV601\">Clear form</button></div><div id=\"msDrawResultV601\" class=\"orbit-action-result\"></div></form></section>\n      <section data-member-store-pane-v601=\"poke-alerts\" hidden><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">POK\u00C9 ALERTS \u00B7 LIVE STOCK INTELLIGENCE</p><h2>Pok\u00E9 Alerts</h2><p>Review the retailer monitors and their recorded status. Use the tabs above for evidence, products, source tools and recent events. An enabled monitor is not proof of verified stock or member delivery.</p></div><div class=\"orbit-action-row\"><span class=\"orbit-pill\">Private test-member preview</span><button type=\"button\" id=\"paRunAllV603\">Run all monitors now</button></div></div><div class=\"orbit-member-store-kpis-v601\"><article><small>Configured monitors</small><strong>${(poke.sources||[]).filter(source=>source.liveAdapter).length}</strong></article><article><small>Tracked products</small><strong>${poke.stats?.trackedProducts||0}</strong></article><article><small>Stock events</small><strong>${poke.stats?.stockEvents||0}</strong></article><article><small>Delivered alerts</small><strong>${poke.stats?.delivered||0}</strong></article></div><div id=\"paMonitorResultV603\" class=\"orbit-action-result\"></div><section id=\"paOpsV614\" class=\"orbit-panel pa614-operations\" aria-label=\"Pok\u00E9 Alerts source operations\"></section><div class=\"orbit-panel\"><div class=\"orbit-panel-header\"><div><h3>Retailer monitors</h3><p class=\"orbit-muted\">One central monitor per retailer serves every member. Orbit reads public retailer pages only. It does not bypass CAPTCHAs and never buys products automatically.</p></div></div><div class=\"orbit-pa-admin-sources-v602\">${pokeSourceRows}</div></div>${stockScoutPanelV609}${pokeGuardianPanel}<div class=\"orbit-panel orbit-pa-provider-v603\"><p class=\"orbit-kicker\">SMS PROVIDER</p><h3>Twilio connection</h3><p>Save Twilio securely inside Orbit. The Auth Token is encrypted server-side and is never returned to the browser, logs, diagnostics or AI export.</p><div class=\"orbit-info-banner ${pokeProvider.configured?\"success\":\"warning\"}\"><strong>${pokeProvider.configured?\"Twilio configured\":\"Twilio not configured\"}</strong><span>${pokeProvider.configured?`Saved Account SID ${esc(pokeProvider.accountSid||\"\")} \u00B7 sender ${esc(pokeProvider.senderMode||\"configured\")}`:\"Enter your Twilio details below. Saving credentials alone cannot enable member messaging.\"}</span></div><form id=\"paTwilioFormV603\" class=\"orbit-form-grid\"><label>Account SID<input id=\"paTwilioSidV603\" autocomplete=\"off\" placeholder=\"${pokeProvider.authTokenConfigured?\"Leave blank to keep saved SID\":\"AC...\"}\"></label><label>Auth Token<input id=\"paTwilioTokenV603\" type=\"password\" autocomplete=\"new-password\" placeholder=\"${pokeProvider.authTokenConfigured?\"Saved securely \u00B7 enter only to replace\":\"Enter Auth Token\"}\"></label><label>Sender type<select id=\"paTwilioSenderModeV603\"><option value=\"number\"${pokeProvider.senderMode!==\"messaging_service\"?\" selected\":\"\"}>Twilio phone number</option><option value=\"messaging_service\"${pokeProvider.senderMode===\"messaging_service\"?\" selected\":\"\"}>Messaging Service SID</option></select></label><label>Twilio number<input id=\"paTwilioFromV603\" placeholder=\"+44\u2026 \u00B7 leave blank to keep saved\"></label><label>Messaging Service SID<input id=\"paTwilioMessagingV603\" placeholder=\"MG\u2026 \u00B7 leave blank to keep saved\"></label><div class=\"orbit-form-action\"><button type=\"submit\">Save Twilio securely</button><button type=\"button\" class=\"secondary\" id=\"paTwilioTestConnectionV603\">Test connection</button></div></form><div id=\"paTwilioResultV603\" class=\"orbit-action-result\"></div><hr><h3>Send an Admin test SMS</h3><p>This sends one real SMS through Twilio but never charges a member wallet.</p><div class=\"orbit-form-grid\"><label>Test mobile number<input id=\"paTwilioTestPhoneV603\" placeholder=\"07123 456789\"></label><label>Test message<input id=\"paTwilioTestBodyV603\" value=\"Orbit Pok\u00E9 Alerts test: Twilio is connected.\"></label><div class=\"orbit-form-action\"><button type=\"button\" id=\"paTwilioSendTestV603\" ${pokeProvider.configured?\"\":\"disabled\"}>Send test SMS</button></div></div></div><div class=\"orbit-panel\"><p class=\"orbit-kicker\">MEMBER DELIVERY</p><h3>Email, SMS & Member Credit</h3><p><strong>Email alerts are free.</strong> Optional SMS alerts use Member Credit and are charged only after Twilio confirms delivery. Failed or undelivered SMS messages are not charged.</p><form id=\"pokeAlertSettingsFormV602\" class=\"orbit-form-grid\"><label>SMS member price (pence)<input id=\"paAdminSmsPriceV602\" type=\"number\" min=\"1\" max=\"100\" value=\"${esc(String(pokeSettings.sms_price_pence||8))}\"></label><label>Event cooldown (minutes)<input id=\"paAdminCooldownV602\" type=\"number\" min=\"1\" max=\"1440\" value=\"${esc(String(pokeSettings.event_cooldown_minutes||10))}\"></label><label>Daily SMS cap (pence)<input id=\"paAdminDailyCapV602\" type=\"number\" min=\"0\" value=\"${esc(String(pokeSettings.sms_daily_cap_pence||100))}\"></label><label>Weekly SMS cap (pence)<input id=\"paAdminWeeklyCapV602\" type=\"number\" min=\"0\" value=\"${esc(String(pokeSettings.sms_weekly_cap_pence||500))}\"></label><label class=\"orbit-checkbox-line\"><input id=\"paEmailDeliveryV603\" type=\"checkbox\" ${pokeSettings.email_delivery_enabled?\"checked\":\"\"}> Allow free email delivery</label><label class=\"orbit-checkbox-line\"><input id=\"paSmsDeliveryV603\" type=\"checkbox\" ${pokeSettings.sms_delivery_enabled?\"checked\":\"\"}> Allow optional SMS delivery</label><label class=\"orbit-checkbox-line\"><input id=\"paTestDeliveryV603\" type=\"checkbox\" ${pokeSettings.test_member_delivery_enabled?\"checked\":\"\"}> Enable real delivery to private test member only</label><label>Test-member activation phrase<input id=\"paTestConfirmV603\" placeholder=\"ENABLE TEST POKE ALERTS\"></label><div class=\"orbit-form-action\"><button type=\"submit\">Save delivery settings</button></div></form><div id=\"paAdminSettingsResultV602\" class=\"orbit-action-result\"></div><div class=\"orbit-info-banner warning\"><strong>Ordinary members remain protected.</strong><span>The private test-member switch cannot expose Pok\u00E9 Alerts to normal members. Full member delivery still requires the separate server launch approval gate.</span></div></div><details class=\"orbit-panel\"><summary><strong>Diagnostics \u00B7 synthetic transition test</strong></summary><p>Use this only to test state transition/deduplication logic without waiting for a retailer change.</p><form id=\"pokeAlertObservationFormV602\" class=\"orbit-form-grid\"><label>Source<select id=\"paObsSourceV602\">${(poke.sources||[]).map(source=>`<option value=\"${esc(source.id)}\">${esc(source.name||source.id)}</option>`).join(\"\")}</select></label><label>Product key<input id=\"paObsProductKeyV602\" value=\"preview-product\"></label><label>Product title<input id=\"paObsTitleV602\" value=\"Preview Pok\u00E9mon TCG product\"></label><label>Stock state<select id=\"paObsStateV602\"><option value=\"out_of_stock\">Out of stock</option><option value=\"in_stock\">In stock</option><option value=\"preorder\">Preorder</option><option value=\"queue_live\">Queue live</option></select></label><label>Product URL<input id=\"paObsUrlV602\" placeholder=\"https://retailer.example/product\"></label><label>Store postcode<input id=\"paObsPostcodeV602\" placeholder=\"optional\"></label><label>Set<input id=\"paObsSetV602\" placeholder=\"optional set\"></label><label>Category<input id=\"paObsCategoryV602\" value=\"Pok\u00E9mon TCG\"></label><div class=\"orbit-form-action\"><button type=\"submit\">Record test observation</button></div></form><div id=\"paObsResultV602\" class=\"orbit-action-result\"></div></details><div class=\"orbit-panel\"><h3>Recent stock events</h3><div id=\"paEventTableV602\">${pokeEventRows}</div><div id=\"paFanoutResultV602\" class=\"orbit-action-result\"></div></div></section>\n      <section data-member-store-pane-v601=\"settings\" hidden><div class=\"orbit-panel\"><p class=\"orbit-kicker\">LAUNCH &amp; COMPLIANCE</p><h2>${launch.publicLive?\"Live Members commerce\":\"Private launch sandbox\"}</h2><p>V715 makes Orbit Chase and the Members Shop silently live for eligible members after protected certification. Use this page to review compliance gates while the launch email, Member Area broadcast and \u00A32 launch gift remain held until explicit announcement preparation.</p><div class=\"orbit-info-banner ${launch.publicLive?\"success\":\"warning\"}\"><strong>${launch.publicLive?\"Orbit Chase and Members Shop are live\":\"Ordinary members still see the stable Members Area\"}</strong><span>${launch.publicLive?\"The live state is persisted and audited.\":\"Before V715 silent-live activation completes, only the protected review member can use the commerce paths.\"}</span></div><form id=\"msStoreSettingsFormV601\" class=\"orbit-member-store-form-v601\"><div class=\"orbit-form-grid\"><label>Current visibility<input value=\"${esc(launch.publicLive?\"All eligible members, live\":\"Active Review Member only\")}\" disabled></label><label>24 hour verification window<input id=\"msStoreVerificationHoursV601\" type=\"number\" min=\"24\" max=\"168\" step=\"1\" value=\"${esc(String(settings.verification_hours||24))}\"></label><label>Payment provider<input id=\"msStorePaymentProviderV601\" value=\"shopify\" readonly></label><label>Legal approval<select id=\"msStoreLegalApprovalV601\"><option value=\"pending\"${settings.legal_approval_status!==\"approved\"&&settings.legal_approval_status!==\"rejected\"?\" selected\":\"\"}>Pending</option><option value=\"approved\"${settings.legal_approval_status===\"approved\"?\" selected\":\"\"}>Approved</option><option value=\"rejected\"${settings.legal_approval_status===\"rejected\"?\" selected\":\"\"}>Rejected</option></select></label><label>Payment approval<select id=\"msStorePaymentApprovalV601\"><option value=\"pending\"${settings.payment_approval_status!==\"approved\"&&settings.payment_approval_status!==\"rejected\"?\" selected\":\"\"}>Pending</option><option value=\"approved\"${settings.payment_approval_status===\"approved\"?\" selected\":\"\"}>Approved</option><option value=\"rejected\"${settings.payment_approval_status===\"rejected\"?\" selected\":\"\"}>Rejected</option></select></label></div><label>Protected free postal entry address<textarea id=\"msStorePostalAddressV601\" rows=\"4\" readonly>${esc(settings.free_entry_postal_address||\"\")}</textarea></label><label>Responsible play URL<input id=\"msStoreResponsiblePlayV601\" value=\"${esc(settings.responsible_play_url||\"\")}\" readonly><small>Managed by Orbit OS and published at the canonical Responsible Play page.</small></label><div class=\"orbit-action-row\"><button type=\"submit\">Save compliance settings</button></div><div id=\"msStoreSettingsResultV601\" class=\"orbit-action-result\"></div></form><div class=\"orbit-info-banner warning\"><strong>Silent live and announcement are separate.</strong><span>Complete the genuine-member smoke tests first. Then use Prepare announcement to grant the \u00A32 launch credit and refresh the held drafts. Publish/send only with the explicit Announce launch action after the legal and payment gates are approved.</span></div></div></section>\n      <section data-member-store-pane-v601=\"wallets\" hidden><div class=\"orbit-panel\"><p class=\"orbit-kicker\">TEST MEMBER TOOLS</p><h2>Member Credit wallets</h2><p>Issue test-only Member Credit to the existing Orbit test member. This never takes a real payment.</p><form id=\"msTestCreditFormV601\" class=\"orbit-form-grid\"><label>Test member lookup<input id=\"msTestMemberLookupV601\" list=\"msTestMembersListV601\" value=\"${esc(defaultTestLookup)}\" placeholder=\"Member number, subscription ID or email\" required><datalist id=\"msTestMembersListV601\">${testMembers.map(m=>`<option value=\"${esc(m.memberNumber||m.subscriptionId||m.email||\"\")}\">${esc((m.name||\"Orbit test member\")+(m.email?` \u00B7 ${m.email}`:\"\"))}</option>`).join(\"\")}</datalist></label><label>Test credit (\u00A3)<input id=\"msTestCreditAmountV601\" type=\"number\" min=\"1\" step=\"1\" value=\"500\"></label><label>Note<input id=\"msTestCreditNoteV601\" value=\"Members Store preview test credit\"></label><div class=\"orbit-form-action\"><button type=\"submit\">Add test credit</button></div></form><div id=\"msWalletResultV601\" class=\"orbit-action-result\"></div></div><div class=\"orbit-panel\"><h3>Recent wallets</h3>${walletRows}</div></section>\n    </div>`;\n    const launchHost=$(\"msLaunchPaneV712\"),launchPanel=mount.querySelector(\".orbit-v709-launch-readiness\");if(launchHost&&launchPanel)launchHost.appendChild(launchPanel);bindMemberStoreTopUpsV712();organisePokeAdminV618();bindMemberStoreAdminV601();memberStorePaneV601(state.currentMemberStorePaneV601||\"overview\");}\n  function resetMemberStoreProductFormV601(){[\"msProductIdV601\",\"msProductMediaIdV601\",\"msProductImageUrlV601\",\"msProductTitleV601\",\"msProductValueV601\",\"msProductDescriptionV601\"].forEach(id=>{const n=$(id);if(n)n.value=\"\";});if($(\"msProductPriceV601\"))$(\"msProductPriceV601\").value=\"1.00\";if($(\"msProductStockV601\"))$(\"msProductStockV601\").value=\"1\";if($(\"msProductStatusV601\"))$(\"msProductStatusV601\").value=\"coming_soon\";if($(\"msProductPhysicalV601\"))$(\"msProductPhysicalV601\").checked=true;if($(\"msProductImageV601\"))$(\"msProductImageV601\").value=\"\";if($(\"msProductFormTitleV601\"))$(\"msProductFormTitleV601\").textContent=\"Add product\";}\n  function resetMemberStoreDrawFormV601(){[\"msDrawIdV601\",\"msDrawMediaIdV601\",\"msDrawImageUrlV601\",\"msDrawTitleV601\",\"msDrawValueV601\",\"msDrawDescriptionV601\",\"msDrawOpenV601\",\"msDrawCloseV601\",\"msDrawAtV602\",\"msDrawFreeInstructionsV601\"].forEach(id=>{const n=$(id);if(n)n.value=\"\";});if($(\"msDrawEntryPriceV601\"))$(\"msDrawEntryPriceV601\").value=\"1.00\";if($(\"msDrawTargetV601\"))$(\"msDrawTargetV601\").value=\"180\";if($(\"msDrawTermsV601\"))$(\"msDrawTermsV601\").value=\"v1\";if($(\"msDrawStatusV601\"))$(\"msDrawStatusV601\").value=\"coming_soon\";if($(\"msDrawImageV601\"))$(\"msDrawImageV601\").value=\"\";if($(\"msDrawFormTitleV601\"))$(\"msDrawFormTitleV601\").textContent=\"Add Orbit Chase\";if($(\"msDrawDescriptionEditorV605\"))$(\"msDrawDescriptionEditorV605\").innerHTML=\"\";}\n  function localDatetimeV601(value){if(!value)return \"\";const d=new Date(value);if(Number.isNaN(d.getTime()))return \"\";const local=new Date(d.getTime()-d.getTimezoneOffset()*60000);return local.toISOString().slice(0,16);}\n  function renderPokeDeliveryV613(poke={}) {\n    const d=poke.deliveryDiagnostics||{},cfg=d.configuration||{},workers=d.workers||[],blocks=d.blockers||[];\n    const members=(poke.testMembers||[]).filter(m=>m.benefitsActive),products=(poke.products||[]).filter(p=>p.url&&p.productKey&&!p.productKey.endsWith(':queue-live'));\n    return `<section class=\"orbit-panel orbit-v613-delivery\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">DELIVERY EVIDENCE</p><h3>Find the blocker. Prove one real notification.</h3><p>Stock observations, provider acceptance and confirmed delivery are different steps. Ordinary members remain locked out.</p></div><button type=\"button\" class=\"secondary\" id=\"paDeliveryExportV613\">Export delivery diagnostics</button></div><div class=\"orbit-v607-source-meta\"><span>Monitoring: ${cfg.monitoringEnabled?'enabled':'paused'}</span><span>Test delivery: ${cfg.testMemberDeliveryEnabled?'approved':'off'}</span><span>Email: ${cfg.emailDeliveryEnabled?'enabled':'off'} / provider ${cfg.emailProviderConfigured?'configured':'not configured'}</span><span>SMS: ${cfg.smsDeliveryEnabled?'enabled':'off'}</span><span>SMS charge: 8p after confirmed delivery only</span></div><p><strong>Recent delivery outcomes</strong> <small>Bounded history, not lifetime totals.</small></p><div class=\"orbit-v613-delivery-outcomes\">${blocks.length?blocks.map(b=>`<p><strong>${esc(b.code)} (${esc(b.count)})</strong> ${esc(b.detail)}</p>`).join(''):'<p>No dispatch outcomes recorded yet. This is not proof of working delivery.</p>'}</div><details><summary>Independent worker heartbeats (${workers.length})</summary>${workers.length?workers.map(w=>`<p><strong>${esc(w.lane)}</strong>: ${esc(w.state)}${w.stale?' \u00B7 stale / needs investigation':''}<small>Last start: ${esc(memberStoreDateV601(w.lastStartedAt))}. Last finish: ${esc(memberStoreDateV601(w.lastFinishedAt))}. ${esc(w.lastErrorCode||'')}</small></p>`).join(''):'<p>No V613 heartbeat yet. Check again after the deployed server starts its workers.</p>'}</details><form id=\"paFreshTestFormV613\" class=\"orbit-form-grid\"><h4 class=\"orbit-form-span-2\">Controlled fresh-stock test</h4><p class=\"orbit-form-span-2\">This performs a fresh exact-product check, then sends to the existing approved test member only when their saved preferences and all delivery gates allow it. It does not invent a restock or certify natural monitoring. SMS can cost 8p if delivered. No settings are enabled automatically.</p><label>Approved test membership<select id=\"paFreshMemberV613\" required><option value=\"\">Choose the test member</option>${members.map(m=>`<option value=\"${esc(m.subscriptionId)}\">${esc(m.memberNumber||m.subscriptionId)}</option>`).join('')}</select></label><label>Delivery channel<select id=\"paFreshChannelV613\"><option value=\"email\">Email (provider acceptance only)</option><option value=\"sms\">SMS (8p only if delivered)</option></select></label><label class=\"orbit-form-span-2\">Exact registered product<select id=\"paFreshProductV613\" required><option value=\"\">Choose a product, or load another retailer's product list below</option>${products.map(p=>`<option value=\"${esc(p.productKey)}\">${esc(p.title)} \u00B7 ${esc(p.sku||p.sourceId)}</option>`).join('')}</select><small>This selector uses loaded registry records. Inspect another retailer's products below to add its next page here. The server rechecks exact identity and current availability.</small></label><label class=\"orbit-form-span-2\">Authorise one real test<input id=\"paFreshConfirmV613\" autocomplete=\"off\" placeholder=\"Type SEND FRESH STOCK TEST\" required></label><div class=\"orbit-form-span-2\"><button type=\"submit\">Check fresh stock &amp; send test</button> <button type=\"button\" class=\"secondary\" id=\"paFreshResetV613\">Start another test</button></div><pre id=\"paFreshResultV613\" class=\"orbit-form-span-2\" aria-live=\"polite\"></pre></form></section>`;\n  }\n  function bindPokeDeliveryV613(){\n    let attemptKey=null,context=null;\n    $('paDeliveryExportV613')?.addEventListener('click',async event=>{const button=event.currentTarget;setLoading(button,true);try{const result=await api('/api/admin/poke-alerts/delivery-diagnostics',{cacheMs:0,timeoutMs:20000});const blob=new Blob([JSON.stringify(result,null,2)],{type:'application/json'}),url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download='Orbit_Poke_Delivery_Diagnostics_'+new Date().toISOString().slice(0,10)+'.json';a.click();setTimeout(()=>URL.revokeObjectURL(url),1000);}catch(error){setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});\n    $('paFreshResetV613')?.addEventListener('click',()=>{attemptKey=null;context=null;$('paFreshConfirmV613').value='';$('paFreshResultV613').textContent='New test prepared. Review the destination, channel and product, then explicitly authorise it.';});\n    $('paFreshTestFormV613')?.addEventListener('submit',async event=>{event.preventDefault();const button=event.submitter,node=$('paFreshResultV613'),payload={subscriptionId:$('paFreshMemberV613').value,productKey:$('paFreshProductV613').value,channel:$('paFreshChannelV613').value,confirmation:$('paFreshConfirmV613').value};const selection=JSON.stringify([payload.subscriptionId,payload.productKey,payload.channel]);if(context&&context!==selection){node.textContent='Use Start another test before changing a submitted test. This prevents an accidental second notification.';return;}if(!attemptKey){attemptKey=crypto.randomUUID();context=selection;}payload.idempotencyKey=attemptKey;setLoading(button,true);node.textContent='Checking exact identity, freshness, preferences and delivery gates\u2026';try{const result=await api('/api/admin/poke-alerts/controlled-test',{method:'POST',body:JSON.stringify(payload),cacheMs:0,timeoutMs:65000});node.textContent=JSON.stringify(result,null,2);}catch(error){node.textContent=String(error.message||error)+'\\nThis request key is retained. Retrying the same test cannot create a duplicate send. Do not start a new test merely because the response timed out.';}finally{setLoading(button,false);}});\n  }\n  function bindMemberStoreAdminV601(){bindPokeDeliveryV613();document.querySelectorAll(\"[data-member-store-view]\").forEach(button=>{if(button.dataset.boundMsV601)return;button.dataset.boundMsV601=\"1\";button.addEventListener(\"click\",()=>{state.currentMemberStorePaneV601=button.dataset.memberStoreView||\"overview\";window.setTimeout(()=>memberStorePaneV601(state.currentMemberStorePaneV601),0);});});\n    $(\"msTopUpsRefreshV712\")?.addEventListener(\"click\",event=>loadMemberStoreTopUpsV712({button:event.currentTarget}).catch(error=>setNotice(error.message||String(error),true)));$(\"msTopUpsSearchV712\")?.addEventListener(\"click\",event=>loadMemberStoreTopUpsV712({button:event.currentTarget}).catch(error=>setNotice(error.message||String(error),true)));\n    $(\"msProductResetV601\")?.addEventListener(\"click\",resetMemberStoreProductFormV601);$(\"msDrawResetV601\")?.addEventListener(\"click\",resetMemberStoreDrawFormV601);\n    document.querySelectorAll(\"[data-ms-draw-format]\").forEach(button=>button.addEventListener(\"click\",()=>{const editor=$(\"msDrawDescriptionEditorV605\");if(!editor||editor.hidden)return;editor.focus();const command=button.dataset.msDrawFormat;if(command===\"createLink\"){const url=prompt(\"Link URL\");if(url)document.execCommand(\"createLink\",false,url);}else if(command===\"formatBlock\")document.execCommand(command,false,button.dataset.formatValue||\"p\");else document.execCommand(command,false,null);}));\n    $(\"msDrawHtmlToggleV605\")?.addEventListener(\"click\",()=>{const editor=$(\"msDrawDescriptionEditorV605\"),source=$(\"msDrawDescriptionV601\"),button=$(\"msDrawHtmlToggleV605\");if(!editor||!source)return;if(source.hidden){source.value=editor.innerHTML;source.hidden=false;editor.hidden=true;if(button)button.textContent=\"Visual editor\";}else{editor.innerHTML=source.value;source.hidden=true;editor.hidden=false;if(button)button.textContent=\"HTML source\";}});\n    $(\"msDrawCloseV601\")?.addEventListener(\"change\",()=>{const close=$(\"msDrawCloseV601\")?.value,target=$(\"msDrawAtV602\");if(!close||!target)return;const d=new Date(close);if(Number.isNaN(d.getTime()))return;d.setDate(d.getDate()+1);const local=new Date(d.getTime()-d.getTimezoneOffset()*60000);target.value=local.toISOString().slice(0,16);});\n    $(\"memberStoreProductFormV601\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter||event.currentTarget.querySelector(\"button[type=submit]\");setLoading(button,true);try{let media={mediaId:$(\"msProductMediaIdV601\")?.value||\"\",imageUrl:$(\"msProductImageUrlV601\")?.value||\"\"};const file=$(\"msProductImageV601\")?.files?.[0];if(file)media=await memberStoreUploadImageV601(file,$(\"msProductTitleV601\")?.value||file.name,\"product\");const payload={id:$(\"msProductIdV601\")?.value||undefined,title:$(\"msProductTitleV601\")?.value,description:$(\"msProductDescriptionV601\")?.value,status:$(\"msProductStatusV601\")?.value,creditPricePence:Math.round(Number($(\"msProductPriceV601\")?.value||0)*100),estimatedValuePence:Math.round(Number($(\"msProductValueV601\")?.value||0)*100),stock:Number($(\"msProductStockV601\")?.value||0),physical:$(\"msProductPhysicalV601\")?.checked!==false,mediaId:media.mediaId,imageUrl:media.imageUrl};await api(\"/api/admin/member-store/products\",{method:\"POST\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:30000});setNotice(\"Members Store product saved.\");resetMemberStoreProductFormV601();await loadMemberStoreAdminV601(true);}catch(error){if($(\"msProductResultV601\"))$(\"msProductResultV601\").textContent=error.message||String(error);setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});\n    $(\"memberStoreDrawFormV601\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter||event.currentTarget.querySelector(\"button[type=submit]\");setLoading(button,true);try{let media={mediaId:$(\"msDrawMediaIdV601\")?.value||\"\",imageUrl:$(\"msDrawImageUrlV601\")?.value||\"\"};const file=$(\"msDrawImageV601\")?.files?.[0];if(file)media=await memberStoreUploadImageV601(file,$(\"msDrawTitleV601\")?.value||file.name,\"prize-draw\");if($(\"msDrawDescriptionV601\")&&!$(\"msDrawDescriptionV601\").hidden&&$(\"msDrawDescriptionEditorV605\"))$(\"msDrawDescriptionEditorV605\").innerHTML=$(\"msDrawDescriptionV601\").value;const payload={id:$(\"msDrawIdV601\")?.value||undefined,title:$(\"msDrawTitleV601\")?.value,description:$(\"msDrawDescriptionEditorV605\")?.innerText||$(\"msDrawDescriptionV601\")?.value,descriptionHtml:$(\"msDrawDescriptionEditorV605\")?.innerHTML||$(\"msDrawDescriptionV601\")?.value,status:$(\"msDrawStatusV601\")?.value,estimatedValuePence:Math.round(Number($(\"msDrawValueV601\")?.value||0)*100),entryCreditPence:Math.round(Number($(\"msDrawEntryPriceV601\")?.value||0)*100),paidEntryTarget:Number($(\"msDrawTargetV601\")?.value||0),openAt:$(\"msDrawOpenV601\")?.value?new Date($(\"msDrawOpenV601\").value).toISOString():null,closeAt:$(\"msDrawCloseV601\")?.value?new Date($(\"msDrawCloseV601\").value).toISOString():null,termsVersion:$(\"msDrawTermsV601\")?.value||\"v1\",freeEntryInstructions:$(\"msDrawFreeInstructionsV601\")?.value,mediaId:media.mediaId,imageUrl:media.imageUrl};await api(\"/api/admin/member-store/draws\",{method:\"POST\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:30000});setNotice(\"Orbit Chase saved in private preview.\");resetMemberStoreDrawFormV601();await loadMemberStoreAdminV601(true);}catch(error){if($(\"msDrawResultV601\"))$(\"msDrawResultV601\").textContent=error.message||String(error);setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});\n    document.querySelectorAll(\"[data-ms-product-edit-v601]\").forEach(button=>button.addEventListener(\"click\",()=>{const row=(memberStoreAdminDataV601?.products||[]).find(x=>x.id===button.dataset.msProductEditV601);if(!row)return;memberStorePaneV601(\"products\");$(\"msProductIdV601\").value=row.id;$(\"msProductMediaIdV601\").value=row.mediaId||\"\";$(\"msProductImageUrlV601\").value=row.imageUrl||\"\";$(\"msProductTitleV601\").value=row.title||\"\";$(\"msProductDescriptionV601\").value=row.description||\"\";$(\"msProductStatusV601\").value=row.status||\"draft\";$(\"msProductPriceV601\").value=(Number(row.creditPricePence||0)/100).toFixed(2);$(\"msProductValueV601\").value=(Number(row.estimatedValuePence||0)/100).toFixed(2);$(\"msProductStockV601\").value=row.stock||0;$(\"msProductPhysicalV601\").checked=row.physical!==false;$(\"msProductFormTitleV601\").textContent=\"Edit product\";$(\"memberStoreProductFormV601\")?.scrollIntoView({behavior:\"smooth\",block:\"start\"});}));\n    document.querySelectorAll(\"[data-ms-draw-edit-v601]\").forEach(button=>button.addEventListener(\"click\",()=>{const row=(memberStoreAdminDataV601?.draws||[]).find(x=>x.id===button.dataset.msDrawEditV601);if(!row)return;memberStorePaneV601(\"draws\");$(\"msDrawIdV601\").value=row.id;$(\"msDrawMediaIdV601\").value=row.mediaId||\"\";$(\"msDrawImageUrlV601\").value=row.imageUrl||\"\";$(\"msDrawTitleV601\").value=row.title||\"\";$(\"msDrawDescriptionV601\").value=row.description||\"\";if($(\"msDrawDescriptionEditorV605\"))$(\"msDrawDescriptionEditorV605\").innerHTML=row.descriptionHtml||row.description||\"\";$(\"msDrawStatusV601\").value=row.status||\"draft\";$(\"msDrawValueV601\").value=(Number(row.estimatedValuePence||0)/100).toFixed(2);$(\"msDrawEntryPriceV601\").value=(Number(row.entryCreditPence||100)/100).toFixed(2);$(\"msDrawTargetV601\").value=row.paidEntryTarget||180;$(\"msDrawOpenV601\").value=localDatetimeV601(row.openAt);$(\"msDrawCloseV601\").value=localDatetimeV601(row.closeAt);$(\"msDrawAtV602\").value=localDatetimeV601(row.drawAt);$(\"msDrawTermsV601\").value=row.termsVersion||\"v1\";$(\"msDrawFreeInstructionsV601\").value=row.freeEntryInstructions||\"\";$(\"msDrawFormTitleV601\").textContent=\"Edit Orbit Chase\";$(\"memberStoreDrawFormV601\")?.scrollIntoView({behavior:\"smooth\",block:\"start\"});}));\n    $(\"msDrawEntriesCloseV601\")?.addEventListener(\"click\",()=>{if($(\"msDrawEntriesPanelV601\"))$(\"msDrawEntriesPanelV601\").hidden=true;});\n    document.querySelectorAll(\"[data-ms-draw-entries-v601]\").forEach(button=>button.addEventListener(\"click\",async()=>{const id=button.dataset.msDrawEntriesV601,panel=$(\"msDrawEntriesPanelV601\"),mount=$(\"msDrawEntriesMountV601\");if(panel)panel.hidden=false;if(mount)mount.innerHTML=\"<strong>Loading entry ledger\u2026</strong>\";if($(\"msPostalDrawIdV601\"))$(\"msPostalDrawIdV601\").value=id;setLoading(button,true);try{const data=await api(`/api/admin/member-store/draws/${encodeURIComponent(id)}/entries`,{cacheMs:0,timeoutMs:15000}),row=data.draw||{},entries=data.entries||[];if($(\"msDrawEntriesTitleV601\"))$(\"msDrawEntriesTitleV601\").textContent=(row.title||\"Prize draw\")+\" \u00B7 Entry ledger\";if(mount)mount.innerHTML=entries.length?table([\"Entry\",\"Route\",\"Member\",\"Email\",\"Reference\",\"Created\"],entries.map(entry=>`<tr><td><strong>#${esc(String(entry.entryNumber||\"\u2014\"))}</strong></td><td>${esc(String(entry.source||\"\").replaceAll(\"_\",\" \"))}</td><td>${esc(entry.memberNumber||entry.subscriptionId||\"\u2014\")}</td><td>${esc(entry.email||\"\u2014\")}</td><td>${esc(entry.adminReference||\"\u2014\")}</td><td>${esc(memberStoreDateV601(entry.createdAt))}</td></tr>`),\"No entries yet.\"):\"<div class='orbit-empty-state'><strong>No entries yet</strong><span>The draw is still empty.</span></div>\";panel?.scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(error){if(mount)mount.innerHTML=\"<div class='orbit-info-banner error'><strong>Entry ledger unavailable</strong><span>\"+esc(error.message||String(error))+\"</span></div>\";}finally{setLoading(button,false);}}));\n    $(\"msPostalEntryFormV601\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter,setResult=$(\"msPostalEntryResultV601\");setLoading(button,true);try{const drawId=$(\"msPostalDrawIdV601\")?.value,data=await api(`/api/admin/member-store/draws/${encodeURIComponent(drawId)}/postal-entry`,{method:\"POST\",body:JSON.stringify({lookup:$(\"msPostalMemberV601\")?.value,adminReference:$(\"msPostalReferenceV601\")?.value}),cacheMs:0});if(setResult)setResult.textContent=\"Postal entry recorded as #\"+String(data.entryNumber||\"\u2014\")+\".\";$(\"msPostalReferenceV601\").value=\"\";document.querySelector(`[data-ms-draw-entries-v601=\"${CSS.escape(drawId)}\"]`)?.click();}catch(error){if(setResult)setResult.textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    document.querySelectorAll(\"[data-ms-status-v601]\").forEach(button=>button.addEventListener(\"click\",async()=>{const [kind,id,status]=String(button.dataset.msStatusV601||\"\").split(\":\");if(!kind||!id||!status)return;const phrase=kind===\"draw\"?\"Open this Orbit Chase for real entries?\":\"Activate this product for real Member Credit purchases?\";if(!confirm(phrase))return;setLoading(button,true);try{await api(`/api/admin/member-store/${encodeURIComponent(kind)}/${encodeURIComponent(id)}/status`,{method:\"POST\",body:JSON.stringify({status}),cacheMs:0});await loadMemberStoreAdminV601(true);}catch(error){setNotice(error.message||String(error),true);}finally{setLoading(button,false);}}));\n    document.querySelectorAll(\"[data-ms-archive-v601]\").forEach(button=>button.addEventListener(\"click\",async()=>{const [kind,id]=String(button.dataset.msArchiveV601||\"\").split(\":\");if(!kind||!id||!confirm(\"Archive this \"+(kind===\"draw\"?\"prize draw\":\"Members Store product\")+\"?\"))return;setLoading(button,true);try{await api(`/api/admin/member-store/${encodeURIComponent(kind)}/${encodeURIComponent(id)}/archive`,{method:\"POST\",body:\"{}\",cacheMs:0});await loadMemberStoreAdminV601(true);}catch(error){setNotice(error.message||String(error),true);}finally{setLoading(button,false);}}));\n    $(\"msStoreSettingsFormV601\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter;setLoading(button,true);try{const payload={verificationHours:Number($(\"msStoreVerificationHoursV601\")?.value||24),paymentProvider:\"shopify\",legalApprovalStatus:$(\"msStoreLegalApprovalV601\")?.value,paymentApprovalStatus:$(\"msStorePaymentApprovalV601\")?.value,freeEntryPostalAddress:$(\"msStorePostalAddressV601\")?.value,responsiblePlayUrl:$(\"msStoreResponsiblePlayV601\")?.value};const data=await api(\"/api/admin/member-store/settings\",{method:\"POST\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:15000});if($(\"msStoreSettingsResultV601\"))$(\"msStoreSettingsResultV601\").textContent=data.launch?.publicLive?\"Live compliance settings saved.\":\"Launch compliance settings saved. The public switch remains off.\";await loadMemberStoreAdminV601(true);}catch(error){if($(\"msStoreSettingsResultV601\"))$(\"msStoreSettingsResultV601\").textContent=error.message||String(error);setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});\n    $(\"msTestCreditFormV601\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter;setLoading(button,true);try{const data=await api(\"/api/admin/member-store/test-credit\",{method:\"POST\",body:JSON.stringify({lookup:$(\"msTestMemberLookupV601\")?.value,amountPence:Math.round(Number($(\"msTestCreditAmountV601\")?.value||0)*100),note:$(\"msTestCreditNoteV601\")?.value}),cacheMs:0});if($(\"msWalletResultV601\"))$(\"msWalletResultV601\").textContent=\"Test credit added. Balance: \"+memberStoreMoneyV601(data.wallet?.balancePence||0);await loadMemberStoreAdminV601(true);}catch(error){if($(\"msWalletResultV601\"))$(\"msWalletResultV601\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    $(\"msPrepareLaunchV714\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget,node=$(\"msLaunchPublicResultV709\"),confirmation=window.prompt(\"Orbit Chase and the Members Shop are already live silently. This step grants the one-time \u00A32 Member Credit to eligible genuine members and refreshes the personalised launch email and Member Area broadcast drafts. It does not send or publish either communication.\\n\\nType PREPARE ORBIT CHASE ANNOUNCEMENT to continue.\");if(confirmation!==\"PREPARE ORBIT CHASE ANNOUNCEMENT\"){if(node)node.textContent=\"Announcement preparation was not started.\";return;}setLoading(button,true);try{const result=await api(\"/api/admin/member-store/launch/prepare\",{method:\"POST\",body:JSON.stringify({confirmation}),cacheMs:0,timeoutMs:180000});if(node)node.textContent=`Announcement prepared \u00B7 \u00A32 Member Credit ${Number(result.launchCredit?.pending||0)===0?'complete':'still pending'} \u00B7 email and broadcast remain held.`;setNotice(result.readiness?.announcementReady?\"Announcement package prepared. Final approval gates are green.\":\"Announcement package prepared. Review the remaining approval gates.\");await loadMemberStoreAdminV601(true);}catch(error){if(node)node.textContent=error.message||String(error);setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});\n    $(\"msGrantLaunchCreditV708\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget,node=$(\"msLaunchCreditResultV708\"),confirmation=window.prompt(\"This will add \u00A32 real promotional Member Credit to every eligible genuine active member and email them after the ledger posts. It is idempotent, but should only be run after launch testing is approved.\\n\\nType GRANT \u00A32 ORBIT CHASE LAUNCH CREDIT to continue.\");if(confirmation!==\"GRANT \u00A32 ORBIT CHASE LAUNCH CREDIT\"){if(node)node.textContent=\"Launch credit was not granted.\";return;}setLoading(button,true);try{const result=await api(\"/api/admin/member-store/launch-credit/grant\",{method:\"POST\",body:JSON.stringify({confirmation}),cacheMs:0,timeoutMs:120000});if(node)node.textContent=`Launch credit complete \u00B7 ${Number(result.status?.granted||0)} eligible accounts now carry the audited \u00A32 grant.`;await loadMemberStoreAdminV601(true);}catch(error){if(node)node.textContent=error.message||String(error);setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});\n    $(\"msLaunchPublicV709\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget,node=$(\"msLaunchPublicResultV709\"),confirmation=window.prompt(\"Orbit Chase and the Members Shop are already live. This final communication action publishes the prepared Member Area broadcast and sends the personalised launch email campaign once.\\n\\nType ANNOUNCE ORBIT CHASE AND MEMBERS SHOP to continue.\");if(confirmation!==\"ANNOUNCE ORBIT CHASE AND MEMBERS SHOP\"){if(node)node.textContent=\"Launch announcement was not started.\";return;}if(!window.confirm(\"Final check: announce Orbit Chase and the Members Shop to all eligible members now?\"))return;setLoading(button,true);try{const result=await api(\"/api/admin/member-store/launch\",{method:\"POST\",body:JSON.stringify({confirmation}),cacheMs:0,timeoutMs:60000});const comms=result.communications||{};if(node)node.textContent=\"Announcement complete. Orbit Chase and the Members Shop remain live.\";setNotice(`Launch announced. Broadcast ${comms.broadcast?\"published\":\"check required\"}; launch email ${comms.email?\"sent\":\"check required\"}.`);await loadMemberStoreAdminV601(true);}catch(error){if(node)node.textContent=error.message||String(error);setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});\n    $(\"msOpenLaunchCampaignV709\")?.addEventListener(\"click\",async()=>{activateModule(\"engagement\",\"newsletters\",{historyMode:\"push\"});setEngagementPaneV73(\"newsletters\");await loadEngagementV73();if(launchCampaign.id)openNewsletterV731(launchCampaign.id);});\n    $(\"msOpenLaunchBroadcastV709\")?.addEventListener(\"click\",async()=>{activateModule(\"engagement\",\"broadcasts\",{historyMode:\"push\"});setEngagementPaneV73(\"broadcasts\");await loadEngagementV73();const button=document.querySelector('[data-open-broadcast-v731=\"'+CSS.escape(launchBroadcast.id||'')+'\"]');button?.click();});\n    document.querySelectorAll(\"[data-ms-draw-reset-sandbox-v606]\").forEach(button=>button.addEventListener(\"click\",async()=>{const drawId=button.dataset.msDrawResetSandboxV606;if(!drawId)return;const draw=(memberStoreAdminDataV601?.draws||[]).find(row=>String(row.id)===String(drawId));const confirmation=window.prompt(`Reset all sandbox test entries for ${draw?.title||\"this Orbit Chase\"}?\\n\\nThis refunds test Member Credit, clears the sandbox entry ledger and returns the Chase to a clean pre-entry state. Type RESET CHASE TEST DATA to continue.`);if(confirmation!==\"RESET CHASE TEST DATA\")return;const reason=window.prompt(\"Optional audit reason:\",\"Pre-launch sandbox test reset\")||\"Pre-launch sandbox test reset\";setLoading(button,true);try{const result=await api(`/api/admin/member-store/draws/${encodeURIComponent(drawId)}/reset-sandbox`,{method:\"POST\",body:JSON.stringify({confirmation,reason}),cacheMs:0,timeoutMs:30000});setNotice(`Sandbox Chase reset complete \u00B7 ${result.entriesRemoved||0} test entr${Number(result.entriesRemoved||0)===1?\"y\":\"ies\"} cleared.`);await loadMemberStoreAdminV601(true);memberStorePaneV601(\"draws\");}catch(error){setNotice(error.message||String(error),true);}finally{setLoading(button,false);}}));\n    $(\"msSandboxGenerateV606\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget,resultNode=$(\"msSandboxMobileResultV606\");setLoading(button,true);try{const result=await api(\"/api/admin/member-sandbox/mobile-link\",{method:\"POST\",body:JSON.stringify({returnUrl:\"https://orbitcollectorsclub.com/pages/members-area#home\"}),cacheMs:0,timeoutMs:20000});if(resultNode){resultNode.hidden=false;resultNode.innerHTML=`<div class=\"orbit-v606-sandbox-qr\"><img src=\"${esc(result.qrDataUrl||\"\")}\" alt=\"QR code to open the Orbit test-member sandbox on mobile\"><div><strong>Scan this with your phone</strong><span>One-time link \u00B7 expires ${esc(memberStoreDateV601(result.expiresAt))}</span><a href=\"${esc(result.loginUrl||\"#\")}\" target=\"_blank\" rel=\"noopener\">Open sandbox \u2192</a><button type=\"button\" class=\"secondary\" data-v606-copy-sandbox>Copy secure link</button><small>${esc(result.member?.memberNumber||result.member?.email||\"Approved test member\")}</small></div></div>`;resultNode.querySelector(\"[data-v606-copy-sandbox]\")?.addEventListener(\"click\",async function(){try{await navigator.clipboard.writeText(result.loginUrl||\"\");this.textContent=\"Copied \u2713\";}catch(_){window.prompt(\"Copy secure sandbox link:\",result.loginUrl||\"\");}});}setNotice(\"Mobile sandbox QR created. The one-time link expires automatically.\");}catch(error){if(resultNode){resultNode.hidden=false;resultNode.textContent=error.message||String(error);}setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});\n    const sourceProviderConfigV609=sourceId=>{const source=(memberStoreAdminDataV601?.pokeAlerts?.sources||[]).find(row=>row.id===sourceId);return source?.sourceBroker?.configuredProvider||{sourceId,enabled:false,providerLabel:\"\",format:\"normalized_json\",endpointUrl:\"\",authMode:\"none\",authHeader:\"\",secretConfigured:false,fieldMap:{}};};\n    const populateSourceProviderV609=()=>{const sourceId=$(\"paSourceProviderRetailerV609\")?.value||\"\",cfg=sourceProviderConfigV609(sourceId);if($(\"paSourceNetworkV613\"))$(\"paSourceNetworkV613\").value=cfg.networkId||\"\";if($(\"paMerchantAccessV613\"))$(\"paMerchantAccessV613\").checked=cfg.merchantAccessConfirmed===true;if($(\"paFeedAccessV613\"))$(\"paFeedAccessV613\").checked=cfg.feedAccessConfirmed===true;if($(\"paSourceProviderEnabledV609\"))$(\"paSourceProviderEnabledV609\").checked=cfg.enabled===true;if($(\"paSourceProviderLabelV609\"))$(\"paSourceProviderLabelV609\").value=cfg.providerLabel||\"\";if($(\"paSourceProviderFormatV609\"))$(\"paSourceProviderFormatV609\").value=cfg.format||\"normalized_json\";if($(\"paSourceProviderEndpointV609\")){$(\"paSourceProviderEndpointV609\").value=\"\";$(\"paSourceProviderEndpointV609\").placeholder=cfg.endpointConfigured?\"Saved securely \u00B7 leave blank to keep\" : \"https://\u2026\";}if($(\"paSourceProviderCapabilityV610\"))$(\"paSourceProviderCapabilityV610\").value=cfg.capabilityMode||\"discovery\";if($(\"paSourceProviderMaxAgeV610\"))$(\"paSourceProviderMaxAgeV610\").value=cfg.maxAgeSeconds||900;if($(\"paSourceProviderCompleteV610\"))$(\"paSourceProviderCompleteV610\").checked=cfg.completeCatalogue===true;if($(\"paSourceProviderAuthModeV609\"))$(\"paSourceProviderAuthModeV609\").value=cfg.authMode||\"none\";if($(\"paSourceProviderAuthHeaderV609\"))$(\"paSourceProviderAuthHeaderV609\").value=cfg.authHeader||\"\";if($(\"paSourceProviderSecretV609\")){$(\"paSourceProviderSecretV609\").value=\"\";$(\"paSourceProviderSecretV609\").placeholder=cfg.secretConfigured?\"Saved securely \u00B7 leave blank to keep\":\"Enter token/password if required\";}if($(\"paSourceProviderFieldMapV609\"))$(\"paSourceProviderFieldMapV609\").value=Object.keys(cfg.fieldMap||{}).length?JSON.stringify(cfg.fieldMap,null,2):\"\";const node=$(\"paSourceProviderResultV609\");if(node)node.textContent=cfg.enabled?`${cfg.providerLabel||\"Partner source\"} configured${cfg.lastTestOk?\" \u00B7 last test passed\":\"\"}. Secret ${cfg.secretConfigured?\"saved securely\":\"not required/not saved\"}.`:\"No partner/commercial source enabled for this retailer yet.\";};\n    $(\"paSourceProviderRetailerV609\")?.addEventListener(\"change\",populateSourceProviderV609);populateSourceProviderV609();\n    let productEvidenceOffsetV610=null,productEvidenceSourceV610=\"\";\n    const inspectProductsV610=async(append=false)=>{\n      const sourceId=$(\"paProductsRetailerV618\")?.value||\"\",node=$(\"paProductEvidenceV610\"),more=$(\"paProductsMoreV610\");if(!node||!sourceId)return;\n      if(!append||sourceId!==productEvidenceSourceV610){productEvidenceOffsetV610=0;productEvidenceSourceV610=sourceId;node.textContent=\"Reading stored product evidence\u2026\";}const offset=productEvidenceOffsetV610||0;more.hidden=true;\n      try{const result=await api(\"/api/admin/poke-alerts/products?sourceId=\"+encodeURIComponent(sourceId)+\"&offset=\"+offset+\"&limit=50\");if(sourceId!==$(\"paProductsRetailerV618\")?.value)return;\n        const select=$(\"paFreshProductV613\");if(select){const keys=new Set(Array.from(select.options).map(o=>o.value));for(const p of result.products||[]){if(p.productKey&&p.url&&!p.productKey.endsWith(':queue-live')&&!keys.has(p.productKey)){const option=document.createElement('option');option.value=p.productKey;option.textContent=(p.title||'Product')+' \u00B7 '+(p.sku||sourceId);select.appendChild(option);keys.add(p.productKey);}}}\n        const source=(memberStoreAdminDataV601?.pokeAlerts?.sources||[]).find(row=>row.id===sourceId),failedSource=source?.health?.status&&source.health.status!==\"healthy\";\n        const rows=(result.products||[]).map(row=>`<tr><td><strong>${esc(row.title||\"Product\")}</strong><small>SKU: ${esc(row.sku||\"Not verified\")}</small><small>${esc(row.canonicalProductId||row.productKey||\"\")}</small>${row.gtin?`<small>EAN / GTIN: ${esc(row.gtin)}</small>`:\"\"}<small>${esc(row.region||\"UK\")} \u00B7 ${esc(row.category||\"Unclassified\")}${row.setName?` \u00B7 ${esc(row.setName)}`:\"\"}</small></td><td><strong>${esc(failedSource?\"UNKNOWN / degraded source\":row.currentAvailability||row.observedState||\"unknown\")}</strong><small>Last confirmed: ${esc(row.stockState||\"unknown\")}</small><small>${esc(row.rawState||\"No underlying stock state\")}</small><small>${esc(row.fulfilmentChannel||\"online\")}${row.storeName?` \u00B7 ${esc(row.storeName)}`:\"\"}${row.sellerType?` \u00B7 ${esc(row.sellerType)}`:\"\"}</small></td><td>${esc(memberStoreDateV601(row.lastSuccessfulObservationAt||row.stockLastConfirmedAt))}<small>Change: ${esc(memberStoreDateV601(row.lastStateTransitionAt))}</small><small>Checked: ${esc(memberStoreDateV601(row.lastProbeAt))}</small><small>${esc(row.freshness||\"Never confirmed\")} \u00B7 ${esc(row.executionEnvironment||\"Not checked\")}</small>${row.lastProbeErrorCode?`<small>${esc(row.lastProbeErrorCode)}</small>`:\"\"}</td><td>${esc(row.parseConfidence||\"Unverified\")}<small>${esc(row.stockEvidence||\"No stock evidence\")}</small><small>Alert eligible: ${!failedSource&&row.alertEligible?\"Yes, subject to member preferences\":\"No\"}</small><details><summary>Discovery &amp; proof</summary><p>${esc(row.discoverySource||\"Not recorded\")}</p><small>First seen: ${esc(memberStoreDateV601(row.firstSeenAt))}</small><small>${esc(row.evidenceFingerprint||\"\")}</small></details></td><td>${row.pricePence?esc(memberStoreMoneyV601(row.pricePence)):\"Price unverified\"}${row.url?`<small><a href=\"${esc(row.url)}\" target=\"_blank\" rel=\"noopener noreferrer\">Exact UK product \u2197</a></small><small class=\"orbit-v612-product-url\">${esc(row.url)}</small>`:\"No URL\"}</td></tr>`).join(\"\");\n        if(!append||offset===0)node.innerHTML=`<p>${esc(String(result.total||0))} stored products. Source health is not stock. This view does not certify delivery.</p>`+table([\"Product identity\",\"Current / last confirmed\",\"Freshness & checks\",\"Confidence & eligibility\",\"Price & exact product\"],[rows||`<tr><td colspan=\"5\">No products stored for this retailer.</td></tr>`],\"No products stored for this retailer.\");\n        const body=node.querySelector(\"tbody\");if(body){if(offset===0)body.innerHTML=rows||`<tr><td colspan=\"5\">No products stored.</td></tr>`;else body.insertAdjacentHTML(\"beforeend\",rows);}productEvidenceOffsetV610=result.nextOffset;more.hidden=result.nextOffset==null;\n      }catch(error){node.textContent=\"Product evidence could not be loaded: \"+String(error.message||error);}\n    };\n    $(\"paPcRegistryOpenV612\")?.addEventListener(\"click\",()=>{$(\"paProductsRetailerV618\").value=\"pokemon-center-uk\";activateModule(\"member-store\",\"poke-products\",{historyMode:\"push\"});inspectProductsV610(false);$(\"paProductEvidenceV610\").scrollIntoView({block:\"start\"});});\n    $(\"paPcDiscoveryV612\")?.addEventListener(\"submit\",async event=>{event.preventDefault();setLoading(event.submitter,true);const node=$(\"paPcActionResultV612\");node.textContent=\"Checking Pok\u00E9mon Center's own search. This is discovery, not a stock alert\u2026\";try{const result=await api(\"/api/admin/poke-alerts/discovery/run\",{method:\"POST\",body:JSON.stringify({query:$(\"paPcSearchV612\").value}),cacheMs:0,timeoutMs:50000});node.textContent=result.skipped?\"Discovery was not run: \"+(result.reason||\"another run is active\"):\"Discovery: \"+(result.status||\"finished\")+\". \"+(result.error||result.message||\"Open the SKU registry to inspect saved products.\");}catch(error){node.textContent=\"Search unavailable. Stock remains unconfirmed. \"+String(error.message||error);}finally{setLoading(event.submitter,false);}});\n    $(\"paPcSeedV612\")?.addEventListener(\"submit\",async event=>{event.preventDefault();setLoading(event.submitter,true);try{await api(\"/api/admin/poke-alerts/sku-registry\",{method:\"POST\",body:JSON.stringify({url:$(\"paPcUrlV612\").value,sku:$(\"paPcSkuV612\").value,title:$(\"paPcTitleV612\").value}),cacheMs:0});$(\"paPcActionResultV612\").textContent=\"UK product added. Stock is UNKNOWN until the exact product can be read.\";}catch(error){$(\"paPcActionResultV612\").textContent=String(error.message||error);}finally{setLoading(event.submitter,false);}});\n    $(\"paPcPairV612\")?.addEventListener(\"click\",async event=>{\n      if(!window.confirm(\"Pair your read-only Pok\u00E9mon Center browser probe? Server checks pause until this connection is revoked. Keep the downloaded connection file private.\"))return;\n      setLoading(event.currentTarget,true);try{const result=await api(\"/api/admin/poke-alerts/probe/pair\",{method:\"POST\",body:JSON.stringify({confirmation:\"ENABLE READ-ONLY POKEMON CENTER PROBE\"}),cacheMs:0});\n        const blob=new Blob([JSON.stringify({...result.connection,apiBase:new URL(API_BASE).origin},null,2)],{type:\"application/json\"}),href=URL.createObjectURL(blob),link=document.createElement(\"a\");link.href=href;link.download=\"orbit-probe-connection.json\";link.click();setTimeout(()=>URL.revokeObjectURL(href),1000);delete result.connection;\n        $(\"paPcProbeResultV612\").textContent=\"Paired. Save orbit-probe-connection.json beside the separate probe program, then start it. No observations have been proven by pairing alone.\";$(\"paPcPairV612\").disabled=true;$(\"paPcRevokeV612\").disabled=false;\n      }catch(error){$(\"paPcProbeResultV612\").textContent=String(error.message||error);setLoading(event.currentTarget,false);}\n    });\n    $(\"paPcRevokeV612\")?.addEventListener(\"click\",async event=>{if(!window.confirm(\"Revoke this Pok\u00E9mon Center browser connection and restore server checks?\"))return;setLoading(event.currentTarget,true);try{await api(\"/api/admin/poke-alerts/probe/revoke\",{method:\"POST\",body:JSON.stringify({confirmation:\"REVOKE POKEMON CENTER PROBE\"}),cacheMs:0});$(\"paPcProbeResultV612\").textContent=\"Connection revoked. The old connection file no longer works.\";$(\"paPcPairV612\").disabled=false;}catch(error){$(\"paPcProbeResultV612\").textContent=String(error.message||error);}finally{setLoading(button,false);}});\n    $(\"paInspectProductsV610\")?.addEventListener(\"click\",()=>inspectProductsV610(false));$(\"paProductsMoreV610\")?.addEventListener(\"click\",()=>inspectProductsV610(true));\n    $(\"paProductsRetailerV618\")?.addEventListener(\"change\",()=>{productEvidenceSourceV610=\"\";productEvidenceOffsetV610=null;$(\"paProductEvidenceV610\").textContent=\"Select View products Orbit sees to read this retailer.\";$(\"paProductsMoreV610\").hidden=true;});\n    $(\"paSaveAutoScoutV610\")?.addEventListener(\"click\",async()=>{try{await api(\"/api/admin/poke-alerts/settings\",{method:\"POST\",body:JSON.stringify({stockScoutAutomaticEnabled:$(\"paAutoScoutV610\")?.checked===true})});$(\"paScoutQueueV610\").insertAdjacentHTML(\"afterbegin\",\"<p>Automatic research policy saved. Stock polling is unchanged.</p>\");}catch(error){$(\"paScoutQueueV610\").textContent=String(error.message||error);}});\n\n    $(\"paSourceProviderFormV609\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter;setLoading(button,true);try{let fieldMap={};const raw=($(\"paSourceProviderFieldMapV609\")?.value||\"\").trim();if(raw){try{fieldMap=JSON.parse(raw);}catch(_){throw new Error(\"Field map must be valid JSON.\");}}const sourceId=$(\"paSourceProviderRetailerV609\")?.value;const result=await api(`/api/admin/poke-alerts/source-providers/${encodeURIComponent(sourceId)}`,{method:\"POST\",body:JSON.stringify({enabled:$(\"paSourceProviderEnabledV609\")?.checked===true,providerLabel:$(\"paSourceProviderLabelV609\")?.value||\"\",format:$(\"paSourceProviderFormatV609\")?.value||\"normalized_json\",endpointUrl:$(\"paSourceProviderEndpointV609\")?.value||\"\",networkId:$(\"paSourceNetworkV613\")?.value||\"\",merchantAccessConfirmed:$(\"paMerchantAccessV613\")?.checked===true,feedAccessConfirmed:$(\"paFeedAccessV613\")?.checked===true,capabilityMode:$(\"paSourceProviderCapabilityV610\")?.value||\"discovery\",maxAgeSeconds:Number($(\"paSourceProviderMaxAgeV610\")?.value||900),completeCatalogue:$(\"paSourceProviderCompleteV610\")?.checked===true,authMode:$(\"paSourceProviderAuthModeV609\")?.value||\"none\",authHeader:$(\"paSourceProviderAuthHeaderV609\")?.value||\"\",authSecret:$(\"paSourceProviderSecretV609\")?.value||\"\",fieldMap}),cacheMs:0,timeoutMs:20000});if($(\"paSourceProviderResultV609\"))$(\"paSourceProviderResultV609\").textContent=`Saved ${result.configuration?.providerLabel||\"source\"} securely. ${result.configuration?.secretConfigured?\"Secret is encrypted and masked.\":\"No secret stored.\"}`;await loadMemberStoreAdminV601(true);memberStorePaneV601(\"poke-sources\");}catch(error){if($(\"paSourceProviderResultV609\"))$(\"paSourceProviderResultV609\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    $(\"paSourceProviderTestV609\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget;setLoading(button,true);try{const sourceId=$(\"paSourceProviderRetailerV609\")?.value,result=await api(`/api/admin/poke-alerts/source-providers/${encodeURIComponent(sourceId)}/test`,{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:30000});if($(\"paSourceProviderResultV609\"))$(\"paSourceProviderResultV609\").textContent=`Read-only source check returned \u00B7 ${result.products||0} Pok\u00E9mon TCG products \u00B7 ${result.stockKnownProducts||0} with readable stock \u00B7 ${result.queueLive?\"queue live detected \u00B7 \":\"\"}${result.acquisitionMode||\"source broker\"}.`;await loadMemberStoreAdminV601(true);memberStorePaneV601(\"poke-sources\");}catch(error){if($(\"paSourceProviderResultV609\"))$(\"paSourceProviderResultV609\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    $(\"paStockScoutRunV609\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget,node=$(\"paStockScoutResultV609\"),sourceId=$(\"paStockScoutRetailerV609\")?.value;setLoading(button,true);if(node)node.textContent=\"Stock Scout is researching legitimate discovery, stock and queue sources. This can take up to 90 seconds\u2026\";try{const result=await api(\"/api/admin/poke-alerts/stock-scout/run\",{method:\"POST\",body:JSON.stringify({sourceIds:[sourceId],depth:\"routine\"}),cacheMs:0,timeoutMs:100000});const row=(result.results||[])[0];if(node)node.innerHTML=row?`<strong>${esc(row.diagnosis||\"Research complete\")}</strong><br>${esc(row.recommendedNextTest||\"\")}<br><small>${esc(result.overall||result.summary||\"\")}</small>`:esc(result.error||result.summary||\"Stock Scout finished without a retailer result.\");}catch(error){if(node)node.textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    $(\"paGuardianRunV605\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget;setLoading(button,true);try{const result=await api(\"/api/admin/poke-alerts/guardian/run\",{method:\"POST\",body:JSON.stringify({useAi:true}),cacheMs:0,timeoutMs:45000});const node=$(\"paGuardianResultV605\");if(node)node.textContent=result.aiUsed?`Guardian used ${result.ai?.model||\"the routine AI lane\"}: ${result.ai?.analysis||result.summary}`:(result.aiDeferred?`${result.summary} AI deferred: ${result.aiReason}`:result.summary);await loadMemberStoreAdminV601(true);memberStorePaneV601(\"poke-guardian\");}catch(error){if($(\"paGuardianResultV605\"))$(\"paGuardianResultV605\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    $(\"pokeAlertSettingsFormV602\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter;setLoading(button,true);try{const testEnabled=$(\"paTestDeliveryV603\")?.checked===true;const result=await api(\"/api/admin/poke-alerts/settings\",{method:\"POST\",body:JSON.stringify({smsPricePence:Number($(\"paAdminSmsPriceV602\")?.value||8),eventCooldownMinutes:Number($(\"paAdminCooldownV602\")?.value||10),smsDailyCapPence:Number($(\"paAdminDailyCapV602\")?.value||100),smsWeeklyCapPence:Number($(\"paAdminWeeklyCapV602\")?.value||500),emailDeliveryEnabled:$(\"paEmailDeliveryV603\")?.checked===true,smsDeliveryEnabled:$(\"paSmsDeliveryV603\")?.checked===true,testMemberDeliveryEnabled:testEnabled,testConfirmation:testEnabled?($(\"paTestConfirmV603\")?.value||\"\"):\"\"}),cacheMs:0});if($(\"paAdminSettingsResultV602\"))$(\"paAdminSettingsResultV602\").textContent=`Saved. Private test-member delivery is ${result.launch?.testMemberDeliveryEnabled?\"enabled\":\"paused\"}. SMS costs ${memberStoreMoneyV601(result.settings?.sms_price_pence||8)} only after confirmed delivery.`;await loadMemberStoreAdminV601(true);memberStorePaneV601(\"sms\");}catch(error){if($(\"paAdminSettingsResultV602\"))$(\"paAdminSettingsResultV602\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    $(\"paTwilioFormV603\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter;setLoading(button,true);try{const result=await api(\"/api/admin/poke-alerts/provider/twilio\",{method:\"POST\",body:JSON.stringify({accountSid:$(\"paTwilioSidV603\")?.value||\"\",authToken:$(\"paTwilioTokenV603\")?.value||\"\",senderMode:$(\"paTwilioSenderModeV603\")?.value||\"number\",fromNumber:$(\"paTwilioFromV603\")?.value||\"\",messagingServiceSid:$(\"paTwilioMessagingV603\")?.value||\"\"}),cacheMs:0,timeoutMs:20000});if($(\"paTwilioResultV603\"))$(\"paTwilioResultV603\").textContent=result.configuration?.configured?\"Twilio credentials saved securely. Use Test connection before enabling private test-member SMS.\":\"Twilio details saved but the provider is not complete.\";await loadMemberStoreAdminV601(true);memberStorePaneV601(\"sms\");}catch(error){if($(\"paTwilioResultV603\"))$(\"paTwilioResultV603\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    $(\"paTwilioTestConnectionV603\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget;setLoading(button,true);try{const result=await api(\"/api/admin/poke-alerts/provider/twilio/test\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:20000});if($(\"paTwilioResultV603\"))$(\"paTwilioResultV603\").textContent=result.connected?`Twilio connected successfully \u00B7 account ${result.accountStatus||\"active\"}.`:\"Twilio did not confirm the account.\";}catch(error){if($(\"paTwilioResultV603\"))$(\"paTwilioResultV603\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    $(\"paTwilioSendTestV603\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget;setLoading(button,true);try{const result=await api(\"/api/admin/poke-alerts/provider/twilio/test-sms\",{method:\"POST\",body:JSON.stringify({to:$(\"paTwilioTestPhoneV603\")?.value||\"\",body:$(\"paTwilioTestBodyV603\")?.value||\"\"}),cacheMs:0,timeoutMs:20000});if($(\"paTwilioResultV603\"))$(\"paTwilioResultV603\").textContent=`Test SMS submitted to Twilio \u00B7 ${result.status||\"queued\"}. No Member Credit was charged.`;}catch(error){if($(\"paTwilioResultV603\"))$(\"paTwilioResultV603\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    const runPokeMonitorV603=async(sourceIds,button)=>{setLoading(button,true);try{const result=await api(\"/api/admin/poke-alerts/monitor/run\",{method:\"POST\",body:JSON.stringify({sourceIds:sourceIds||[]}),cacheMs:0,timeoutMs:120000});const healthy=(result.sources||[]).filter(row=>row.status===\"healthy\").length,degraded=(result.sources||[]).filter(row=>row.status===\"degraded\").length,checking=(result.sources||[]).filter(row=>row.status===\"checking\"||row.status===\"backoff\").length,attention=(result.sources||[]).filter(row=>row.status===\"attention\").length,products=(result.sources||[]).reduce((sum,row)=>sum+Number(row.products||0),0);if($(\"paMonitorResultV603\"))$(\"paMonitorResultV603\").textContent=`Monitor run finished \u00B7 ${healthy} healthy \u00B7 ${degraded} degraded \u00B7 ${checking} retrying/checking \u00B7 ${attention} attention \u00B7 ${products} products observed.`;await loadMemberStoreAdminV601(true);memberStorePaneV601(\"poke-alerts\");}catch(error){if($(\"paMonitorResultV603\"))$(\"paMonitorResultV603\").textContent=error.message||String(error);}finally{setLoading(button,false);}};\n    $(\"paRunAllV603\")?.addEventListener(\"click\",event=>runPokeMonitorV603([],event.currentTarget));\n    document.querySelectorAll(\"[data-pa-run-source-v603]\").forEach(button=>button.addEventListener(\"click\",()=>runPokeMonitorV603([button.dataset.paRunSourceV603],button)));\n\n    $(\"pokeAlertObservationFormV602\")?.addEventListener(\"submit\",async event=>{event.preventDefault();const button=event.submitter;setLoading(button,true);try{const result=await api(\"/api/admin/poke-alerts/observation\",{method:\"POST\",body:JSON.stringify({sourceId:$(\"paObsSourceV602\")?.value,retailerId:$(\"paObsSourceV602\")?.value,productKey:$(\"paObsProductKeyV602\")?.value,title:$(\"paObsTitleV602\")?.value,stockState:$(\"paObsStateV602\")?.value,url:$(\"paObsUrlV602\")?.value,postcode:$(\"paObsPostcodeV602\")?.value,setName:$(\"paObsSetV602\")?.value,category:$(\"paObsCategoryV602\")?.value}),cacheMs:0});if($(\"paObsResultV602\"))$(\"paObsResultV602\").textContent=result.event?`Created ${memberStoreStatusV601(result.event.type)} stock event.`:(result.deduped?\"Transition deduped by cooldown.\":\"Observation stored; no alert-worthy transition.\");await loadMemberStoreAdminV601(true);memberStorePaneV601(\"poke-diagnostics\");}catch(error){if($(\"paObsResultV602\"))$(\"paObsResultV602\").textContent=error.message||String(error);}finally{setLoading(button,false);}});\n    document.querySelectorAll(\"[data-pa-fanout-v602]\").forEach(button=>button.addEventListener(\"click\",async()=>{setLoading(button,true);try{const result=await api(`/api/admin/poke-alerts/events/${encodeURIComponent(button.dataset.paFanoutV602)}/fanout-preview`,{cacheMs:0});if($(\"paFanoutResultV602\"))$(\"paFanoutResultV602\").textContent=`Preview match: ${result.matchedMembers||0} member(s), ${result.emailCandidates||0} email candidate(s), ${result.smsCandidates||0} SMS candidate(s). No messages sent.`;}catch(error){if($(\"paFanoutResultV602\"))$(\"paFanoutResultV602\").textContent=error.message||String(error);}finally{setLoading(button,false);}}));\n    $(\"msProcessDrawsV601\")?.addEventListener(\"click\",async event=>{const button=event.currentTarget;setLoading(button,true);try{const data=await api(\"/api/admin/member-store/process\",{method:\"POST\",body:\"{}\",cacheMs:0});setNotice(data.paused?\"Orbit Chase lifecycle is paused by the production gate.\":\"Orbit Chase lifecycle checked for the test-member sandbox.\");}catch(error){setNotice(error.message||String(error),true);}finally{setLoading(button,false);}});}\n  let memberStoreReadV618=0;\n  async function loadMemberStoreAdminV601(force=false){\n    const read=++memberStoreReadV618,mount=$(\"memberStoreAdminMountV601\");if(mount&&force)mount.innerHTML=\"<div class='orbit-empty-state' role='status'><strong>Loading Members tools\u2026</strong><span>Reading saved settings and evidence.</span></div>\";\n    try{const data=await api(\"/api/admin/member-store\",{cacheMs:force?0:5000,timeoutMs:15000});if(data.success===false)throw new Error(data.error||\"Saved settings are unavailable.\");if(read===memberStoreReadV618)renderMemberStoreAdminV601(data);return data;}\n    catch(error){if(read===memberStoreReadV618&&mount){mount.innerHTML=\"<div class='orbit-empty-state' role='alert'><strong>Members tools could not load</strong><span>\"+esc(error.message||error)+\"</span><button type='button' class='secondary' data-member-tools-retry-v618>Retry</button></div>\";mount.querySelector('[data-member-tools-retry-v618]').onclick=()=>loadMemberStoreAdminV601(true).catch(()=>{});}throw error;}\n  }\n  document.addEventListener('click',event=>{if(event.target.closest('[data-poke-settings-v618]'))activateModule('member-store','poke-agents',{historyMode:'push'});});\n\n\n  function ensureScannerModuleV6001(){\n    if($(\"orbitScannerAdminV6001\"))return;const shell=document.querySelector(\".orbit-admin-shell\");if(!shell)return;const url=API_BASE+\"/scanner?secret=\"+encodeURIComponent(secret),section=document.createElement(\"section\");section.id=\"orbitScannerAdminV6001\";section.className=\"orbit-module orbit-scanner-admin-v6001\";section.dataset.module=\"scanner-admin\";section.innerHTML=`<div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">CARD SHOWS \u00B7 DOOR ENTRY</p><h2>Scanner</h2><p>Scan tickets without leaving the Card Shows workspace. Use Full Screen when operating the door on a dedicated device.</p></div><a class=\"orbit-button-link\" href=\"${esc(url)}\" target=\"_blank\" rel=\"noopener\">Open Full Screen</a></div><div class=\"orbit-scanner-frame-wrap-v6001\"><iframe id=\"orbitScannerFrameV6001\" title=\"Orbit Card Show scanner\" allow=\"camera *\" loading=\"lazy\"></iframe></div>`;shell.appendChild(section);\n  }\n  function loadScannerModuleV6001(){ensureScannerModuleV6001();const frame=$(\"orbitScannerFrameV6001\");if(frame&&!frame.src)frame.src=API_BASE+\"/scanner?secret=\"+encodeURIComponent(secret);}\n  let orbitDirectorySourcesV651=[];\n  function renderDirectorySourcesV651(payload={}){orbitDirectorySourcesV651=Array.isArray(payload.sources)?payload.sources:[];const c=payload.counts||{},summary=$(\"directorySourceSummaryV651\"),box=$(\"directorySourcesV651\"),proposals=$(\"directorySourceProposalsV651\");if(summary)summary.innerHTML=`<article><small>Approved</small><strong>${Number(c.approved||0)}</strong></article><article><small>Enabled automation</small><strong>${Number(c.enabled||0)}</strong></article><article><small>Disabled</small><strong>${Number(c.disabled||0)}</strong></article><article><small>Awaiting approval</small><strong>${Number(c.proposed||0)}</strong></article>`;if(box)box.innerHTML=orbitDirectorySourcesV651.length?`<table><thead><tr><th>Source</th><th>Role</th><th>Coverage</th><th>Reliability</th><th>Status</th><th></th></tr></thead><tbody>${orbitDirectorySourcesV651.map(x=>`<tr><td><strong>${esc(x.label||x.host||\"Source\")}</strong><small>${esc(x.url||\"\")}</small>${x.notes?`<small>${esc(x.notes)}</small>`:\"\"}</td><td>${esc(String(x.trustRole||x.role||\"discovery_only\").replace(/_/g,\" \"))}<small>${esc(x.kind||\"\")}</small></td><td>${esc(x.geography||\"United Kingdom\")}</td><td>${esc(x.reliability||\"unknown\")}</td><td><span class=\"orbit-status-pill ${x.enabled!==false&&x.approvalStatus===\"approved\"?\"success\":\"muted\"}\">${x.enabled!==false&&x.approvalStatus===\"approved\"?\"Enabled\":\"Disabled\"}</span></td><td><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-csi-source-action=\"edit\" data-csi-source-id=\"${esc(x.id)}\">Edit</button><button type=\"button\" class=\"secondary\" data-csi-source-action=\"toggle\" data-csi-source-id=\"${esc(x.id)}\">${x.enabled!==false?\"Disable\":\"Enable\"}</button><button type=\"button\" class=\"secondary danger\" data-csi-source-action=\"remove\" data-csi-source-id=\"${esc(x.id)}\">Remove</button></div></td></tr>`).join(\"\")}</tbody></table>`:`<div class=\"orbit-empty-state\"><strong>No approved sources</strong><span>Add the first human-approved Discovery source.</span></div>`;const rows=Array.isArray(payload.proposals)?payload.proposals:[];if(proposals)proposals.innerHTML=rows.length?`<table><thead><tr><th>Proposed source</th><th>Evidence</th><th></th></tr></thead><tbody>${rows.map(x=>`<tr><td><strong>${esc(x.label||x.host||\"Proposed source\")}</strong><small>${esc(x.url||\"\")}</small></td><td>${esc(x.reason||x.evidenceSummary||\"Agent-discovered recurring source\")}</td><td><div class=\"orbit-action-row\"><button type=\"button\" data-csi-source-proposal=\"approve\" data-csi-proposal-id=\"${esc(x.id)}\">Approve</button><button type=\"button\" class=\"secondary danger\" data-csi-source-proposal=\"reject\" data-csi-proposal-id=\"${esc(x.id)}\">Reject</button></div></td></tr>`).join(\"\")}</tbody></table>`:`<div class=\"orbit-empty-state\"><strong>No source proposals waiting</strong><span>Agents cannot self-approve new recurring feeds.</span></div>`;}\n  async function loadDirectorySourcesV651(force=false){const payload=await api(\"/api/admin/directory/sources\",{cacheMs:force?0:5000,timeoutMs:15000});renderDirectorySourcesV651(payload);return payload;}\n  async function addDirectorySourceV651(){const label=window.prompt(\"Source name\");if(!label)return;const url=window.prompt(\"Source URL\");if(!url)return;const trustRole=window.prompt(\"Trust role: discovery_only, corroboration, or first_party_evidence\",\"discovery_only\")||\"discovery_only\";const kind=window.prompt(\"Source type (organiser, ticket_platform, specialist_directory, etc.)\",\"specialist_directory\")||\"specialist_directory\";const payload=await api(\"/api/admin/directory/sources\",{method:\"POST\",body:JSON.stringify({label,url,trustRole,kind,geography:\"United Kingdom\",enabled:true,automationAllowed:true}),cacheMs:0});renderDirectorySourcesV651(payload);}\n  async function handleDirectorySourceActionV651(event){const b=event.target.closest(\"[data-csi-source-action]\");if(!b)return;const id=b.dataset.csiSourceId,row=orbitDirectorySourcesV651.find(x=>x.id===id);if(!row)return;if(b.dataset.csiSourceAction===\"remove\"){if(!window.confirm(`Remove ${row.label||row.host} from the approved Source Registry? Discovery will stop using it.`))return;renderDirectorySourcesV651(await api(`/api/admin/directory/sources/${encodeURIComponent(id)}`,{method:\"DELETE\",cacheMs:0}));return;}if(b.dataset.csiSourceAction===\"toggle\"){renderDirectorySourcesV651(await api(`/api/admin/directory/sources/${encodeURIComponent(id)}`,{method:\"PATCH\",body:JSON.stringify({enabled:row.enabled===false}),cacheMs:0}));return;}if(b.dataset.csiSourceAction===\"edit\"){const label=window.prompt(\"Source name\",row.label||\"\");if(label===null)return;const url=window.prompt(\"Source URL\",row.url||\"\");if(url===null)return;const trustRole=window.prompt(\"Trust role: discovery_only, corroboration, or first_party_evidence\",row.trustRole||\"discovery_only\");if(trustRole===null)return;const notes=window.prompt(\"Notes\",row.notes||\"\");if(notes===null)return;renderDirectorySourcesV651(await api(`/api/admin/directory/sources/${encodeURIComponent(id)}`,{method:\"PATCH\",body:JSON.stringify({label,url,trustRole,notes}),cacheMs:0}));}}\n  async function handleDirectorySourceProposalV651(event){const b=event.target.closest(\"[data-csi-source-proposal]\");if(!b)return;const decision=b.dataset.csiSourceProposal,id=b.dataset.csiProposalId;if(decision===\"approve\"&&!window.confirm(\"Approve this source for automated Discovery?\"))return;renderDirectorySourcesV651(await api(`/api/admin/directory/source-proposals/${encodeURIComponent(id)}/${encodeURIComponent(decision)}`,{method:\"POST\",body:\"{}\",cacheMs:0}));}\n\n  function setDirectoryPaneV6001(tab=\"events\"){ensureDirectoryModuleV560();const wanted=[\"events\",\"control\",\"sources\",\"analytics\",\"sponsors\",\"organisers\"].includes(tab)?tab:\"events\";document.querySelectorAll(\"[data-directory-pane-v594]\").forEach(pane=>pane.hidden=pane.dataset.directoryPaneV594!==wanted);if(wanted===\"sponsors\")Promise.all([loadDirectorySponsorsV589(false),loadDirectorySponsorSettingsV593(false)]).catch(err=>setNotice(\"Directory sponsorship unavailable: \"+(err.message||err),true));if(wanted===\"organisers\")loadDirectoryOrganiserAccessV594(false).catch(err=>setNotice(\"Organiser access unavailable: \"+(err.message||err),true));if(wanted===\"sources\")loadDirectorySourcesV651(false).catch(err=>setNotice(\"Directory sources unavailable: \"+(err.message||err),true));if(wanted===\"analytics\")loadDirectoryAnalyticsV628(false,null).catch(err=>setNotice(\"Directory analytics unavailable: \"+(err.message||err),true));if(wanted===\"control\"){loadDirectoryControlCentreV625(false).catch(err=>setNotice(\"Directory Control Centre unavailable: \"+(err.message||err),true));loadDirectorySplitV648(false).catch(()=>{});loadDirectoryExclusionsV654(false).catch(()=>{});}if(wanted===\"events\")window.setTimeout(()=>loadDirectoryV560(false,{viewChanged:true}).catch(err=>renderDirectoryLocalErrorV6001(err)),0);}\n\n  // V735 Gmail+; email writes remain explicit and limited to owner confirmation.\n  const gmailHubV734={threadId:'',draftId:'',suggestedDraft:'',query:'in:inbox',pageToken:'',viewName:'Inbox',loading:false,mailLoaded:false,scanLoop:false,scanCancel:false};\n  function gmailHubStatusV734(message,error=false){const node=$('gmailHubNoticeV734');if(node){node.textContent=message;node.classList.toggle('error',Boolean(error));}}\n  function gmailHubDateV735(v){const d=new Date(v);return Number.isNaN(d.getTime())?String(v||''):d.toLocaleDateString('en-GB',{day:'numeric',month:'short'});}\n  async function gmailHubLabelsV735(){\n    const box=$('gmailHubLabelsV735');if(!box)return;\n    try{const data=await api('/api/admin/communications/mailbox/labels',{cacheMs:0});\n      const custom=(data.labels||[]).filter(l=>l.type==='user').sort((a,b)=>a.name.localeCompare(b.name));\n      box.innerHTML=custom.map(l=>'<button type=\"button\" title=\"'+esc(l.name)+'\" data-gmail-label-query-v735=\"'+esc('label:'+JSON.stringify(l.name))+'\">\u25B0 '+esc(l.name)+(l.unreadCount?' <small>('+Number(l.unreadCount)+')</small>':'')+'</button>').join('')||'<small>No custom Gmail labels</small>';\n    }catch(err){box.textContent='Labels unavailable: '+(err.message||'try refresh');}\n  }\n  function gmailHubScanRenderV737(data){\n    const set=(id,value)=>{const n=$(id);if(n)n.textContent=value;};\n    const stateLabel={complete:'Complete',running:'Index running',paused:'Paused',failed:'Paused after error',not_started:'Not started'}[data.state]||'Unknown';\n    const blocked=Number(data.nextEligibleAt?new Date(data.nextEligibleAt).getTime():0)>Date.now();\n    set('gmailHubScanHeadlineV737',blocked?'Rate-controlled: waiting for next safe Gmail request':stateLabel);\n    set('gmailHubScanIndexedV737',String(data.indexed||0));\n    set('gmailHubScanLastV737',data.lastBatchSize==null?'\u2014':String(data.lastBatchSize)+' messages');\n    set('gmailHubScanNextV737',data.state==='complete'?'Finished':blocked?new Date(data.nextEligibleAt).toLocaleTimeString('en-GB'):(data.state==='running'?'Ready':'\u2014'));\n    set('gmailHubScanActivityV737',data.lastSuccessAt?new Date(data.lastSuccessAt).toLocaleTimeString('en-GB'):'Not yet');\n    set('gmailHubScanStatusV735',stateLabel+' \u00B7 '+(data.scanned||0)+' discovered \u00B7 '+(data.indexed||0)+' indexed \u00B7 '+(data.skipped||0)+' skipped'+(data.error?' \u00B7 '+data.error:''));\n    set('gmailHubScanHelpV737',data.state==='complete'?'Gmail has no more pages. Full message bodies are still read on demand; AI review is separate.':blocked?'Waiting for Gmail quota safely. The saved cursor and '+(data.indexed||0)+' indexed messages will be preserved.':'Total mailbox size is unknown until enumeration finishes. Metadata only; Gmail has not been modified.');\n  }\n  async function gmailHubScanStatusV735(){\n    try{const data=await api('/api/admin/communications/mailbox/scan',{cacheMs:0,timeoutMs:20000});gmailHubScanRenderV737(data);return data;}\n    catch(err){const n=$('gmailHubScanStatusV735');if(n)n.textContent='Index status unavailable: '+err.message;return null;}\n  }\n  async function loadGmailHubV734(){\n    const status=await api('/api/admin/communications/status',{cacheMs:0});\n    const connect=$('gmailHubConnectV734'),setup=$('gmailHubSetupV734'),connected=$('gmailHubConnectedV734');\n    if(connect)connect.hidden=!status.configured||status.connected;\n    if(setup){setup.hidden=Boolean(status.configured);setup.textContent=status.configured?'':'Google configuration required on Render: '+status.missing.join(', ')+(status.redirectUri?' \u00B7 Google OAuth redirect URI: '+status.redirectUri:'');}\n    if(connected)connected.textContent=status.connected?'\u25CF Connected to '+status.email:'No Gmail account connected yet';\n    if(!status.connected){gmailHubV734.mailLoaded=false;gmailHubStatusV734('Connect your first business Gmail mailbox.');if($('gmailHubListV734'))$('gmailHubListV734').innerHTML='';return;}\n    await gmailHubScanStatusV735();\n    if(commsViewV736==='mail'&&!gmailHubV734.mailLoaded){await Promise.all([gmailHubLabelsV735(),gmailHubListV734()]);gmailHubV734.mailLoaded=true;}\n    commsSetViewV736(commsViewV736);\n  }\n  // V736: scoped Communications Home + persisted advisory task review.\n  let commsViewV736='home';\n  function commsSetViewV736(view){\n    if(!['home','mail','tasks','accounts'].includes(view))return;\n    commsViewV736=view;\n    document.querySelectorAll('[data-gmail-pane-v736]').forEach(node=>{node.hidden=node.dataset.gmailPaneV736!==view;});\n    document.querySelectorAll('[data-gmail-top-view-v737]').forEach(node=>{const a=node.dataset.gmailTopViewV737===view;node.classList.toggle('active',a);node.setAttribute('aria-selected',String(a));if(a)node.setAttribute('aria-current','page');else node.removeAttribute('aria-current');});\n    if(view==='mail'&&!gmailHubV734.mailLoaded){gmailHubV734.mailLoaded=true;Promise.all([gmailHubLabelsV735(),gmailHubListV734()]).catch(e=>gmailHubStatusV734(e.message,true));}\n    if(view==='home'||view==='tasks'||view==='accounts')commsRefreshV736().catch(e=>{const n=$('commsHomeProcessStatusV736');if(n)n.textContent='Unable to refresh: '+e.message;});\n  }\n  let paTasksFilterV743='all',paTasksCacheV743=[];\n  function commsRenderActionsV736(actions,target,short=false){\n    const el=$(target);if(!el)return;\n    if(target==='commsTasksListV736'){\n      paTasksCacheV743=Array.isArray(actions)?actions:[];\n      actions=paTasksCacheV743.filter(a=>paTasksFilterV743==='all'||\n        (paTasksFilterV743==='reply'&&['reply','follow_up'].includes(a.kind))||\n        (paTasksFilterV743==='form'&&['form','deadline'].includes(a.kind))||\n        a.kind===paTasksFilterV743);\n    }\n    el.innerHTML=actions.length?actions.slice(0,short?5:60).map(a=>'<article class=\"orbit-comms-action-v736\"><div><span class=\"orbit-comms-priority-v736 '+esc(a.priority)+'\">'+esc(a.priority||'review')+'</span><strong>'+esc(a.subject||'(No subject)')+'</strong><small>'+esc(a.from||'')+'</small><p>'+esc(a.suggestedAction||a.reason||'Review this message')+'</p><small>'+esc(a.reason||'')+'</small>'+(a.draftSuggestion?'<details class=\"orbit-pa-prepared-v739\"><summary>AI prepared a suggested reply</summary><p class=\"orbit-pa-draft-copy-v739\">'+esc(a.draftSuggestion)+'</p><small>Suggestion only \u2014 not saved or sent. Open &amp; handle to refine.</small></details>':'')+'</div><div class=\"orbit-comms-action-controls-v736\"><button type=\"button\" data-gmail-action-v736=\"open\" data-comms-thread-v736=\"'+esc(a.threadId)+'\">Open &amp; handle</button>'+(!short?'<button type=\"button\" class=\"secondary\" data-gmail-action-v736=\"confirm\" data-comms-thread-v736=\"'+esc(a.threadId)+'\">Keep on my list</button><button type=\"button\" class=\"secondary\" data-gmail-action-v736=\"dismiss\" data-comms-thread-v736=\"'+esc(a.threadId)+'\">Dismiss</button><label class=\"orbit-comms-note-v738\">My note / what needs doing<textarea rows=\"2\" maxlength=\"2000\" data-comms-task-note-v738=\"'+esc(a.threadId)+'\">'+esc(a.ownerNote||'')+'</textarea></label><button type=\"button\" class=\"secondary\" data-gmail-action-v736=\"note\" data-comms-thread-v736=\"'+esc(a.threadId)+'\">Save my note</button>':'')+'</div></article>').join(''):'<p>No AI-suggested actions awaiting review. This does not certify your mailbox is clear.</p>';\n  }\n  document.addEventListener('click',event=>{\n    const b=event.target.closest('[data-pa-task-filter-v743]');if(!b||state.currentModule!=='gmail-hub')return;\n    paTasksFilterV743=b.dataset.paTaskFilterV743||'all';\n    document.querySelectorAll('[data-pa-task-filter-v743]').forEach(x=>{x.classList.toggle('active',x===b);x.setAttribute('aria-pressed',String(x===b));});\n    commsRenderActionsV736(paTasksCacheV743,'commsTasksListV736');\n  });\n  // V741: passive, owner-visible live AI progress. Only polls while Personal Assistant\n  // is visible; no provider AI calls or mailbox writes are triggered by refresh.\n  let paProgressBusyV741=false;\n  function renderPaProgressV741(overview){\n    if(!overview)return;\n    const progress=overview.reviewProgress||{},set=(id,value)=>{const n=$(id);if(n)n.textContent=value;};\n    const total=Number(progress.eligibleMessages||0),done=Number(progress.reviewedMessages||0),remaining=Number(progress.remainingEligible||0);\n    set('paAiRatioV741',done.toLocaleString('en-GB')+' / '+total.toLocaleString('en-GB'));\n    set('paAiReviewedV741',done.toLocaleString('en-GB'));\n    set('paAiRemainingV741',remaining.toLocaleString('en-GB'));\n    set('paAiExcludedV741',Number(progress.excludedMessages||0).toLocaleString('en-GB'));\n    set('paAiSpamV741',Number(progress.suspectedJunk||0).toLocaleString('en-GB')+' AI flagged \u00B7 '+Number(progress.spamFolderCount||0).toLocaleString('en-GB')+' already in Spam');\n    const bar=$('paAiBarV741');if(bar){bar.max=Math.max(1,total);bar.value=Math.min(total,done);bar.setAttribute('aria-valuetext',done+' of '+total+' eligible indexed emails reviewed successfully');}\n    const a=overview.automation||{},b=overview.budget||{};\n    const probe=a.providerProbe||null;set('commsProviderProbeV742',probe?(probe.state==='ready'?'OpenAI connection verified':('OpenAI blocked: '+(probe.reason||'unknown')+(probe.httpStatus?' \u00B7 HTTP '+probe.httpStatus:'')+(probe.providerCode?' \u00B7 '+probe.providerCode:'')+' \u00B7 '+(probe.help||'')))+' \u00B7 Checked '+new Date(probe.checkedAt).toLocaleString('en-GB'):'No successful OpenAI provider check recorded. Click Test OpenAI connection in Settings.');\n    const blocked=a.pausedUntil&&new Date(a.pausedUntil).getTime()>Date.now();\n    set('paAiActivityV741',!a.enabled?'AI paused by owner':blocked?'AI waiting after provider error':b.totalAvailableUsd<0.03?'AI budgets exhausted':progress.complete?'Indexed backlog reviewed':a.lastRunAt?'Automatic review enabled \u00B7 Last batch '+new Date(a.lastRunAt).toLocaleTimeString('en-GB'):'Automatic review waiting to start');\n    set('paAiNoteV741','Indexed '+Number(progress.totalMessages||0).toLocaleString('en-GB')+' Gmail messages \u00B7 '+Number(overview.analysedThreads||0)+' completed conversation reviews \u00B7 '+Number(overview.invoicesIdentified||0)+' invoice candidates \u00B7 '+Number(overview.preparedSuggestions||0)+' draft suggestions \u00B7 '+Number(progress.excludedMessages||0)+' messages originally in Spam / Trash / Drafts (also queued for review). '+(progress.scanComplete?'History indexing finished.':'History indexing is still running.'));\n    set('paAiBudgetV743','Historical one-off: $'+Number(b.history?.estimatedSpentUsd||0).toFixed(3)+' / $100 \u00B7 Monthly: $'+Number(b.estimatedSpentUsd||0).toFixed(3)+' / $50 \u00B7 Combined remaining $'+Number(b.totalAvailableUsd||0).toFixed(2));\n    const error=(overview.recentErrors||[])[0];\n    const previousResolved=error&&a.lastSuccessfulAiAt&&error.errorAt&&new Date(a.lastSuccessfulAiAt).getTime()>new Date(error.errorAt).getTime();\n    set('paAiErrorV741',error?(previousResolved?'Previous failure (later AI successes recorded): ':'Latest issue: ')+(error.source||'provider')+' / '+error.type+(error.providerCode?' ('+error.providerCode+')':'')+(error.stage?' at '+error.stage:'')+(error.message?' \u2014 '+error.message:'')+(error.nextTryAt?' \u00B7 Retry after '+new Date(error.nextTryAt).toLocaleString('en-GB'):''):'No recent failed reviews recorded.');\n  }\n  async function paProgressPollV741(){\n    if(paProgressBusyV741||document.hidden||!state.adminAuthenticated||state.currentModule!=='gmail-hub')return;\n    paProgressBusyV741=true;\n    try{const overview=await api('/api/admin/communications/intelligence/overview',{cacheMs:0,timeoutMs:12000});renderPaProgressV741(overview);\n      if(['home','tasks'].includes(commsViewV736)){const now=Date.now();if(now-(paProgressPollV741.lastActionsAt||0)>=30000){paProgressPollV741.lastActionsAt=now;const actions=await api('/api/admin/communications/intelligence/tasks?status=pending&limit=60',{cacheMs:0,timeoutMs:10000});commsRenderActionsV736(actions.actions||[],'commsHomePrioritiesV736',true);commsRenderActionsV736(actions.actions||[],'commsTasksListV736');const n=$('commsHomePendingV736');if(n)n.textContent=String(overview.pending||0);}}\n    }catch(e){const n=$('paAiErrorV741');if(n)n.textContent='Live status unavailable; will retry automatically: '+(e.message||'network error');}finally{paProgressBusyV741=false;}\n  }\n  // V742 explicit owner action, one synthetic paid OpenAI request with no Gmail content.\n  document.addEventListener('click',async event=>{\n    const btn=event.target.closest('[data-comms-provider-probe-v742]');\n    if(!btn||state.currentModule!=='gmail-hub')return;\n    const output=$('commsProviderProbeV742');btn.disabled=true;\n    if(output)output.textContent='Testing OpenAI model access securely\u2026';\n    try{\n      const result=await api('/api/admin/communications/intelligence/provider-check',{method:'POST',body:'{}',cacheMs:0,timeoutMs:30000});\n      const d=result.providerProbe||{};\n      if(output)output.textContent=(result.success?'OpenAI connection verified. ':'OpenAI not ready. ')+(d.httpStatus?'HTTP '+d.httpStatus+'. ':'')+(d.reason?d.reason+'. ':'')+(d.providerCode?'Code '+d.providerCode+'. ':'')+(d.help||'');\n      await commsRefreshV736();\n    }catch(e){if(output)output.textContent='Provider check could not complete: '+(e.message||'unknown error');}\n    finally{btn.disabled=false;}\n  });\n  window.setInterval(paProgressPollV741,8000);\n  async function commsRefreshV736(){\n    if(state.currentModule!=='gmail-hub')return;\n    const [overview,tasks]=await Promise.all([api('/api/admin/communications/intelligence/overview',{cacheMs:0,timeoutMs:20000}),api('/api/admin/communications/intelligence/tasks?status=pending&limit=60',{cacheMs:0,timeoutMs:20000})]);\n    const set=(id,val)=>{const n=$(id);if(n)n.textContent=val;};\n    renderPaProgressV741(overview);\n    set('commsHomeConnectionV736',overview.connected?'Connected':'Not connected');set('commsHomeMailboxV736',overview.email||'Connect Business Gmail');set('commsAccountsStatusV736',overview.connected?'Connected: '+overview.email:'Not connected');\n    set('gmailHubTopTaskBadgeV737',String(overview.pending));set('commsHomeIndexedV736',String(overview.indexed));set('commsHomeAnalysedV736',String(overview.analysedThreads));set('commsHomePendingV736',String(overview.pending));set('commsPaCoverageV739',overview.scan.state==='complete'?'Full history indexed; AI review '+overview.analysedThreads+' conversations so far.':'Still examining your mailbox. These are findings so far, not a clean bill of health.');set('gmailHubTaskBadgeV736',String(overview.pending));\n    set('commsHomeScanV736','History index: '+overview.scan.state+' \u00B7 '+overview.scan.scanned+' scanned'+(overview.scan.lastSuccessAt?' \u00B7 last success '+new Date(overview.scan.lastSuccessAt).toLocaleTimeString('en-GB'):''));set('commsHomeDailyV736',overview.dailyCompleted+' completed reviews \u00B7 '+overview.dailyFailures+' failed \u00B7 '+overview.dailyAnalysed+' attempted today'+(overview.failedConversations?' \u00B7 '+overview.failedConversations+' scheduled for retry':''));const b=overview.budget||overview.automation?.budget||{};set('commsAutomationStatusV738',(overview.automation?.enabled?'Background AI ON':'Background AI paused')+' \u00B7 Estimated month: $'+Number(b.estimatedSpentUsd||0).toFixed(3)+' / $'+Number(b.limitUsd||50).toFixed(2)+' \u00B7 Remaining: $'+Number(b.remainingUsd||0).toFixed(2)+(b.warningThreshold?' \u00B7 '+b.warningThreshold+'% budget warning':'')+(overview.automation?.lastRunAt?' \u00B7 Last batch: '+new Date(overview.automation.lastRunAt).toLocaleString('en-GB'):' \u00B7 Waiting for batch')+(overview.automation?.pausedReason?' \u00B7 '+overview.automation.pausedReason:'')+(overview.automation?.lastError?' \u00B7 Error: '+overview.automation.lastError:'')+(overview.recentErrors?.length?' \u00B7 Latest retry issue: '+overview.recentErrors[0].type:''));\n    commsRenderActionsV736(tasks.actions||[],'commsHomePrioritiesV736',true);commsRenderActionsV736(tasks.actions||[],'commsTasksListV736');\n  }\n  document.addEventListener('click',async event=>{\n    if(state.currentModule!=='gmail-hub')return;\n    const b=event.target.closest('[data-gmail-view-v736],[data-gmail-home-action-v736],[data-gmail-action-v736]');if(!b)return;\n    if(b.dataset.gmailViewV736){activateModule('gmail-hub',b.dataset.gmailViewV736,{historyMode:'push'});return;}\n    try{\n      if(b.dataset.gmailHomeActionV736==='refresh'){await commsRefreshV736();return;}\n      if(b.dataset.gmailHomeActionV736==='process'){\n        if(!confirm('Analyse up to five indexed real Gmail conversations using paid AI? No message will be changed or sent.'))return;\n        b.disabled=true;const n=$('commsHomeProcessStatusV736');if(n)n.textContent='AI reviewing indexed conversations\u2026';\n        try{const d=await api('/api/admin/communications/intelligence/process',{method:'POST',body:'{}',cacheMs:0,timeoutMs:120000});if(n)n.textContent='Successfully reviewed '+d.analysed+' conversations; '+d.suggestions+' suggestions; '+d.errors.length+' errors. No Gmail messages changed.';await commsRefreshV736();}\n        finally{b.disabled=false;}return;\n      }\n      if(b.dataset.gmailActionV736==='open'){\n        activateModule('gmail-hub','mail',{historyMode:'push'});await gmailHubOpenV734(b.dataset.commsThreadV736);return;\n      }\n      if(['confirm','dismiss','note'].includes(b.dataset.gmailActionV736)){\n        const status=b.dataset.gmailActionV736==='confirm'?'confirmed':b.dataset.gmailActionV736==='dismiss'?'dismissed':'pending';\n        const note=b.dataset.gmailActionV736==='note'?(document.querySelector('[data-comms-task-note-v738=\"'+b.dataset.commsThreadV736+'\"]')?.value||''):undefined;\n        await api('/api/admin/communications/intelligence/tasks/review',{method:'POST',body:JSON.stringify({threadId:b.dataset.commsThreadV736,status,...(note!==undefined?{note}:{})}),cacheMs:0});await commsRefreshV736();return;\n      }\n    }catch(e){const n=$('commsHomeProcessStatusV736');if(n)n.textContent='Communications action failed: '+e.message;}\n  });\n  // V739: preview actual indexed-mail cleanup candidates; zero provider writes.\n  document.addEventListener('click',async event=>{\n    const button=event.target.closest('[data-pa-cleanup-v739]');\n    if(!button||state.currentModule!=='gmail-hub')return;\n    const out=$('commsCleanupPreviewV739');button.disabled=true;\n    if(out)out.textContent='Examining indexed message metadata; nothing will be deleted\u2026';\n    try{\n      const data=await api('/api/admin/communications/intelligence/cleanup-preview',{cacheMs:0,timeoutMs:35000});\n      if(out){\n        const senders=(data.provisionalClutterSenders||[]).slice(0,18);\n        const cities=(data.proposedShowLabels||[]).slice(0,15);\n        out.innerHTML='<p><strong>'+Number(data.sampledMessages||0)+' of '+Number(data.totalIndexed||0)+' indexed messages sampled.</strong> '+Number(data.protectedCandidates||0)+' messages contain possible important business/financial keywords and were excluded from clutter suggestions.</p>'+\n          '<h4>Potential newsletter senders \u2014 check before unsubscribing</h4>'+(senders.length?'<ul>'+senders.map(x=>'<li><strong>'+esc(x.sender)+'</strong> \u00B7 '+Number(x.count||0)+' sampled messages <small>'+esc((x.examples||[]).join(' \u00B7 '))+'</small><div class=\"orbit-pa-cleanup-controls-v741\"><button type=\"button\" class=\"secondary\" data-pa-cleanup-decision-v741=\"review_unsubscribe\" data-pa-cleanup-sender-v741=\"'+esc(x.sender)+'\">Add to unsubscribe review</button><button type=\"button\" class=\"secondary\" data-pa-cleanup-decision-v741=\"keep\" data-pa-cleanup-sender-v741=\"'+esc(x.sender)+'\">Not junk \u00B7 Keep</button></div></li>').join('')+'</ul>':'<p>No obvious newsletter candidates in this sample.</p>')+\n          '<h4>Possible show folders</h4>'+(cities.length?'<p>'+cities.map(x=>'<span class=\"orbit-pa-label-preview-v739\">'+esc(x.name)+' ('+Number(x.matchingSampleCount||0)+')</span>').join(' ')+'</p>':'<p>No show-location suggestions in this sample.</p>')+\n          '<small>Review only. No messages, filters, subscriptions or labels were changed. Classification needs verification before applying rules.</small>';\n      }\n    }catch(e){if(out)out.textContent='Cleanup preview unavailable: '+e.message;}finally{button.disabled=false;}\n  });\n  async function loadPaCleanupRegisterV741(){\n    const box=$('paCleanupRegisterV741');if(!box)return;\n    const data=await api('/api/admin/communications/intelligence/cleanup-register',{cacheMs:0,timeoutMs:15000});\n    const rows=data.entries||[];\n    box.innerHTML='<p><strong>'+Number(data.confirmedUnsubscribed||0)+' verified unsubscribed lists</strong> \u00B7 '+Number(data.awaitingReview||0)+' awaiting owner review. No unsubscribe calls have been sent by Orbit.</p>'+(rows.length?'<ul>'+rows.map(r=>'<li><strong>'+esc(r.sender)+'</strong> \u00B7 '+esc(r.decision==='keep'?'Keep \u2014 not junk':r.decision==='review_unsubscribe'?'Review unsubscribe request':'Ignore suggestion')+' \u00B7 '+esc(r.unsubscribeState||'not_requested')+'</li>').join('')+'</ul>':'<p>No cleanup decisions recorded yet.</p>');\n  }\n  document.addEventListener('click',async e=>{\n    if(state.currentModule!=='gmail-hub')return;\n    const btn=e.target.closest('[data-pa-cleanup-register-v741],[data-pa-cleanup-decision-v741]');if(!btn)return;\n    btn.disabled=true;\n    try{\n      if(btn.hasAttribute('data-pa-cleanup-decision-v741')){\n        const decision=btn.dataset.paCleanupDecisionV741,sender=btn.dataset.paCleanupSenderV741;\n        let label='';if(decision==='keep'){label=window.prompt('Optional suggested Gmail folder/label for '+sender+' (nothing will be moved yet):','')||'';}\n        await api('/api/admin/communications/intelligence/cleanup-decision',{method:'POST',body:JSON.stringify({sender,decision,label}),cacheMs:0});\n      }\n      await loadPaCleanupRegisterV741();\n    }catch(err){const n=$('paCleanupRegisterV741');if(n)n.textContent='Cleanup decision could not be saved: '+err.message;}finally{btn.disabled=false;}\n  });\n  // V738 explicit owner background AI and read-only Gmail rules audit.\n  document.addEventListener('click',async event=>{\n    if(state.currentModule!=='gmail-hub')return;\n    const btn=event.target.closest('[data-comms-automation-v738],[data-comms-audit-v738]');if(!btn)return;\n    btn.disabled=true;\n    try{\n      if(btn.hasAttribute('data-comms-automation-v738')){\n        const enabled=btn.dataset.commsAutomationV738==='enable';\n        if(enabled&&!confirm('Allow Orbit to review indexed conversations automatically under its separate US$50/month AI budget? Orbit will NOT send, delete, unsubscribe or move Gmail messages.'))return;\n        await api('/api/admin/communications/intelligence/automation',{method:'POST',body:JSON.stringify({enabled}),cacheMs:0});\n        await commsRefreshV736();\n      }else{\n        const node=$('commsAuditOutputV738');if(node)node.textContent='Reading existing Gmail labels and filters (read only)\u2026';\n        const r=await api('/api/admin/communications/mailbox/rules-audit',{cacheMs:0,timeoutMs:30000});\n        if(node){node.textContent='';const labels=document.createElement('p');labels.textContent='Existing labels: '+r.labels.length+' \u00B7 Existing filters: '+(r.filtersAccessible?r.filters.length:'permission required')+' \u00B7 No changes applied.';node.append(labels);\n          if(r.requiresReauthorisation){const p=document.createElement('p');p.textContent='To read existing Gmail filter rules, re-authorise the Gmail connection in Accounts with the additional Gmail settings permission. Existing rules have not changed.';node.append(p);}\n          const sub=document.createElement('pre');sub.className='orbit-comms-audit-list-v738';sub.textContent=JSON.stringify({labels:r.labels.filter(x=>x.type==='user').map(x=>x.name),filters:r.filters,proposedFolders:r.proposedLabelCategories},null,2);node.append(sub);\n        }\n      }\n    }catch(e){const n=$(btn.hasAttribute('data-comms-audit-v738')?'commsAuditOutputV738':'commsAutomationStatusV738');if(n)n.textContent='Operation failed: '+e.message;}\n    finally{btn.disabled=false;}\n  });\n  async function gmailHubListV734(q,{append=false,viewName}={}){\n    if(gmailHubV734.loading)return;\n    if(q!==undefined){gmailHubV734.query=q;gmailHubV734.pageToken='';}\n    if(viewName)gmailHubV734.viewName=viewName;\n    const query=gmailHubV734.query;\n    gmailHubV734.loading=true;\n    const dest=$('gmailHubListV734'),more=$('gmailHubMoreV735');\n    if(!append&&dest)dest.innerHTML='<div class=\"orbit-gmail-pane-heading-v735\">Loading Gmail messages\u2026</div>';\n    gmailHubStatusV734('Reading '+gmailHubV734.viewName+' from Gmail\u2026');\n    try{\n      const data=await api('/api/admin/communications/messages?q='+encodeURIComponent(query)+'&max=50'+(append&&gmailHubV734.pageToken?'&pageToken='+encodeURIComponent(gmailHubV734.pageToken):''),{cacheMs:0,timeoutMs:60000});\n      const rows=(data.messages||[]).map(m=>'<button type=\"button\" class=\"orbit-gmail-message-v734 '+((m.labels||[]).includes('UNREAD')?'unread ':'')+(gmailHubV734.threadId===m.threadId?'selected':'')+'\" data-gmail-thread-v734=\"'+esc(m.threadId)+'\" aria-label=\"Open '+esc(m.subject)+'\"><span><strong>'+esc(m.from||'(Unknown sender)')+'</strong><small>'+esc(m.subject||'(No subject)')+'</small><span class=\"orbit-gmail-snippet-v735\">'+esc(m.snippet||'')+'</span></span><b>'+esc(gmailHubDateV735(m.date))+'</b></button>').join('');\n      if(dest)dest.innerHTML=(append?dest.innerHTML:'')+(rows||(!append?'<p class=\"orbit-muted\" style=\"padding:18px\">No messages in this view. Gmail has not been changed.</p>':''));\n      gmailHubV734.pageToken=data.nextPageToken||'';\n      if(more)more.hidden=!gmailHubV734.pageToken;\n      const view=$('gmailHubViewNameV735');if(view)view.textContent=gmailHubV734.viewName;\n      if($('gmailHubListCountV735'))$('gmailHubListCountV735').textContent=(data.resultSizeEstimate||0)+' estimated matching';\n      gmailHubStatusV734('Showing Gmail '+gmailHubV734.viewName+'. '+(data.nextPageToken?'More pages available.':'End of this view.')+' Full mailbox coverage requires the history index below.');\n    }catch(error){gmailHubStatusV734('Could not load '+gmailHubV734.viewName+': '+error.message,true);if(dest&&!append)dest.textContent='Gmail list failed. Use Refresh to retry.';}\n    finally{gmailHubV734.loading=false;}\n  }\n  async function gmailHubOpenV734(id){\n    gmailHubV734.threadId=id;gmailHubV734.draftId='';gmailHubV734.suggestedDraft='';\n    document.querySelectorAll('[data-gmail-thread-v734]').forEach(el=>el.classList.toggle('selected',el.dataset.gmailThreadV734===id));\n    const wrap=$('gmailHubThreadV734'),content=$('gmailHubThreadContentV735'),empty=$('gmailHubEmptyV735');\n    if(!wrap||!content)throw Error('The Gmail reading pane is not available. Refresh Orbit OS.');\n    content.hidden=false;if(empty)empty.hidden=true;\n    content.querySelector('[data-gmail-thread-body]').textContent='Opening full conversation from Gmail\u2026';\n    if($('gmailHubThreadSubjectV735'))$('gmailHubThreadSubjectV735').textContent='Loading conversation\u2026';\n    if(window.matchMedia('(max-width:820px)').matches)wrap.scrollIntoView({behavior:'smooth',block:'start'});\n    try{\n      const t=await api('/api/admin/communications/threads/'+encodeURIComponent(id),{cacheMs:0,timeoutMs:45000});\n      const messages=t.messages||[];\n      if(!messages.length)throw Error('Gmail returned no messages for this conversation.');\n      if($('gmailHubThreadSubjectV735'))$('gmailHubThreadSubjectV735').textContent=messages[messages.length-1].subject||'(No subject)';\n      const card=m=>'<article class=\"orbit-gmail-thread-message-v734\"><strong>'+esc(m.from||'(Unknown sender)')+'</strong><small>To: '+esc(m.to||'')+' \u00B7 '+esc(m.date||'')+'</small><p>'+esc(m.text||m.snippet||'(This message has no plain-text body; HTML-only messages are not rendered in this pilot.)')+'</p></article>';\n      const earlier=messages.slice(0,-1),history=content.querySelector('[data-gmail-thread-body]');\n      history.innerHTML='<h4>Latest message</h4>'+card(messages[messages.length-1])+(earlier.length?'<details id=\"gmailHubOlderV737\"><summary>'+earlier.length+' earlier message'+(earlier.length===1?'':'s')+' \u2014 expand conversation</summary>'+earlier.map(card).join('')+'</details>':'');\n      wrap.scrollTop=0;\n      if($('gmailHubDraftV734'))$('gmailHubDraftV734').value='';\n      if($('gmailHubInstructionV734'))$('gmailHubInstructionV734').value='';\n      if($('gmailHubDraftStatusV734'))$('gmailHubDraftStatusV734').textContent='No reply has been sent. Ask AI to draft, review, and save to Gmail Drafts.';\n      if($('gmailHubReadSyncV735'))$('gmailHubReadSyncV735').textContent='Conversation read from Gmail \u00B7 No state changed';\n      gmailHubStatusV734('Conversation opened successfully. Gmail is the source of truth.');\n    }catch(error){content.querySelector('[data-gmail-thread-body]').textContent='Could not open conversation: '+error.message;gmailHubStatusV734('Opening failed: '+error.message,true);}\n  }\n  async function gmailHubDraftV734(){\n    if(!gmailHubV734.threadId)throw Error('Choose a conversation first.');\n    const instruction=$('gmailHubInstructionV734')?.value||'';\n    gmailHubStatusV734('Preparing AI reply for your approval\u2026');\n    const result=await api('/api/admin/communications/drafts/generate',{method:'POST',body:JSON.stringify({threadId:gmailHubV734.threadId,currentDraft:$('gmailHubDraftV734')?.value||'',instruction}),timeoutMs:60000});\n    $('gmailHubDraftV734').value=result.body;gmailHubV734.suggestedDraft=result.body;\n    $('gmailHubDraftStatusV734').textContent='Draft prepared by '+result.model+'. Review and edit. Not yet saved to Gmail.';\n    gmailHubStatusV734('AI draft ready. Ask for changes or save it to Gmail Drafts. Nothing has been sent.');\n  }\n  async function gmailHubSaveV734(){\n    if(!gmailHubV734.threadId)throw Error('Choose a conversation first.');\n    const body=$('gmailHubDraftV734')?.value||'';if(!body.trim())throw Error('Reply cannot be empty.');\n    const result=await api('/api/admin/communications/drafts/save',{method:'POST',body:JSON.stringify({threadId:gmailHubV734.threadId,draftId:gmailHubV734.draftId,body}),timeoutMs:45000});\n    gmailHubV734.draftId=result.draftId;\n    $('gmailHubDraftStatusV734').textContent='Confirmed saved in Gmail Drafts. Review/send from Gmail. Orbit OS has NOT sent this email.';\n    gmailHubStatusV734('Gmail confirmed the draft was saved. No message was sent.');\n  }\n  async function gmailHubRunScanV735(){\n    if(gmailHubV734.scanLoop)return;\n    gmailHubV734.scanLoop=true;gmailHubV734.scanCancel=false;\n    try{\n      // V738 server-side importer: this tab monitors but does not advance the\n      // cursor. Closing the browser cannot stop the authorised background job.\n      while(!gmailHubV734.scanCancel){\n        const result=await gmailHubScanStatusV735();\n        if(!result||result.state!=='running')break;\n        await new Promise(resolve=>window.setTimeout(resolve,12000));\n      }\n    }finally{gmailHubV734.scanLoop=false;}\n  }\n  document.addEventListener('keydown',e=>{if(e.key==='Enter'&&e.target?.id==='gmailHubSearchV735'){e.preventDefault();gmailHubListV734(e.target.value||'',{viewName:'Search'});}});\n  document.addEventListener('click',async e=>{\n    const el=e.target.closest('[data-gmail-action-v734],[data-gmail-thread-v734],[data-gmail-folder-v735],[data-gmail-label-query-v735]');if(!el)return;\n    if(state.currentModule!=='gmail-hub')return;\n    e.preventDefault();\n    try{\n      if(el.hasAttribute('data-gmail-thread-v734')){await gmailHubOpenV734(el.dataset.gmailThreadV734);return;}\n      if(el.hasAttribute('data-gmail-folder-v735')||el.hasAttribute('data-gmail-label-query-v735')){\n        const q=el.dataset.gmailFolderV735||el.dataset.gmailLabelQueryV735;\n        document.querySelectorAll('[data-gmail-folder-v735],[data-gmail-label-query-v735]').forEach(node=>node.classList.toggle('active',node===el));\n        await gmailHubListV734(q,{viewName:el.textContent.trim()});return;\n      }\n      const action=el.dataset.gmailActionV734;\n      if(action==='focus-draft'||action==='generate-draft'){\n        $('gmailHubEditorV737')?.scrollIntoView({behavior:'smooth',block:'nearest'});\n        if(action==='generate-draft')await gmailHubDraftV734();\n        else $('gmailHubInstructionV734')?.focus();return;\n      }\n      if(action==='show-history'){$('gmailHubOlderV737')?.setAttribute('open','');$('gmailHubHistoryV737')?.scrollIntoView({behavior:'smooth',block:'start'});return;}\n      if(action==='refresh')await loadGmailHubV734();\n      else if(action==='connect'){const data=await api('/api/admin/communications/connect',{method:'POST',body:'{}'});window.location.assign(data.url);}\n      else if(action==='unanswered')await gmailHubListV734('in:inbox -from:me',{viewName:'Reply candidates (not confirmed)'});\n      else if(action==='inbox')await gmailHubListV734('in:inbox',{viewName:'Inbox'});\n      else if(action==='finance')await gmailHubListV734('in:anywhere -in:trash {invoice billing payment receipt}',{viewName:'Finance candidates'});\n      else if(action==='search')await gmailHubListV734($('gmailHubSearchV735')?.value||'',{viewName:'Search'});\n      else if(action==='more')await gmailHubListV734(undefined,{append:true});\n      else if(action==='back'){$('gmailHubEmptyV735').hidden=false;$('gmailHubThreadContentV735').hidden=true;gmailHubV734.threadId='';}\n      else if(action==='triage'){\n        gmailHubStatusV734('Finding unverified action candidates in recent inbox messages\u2026');\n        const result=await api('/api/admin/communications/triage?q='+encodeURIComponent('in:inbox -from:me')+'&max=50',{cacheMs:0,timeoutMs:60000});\n        $('gmailHubTriageV734').innerHTML=(result.suggestions||[]).map(m=>'<button type=\"button\" class=\"orbit-gmail-message-v734\" data-gmail-thread-v734=\"'+esc(m.threadId)+'\"><span><strong>'+esc(m.category)+' \u00B7 '+esc(m.subject)+'</strong><small>'+esc(m.task)+' \u00B7 '+esc(m.confidence)+' \u00B7 '+esc(m.from)+'</small></span><b>Review</b></button>').join('')||'<p>No candidates found.</p>';\n        gmailHubStatusV734('These are heuristic suggestions, not verified tasks or debts. No mailbox changes made.');\n      }\n      else if(action==='ai-triage'){\n        if(!confirm('Use your configured AI model to review up to 15 recent inbox messages? This incurs a small AI API charge and creates only suggestions, no Gmail changes.'))return;\n        gmailHubStatusV734('AI is reviewing recent Gmail messages. No actions are being taken\u2026');\n        const result=await api('/api/admin/communications/triage/ai',{method:'POST',body:'{}',cacheMs:0,timeoutMs:120000});\n        $('gmailHubTriageV734').innerHTML=(result.suggestions||[]).map(m=>'<button type=\"button\" class=\"orbit-gmail-message-v734\" data-gmail-thread-v734=\"'+esc(m.threadId)+'\"><span><strong>'+esc(m.priority.toUpperCase()+' \u00B7 '+m.subject)+'</strong><small>'+esc(m.kind+' \u00B7 '+m.suggestedAction)+'</small><span class=\"orbit-gmail-snippet-v735\">'+esc(m.reason)+'</span></span><b>Review</b></button>').join('')||'<p>No priorities identified in this small sample.</p>';\n        gmailHubStatusV734('AI analysed '+result.analysed+' recent messages using '+result.model+'. These are suggestions, not confirmed obligations. Zero Gmail changes.');\n      }\n      else if(action==='labels'){if(!confirm('Create eleven Orbit labels inside Gmail? Existing Gmail labels and messages stay unchanged.'))return;const result=await api('/api/admin/communications/labels/setup',{method:'POST',body:'{}'});gmailHubStatusV734('Gmail confirmed labels. '+result.created.length+' created; '+result.existing+' already existed.');await gmailHubLabelsV735();}\n      else if(action==='label'){const label=$('gmailHubLabelV734')?.value;if(!gmailHubV734.threadId)throw Error('Choose a conversation first.');if(!confirm('Apply '+label+' to this Gmail conversation?'))return;await api('/api/admin/communications/labels/apply',{method:'POST',body:JSON.stringify({id:gmailHubV734.threadId,label})});gmailHubStatusV734('Gmail confirmed category label '+label+' was applied.');}\n      else if(action==='mark-read'||action==='mark-unread'){if(!gmailHubV734.threadId)throw Error('Choose an email first.');const read=action==='mark-read';await api('/api/admin/communications/threads/read',{method:'POST',body:JSON.stringify({threadId:gmailHubV734.threadId,read})});$('gmailHubReadSyncV735').textContent=read?'Confirmed read in Gmail':'Confirmed unread in Gmail';await gmailHubListV734();}\n      else if(action==='draft')await gmailHubDraftV734();\n      else if(action==='save')await gmailHubSaveV734();\n      else if(action==='scan-start'){if(!confirm('Index all folders, including Spam and Trash? This stores message metadata in Orbit OS; it will not change Gmail or send messages.'))return;await api('/api/admin/communications/mailbox/scan/start',{method:'POST',body:'{}'});gmailHubRunScanV735();}\n      else if(action==='scan-pause'){gmailHubV734.scanCancel=true;await api('/api/admin/communications/mailbox/scan/pause',{method:'POST',body:'{}'});await gmailHubScanStatusV735();}\n      else if(action==='scan-resume'){await api('/api/admin/communications/mailbox/scan/resume',{method:'POST',body:'{}'});gmailHubRunScanV735();}\n    }catch(error){gmailHubStatusV734(error.message||'Gmail action failed.',true);}\n  });\n  function activateModule(module, preferredTab, options={}) {\n    const previousModuleV618=state.currentModule;\n    ensureDirectoryModuleV560();ensureScannerModuleV6001();\n    // V543 retire duplicate UI, preserving saved data and old bookmarks.\n    if(module===\"content\"){module=\"golden-schedule\";preferredTab=\"golden-schedule\";}\n    if(module===\"reports\"){module=\"finance\";preferredTab=\"\";}\n    // Preserve bookmarks to the former standalone schedule module.\n    if(module===\"golden-schedule\"){module=\"automation\";preferredTab=\"golden-schedule\";}\n    // V562 NOTE-04036451D0: the Vendor Event Tool is a scoped modal, not a\n    // global Admin overlay. Leaving Vendors must destroy any stale modal state.\n    if((module||\"dashboard\")!==\"vendors\")closeVendorEventToolV562(true);\n    state.currentModule = module || \"dashboard\";\n    // V644 NOTE-E43793A8B2: Directory Home attention links may target a list filter\n    // rather than a top-level pane. Resolve that filter before canonical sub-tab\n    // routing so Review decisions opens the actual canonical Review Queue.\n    if(state.currentModule===\"directory\" && [\"review_queue\",\"enriching\",\"approved\",\"past\",\"duplicate\",\"all\"].includes(String(preferredTab||\"\"))){\n      orbitDirectoryFilterV560=String(preferredTab);\n      orbitDirectoryPageV6001=1;\n      try{localStorage.setItem(\"orbitDirectoryFilterV581\",orbitDirectoryFilterV560);}catch(_e){}\n      preferredTab=\"events\";\n    }\n    preferredTab = canonicalOrbitSubtab(state.currentModule,preferredTab || savedOrbitSubtab(state.currentModule) || \"\");\n    const routeKey=primaryRouteForModuleV5991(state.currentModule,preferredTab,options.routeKey===\"gmail-hub\"?\"\":options.routeKey||\"\");\n    // V628: route restoration/deep links must select the same workspace-owned analytics site as a rail click.\n    setPerformanceWorkspaceSiteV628(routeKey);\n    if(state.currentModule===\"directory\")setDirectoryPaneV6001(preferredTab||\"events\");\n    if(state.currentModule===\"scanner-admin\")loadScannerModuleV6001();\n    try{localStorage.setItem(\"orbitAdminLastModule\",state.currentModule);localStorage.setItem(\"orbitAdminLastRouteV5991\",routeKey);}catch(_){}\n    syncWorkspaceNavigation(state.currentModule,preferredTab,routeKey);updateAdminRouteLocationV5991(routeKey,state.currentModule,preferredTab,options.historyMode||\"replace\");\n    const shell = document.querySelector(\".orbit-admin-shell\");\n    if (shell) {\n      shell.dataset.currentModule = state.currentModule;\n      shell.classList.toggle(\"orbit-admin-dashboard\", state.currentModule === \"dashboard\");\n    }\n    const contextNav = document.querySelector(\".orbit-v76-context-nav\");\n    if (contextNav) contextNav.classList.remove(\"orbit-context-nav-hidden\");\n    document.querySelectorAll(\"[data-module-nav]\").forEach(button => {\n      let active = button.dataset.moduleNav === state.currentModule;\n      if (active && button.dataset.gmailTopViewV737) active=button.dataset.gmailTopViewV737===(['home','mail','tasks','accounts'].includes(preferredTab)?preferredTab:'home');\n      if (active && button.dataset.commsOpen) active = button.dataset.commsOpen === (preferredTab || state.currentCommsViewV540 || \"inbox\");\n      if (active && button.dataset.engagementOpen) active = button.dataset.engagementOpen === (preferredTab || state.currentEngagementPane || \"broadcasts\");\n      if (active && button.dataset.advertisingOpen) active = button.dataset.advertisingOpen === (sessionStorage.getItem(\"orbitAdvertisingView\") || \"overview\");\n      if (active && button.dataset.drawOpen) active = button.dataset.drawOpen === (preferredTab || state.currentDrawPane || \"current\");\n      if (active && button.dataset.prizeArea) active = button.dataset.prizeArea === (state.currentPrizeArea || \"monthly\");\n      if (active && button.dataset.loyaltyOpen) active = button.dataset.loyaltyOpen === (preferredTab || state.currentLoyaltyPane || \"live\");\n      if (active && state.currentModule === \"events\") active = button.dataset.tab ? button.dataset.tab === (preferredTab || \"eventbrite\") : (preferredTab || \"eventbrite\") === \"eventbrite\";\n      if (active && button.dataset.ticketOpen) active = button.dataset.ticketOpen === (preferredTab || state.currentTicketPane || \"tickets\");\n      if (active && state.currentModule === \"vendors\" && button.dataset.vendorOpen) active = button.dataset.vendorOpen === (preferredTab || state.currentVendorPane || \"customers\");\n      // V525: every Fulfilment sub-tab shares data-module-nav=\"shipping\". Without\n      // this refinement activateModule() marks every shipping button active, which\n      // is why the live nav rendered as a solid row of blue buttons regardless of\n      // the CSS. Keep exactly one semantic/visual active shipping tab.\n      if (active && state.currentModule === \"shipping\" && button.dataset.shippingTab) active = button.dataset.shippingTab === (preferredTab || state.currentShippingPane || \"monthly\");\n      if (active && state.currentModule === \"intelligence\" && button.dataset.intelligenceOpen) active = button.dataset.intelligenceOpen === (preferredTab || sessionStorage.getItem(\"orbit-intelligence-tab\") || \"assistant\");\n      if (active && state.currentModule === \"members\" && button.dataset.memberView) active = button.dataset.memberView === (state.currentMemberView || \"active\");\n      if (active && state.currentModule === \"directory\" && button.dataset.directoryTopFilterV570) active = button.dataset.directoryTopFilterV570 === orbitDirectoryFilterV560;\n      if (active && state.currentModule === \"member-store\" && button.dataset.memberStoreView) active = button.dataset.memberStoreView === (preferredTab || state.currentMemberStorePaneV601 || \"overview\");\n      button.classList.toggle(\"active\", active);\n      button.setAttribute(\"aria-selected\", String(active));\n      // V370 NOTE-79A64BA33E: expose the same active state semantically as well\n      // as visually so every context sub-navigation has one unmistakable tab.\n      if(active) button.setAttribute(\"aria-current\",\"page\"); else button.removeAttribute(\"aria-current\");\n    });\n    document.querySelectorAll(\".orbit-module\").forEach(section => {\n      section.classList.toggle(\"active\", section.dataset.module === state.currentModule);\n    });\n    if (state.currentModule === \"gmail-hub\")commsSetViewV736(['home','mail','tasks','accounts'].includes(preferredTab)?preferredTab:'home');\n    if (state.currentModule === \"gmail-hub\" && state.adminAuthenticated) loadGmailHubV734().catch(error=>gmailHubStatusV734(error.message,true));\n    if (state.currentModule === \"dashboard\") {\n      restoreHomeOverviewCards();\n      restoreHomeNotice();\n      bindBusinessWorkspaceV599();\n      if(state.adminAuthenticated){\n        refreshOperationsWorkspaceV296().catch(()=>{});\n        loadSummary(null,true).catch(error=>console.warn(\"Home summary refresh deferred\",error?.message||error));\n        refreshBusinessHomeV599(true).catch(error=>console.warn(\"Workspace Home refresh deferred\",error?.message||error));\n        runHomeHealthChecksV554({announce:false,forceFresh:true}).catch(error=>console.warn(\"Home health checks deferred\",error?.message||error));\n      }\n    }\n\n    const sectionNames = {\n      dashboard: \"Dashboard\", members: \"Members\", events: \"Events\", shipping: \"Shipping\", \"box-inventory\":\"Box Accounting\",\n      fulfilment: \"Shipping\", operations: \"Operations Inbox\", media: \"Media Library\", shopify: \"Tickets\", automation: \"Prizes\", loyalty: \"Loyalty\", \"member-store\":\"Store\", \"website-images\": \"Website Images\", content: \"Monthly Content Images\", \"golden-schedule\": \"Prize Schedules\", engagement: \"Broadcasts & Newsletters\",\n      support: \"Messages\", comms: \"Email delivery & templates\", \"gmail-hub\":\"Personal Assistant\", testing: \"Testing\", settings: \"Settings\", storage: \"Storage & Cleanup\", intelligence: \"Orbit Intelligence\", development: \"Development Hub\", performance: \"Performance & Analytics\", \"ad-performance\": \"Ad Performance\", \"analytics-overview\": \"Overview\", \"analytics-sales\": \"Sales & Attribution\", \"analytics-google\": \"Google Analytics\", \"analytics-meta\": \"Meta Pixel\", activity: \"Business Activity\", reports: \"Event Attendance\", seo: \"SEO\", vendors: \"Vendors\", directory: \"Directory\", \"scanner-admin\":\"Scanner\", \"vendor-history\": \"Legacy Shopify History\", \"card-shopify\":\"Shopify\", finance: \"Finance\"\n    };\n    const sectionLabel = document.getElementById(\"orbitAdminSectionLabel\");\n    if (sectionLabel) sectionLabel.textContent = sectionNames[state.currentModule] || \"Orbit OS\";\n    document.querySelectorAll(\"[data-subnav-group]\").forEach(group => {\n      group.classList.toggle(\"active\", group.dataset.subnavGroup === state.currentModule);\n    });\n    document.querySelector(\".orbit-admin-app\")?.classList.remove(\"menu-open\");\n    document.getElementById(\"orbitAdminMenuToggle\")?.setAttribute(\"aria-expanded\", \"false\");\n\n    const defaultTabs = {\n      fulfilment: \"fulfilled-archive\",\n      shipping: \"fulfilment\",\n      shopify: \"shopify\",\n      events: \"eventbrite\",\n      automation: \"current\",\n      loyalty: null,\n      \"website-images\": null,\n      content: \"monthly-content\",\n      support: \"support-inbox\",\n      comms: \"communications\",\n      settings: \"admin-settings\"\n    };\n    if (state.currentModule === \"automation\") {\n      const drawPane = preferredTab || state.currentDrawPane || \"current\";\n      state.currentDrawPane = drawPane;\n      setDrawPane(drawPane);\n    }\n    if (state.currentModule === \"engagement\") {\n      const engagementPane = preferredTab || state.currentEngagementPane || \"broadcasts\";\n      state.currentEngagementPane = engagementPane;\n      setEngagementPaneV73(engagementPane);\n    }\n    if (state.currentModule === \"shopify\") {\n      const ticketPane = preferredTab || state.currentTicketPane || \"tickets\";\n      setTicketPaneV305(ticketPane);\n      // V370 NOTE-F80F8F9A18: entering Tickets is itself a refresh action.\n      // Do not make the operator press Refresh to see orders that arrived since\n      // the last visit. Promo Codes has its own loader in setTicketPaneV305.\n      if (ticketPane !== \"promo\") loadShopify().catch(err => setNotice(\"Tickets unavailable: \"+(err.message||err), true));\n    }\n\n    const tab = [\"shopify\",\"comms\",\"shipping\"].includes(state.currentModule) ? defaultTabs[state.currentModule] : (preferredTab || defaultTabs[state.currentModule]);\n    if(state.currentModule===\"shipping\")setShippingPaneV540(preferredTab);\n    if(state.currentModule===\"comms\")setCommsViewV462(preferredTab||\"inbox\");\n    if (tab) {\n      document.querySelectorAll(\"[data-tab]\").forEach(b => b.classList.toggle(\"active\", b.dataset.tab === tab));\n      document.querySelectorAll(\".orbit-table-panel\").forEach(panel => panel.classList.toggle(\"active\", panel.id === \"tab-\" + tab && panel.dataset.module === state.currentModule));\n    }\n\n    if (!state.adminAuthenticated) return;\n    if([\"comms\",\"support\",\"engagement\"].includes(state.currentModule))refreshCommsBadgesV540().catch(()=>{});\n    if (state.currentModule === \"intelligence\") {\n      const intelligencePaneV702=preferredTab||state.currentIntelligencePaneV618||\"overview\";\n      if([\"agents\",\"ondemand\"].includes(intelligencePaneV702))loadAgentDirectoryV618().catch(()=>{});\n      else if(intelligencePaneV702===\"incidents\")loadOrbitIncidentsV702(false).catch(err=>renderReferenceErrorV702(\"orbitIncidentListV702\",err));\n      else if(intelligencePaneV702===\"protected-systems\")loadProtectedSystemsV702(false).catch(err=>renderReferenceErrorV702(\"orbitProtectedSystemListV702\",err));\n      else if(intelligencePaneV702===\"knowledge\"){loadOrbitIntelligence().catch(renderOrbitIntelligenceError);if(orbitKnowledgeViewV702===\"engineering-manual\")loadEngineeringManualV702(false).catch(err=>renderReferenceErrorV702(\"orbitEngineeringManualArticleV702\",err));}\n      else {loadOrbitAiConfigurationV544();loadOrbitIntelligenceCommandCentreV545().catch(renderIntelligenceCommandErrorV545);loadOrbitIntelligence().catch(renderOrbitIntelligenceError);}\n    }\n    if (state.currentModule === \"development\") {\n      const developmentTab=preferredTab || savedOrbitSubtab(\"development\") || \"home\";\n      setDevelopmentTab(developmentTab);\n      loadOrbitDevelopmentHub().catch(err => setNotice(\"Development Hub unavailable: \"+(err.message||err), true));\n      resumePendingDeploymentPollV366();\n    }\n    if (state.currentModule === \"website-images\") loadWebsiteImagesV728().catch(err => setNotice(\"Website Images unavailable: \"+(err.message||err), true));\n    if (state.currentModule === \"member-store\") { state.currentMemberStorePaneV601=preferredTab||state.currentMemberStorePaneV601||\"overview\";if(previousModuleV618===\"member-store\"&&$(\"memberStoreAdminMountV601\")?.querySelector(\".orbit-member-store-admin-v601\"))memberStorePaneV601(state.currentMemberStorePaneV601);else loadMemberStoreAdminV601(true).catch(err=>setNotice(\"Members tools unavailable: \"+(err.message||err),true)); }\n    if (state.currentModule === \"storage\") loadStorageForensicsV353().catch(err=>setNotice(\"Storage audit unavailable: \"+(err.message||err),true));\n        if (state.currentModule === \"settings\") {\n      loadAdminUsersV329().catch(err=>setNotice(\"Admin users unavailable: \"+(err.message||err),true));\n      let saved=\"\";\n      try{saved=localStorage.getItem(\"orbitAdminSettingsPane\")||\"\"}catch(_e){}\n      setSettingsPane(saved,{scroll:false});\n    }\n    if (state.currentModule === \"box-inventory\") loadBoxAccountingV663(true).catch(err=>setNotice(\"Box Accounting unavailable: \"+(err.message||err),true));\n    if (state.currentModule === \"shipping\") loadFulfilment(null,true).catch(err=>{if(state.currentModule===\"shipping\")setNotice(\"Fulfilment unavailable: \"+(err.message||err),true);});\n    if (state.currentModule === \"directory\") loadDirectoryV560(true,{keepPage:true}).catch(()=>{});\n    if (state.currentModule === \"vendors\") { const vendorPane=preferredTab || savedOrbitSubtab(\"vendors\") || \"customers\"; setVendorPaneV385(vendorPane); loadVendorWorkspaceV398(null,false,false,vendorPane,1).catch(err=>{if(state.currentModule===\"vendors\")setNotice(\"Vendor data unavailable: \"+(err.message||err),true);}); }\n    if (state.currentModule === \"card-shopify\") { setCardShowShopifyPaneV678(preferredTab||\"overview\"); loadCardShowShopifyPaneV678(preferredTab||\"overview\",false).catch(err=>setNotice(\"Shopify unavailable: \"+(err.message||err),true)); }\n    if (state.currentModule === \"vendor-history\") { state.currentVendorPane=\"shopify\"; loadVendorWorkspaceV398(null,false,false,\"shopify\",1).catch(err=>{if(state.currentModule===\"vendor-history\")setNotice(\"Shopify history unavailable: \"+(err.message||err),true);}); }\n    if (state.currentModule === \"finance\") loadFinanceWorkspaceV464(null,false).catch(err=>{if(state.currentModule===\"finance\")setNotice(\"Finance unavailable: \"+(err.message||err),true);});\n    if (state.currentModule === \"performance\") { loadPerformanceOverview(null); loadAnalyticsOverviewV468(null).catch(err=>{if(state.currentModule===\"performance\")setNotice(\"Website analytics unavailable: \"+(err.message||err),true);}); loadPerformanceRankingsV496(null).catch(err=>{if(state.currentModule===\"performance\")setNotice(\"Search rankings unavailable: \"+(err.message||err),true);}); }\n    if (state.currentModule === \"ad-performance\") loadAdPerformanceV547(false).catch(err=>{if(state.currentModule===\"ad-performance\")setNotice(\"Ad Performance unavailable: \"+(err.message||err),true);});\n    if (state.currentModule === \"reports\") openBusinessReport(\"attendance\",null);\n    if (state.currentModule === \"analytics-overview\") loadAnalyticsOverviewV468(null).catch(err=>{if(state.currentModule===\"analytics-overview\")setNotice(\"Analytics unavailable: \"+(err.message||err),true);});\n    if (state.currentModule === \"analytics-sales\") loadAnalyticsCommercialV471(null).catch(err=>{if(state.currentModule===\"analytics-sales\")setNotice(\"Sales analytics unavailable: \"+(err.message||err),true);});\n    if (state.currentModule === \"advertising\") loadMetaAdsSettingsV449().then(()=>{const view=sessionStorage.getItem(\"orbitAdvertisingView\")||\"overview\";openAdvertisingViewV451(view);}).catch(err=>{if(state.currentModule===\"advertising\")setNotice(\"Meta Advertising unavailable: \"+(err.message||err),true);});\n    if (state.currentModule === \"seo\") Promise.allSettled([loadSeoKeyPagesV336(),loadSeoPagesV332()]).then(results=>{const rejected=results.find(x=>x.status===\"rejected\");if(rejected)setNotice(\"SEO unavailable: \"+(rejected.reason?.message||rejected.reason),true);});\n    if (state.currentModule === \"activity\") loadBusinessActivity(null).catch(err=>setNotice(\"Activity unavailable: \"+(err.message||err),true));\n    if (state.currentModule === \"events\") {\n      const eventsPane=preferredTab || savedOrbitSubtab(\"events\") || \"eventbrite\";\n      if(eventsPane === \"calendar\") loadEventPlanningV485().catch(err=>setNotice(\"Event Calendar unavailable: \"+(err.message||err),true));\n      else if(eventsPane === \"attendance\") loadAttendance().catch(err=>setNotice(\"Attendance unavailable: \"+(err.message||err),true));\n      else loadEventbrite().catch(err=>setNotice(\"Events unavailable: \"+(err.message||err),true));\n    }\n    if (state.currentModule === \"operations\") refreshOperationsWorkspaceV296(null).catch(err=>setNotice(\"Tasks unavailable: \"+(err.message||err),true));\n    if (state.currentModule === \"content\") loadMonthlyContent(null);\n    if (state.currentModule === \"golden-schedule\") loadPrizeSchedulesV536().catch(err=>setNotice(\"Prize schedules unavailable: \"+(err.message||err),true));\n    if (state.currentModule === \"members\" && !state.memberInitialLoadStarted) {\n      state.memberInitialLoadStarted = true;\n      Promise.resolve().then(() => loadMemberSummary()).catch(err => {\n        const target = $(\"memberSummaryCards\");\n        if (target) target.innerHTML = \"<div class='orbit-notice error'>Member summary unavailable: \" + esc(err.message || err) + \"</div>\";\n      });\n      renderMemberSearchEmpty();\n    }\n    restoreOrbitSubtab(state.currentModule);\n    if (shell && !window.orbitRestoringAdminState) shell.scrollTo({ top: 0, behavior: \"auto\" });\n  }\n\n  // V717.0.4: owner-confirmed, resumable old NON-canonical telemetry sweep.\n  // No operation begins on page load. Poll only while an approved job is live.\n  let orbitTelemetryPreviewV71619=null,orbitTelemetryJobV71619=null,orbitTelemetryPollV71619=null;\n  function telemetryStatusV71619(text){const node=$(\"orbitTelemetryResultV71619\");if(node)node.textContent=text;}\n  async function telemetryPollV71619(){\n    if(!orbitTelemetryJobV71619)return;\n    const data=await api('/api/admin/system/telemetry-reclamation/'+encodeURIComponent(orbitTelemetryJobV71619),{cacheMs:0,timeoutMs:12000}),j=data.job;\n    if(!j){telemetryStatusV71619('Job not found. No further operation started.');return;}\n    telemetryStatusV71619('Cleanup '+j.status+'. Verified record deletions: Pok\u00E9 '+Number(j.deleted?.poke_alert_observations||0).toLocaleString('en-GB')+', Meta '+Number(j.deleted?.orbit_meta_ads_live_ad_overlay||0).toLocaleString('en-GB')+'. '+(j.lastErrorCode||'Historical business and stock-event records remain protected.')+' This is not a measure of physical bytes freed.');\n    const ongoing=['queued','running','paused'].includes(j.status);const stop=$(\"orbitTelemetryStopV71619\");if(stop)stop.disabled=!ongoing;\n    if(orbitTelemetryPollV71619)clearTimeout(orbitTelemetryPollV71619);\n    if(['queued','running'].includes(j.status))orbitTelemetryPollV71619=setTimeout(()=>telemetryPollV71619().catch(e=>telemetryStatusV71619('Status unavailable: '+e.message)),60000);\n  }\n  async function telemetryPreviewV71619(button){\n    setLoading(button,true);try{\n      const data=await api('/api/admin/system/obsolete-telemetry-cleanup/preview',{cacheMs:0,timeoutMs:30000}),p=data.preview;\n      if(!p?.id||!p?.digest||p.mode!=='dry-run')throw Error('Verified preview missing. No deletion approved.');\n      orbitTelemetryPreviewV71619=p;\n      const a=p.counts?.poke_alert_observations?.eligible||0,b=p.counts?.orbit_meta_ads_live_ad_overlay?.eligible||0;\n      const scanned=Number(p.counts?.poke_alert_observations?.scanned||0)+Number(p.counts?.orbit_meta_ads_live_ad_overlay?.scanned||0);\n      const progress=Number(p.counts?.poke_alert_observations?.scannedInRecentPreviews||0)+Number(p.counts?.orbit_meta_ads_live_ad_overlay?.scannedInRecentPreviews||0);\n      const more=Boolean(p.counts?.poke_alert_observations?.hasMore||p.counts?.orbit_meta_ads_live_ad_overlay?.hasMore);\n      telemetryStatusV71619('Dry run only. Safe candidates in this bounded sample: Pok\u00E9 '+a+', Meta '+b+'. Scanned '+scanned.toLocaleString('en-GB')+' records this preview'+(progress?' ('+progress.toLocaleString('en-GB')+' across recent previews)':'')+'. '+(!(a+b)&&more?'No candidates in this sample. Press Preview again to continue the read-only indexed scan; this is NOT a complete database clearance. ':'')+'The approved job may process up to 40,000 independently rechecked records. Protected business and stock evidence remains excluded.');\n      const start=$(\"orbitTelemetryStartV71619\");if(start)start.disabled=!(a+b);\n    }finally{setLoading(button,false);}\n  }\n  async function telemetryStartV71619(button){\n    const p=orbitTelemetryPreviewV71619;if(!p?.id||!p?.digest)return;\n    const phrase='DELETE VERIFIED OBSOLETE TELEMETRY';\n    if(window.prompt('Start a resumable cleanup of verified old, noncanonical telemetry only. This is destructive and cannot be undone. Original stock events, current Meta data, customers and protected evidence are excluded. Type exactly:\\n'+phrase)!==phrase)return;\n    setLoading(button,true);try{\n      const data=await api('/api/admin/system/telemetry-reclamation/start',{method:'POST',body:JSON.stringify({previewId:p.id,digest:p.digest,confirm:phrase,maxRows:40000}),timeoutMs:20000,cacheMs:0});\n      orbitTelemetryJobV71619=data.job?.id;orbitTelemetryPreviewV71619=null;button.disabled=true;\n      await telemetryPollV71619();\n    }finally{setLoading(button,false);}\n  }\n  async function telemetryStopV71619(button){\n    if(!orbitTelemetryJobV71619)return;setLoading(button,true);\n    try{await api('/api/admin/system/telemetry-reclamation/'+encodeURIComponent(orbitTelemetryJobV71619)+'/stop',{method:'POST',body:'{}',cacheMs:0});await telemetryPollV71619();}\n    finally{setLoading(button,false);}\n  }\n  let orbitEphemeralBuildPreviewV71604=null;\n  async function loadEphemeralBuildPreviewV71604(){\n    const node=$(\"orbitEphemeralBuildPreviewV71604\"),button=$(\"orbitCleanEphemeralBuildsV71604\");\n    try{\n      const response=await api('/api/admin/system/ephemeral-zip-build-cleanup/preview',{cacheMs:0,timeoutMs:10000});\n      const p=response.preview||{};orbitEphemeralBuildPreviewV71604=p;\n      if(node)node.innerHTML=\"<strong>Verified disposable candidates: \"+Number(p.eligibleCount||0).toLocaleString('en-GB')+\" temporary build folder(s)</strong> \u00B7 \"+esc(formatStorageMbV353(Number(p.eligibleBytes||0)/1048576))+\". Canonical ZIPs, worker evidence, rollback and business data are excluded.\";\n      if(button)button.disabled=!Array.isArray(p.candidates)||!p.candidates.length;\n    }catch(error){orbitEphemeralBuildPreviewV71604=null;if(button)button.disabled=true;if(node)node.textContent='Temporary-build preview unavailable: '+String(error.message||error);}\n  }\n  async function applyEphemeralBuildCleanupV71604(button){\n    await loadEphemeralBuildPreviewV71604();const p=orbitEphemeralBuildPreviewV71604;\n    if(!p?.candidates?.length)return;\n    const phrase='DELETE VERIFIED ABANDONED TEMP BUILDS';\n    const typed=window.prompt('Only the '+p.candidates.length+' confirmed old temporary ZIP build folder(s) will be deleted. No history, evidence, source, rollback or verified ZIP will be removed.\\n\\nType exactly:\\n'+phrase);\n    if(typed!==phrase)return;\n    const result=$(\"orbitEphemeralBuildResultV71604\");if(result){result.hidden=false;result.textContent='Rechecking fingerprints and deleting only still-eligible temporary build files\u2026';}\n    setLoading(button,true);\n    try{const data=await api('/api/admin/system/ephemeral-zip-build-cleanup/apply',{method:'POST',body:JSON.stringify({confirm:phrase,expected:p.candidates.map(c=>({name:c.name,fingerprint:c.fingerprint}))}),timeoutMs:60000,cacheMs:0});\n      if(result)result.textContent='Removed '+Number(data.removed?.length||0)+' temporary folders \u00B7 '+formatStorageMbV353(Number(data.freedBytes||0)/1048576)+' of disposable workspaces. '+Number(data.skipped?.length||0)+' skipped safely.';\n      await loadEphemeralBuildPreviewV71604();\n    }finally{setLoading(button,false);}\n  }\n  function formatStorageMbV353(value){ const n=Number(value||0); return (Math.round(n*100)/100).toLocaleString(\"en-GB\")+\" MB\"; }\n  // V716.0.6: no table-wide collection scans or retention previews on entry.\n  // Heavy operations are opt-in, isolated, and never gate the temp-build preview.\n  let orbitStorageRetentionPreviewVerifiedV71605=false;\n  let orbitStorageCollectionsV71605=[];\n  let orbitStorageNextOffsetV71605=0;\n  const storageMetricV71605=value=>value==null?'Not measured':formatStorageMbV353(value);\n  const storageCountV71605=value=>value==null?'Not measured':Number(value).toLocaleString('en-GB');\n  // Optional bounded 21-day noncanonical telemetry cleanup. Nothing scans on\n  // page load, nothing auto-deletes, and the existing recovery/deployment\n  // evidence controls are not reused or weakened.\n  let orbitObsoleteTelemetryPreviewV71613=null;\n  function ensureObsoleteTelemetryPanelV71613(){\n    const module=$(\"orbitStorageForensicsModule\");if(!module||$(\"orbitTelemetryPanelV71613\"))return;\n    const panel=document.createElement(\"div\");panel.id=\"orbitTelemetryPanelV71613\";panel.className=\"orbit-panel\";\n    panel.innerHTML='<h2>Obsolete telemetry \u2014 guarded clean-up</h2><p>Only old unchanged Pok\u00E9 observations and old inactive zero-spend Meta rows. Event evidence, manual attribution, current data, member, booking and deployment records are protected. Never automatic.</p><div id=\"orbitTelemetryStatusV71613\" class=\"orbit-notice\">Run a bounded dry-run to see eligible records. No records are deleted by preview.</div><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" id=\"orbitTelemetryPreviewButtonV71613\">Preview eligible telemetry</button><button type=\"button\" class=\"danger\" id=\"orbitTelemetryApplyButtonV71613\" disabled>Delete verified candidates</button></div>';\n    module.appendChild(panel);\n    $(\"orbitTelemetryPreviewButtonV71613\")?.addEventListener(\"click\",async e=>{\n      const button=e.currentTarget,status=$(\"orbitTelemetryStatusV71613\"),apply=$(\"orbitTelemetryApplyButtonV71613\");\n      orbitObsoleteTelemetryPreviewV71613=null;if(apply)apply.disabled=true;\n      if(status)status.textContent=\"Checking at most 200 records per collection; no deletion\u2026\";\n      setLoading(button,true);\n      try{\n        const result=await api('/api/admin/system/obsolete-telemetry-cleanup/preview',{cacheMs:0,timeoutMs:18000}),proof=result.preview||{},counts=proof.counts||{};\n        if(!proof.id||!proof.digest||!proof.expiresAt)throw Error('Preview is incomplete. No deletion permitted.');\n        orbitObsoleteTelemetryPreviewV71613=proof;\n        const poke=Number(counts.poke_alert_observations?.eligible||0),meta=Number(counts.orbit_meta_ads_live_ad_overlay?.eligible||0);\n        if(status)status.textContent=`Dry run only \u00B7 ${poke} eligible old Pok\u00E9 observations \u00B7 ${meta} eligible old inactive Meta rows \u00B7 ${Number(counts.poke_alert_observations?.protectedReferences||0)} protected event references excluded. These are document counts, not storage or cost savings. Preview expires in ten minutes.`;\n        if(apply)apply.disabled=poke+meta===0;\n      }catch(error){if(status)status.textContent='Safe preview unavailable: '+String(error.message||error)+'. Nothing deleted.';}\n      finally{setLoading(button,false);}\n    });\n    $(\"orbitTelemetryApplyButtonV71613\")?.addEventListener(\"click\",async e=>{\n      const button=e.currentTarget,status=$(\"orbitTelemetryStatusV71613\"),proof=orbitObsoleteTelemetryPreviewV71613;\n      if(!proof?.id||!proof?.digest)return;\n      const phrase='DELETE VERIFIED OBSOLETE TELEMETRY',typed=window.prompt('This removes ONLY the exact dry-run candidates, rechecking event references, unchanged state and published generations. Historical evidence cannot be recovered from this operation.\\n\\nType exactly:\\n'+phrase);\n      if(typed!==phrase)return;\n      setLoading(button,true);button.disabled=true;\n      try{\n        const result=await api('/api/admin/system/obsolete-telemetry-cleanup/apply',{method:'POST',body:JSON.stringify({previewId:proof.id,digest:proof.digest,confirm:phrase}),cacheMs:0,timeoutMs:30000});\n        if(status)status.textContent=`Audited cleanup: ${Number(result.deleted?.poke_alert_observations||0)} obsolete observations and ${Number(result.deleted?.orbit_meta_ads_live_ad_overlay||0)} old zero-spend overlay rows removed; ${Number(result.held?.length||0)} group(s) held safely. Check MongoDB collection stats separately for actual allocated-byte savings.`;\n        orbitObsoleteTelemetryPreviewV71613=null;\n      }catch(error){if(status)status.textContent='Cleanup held safely: '+String(error.message||error)+'. Generate a new preview if required.';}\n      finally{setLoading(button,false);}\n    });\n  }\n  async function loadStorageForensicsV353(){\n    ensureObsoleteTelemetryPanelV71613();\n    const summary=$(\"orbitStorageForensicsSummary\"),totals=$(\"orbitStorageForensicsTotals\");\n    const retention=$(\"orbitStorageRetentionSummary\"),retentionCards=$(\"orbitStorageRetentionCards\");\n    const action=$(\"applyStorageRetentionV354\");\n    // Start separate preview immediately, even when MongoDB is temporarily slow.\n    loadEphemeralBuildPreviewV71604().catch(()=>{});\n    if(summary)summary.textContent='Loading fast database summary (no historical collection scans)\u2026';\n    if(retention&&!orbitStorageRetentionPreviewVerifiedV71605)retention.textContent='Retention preview has not been calculated. Press Calculate retention preview to run an explicit dry run.';\n    if(retentionCards&&!orbitStorageRetentionPreviewVerifiedV71605)retentionCards.innerHTML='';\n    if(action&&!orbitStorageRetentionPreviewVerifiedV71605)action.disabled=true;\n    try{\n      const data=await api('/api/admin/system/storage-forensics',{cacheMs:0,timeoutMs:12000});\n      const audit=data.audit||{},db=audit.database||{};\n      if(summary)summary.textContent=db.statsAvailable?'Fast MongoDB summary loaded. Run the optional bounded collection scan or retention preview only when needed.':'MongoDB summary unavailable: '+String(db.error||'Database stats could not be measured')+'. No deletion is permitted without a verified preview.';\n      if(totals)totals.innerHTML=[\n        ['Database allocated',storageMetricV71605(db.totalMB)],\n        ['Document data',storageMetricV71605(db.dataMB)],\n        ['Indexes',storageMetricV71605(db.indexMB)],\n        ['Collections',storageCountV71605(db.collections)]\n      ].map(x=>\"<article class='orbit-summary-card'><small>\"+esc(x[0])+\"</small><strong>\"+esc(x[1])+\"</strong></article>\").join('');\n    }catch(error){\n      if(summary)summary.textContent='Fast storage summary unavailable: '+String(error.message||error)+'. ZIP temp preview works separately; no cleanup has run.';\n      if(totals)totals.innerHTML='';\n    }\n  }\n  async function loadStorageRetentionPreviewV71605(button){\n    const result=$(\"orbitStorageRetentionSummary\"),cards=$(\"orbitStorageRetentionCards\"),apply=$(\"applyStorageRetentionV354\");\n    orbitStorageRetentionPreviewVerifiedV71605=false;\n    if(apply)apply.disabled=true;\n    if(result)result.textContent='Calculating retention dry-run (may involve historical records)\u2026';\n    setLoading(button,true);\n    try{\n      const data=await api('/api/admin/system/storage-retention-preview',{cacheMs:0,timeoutMs:30000});\n      const preview=data.preview||{},c=preview.candidates||{},policy=preview.policy||{};\n      if(preview.mode!=='dry-run'||!preview.generatedAt||!preview.confirmPhrase)throw Error('Incomplete retention preview response.');\n      if(result)result.innerHTML='<strong>Dry run only; nothing deleted.</strong> Estimated eligible payload: '+esc(storageMetricV71605(preview.reclaimable?.estimatedMB))+'. Historical note and deployment metadata must remain preserved.';\n      if(cards)cards.innerHTML=[\n        ['Older completed notes',c.completedNotes?.count],['Old evidence payload blobs',c.evidence?.count],\n        ['Older deployment records',c.deployments?.count],['Old release payloads',c.deploymentFiles?.count],\n        ['Old theme snapshots',c.themeSnapshots?.count]\n      ].map(x=>\"<article class='orbit-summary-card'><small>\"+esc(x[0])+\"</small><strong>\"+esc(storageCountV71605(x[1]))+\"</strong></article>\").join('');\n      orbitStorageRetentionPreviewVerifiedV71605=true;if(apply)apply.disabled=false;\n      const lastCleanupBox=$(\"orbitStorageLastCleanupV529\"),lc=preview.lastCleanup;\n      if(lastCleanupBox){lastCleanupBox.hidden=!lc;if(lc){lastCleanupBox.className='orbit-info-banner success';lastCleanupBox.textContent='Last audited manual cleanup: '+String(lc.completedAt||'unknown date')+'.';}}\n    }catch(error){\n      if(result)result.textContent='Preview unavailable: '+String(error.message||error)+'. No cleanup authorised. Try later rather than waiting on an endless scan.';\n      if(cards)cards.innerHTML='';\n      throw error;\n    }finally{setLoading(button,false);}\n  }\n  async function loadStorageCollectionPageV71605(button){\n    const table=$(\"orbitStorageForensicsTable\"),status=$(\"orbitStorageCollectionsStatusV71605\");\n    if(orbitStorageNextOffsetV71605==null)return;\n    setLoading(button,true);\n    if(status)status.textContent='Scanning up to six collections (bounded request)\u2026';\n    try{\n      const data=await api('/api/admin/system/storage-forensics/collections?offset='+orbitStorageNextOffsetV71605,{cacheMs:0,timeoutMs:15000});\n      const page=data.page||{};\n      if(!Array.isArray(page.rows)||page.offset!==orbitStorageNextOffsetV71605)throw Error('Collection scan page was incomplete.');\n      orbitStorageCollectionsV71605.push(...page.rows);\n      orbitStorageNextOffsetV71605=page.nextOffset==null?null:page.nextOffset;\n      if(table){const rows=orbitStorageCollectionsV71605.map(row=>'<tr><td><strong>'+esc(row.name)+'</strong>'+(row.prunableByV354?'<br><small>Engineering retention allowlist</small>':row.engineering?'<br><small>Engineering \u00B7 protected</small>':'<br><small>Business/system \u00B7 protected</small>')+'</td><td>'+esc(storageCountV71605(row.count))+'</td><td>'+esc(storageMetricV71605(row.dataMB))+'</td><td>'+esc(storageMetricV71605(row.indexMB))+'</td><td><strong>'+esc(storageMetricV71605(row.totalMB))+'</strong></td><td>'+(row.statsAvailable?'Measured':'Not available')+'</td></tr>').join('');\n        table.innerHTML='<table><thead><tr><th>Collection</th><th>Documents</th><th>Data</th><th>Indexes</th><th>Total</th><th>Audit</th></tr></thead><tbody>'+rows+'</tbody></table>';}\n      if(status)status.textContent=orbitStorageCollectionsV71605.length+' of '+Number(page.total||0)+' collections checked. Alphabetical batches, not a database-wide size ranking.';\n      if(button)button.disabled=orbitStorageNextOffsetV71605==null;\n    }catch(error){if(status)status.textContent='Bounded scan unavailable: '+String(error.message||error)+'. Already measured rows remain displayed.';throw error;}\n    finally{setLoading(button,false);if(button&&orbitStorageNextOffsetV71605==null)button.disabled=true;}\n  }\n  async function applyStorageRetentionV354(button){\n    if(!orbitStorageRetentionPreviewVerifiedV71605){setNotice('Run a successful retention dry-run before cleanup.',true);return;}\n    const phrase=\"PRUNE OLD ENGINEERING HISTORY\";\n    const typed=window.prompt(\"Orbit will remove only old screenshot/evidence blobs and old release payload/snapshot bytes. Development Notes, deployment history and business data stay.\\n\\nType exactly:\\n\"+phrase);\n    if(typed===null)return;\n    if(typed!==phrase){window.alert(\"Cleanup cancelled. Confirmation phrase did not match.\");return;}\n    const result=$(\"orbitStorageRetentionResult\");if(result){result.hidden=false;result.textContent=\"Running controlled cleanup\u2026\";}\n    setLoading(button,true);\n    try{\n      const data=await api(\"/api/admin/system/storage-retention-apply\",{method:\"POST\",body:JSON.stringify({confirm:phrase}),cacheMs:0,timeoutMs:60000});\n      const d=data.deleted||{};\n      if(result){result.hidden=false;result.classList.remove(\"error\");result.textContent=\"Cleanup complete \u00B7 \"+Number(d.evidence||0)+\" old evidence blobs \u00B7 \"+Number(d.deploymentFiles||0)+\" release payload files \u00B7 \"+Number(d.themeSnapshots||0)+\" old theme snapshots removed. Development Notes and deployment history were retained. Audit \"+String(data.auditId||\"\")+\" recorded.\";}\n      await loadStorageForensicsV353();\n    }catch(error){if(result){result.hidden=false;result.classList.add(\"error\");result.textContent=\"Cleanup failed safely: \"+String(error.message||error);}throw error;}\n    finally{setLoading(button,false);}\n  }\n\n  function metaAdsMoneyV449(value,currency){\n    const n=Number(value); if(!Number.isFinite(n))return \"\u2014\";\n    try{return new Intl.NumberFormat(\"en-GB\",{style:\"currency\",currency:currency||\"GBP\"}).format(n);}catch(_){return \"\u00A3\"+n.toFixed(2);}\n  }\n  function metaAdsNumberV449(value,decimals){const n=Number(value||0);return Number.isFinite(n)?n.toLocaleString(\"en-GB\",{minimumFractionDigits:decimals||0,maximumFractionDigits:decimals||0}):\"0\";}\n  function metaAdsStatusPillV449(status){const s=String(status||\"UNKNOWN\");const good=s===\"ACTIVE\";return \"<span class='orbit-status-pill \"+(good?\"success\":\"waiting\")+\"'>\"+esc(s.replaceAll(\"_\",\" \"))+\"</span>\";}\n  async function loadMetaAdsSettingsV449(){\n    const data=await api('/api/admin/meta-ads/settings',{cacheMs:0}); const s=data.settings||{};\n    if($(\"metaAdsAccountIdV449\"))$(\"metaAdsAccountIdV449\").value=s.adAccountId||\"\";\n    if($(\"metaAdsEnabledV449\"))$(\"metaAdsEnabledV449\").checked=s.enabled===true;\n    if($(\"metaAdsTokenV449\"))$(\"metaAdsTokenV449\").value=\"\";\n    if($(\"metaAdsTokenHealthV449\"))$(\"metaAdsTokenHealthV449\").textContent=s.accessTokenConfigured?\"Dedicated token configured securely \u00B7 \"+esc(s.accessTokenSource||\"server-side\")+\" \u00B7 token value is never returned to Admin OS\":\"No dedicated Marketing API token saved.\";\n    const target=$(\"metaAdsConnectionStatusV449\");if(target)target.innerHTML=s.accessTokenConfigured?\"<strong>Configured</strong><span>Open Settings to run an explicit connection health check.</span>\":\"<strong>Not configured</strong><span>Add the Ad Account ID and dedicated ads_read token.</span>\";\n  }\n  async function loadMetaAdsHealthV449(){\n    const target=$(\"metaAdsConnectionStatusV449\"),diag=$(\"metaAdsDiagnosticsV449\");\n    if(target)target.textContent=\"Checking Meta connection\u2026\";\n    const data=await api('/api/admin/meta-ads/health',{cacheMs:0,timeoutMs:25000});\n    const s=data.settings||{}; if(target){target.innerHTML=data.connected?\"<strong>Connected \u00B7 \"+esc(data.account?.name||data.account?.id||\"Meta Ad Account\")+\"</strong><span>Graph \"+esc(s.graphVersion||\"\")+\" \u00B7 \"+esc(data.account?.currency||\"\")+\" \u00B7 \"+esc(data.account?.timezone_name||\"\")+\"</span>\":\"<strong>\"+(data.status===\"not_configured\"?\"Not configured\":\"Connection error\")+\"</strong><span>\"+esc(data.error?.message||\"Add the Ad Account ID and dedicated ads_read token, then save.\")+\"</span>\";}\n    if(diag)diag.textContent=data.connected?(\"Connected safely to \"+String(data.account?.id||\"\")+\" \u00B7 account status \"+String(data.account?.account_status||\"unknown\")+\" \u00B7 write operations disabled.\"):(data.error?.message||\"No Marketing API call made until enabled and credentials are present.\");\n    return data;\n  }\n  async function saveMetaAdsSettingsV449(clearToken){\n    const body={adAccountId:$(\"metaAdsAccountIdV449\")?.value||\"\",enabled:Boolean($(\"metaAdsEnabledV449\")?.checked)};\n    if(clearToken===true)body.clearAccessToken=true; else if($(\"metaAdsTokenV449\")?.value)body.accessToken=$(\"metaAdsTokenV449\").value;\n    await api('/api/admin/meta-ads/settings',{method:'PUT',body:JSON.stringify(body),cacheMs:0});\n    if($(\"metaAdsTokenV449\"))$(\"metaAdsTokenV449\").value=\"\";\n    await loadMetaAdsSettingsV449();\n    setNotice(clearToken?\"Meta Ads read-only token cleared.\":\"Meta Ads read-only settings saved and connection checked.\");\n  }\n  let metaAdsHistoryV450=null;\n  function metaAdsEventDateLabelV452(event){\n    if(!event)return \"\";const start=String(event.date||\"\"),end=String(event.endDate||event.date||\"\");if(!start)return \"\";\n    try{const a=new Date(start+\"T12:00:00Z\"),b=new Date(end+\"T12:00:00Z\");if(start===end)return new Intl.DateTimeFormat(\"en-GB\",{day:\"numeric\",month:\"short\",year:\"numeric\",timeZone:\"UTC\"}).format(a);if(a.getUTCMonth()===b.getUTCMonth()&&a.getUTCFullYear()===b.getUTCFullYear())return a.getUTCDate()+\"\u2013\"+b.getUTCDate()+\" \"+new Intl.DateTimeFormat(\"en-GB\",{month:\"short\",year:\"numeric\",timeZone:\"UTC\"}).format(b);return new Intl.DateTimeFormat(\"en-GB\",{day:\"numeric\",month:\"short\",year:\"numeric\",timeZone:\"UTC\"}).format(a)+\" \u2013 \"+new Intl.DateTimeFormat(\"en-GB\",{day:\"numeric\",month:\"short\",year:\"numeric\",timeZone:\"UTC\"}).format(b);}catch(_){return start===end?start:(start+\" \u2013 \"+end);}\n  }\n  function metaAdsEventOptionV450(event){\n    if(!event)return \"\";\n    const date=metaAdsEventDateLabelV452(event),venue=String(event.venue||\"\").trim(),name=String(event.name||\"\").trim();\n    const cleaned=name.replace(/\\s*[-\u2013\u2014]\\s*Reserve a Table\\s*[-\u2013\u2014].*$/i,\"\").replace(/\\s*[-\u2013\u2014]\\s*Tickets?.*$/i,\"\").trim();\n    const label=venue||cleaned||name||event.eventId;\n    return esc(date+\" \u00B7 \"+label);\n  }\n  function metaAdsReviewGroupsV452(rows){\n    const map=new Map();for(const row of rows||[]){if(!['review','unmatched'].includes(row.attribution?.status))continue;const key=String(row.ad_id||[row.campaign_id,row.adset_id,row.ad_name].join('|'));let g=map.get(key);if(!g){g={key,adId:row.ad_id||'',campaignName:row.campaign_name||'',adsetName:row.adset_name||'',adName:row.ad_name||row.campaign_name||'Meta advert',rows:[],spend:0,firstDate:'',lastDate:'',suggestions:new Map(),evidence:new Set()};map.set(key,g);}g.rows.push(row);g.spend+=Number(row.metrics?.spend||0);const d=String(row.date_start||'');if(!g.firstDate||d<g.firstDate)g.firstDate=d;if(!g.lastDate||d>g.lastDate)g.lastDate=d;const a=row.attribution||{};if(a.suggestedEvent?.eventId){const old=g.suggestions.get(a.suggestedEvent.eventId)||{event:a.suggestedEvent,weight:0,confidence:0};old.weight+=Math.max(.01,Number(row.metrics?.spend||0));old.confidence=Math.max(old.confidence,Number(a.confidence||0));g.suggestions.set(a.suggestedEvent.eventId,old);}for(const e of a.evidence||[])g.evidence.add(e);}\n    return [...map.values()].map(g=>{const ranked=[...g.suggestions.values()].sort((a,b)=>b.weight-a.weight||b.confidence-a.confidence);g.suggested=ranked[0]||null;g.confidence=g.suggested?.confidence||0;return g;}).sort((a,b)=>b.spend-a.spend||a.firstDate.localeCompare(b.firstDate));\n  }\n  function renderMetaAdsEventDetailV452(eventId){\n    const target=$(\"metaAdsEventCostDetailV452\"),data=metaAdsHistoryV450;if(!target||!data)return;const event=(data.eventCatalog||[]).find(e=>e.eventId===eventId)||(data.events||[]).map(x=>x.event).find(e=>e?.eventId===eventId);const rows=(data.rows||[]).filter(r=>['auto_matched','manual'].includes(r.attribution?.status)&&r.attribution?.suggestedEvent?.eventId===eventId);const currency=data.account?.currency||'GBP',spend=rows.reduce((n,r)=>n+Number(r.metrics?.spend||0),0);target.hidden=false;target.innerHTML=\"<div class='orbit-meta-event-detail-head-v452'><div><p class='orbit-kicker'>Matched advertising detail</p><h3>\"+esc(event?.name||'Orbit event')+\"</h3><p>\"+esc(metaAdsEventDateLabelV452(event))+\" \u00B7 \"+esc(event?.venue||'')+\"</p></div><div class='orbit-meta-detail-total-v452'><small>Attributed Meta spend</small><strong>\"+esc(metaAdsMoneyV449(spend,currency))+\"</strong><span>\"+rows.length+\" daily ad row\"+(rows.length===1?'':'s')+\"</span></div></div><div class='orbit-table-wrap'><table><thead><tr><th>Advert</th><th>Campaign / ad set</th><th>Date</th><th>Spend</th><th>Match</th><th></th></tr></thead><tbody>\"+rows.map((r,i)=>\"<tr><td><strong>\"+esc(r.ad_name||'Meta advert')+\"</strong><small>\"+esc(String(r.creative_text||'').slice(0,180))+\"</small></td><td>\"+esc(r.campaign_name||'')+\"<small>\"+esc(r.adset_name||'')+\"</small></td><td>\"+esc(r.date_start||'')+\"</td><td>\"+esc(metaAdsMoneyV449(r.metrics?.spend,currency))+\"</td><td><strong>\"+esc(r.attribution?.status==='manual'?'Manual':'Auto')+\" \u00B7 \"+esc(String(r.attribution?.confidence||0))+\"%</strong><small>\"+esc((r.attribution?.evidence||[]).slice(0,2).join(' \u00B7 '))+\"</small></td><td><button type='button' class='secondary metaAdsReassignV452' data-row='\"+i+\"'>Reassign</button></td></tr>\").join(\"\")+\"</tbody></table></div>\";\n    target.scrollIntoView({behavior:'smooth',block:'nearest'});\n    target.querySelectorAll('.metaAdsReassignV452').forEach(btn=>btn.addEventListener('click',async()=>{const row=rows[Number(btn.dataset.row)],events=data.eventCatalog||[],choice=window.prompt('Enter the exact Orbit event name/date to reassign this advert, or leave blank to send it back to reconciliation.\\n\\n'+events.slice(0,40).map((e,n)=>(n+1)+'. '+metaAdsEventDateLabelV452(e)+' \u00B7 '+(e.name||e.venue)).join('\\n'));if(choice===null)return;const q=String(choice||'').trim().toLowerCase();let selected=null;if(q){selected=events.find(e=>(metaAdsEventDateLabelV452(e)+' '+(e.name||'')+' '+(e.venue||'')).toLowerCase().includes(q));if(!selected){setNotice('No matching Orbit event found for that text.',true);return;}}setLoading(btn,true);try{await api('/api/admin/meta-ads/attribution',{method:'PUT',body:JSON.stringify({adId:row.ad_id,dateStart:row.date_start,eventId:selected?.eventId||'',status:selected?'manual':'unmatched',scope:'ad'}),cacheMs:0});await loadPersistedMetaAdsHistoryV451();if(selected)renderMetaAdsEventDetailV452(selected.eventId);setNotice(selected?'Advert family reassigned to '+selected.name+'.':'Advert returned to reconciliation.');}finally{setLoading(btn,false);}}));\n  }\n  function renderMetaAdsHistoryV450(data){\n    metaAdsHistoryV450=data;\n    const summary=$(\"metaAdsHistorySummaryV450\"),ledger=$(\"metaAdsEventLedgerV450\"),queue=$(\"metaAdsReviewQueueV450\"),diag=$(\"metaAdsHistoryDiagnosticsV450\");\n    const currency=data.account?.currency||\"GBP\",t=data.summary||{};\n    if(summary)summary.innerHTML=[[\"Stored Meta spend\",metaAdsMoneyV449(t.totalSpend,currency)],[\"Attributed\",metaAdsMoneyV449(t.matchedSpend,currency)],[\"Needs review\",metaAdsMoneyV449(t.reviewSpend,currency)],[\"Unmatched\",metaAdsMoneyV449(t.unmatchedSpend,currency)],[\"Daily rows\",metaAdsNumberV449(t.rowCount)],[\"Coverage\",esc((data.period?.since||'\u2014')+' \u2192 '+(data.period?.until||'\u2014'))]].map(x=>\"<article class='orbit-meta-kpi-v452'><small>\"+esc(x[0])+\"</small><strong>\"+x[1]+\"</strong></article>\").join(\"\");\n    const eventRows=(data.events||[]).filter(x=>Number(x.auto_matched||x.auto||0)+Number(x.manual||0)>0).map(x=>\"<tr class='orbit-meta-event-row-v452' data-event-id='\"+esc(x.event?.eventId||'')+\"' tabindex='0'><td><strong>\"+esc(x.event?.name||\"Event\")+\"</strong><small>\"+esc(metaAdsEventDateLabelV452(x.event)+\" \u00B7 \"+(x.event?.venue||\"\"))+\"</small></td><td><strong>\"+esc(metaAdsMoneyV449(Number(x.auto_matched||x.auto||0)+Number(x.manual||0),currency))+\"</strong></td><td>\"+esc(metaAdsMoneyV449(x.auto_matched||x.auto||0,currency))+\"</td><td>\"+esc(metaAdsMoneyV449(x.manual||0,currency))+\"</td><td><span class='orbit-meta-view-link-v452'>View matched ads \u2192</span></td></tr>\").join(\"\");\n    if(ledger){ledger.innerHTML=eventRows?\"<table><thead><tr><th>Canonical Vendor event</th><th>Attributed</th><th>Auto</th><th>Manual</th><th></th></tr></thead><tbody>\"+eventRows+\"</tbody></table>\":\"<div class='orbit-empty'>No confirmed event matches yet.</div>\";ledger.querySelectorAll('[data-event-id]').forEach(row=>{const open=()=>renderMetaAdsEventDetailV452(row.dataset.eventId);row.addEventListener('click',open);row.addEventListener('keydown',e=>{if(e.key==='Enter'||e.key===' '){e.preventDefault();open();}});});}\n    const allEvents=(data.eventCatalog||[]).filter(Boolean),options=[...allEvents].sort((a,b)=>String(b.date).localeCompare(String(a.date))),groups=metaAdsReviewGroupsV452(data.rows||[]);\n    const reviewRows=groups.map((g,i)=>{const suggested=g.suggested?.event;return \"<tr><td><strong>\"+esc(g.adName)+\"</strong><small>\"+esc(g.campaignName)+(g.adsetName?' \u00B7 '+esc(g.adsetName):'')+\"</small><small>\"+esc(g.firstDate+(g.lastDate&&g.lastDate!==g.firstDate?' \u2192 '+g.lastDate:''))+\" \u00B7 \"+g.rows.length+\" daily row\"+(g.rows.length===1?'':'s')+\"</small></td><td><strong>\"+esc(metaAdsMoneyV449(g.spend,currency))+\"</strong></td><td><strong>\"+esc(String(g.confidence||0))+\"%</strong><small>\"+esc([...g.evidence].slice(0,4).join(\" \u00B7 \")||\"No reliable event evidence\")+\"</small></td><td><select class='metaAdsEventChoiceV450' data-row='\"+i+\"'><option value=''>Leave unmatched</option>\"+options.map(e=>\"<option value='\"+esc(e.eventId)+\"' \"+(suggested?.eventId===e.eventId?'selected':'')+\">\"+metaAdsEventOptionV450(e)+\"</option>\").join(\"\")+\"</select><button type='button' class='secondary metaAdsConfirmMatchV450' data-row='\"+i+\"'>Confirm advert</button></td></tr>\";}).join(\"\");\n    if(queue){queue.innerHTML=\"<div class='orbit-meta-recon-toolbar-v454'><label>Search unresolved adverts<input id='metaAdsReconSearchV454' type='search' value='\"+esc(data.query||\"\")+\"' placeholder='Advert, campaign, ad set, copy\u2026'></label><button type='button' class='secondary' id='metaAdsReconSearchButtonV454'>Search</button></div><div class='orbit-meta-review-summary-v452'><div><small>Exception queue</small><strong>\"+groups.length+\" advert\"+(groups.length===1?'':'s')+\" need attention</strong></div><div><small>Unresolved spend</small><strong>\"+esc(metaAdsMoneyV449(Number(t.reviewSpend||0)+Number(t.unmatchedSpend||0),currency))+\"</strong></div></div>\"+(reviewRows?\"<table><thead><tr><th>Advert family</th><th>Unresolved spend</th><th>Best evidence</th><th>Orbit event</th></tr></thead><tbody>\"+reviewRows+\"</tbody></table>\":\"<div class='orbit-empty-state'><strong>All advertising spend reconciled</strong><span>No advert families currently require an operator decision.</span></div>\");queue.querySelectorAll('.metaAdsConfirmMatchV450').forEach(btn=>btn.addEventListener('click',async()=>{const idx=Number(btn.dataset.row),group=groups[idx],sel=queue.querySelector(\".metaAdsEventChoiceV450[data-row='\"+idx+\"']\"),eventId=sel?.value||\"\";btn.disabled=true;try{await api('/api/admin/meta-ads/attribution',{method:'PUT',body:JSON.stringify({adId:group.adId,dateStart:group.firstDate,eventId,status:eventId?'manual':'unmatched',scope:'ad'}),cacheMs:0});await loadPersistedMetaAdsHistoryV451();setNotice(eventId?'Entire advert family matched to the selected Vendor event.':'Advert family left unmatched.');}catch(err){btn.disabled=false;setNotice(err.message||err,true);}}));}\n    if(diag)diag.textContent=\"Stored \"+metaAdsNumberV449(t.rowCount)+\" daily ad-spend rows \u00B7 \"+metaAdsNumberV449(t.matchedRows)+\" matched \u00B7 \"+metaAdsNumberV449(t.reviewRows)+\" review \u00B7 \"+metaAdsNumberV449(t.unmatchedRows)+\" unmatched \u00B7 canonical event source: Vendors Live/Past\";\n  }\n  function renderMetaAdsOverviewFromHistoryV45102(data){\n    const summary=$(\"metaAdsSummaryV449\"); if(!summary)return;\n    const t=data?.summary||{},currency=data?.account?.currency||\"GBP\",currentSpend=Number(t.currentSpend!=null?t.currentSpend:t.totalSpend||0),currentMatched=Number(t.currentMatchedSpend!=null?t.currentMatchedSpend:t.matchedSpend||0);\n    if(!Number(t.rowCount||0)&&!Number(t.liveRows||0)){summary.innerHTML=\"<div class='orbit-empty-state'><strong>No saved advertising history yet</strong><span>Use Import & Sync once to build the persistent advertising database. Refreshing this page will never call Meta automatically.</span></div>\";return;}\n    const unresolved=Number(t.currentReviewSpend!=null?t.currentReviewSpend:t.reviewSpend||0)+Number(t.currentUnmatchedSpend!=null?t.currentUnmatchedSpend:t.unmatchedSpend||0),matchedPct=currentSpend>0?Math.round(currentMatched/currentSpend*100):0,liveDelta=Number(t.liveDeltaSpend||0);\n    const pausedProvider=Number(data?.providerRefresh?.pausedOrOffCampaignsWithSpend||0),pausedSpend=Number(data?.providerRefresh?.pausedOrOffCampaignSpend||0);\n    summary.innerHTML=[[\"Current Meta spend\",metaAdsMoneyV449(currentSpend,currency),liveDelta>0?metaAdsMoneyV449(t.totalSpend,currency)+\" stored + \"+metaAdsMoneyV449(liveDelta,currency)+\" safe live delta\":\"Matches stored ledger\"],[\"Attributed to events\",metaAdsMoneyV449(currentMatched,currency),matchedPct+\"% reconciled\"],[\"Needs operator review\",metaAdsMoneyV449(unresolved,currency),metaAdsNumberV449(Number(t.reviewRows||0)+Number(t.unmatchedRows||0))+\" stored daily rows\"],[\"Stored ad-day records\",metaAdsNumberV449(t.rowCount),\"Ledger latest \"+(data.lastImportedDate||\"\u2014\")]].map(x=>\"<article class='orbit-meta-overview-card-v452'><small>\"+esc(x[0])+\"</small><strong>\"+esc(x[1])+\"</strong><span>\"+esc(x[2])+\"</span></article>\").join(\"\")+(pausedProvider?\"<p class='orbit-muted'><strong>Paused/off campaigns are included.</strong> The latest Meta provider window contains \"+esc(metaAdsMoneyV449(pausedSpend,currency))+\" spend from \"+pausedProvider+\" campaign\"+(pausedProvider===1?\"\":\"s\")+\" that are not currently delivering. Pausing a campaign never removes spend already incurred.</p>\":\"\");\n  }\n\n  async function loadPersistedMetaAdsHistoryV451(){\n    const data=await api('/api/admin/meta-ads/history',{cacheMs:0,timeoutMs:25000});\n    renderMetaAdsHistoryV450(data);\n    renderMetaAdsOverviewFromHistoryV45102(data);\n    const feedback=$(\"metaAdsHistoryButtonFeedbackV450\"),button=$(\"metaAdsLoadHistoryV450\"),since=$(\"metaAdsHistorySinceV450\");\n    if(data.lastImportedDate&&since){const d=new Date(data.lastImportedDate+\"T12:00:00Z\");d.setUTCDate(d.getUTCDate()-7);since.value=d.toISOString().slice(0,10);}\n    if(button)button.textContent=data.summary?.rowCount?\"Sync new / changed Meta data\":\"Import & match history\";\n    if(feedback&&data.summary?.rowCount)feedback.innerHTML=\"<strong>Advertising database ready</strong><span>\"+metaAdsNumberV449(data.summary.rowCount)+\" persisted daily ad rows \u00B7 next sync automatically overlaps the latest 7 days so late Meta attribution updates are safely refreshed without rebuilding history.</span>\";\n    return data;\n  }\n\n  let metaAdsSummaryV453=null,metaAdsReconciliationV453=null,metaAdsCostsV453=null,metaAdsSummaryRetryTimerV601=null;\n  function renderMetaAdsSummaryErrorV601(error){const feedback=$(\"metaAdsHistoryButtonFeedbackV450\"),summary=$(\"metaAdsHistorySummaryV450\");if(feedback){feedback.classList.add(\"orbit-meta-summary-local-v619\");feedback.setAttribute(\"role\",\"alert\");feedback.innerHTML=\"<strong>Saved advertising summary unavailable</strong><span>\"+esc(error?.message||String(error||\"Please retry.\"))+\"</span><button type='button' class='secondary' data-meta-summary-retry-v601>Retry summary</button>\";}if(summary&&!metaAdsSummaryV453)summary.innerHTML=\"<div class='orbit-empty-state'><strong>Advertising summary could not be read</strong><span>The rest of Orbit Admin remains available. Retry this saved report without calling Meta.</span></div>\";feedback?.querySelector('[data-meta-summary-retry-v601]')?.addEventListener('click',()=>loadMetaAdsSummaryV453({force:true}).catch(renderMetaAdsSummaryErrorV601));}\n  function scheduleMetaAdsSummaryRetryV601(){if(metaAdsSummaryRetryTimerV601)clearTimeout(metaAdsSummaryRetryTimerV601);metaAdsSummaryRetryTimerV601=setTimeout(()=>{metaAdsSummaryRetryTimerV601=null;if(state.adminAuthenticated&&state.currentModule===\"advertising\")loadMetaAdsSummaryV453({force:true}).catch(renderMetaAdsSummaryErrorV601);},30000);}\n  function renderMetaAdsSummaryV453(data){\n    metaAdsSummaryV453=data;renderMetaAdsOverviewFromHistoryV45102(data);const summary=$(\"metaAdsHistorySummaryV450\"),feedback=$(\"metaAdsHistoryButtonFeedbackV450\"),button=$(\"metaAdsLoadHistoryV450\"),since=$(\"metaAdsHistorySinceV450\"),t=data.summary||{},currency=data.account?.currency||'GBP';\n    const currentSpend=Number(t.currentSpend!=null?t.currentSpend:t.totalSpend||0),currentMatched=Number(t.currentMatchedSpend!=null?t.currentMatchedSpend:t.matchedSpend||0),currentReview=Number(t.currentReviewSpend!=null?t.currentReviewSpend:t.reviewSpend||0),currentUnmatched=Number(t.currentUnmatchedSpend!=null?t.currentUnmatchedSpend:t.unmatchedSpend||0);\n    if(summary)summary.innerHTML=[[\"Current Meta spend\",metaAdsMoneyV449(currentSpend,currency)],[\"Stored historical ledger\",metaAdsMoneyV449(t.totalSpend,currency)],[\"Safe live delta\",metaAdsMoneyV449(t.liveDeltaSpend||0,currency)],[\"Attributed\",metaAdsMoneyV449(currentMatched,currency)],[\"Needs review\",metaAdsMoneyV449(currentReview,currency)],[\"Unmatched\",metaAdsMoneyV449(currentUnmatched,currency)],[\"Daily rows\",metaAdsNumberV449(t.rowCount)],[\"Ledger coverage\",esc((data.period?.since||'\u2014')+' \u2192 '+(data.period?.until||'\u2014'))]].map(x=>\"<article class='orbit-meta-kpi-v452'><small>\"+esc(x[0])+\"</small><strong>\"+x[1]+\"</strong></article>\").join('');\n    if(data.lastImportedDate&&since){const d=new Date(data.lastImportedDate+'T12:00:00Z');d.setUTCDate(d.getUTCDate()-7);since.value=d.toISOString().slice(0,10);}\n    const paused=data.syncState?.status==='paused'||data.syncState?.status==='failed';if(button)button.textContent=paused?'Resume interrupted Meta sync':(Number(t.rowCount||0)?'Sync new / changed Meta data':'Import & match history');\n    if(paused){if($(\"metaAdsHistorySinceV450\")&&data.syncState?.requested_since)$(\"metaAdsHistorySinceV450\").value=data.syncState.requested_since;if($(\"metaAdsHistoryUntilV450\")&&data.syncState?.requested_until)$(\"metaAdsHistoryUntilV450\").value=data.syncState.requested_until;}\n    if(feedback&&!savedMetaHistoryJobV538()){feedback.classList.add(\"orbit-meta-summary-local-v619\");feedback.setAttribute(\"role\",\"status\");if(data.accountingStatus==='saved'||data.accountingStatus==='unavailable'){feedback.innerHTML=\"<strong>Showing the last complete saved advertising summary</strong><span>\"+esc(data.warning||'Meta accounting is updating. Orbit has kept the previous complete summary instead of showing a partial amount.')+\"</span><button type='button' class='secondary' data-meta-summary-retry-v601>Retry saved report</button>\";feedback.querySelector('[data-meta-summary-retry-v601]')?.addEventListener('click',()=>loadMetaAdsSummaryV453({force:true}).catch(renderMetaAdsSummaryErrorV601));scheduleMetaAdsSummaryRetryV601();}else{if(metaAdsSummaryRetryTimerV601){clearTimeout(metaAdsSummaryRetryTimerV601);metaAdsSummaryRetryTimerV601=null;}feedback.innerHTML=paused?\"<strong>Previous sync safely checkpointed</strong><span>Resume from \"+esc(data.syncState?.last_completed_until||data.syncState?.failed_chunk||'the last completed period')+\". Completed periods will not be downloaded again.</span>\":(Number(t.rowCount||0)?\"<strong>Advertising database ready</strong><span>\"+metaAdsNumberV449(t.rowCount)+\" persisted daily ad rows. Current spend also includes the existing provider-capped live delta when fresh, so a lagging daily ledger no longer makes the headline total look stale. Historical imports are explicit. The existing background refresh also updates the safe live delta.</span>\":\"<strong>Ready to import</strong><span>Press the button to build the persistent advertising database.</span>\");}}\n    const diag=$(\"metaAdsHistoryDiagnosticsV450\");if(diag)diag.textContent=(data.accountingStatus==='saved'?'Saved complete summary':'Fast persisted summary')+' \u00B7 '+Number(data.diagnostics?.elapsedMs||0)+'ms server time \u00B7 0 historical rows sent to browser.';\n  }\n  async function loadMetaAdsSummaryV453(options={}){const data=await api('/api/admin/meta-ads/history?view=summary',{cacheMs:options.force?0:10000,timeoutMs:10000});renderMetaAdsSummaryV453(data);return data;}\n  function openMetaAdvertPreviewV459(group){const text=metaAdsPreviewTextV453(group),dialog=document.createElement(\"dialog\");dialog.className=\"orbit-dialog orbit-meta-copy-dialog-v459\";dialog.innerHTML=\"<div class='orbit-dialog-card'><div class='orbit-panel-header'><div><p class='orbit-kicker'>Meta advert evidence</p><h3>Advert copy</h3></div><button type='button' class='secondary' data-close-meta-copy>Close</button></div><pre class='orbit-meta-copy-full-v459'>\"+esc(text)+\"</pre></div>\";document.body.appendChild(dialog);const close=()=>{try{dialog.close();}catch(_){}dialog.remove();};dialog.querySelector('[data-close-meta-copy]')?.addEventListener('click',close);dialog.addEventListener('cancel',e=>{e.preventDefault();close();});dialog.addEventListener('click',e=>{if(e.target===dialog)close();});dialog.showModal();}\n  function metaAdsPreviewTextV453(group){const rows=[['Advert title',group.adName],['Campaign',group.campaignName],['Ad set',group.adsetName],['Headline',group.headline],['Description',group.description],['Primary / creative copy',group.creativeText],['Related ad-set evidence',group.familyEvidenceText],['Destination URL',group.destinationUrl]].filter(x=>String(x[1]||'').trim());const body=rows.map(x=>'=== '+x[0]+' ===\\n'+x[1]).join('\\n\\n');return body||'Meta has not returned additional copy for this advert yet. Run Sync new / changed Meta data once to enrich the saved advert evidence.';}\n  function renderMetaAdsReconciliationV453(data){\n    metaAdsReconciliationV453=data;const queue=$(\"metaAdsReviewQueueV450\");if(!queue)return;const currency='GBP',events=data.eventCatalog||[],groups=data.groups||[];\n    const rows=groups.map((g,i)=>{const suggested=g.suggestedEvent||null,preview=metaAdsPreviewTextV453(g),opts=[...events].sort((a,b)=>String(b.date||'').localeCompare(String(a.date||''))).map(e=>\"<option value='\"+esc(e.eventId)+\"' \"+(suggested?.eventId===e.eventId?'selected':'')+\">\"+metaAdsEventOptionV450(e)+\"</option>\").join('');return \"<tr><td><strong title='\"+esc(preview.slice(0,900))+\"'>\"+esc(g.adName||g.campaignName||'Meta advert')+\"</strong><small>\"+esc(g.campaignName||'')+(g.adsetName?' \u00B7 '+esc(g.adsetName):'')+\"</small><small>\"+esc((g.firstDate||'')+(g.lastDate&&g.lastDate!==g.firstDate?' \u2192 '+g.lastDate:''))+\" \u00B7 \"+Number(g.dailyRows||0)+\" daily row\"+(Number(g.dailyRows||0)===1?'':'s')+\"</small><button type='button' class='secondary metaAdsPreviewV453' data-row='\"+i+\"'>Preview advert copy</button></td><td><strong>\"+esc(metaAdsMoneyV449(g.spend,currency))+\"</strong></td><td><strong>\"+esc(String(g.confidence||0))+\"%</strong><small>\"+esc((g.evidence||[]).slice(0,5).join(' \u00B7 ')||'No reliable event evidence')+\"</small>\"+(suggested?\"<small class='orbit-meta-suggested-v454'><b>Suggested:</b> \"+esc(metaAdsEventOptionV450(suggested))+\"</small>\":\"<small class='orbit-meta-suggested-v454'>No event suggestion</small>\")+\"</td><td><select class='metaAdsEventChoiceV453' data-row='\"+i+\"'><option value=''>Leave unmatched</option>\"+opts+\"</select><button type='button' class='secondary metaAdsConfirmMatchV453' data-row='\"+i+\"'>Confirm advert</button></td></tr>\";}).join('');\n    queue.innerHTML=\"<div class='orbit-meta-recon-toolbar-v455'><label>Search unresolved adverts<input id='metaAdsReconSearchV455' type='search' value='\"+esc(data.query||\"\")+\"' placeholder='Advert, campaign, ad set or copy\u2026'></label><button type='button' class='secondary' id='metaAdsReconSearchButtonV455'>Search</button></div><div class='orbit-meta-review-summary-v452'><div><small>Exception queue</small><strong>\"+Number(data.total||0)+\" advert\"+(Number(data.total||0)===1?'':'s')+\" need attention</strong></div><div><small>Unresolved spend</small><strong>\"+esc(metaAdsMoneyV449(data.summary?.unresolvedSpend||0,currency))+\"</strong></div></div>\"+(rows?\"<table><thead><tr><th>Advert family</th><th>Spend</th><th>Best evidence</th><th>Orbit event</th></tr></thead><tbody>\"+rows+\"</tbody></table>\":\"<div class='orbit-empty-state'><strong>All advertising spend reconciled</strong><span>No advert families require an operator decision.</span></div>\")+\"<div class='orbit-meta-pagination-v453'><button type='button' class='secondary' id='metaAdsReconPrevV453' \"+(data.page<=1?'disabled':'')+\">Previous</button><span>Page \"+Number(data.page||1)+\" of \"+Number(data.pages||1)+\"</span><button type='button' class='secondary' id='metaAdsReconNextV453' \"+(data.page>=data.pages?'disabled':'')+\">Next</button></div>\";\n    queue.querySelectorAll('.metaAdsPreviewV453').forEach(btn=>btn.addEventListener('click',()=>{const group=groups[Number(btn.dataset.row)];if(group)openMetaAdvertPreviewV459(group);}));\n    queue.querySelectorAll('.metaAdsConfirmMatchV453').forEach(btn=>btn.addEventListener('click',async()=>{const idx=Number(btn.dataset.row),group=groups[idx],sel=queue.querySelector(\".metaAdsEventChoiceV453[data-row='\"+idx+\"']\"),eventId=sel?.value||'';setLoading(btn,true);try{await api('/api/admin/meta-ads/attribution',{method:'PUT',body:JSON.stringify({adId:group.adId,dateStart:group.firstDate,eventId,status:eventId?'manual':'unmatched',scope:'ad'}),cacheMs:0});orbitGetCache.clear();await loadMetaAdsReconciliationV453(data.page||1);setNotice(eventId?'Advert family confirmed.':'Advert family left unmatched.');}finally{setLoading(btn,false);}}));\n    const runReconSearch=()=>loadMetaAdsReconciliationV453(1,$(\"metaAdsReconSearchV455\")?.value||\"\");$(\"metaAdsReconSearchButtonV455\")?.addEventListener(\"click\",runReconSearch);$(\"metaAdsReconSearchV455\")?.addEventListener(\"keydown\",e=>{if(e.key===\"Enter\"){e.preventDefault();runReconSearch();}});$(\"metaAdsReconPrevV453\")?.addEventListener('click',()=>loadMetaAdsReconciliationV453(Math.max(1,Number(data.page||1)-1),data.query||\"\"));$(\"metaAdsReconNextV453\")?.addEventListener('click',()=>loadMetaAdsReconciliationV453(Number(data.page||1)+1,data.query||\"\"));\n    const diag=$(\"metaAdsHistoryDiagnosticsV450\");if(diag)diag.textContent='Reconciliation page loaded '+groups.length+' advert families in '+Number(data.diagnostics?.elapsedMs||0)+'ms server time. Full daily history was not sent to the browser.';\n  }\n  async function loadMetaAdsReconciliationV453(page=1,query=''){const data=await api('/api/admin/meta-ads/history?view=reconciliation&page='+encodeURIComponent(page)+'&limit=25&q='+encodeURIComponent(query||''),{cacheMs:5000,timeoutMs:10000});renderMetaAdsReconciliationV453(data);return data;}\n  function renderMetaAdsCostsV453(data){\n    metaAdsCostsV453=data;const ledger=$(\"metaAdsEventLedgerV450\");if(!ledger)return;\n    const providerStatus=$(\"metaAdsLiveCostStatusV490\"),provider=data.providerRefresh||null;\n    if(providerStatus&&provider){\n      providerStatus.hidden=false;providerStatus.className=\"orbit-action-result \"+(provider.fresh?\"success\":\"\");\n      const repaired=Number(provider.consensusPromotedRows||0),stamp=provider.generatedAt?new Date(provider.generatedAt).toLocaleString():\"unknown time\";\n      const pausedCount=Number(provider.pausedOrOffCampaignsWithSpend||0),pausedSpend=Number(provider.pausedOrOffCampaignSpend||0);\n      providerStatus.innerHTML=\"<strong>Meta provider check \"+(provider.fresh?\"is current\":\"needs refresh\")+\"</strong><span>Last checked \"+esc(stamp)+\" \u00B7 Meta provider window \"+esc(metaAdsMoneyV449(provider.providerSpend||0,'GBP'))+\" \u00B7 safe live delta \"+esc(metaAdsMoneyV449(provider.deltaSpend||0,'GBP'))+(pausedCount?\" \u00B7 includes \"+esc(metaAdsMoneyV449(pausedSpend,'GBP'))+\" from \"+pausedCount+\" paused/off campaign\"+(pausedCount===1?\"\":\"s\"):\"\")+(repaired?\" \u00B7 repaired \"+repaired+\" imported row\"+(repaired===1?\"\":\"s\")+\" using exact-ad identity\":\"\")+\". Paused status does not erase historical spend.</span>\";\n    }\n    const currency='GBP',rows=(data.events||[]).map(x=>{\n      const auto=Number(x.auto_matched||0),manual=Number(x.manual||0),attributed=Number(x.spend||0),mathOk=Math.abs((auto+manual)-attributed)<0.005;\n      return \"<tr class='orbit-meta-event-row-v452' data-event-id='\"+esc(x.event?.eventId||'')+\"' tabindex='0'><td><strong>\"+esc(x.event?.name||'Event')+\"</strong><small>\"+esc(metaAdsEventDateLabelV452(x.event)+' \u00B7 '+(x.event?.venue||''))+\"</small></td><td><strong>\"+esc(metaAdsMoneyV449(attributed,currency))+\"</strong><small>\"+(Number(x.liveDelta||0)>0?\"Includes \"+esc(metaAdsMoneyV449(x.liveDelta,currency))+\" current live ad/day delta \u00B7 \":\"\")+(mathOk?\"Auto + Manual reconciles\":\"\u26A0 totals need review\")+\"</small></td><td>\"+esc(metaAdsMoneyV449(auto,currency))+\"</td><td>\"+esc(metaAdsMoneyV449(manual,currency))+\"</td><td><span class='orbit-meta-view-link-v452'>View matched ads \u2192</span></td></tr>\";\n    }).join('');ledger.innerHTML=rows?\"<table><thead><tr><th>Canonical Vendor event</th><th>Attributed <small>Auto + Manual</small></th><th>Auto</th><th>Manual</th><th></th></tr></thead><tbody>\"+rows+\"</tbody></table>\":\"<div class='orbit-empty'>No confirmed event matches yet.</div>\";ledger.querySelectorAll('[data-event-id]').forEach(row=>{const open=()=>loadMetaAdsEventDetailV453(row.dataset.eventId,1);row.addEventListener('click',open);row.addEventListener('keydown',e=>{if(e.key==='Enter'||e.key===' '){e.preventDefault();open();}});});\n  }\n  let metaCostsRequestV543=null;\n  function metaCostsNoticeV543(message){\n    const status=$('metaAdsLiveCostStatusV490');if(!status)return;\n    status.hidden=false;status.className='orbit-action-result';status.innerHTML='<span>'+esc(message)+'</span><button type=\"button\" class=\"secondary\" data-retry-meta-costs-v543>Retry report</button>';\n  }\n  function renderSavedMetaCostsV543(data){\n    const ledger=$('metaAdsEventLedgerV450'),detail=$('metaAdsEventCostDetailV452');if(detail)detail.hidden=true;\n    const stamp=data.snapshotAsOf?new Date(data.snapshotAsOf).toLocaleString('en-GB',{timeZone:'Europe/London'}):'';\n    metaCostsNoticeV543((data.warning||'Saved event costs only.')+(stamp?' Saved at '+stamp+' UK.':''));\n    if(!ledger)return;\n    if(data.accountingStatus==='unavailable'){ledger.innerHTML='<div class=\"orbit-empty-state\"><strong>Event costs are temporarily unavailable</strong><span>No complete snapshot is available yet. No \u00A30 totals or partial figures are shown.</span></div>';return;}\n    ledger.innerHTML=(data.events||[]).length?'<table><thead><tr><th>Event</th><th>Last complete saved cost</th><th>Detail</th></tr></thead><tbody>'+data.events.map(row=>'<tr><td><strong>'+esc(row.event?.name||'Saved event')+'</strong><small>'+esc(row.event?.date||'')+'</small></td><td><strong>'+esc(metaAdsMoneyV449(row.spend,'GBP'))+'</strong></td><td>Available after accounting finishes</td></tr>').join('')+'</tbody></table>':'<div class=\"orbit-empty\">The saved report has no attributed event costs.</div>';\n  }\n  async function loadMetaAdsCostsV453(){\n    if(metaCostsRequestV543)return metaCostsRequestV543;\n    const ledger=$('metaAdsEventLedgerV450');metaCostsNoticeV543('Loading the saved accounting report. No Meta refresh is being started.');\n    document.querySelectorAll('[data-retry-meta-costs-v543]').forEach(button=>button.disabled=true);\n    metaCostsRequestV543=(async()=>{\n      try{const data=await api('/api/admin/meta-ads/history?view=costs',{cacheMs:0,timeoutMs:15000});\n        if(['saved','unavailable'].includes(data.accountingStatus)){renderSavedMetaCostsV543(data);return data;}\n        renderMetaAdsCostsV453(data);\n        if(!data.providerRefresh)metaCostsNoticeV543('Saved event costs loaded. Meta provider freshness is not available in this response.');\n        return data;\n      }catch(error){\n        if(metaAdsCostsV453){renderMetaAdsCostsV453(metaAdsCostsV453);metaCostsNoticeV543('Could not reload event costs. Showing the last complete report loaded in this page. '+(error.message||'Please retry.'));}\n        else{if(ledger)ledger.innerHTML='<div class=\"orbit-empty-state\"><strong>Event costs could not load</strong><span>No figures have been substituted or changed.</span></div>';metaCostsNoticeV543(error.message||'Please try the report again.');}\n        return {success:false};\n      }finally{metaCostsRequestV543=null;document.querySelectorAll('[data-retry-meta-costs-v543]').forEach(button=>button.disabled=false);}\n    })();return metaCostsRequestV543;\n  }\n  document.addEventListener('click',event=>{if(event.target.closest('[data-retry-meta-costs-v543]'))loadMetaAdsCostsV453();});\n\n  async function loadMetaAdsEventDetailV453(eventId,page=1){\n    const data=await api('/api/admin/meta-ads/history?view=event&eventId='+encodeURIComponent(eventId)+'&page='+encodeURIComponent(page)+'&limit=50',{cacheMs:5000,timeoutMs:10000}),target=$(\"metaAdsEventCostDetailV452\");if(!target)return data;\n    const rows=data.rows||[],currency='GBP',events=data.eventCatalog||[];\n    target.hidden=false;\n    target.innerHTML=\"<div class='orbit-meta-event-detail-head-v452'><div><p class='orbit-kicker'>Matched advertising detail</p><h3>\"+Number(data.total||0)+\" Meta campaign\"+(Number(data.total||0)===1?\"\":\"s\")+\" matched</h3><p>One row per Meta campaign, matching the simple Campaign view in Meta Ads Manager. Individual adverts and daily history stay underneath the maths and are collapsed here.</p></div></div>\"+\n      \"<div class='orbit-table-wrap'><table><thead><tr><th>Campaign</th><th>Adverts included</th><th>Dates</th><th>Total spend</th><th>Match</th><th></th></tr></thead><tbody>\"+\n      rows.map((r,i)=>{\n        const adNames=Array.isArray(r.ad_names)?r.ad_names:[];\n        const preview=[\"Campaign: \"+String(r.campaign_name||''),adNames.length?\"Adverts: \"+adNames.join(\" \u00B7 \"):\"\",String(r.creative_text||r.headline||r.description||'')].filter(Boolean).join(\"\\n\");\n        const range=r.first_date&&r.last_date&&r.last_date!==r.first_date?(r.first_date+\" \u2192 \"+r.last_date):(r.first_date||r.last_date||\"\u2014\");\n        const spendBreakdown=[\n          Number(r.historical_spend||0)>0?\"Imported \"+metaAdsMoneyV449(r.historical_spend,currency):\"\",\n          Number(r.live_delta_spend||0)>0?\"current live +\"+metaAdsMoneyV449(r.live_delta_spend,currency):\"\",\n          Number(r.provider_ad_window_spend||0)>0?\"Meta provider total \"+metaAdsMoneyV449(r.provider_ad_window_spend,currency):\"\"\n        ].filter(Boolean).join(\" \u00B7 \");\n        const dailyCount=Number(r.daily_rows||0),liveCount=Number(r.live_rows||0),adCount=Number(r.ad_count||0),status=String(r.attribution?.status||'');\n        const matchLabel=status==='manual'?'Manual':(status==='mixed'?'Auto + Manual':'Auto');\n        return \"<tr><td><strong>\"+esc(r.campaign_name||'Meta campaign')+\"</strong><small>Check this row against the same campaign in Meta Ads Manager.</small><button type='button' class='secondary metaAdsEventPreviewV453' data-row='\"+i+\"'>See included adverts</button><div class='orbit-meta-ad-copy-v453' data-event-preview='\"+i+\"' hidden><pre>\"+esc(preview||'No advert names stored.')+\"</pre></div></td>\"+\n          \"<td><strong>\"+adCount+\" advert\"+(adCount===1?\"\":\"s\")+\"</strong><small>\"+esc(adNames.slice(0,3).join(' \u00B7 ')+(adNames.length>3?' \u00B7 \u2026':''))+\"</small></td>\"+\n          \"<td>\"+esc(range)+\"<small>\"+dailyCount+\" imported daily row\"+(dailyCount===1?\"\":\"s\")+(liveCount?\" \u00B7 \"+liveCount+\" current row\"+(liveCount===1?\"\":\"s\"):\"\")+\" collapsed</small></td>\"+\n          \"<td><strong>\"+esc(metaAdsMoneyV449(r.spend,currency))+\"</strong>\"+(spendBreakdown?\"<small>\"+esc(spendBreakdown)+\"</small>\":\"\")+\"</td>\"+\n          \"<td><strong>\"+esc(matchLabel)+\"</strong><small>\"+esc((r.attribution?.evidence||[]).slice(0,2).join(' \u00B7 '))+\"</small></td>\"+\n          \"<td><button type='button' class='secondary metaAdsEventReassignV453' data-row='\"+i+\"'>Reassign campaign</button><div class='orbit-meta-reassign-v454' data-reassign-row='\"+i+\"' hidden><select class='metaAdsEventReassignChoiceV454'><option value=''>Return adverts to Reconciliation</option>\"+events.map(e=>\"<option value='\"+esc(e.eventId)+\"'>\"+metaAdsEventOptionV450(e)+\"</option>\").join(\"\")+\"</select><button type='button' class='secondary metaAdsEventReassignConfirmV454'>Confirm</button></div></td></tr>\";\n      }).join('')+\n      \"</tbody></table></div>\"+\n      (Number(data.pages||1)>1?\"<div class='orbit-meta-pagination-v453'><button type='button' class='secondary' id='metaAdsEventPrevV453' \"+(data.page<=1?'disabled':'')+\">Previous</button><span>Page \"+Number(data.page||1)+\" of \"+Number(data.pages||1)+\"</span><button type='button' class='secondary' id='metaAdsEventNextV453' \"+(data.page>=data.pages?'disabled':'')+\">Next</button></div>\":\"\");\n    target.querySelectorAll('.metaAdsEventPreviewV453').forEach(btn=>btn.addEventListener('click',()=>{const box=target.querySelector(\"[data-event-preview='\"+btn.dataset.row+\"']\");if(box){box.hidden=!box.hidden;btn.textContent=box.hidden?'Preview':'Hide preview';}}));\n    target.querySelectorAll('.metaAdsEventReassignV453').forEach(btn=>btn.addEventListener('click',()=>{const box=target.querySelector(\"[data-reassign-row='\"+btn.dataset.row+\"']\");if(box)box.hidden=!box.hidden;}));\n    target.querySelectorAll('.metaAdsEventReassignConfirmV454').forEach(confirmBtn=>confirmBtn.addEventListener('click',async()=>{\n      const box=confirmBtn.closest('.orbit-meta-reassign-v454'),idx=Number(box?.dataset.reassignRow),r=rows[idx],select=box?.querySelector('.metaAdsEventReassignChoiceV454'),selected=events.find(e=>String(e.eventId)===String(select?.value||''))||null;\n      setLoading(confirmBtn,true);\n      try{\n        const adIds=(Array.isArray(r.ad_ids)?r.ad_ids:[r.ad_id]).filter(Boolean);\n        if(!adIds.length)throw new Error('No Meta advert IDs are stored for this campaign.');\n        for(const adId of adIds)await api('/api/admin/meta-ads/attribution',{method:'PUT',body:JSON.stringify({adId,dateStart:r.first_date||'',eventId:selected?.eventId||'',status:selected?'manual':'unmatched',scope:'ad'}),cacheMs:0});\n        orbitGetCache.clear();await loadMetaAdsEventDetailV453(eventId,Math.min(page,data.pages||1));\n        setNotice(selected?'Campaign reassigned to '+selected.name+'.':'Campaign adverts returned to Reconciliation.');\n      }finally{setLoading(confirmBtn,false);}\n    }));\n    $(\"metaAdsEventPrevV453\")?.addEventListener('click',()=>loadMetaAdsEventDetailV453(eventId,Math.max(1,Number(data.page||1)-1)));\n    $(\"metaAdsEventNextV453\")?.addEventListener('click',()=>loadMetaAdsEventDetailV453(eventId,Number(data.page||1)+1));\n    target.scrollIntoView({behavior:'smooth',block:'nearest'});return data;\n  }\n\n  async function refreshMetaLiveCostsV490(button=null){\n    const status=$(\"metaAdsLiveCostStatusV490\");if(button)setLoading(button,true);\n    if(status){status.hidden=false;status.className=\"orbit-action-result\";status.textContent=\"Reading current individual-ad spend from Meta\u2026\";}\n    try{\n      const result=await api(\"/api/admin/meta-ads/live-overlay/refresh\",{method:\"POST\",body:JSON.stringify({skipRematch:true,days:45}),cacheMs:0,timeoutMs:120000});\n      orbitGetCache.clear();\n      await loadMetaAdsCostsV453();\n      if(status){\n        const capped=Number(result.cappedAwaySpend||0);\n        status.className=\"orbit-action-result success\";\n        const repaired=Number(result.consensusPromotedRows||0);\n        const pausedCount=Number(result.pausedOrOffCampaignsWithSpend||0),pausedSpend=Number(result.pausedOrOffCampaignSpend||0);\n        status.innerHTML=\"<strong>Current Meta spend refreshed</strong><span>Provider spend \"+esc(metaAdsMoneyV449(result.providerSpend||0,'GBP'))+\" \u00B7 imported \"+esc(metaAdsMoneyV449(result.importedSpend||0,'GBP'))+\" \u00B7 safe live delta \"+esc(metaAdsMoneyV449(result.deltaSpend||0,'GBP'))+(pausedCount?\" \u00B7 includes \"+esc(metaAdsMoneyV449(pausedSpend,'GBP'))+\" from \"+pausedCount+\" paused/off campaign\"+(pausedCount===1?\"\":\"s\"):\"\")+(repaired>0?\" \u00B7 repaired \"+repaired+\" previously unresolved imported row\"+(repaired===1?\"\":\"s\")+\" from exact advert identity\":\"\")+(capped>0?\" \u00B7 prevented \"+esc(metaAdsMoneyV449(capped,'GBP'))+\" of stale daily over-count\":\"\")+\". Paused status does not remove spend already incurred.</span>\";\n      }\n      setNotice(\"Current Meta advertising spend refreshed from individual-ad provider totals.\");\n      return result;\n    }catch(error){\n      if(status){status.className=\"orbit-action-result error\";status.innerHTML=\"<strong>Meta refresh failed</strong><span>\"+esc(error.message||String(error))+\"</span>\";}\n      throw error;\n    }finally{if(button)setLoading(button,false);}\n  }\n\n  let metaAdsHistoryPollTimerV450=null;\n  let metaAdsHistoryPollingV538=false;\n  const metaHistoryJobStorageV538=\"orbitMetaHistoryJobV538\";\n  function savedMetaHistoryJobV538(){try{return JSON.parse(sessionStorage.getItem(metaHistoryJobStorageV538)||\"null\");}catch(_){return null;}}\n  function clearMetaHistoryJobV538(){try{sessionStorage.removeItem(metaHistoryJobStorageV538);}catch(_){} }\n  async function pollMetaAdsHistoryJobV450(jobId,startedAt,failures=0){\n    if(metaAdsHistoryPollingV538)return;\n    const button=$(\"metaAdsLoadHistoryV450\"),feedback=$(\"metaAdsHistoryButtonFeedbackV450\"),diag=$(\"metaAdsHistoryDiagnosticsV450\");\n    if(metaAdsHistoryPollTimerV450){clearTimeout(metaAdsHistoryPollTimerV450);metaAdsHistoryPollTimerV450=null;}\n    metaAdsHistoryPollingV538=true;\n    let data;\n    try { data=await api('/api/admin/meta-ads/history/import/'+encodeURIComponent(jobId),{cacheMs:0,timeoutMs:25000}); }\n    catch(error){\n      metaAdsHistoryPollingV538=false;\n      const retry=failures<5;\n      if(feedback){feedback.className=\"orbit-action-result\";feedback.innerHTML=\"<strong>Waiting for sync status</strong><span>The status check did not return. This does not mean the import failed. \"+(retry?\"Orbit will check the same job again automatically.\":\"Press Sync new / changed Meta data to resume checking this job; it will not start a duplicate import.\")+\"</span>\";}\n      if(diag)diag.textContent=\"Status temporarily unavailable \u00B7 job \"+jobId+\" \u00B7 \"+(error.message||String(error));\n      if(retry)metaAdsHistoryPollTimerV450=setTimeout(()=>pollMetaAdsHistoryJobV450(jobId,startedAt,failures+1),Math.min(10000,2000*(failures+1)));\n      else if(button)setLoading(button,false);\n      return;\n    }\n    metaAdsHistoryPollingV538=false;\n    const elapsed=Math.max(0,Math.round((Date.now()-startedAt)/1000));\n    if(feedback){feedback.className=\"orbit-action-result\";feedback.innerHTML=\"<strong>Import running</strong><span>\"+esc(data.stage||\"Reading Meta history\")+\" \u00B7 \"+elapsed+\"s elapsed. Orbit will update automatically.</span>\";}\n    if(diag)diag.textContent=(data.stage||\"Historical import running\")+\" \u00B7 job \"+jobId+\" \u00B7 \"+elapsed+\"s elapsed\";\n    if(data.status==='completed'){\n      clearMetaHistoryJobV538();orbitGetCache.clear();\n      if(button)setLoading(button,false);\n      const overlayWarning=data.summary?.liveCampaignOverlay?.success===false;\n      try { await loadMetaAdsSummaryV453();const view=sessionStorage.getItem('orbitAdvertisingView')||'overview';if(view==='reconciliation')await loadMetaAdsReconciliationV453(1);if(view==='costs')await loadMetaAdsCostsV453(); }\n      catch(error){if(diag)diag.textContent=\"Import completed; report display needs refreshing: \"+(error.message||String(error));}\n      if(feedback){feedback.className=overlayWarning?\"orbit-action-result\":\"orbit-action-result success\";feedback.innerHTML=\"<strong>History saved</strong><span>\"+(overlayWarning?\"The historical ledger is saved. The live provider refresh did not complete; retry Current Meta spend before certifying event costs.\":\"Meta data was saved and matched in \"+elapsed+\" seconds.\")+\"</span>\";}\n      setNotice(overlayWarning?\"Historical Meta data saved; live spend refresh needs a retry.\":\"Meta advertising sync completed.\",overlayWarning);\n      return data;\n    }\n    if(data.status==='failed'){\n      clearMetaHistoryJobV538();const message=data.error?.message||\"Meta historical import failed.\";\n      if(feedback){feedback.className=\"orbit-action-result error\";feedback.innerHTML=\"<strong>Import failed safely</strong><span>\"+esc(message)+\"</span>\";}\n      if(diag)diag.textContent=message;if(button)setLoading(button,false);setNotice(message,true);return data;\n    }\n    metaAdsHistoryPollTimerV450=setTimeout(()=>pollMetaAdsHistoryJobV450(jobId,startedAt),2000);\n    return data;\n  }\n  async function startMetaAdsHistoryImportV450(){\n    const since=$(\"metaAdsHistorySinceV450\")?.value||\"\",until=$(\"metaAdsHistoryUntilV450\")?.value||\"\";\n    const summary=$(\"metaAdsHistorySummaryV450\"),diag=$(\"metaAdsHistoryDiagnosticsV450\"),feedback=$(\"metaAdsHistoryButtonFeedbackV450\"),button=$(\"metaAdsLoadHistoryV450\");\n    if(button)setLoading(button,true);\n    const saved=savedMetaHistoryJobV538();\n    if(saved?.jobId)return pollMetaAdsHistoryJobV450(saved.jobId,saved.startedAt||Date.now());\n    if(summary)summary.innerHTML=\"<div class='orbit-empty-state'><strong>Import started</strong><span>Orbit is reading Meta history in the background. Progress will appear beside the button.</span></div>\";\n    if(feedback)feedback.innerHTML=\"<strong>Starting import\u2026</strong><span>Connecting to Meta and preparing the historical read.</span>\";\n    if(diag)diag.textContent=\"Starting historical Meta import\u2026\";\n    try{\n      const job=await api('/api/admin/meta-ads/history/import',{method:'POST',body:JSON.stringify({since:since||null,until:until||null,mode:since?'manual':'incremental'}),cacheMs:0,timeoutMs:25000});\n      const started=Date.now();try{sessionStorage.setItem(metaHistoryJobStorageV538,JSON.stringify({jobId:job.jobId,startedAt:started}));}catch(_){}\n      return pollMetaAdsHistoryJobV450(job.jobId,started);\n    }catch(err){\n      if(button)setLoading(button,false);\n      if(feedback){feedback.className=\"orbit-action-result error\";feedback.innerHTML=\"<strong>Import could not start</strong><span>\"+esc(err.message||err)+\"</span>\";}\n      if(diag)diag.textContent=err.message||String(err);throw err;\n    }\n  }\n\n\n  async function loadMetaAdsDashboardV449(refreshLive=false){\n    const preset=$(\"metaAdsDatePresetV449\")?.value||\"last_7d\",level=$(\"metaAdsLevelV449\")?.value||\"campaign\";\n    const tableTarget=$(\"metaAdsPerformanceTableV449\"),diag=$(\"metaAdsDiagnosticsV449\"),summary=$(\"metaAdsSummaryV449\");\n    if(tableTarget)tableTarget.innerHTML=\"<div class='orbit-empty-state'><strong>\"+(refreshLive?\"Refreshing Meta Insights\u2026\":\"Loading saved Meta performance\u2026\")+\"</strong><span>\"+(refreshLive?\"Orbit is making one explicit read-only request to Meta.\":\"No live Meta request is made when this page opens.\")+\"</span></div>\";\n    const data=await api('/api/admin/meta-ads/dashboard?datePreset='+encodeURIComponent(preset)+'&level='+encodeURIComponent(level)+(refreshLive?'&refresh=1':''),{cacheMs:0,timeoutMs:45000});\n    if(data.available===false){\n      if(tableTarget)tableTarget.innerHTML=\"<div class='orbit-empty-state'><strong>No saved live-performance snapshot yet</strong><span>Press Load Meta performance when you want Orbit to make a fresh read-only Meta request. The result will then be saved for future refreshes.</span></div>\";\n      if(diag)diag.textContent=\"No cached Meta performance snapshot for \"+preset+\" / \"+level+\". Page refresh made zero Meta API requests.\";\n      return data;\n    }\n    const t=data.totals||{},currency=data.account?.currency||\"GBP\";\n    if(summary)summary.innerHTML=[\n      [\"Spend\",metaAdsMoneyV449(t.spend,currency)],[\"Impressions\",metaAdsNumberV449(t.impressions)],[\"Reach\",metaAdsNumberV449(t.reach)],[\"Link clicks\",metaAdsNumberV449(t.linkClicks)],\n      [\"CTR\",metaAdsNumberV449(t.ctr,2)+\"%\"],[\"CPC\",metaAdsMoneyV449(t.cpc,currency)],[\"Initiate Checkout\",metaAdsNumberV449(t.initiateCheckout)],[\"Purchases\",metaAdsNumberV449(t.purchase)],\n      [\"Cost / checkout\",t.costPerCheckout==null?\"\u2014\":metaAdsMoneyV449(t.costPerCheckout,currency)],[\"Cost / purchase\",t.costPerPurchase==null?\"\u2014\":metaAdsMoneyV449(t.costPerPurchase,currency)],[\"Purchase value\",metaAdsMoneyV449(t.purchaseConversionValue,currency)],[\"ROAS\",t.roas==null?\"\u2014\":metaAdsNumberV449(t.roas,2)+\"\u00D7\"]\n    ].map(x=>\"<article class='orbit-summary-card'><small>\"+esc(x[0])+\"</small><strong>\"+esc(x[1])+\"</strong></article>\").join(\"\");\n    const campaigns=new Map((data.campaigns||[]).map(x=>[String(x.id),x])),adsets=new Map((data.adsets||[]).map(x=>[String(x.id),x]));\n    const rows=(data.insights||[]).map(row=>{const m=row.metrics||{},campaign=campaigns.get(String(row.campaign_id||\"\"))||{},adset=adsets.get(String(row.adset_id||\"\"))||{};const name=level===\"ad\"?(row.ad_name||row.ad_id):level===\"adset\"?(row.adset_name||row.adset_id):(row.campaign_name||row.campaign_id);const status=level===\"campaign\"?campaign.effective_status:level===\"adset\"?adset.effective_status:\"\";const budget=level===\"campaign\"?(campaign.daily_budget||campaign.lifetime_budget):level===\"adset\"?(adset.daily_budget||adset.lifetime_budget):\"\";const budgetText=budget?metaAdsMoneyV449(Number(budget)/100,currency):\"\u2014\";return \"<tr><td><strong>\"+esc(name||\"Unknown\")+\"</strong><small style='display:block'>\"+esc(row.objective||campaign.objective||\"\")+\"</small></td><td>\"+metaAdsStatusPillV449(status||\"\u2014\")+\"</td><td>\"+esc(budgetText)+\"</td><td>\"+esc(metaAdsMoneyV449(m.spend,currency))+\"</td><td>\"+esc(metaAdsNumberV449(m.impressions))+\"</td><td>\"+esc(metaAdsNumberV449(m.linkClicks))+\"</td><td>\"+esc(metaAdsNumberV449(m.initiateCheckout))+\"</td><td>\"+esc(metaAdsNumberV449(m.purchase))+\"</td><td>\"+esc(m.costPerPurchase==null?\"\u2014\":metaAdsMoneyV449(m.costPerPurchase,currency))+\"</td><td>\"+esc(m.roas==null?\"\u2014\":metaAdsNumberV449(m.roas,2)+\"\u00D7\")+\"</td></tr>\";}).join(\"\");\n    if(tableTarget)tableTarget.innerHTML=\"<table><thead><tr><th>\"+esc(level===\"ad\"?\"Ad\":level===\"adset\"?\"Ad set\":\"Campaign\")+\"</th><th>Status</th><th>Budget</th><th>Spend</th><th>Impressions</th><th>Link clicks</th><th>Checkout</th><th>Purchase</th><th>CPA</th><th>ROAS</th></tr></thead><tbody>\"+(rows||\"<tr><td colspan='10'>Meta returned no performance rows for this period.</td></tr>\")+\"</tbody></table>\";\n    if(diag)diag.textContent=(data.cached?\"Saved snapshot\":\"Live Meta refresh\")+\" \u00B7 Graph \"+String(data.graphVersion||\"\")+\" \u00B7 \"+String(data.datePreset||preset)+\" \u00B7 \"+String(data.level||level)+\" level \u00B7 \"+Number(data.insights?.length||0)+\" insight rows \u00B7 generated \"+String(data.generatedAt||\"unknown\")+\" \u00B7 write operations disabled.\";\n  }\n\n  function restoreAdminModuleAfterRefresh() {\n    let route=\"\",module=\"\",tab=\"\";try{const url=new URL(window.location.href);route=String(url.searchParams.get(\"orbit_admin_route\")||localStorage.getItem(\"orbitAdminLastRouteV5991\")||\"\");tab=String(url.searchParams.get(\"orbit_admin_tab\")||\"\");const requestedWorkspace=url.searchParams.get(\"orbit_admin_workspace\");if(requestedWorkspace)applyBusinessWorkspaceV599(requestedWorkspace,{persist:true,activateHome:false,historyMode:\"none\"});const hash=String(window.location.hash||\"\");if(hash.startsWith(\"#orbit-module-\"))module=hash.slice(\"#orbit-module-\".length);if(!route&&module)route=primaryRouteForModuleV5991(module,tab);}catch(_){}\n    const config=adminWorkspaceConfig[route];if(config){window.orbitRestoringAdminState=true;activateModule(config.defaultModule,tab||config.preferredTab,{routeKey:route,historyMode:\"none\"});window.setTimeout(()=>{window.orbitRestoringAdminState=false;},0);}\n  }\n  function restoreAdminRouteFromHistoryV5991(){if(!state.adminAuthenticated)return;let route=\"\",tab=\"\";try{const url=new URL(window.location.href);route=String(url.searchParams.get(\"orbit_admin_route\")||\"\");tab=String(url.searchParams.get(\"orbit_admin_tab\")||\"\");const requestedWorkspace=url.searchParams.get(\"orbit_admin_workspace\");if(requestedWorkspace)applyBusinessWorkspaceV599(requestedWorkspace,{persist:true,activateHome:false,historyMode:\"none\"});}catch(_){return;}const config=adminWorkspaceConfig[route];if(config)activateModule(config.defaultModule,tab||config.preferredTab,{routeKey:route,historyMode:\"none\"});}\n  window.addEventListener(\"popstate\",restoreAdminRouteFromHistoryV5991);\n\n  function updateCommandCentre() {\n    const centre = state.fulfilmentCentre || {};\n    const counts = centre.counts || {};\n    const scheduler = state.scheduler || {};\n    const summary = state.summary || {};\n    let title = \"All systems are loading\";\n    let copy = \"Orbit is checking the business status.\";\n    let module = \"dashboard\";\n    if ((summary.unansweredTickets || 0) > 0) {\n      title = \"Reply to customer messages\";\n      copy = summary.unansweredTickets + \" customer conversation\" + (summary.unansweredTickets === 1 ? \" is\" : \"s are\") + \" waiting for an admin response. Customer contact is the highest priority.\";\n      module = \"support\";\n    } else if ((summary.redeemedGoldenTickets || 0) > 0) {\n      title = \"Prepare Golden Ticket prizes\";\n      copy = summary.redeemedGoldenTickets + \" redeemed Golden Ticket\" + (summary.redeemedGoldenTickets === 1 ? \" needs\" : \"s need\") + \" prize handling.\";\n      module = \"shipping\";\n    } else if ((summary.completedDrawsAwaitingDispatch || 0) > 0) {\n      title = \"Prepare monthly draw prize\";\n      copy = summary.completedDrawsAwaitingDispatch + \" draw winner shipment\" + (summary.completedDrawsAwaitingDispatch === 1 ? \" is\" : \"s are\") + \" awaiting action.\";\n      module = \"automation\";\n    } else if (counts.ready > 0 && !counts.labelsGenerated) {\n      title = \"Generate this month\u2019s dispatch\";\n      copy = counts.ready + \" member pack\" + (counts.ready === 1 ? \" is\" : \"s are\") + \" ready for labels. Missing-address members are skipped safely.\";\n      module = \"fulfilment\";\n    } else if (counts.labelsGenerated > 0 && !counts.shipped) {\n      title = \"Print labels and dispatch\";\n      copy = counts.labelsGenerated + \" label\" + (counts.labelsGenerated === 1 ? \" is\" : \"s are\") + \" generated. Print the packing list, pack in order, then mark dispatched.\";\n      module = \"fulfilment\";\n    } else if (counts.needsAddress > 0) {\n      title = \"Collect missing delivery details\";\n      copy = counts.needsAddress + \" member\" + (counts.needsAddress === 1 ? \" needs\" : \"s need\") + \" an address before they can receive a box.\";\n      module = \"members\";\n    } else {\n      title = \"Everything looks calm today\";\n      copy = \"No urgent fulfilment action is currently showing. Use the modules above for specific tools.\";\n      module = \"dashboard\";\n    }\n    text(\"commandNextTitle\", title);\n    text(\"commandNextCopy\", copy);\n    const button = $(\"commandNextButton\");\n    if (button) button.dataset.targetModule = module;\n  }\n\n  /* HOME/SHARED UI SAFETY: preserve complete button markup while loading.\n   * Storing textContent flattened compound dashboard cards after navigation. */\n  function setLoading(button, loading) {\n    if (!button) return;\n    button.disabled = loading;\n    if (!button.dataset.originalHtml) button.dataset.originalHtml = button.innerHTML;\n    button.classList.toggle(\"orbit-button-loading\", Boolean(loading));\n    button.setAttribute(\"aria-busy\", loading ? \"true\" : \"false\");\n    button.innerHTML = loading ? \"<span class='orbit-mini-spinner' aria-hidden='true'></span><span>Working...</span>\" : button.dataset.originalHtml;\n  }\n\n\n  function parseUkDate(value) {\n    const raw=String(value||\"\").trim();\n    if(!raw) return null;\n    const m=raw.match(/^(\\d{1,2})[\\/.-](\\d{1,2})[\\/.-](\\d{4})$/);\n    if(!m) throw new Error(\"Enter the expiry date as DD/MM/YYYY.\");\n    const d=Number(m[1]), mo=Number(m[2]), y=Number(m[3]);\n    const date=new Date(Date.UTC(y,mo-1,d,23,59,59));\n    if(date.getUTCFullYear()!==y||date.getUTCMonth()!==mo-1||date.getUTCDate()!==d) throw new Error(\"Enter a valid expiry date as DD/MM/YYYY.\");\n    return date.toISOString();\n  }\n  // V596: bounded, authenticated single-flight reads. Register BEFORE fetch.\n  const orbitGetRequests = new Map();\n  const orbitGetCache = new Map();\n  const orbitReadWaiters = [];\n  let orbitReadsActive = 0, orbitReadEpoch = 0, orbitReadUnavailableUntil = 0;\n  function acquireOrbitReadV596(){\n    if(orbitReadsActive<4){orbitReadsActive++;return Promise.resolve();}\n    if(orbitReadWaiters.length>=96)return Promise.reject(Object.assign(new Error(\"Orbit is busy. Wait for the current requests to finish.\"),{status:429,code:\"ADMIN_READ_QUEUE_FULL\"}));\n    return new Promise(resolve=>orbitReadWaiters.push(resolve));\n  }\n  function releaseOrbitReadV596(){const next=orbitReadWaiters.shift();if(next)next();else orbitReadsActive--;}\n  // V597: exports do not consume the normal page-read slots or trip the\n  // unrelated navigation circuit. Only exact job-status GETs get bounded retries.\n  const orbitKnowledgeReadWaitersV597=[];\n  let orbitKnowledgeReadsActiveV597=0;\n  function isOrbitKnowledgePathV597(path){return /^\\/api\\/admin\\/orbit-bootstrap(?:[/?]|$)/.test(path);}\n  function acquireOrbitKnowledgeReadV597(){\n    if(orbitKnowledgeReadsActiveV597<2){orbitKnowledgeReadsActiveV597++;return Promise.resolve();}\n    if(orbitKnowledgeReadWaitersV597.length>=16)return Promise.reject(Object.assign(new Error(\"Project export requests are busy. Retry shortly.\"),{status:429,code:\"ORBIT_KNOWLEDGE_BUSY\"}));\n    return new Promise(resolve=>orbitKnowledgeReadWaitersV597.push(resolve));\n  }\n  function releaseOrbitKnowledgeReadV597(){const next=orbitKnowledgeReadWaitersV597.shift();if(next)next();else orbitKnowledgeReadsActiveV597--;}\n  async function pollOrbitProjectJobV597(jobId){\n    if(!/^[a-f0-9]{24}$/.test(String(jobId)))throw new Error(\"Invalid project export job ID.\");\n    for(let attempt=0;attempt<3;attempt++){\n      try{return await api('/api/admin/orbit-bootstrap/backend-source/jobs/'+encodeURIComponent(jobId),{timeoutMs:20000,cacheMs:0});}\n      catch(error){\n        if(attempt===2 || error.code===\"ADMIN_SESSION_CHANGED\" || (error.status && ![408,429,502,503,504].includes(error.status)))throw error;\n        await new Promise(resolve=>setTimeout(resolve,500*(attempt+1)));\n      }\n    }\n  }\n  async function api(path, options) {\n    const requestOptions=Object.assign({},options||{}),method=String(requestOptions.method||\"GET\").toUpperCase(),externalSignal=requestOptions.signal||null;\n    const cacheMs=Math.max(0,Number(requestOptions.cacheMs)||0),knowledgeRead=isOrbitKnowledgePathV597(path);\n    delete requestOptions.signal;\n    const requestKey=String(adminSessionTokenV329||\"\")+\":\"+orbitReadEpoch+\":\"+method+\":\"+path;\n    if(method===\"GET\"){\n      const cached=orbitGetCache.get(requestKey);\n      if(cacheMs>0&&cached&&cached.expiresAt>Date.now())return cached.value;\n      if(!externalSignal&&orbitGetRequests.has(requestKey))return orbitGetRequests.get(requestKey);\n      if(!knowledgeRead&&Date.now()<orbitReadUnavailableUntil)throw Object.assign(new Error(\"Orbit's server is temporarily unavailable. Your session has been retained; retry shortly.\"),{status:503,code:\"ADMIN_SERVER_UNAVAILABLE\"});\n    }\n    const epoch=orbitReadEpoch,sessionToken=adminSessionTokenV329;\n    const pending=(async()=>{\n      let readSlot=false,timer,timedOut=false,externalAbortHandler=null;\n      const timeoutMs=Math.max(1000,Math.min(120000,Number(requestOptions.timeoutMs)||(method===\"GET\"?20000:45000)));\n      delete requestOptions.timeoutMs;delete requestOptions.cacheMs;\n      try{\n        if(method===\"GET\"){await (knowledgeRead?acquireOrbitKnowledgeReadV597():acquireOrbitReadV596());readSlot=true;}\n        // A queued request from a previous session must not be sent after logout.\n        if(sessionToken!==adminSessionTokenV329)throw Object.assign(new Error(\"Admin session changed; request cancelled.\"),{code:\"ADMIN_SESSION_CHANGED\"});\n        const withCacheBust=method===\"GET\"?path+(path.includes(\"?\")?\"&\":\"?\")+\"_=\"+Date.now():path;\n        const url=API_BASE+withCacheBust+(withCacheBust.includes(\"?\")?\"&\":\"?\")+\"secret=\"+encodeURIComponent(secret);\n        const controller=new AbortController();timer=setTimeout(()=>{timedOut=true;controller.abort();},timeoutMs);\n        if(externalSignal){externalAbortHandler=()=>controller.abort();if(externalSignal.aborted)controller.abort();else externalSignal.addEventListener(\"abort\",externalAbortHandler,{once:true});}\n        const headers=Object.assign({\"Content-Type\":\"application/json\"},requestOptions.headers||{});\n        if(sessionToken)headers.Authorization=\"Bearer \"+sessionToken;\n        delete requestOptions.headers;\n        const res=await fetch(url,Object.assign({headers,cache:method===\"GET\"?\"no-store\":\"default\",signal:controller.signal},requestOptions));\n        const json=(res.headers.get(\"content-type\")||\"\").includes(\"application/json\");\n        const data=json?await res.json():{success:false,error:\"Orbit server returned HTTP \"+res.status+\" instead of an API response.\"};\n        if(!json)try{await res.body?.cancel();}catch(_){}\n        if(!res.ok||data.success===false)throw Object.assign(new Error(data.error||\"Orbit OS request failed (HTTP \"+res.status+\").\"),{status:res.status,data});\n        if(method===\"GET\"&&cacheMs>0&&epoch===orbitReadEpoch&&sessionToken===adminSessionTokenV329){\n          if(orbitGetCache.size>=80)orbitGetCache.delete(orbitGetCache.keys().next().value);\n          orbitGetCache.set(requestKey,{value:data,expiresAt:Date.now()+cacheMs});\n        }\n        if(method!==\"GET\"){orbitReadEpoch++;orbitGetCache.clear();}\n        return data;\n      }catch(error){\n        const aborted=Boolean(error&&error.name===\"AbortError\"),externallyCancelled=aborted&&Boolean(externalSignal?.aborted)&&!timedOut;\n        if(method===\"GET\"&&!knowledgeRead&&!aborted&&(!error.status||error.status>=500)&&error.code!==\"ADMIN_SESSION_CHANGED\")orbitReadUnavailableUntil=Date.now()+5000;\n        if(externallyCancelled)throw Object.assign(new Error(\"Orbit OS request cancelled because a newer view was requested.\"),{code:\"ADMIN_REQUEST_CANCELLED\"});\n        if(aborted)throw Object.assign(new Error(\"Orbit OS request timed out after \"+Math.round(timeoutMs/1000)+\" seconds: \"+path),{code:\"ADMIN_REQUEST_TIMEOUT\"});\n        throw error;\n      }finally{clearTimeout(timer);if(externalSignal&&externalAbortHandler)externalSignal.removeEventListener(\"abort\",externalAbortHandler);if(readSlot){if(knowledgeRead)releaseOrbitKnowledgeReadV597();else releaseOrbitReadV596();}}\n    })();\n    if(method===\"GET\"&&!externalSignal)orbitGetRequests.set(requestKey,pending);\n    try{return await pending;}finally{if(!externalSignal&&orbitGetRequests.get(requestKey)===pending)orbitGetRequests.delete(requestKey);}\n  }\n\n  async function adminAuthRequestV329(path,options){\n    const request=Object.assign({},options||{}),method=String(request.method||\"GET\").toUpperCase();\n    const url=API_BASE+path+(path.includes(\"?\")?\"&\":\"?\")+\"secret=\"+encodeURIComponent(secret)+\"&_=\"+Date.now();\n    const headers={\"Content-Type\":\"application/json\"};if(adminSessionTokenV329)headers.Authorization=\"Bearer \"+adminSessionTokenV329;\n    const controller=new AbortController(),timer=setTimeout(()=>controller.abort(),15000);\n    try{\n      const response=await fetch(url,{method,headers,body:request.body,cache:\"no-store\",signal:controller.signal});\n      if(!(response.headers.get(\"content-type\")||\"\").includes(\"application/json\")){\n        try{await response.body?.cancel();}catch(_){}\n        throw Object.assign(new Error(\"The server is unavailable. This is not a password rejection.\"),{status:response.status>=400?response.status:503,code:\"AUTH_CONNECTION_UNAVAILABLE\"});\n      }\n      const data=await response.json();\n      if(!response.ok||data.success===false)throw Object.assign(new Error(data.error||\"Admin authentication failed.\"),{status:response.status,data});\n      return data;\n    }finally{clearTimeout(timer);}\n  }\n\n  function setAdminSessionV329(token,user){\n    adminSessionTokenV329=String(token||\"\");adminCurrentUserV329=user||null;state.adminAuthenticated=Boolean(adminSessionTokenV329&&adminCurrentUserV329);\n    try{if(adminSessionTokenV329)sessionStorage.setItem(\"orbitAdminSessionV329\",adminSessionTokenV329);else sessionStorage.removeItem(\"orbitAdminSessionV329\");}catch(_){}\n    $(\"orbitAdminApplication\")?.classList.toggle(\"orbit-auth-locked\",!state.adminAuthenticated);\n    if($(\"orbitAdminAuthGate\"))$(\"orbitAdminAuthGate\").hidden=state.adminAuthenticated;\n    if($(\"orbitAdminUserPill\")){$(\"orbitAdminUserPill\").hidden=!state.adminAuthenticated;$(\"orbitAdminUserPill\").textContent=state.adminAuthenticated?(adminCurrentUserV329.username+\" \u00B7 \"+adminCurrentUserV329.role):\"\";}\n    if($(\"orbitAdminLogoutButton\"))$(\"orbitAdminLogoutButton\").hidden=!state.adminAuthenticated;\n  }\n  function adminSessionQueryV329(){return adminSessionTokenV329?\"&admin_session=\"+encodeURIComponent(adminSessionTokenV329):\"\";}\n  function showAdminAuthGateV329(status,error){\n    const setup=Boolean(status?.setupRequired);state.adminAuthenticated=false;\n    if($(\"orbitAdminAuthGate\"))$(\"orbitAdminAuthGate\").dataset.connectionRetry=\"false\";\n    for(const id of [\"orbitAdminAuthUsername\",\"orbitAdminAuthPassword\"])if($(id))$(id).disabled=false;\n    if($(\"orbitAdminAuthGate\")){$(\"orbitAdminAuthGate\").hidden=false;$(\"orbitAdminAuthGate\").dataset.setupRequired=setup?\"true\":\"false\";}\n    $(\"orbitAdminApplication\")?.classList.add(\"orbit-auth-locked\");\n    text(\"orbitAdminAuthMode\",setup?\"First secure setup\":\"Second security gate\");\n    text(\"orbitAdminAuthTitle\",setup?\"Create the first Orbit Admin account\":\"Sign in to Orbit OS\");\n    text(\"orbitAdminAuthDescription\",setup?\"The private secret URL was accepted. Create the owner account that will protect Orbit OS from now on.\":\"The private secret URL was accepted. Enter your Orbit Admin username and password to continue.\");\n    if($(\"orbitAdminAuthSubmit\"))$(\"orbitAdminAuthSubmit\").textContent=setup?\"Create Owner Account\":\"Sign in\";\n    const result=$(\"orbitAdminAuthResult\");if(result){result.hidden=!error;result.textContent=error||\"\";result.classList.toggle(\"error\",Boolean(error));}\n  }\n  function showAdminConnectionUnavailableV596(error){\n    if((error?.status===401||error?.status===403)&&error?.code!==\"AUTH_CONNECTION_UNAVAILABLE\"){showAdminAuthGateV329({},error.message);return;}\n    // Authentication is NOT bypassed. Keep the app locked, preserve the token,\n    // and offer a connection retry rather than prompting for another password.\n    state.adminAuthenticated=false;$(\"orbitAdminApplication\")?.classList.add(\"orbit-auth-locked\");\n    const gate=$(\"orbitAdminAuthGate\");if(gate){gate.hidden=false;gate.dataset.connectionRetry=\"true\";}\n    text(\"orbitAdminAuthMode\",\"Server connection interrupted\");text(\"orbitAdminAuthTitle\",\"Orbit is temporarily unavailable\");\n    text(\"orbitAdminAuthDescription\",\"Your saved session has not been cleared. Retry the connection when the server is available; do not keep re-entering your password.\");\n    text(\"orbitAdminAuthSubmit\",\"Retry connection\");\n    for(const id of [\"orbitAdminAuthUsername\",\"orbitAdminAuthPassword\"])if($(id))$(id).disabled=true;\n    const result=$(\"orbitAdminAuthResult\");if(result){result.hidden=false;result.textContent=error?.message||\"Connection failed.\";result.classList.add(\"error\");}\n  }\n  async function initialiseAdminSessionV329(){\n    if(!secret){showAdminAuthGateV329({}, \"Missing ADMIN_SECRET.\");return false;}\n    const status=await adminAuthRequestV329(\"/api/admin/auth/status\");\n    if(status.authenticated&&status.user&&adminSessionTokenV329){setAdminSessionV329(adminSessionTokenV329,status.user);return true;}\n    adminSessionTokenV329=\"\";try{sessionStorage.removeItem(\"orbitAdminSessionV329\");}catch(_){}\n    showAdminAuthGateV329(status,null);return false;\n  }\n  async function submitAdminAuthV329(event){\n    event.preventDefault();\n    if($(\"orbitAdminAuthGate\")?.dataset.connectionRetry===\"true\"){\n      const retry=$(\"orbitAdminAuthSubmit\");setLoading(retry,true);\n      try{if(await initialiseAdminSessionV329())await startAuthenticatedOrbitAdminV329();}catch(error){showAdminConnectionUnavailableV596(error);}finally{setLoading(retry,false);}\n      return;\n    }\n    const setup=$(\"orbitAdminAuthGate\")?.dataset.setupRequired===\"true\";\n    const username=$(\"orbitAdminAuthUsername\")?.value||\"\",password=$(\"orbitAdminAuthPassword\")?.value||\"\";\n    const button=$(\"orbitAdminAuthSubmit\");setLoading(button,true);\n    try{const data=await adminAuthRequestV329(setup?\"/api/admin/auth/setup\":\"/api/admin/auth/login\",{method:\"POST\",body:JSON.stringify({username,password})});setAdminSessionV329(data.token,data.user);startAuthenticatedOrbitAdminV329();}\n    catch(err){const r=$(\"orbitAdminAuthResult\");if(r){r.hidden=false;r.classList.add(\"error\");r.textContent=err.message||err;}}finally{setLoading(button,false);}\n  }\n  async function logoutAdminV329(){try{if(adminSessionTokenV329)await adminAuthRequestV329(\"/api/admin/auth/logout\",{method:\"POST\",body:\"{}\"});}catch(_){}setAdminSessionV329(\"\",null);adminRuntimeStartedV329=false;showAdminAuthGateV329({}, \"Signed out securely.\");}\n  async function loadAdminUsersV329(){\n    text(\"adminAccessCurrentUser\",adminCurrentUserV329?(adminCurrentUserV329.username+\" \u00B7 \"+adminCurrentUserV329.role):\"Not signed in\");\n    const canManage=[\"owner\",\"admin\"].includes(adminCurrentUserV329?.role);if($(\"adminCreateUserSection\"))$(\"adminCreateUserSection\").hidden=!canManage;\n    if(!canManage){$(\"adminUsersTable\").innerHTML=\"<div class='orbit-empty-state'><strong>\"+esc(adminCurrentUserV329?.role||\"Viewer\")+\" access</strong><span>User management requires Owner or Admin access.</span></div>\";return;}\n    const data=await api(\"/api/admin/auth/users\",{cacheMs:0});\n    $(\"adminUsersTable\").innerHTML=table([\"Username\",\"Role\",\"Status\",\"Last login\",\"Actions\"],(data.users||[]).map(user=>{\n      const opts=(data.roles||[]).map(role=>\"<option value='\"+esc(role)+\"'\"+(role===user.role?\" selected\":\"\")+\">\"+esc(role)+\"</option>\").join(\"\");\n      return \"<tr><td><input data-admin-user-name='\"+esc(user.id)+\"' value='\"+esc(user.username)+\"' aria-label='Username'></td><td><select data-admin-user-role='\"+esc(user.id)+\"'>\"+opts+\"</select></td><td>\"+(user.active?\"Active\":\"Disabled\")+\"</td><td>\"+esc(prettyDate(user.lastLoginAt))+\"</td><td><button type='button' class='secondary' data-admin-user-save='\"+esc(user.id)+\"'>Save User</button> <button type='button' class='secondary' data-admin-user-toggle='\"+esc(user.id)+\"' data-active='\"+(user.active?\"false\":\"true\")+\"'>\"+(user.active?\"Disable\":\"Enable\")+\"</button> <button type='button' class='secondary' data-admin-user-reset='\"+esc(user.id)+\"'>Reset Password</button> <button type='button' class='secondary orbit-danger-button' data-admin-user-delete='\"+esc(user.id)+\"' data-admin-user-label='\"+esc(user.username)+\"'>Delete</button></td></tr>\";\n    }),\"No Admin users found.\");\n  }\n  function completeAdminLoadingNoticeV560(){\n    const notice=$(\"adminNotice\");if(!notice)return;\n    if(String(notice.textContent||\"\").trim()===\"Loading Orbit OS...\"){notice.textContent=\"Orbit OS ready\";notice.title=\"Orbit OS ready\";notice.classList.remove(\"error\");}\n  }\n  async function startAuthenticatedOrbitAdminV329(){\n    if(!state.adminAuthenticated||adminRuntimeStartedV329)return;adminRuntimeStartedV329=true;\n    syncServerTimeV74();\n    if(!adminRuntimeTimersStartedV329){adminRuntimeTimersStartedV329=true;setInterval(tickServerTimeV74,1000);setInterval(syncServerTimeV74,300000);setInterval(()=>{if(state.adminAuthenticated&&[\"dashboard\",\"operations\"].includes(state.currentModule)&&!document.hidden)refreshOperationsWorkspaceV296().catch(()=>{});},20000);}\n    window.orbitRestoringAdminState=true;activateModule(orbitStartupModuleV329,savedOrbitSubtab(orbitStartupModuleV329),{historyMode:\"none\"});window.orbitRestoringAdminState=false;\n    restoreAdminModuleAfterRefresh();\n    completeAdminLoadingNoticeV560();\n    loadVendorTaskCountsV461().catch(()=>{});\n    // V553: authenticated startup must not hydrate every unrelated workspace.\n    // Previously Development startup immediately fetched Fulfilment + Shipping\n    // and promoted a transient browser fetch failure into duplicate red global\n    // banners even though the requested Development workspace was healthy.\n    // The active module owns its own loader; full cross-workspace hydration is\n    // reserved for the operator's explicit Refresh action below.\n    // V596: the active module owns its loader; no duplicate Development preload.\n    // V554: Home keeps lightweight operational confidence without restoring the\n    // old broad workspace hydration. These bounded probes check critical service\n    // health only; Fulfilment, Shipping and other heavy workspace data still load\n    // when their workspace is opened.\n    setTimeout(()=>{if(state.adminAuthenticated&&[\"dashboard\",\"operations\"].includes(state.currentModule))runHomeHealthChecksV554({announce:false}).catch(error=>console.warn(\"Home health checks deferred\",error?.message||error));},60);\n    // V644: Directory acceptance runs are server-side and must remain visible across Admin navigation.\n    setTimeout(()=>resumeDirectoryPipelineV580().catch(()=>{}),250);\n    // V596: removed unrelated Loyalty/Engagement/Media/Mission Control idle hydration.\n\n  }\n\n  function monthKeyValue() {\n    return ($(\"fulfilmentMonthKeyInput\")?.value || currentMonthKey()).trim();\n  }\n\n  function syncMonthInputs(value) {\n    const key = value || currentMonthKey();\n    const input = $(\"fulfilmentMonthKeyInput\");\n    if (input && !input.value) input.value = key;\n  }\n\n  function renderFulfilmentCycleOptions(centre) {\n    const hint = $(\"fulfilmentCycleHint\");\n    if (!hint) return;\n    const cycles = Array.isArray(centre?.activeCycleKeys) ? centre.activeCycleKeys : [];\n    hint.textContent = cycles.length\n      ? \"Every parcel that still needs fulfilment stays here. Funded cycle is context only. Open cycles: \" + cycles.join(\", \") + \".\"\n      : \"Every parcel that still needs fulfilment stays here. Funded month is context only.\";\n  }\n\n  function prizeTitleValue() {\n    return ($(\"prizeTitleInput\")?.value || \"Orbit Collectors Club monthly prize\").trim();\n  }\n\n  let homeSummaryReadV542 = 0;\n  async function loadSummary(period,forceFresh=false) {\n    const read = ++homeSummaryReadV542;\n    const selectedPeriod = period || state.cardShowHomePeriodV600 || $(\"dashboardPeriodSelectLegacyV599\")?.value || \"today\";\n    const fresh = forceFresh ? \"&refresh=\" + Date.now() : \"\";\n    const summary = await api(\"/api/admin/summary?period=\" + encodeURIComponent(selectedPeriod) + fresh,{cacheMs:forceFresh?0:5000});\n    if (read !== homeSummaryReadV542) return summary;\n    if (!summary || summary.success === false || !summary.snapshot) throw new Error(\"Home summary was not returned. Previous figures are unchanged.\");\n    state.summary = summary;\n    text(\"metricTotalMembers\", state.summary.totalMembers);\n    text(\"metricActiveMembers\", state.summary.activeMembers);\n    text(\"metricPendingMembers\", state.summary.pendingMembers);\n    text(\"metricPendingPacks\", state.summary.pendingPacks);\n    text(\"metricPrizeClaims\", Number(state.summary.awaitingPrizeClaims || 0) + Number(state.summary.redeemedGoldenTickets || 0));\n    updateSupportBadgeV540(state.summary);\n    renderDashboardSnapshot(state.summary);\n    return state.summary;\n  }\n\n  function dashboardPeriodLabel(period) {\n    return ({ today: \"Today\", yesterday: \"Yesterday\", last_7_days: \"Last 7 days\", last_30_days:\"Last 30 days\", this_month: \"This month\", last_month: \"Last month\", this_year: \"This year\" })[period] || \"Today\";\n  }\n\n  function renderDashboardSnapshot(summary,vendorMetrics=state.vendorHomeMetricsV5991||{}) {\n    const snapshot = summary.snapshot || {};\n    text(\"dashboardPeriodTitle\", dashboardPeriodLabel(summary.period));\n    text(\"snapshotTicketsPurchased\", snapshot.ticketsPurchased ?? 0);\n    text(\"snapshotTicketOrders\", snapshot.ticketOrders ?? 0);\n    text(\"snapshotShows\", snapshot.shows ?? 0);\n    text(\"snapshotTicketRevenue\", \"\u00A3\" + Number(snapshot.ticketRevenue || 0).toFixed(2));\n    text(\"snapshotVendorOrders\", vendorMetrics.vendorOrders == null ? \"\u2014\" : vendorMetrics.vendorOrders);\n    text(\"snapshotTablesSold\", vendorMetrics.tablesSold == null ? \"\u2014\" : vendorMetrics.tablesSold);\n    text(\"snapshotVendorTableRevenue\", vendorMetrics.vendorTableRevenue == null ? \"\u2014\" : \"\u00A3\" + Number(vendorMetrics.vendorTableRevenue || 0).toFixed(2));\n    text(\"snapshotVendorUpcomingShows\", vendorMetrics.upcomingShows == null ? \"\u2014\" : vendorMetrics.upcomingShows);\n    text(\"snapshotNewSignups\", snapshot.newSignups ?? 0);\n    text(\"snapshotUpgradeMembers\", snapshot.upgradeMembers ?? 0);\n    text(\"snapshotUpgradeNowPayments\", snapshot.upgradeNowPayments == null ? \"\u2014\" : snapshot.upgradeNowPayments);\n    text(\"snapshotDirectMembers\", snapshot.newSignups ?? snapshot.directOnePoundMembers ?? 0);\n    text(\"snapshotRenewals\", snapshot.successfulRenewals ?? 0);\n    text(\"snapshotLabelsGenerated\", snapshot.labelsGenerated ?? 0);\n    text(\"snapshotParcelsDispatched\", snapshot.parcelsDispatched ?? 0);\n\n  }\n\n  function taskActionLabel(module, text) {\n    const value=String(text||'').toLowerCase();\n    if(module==='support'||/message|reply/.test(value)) return 'Reply';\n    if(/address/.test(value)) return 'Fix address';\n    if(module==='shipping'||/parcel|label/.test(value)) return 'Review parcels';\n    if(module==='automation'||/draw|winner/.test(value)) return 'Review winner';\n    if(module==='comms'||/email/.test(value)) return 'Review email';\n    return 'Review';\n  }\n\n  function renderDashboardPriorities(summary) {\n    const target = $(\"dashboardPriorityList\");\n    if (!target) return;\n    const items = [];\n    if (Number(summary.unansweredTickets || 0) > 0) items.push({ title: summary.unansweredTickets + \" customer message\" + (summary.unansweredTickets === 1 ? \"\" : \"s\") + \" awaiting reply\", copy: \"Customer contact is the first priority.\", module: \"support\" });\n    if (Number(summary.pendingPacks || 0) > 0) items.push({ title: summary.pendingPacks + \" parcel\" + (summary.pendingPacks === 1 ? \"\" : \"s\") + \" awaiting shipping action\", copy: \"Review labels, packing and dispatch status.\", module: \"shipping\" });\n    if (Number(summary.redeemedGoldenTickets || 0) > 0) items.push({ title: summary.redeemedGoldenTickets + \" Golden Ticket prize\" + (summary.redeemedGoldenTickets === 1 ? \"\" : \"s\") + \" awaiting action\", copy: \"Open Special Shipments to prepare dispatch.\", module: \"shipping\", tab: \"special\" });\n    if (Number(summary.completedDrawsAwaitingDispatch || 0) > 0) items.push({ title: summary.completedDrawsAwaitingDispatch + \" draw prize\" + (summary.completedDrawsAwaitingDispatch === 1 ? \"\" : \"s\") + \" awaiting fulfilment\", copy: \"Open Prize Fulfilment to print the label and dispatch the winner parcel.\", module: \"shipping\", tab: \"prizes\" });\n    if (Number(summary.failedEmails || 0) > 0) items.push({ title: summary.failedEmails + \" email failure\" + (summary.failedEmails === 1 ? \"\" : \"s\") + \" requires review\", copy: \"Open Communications to inspect the provider error.\", module: \"comms\" });\n    if (Number(summary.blockedAddressPacks || 0) > 0) items.unshift({ title: summary.blockedAddressPacks + \" shipment\" + (summary.blockedAddressPacks === 1 ? \"\" : \"s\") + \" blocked by address details\", copy: \"Sync Recharge, sync Shopify or edit the address manually.\", module: \"shipping\", tab: \"attention\" });\n    if (!items.length) items.push({ title: \"No urgent operator actions\", copy: \"Support, prizes, parcels and communications are clear.\", module: \"dashboard\" });\n    target.innerHTML = items.map(function(item){ const action=taskActionLabel(item.module,item.title+\" \"+item.copy); return \"<button type='button' class='orbit-priority-item' data-alert-module='\" + esc(item.module) + \"'\" + (item.tab ? \" data-module-tab='\" + esc(item.tab) + \"'\" : \"\") + \"><strong>\" + esc(item.title) + \"</strong><span>\" + esc(item.copy) + \"</span><b>\"+esc(action)+\"</b></button>\"; }).join(\"\");\n  }\n\n  function renderDashboardAlerts(alerts) {\n    const target = $(\"dashboardAlerts\");\n    if (!target) return;\n    target.innerHTML = alerts.map(function(alert) {\n      return \"<button type='button' class='orbit-dashboard-alert \" + esc(alert.priority || \"normal\") + \"' data-alert-module='\" + esc(alert.targetModule || \"dashboard\") + \"'\" + (alert.moduleTab ? \" data-module-tab='\" + esc(alert.moduleTab) + \"'\" : \"\") + \">\" +\n        \"<span class='orbit-alert-count'>\" + esc(alert.count ?? 0) + \"</span><span><strong>\" + esc(alert.title || \"Alert\") + \"</strong><small>\" + esc(alert.message || \"\") + \"</small></span><b>Open</b></button>\";\n    }).join(\"\");\n  }\n\n  let fulfilmentReadV542=0;\n  async function loadFulfilment(button,forceFresh=false) {\n    const read=++fulfilmentReadV542,originalText=button?button.textContent:\"\",status=$(\"fulfilmentLoadStatusV618\");\n    if(button){setLoading(button,true);button.textContent=\"Refreshing...\";}\n    if(status){status.hidden=false;status.setAttribute(\"role\",\"status\");status.textContent=\"Loading monthly parcels\u2026\";}\n    const suffix=forceFresh?\"?refresh=\"+Date.now():\"\",options={cacheMs:forceFresh?0:undefined,timeoutMs:20000};\n    // Independent reads: a slow prize/loyalty request must not hold monthly parcels hostage.\n    const specialRead=api(\"/api/admin/shipping/special-shipments\"+suffix,options).catch(err=>({success:false,shipments:[],error:String(err.message||err)}));\n    try {\n      const centre=await api(\"/api/admin/fulfilment/centre\"+suffix,options);\n      if(read!==fulfilmentReadV542)return;\n      if(centre?.success===false||!centre)throw new Error(\"Fulfilment could not refresh. Previous figures are unchanged.\");\n      state.fulfilmentCentre=centre;state.fulfilment=centre;\n      renderFulfilmentCycleOptions(centre);renderQueueSummary(centre.summary||{});renderFulfilmentCentre(centre);\n      renderFulfilmentTable(centre.packs||[]);renderFulfilmentHistory(centre.historyPacks||[],[]);\n      renderFulfilmentLabelsV516(centre.packs||[],centre.historyPacks||[],[]);\n      if(status){status.textContent=\"Monthly parcels loaded. Checking prizes and loyalty orders\u2026\";}\n      const special=await specialRead;\n      if(read!==fulfilmentReadV542)return;\n      state.specialShipments=special;\n      renderFulfilmentHistory(centre.historyPacks||[],special.shipments||[]);renderSpecialShipments(special.shipments||[]);\n      renderFulfilmentLabelsV516(centre.packs||[],centre.historyPacks||[],special.shipments||[]);\n      if($(\"shippingSpecialCount\"))$(\"shippingSpecialCount\").textContent=special.success===false?\"\u2014\":String((special.shipments||[]).length);\n      if(status){status.hidden=special.success!==false;status.textContent=special.success===false?\"Monthly parcels are loaded. Prizes and loyalty orders could not load; use Refresh to retry.\":\"Parcels loaded.\";}\n      if(button)setNotice(\"Fulfilment refreshed \u2014 all outstanding monthly parcels are shown together.\");\n    } catch(error) {\n      if(read===fulfilmentReadV542&&status){status.hidden=false;status.setAttribute(\"role\",\"alert\");status.innerHTML=\"Monthly parcels could not load. \"+esc(error.message||error)+\" <button type='button' id='retryFulfilmentV618' class='secondary'>Retry</button>\";$(\"retryFulfilmentV618\")?.addEventListener(\"click\",()=>loadFulfilment(null,true).catch(()=>{}));}\n      throw error;\n    } finally {if(button){setLoading(button,false);button.textContent=originalText||\"Refresh Fulfilment\";}}\n  }\n\n  async function reconcileDeliveryStatuses(button) {\n    const originalText = button ? button.textContent : \"\";\n    if (button) { setLoading(button, true); button.textContent = \"Checking carriers...\"; }\n    const resultTarget = $(\"deliveryReconciliationResult\");\n    try {\n      const result = await api(\"/api/admin/fulfilment/reconcile-deliveries\", { method:\"POST\", body:JSON.stringify({ limit:250 }), timeoutMs:120000, cacheMs:0 });\n      if (resultTarget) resultTarget.textContent = \"Checked \" + Number(result.checkedCount || 0) + \" \u00B7 Updated \" + Number(result.deliveredCount || 0) + \" delivered\";\n      await loadFulfilment();\n      const delivered=Number(result.deliveredCount||0), checked=Number(result.checkedCount||0), failed=Number(result.failedCount||0), skipped=Number(result.skippedCount||0);\n      const detail=(failed||skipped)?(\" \" + failed + \" lookup failure(s), \" + skipped + \" skipped.\"):\"\";\n      setNotice(\"Delivery status check complete. Checked \" + checked + \" tracked parcel(s); \" + delivered + \" moved to Delivered.\" + detail, Boolean(failed));\n      return result;\n    } finally {\n      if (button) { setLoading(button, false); button.textContent = originalText || \"Update Delivery Status\"; }\n    }\n  }\n\n  async function reloadSpecialShipments() {\n    try {\n      state.specialShipments = await api(\"/api/admin/shipping/special-shipments\");\n      renderSpecialShipments(state.specialShipments?.shipments || []);\n      renderFulfilmentLabelsV516(state.fulfilment?.packs || [], state.fulfilmentCentre?.historyPacks || [], state.specialShipments?.shipments || []);\n      if ($(\"shippingSpecialCount\")) $(\"shippingSpecialCount\").textContent = String((state.specialShipments?.shipments || []).length);\n    } catch (err) {\n      setNotice(\"Could not refresh Special Shipments: \" + (err.message || err), true);\n    }\n  }\n\n  async function loadShippingConfig() {\n    state.shippingConfig = await api(\"/api/admin/shipping/config\");\n    renderShippingConfig(state.shippingConfig);\n  }\n\n  let drawReadPromiseV540=null;\n  async function loadDraws() {\n    if(drawReadPromiseV540)return drawReadPromiseV540;\n    drawReadPromiseV540=(async()=>{state.draws=await api(\"/api/admin/prize-draws?limit=100\");renderDrawsTable(state.draws.draws||[]);await loadDrawEligibleMembers();})();\n    try{return await drawReadPromiseV540;}finally{drawReadPromiseV540=null;}\n  }\n  function renderDrawPoolCountV540(){\n    const node=$(\"drawEligibleCount\");if(!node)return;\n    node.textContent=state.drawPoolLoadedV540===true?String((state.drawEligibleMembers||[]).filter(m=>m.drawExcluded!==true).length):\"\u2014\";\n    node.title=state.drawPoolLoadedV540===true?\"Eligible entries in the loaded active-member pool, excluding members marked Excluded\":\"Eligible member pool has not loaded successfully\";\n  }\n\n\n  async function loadDrawEligibleMembers() {\n    try {\n      const data = await api(\"/api/admin/members/search?status=active&limit=500\");\n      state.drawEligibleMembers = data.members || data.results || [];\n      state.drawPoolLoadedV540=true;\n      renderDrawEligibleMembers();\n    } catch (err) {\n      state.drawPoolLoadedV540=false;renderDrawPoolCountV540();\n      const target = $(\"drawEligibleMembersTable\");\n      if (target) target.textContent = \"Could not load eligible members: \" + (err.message || err);\n    }\n  }\n\n  function renderDrawEligibleMembers() {\n    renderDrawPoolCountV540();\n    const target = $(\"drawEligibleMembersTable\");\n    if (!target) return;\n    const query = String($(\"drawEligibleSearch\")?.value || \"\").trim().toLowerCase();\n    const rows = (state.drawEligibleMembers || []).filter(function(m){\n      const hay = [m.memberNumber,m.member_number,m.name,m.fullName,m.email].join(\" \").toLowerCase();\n      return !query || hay.includes(query);\n    });\n    target.innerHTML = table([\"Member\",\"Email\",\"Draw status\",\"Member Since\",\"Action\"], rows.map(function(m){\n      const excluded=m.drawExcluded===true;\n      const lookup=m.memberNumber||m.member_number||m.subscriptionId||m.email||\"\";\n      return \"<tr class='\"+(excluded?\"orbit-draw-member-excluded\":\"orbit-draw-member-eligible\")+\"'><td><strong>\"+esc(m.memberNumber||m.member_number||\"\u2014\")+\"</strong><br><small>\"+esc(m.name||m.fullName||\"Member\")+\"</small></td><td>\"+esc(m.email||\"\u2014\")+\"</td><td><span class='orbit-pill \"+(excluded?\"warning\":\"success\")+\"'>\"+(excluded?\"EXCLUDED\":\"Eligible\")+\"</span>\"+(excluded?\"<small class='orbit-draw-excluded-note'>Will not be entered in monthly draws</small>\":\"\")+\"</td><td>\"+esc(prettyShortDate(m.createdAt||m.memberSince||m.signupDate))+\"</td><td><button type='button' class='\"+(excluded?\"secondary\":\"danger\")+\"' data-draw-exclusion='\"+esc(lookup)+\"' data-excluded='\"+(excluded?\"false\":\"true\")+\"'>\"+(excluded?\"Include in draws\":\"Exclude from draws\")+\"</button></td></tr>\";\n    }), \"No active members found.\");\n  }\n\n  function humanDrawStatus(value) {\n    return humanStatus(value);\n  }\n\n  function ensureGoldenTicketManager() {\n    const table = $(\"goldenContentTableRuntime\") || $(\"goldenContentTable\") || $(\"goldenTable\");\n    return table ? (table.closest(\"article\") || table.parentElement || table) : null;\n  }\n\n  async function loadGolden() {\n    ensureGoldenTicketManager();\n    const target = $(\"goldenContentTableRuntime\") || $(\"goldenContentTable\") || $(\"goldenTable\");\n    if (target) target.innerHTML = \"<div class='orbit-empty-state'><strong>Loading Golden Tickets\u2026</strong><span>Reading active, claimed and completed tickets.</span></div>\";\n    try {\n      state.golden = await Promise.race([\n        api(\"/api/admin/golden-tickets?limit=150\"),\n        new Promise((_, reject) => setTimeout(() => reject(new Error(\"Golden Ticket Manager timed out\")), 12000))\n      ]);\n      renderGoldenTable(state.golden.tickets || []);\n      return state.golden;\n    } catch (err) {\n      state.golden = { tickets: [], error: err.message || String(err) };\n      if (target) target.innerHTML = \"<div class='orbit-empty-state orbit-error-state'><strong>Golden Ticket Manager could not load</strong><span>\" + esc(state.golden.error) + \"</span><button type='button' class='secondary' data-refresh='golden'>Try again</button></div>\";\n      throw err;\n    }\n  }\n\n  async function loadEvents() {\n    state.events = await api(\"/api/admin/workflows/events?limit=100\");\n    renderEventsTable(state.events.events || []);\n  }\n\n  async function loadScheduler() {\n    const badge=$ (\"automationStateBadge\"); if(badge){ text(\"automationStateLabel\",\"Checking\"); }\n    try { state.scheduler = await Promise.race([api(\"/api/admin/scheduler/status\"),new Promise((_,reject)=>setTimeout(()=>reject(new Error(\"Scheduler status timed out\")),8000))]); } catch (err) {\n      state.scheduler = { automationEnabled:false, runningInProcess:false, unavailable:true, recentRuns:[], config:{} };\n      text(\"automationStateLabel\", \"Not checked\"); text(\"automationStateReason\", err.message || \"Automatic jobs could not be checked. Open Connected services or Developer & testing for details.\");\n      const badge=$(\"automationStateBadge\"); if(badge){badge.classList.remove(\"enabled\",\"disabled\");badge.classList.add(\"warning\");}\n      return state.scheduler;\n    }\n    if(!state.scheduler || state.scheduler.success===false){\n      state.scheduler={automationEnabled:false,runningInProcess:false,unavailable:true,recentRuns:[],config:{},error:state.scheduler?.error||\"Scheduler unavailable\"};\n      text(\"automationStateLabel\",\"Not checked\"); text(\"automationStateReason\", state.scheduler.error || \"Automatic jobs have not been checked yet.\");\n      const unavailableBadge=$(\"automationStateBadge\"); if(unavailableBadge){unavailableBadge.classList.remove(\"enabled\",\"disabled\");unavailableBadge.classList.add(\"warning\");}\n      return state.scheduler;\n    }\n    renderSystemHealth(state.scheduler.systemHealth || {});\n    const drawAutomatic = Boolean(state.scheduler.automationEnabled && state.scheduler.midMonthDrawEnabled);\n    const drawScheduleState=state.scheduler.drawSchedule||{};\n    const drawDue=Boolean(drawScheduleState.due&&!drawScheduleState.completed);\n    const drawNextLabel=drawDue?(\"Due now \u00B7 \"+prettyDate(drawScheduleState.scheduledAt||state.scheduler.nextMidMonthDrawAt)):prettyDate(state.scheduler.nextMidMonthDrawAt);\n    healthCard(\"healthWebhooks\", \"Monthly Draw\", drawAutomatic ? (drawDue?\"warning\":\"enabled\") : \"disabled\", drawAutomatic ? (drawDue?\"Automatic \u00B7 draw is due now and the exact scheduler is retrying safely\":\"Automatic \u00B7 Next draw \" + drawNextLabel) : \"Automatic draw is disabled \u2014 open Draw Automation\");\n    renderIntegrationSettings(state.health || {});\n    renderSchedulerStatus(state.scheduler);\n    text(\"automationStateReason\", state.scheduler.automationEnabled ? (state.scheduler.runningInProcess ? \"A scheduled job is running now.\" : \"Scheduler connected. Due jobs are checked automatically.\") : \"Scheduler connected, but global automation is disabled in the backend environment.\");\n    renderScheduledRunsTable(state.scheduler.recentRuns || []);\n    renderDrawAutomationV83(state.scheduler);\n    const cfg=state.scheduler.config||{};\n    if($(\"drawAutomationEnabled\")) $(\"drawAutomationEnabled\").checked=Boolean(state.scheduler.automationEnabled);\n    if($(\"drawMonthlyEnabled\")) $(\"drawMonthlyEnabled\").checked=Boolean(state.scheduler.midMonthDrawEnabled);\n    if($(\"drawMonthlyHour\")) $(\"drawMonthlyHour\").value=String(cfg.midMonthDrawHourLocal??cfg.midMonthDrawHourUtc??14);\n    if($(\"drawMonthlyPrizeTitle\")) $(\"drawMonthlyPrizeTitle\").value=cfg.monthlyPrizeTitle||\"Orbit Collectors Club monthly prize\";\n    if($(\"drawSettingsSummary\")){ const c=state.scheduler.config||{}; const globalOn=state.scheduler.automationEnabled!==false; const drawOn=Boolean(state.scheduler.midMonthDrawEnabled); const reason=!globalOn?\"Global automation is disabled\":!drawOn?\"The monthly draw job is disabled\":drawDue?\"The current month's draw is due and the exact scheduler is retrying until it completes\":\"The automatic draw is configured\"; $(\"drawSettingsSummary\").innerHTML=\"<strong>Automatic draw: \"+(globalOn&&drawOn?(drawDue?\"Due now\":\"Enabled\"):\"Needs setup\")+\"</strong><span>\"+esc(reason)+\"</span><span>Scheduled day: \"+(c.midMonthDrawDay||15)+\" at \"+String(c.midMonthDrawHourLocal??c.midMonthDrawHourUtc??14).padStart(2,\"0\")+\":00 UK time</span><span>\"+(drawDue?\"Due run: \":\"Next run: \")+esc(drawNextLabel)+\"</span>\"; const guidance=$(\"drawSettingsGuidance\"); if(guidance) guidance.querySelector(\"span\").textContent=globalOn&&!drawOn?\"Open Draw Automation and enable the monthly draw job, then save the schedule.\":!globalOn?\"Open Draw Automation and enable global automation first, then enable the monthly draw job.\":drawDue?\"Do not run a second draw manually. The exact scheduler is safely retrying the same monthly draw commitment.\":\"The draw is enabled. Use Draw Automation to change the day, time or manual controls.\"; }\n    const scheduleSummary=$(\"v77DrawScheduleSummary\");\n    if(scheduleSummary){\n      const c=state.scheduler.config||{};\n      const enabled=Boolean(state.scheduler.automationEnabled && state.scheduler.midMonthDrawEnabled);\n      scheduleSummary.classList.toggle(\"success\", enabled);\n      scheduleSummary.classList.toggle(\"warning\", !enabled);\n      scheduleSummary.innerHTML=\"<strong>\"+(enabled?(drawDue?\"Automatic draw due now\":\"Automatic draw enabled\"):\"Automatic draw needs setup\")+\"</strong><span>Runs on day \"+esc(c.midMonthDrawDay||15)+\" at \"+esc(String(c.midMonthDrawHourLocal??c.midMonthDrawHourUtc??14).padStart(2,\"0\"))+\":00 UK time \u00B7 \"+(drawDue?\"Due run: \":\"Next run: \")+esc(drawNextLabel)+\"</span>\";\n    }\n  }\n\n  function renderDrawAutomationV83(status){\n    const summary=$(\"drawAutomationSummaryV83\"), runsTarget=$(\"drawAutomationRunsV83\");\n    if(!summary&&!runsTarget)return;\n    const config=status?.config||{}, recent=(status?.recentRuns||[]).filter(function(run){return /draw|prize/i.test(String(run.workflow_type||run.type||''));});\n    const drawState=status?.drawSchedule||{},drawDue=Boolean(drawState.due&&!drawState.completed),nextLabel=drawDue?(\"Due now \u00B7 \"+prettyDate(drawState.scheduledAt||status?.nextMidMonthDrawAt)):prettyDate(status?.nextMidMonthDrawAt);\n    const lastSuccess=recent.find(run=>/success|completed/i.test(String(run.status||''))), lastFailure=recent.find(run=>/fail|error/i.test(String(run.status||'')));\n    if(summary) summary.innerHTML=[\n      [\"Automation\",status?.automationEnabled?\"Enabled\":\"Paused\"],\n      [\"Monthly draw\",status?.midMonthDrawEnabled?\"Enabled\":\"Disabled\"],\n      [drawDue?\"Current draw\":\"Next scheduled draw\",nextLabel],\n      [\"Schedule\",\"Day \"+(config.midMonthDrawDay||15)+\" at \"+String(config.midMonthDrawHourLocal??config.midMonthDrawHourUtc??14).padStart(2,\"0\")+\":00 UK time\"],\n      [\"Last successful draw\",lastSuccess?prettyDate(lastSuccess.finished_at||lastSuccess.created_at):\"None recorded\"],\n      [\"Last failed draw\",lastFailure?(lastFailure.error||lastFailure.summary||\"Failed\"):\"None recorded\"]\n    ].map(row=>\"<div><span>\"+esc(row[0])+\"</span><strong>\"+esc(row[1]||\"\u2014\")+\"</strong></div>\").join(\"\");\n    if(runsTarget) runsTarget.innerHTML=table([\"Draw run\",\"Status\",\"Started\",\"Finished\",\"Summary\",\"Actions\"],recent.slice(0,20).map(function(run){\n      const failed=/fail|error/i.test(String(run.status||\"\")), runKey=String(run.run_key||\"\");\n      const action=failed&&runKey?\"<button type='button' class='secondary' data-delete-failed-draw-run='\"+esc(runKey)+\"'>Delete failed run</button>\":\"<span class='orbit-muted'>Protected</span>\";\n      return \"<tr><td><strong>\"+esc(run.workflow_type||\"Monthly draw\")+\"</strong><br><small>\"+esc(runKey||run.month_key||\"\")+\"</small></td><td><span class='orbit-pill'>\"+esc(humanDrawStatus(run.status||\"unknown\"))+\"</span></td><td>\"+esc(prettyShortDate(run.created_at||run.started_at))+\"</td><td>\"+esc(prettyShortDate(run.finished_at))+\"</td><td>\"+esc(run.summary||run.error||\"\u2014\")+\"</td><td>\"+action+\"</td></tr>\";\n    }),\"No monthly draw automation runs have been recorded yet.\");\n  }\n\n  document.addEventListener(\"click\", async function(event){\n    const button=event.target.closest(\"[data-delete-failed-draw-run]\");\n    if(!button)return;\n    const runKey=String(button.dataset.deleteFailedDrawRun||\"\").trim();\n    if(!runKey)return;\n    if(!window.confirm(\"Delete this failed Prize Draw run from automation history?\\n\\nThis only removes the failed scheduler attempt. It does not delete or change any winner, entrant commitment or fairness proof.\"))return;\n    button.disabled=true;\n    try{\n      await api(\"/api/admin/scheduler/draw-runs/\"+encodeURIComponent(runKey),{method:\"DELETE\"});\n      setNotice(\"Failed Prize Draw run deleted. Any frozen fairness commitment and winner evidence were preserved.\");\n      await loadScheduler();\n    }catch(err){\n      setNotice(\"Failed Prize Draw run could not be deleted: \"+(err.message||err),true);\n      button.disabled=false;\n    }\n  });\n\n  function ensureAutomationResolved(){\n    const label=$(\"automationStateLabel\");\n    if(label && /checking/i.test(label.textContent||\"\")){\n      label.textContent=\"Not checked\"; text(\"automationStateReason\",\"Automatic jobs have not been checked. Open Connected services or Developer & testing for details.\");\n      const badge=$(\"automationStateBadge\"); if(badge){badge.classList.remove(\"enabled\",\"disabled\");badge.classList.add(\"warning\");}\n    }\n  }\n  setInterval(ensureAutomationResolved,3000);\n\n  // V171: no System health card may remain as a red-looking \"Checking\" card forever.\n  function resolveStaleHealthCardsV171(){\n    document.querySelectorAll('.orbit-health-card').forEach(function(card){\n      const status=card.querySelector('strong');\n      if(!status || !/^checking$/i.test(String(status.textContent||'').trim())) return;\n      const label=card.querySelector('span')?.textContent||'Service';\n      healthCard(card.id,label,'unknown','The live check did not return within 45 seconds. Use Diagnose now, then Check all now to retry.');\n    });\n  }\n  window.setTimeout(resolveStaleHealthCardsV171,45000);\n\n  async function loadBackendHealth() {\n    const res = await fetch(API_BASE + \"/health\");\n    const data = await res.json();\n    if (!res.ok || data.success === false) throw new Error(data.error || \"Backend health check failed.\");\n    state.health = data;\n    text(\"adminVersionLabel\", \"Backend \" + (data.version || \"\u2014\"));\n    const runtimeBackend=document.getElementById(\"orbitAdminRuntimeBackend\"); if(runtimeBackend) runtimeBackend.value=String(data.version||\"\u2014\");\n    healthCard(\"healthBackend\", \"Backend\", data.status || \"healthy\", \"Version \" + (data.version || \"\u2014\"));\n    return data;\n  }\n\n  function renderTicketDiscountCodes(data) {\n    const target=$(\"ticketDiscountCodeList\"), result=$(\"ticketDiscountCodeResult\");\n    if(!target)return;\n    const items=Array.isArray(data?.items)?data.items:[];\n    if(result)result.textContent=items.length?items.length+\" discount code\"+(items.length===1?\"\":\"s\")+\" configured.\":\"No ticket discount codes configured.\";\n    if(!items.length){target.innerHTML=\"<div class='orbit-empty'>Create your first Ticket Centre promotion above.</div>\";return;}\n    target.innerHTML=\"<table><thead><tr><th>Code</th><th>Discount</th><th>Status</th><th>Successful uses</th><th>Expiry</th><th>Source</th><th>Action</th></tr></thead><tbody>\"+\n      items.map(function(item){\n        const expiry=item.expiresAt?prettyShortDate(item.expiresAt):\"No expiry\";\n        const status=item.enabled?\"Active\":\"Disabled\";\n        const toggleLabel=item.enabled?\"Disable\":\"Reactivate\";\n        return \"<tr><td><strong>\"+esc(item.code)+\"</strong></td><td>\"+esc(item.percentage)+\"%</td><td><span class='orbit-pill \"+(item.enabled?\"success\":\"other\")+\"'>\"+status+\"</span></td><td><strong>\"+esc(item.successfulUses||0)+\"</strong></td><td>\"+esc(expiry)+\"</td><td>\"+esc(item.source===\"legacy_environment\"?\"Legacy environment\":item.source||\"Managed\")+\"</td><td><div class='orbit-action-row'><button type='button' class='\"+(item.enabled?\"secondary\":\"primary\")+\"' data-toggle-ticket-discount='\"+esc(item.code)+\"' data-enabled='\"+(item.enabled?\"false\":\"true\")+\"'>\"+toggleLabel+\"</button><button type='button' class='danger' data-delete-ticket-discount='\"+esc(item.code)+\"'>Delete</button></div></td></tr>\";\n      }).join(\"\")+\"</tbody></table>\";\n  }\n\n  async function loadTicketDiscountCodes() {\n    const data=await api(\"/api/admin/ticket-discount-codes\",{cacheMs:0});\n    state.ticketDiscountCodes=data;\n    renderTicketDiscountCodes(data);\n    return data;\n  }\n\n  async function saveTicketDiscountCode(button) {\n    const code=String($(\"ticketDiscountCodeInput\")?.value||\"\").trim().toUpperCase().replace(/\\s+/g,\"\");\n    const percentage=Number($(\"ticketDiscountPercentInput\")?.value||0);\n    const expiresAt=String($(\"ticketDiscountExpiryInput\")?.value||\"\").trim();\n    if(!code)throw new Error(\"Enter a discount code.\");\n    setLoading(button,true);\n    try{\n      await api(\"/api/admin/ticket-discount-codes\",{method:\"POST\",body:JSON.stringify({code,percentage,expiresAt:expiresAt?expiresAt+\"T23:59:59.999Z\":null,enabled:true}),cacheMs:0});\n      if($(\"ticketDiscountCodeInput\"))$(\"ticketDiscountCodeInput\").value=\"\";\n      await loadTicketDiscountCodes();\n      setNotice(\"Ticket discount code saved: \"+code);\n    }finally{setLoading(button,false);}\n  }\n\n  function renderTicketSalesSummaryV418(summary){\n    const target=$(\"ticketSalesSummary\");if(!target)return;\n    const periodLabel={ \"7d\":\"Last 7 days\",\"30d\":\"Last 30 days\",\"90d\":\"Last 90 days\",\"365d\":\"Last 12 months\",\"all\":\"All time\" }[summary?.period]||\"Selected period\";\n    target.innerHTML=\"<div class='orbit-ticket-headline-card'><span>Tickets sold / issued</span><strong>\"+Number(summary?.totalTickets||0).toLocaleString(\"en-GB\")+\"</strong><small>Unique active admission tickets tied to the filtered ticket orders \u00B7 \"+esc(periodLabel)+(Number(summary?.duplicateTicketRowsExcluded||0)?\" \u00B7 \"+Number(summary.duplicateTicketRowsExcluded)+\" duplicate ticket row(s) excluded\":\"\")+\"</small></div>\"+\n      \"<div class='orbit-ticket-headline-card'><span>Ticket orders</span><strong>\"+Number(summary?.orders||0).toLocaleString(\"en-GB\")+\"</strong><small>Completed / issued ticket orders \u00B7 \"+esc(periodLabel)+(Number(summary?.duplicateCheckoutRowsExcluded||0)?\" \u00B7 \"+Number(summary.duplicateCheckoutRowsExcluded)+\" duplicate lifecycle row(s) excluded\":\"\")+\"</small></div>\"+\n      \"<div class='orbit-ticket-headline-card'><span>Add-ons sold</span><strong>\"+Number(summary?.addOns||0).toLocaleString(\"en-GB\")+\"</strong><small>Ticket-order add-ons \u00B7 \"+esc(periodLabel)+\"</small></div>\";\n  }\n  async function loadTicketSalesSummaryV418(){\n    const params=new URLSearchParams({period:$(\"ticketAdminPeriod\")?.value||\"today\",search:$(\"ticketAdminSearch\")?.value||\"\",eventName:$(\"ticketAdminEventFilter\")?.value||\"all\",status:$(\"ticketAdminStatusFilter\")?.value||\"all\"});\n    const data=await api(\"/api/admin/ticket-checkouts/summary?\"+params.toString(),{cacheMs:0});renderTicketSalesSummaryV418(data.summary||data);return data;\n  }\n  let ticketAdminPageV457=1,ticketAdminSearchTimerV457=null;\n  let ticketAdminSortV497={key:\"created\",direction:\"desc\"};\n  function ticketSortValueV497(row,key){\n    if(key===\"created\")return row.createdAt?new Date(row.createdAt).getTime():0;\n    if(key===\"status\")return String(checkoutStatusLabel(row)||row.status||\"\").toLowerCase();\n    if(key===\"event\")return String((row.eventName||\"\")+\" \"+(row.eventDate||\"\")).toLowerCase();\n    if(key===\"order\")return String(row.shopifyOrderName||row.shopifyOrderId||\"\").toLowerCase();\n    if(key===\"email\")return String(row.customerEmail||row.email||\"\").toLowerCase();\n    if(key===\"tickets\")return Number(row.ticketCount||0);\n    return \"\";\n  }\n  function ticketSortRowsV497(rows){\n    const list=[...(rows||[])],{key,direction}=ticketAdminSortV497;\n    list.sort((a,b)=>{const av=ticketSortValueV497(a,key),bv=ticketSortValueV497(b,key),cmp=typeof av===\"number\"&&typeof bv===\"number\"?av-bv:String(av).localeCompare(String(bv),\"en-GB\",{numeric:true,sensitivity:\"base\"});return direction===\"desc\"?-cmp:cmp;});\n    return list;\n  }\n  function ticketSortButtonV497(key,label){const active=ticketAdminSortV497.key===key,arrow=active?(ticketAdminSortV497.direction===\"asc\"?\" \u2191\":\" \u2193\"):\"\";return \"<button type='button' class='orbit-admin-table-sort-v497\"+(active?\" active\":\"\")+\"' data-ticket-sort-v497='\"+key+\"' aria-label='Sort tickets by \"+label+\"' aria-sort='\"+(active?(ticketAdminSortV497.direction===\"asc\"?\"ascending\":\"descending\"):\"none\")+\"'>\"+label+arrow+\"</button>\";}\n  function csvCellV48304(value){\n    const text=String(value==null?\"\":value);\n    return /[\",\\r\\n]/.test(text) ? '\"' + text.replace(/\"/g,'\"\"') + '\"' : text;\n  }\n  async function exportTicketPurchasersV48304(button){\n    if(button)setLoading(button,true);\n    try{\n      const data=await api(\"/api/admin/ticket-checkouts/purchasers-export\",{cacheMs:0,timeoutMs:30000});\n      const rows=Array.isArray(data.rows)?data.rows:[];\n      const csv=[\"First Name,Last Name,Email address\"].concat(rows.map(row=>[\n        csvCellV48304(row.firstName),\n        csvCellV48304(row.lastName),\n        csvCellV48304(row.email)\n      ].join(\",\"))).join(\"\\r\\n\");\n      const blob=new Blob([\"\\ufeff\"+csv],{type:\"text/csv;charset=utf-8\"});\n      const url=URL.createObjectURL(blob),a=document.createElement(\"a\");\n      const day=new Date().toISOString().slice(0,10);\n      a.href=url;a.download=\"orbit-ticket-purchasers-\"+day+\".csv\";\n      document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),1000);\n      setNotice(\"Ticket purchaser CSV exported: \"+rows.length+\" unique email\"+(rows.length===1?\"\":\"s\")+\".\");\n    }finally{if(button)setLoading(button,false);}\n  }\n\n  async function reconcileShopifyTicketOrdersV530(button){\n    const status=$(\"reconcileShopifyTicketOrdersStatusV530\");if(button)setLoading(button,true);if(status)status.textContent=\"Checking recent paid Shopify ticket orders\u2026\";\n    try{const result=await api(\"/api/admin/ticket-checkouts/reconcile-recent\",{method:\"POST\",body:JSON.stringify({limit:25,lookbackMinutes:10080}),cacheMs:0,timeoutMs:120000});if(status)status.textContent=\"Checked \"+Number(result.scanned||result.checked||0)+\" recent paid order(s); recovered \"+Number(result.fulfilled||0)+\".\";await loadTicketOrderPageV457(1);setNotice(\"Shopify ticket order reconciliation completed.\");return result;}catch(err){if(status)status.textContent=\"Refresh failed: \"+(err.message||err);throw err;}finally{if(button)setLoading(button,false);}\n  }\n\n  async function loadTicketOrderPageV457(page=1){ticketAdminPageV457=Math.max(1,Number(page)||1);const params=new URLSearchParams({limit:\"50\",page:String(ticketAdminPageV457),period:$(\"ticketAdminPeriod\")?.value||\"today\",search:$(\"ticketAdminSearch\")?.value||\"\",eventName:$(\"ticketAdminEventFilter\")?.value||\"all\",status:$(\"ticketAdminStatusFilter\")?.value||\"all\"});const recent=await api(\"/api/admin/ticket-checkouts/recent?\"+params.toString(),{cacheMs:0});const summary={...(recent.summary||{}),rawCheckoutRows:recent.rawCheckoutRows,businessCandidateRows:recent.businessCandidateRows,excludedNonBusinessRows:recent.excludedNonBusinessRows,excludedSources:recent.excludedSources};state.ticketCheckouts=recent;state.ticketSalesSummary=summary;renderShopifyCentre(state.shopify||{},recent);renderTicketSalesSummaryV418(summary);return recent;}\n\n  async function loadShopify() {\n    const [statusResult,recentResult]=await Promise.allSettled([\n      api(\"/api/admin/shopify/status\",{cacheMs:15000}),\n      api(\"/api/admin/ticket-checkouts/recent?limit=50&page=1&period=\"+encodeURIComponent($(\"ticketAdminPeriod\")?.value||\"today\"),{cacheMs:0})\n    ]);\n    if(statusResult.status!==\"fulfilled\")throw statusResult.reason;\n    const status=statusResult.value;\n    const recent=recentResult.status===\"fulfilled\"\n      ? recentResult.value\n      : { success:false,error:recentResult.reason?.message||String(recentResult.reason||\"Unknown error\"),checkouts:[] };\n    state.shopify = status;\n    state.ticketCheckouts = recent;\n    renderShopifyCentre(status, recent);\n    renderTicketSalesSummaryV418({...(recent.summary||{}),rawCheckoutRows:recent.rawCheckoutRows,businessCandidateRows:recent.businessCandidateRows,excludedNonBusinessRows:recent.excludedNonBusinessRows,excludedSources:recent.excludedSources});\n    loadTicketDiscountCodes().catch(function(err){\n      const target=$(\"ticketDiscountCodeResult\"); if(target)target.textContent=\"Discount codes could not be loaded: \"+(err.message||err);\n    });\n    const connectedText = status.connected ? \"connected\" : \"not connected\";\n    healthCard(\"healthShopify\", \"Shopify\", connectedText, (status.shop || \"\u2014\") + \" / checkout \" + (status.checkoutEnabled ? \"enabled\" : \"disabled\"));\n    if($(\"settingsShopifySummary\")) $(\"settingsShopifySummary\").innerHTML=\"<strong>Connection: \"+(status.connected?\"Connected\":\"Not connected\")+\"</strong><span>Store: \"+esc(status.shop||\"\u2014\")+\"</span><span>Checkout: \"+(status.checkoutEnabled?\"Enabled\":\"Disabled\")+\"</span><span>Ticket lifecycle webhooks: \"+esc(status.readyWebhookCount||0)+\"/\"+esc(status.requiredWebhookCount||4)+\" confirmed</span><span>Webhook signing secret: \"+(status.signingSecretConfigured?\"Configured\":\"MISSING\")+\"</span><span>Ticket launch: \"+(status.ticketSalesLaunchReady?\"READY\":\"NEEDS ATTENTION\")+\"</span>\";\n    setRepairStatus(\"settingsShopifyStatus\",status.connected && status.checkoutEnabled ? \"connected\" : \"warning\");\n    return { status, recent };\n  }\n\n  document.addEventListener('click',event=>{const button=event.target.closest('[data-comms-quick]');if(button){event.preventDefault();activateModule('comms',button.dataset.commsQuick,{routeKey:'communications',historyMode:'push'});}});\n  let communicationsHistoryPageV462=1;\n  function setCommsViewV462(view='inbox'){\n    const target=['templates','history','inbox'].includes(view)?view:'inbox';\n    state.currentCommsViewV540=target;rememberOrbitSubtab('comms',target);\n    document.querySelectorAll('[data-comms-view]').forEach(node=>node.hidden=node.dataset.commsView!==target);\n    document.querySelectorAll('[data-comms-quick]').forEach(button=>{const active=button.dataset.commsQuick===target;button.classList.toggle('active',active);button.setAttribute('aria-current',active?'page':'false');});\n    document.querySelectorAll('[data-workspace-group=\"communications\"] [data-module-nav]').forEach(button=>{const active=button.dataset.commsOpen===target;button.classList.toggle('active',active);button.setAttribute('aria-selected',String(active));if(active)button.setAttribute('aria-current','page');else button.removeAttribute('aria-current');});\n    if(!state.adminAuthenticated)return;\n    if(target==='history')loadCommunicationsHistoryV462(1).catch(err=>setNotice('Email history unavailable: '+(err.message||err),true));\n    if(target==='templates'){loadCommunications().then(()=>{if(canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599())==='card-shows')return loadVendorClubEmailsV621();}).catch(err=>setNotice('Email templates unavailable: '+(err.message||err),true));}\n    if(target==='inbox')loadResendInboxV529().catch(err=>{const el=$(\"resendInboxStatusV529\");if(el){el.hidden=false;el.textContent='Inbox unavailable: '+(err.message||err);}});\n  }\n\n  function memberSupportNeedsReplyV689(ticket){\n    const status=String(ticket?.status||\"open\").toLowerCase();\n    if([\"resolved\",\"closed\",\"cancelled\",\"archived\"].includes(status))return false;\n    const sender=String(ticket?.last_sender||ticket?.lastSender||\"\").toLowerCase();\n    // The latest actor is authoritative. A stale historical awaiting flag must\n    // never repaint the red badge after Orbit/Admin has replied.\n    if([\"member\",\"customer\"].includes(sender))return true;\n    if([\"admin\",\"staff\",\"orbit\"].includes(sender))return false;\n    if(Object.prototype.hasOwnProperty.call(ticket||{},\"awaiting_admin_reply\"))return ticket.awaiting_admin_reply===true;\n    if(Object.prototype.hasOwnProperty.call(ticket||{},\"awaitingAdminReply\"))return ticket.awaitingAdminReply===true;\n    if(Object.prototype.hasOwnProperty.call(ticket||{},\"requires_admin_reply\"))return ticket.requires_admin_reply===true;\n    if(Object.prototype.hasOwnProperty.call(ticket||{},\"requiresAdminReply\"))return ticket.requiresAdminReply===true;\n    return status===\"waiting\";\n  }\n  function memberSupportCountsV688(data){\n    const rows=Array.isArray(data?.tickets)?data.tickets:[];\n    const active=rows.filter(ticket=>![\"resolved\",\"closed\",\"cancelled\",\"archived\"].includes(String(ticket?.status||\"open\").toLowerCase()));\n    const unanswered=active.filter(memberSupportNeedsReplyV689);\n    return {open:active.length,unanswered:unanswered.length,known:Array.isArray(data?.tickets)};\n  }\n  function updateMemberSupportBadgesV688(data){\n    const counts=memberSupportCountsV688(data),open=$(\"supportOpenCountV618\"),node=$(\"supportPendingCountV540\");\n    // The red rail badge is an action badge, not an open-conversation counter.\n    // Show it only when the customer/member was the last actor and Orbit must reply.\n    if(open){open.textContent=counts.known&&counts.unanswered>0?String(counts.unanswered):\"\";open.hidden=!counts.known||counts.unanswered===0;open.title=counts.known?(counts.unanswered===1?\"1 Members Club support conversation awaiting your reply\":counts.unanswered+\" Members Club support conversations awaiting your reply\"):\"Members Club support reply count unavailable\";open.setAttribute(\"aria-label\",open.title);}\n    if(node){node.textContent=counts.known?String(counts.unanswered):'\u2014';node.hidden=counts.known&&counts.unanswered===0;node.title=counts.known?counts.unanswered+' Members Club support conversation'+(counts.unanswered===1?'':'s')+' awaiting your reply':'Members Club support reply count unavailable';}\n    return counts;\n  }\n  async function refreshMemberSupportBadgeV688(){\n    try{const data=await api('/api/admin/support?limit=200',{cacheMs:0,timeoutMs:10000});updateMemberSupportBadgesV688(data);return data;}catch(error){updateMemberSupportBadgesV688(null);throw error;}\n  }\n  function updateSupportBadgeV540(summary){\n    // V688: member-support badges are sourced from the canonical Members support\n    // endpoint, never from a cross-workspace dashboard snapshot. The summary\n    // remains useful elsewhere but cannot paint this rail badge.\n    if(state.supportInbox)updateMemberSupportBadgesV688(state.supportInbox);\n  }\n  function updateInboxBadgeV540(summary){\n    const node=$(\"inboxPendingCountV540\"),main=$(\"mainCommsOpenCount\");\n    const known=Number.isInteger(summary?.unreviewed)&&summary.unreviewed>=0;\n    const value=known?(summary.hasMore?(summary.unreviewed>0?summary.unreviewed+'+':'\u2026'):String(summary.unreviewed)):'\u2014';\n    const title=known?summary.unreviewed+' emails needing review in the latest '+summary.checked+' received emails'+(summary.hasMore?'; older email exists. This is not a full-inbox total.':''):'Inbox review count unavailable';\n    if(node){node.hidden=known&&summary.unreviewed===0&&!summary.hasMore;node.textContent=value;node.title=title;}\n    if(main){main.hidden=!known||summary.unreviewed===0;main.textContent=known?String(summary.unreviewed):'';main.title=title;main.classList.toggle('needs-reply',known&&summary.unreviewed>0);main.classList.toggle('all-caught-up',false);}\n  }\n  let inboxPagePromiseV540=null,inboxLatestV540=null,inboxLatestAtV540=0,commsBadgePromiseV540=null,inboxLatestScopeV600='',inboxPageScopeV600='';\n  function inboxScopeV600(){const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());return workspace==='card-shows'?'show_tickets':workspace==='members-club'?'collectors_club':'';}\n  function inboxScopeQueryV600(){const scope=inboxScopeV600();return scope?'&scope='+encodeURIComponent(scope):'';}\n  async function readLatestInboxV540(force=false){\n    const scope=inboxScopeV600();\n    if(inboxPagePromiseV540&&inboxPageScopeV600===scope)return inboxPagePromiseV540;\n    if(inboxPagePromiseV540&&inboxPageScopeV600!==scope)await inboxPagePromiseV540.catch(()=>{});\n    if(!force&&inboxLatestV540&&inboxLatestScopeV600===scope&&Date.now()-inboxLatestAtV540<30000)return inboxLatestV540;\n    inboxPageScopeV600=scope;\n    inboxPagePromiseV540=api('/api/admin/communications/inbox?limit=50'+inboxScopeQueryV600(),{cacheMs:0,timeoutMs:15000}).then(data=>{inboxLatestV540=data;inboxLatestScopeV600=scope;inboxLatestAtV540=Date.now();updateInboxBadgeV540(data.reviewSummary);return data;}).catch(error=>{updateInboxBadgeV540(null);throw error;});\n    try{return await inboxPagePromiseV540;}finally{inboxPagePromiseV540=null;inboxPageScopeV600='';}\n  }\n  async function refreshCommsBadgesV540(){\n    if(commsBadgePromiseV540)return commsBadgePromiseV540;\n    commsBadgePromiseV540=Promise.allSettled([readLatestInboxV540(),loadSummary().catch(error=>{updateSupportBadgeV540(null);throw error;})]);\n    try{return await commsBadgePromiseV540;}finally{commsBadgePromiseV540=null;}\n  }\n  function inboundSenderV529(value){return Array.isArray(value)?String(value[0]||''):String(value||'');}\n  async function loadResendInboxV529(after=''){\n    const status=$(\"resendInboxStatusV529\"),target=$(\"resendInboxListV529\");\n    if(status){status.hidden=false;status.textContent='Loading received email from Resend\u2026';}\n    const data=after?await api('/api/admin/communications/inbox?limit=50&after='+encodeURIComponent(after)+inboxScopeQueryV600(),{cacheMs:0,timeoutMs:15000}):await readLatestInboxV540(true);\n    const rows=data.emails||[];\n    if(status)status.textContent=rows.length?rows.length+' recent received email'+(rows.length===1?'':'s')+' loaded. Review status is stored in Orbit, separately from sending replies. '+(data.hasMore?'Older emails are available below. ':'')+'Orbit custom-domain mail will appear here once Resend Receiving is active for that domain.':'No received email was returned by Resend. Test the Resend receiving address first; custom Orbit domains also require Resend Receiving MX/DNS setup.';\n    if(target)target.innerHTML=rows.length?rows.map(row=>'<button type=\"button\" class=\"orbit-inbox-item-v529'+(state.inboxSelectedIdV540===row.id?' active':'')+'\" data-inbox-id=\"'+esc(row.id)+'\"><strong>'+esc(row.subject||'(No subject)')+'</strong><span>'+esc(inboundSenderV529(row.from)||'Unknown sender')+'</span><small>'+esc(prettyShortDate(row.createdAt))+' \u00B7 '+(row.reviewed?'Reviewed':'Needs review')+'</small></button>').join(''):'<div class=\"orbit-empty\">No received email found.</div>';\n    if(target&&(after||data.hasMore)){target.insertAdjacentHTML('beforeend','<div class=\"orbit-action-row\">'+(after?'<button type=\"button\" class=\"secondary\" data-inbox-latest-v540>Latest emails</button>':'')+(data.hasMore&&rows.length?'<button type=\"button\" class=\"secondary\" data-inbox-older-v540>Older emails</button>':'')+'</div>');target.querySelector('[data-inbox-latest-v540]')?.addEventListener('click',()=>loadResendInboxV529().catch(err=>setNotice(err.message,true)));target.querySelector('[data-inbox-older-v540]')?.addEventListener('click',()=>loadResendInboxV529(rows[rows.length-1].id).catch(err=>setNotice(err.message,true)));}\n    target?.querySelectorAll('[data-inbox-id]').forEach(btn=>btn.addEventListener('click',()=>openResendInboxEmailV529(btn.dataset.inboxId,btn).catch(err=>{const reader=$(\"resendInboxReaderV529\");if(reader)reader.textContent='Email could not load: '+(err.message||err);})));\n\n    return data;\n  }\n  async function openResendInboxEmailV529(id,button){\n    state.inboxSelectedIdV540=id;\n    document.querySelectorAll('.orbit-inbox-item-v529').forEach(node=>node.classList.toggle('active',node===button));\n    const target=$(\"resendInboxReaderV529\"); if(target)target.innerHTML='<div class=\"orbit-empty\">Loading email\u2026</div>';\n    const scope=inboxScopeV600(),data=await api('/api/admin/communications/inbox/'+encodeURIComponent(id)+(scope?'?scope='+encodeURIComponent(scope):''),{cacheMs:0,timeoutMs:15000}),row=data.email||{};\n    const content=row.html||('<pre style=\"white-space:pre-wrap;font:inherit;margin:0\">'+esc(row.text||'(No email body returned)')+'</pre>');\n    const replyChoices=(data.choices||[]).filter(choice=>!scope||choice.key===scope),suggested=String(scope||data.suggestedReplyKey||replyChoices[0]?.key||'');\n    const fromSelect=replyChoices.length?'<label>Send reply from<select id=\"resendInboxReplyFromV531\">'+replyChoices.map(choice=>'<option value=\"'+esc(choice.key)+'\" '+(String(choice.key)===suggested?'selected':'')+'>'+esc(choice.from||choice.label||choice.key)+'</option>').join('')+'</select></label>':'';\n    if(target)target.innerHTML='<div class=\"orbit-panel-header compact\"><div><p class=\"orbit-kicker\">Received email</p><h3>'+esc(row.subject||'(No subject)')+'</h3><p><strong>From:</strong> '+esc(inboundSenderV529(row.from)||'\u2014')+'<br><strong>To:</strong> '+esc((Array.isArray(row.to)?row.to:[row.to]).filter(Boolean).join(', ')||'\u2014')+'<br><strong>Received:</strong> '+esc(prettyShortDate(row.createdAt))+'</p></div></div><div class=\"orbit-inbox-message-v529\">'+content+'</div><div class=\"orbit-inbox-reply-v529\">'+fromSelect+'<label>Reply<textarea id=\"resendInboxReplyTextV529\" placeholder=\"Write your reply\u2026\"></textarea></label><div class=\"orbit-action-row\"><button type=\"button\" id=\"sendResendInboxReplyV529\">Send Reply</button></div><div id=\"resendInboxReplyResultV529\" class=\"orbit-action-result\" hidden></div></div>';\n    if(target){const review=document.createElement('div');review.className='orbit-action-row orbit-inbox-review-v540';const button=document.createElement('button');button.type='button';button.className='secondary';button.id='inboxReviewToggleV540';button.textContent=data.review?.reviewed?'Mark as needing review':'Mark reviewed';const message=document.createElement('span');message.setAttribute('role','status');message.textContent=data.review?.reviewed?'Reviewed in Orbit':'Needs review in Orbit';review.append(button,message);target.prepend(review);button.addEventListener('click',async()=>{button.disabled=true;try{const result=await api('/api/admin/communications/inbox/'+encodeURIComponent(id)+'/review',{method:'POST',body:JSON.stringify({reviewed:!data.review?.reviewed,scope})});data.review={reviewed:result.reviewed===true};button.textContent=data.review.reviewed?'Mark as needing review':'Mark reviewed';message.textContent=data.review.reviewed?'Reviewed in Orbit. No email was sent.':'Needs review in Orbit. No email was sent.';await inboxPagePromiseV540?.catch(()=>{});inboxLatestAtV540=0;await loadResendInboxV529();}catch(error){message.textContent='Review status could not update: '+(error.message||error);}finally{button.disabled=false;}});}\n    $(\"sendResendInboxReplyV529\")?.addEventListener('click',()=>sendResendInboxReplyV529(id));\n  }\n  async function sendResendInboxReplyV529(id){\n    const text=String($(\"resendInboxReplyTextV529\")?.value||'').trim(),result=$(\"resendInboxReplyResultV529\"),button=$(\"sendResendInboxReplyV529\");\n    if(!text){if(result){result.hidden=false;result.textContent='Write a reply first.';}return;}\n    if(!confirm('Send this reply through Resend?'))return;\n    if(button)button.disabled=true;\n    try{const scope=inboxScopeV600(),fromKey=scope||String($(\"resendInboxReplyFromV531\")?.value||'');const data=await api('/api/admin/communications/inbox/'+encodeURIComponent(id)+'/reply',{method:'POST',body:JSON.stringify({text,fromKey,scope,idempotencyKey:'inbox-'+id+'-'+Date.now()})});if(result){result.hidden=false;result.textContent='Reply sent successfully'+(data.to?' to '+data.to:'')+'.';}if($(\"resendInboxReplyTextV529\"))$(\"resendInboxReplyTextV529\").value='';}\n    catch(err){if(result){result.hidden=false;result.textContent='Reply failed: '+(err.message||err);}}\n    finally{if(button)button.disabled=false;}\n  }\n  // V642_HISTORY_BEGIN\n  const communicationHistoryEpochsV642 = new Map();\n  function renderMessageHistoryV642(data,rowsId,summaryId){\n    const target=$(rowsId),summary=$(summaryId),labels={delivered:'Delivered',sent:'Sent / Accepted',bounced:'Bounced',failed:'Failed',pending:'Pending'};\n    if(summary){const c=data.counts||{};summary.innerHTML=Object.entries(labels).map(([key,label])=>'<span class=\"orbit-comms-history-stat '+(key==='failed'||key==='bounced'?'warning':'')+'\"><b>'+Number(c[key]||0)+'</b> '+label+'</span>').join('')+'<p class=\"orbit-comms-attempt-note-v641\">One row per message. Sent / Accepted is not confirmed delivery. Retried is an audit label, not another message.</p>';}\n    if(target)target.innerHTML=(data.logs||[]).map(item=>{\n      const label=labels[item.status]||'Pending',good=item.status==='delivered'||item.status==='sent',problem=['failed','bounced'].includes(item.status);\n      const attempts=(item.attempts||[]).map(a=>'<li><time>'+esc(prettyDate(a.at))+'</time> \u00B7 '+esc(a.status||'unknown')+(a.providerId?'<br><small>Provider ID: '+esc(a.providerId)+'</small>':'')+(a.errorCode||a.error?'<br><small>'+esc(a.errorCode||a.error)+'</small>':'')+'</li>').join('');\n      return '<article class=\"orbit-message-v642\" data-history-message=\"'+esc(item.id||'')+'\"><div class=\"orbit-message-heading-v642\"><div><strong>'+esc(item.to||'Recipient unavailable')+'</strong><h4>'+esc(item.subject||'Email')+'</h4></div><div class=\"orbit-message-pills-v642\"><span class=\"orbit-pill '+(good?'success':problem?'warning':'other')+'\">'+label+'</span>'+(item.retried?'<span class=\"orbit-pill other\">Retried '+Number(item.retryCount||0)+'</span>':'')+'</div></div><p class=\"orbit-message-meta-v642\">'+esc(String(item.type||'email').replace(/_/g,' '))+' \u00B7 '+esc(prettyDate(item.createdAt||item.updatedAt))+'</p><details><summary>'+Number(item.attemptCount||item.attempts?.length||0)+' attempt(s) \u00B7 provider and delivery evidence</summary><p>Provider ID: '+esc(item.providerId||'No acceptance ID recorded')+(item.providerIds?.length>1?' \u00B7 Multiple provider IDs require review.':'')+'</p><p>Last saved provider state: '+esc(item.providerStatus||'Unverified')+(item.providerEventAt?' \u00B7 Event time: '+esc(prettyDate(item.providerEventAt)):' \u00B7 Provider event time not supplied')+'</p><p>'+(item.deliveryCheckedAt?'Receipt last checked: '+esc(prettyDate(item.deliveryCheckedAt)):'Receipt has not been checked')+'. A check time is not a delivery time.</p><ol>'+attempts+'</ol></details></article>';\n    }).join('')||'<p class=\"orbit-muted\">No messages match these filters.</p>';\n  }\n  const historyReadsV71601=new Map();let historyPollV71601=null;\n  function historyNoticeV71601(rowsId,text,isError=false){const rows=$(rowsId);if(!rows)return;let note=$(rowsId+'Freshness');if(!note){note=document.createElement('p');note.id=rowsId+'Freshness';note.className='orbit-muted';rows.before(note);}note.textContent=text;note.setAttribute('role',isError?'alert':'status');if(isError)note.dataset.orbitError='';else delete note.dataset.orbitError;}\n  function historyRenderPreservedV71601(data,rowsId,summaryId){\n    const target=$(rowsId),key=JSON.stringify(data),prior=historyReadsV71601.get(rowsId)||{};if(prior.renderKey===key&&target?.querySelector('.orbit-message-v642'))return;\n    const expanded=new Set([...target?.querySelectorAll('[data-history-message]')||[]].filter(el=>el.querySelector('details')?.open).map(el=>el.dataset.historyMessage));\n    renderMessageHistoryV642(data,rowsId,summaryId);target?.querySelectorAll('[data-history-message]').forEach(el=>{if(expanded.has(el.dataset.historyMessage))el.querySelector('details').open=true;});\n    historyReadsV71601.set(rowsId,{...prior,data,renderKey:key});\n  }\n  function scheduleHistoryRefreshV71601(){clearTimeout(historyPollV71601);if(document.hidden)return;const rowsIds=['communicationsHistoryTable','vendorDeliveryRowsV642'];if(!rowsIds.some(id=>$(id)?.getClientRects().length))return;\n    historyPollV71601=setTimeout(()=>{if(document.hidden)return;const focus=document.activeElement;if(focus?.matches('input,textarea,select')||focus?.closest('[data-history-message]')){scheduleHistoryRefreshV71601();return;}\n      const tasks=[];if($('communicationsHistoryTable')?.getClientRects().length)tasks.push(loadCommunicationsHistoryV462(communicationsHistoryPageV462,{automatic:true}));if($('vendorDeliveryRowsV642')?.getClientRects().length)tasks.push(loadVendorDeliveryV642(vendorDeliveryPageV642,{automatic:true}));Promise.allSettled(tasks).finally(scheduleHistoryRefreshV71601);},20000);\n  }\n  async function loadHistoryPageV71601({kind,rowsId,summaryId,searchId,statusId,pageId,previousId,nextId,page,limit,scope='',automatic=false}){\n    const existing=historyReadsV71601.get(rowsId)||{};if(automatic&&existing.busy)return existing.data;\n    const read=(communicationHistoryEpochsV642.get(kind)||0)+1;communicationHistoryEpochsV642.set(kind,read);\n    historyReadsV71601.set(rowsId,{...existing,busy:true});const rows=$(rowsId);rows?.setAttribute('aria-busy','true');historyNoticeV71601(rowsId,existing.data?'Refreshing saved message outcomes\u2026':'Loading saved message outcomes\u2026');\n    try{const search=String($(searchId)?.value||'').trim(),status=String($(statusId)?.value||'all');\n      const data=await api('/api/admin/communications/history?page='+page+'&limit='+limit+'&scope='+encodeURIComponent(scope)+'&search='+encodeURIComponent(search)+'&status='+encodeURIComponent(status),{cacheMs:0,timeoutMs:20000});if(communicationHistoryEpochsV642.get(kind)!==read)return data;\n      historyRenderPreservedV71601(data,rowsId,summaryId);if($(pageId))$(pageId).textContent='Page '+Number(data.page||1)+' of '+Number(data.pages||1)+' \u00B7 '+Number(data.total||0)+' messages';if($(previousId))$(previousId).disabled=Number(data.page||1)<=1;if($(nextId))$(nextId).disabled=Number(data.page||1)>=Number(data.pages||1);\n      historyNoticeV71601(rowsId,'Updated '+new Date().toLocaleTimeString('en-GB')+'. Status refreshes automatically; existing attempt history is retained.');return data;\n    }catch(error){if(communicationHistoryEpochsV642.get(kind)===read){historyNoticeV71601(rowsId,'Email history could not be refreshed. '+(existing.data?'Previously loaded records remain visible. ':'')+'Retry below; Orbit will also retry while this page is open.',true);\n        if(!existing.data){if($(summaryId))$(summaryId).textContent='History temporarily unavailable \u2014 no records have been changed.';if(rows)rows.innerHTML='<p class=\"orbit-muted\">The saved history could not be loaded yet.</p>';}\n        const note=$(rowsId+'Freshness');if(note){const retry=document.createElement('button');retry.type='button';retry.className='secondary';retry.textContent='Retry history';retry.addEventListener('click',()=>loadHistoryPageV71601({kind,rowsId,summaryId,searchId,statusId,pageId,previousId,nextId,page,limit,scope}).catch(()=>{}));note.append(' ',retry);}}\n      if(!automatic)throw error;return null;\n    }finally{if(communicationHistoryEpochsV642.get(kind)===read){rows?.setAttribute('aria-busy','false');const current=historyReadsV71601.get(rowsId)||{};historyReadsV71601.set(rowsId,{...current,busy:false});}scheduleHistoryRefreshV71601();}\n  }\n  async function loadCommunicationsHistoryV462(page=1,{automatic=false}={}){communicationsHistoryPageV462=Math.max(1,Number(page)||1);return loadHistoryPageV71601({kind:'comms',rowsId:'communicationsHistoryTable',summaryId:'communicationsHistorySummary',searchId:'communicationsHistorySearch',statusId:'communicationsHistoryStatus',pageId:'communicationsHistoryPage',previousId:'communicationsHistoryPrev',nextId:'communicationsHistoryNext',page:communicationsHistoryPageV462,limit:50,automatic});}\n  let vendorDeliveryPageV642=1;\n  async function loadVendorDeliveryV642(page=1,{automatic=false}={}){vendorDeliveryPageV642=Math.max(1,Number(page)||1);const notice=$('vendorDeliveryNoticeV642');if(notice)notice.textContent='Current outcomes with immutable attempt history.';return loadHistoryPageV71601({kind:'vendor',rowsId:'vendorDeliveryRowsV642',summaryId:'vendorDeliverySummaryV642',searchId:'vendorDeliverySearchV642',statusId:'vendorDeliveryStatusV642',pageId:'vendorDeliveryPageV642',previousId:'vendorDeliveryPreviousV642',nextId:'vendorDeliveryNextV642',page:vendorDeliveryPageV642,limit:30,scope:'vendor-club',automatic});}\n  document.addEventListener('visibilitychange',()=>{if(document.hidden){clearTimeout(historyPollV71601);return;}if($('communicationsHistoryTable')?.getClientRects().length)loadCommunicationsHistoryV462(communicationsHistoryPageV462,{automatic:true});if($('vendorDeliveryRowsV642')?.getClientRects().length)loadVendorDeliveryV642(vendorDeliveryPageV642,{automatic:true});});\n  // V642_HISTORY_END\n\n  async function loadCommunications() {\n    const [status,templates] = await Promise.all([\n      api(\"/api/admin/communications/status\"),\n      api(\"/api/admin/communications/templates\",{cacheMs:0,timeoutMs:12000})\n    ]);\n    state.communicationTemplates = templates.templates || [];\n    state.communications = { status, templates: state.communicationTemplates, safety: templates.safety || {}, catalogueRelease: templates.release || null };\n    renderCommunicationsCentre(state.communications);\n    const configured = Boolean(status.configured || status.resendConfigured || status.ready || status.success);\n    healthCard(\"healthResend\", \"Resend\", configured ? \"configured\" : \"unknown\", status.fromEmail || status.sender || \"Email delivery\");\n    if($(\"settingsResendSummary\")) $(\"settingsResendSummary\").innerHTML=\"<strong>Connection: \"+(configured?\"Configured\":\"Needs attention\")+\"</strong><span>Sender: \"+esc(status.fromEmail||status.sender||\"\u2014\")+\"</span><span>Email Templates: preview-only protected catalogue</span><span>Delivery logs live in Email \u2192 History only</span>\";\n    setRepairStatus(\"settingsResendStatus\",configured?\"configured\":\"warning\");\n  }\n\n  function staticPageDiagnosticText(payload){\n    const rows=payload?.results||[];\n    const lines=[];\n    rows.forEach(row=>{\n      if(row.success){\n        lines.push((row.name||row.eventbriteEventId||\"Event\")+\": READY \"+(row.url||\"\")+\" via \"+(row.method||\"Shopify\"));\n      }else{\n        lines.push((row.name||row.eventbriteEventId||\"Event\")+\": FAILED \u2014 \"+(row.error||\"Unknown error\"));\n        (row.diagnostics||[]).forEach(d=>{\n          lines.push(\"  \"+(d.source||\"token\")+\" \u00B7 \"+(d.stage||\"stage\")+\" \u00B7 \"+(d.success?\"OK\":\"FAILED\")+(d.method?\" \u00B7 \"+d.method:\"\")+(d.error?\" \u2014 \"+d.error:\"\"));\n        });\n      }\n    });\n    if(!lines.length && payload?.error)lines.push(payload.error);\n    return lines.join(\"\\n\");\n  }\n\n  // V716.0.0 TARGETED EVENTBRITE HOTFIX:\n  // The Events Centre buttons/listeners remained live, but these established\n  // client handlers were missing. Restore only the proven orchestration. The\n  // canonical Eventbrite sync service, public events API and Shopify static-page\n  // reconciliation remain unchanged.\n  async function connectEventbrite(button) {\n    setLoading(button, true);\n    try {\n      const data = await api(\"/api/admin/eventbrite/connect-url\");\n      if (!data.connectUrl) throw new Error(\"No Eventbrite connection URL returned.\");\n      window.open(data.connectUrl, \"orbitEventbriteConnect\", \"popup=yes,width=760,height=820,menubar=no,toolbar=no,location=yes,status=no,scrollbars=yes,resizable=yes\");\n      setNotice(\"Eventbrite connection window opened. Approve Orbit OS, then return here and click Refresh.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function syncEventbrite(button) {\n    setLoading(button, true);\n    if (button) button.textContent = \"Syncing...\";\n    try {\n      const result = await api(\"/api/admin/eventbrite/sync\", { method: \"POST\", timeoutMs: 120000 });\n      await loadEventbrite();\n      const pages=result.staticPages||{};\n      const pageMessage=pages.success\n        ? \" Static ticket URLs: \"+Number(pages.ready||0)+\"/\"+Number(pages.total||0)+\" ready.\"\n        : (pages.error ? \" Static ticket URL reconciliation needs attention: \"+pages.error : \"\");\n      setNotice(\"Eventbrite sync complete. \" + (result.syncedCount || 0) + \" upcoming events synced.\" + pageMessage, Boolean(pages.error));\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function loadEventbrite() {\n    // V339: these reads are independent. The old serial chain amplified one\n    // slow remote/status request into the entire Events Centre load time.\n    const [statusResult,eventsResult,staticResultPromise]=await Promise.allSettled([\n      api(\"/api/admin/eventbrite/status\",{cacheMs:5000}),\n      api(\"/api/admin/eventbrite/events?limit=100&metrics=0\",{cacheMs:5000}),\n      api(\"/api/admin/eventbrite/static-pages/status\",{cacheMs:5000})\n    ]);\n    if(statusResult.status!==\"fulfilled\")throw statusResult.reason;\n    if(eventsResult.status!==\"fulfilled\")throw eventsResult.reason;\n    const status=statusResult.value;\n    const events=eventsResult.value;\n    const staticPages=staticResultPromise.status===\"fulfilled\"?staticResultPromise.value:null;\n    state.eventbrite = { status, events: events.events || [], staticPages };\n    renderEventbriteCentre(state.eventbrite);\n    if(state.currentModule===\"events\"&&savedOrbitSubtab(\"events\")===\"calendar\")renderEventCalendarV485();\n\n    // V340 two-phase Events Centre: render the lightweight event snapshot\n    // immediately, then hydrate operational admissions metrics in the\n    // background. Metrics must not block the whole Events screen from opening.\n    api(\"/api/admin/eventbrite/events?limit=100&metrics=1\",{cacheMs:5000,timeoutMs:30000}).then(full=>{\n      if(!full?.events)return;\n      if(!state.eventbrite)return;\n      state.eventbrite={...state.eventbrite,events:full.events};\n      renderEventbriteCentre(state.eventbrite);\n      if(state.currentModule===\"events\"&&savedOrbitSubtab(\"events\")===\"calendar\")renderEventCalendarV485();\n    }).catch(error=>console.warn(\"Background Eventbrite metrics refresh failed:\",error?.message||error));\n    const staticResult=$(\"staticEventPagesResult\");\n    if(staticResult&&staticPages){\n      staticResult.hidden=false;\n      if(staticPages.reconnectRequired){\n        staticResult.className=\"orbit-action-result orbit-static-pages-result orbit-static-pages-result-v379 is-warning\";\n        staticResult.textContent=\"Static ticket URLs: Shopify authorization required. Press Ensure Static Ticket URLs to approve Page/content access.\";\n      }else if(Number(staticPages.pending||0)>0){\n        staticResult.className=\"orbit-action-result orbit-static-pages-result orbit-static-pages-result-v379\";\n        staticResult.textContent=\"Static URLs \u00B7 \"+Number(staticPages.ready||0)+\"/\"+Number(staticPages.total||0)+\" ready \u00B7 \"+Number(staticPages.pending||0)+\" pending\";\n      }else{\n        staticResult.className=\"orbit-action-result orbit-static-pages-result orbit-static-pages-result-v379 is-success\";\n        const upcomingCount=Number((events.events||[]).filter(e=>String(e.status||'').toLowerCase()!=='draft'&&!e.archived&&!eventHasPassed(e)).length);\n        staticResult.textContent=\"Static ticket URLs: \"+Number(staticPages.ready||0)+\"/\"+Number(staticPages.total||0)+\" ready \u00B7 \"+upcomingCount+\" upcoming show\"+(upcomingCount===1?\"\":\"s\")+\".\";\n      }\n    }\n    healthCard(\"healthEventbrite\", \"Eventbrite\", status.connected ? \"connected\" : (status.status || \"unknown\"), String(events.events?.length || 0) + \" synced events\");\n    if($(\"settingsEventbriteSummary\")){\n      const staticLine=staticPages\n        ? \"<span>Static ticket URLs: \"+Number(staticPages.ready||0)+\" ready \u00B7 \"+Number(staticPages.pending||0)+\" pending\"+(staticPages.reconnectRecommended?\" \u00B7 Shopify reconnect required\":\"\")+\"</span>\"\n        : \"<span>Static ticket URL status unavailable</span>\";\n      $(\"settingsEventbriteSummary\").innerHTML=\"<strong>Connection: \"+(status.connected?\"Connected\":\"Not connected\")+\"</strong><span>\"+String(events.events?.length||0)+\" operational events synced</span>\"+staticLine+\"<span>Use Events Connection to reconnect or synchronise now</span>\";\n    }\n    setRepairStatus(\"settingsEventbriteStatus\",status.connected&&(!staticPages||!staticPages.reconnectRecommended)?\"connected\":\"warning\");\n  }\n\n  async function loadTrackingSettings(){\n    const [data,searchOauth]=await Promise.all([api(\"/api/admin/tracking-settings\",{cacheMs:0}),api(\"/api/admin/google-search-console/oauth/status\",{cacheMs:0,timeoutMs:15000}).catch(error=>({success:false,error:error?.message||String(error)}))]);\n    const s=data.settings||{};\n    const capiHealth=data.capiHealth||{};\n    state.trackingSettings=s;\n    state.trackingCapiHealth=capiHealth;\n    const profiles=s.siteProfiles||{},card=profiles.card_show||{},tickets=profiles.show_tickets||{},club=profiles.collectors_club||{},cardIndex=profiles.card_show_index||{};\n    const setv=(id,value)=>{if($(id))$(id).value=value||\"\";},setc=(id,value)=>{if($(id))$(id).checked=value!==false;};\n    setv(\"siteCardShowGaMeasurementV494\",card.googleAnalyticsMeasurementId);setv(\"siteCardShowGaPropertyV494\",card.googleAnalyticsPropertyId);setv(\"siteCardShowSearchConsoleV494\",card.searchConsoleSiteUrl);setv(\"siteCardShowSitemapV494\",card.sitemapUrl);\n    setv(\"siteTicketsGaMeasurementV494\",tickets.googleAnalyticsMeasurementId);setv(\"siteTicketsGaPropertyV494\",tickets.googleAnalyticsPropertyId);setv(\"siteTicketsSearchConsoleV494\",tickets.searchConsoleSiteUrl);setv(\"siteTicketsSitemapV494\",tickets.sitemapUrl);\n    setv(\"siteClubGaMeasurementV494\",club.googleAnalyticsMeasurementId);setv(\"siteClubGaPropertyV494\",club.googleAnalyticsPropertyId);setv(\"siteClubSearchConsoleV494\",club.searchConsoleSiteUrl);setv(\"siteClubSitemapV494\",club.sitemapUrl);\n    setv(\"siteCardShowIndexGaMeasurementV625\",cardIndex.googleAnalyticsMeasurementId);setv(\"siteCardShowIndexGaPropertyV625\",cardIndex.googleAnalyticsPropertyId);setv(\"siteCardShowIndexSearchConsoleV625\",cardIndex.searchConsoleSiteUrl);setv(\"siteCardShowIndexSitemapV625\",cardIndex.sitemapUrl);\n    setv(\"directoryGoogleOauthClientIdV628\",s.googleAnalyticsOauthClientId);setv(\"directoryGoogleOauthClientSecretV628\",\"\");setv(\"directorySearchConsoleRedirectV628\",searchOauth?.redirectUri||\"\");setv(\"directorySearchConsolePropertyV628\",cardIndex.searchConsoleSiteUrl);setv(\"directorySitemapUrlV628\",cardIndex.sitemapUrl);setv(\"directoryGaMeasurementIdV628\",cardIndex.googleAnalyticsMeasurementId);setv(\"directoryGaPropertyIdV628\",cardIndex.googleAnalyticsPropertyId);\n    const sameTicketClubGa=Boolean(String(tickets.googleAnalyticsMeasurementId||\"\").trim()&&String(tickets.googleAnalyticsMeasurementId||\"\").trim()===String(club.googleAnalyticsMeasurementId||\"\").trim());\n    if($(\"siteTicketsGaRuntimeV532\")){$(\"siteTicketsGaRuntimeV532\").className=\"orbit-performance-tracking-status \"+(sameTicketClubGa?\"warning\":\"success\");$(\"siteTicketsGaRuntimeV532\").textContent=sameTicketClubGa?\"Storefront tracking suppressed \u00B7 this stored GA4 ID is also used by Collectors Club. Settings are preserved, but Show Tickets will not send into the Club stream.\":(tickets.googleAnalyticsMeasurementId?\"Storefront tracking eligible \u00B7 this GA4 ID is distinct from Collectors Club.\":\"No Show Tickets storefront GA4 stream configured.\");}\n    if($(\"siteClubGaRuntimeV532\")){$(\"siteClubGaRuntimeV532\").className=\"orbit-performance-tracking-status success\";$(\"siteClubGaRuntimeV532\").textContent=club.googleAnalyticsMeasurementId?\"Collectors Club storefront GA4 remains enabled on its own domain.\":\"No Collectors Club storefront GA4 stream configured.\";}\n    setv(\"performanceSearchConsoleOauthRedirectV494\",searchOauth?.redirectUri||\"\");\n    setv(\"performanceCardShowPixelId\",card.metaPixelId);setc(\"performanceCardShowPixelEnabled\",card.metaPixelEnabled);\n    if($(\"performanceCardShowMetaStatus\"))$(\"performanceCardShowMetaStatus\").textContent=card.metaPixelId?(card.metaPixelEnabled!==false?\"Configured \u00B7 \"+card.metaPixelId:\"Configured but disabled \u00B7 \"+card.metaPixelId):\"Not configured\";\n    if($(\"performanceSearchConsoleStatusV494\")){const node=$(\"performanceSearchConsoleStatusV494\"),connected=Boolean(searchOauth?.readConnected||s.googleSearchConsoleOauthConnected),redirect=String(searchOauth?.redirectUri||\"\");node.className=\"orbit-performance-tracking-status\"+(connected?\" connected\":\"\");node.textContent=connected?(\"Connected separately \u00B7 Search Console read-only\"+(searchOauth?.readConnectedAt?(\" \u00B7 \"+prettyDate(searchOauth.readConnectedAt)):\"\")):(searchOauth?.success===false?\"Search Console OAuth diagnostics unavailable \u00B7 \"+String(searchOauth.error||\"retry\"):(\"Not connected \u00B7 Google Cloud must authorize this exact redirect URI: \"+redirect));}\n    if($(\"performanceGaMeasurementId\"))$(\"performanceGaMeasurementId\").value=s.googleAnalyticsMeasurementId||\"\";\n    if($(\"performanceGaPropertyIdV468\"))$(\"performanceGaPropertyIdV468\").value=s.googleAnalyticsPropertyId||\"\";\n    if($(\"performanceGaOauthClientIdV469\"))$(\"performanceGaOauthClientIdV469\").value=s.googleAnalyticsOauthClientId||\"\";\n    if($(\"performanceGaOauthClientSecretV469\"))$(\"performanceGaOauthClientSecretV469\").value=\"\";\n    if($(\"performanceGaOauthRedirectV469\"))$(\"performanceGaOauthRedirectV469\").value=API_BASE+\"/api/admin/google-analytics/oauth/callback\";\n    if($(\"performanceGaReportingStatusV468\")){\n      const reporting=$(\"performanceGaReportingStatusV468\");\n      if(s.googleAnalyticsOauthConnected){reporting.className=\"orbit-performance-tracking-status connected\";reporting.textContent=\"Connected via Google OAuth \u00B7 read-only GA4 reporting\"+(s.googleAnalyticsOauthConnectedAt?(\" \u00B7 \"+prettyDate(s.googleAnalyticsOauthConnectedAt)):\"\");}\n      else if(s.googleAnalyticsOauthClientId&&s.googleAnalyticsOauthClientSecretConfigured){reporting.className=\"orbit-performance-tracking-status\";reporting.textContent=\"OAuth client saved \u00B7 click Connect Google Analytics to authorize read-only reporting\";}\n      else{reporting.className=\"orbit-performance-tracking-status\";reporting.textContent=\"Reporting setup needed \u00B7 save Property ID + Google OAuth Client ID/secret, then Connect Google Analytics\";}\n    }\n    const connectButton=$(\"performanceGaConnectV469\");\n    if(connectButton){\n      const oauthReady=Boolean(s.googleAnalyticsPropertyId&&s.googleAnalyticsOauthClientId&&s.googleAnalyticsOauthClientSecretConfigured);\n      connectButton.disabled=!oauthReady;\n      connectButton.title=oauthReady?\"Connect Orbit to Google Analytics with read-only OAuth\":\"Save the GA4 Property ID, OAuth Client ID and OAuth Client Secret first\";\n    }\n    if($(\"performanceGaEnabled\"))$(\"performanceGaEnabled\").checked=s.googleAnalyticsEnabled!==false;\n    if($(\"performanceClubPixelId\"))$(\"performanceClubPixelId\").value=s.clubMetaPixelId||\"\";\n    if($(\"performanceTicketPixelId\"))$(\"performanceTicketPixelId\").value=s.ticketMetaPixelId||\"\";\n    if($(\"performanceClubPixelEnabled\"))$(\"performanceClubPixelEnabled\").checked=s.clubMetaPixelEnabled!==false;\n    if($(\"performanceTicketPixelEnabled\"))$(\"performanceTicketPixelEnabled\").checked=s.ticketMetaPixelEnabled!==false;\n    if($(\"performanceGaStatus\"))$(\"performanceGaStatus\").textContent=s.googleAnalyticsMeasurementId?(s.googleAnalyticsEnabled!==false?\"Configured \u00B7 \"+s.googleAnalyticsMeasurementId:\"Configured but disabled \u00B7 \"+s.googleAnalyticsMeasurementId):\"Not configured\";\n    if($(\"performanceClubMetaStatus\"))$(\"performanceClubMetaStatus\").textContent=s.clubMetaPixelId?(s.clubMetaPixelEnabled!==false?\"Configured \u00B7 \"+s.clubMetaPixelId:\"Configured but disabled \u00B7 \"+s.clubMetaPixelId):\"Not configured\";\n    if($(\"performanceTicketMetaStatus\"))$(\"performanceTicketMetaStatus\").textContent=s.ticketMetaPixelId?(s.ticketMetaPixelEnabled!==false?\"Configured \u00B7 \"+s.ticketMetaPixelId:\"Configured but disabled \u00B7 \"+s.ticketMetaPixelId):\"Not configured\";\n    if($(\"trackingGaMeasurementId\"))$(\"trackingGaMeasurementId\").value=s.googleAnalyticsMeasurementId||\"\";\n    if($(\"trackingClubPixelId\"))$(\"trackingClubPixelId\").value=s.clubMetaPixelId||\"\";\n    if($(\"trackingClubCapiToken\"))$(\"trackingClubCapiToken\").value=\"\";\n    if($(\"trackingClubCapiTestCode\"))$(\"trackingClubCapiTestCode\").value=s.clubMetaCapiTestEventCode||\"\";\n    if($(\"trackingTicketPixelId\"))$(\"trackingTicketPixelId\").value=s.ticketMetaPixelId||\"\";\n    if($(\"trackingTicketCapiToken\"))$(\"trackingTicketCapiToken\").value=\"\";\n    if($(\"trackingTicketCapiTestCode\"))$(\"trackingTicketCapiTestCode\").value=s.ticketMetaCapiTestEventCode||\"\";\n    if($(\"trackingGaEnabled\"))$(\"trackingGaEnabled\").checked=s.googleAnalyticsEnabled!==false;\n    if($(\"trackingClubPixelEnabled\"))$(\"trackingClubPixelEnabled\").checked=s.clubMetaPixelEnabled!==false;\n    if($(\"trackingClubCapiEnabled\"))$(\"trackingClubCapiEnabled\").checked=s.clubMetaCapiEnabled!==false;\n    if($(\"trackingTicketPixelEnabled\"))$(\"trackingTicketPixelEnabled\").checked=s.ticketMetaPixelEnabled!==false;\n    if($(\"trackingTicketCapiEnabled\"))$(\"trackingTicketCapiEnabled\").checked=s.ticketMetaCapiEnabled!==false;\n    const configured=[s.googleAnalyticsMeasurementId,s.clubMetaPixelId,s.ticketMetaPixelId].filter(Boolean).length;\n    const ticketRuntime=capiHealth.ticket||{};\n    const clubRuntime=capiHealth.club||{};\n    const ticketTokenText=s.ticketMetaCapiTokenConfigured\n      ?(\"Stored \u00B7 ending \"+esc(s.ticketMetaCapiTokenLast4||\"????\")+\" \u00B7 \"+Number(s.ticketMetaCapiTokenLength||0)+\" chars\"+(ticketRuntime.tokenConfigured?\" \u00B7 runtime loaded\":\" \u00B7 RUNTIME MISSING\"))\n      :\"NOT STORED\";\n    const clubTokenText=s.clubMetaCapiTokenConfigured\n      ?(\"Stored \u00B7 ending \"+esc(s.clubMetaCapiTokenLast4||\"????\")+(clubRuntime.tokenConfigured?\" \u00B7 runtime loaded\":\" \u00B7 RUNTIME MISSING\"))\n      :\"Not stored\";\n    if($(\"settingsTrackingSummary\"))$(\"settingsTrackingSummary\").innerHTML=\"<strong>\"+configured+\" of 3 tracking IDs configured</strong><span>Google Analytics: \"+esc(s.googleAnalyticsMeasurementId||\"Not set\")+\"</span><span>Collectors Club Pixel: \"+esc(s.clubMetaPixelId||\"Not set\")+\"</span><span>Club CAPI token: \"+clubTokenText+\"</span><span>Ticket Site Pixel: \"+esc(s.ticketMetaPixelId||\"Not set\")+\"</span><span><strong>Ticket CAPI token: \"+ticketTokenText+\"</strong></span>\";\n    setRepairStatus(\"settingsTrackingStatus\",configured?\"configured\":\"warning\");\n    return s;\n  }\n\n  async function saveTrackingSettings(button){\n    setLoading(button,true);\n    try{\n      const payload={\n        googleAnalyticsMeasurementId:$(\"trackingGaMeasurementId\")?.value||\"\",\n        clubMetaPixelId:$(\"trackingClubPixelId\")?.value||\"\",\n        clubMetaCapiToken:$(\"trackingClubCapiToken\")?.value||\"\",\n        clubMetaCapiTestEventCode:$(\"trackingClubCapiTestCode\")?.value||\"\",\n        clubMetaCapiEnabled:Boolean($(\"trackingClubCapiEnabled\")?.checked),\n        ticketMetaPixelId:$(\"trackingTicketPixelId\")?.value||\"\",\n        ticketMetaCapiToken:$(\"trackingTicketCapiToken\")?.value||\"\",\n        ticketMetaCapiTestEventCode:$(\"trackingTicketCapiTestCode\")?.value||\"\",\n        ticketMetaCapiEnabled:Boolean($(\"trackingTicketCapiEnabled\")?.checked),\n        googleAnalyticsEnabled:Boolean($(\"trackingGaEnabled\")?.checked),\n        clubMetaPixelEnabled:Boolean($(\"trackingClubPixelEnabled\")?.checked),\n        ticketMetaPixelEnabled:Boolean($(\"trackingTicketPixelEnabled\")?.checked)\n      };\n      const submittedTicketToken=String(payload.ticketMetaCapiToken||\"\").trim();\n      const submittedClubToken=String(payload.clubMetaCapiToken||\"\").trim();\n      const saved=await api(\"/api/admin/tracking-settings\",{method:\"PUT\",body:JSON.stringify(payload),cacheMs:0});\n      if(submittedTicketToken&&!saved?.settings?.ticketMetaCapiTokenConfigured)throw new Error(\"Ticket CAPI token save failed server-side. Orbit did not confirm the secret after Mongo read-back.\");\n      if(submittedClubToken&&!saved?.settings?.clubMetaCapiTokenConfigured)throw new Error(\"Club CAPI token save failed server-side. Orbit did not confirm the secret after Mongo read-back.\");\n      const reloaded=await loadTrackingSettings();\n      if(submittedTicketToken&&!reloaded?.ticketMetaCapiTokenConfigured)throw new Error(\"Ticket CAPI token disappeared after reload. Save has been rejected.\");\n      const result=$(\"trackingSettingsResult\");if(result){result.hidden=false;result.textContent=\"Saved and verified by server read-back. Ticket CAPI token: \"+(reloaded?.ticketMetaCapiTokenConfigured?(\"stored \u00B7 ending \"+String(reloaded.ticketMetaCapiTokenLast4||\"????\")):\"not stored\")+\".\";}\n      setNotice(\"Analytics & Pixel settings saved.\");\n    }finally{setLoading(button,false);}\n  }\n\n  let seoPagesV332=[];\n  let seoKeyPagesV336=[];\n  let seoSelectedPageV332=null;\n  let seoSelectedKeyPageV336=null;\n\n  function seoPublicUrlV332(page){\n    if(page?.url&&/^https?:\\/\\//i.test(String(page.url)))return String(page.url);\n    const handle=String(page?.handle||\"\");\n    return String(page?.templateSuffix||\"\")===\"orbit-event\"\n      ?\"https://orbitshowtickets.co.uk/pages/\"+encodeURIComponent(handle)\n      :\"https://orbitcollectorsclub.com/pages/\"+encodeURIComponent(handle);\n  }\n  function activeSeoRecordV336(){return seoSelectedKeyPageV336||seoSelectedPageV332||null;}\n  function updateSeoPreviewV332(){\n    const record=activeSeoRecordV336();\n    const title=String($(\"seoTitleInputV332\")?.value||\"\");\n    const description=String($(\"seoDescriptionInputV332\")?.value||\"\");\n    text(\"seoTitleCountV332\",title.length);\n    text(\"seoDescriptionCountV332\",description.length);\n    text(\"seoPreviewTitleV332\",title||record?.label||record?.title||\"Page title\");\n    text(\"seoPreviewUrlV332\",record?seoPublicUrlV332(record).replace(/^https?:\\/\\//,\"\"):\"orbitcollectorsclub.com/\u2026\");\n    text(\"seoPreviewDescriptionV332\",description||\"Meta description preview.\");\n  }\n  function renderSeoKeyPagesV336(){\n    const target=$(\"seoKeyPageListV336\");if(!target)return;\n    const sitePages=seoKeyPagesV336.filter(siteRecordMatchesV544);\n    if(!sitePages.length){target.innerHTML=\"<div class='orbit-empty-state'><strong>No important pages available</strong><span>Check Shopify authorization.</span></div>\";return;}\n    target.innerHTML=sitePages.map(page=>{\n      const selected=seoSelectedKeyPageV336?.id===page.id;\n      return \"<button type='button' class='orbit-seo-page-row-v332 orbit-seo-key-row-v336\"+(selected?\" active\":\"\")+\"' data-seo-key-page-id='\"+esc(page.id)+\"'><span><strong>\"+esc(page.label||page.id)+\"</strong><small>\"+esc(String(page.url||\"\").replace(/^https?:\\/\\//,\"\"))+(page.permissionRequired?\" \u00B7 Shopify Product permission required\":\"\")+\"</small></span><b>\"+(page.permissionRequired?\"Permission\":\"Priority\")+\"</b></button>\";\n    }).join(\"\");\n  }\n  function renderSeoPageListV332(){\n    const target=$(\"seoPageListV332\");if(!target)return;\n    const q=String($(\"seoPageSearchV332\")?.value||\"\").trim().toLowerCase();\n    const rows=seoPagesV332.filter(page=>siteRecordMatchesV544(page)&&(!q||[page.title,page.handle,page.templateSuffix].join(\" \").toLowerCase().includes(q)));\n    if(!rows.length){target.innerHTML=\"<div class='orbit-empty-state'><strong>No matching event pages</strong><span>Only public Orbit event Pages are shown here.</span></div>\";return;}\n    target.innerHTML=rows.map(page=>{\n      const selected=seoSelectedPageV332?.id===page.id;\n      const stateLabel=page.hidden?\"Noindex\":(page.isPublished?\"Indexable\":\"Unpublished\");\n      return \"<button type='button' class='orbit-seo-page-row-v332\"+(selected?\" active\":\"\")+\"' data-seo-page-id='\"+esc(page.id)+\"'><span><strong>\"+esc(page.title||page.handle)+\"</strong><small>\"+esc(seoPublicUrlV332(page).replace(/^https?:\\/\\//,\"\"))+\"</small></span><b class='\"+(page.hidden?\"warning\":\"\")+\"'>\"+esc(stateLabel)+\"</b></button>\";\n    }).join(\"\");\n  }\n  function populateSeoEditorV336(record,{keyPage=false}={}){\n    seoSelectedKeyPageV336=keyPage?record:null;\n    seoSelectedPageV332=keyPage?null:record;\n    if($(\"seoEditorEmptyV332\"))$(\"seoEditorEmptyV332\").hidden=Boolean(record);\n    if($(\"seoEditorV332\"))$(\"seoEditorV332\").hidden=!record;\n    if(!record){renderSeoKeyPagesV336();renderSeoPageListV332();return;}\n    text(\"seoEditorTypeV336\",keyPage?\"Priority public page\":\"Event page search listing\");\n    text(\"seoEditorPageNameV332\",record.label||record.title||record.handle);\n    text(\"seoEditorPageUrlV332\",seoPublicUrlV332(record).replace(/^https?:\\/\\//,\"\"));\n    if($(\"seoOpenPageV332\"))$(\"seoOpenPageV332\").href=seoPublicUrlV332(record);\n    if($(\"seoTitleInputV332\"))$(\"seoTitleInputV332\").value=record.seoTitle||((record.templateSuffix===\"orbit-event\")?((record.title||\"Orbit Card Show\")+\" | Official Orbit Card Show Tickets\"):(record.label||record.title||\"\"));\n    if($(\"seoDescriptionInputV332\"))$(\"seoDescriptionInputV332\").value=record.seoDescription||((record.templateSuffix===\"orbit-event\")?(\"Official tickets for \"+record.title+\". View event details, entry information and ticket options, then book securely through Orbit Show Tickets.\"):\"\");\n    if($(\"seoIndexableInputV332\"))$(\"seoIndexableInputV332\").checked=keyPage?true:!record.hidden;\n    if($(\"seoIndexableWrapV336\"))$(\"seoIndexableWrapV336\").hidden=keyPage;\n    const saveButton=$(\"seoSavePageV332\");\n    if(saveButton){saveButton.disabled=Boolean(record.permissionRequired);saveButton.textContent=record.permissionRequired?\"Shopify Product permission required\":\"Save & Verify in Shopify\";}\n    const result=$(\"seoSaveResultV332\");\n    if(result&&record.permissionRequired){result.hidden=false;result.classList.add(\"error\");result.textContent=\"Club Home and Ticket Home are available. Membership Product SEO needs Shopify Product permission before Orbit can edit it.\";}\n    else if(result){result.hidden=true;result.classList.remove(\"error\");result.textContent=\"\";}\n    updateSeoPreviewV332();renderSeoKeyPagesV336();renderSeoPageListV332();\n  }\n  function openSeoPageV332(page){populateSeoEditorV336(page,{keyPage:false});}\n  function openSeoKeyPageV336(page){populateSeoEditorV336(page,{keyPage:true});}\n\n  async function loadSeoKeyPagesV336(){\n    const status=$(\"seoKeyConnectionStatusV336\");if(status){status.className=\"orbit-status-pill waiting\";status.textContent=\"Loading\";}\n    const data=await api(\"/api/admin/seo/key-pages\",{cacheMs:0,timeoutMs:30000});\n    seoKeyPagesV336=Array.isArray(data.pages)?data.pages:[];\n    if(status){status.className=\"orbit-status-pill \"+(data.authorised?\"success\":\"warning\");status.textContent=data.authorised?(seoKeyPagesV336.filter(siteRecordMatchesV544).length+\" ready\"):\"Reconnect Shopify\";}\n    const prior=seoSelectedKeyPageV336?.id;\n    seoSelectedKeyPageV336=prior?seoKeyPagesV336.find(page=>page.id===prior)||null:null;\n    renderSeoKeyPagesV336();\n    if(seoSelectedKeyPageV336&&siteRecordMatchesV544(seoSelectedKeyPageV336))openSeoKeyPageV336(seoSelectedKeyPageV336);\n    return data;\n  }\n  async function loadSeoPagesV332(){\n    const status=$(\"seoConnectionStatusV332\");if(status){status.className=\"orbit-status-pill waiting\";status.textContent=\"Loading\";}\n    const data=await api(\"/api/admin/seo/pages\",{cacheMs:0,timeoutMs:30000});\n    seoPagesV332=(Array.isArray(data.pages)?data.pages:[]).filter(page=>String(page.templateSuffix||\"\")===\"orbit-event\");\n    if(status){status.className=\"orbit-status-pill \"+(data.authorised?\"success\":\"warning\");status.textContent=data.authorised?(seoPagesV332.filter(siteRecordMatchesV544).length+\" events\"):\"Reconnect Shopify\";}\n    const priorId=seoSelectedPageV332?.id;\n    seoSelectedPageV332=priorId?seoPagesV332.find(page=>page.id===priorId)||null:null;\n    renderSeoPageListV332();\n    if(seoSelectedPageV332&&siteRecordMatchesV544(seoSelectedPageV332))openSeoPageV332(seoSelectedPageV332);\n    return data;\n  }\n  async function saveSeoPageV332(button){\n    const keyPage=seoSelectedKeyPageV336;\n    const normalPage=seoSelectedPageV332;\n    if(!keyPage&&!normalPage)throw new Error(\"Choose a page first.\");\n    const payload={\n      seoTitle:String($(\"seoTitleInputV332\")?.value||\"\").trim(),\n      seoDescription:String($(\"seoDescriptionInputV332\")?.value||\"\").trim(),\n      indexable:Boolean($(\"seoIndexableInputV332\")?.checked)\n    };\n    const result=$(\"seoSaveResultV332\");setLoading(button,true);\n    try{\n      let data,updated;\n      if(keyPage){\n        data=await api(\"/api/admin/seo/key-pages/\"+encodeURIComponent(keyPage.id),{method:\"PUT\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:45000});\n        updated=data.page;if(!updated?.id)throw new Error(\"Shopify did not return verified key-page SEO.\");\n        seoKeyPagesV336=seoKeyPagesV336.map(page=>page.id===updated.id?updated:page);\n        openSeoKeyPageV336(updated);\n      }else{\n        data=await api(\"/api/admin/seo/pages/\"+encodeURIComponent(normalPage.id),{method:\"PUT\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:45000});\n        updated=data.page;if(!updated?.id)throw new Error(\"Shopify did not return the verified Page SEO.\");\n        seoPagesV332=seoPagesV332.map(page=>page.id===updated.id?updated:page);\n        openSeoPageV332(updated);\n      }\n      if(result){result.hidden=false;result.classList.remove(\"error\");result.textContent=\"Saved and read back from Shopify. Search engines can take time to recrawl the updated listing.\";}\n      setNotice(\"SEO saved and verified in Shopify.\");\n    }catch(error){\n      if(result){result.hidden=false;result.classList.add(\"error\");result.textContent=error.message||String(error);}\n      throw error;\n    }finally{setLoading(button,false);}\n  }\n\n  let seoRankingsLoadedV477=false;\n  function setSeoPaneV477(pane=\"pages\"){\n    const next=[\"pages\",\"rankings\",\"sitemaps\"].includes(pane)?pane:\"pages\";\n    document.querySelectorAll(\"[data-seo-pane-v477]\").forEach(button=>button.classList.toggle(\"active\",button.dataset.seoPaneV477===next));\n    document.querySelectorAll(\"[data-seo-pane-panel-v477]\").forEach(panel=>panel.hidden=panel.dataset.seoPanePanelV477!==next);\n    if(next===\"rankings\"&&!seoRankingsLoadedV477)loadSeoRankingsV477(null).catch(err=>setNotice(err.message||err,true));\n    if(next===\"sitemaps\")loadSeoSitemapV494(null).catch(err=>setNotice(err.message||err,true));\n  }\n  function seoMetricHelpersV494(){return {pct:n=>(Number(n||0)*100).toFixed(1)+\"%\",pos:n=>Number(n||0)>0?Number(n).toFixed(1):\"\u2014\",num:n=>Number(n||0).toLocaleString(\"en-GB\")};}\n  function renderSeoRankingsV477(data={},traffic={}){\n    const status=$(\"seoRankingsStatusV477\"),summary=$(\"seoRankingsSummaryV477\"),table=$(\"seoRankingsTableV477\"),queries=$(\"seoQueriesTableV494\"),trafficSummary=$(\"seoTrafficSummaryV494\"),pages=Array.isArray(data.pages)?data.pages:[],queryRows=Array.isArray(data.queries)?data.queries:[],snap=data.summary||{},h=seoMetricHelpersV494(),siteLabel=data.site?.label||traffic.site?.label||\"Selected website\";\n    if(!data.configured){if(status){status.className=\"orbit-notice warning\";status.innerHTML=\"<strong>Search Console is not connected.</strong> Connect Search Console in Analytics \u2192 Google Analytics first.\";}if(summary)summary.innerHTML=\"\";if(table)table.innerHTML=\"<div class='orbit-empty-state'><strong>Search Console connection required</strong></div>\";if(queries)queries.innerHTML=\"\";}\n    else{if(status){status.className=\"orbit-notice success\";status.innerHTML=\"<strong>Live \"+esc(siteLabel)+\" Google search data.</strong> \"+esc(data.periodLabel||\"Selected period\")+\" \u00B7 rankings are read directly from Search Console.\";}if(summary)summary.innerHTML=[[\"Organic clicks\",h.num(snap.clicks)],[\"Impressions\",h.num(snap.impressions)],[\"CTR\",h.pct(snap.ctr)],[\"Average position\",h.pos(snap.averagePosition)]].map(x=>\"<article><span>\"+esc(x[0])+\"</span><strong>\"+esc(x[1])+\"</strong></article>\").join(\"\");if(queries)queries.innerHTML=queryRows.length?\"<table><thead><tr><th>Search query</th><th>Clicks</th><th>Impressions</th><th>CTR</th><th>Avg. position</th></tr></thead><tbody>\"+queryRows.map(row=>\"<tr><td><strong>\"+esc(row.query||\"(not set)\")+\"</strong></td><td>\"+h.num(row.clicks)+\"</td><td>\"+h.num(row.impressions)+\"</td><td>\"+h.pct(row.ctr)+\"</td><td>\"+h.pos(row.averagePosition)+\"</td></tr>\").join(\"\")+\"</tbody></table>\":\"<div class='orbit-empty-state'><strong>No search queries in this period</strong></div>\";if(table)table.innerHTML=pages.length?\"<table><thead><tr><th>Landing page</th><th>Clicks</th><th>Impressions</th><th>CTR</th><th>Avg. position</th></tr></thead><tbody>\"+pages.map(row=>\"<tr><td><strong>\"+esc(row.page||\"(not set)\")+\"</strong></td><td>\"+h.num(row.clicks)+\"</td><td>\"+h.num(row.impressions)+\"</td><td>\"+h.pct(row.ctr)+\"</td><td>\"+h.pos(row.averagePosition)+\"</td></tr>\").join(\"\")+\"</tbody></table>\":\"<div class='orbit-empty-state'><strong>No organic landing pages in this period</strong></div>\";}\n    const tm=traffic.metrics||{};if(trafficSummary)trafficSummary.innerHTML=traffic.configured===false?\"<article><span>GA4 traffic</span><strong>Not configured</strong></article>\":[[\"GA4 users\",h.num(tm.activeUsers)],[\"GA4 sessions\",h.num(tm.sessions)],[\"Page views\",h.num(tm.screenPageViews)],[\"New users\",h.num(tm.newUsers)]].map(x=>\"<article><span>\"+esc(x[0])+\"</span><strong>\"+esc(x[1])+\"</strong></article>\").join(\"\");\n  }\n  async function loadSeoRankingsV477(button){const token=siteReadV544(\"seo-rankings\");clearSiteTargetsV544([\"seoRankingsSummaryV477\",\"seoRankingsTableV477\",\"seoQueriesTableV494\",\"seoTrafficSummaryV494\"],\"\");clearSiteTargetsV544([\"seoRankingsStatusV477\"]);const period=$(\"seoRankingsPeriodV477\")?.value||\"last_30_days\",site=token.site;siteLoadingV544(button,token,true);try{const [data,traffic]=await Promise.all([api(\"/api/admin/seo/rankings?period=\"+encodeURIComponent(period)+\"&site=\"+encodeURIComponent(site),{cacheMs:0,timeoutMs:30000}),api(\"/api/admin/google-analytics/report?period=\"+encodeURIComponent(period)+\"&site=\"+encodeURIComponent(site),{cacheMs:0,timeoutMs:30000}).catch(()=>({configured:false,metrics:{}}))]);if(!token.current())return data;seoRankingsLoadedV477=true;renderSeoRankingsV477(data,traffic);return data;}catch(error){siteReadFailureV544(token,\"seoRankingsStatusV477\",error);}finally{siteLoadingV544(button,token,false);}}\n  async function loadSeoSitemapV494(button){const token=siteReadV544(\"seo-sitemap\");clearSiteTargetsV544([\"seoSitemapStatusV494\",\"seoSitemapDetailV494\"]);const site=token.site,status=$(\"seoSitemapStatusV494\"),detail=$(\"seoSitemapDetailV494\");siteLoadingV544(button,token,true);try{const data=await api(\"/api/admin/seo/sitemaps?site=\"+encodeURIComponent(site),{cacheMs:0,timeoutMs:30000});if(!token.current())return data;if(status){status.className=\"orbit-notice \"+(data.configured?\"success\":\"warning\");status.innerHTML=data.configured?(\"<strong>\"+esc(data.site?.label||site)+\" sitemap is connected to Search Console.</strong> \"+esc(data.sitemapUrl||\"\")):\"<strong>Step 1 is still needed: connect Search Console.</strong> Open the Search Console setup in Analytics, add and DNS-verify all four Domain properties, then connect Orbit read-only once.\";}if(detail){const rows=data.sitemaps||[];detail.innerHTML=\"<p><strong>Configured sitemap:</strong> \"+esc(data.sitemapUrl||\"\u2014\")+\"</p><p><strong>Sitemap write permission:</strong> \"+(data.writePermissionConnected?\"Authorized separately\":\"Not authorized \u00B7 read-only status still works\")+\"</p>\"+(rows.length?\"<table><thead><tr><th>Submitted sitemap</th><th>Last submitted</th><th>Warnings</th><th>Errors</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td>\"+esc(r.path||\"\")+\"</td><td>\"+esc(r.lastSubmitted?prettyDate(r.lastSubmitted):\"\u2014\")+\"</td><td>\"+Number(r.warnings||0)+\"</td><td>\"+Number(r.errors||0)+\"</td></tr>\").join(\"\")+\"</tbody></table>\":\"<div class='orbit-empty-state'><strong>Google has not returned a submitted sitemap for this property yet.</strong><span>Once Search Console is connected and the Domain property is verified, press Submit to Google once.</span></div>\");}return data;}catch(error){siteReadFailureV544(token,\"seoSitemapStatusV494\",error);if(token.current())clearSiteTargetsV544([\"seoSitemapDetailV494\"],\"Sitemap status unavailable for this website. Use Refresh to retry.\");}finally{siteLoadingV544(button,token,false);}}\n  async function submitSeoSitemapV494(button){const site=$(\"seoSitemapSiteV494\")?.value||\"collectors_club\";if(!confirm(\"Submit this website's configured sitemap to Google Search Console? This does not change the public website.\"))return;setLoading(button,true);try{const result=await api(\"/api/admin/seo/sitemaps/submit\",{method:\"POST\",body:JSON.stringify({site}),cacheMs:0,timeoutMs:30000});setNotice(\"Sitemap submitted to Google: \"+(result.sitemapUrl||\"\"));await loadSeoSitemapV494(null);}finally{setLoading(button,false);}}\n\n  let seoProductsV333=[];\n  let seoSelectedProductV333=null;\n  let seoCanWriteFilesV333=false;\n\n  function switchSeoResourceV333(resource){\n    document.querySelectorAll(\"[data-seo-resource-v333]\").forEach(button=>button.classList.toggle(\"active\",button.dataset.seoResourceV333===resource));\n    document.querySelectorAll(\"[data-seo-resource-panel-v333]\").forEach(panel=>panel.hidden=panel.dataset.seoResourcePanelV333!==resource);\n    if(resource===\"products\" && !seoProductsV333.length) loadSeoProductsV333().catch(err=>setNotice(\"Product SEO unavailable: \"+(err.message||err),true));\n    if(resource===\"collections\" && !seoCollectionsV333.length) loadSeoCollectionsV333().catch(err=>setNotice(\"Collection SEO unavailable: \"+(err.message||err),true));\n  }\n  function updateSeoProductPreviewV333(){\n    const title=String($(\"seoProductTitleInputV333\")?.value||\"\");\n    const description=String($(\"seoProductDescriptionInputV333\")?.value||\"\");\n    text(\"seoProductTitleCountV333\",title.length);\n    text(\"seoProductDescriptionCountV333\",description.length);\n    text(\"seoProductPreviewTitleV333\",title||seoSelectedProductV333?.title||\"Product title\");\n    text(\"seoProductPreviewUrlV333\",seoSelectedProductV333?(\"orbitcollectorsclub.com/products/\"+seoSelectedProductV333.handle):\"orbitcollectorsclub.com/products/\u2026\");\n    text(\"seoProductPreviewDescriptionV333\",description||\"Meta description preview.\");\n  }\n  function renderSeoProductListV333(){\n    const target=$(\"seoProductListV333\");if(!target)return;\n    const q=String($(\"seoProductSearchV333\")?.value||\"\").trim().toLowerCase();\n    const rows=seoProductsV333.filter(product=>!q||[product.title,product.handle,product.status].join(\" \").toLowerCase().includes(q));\n    if(!rows.length){target.innerHTML=\"<div class='orbit-empty-state'><strong>No matching products</strong><span>Try another search.</span></div>\";return;}\n    target.innerHTML=rows.map(product=>{\n      const selected=seoSelectedProductV333?.id===product.id;\n      return \"<button type='button' class='orbit-seo-page-row-v332\"+(selected?\" active\":\"\")+\"' data-seo-product-id='\"+esc(product.id)+\"'><span><strong>\"+esc(product.title||product.handle)+\"</strong><small>/products/\"+esc(product.handle)+\"</small></span><b>\"+esc(product.status||\"\")+\"</b></button>\";\n    }).join(\"\");\n  }\n  function renderSeoProductImagesV333(){\n    const target=$(\"seoProductImagesV333\");if(!target)return;\n    const media=Array.isArray(seoSelectedProductV333?.media)?seoSelectedProductV333.media:[];\n    if($(\"seoFileWriteStatusV333\")){\n      $(\"seoFileWriteStatusV333\").className=\"orbit-status-pill \"+(seoCanWriteFilesV333?\"success\":\"warning\");\n      $(\"seoFileWriteStatusV333\").textContent=seoCanWriteFilesV333?\"Alt editing enabled\":\"File scope required\";\n    }\n    if(!media.length){target.innerHTML=\"<div class='orbit-empty-state'><strong>No product images found</strong><span>This product has no MediaImage records in the first 25 media items.</span></div>\";return;}\n    target.innerHTML=media.map(file=>{\n      const image=file.url?\"<img src='\"+esc(file.url)+\"' alt=''>\":\"<div class='orbit-seo-image-placeholder-v333'>No preview</div>\";\n      return \"<div class='orbit-seo-image-row-v333' data-seo-file-row='\"+esc(file.id)+\"'>\"+image+\"<div><strong>\"+esc(file.status||\"Image\")+\"</strong><label>Alt text<input type='text' data-seo-file-alt='\"+esc(file.id)+\"' value='\"+esc(file.alt||\"\")+\"' maxlength='512' \"+(seoCanWriteFilesV333?\"\":\"disabled\")+\"></label><small>\"+(seoCanWriteFilesV333?\"Saved directly to Shopify Files.\":\"Connected token needs write_files or write_themes to edit alt text.\")+\"</small></div><button type='button' class='secondary' data-seo-file-save='\"+esc(file.id)+\"' \"+(seoCanWriteFilesV333?\"\":\"disabled\")+\">Save Alt</button></div>\";\n    }).join(\"\");\n  }\n  function openSeoProductV333(product){\n    seoSelectedProductV333=product||null;\n    if($(\"seoProductEditorEmptyV333\"))$(\"seoProductEditorEmptyV333\").hidden=Boolean(product);\n    if($(\"seoProductEditorV333\"))$(\"seoProductEditorV333\").hidden=!product;\n    if(!product){renderSeoProductListV333();return;}\n    text(\"seoProductNameV333\",product.title||product.handle);\n    text(\"seoProductUrlV333\",\"/products/\"+product.handle+\" \u00B7 \"+(product.status||\"\"));\n    if($(\"seoOpenProductV333\"))$(\"seoOpenProductV333\").href=\"https://orbitcollectorsclub.com/products/\"+encodeURIComponent(product.handle);\n    if($(\"seoProductTitleInputV333\"))$(\"seoProductTitleInputV333\").value=product.seoTitle||product.title||\"\";\n    if($(\"seoProductDescriptionInputV333\"))$(\"seoProductDescriptionInputV333\").value=product.seoDescription||\"\";\n    updateSeoProductPreviewV333();renderSeoProductListV333();renderSeoProductImagesV333();\n  }\n  async function loadSeoProductsV333(){\n    const status=$(\"seoProductConnectionStatusV333\");if(status){status.className=\"orbit-status-pill waiting\";status.textContent=\"Loading\";}\n    const data=await api(\"/api/admin/seo/products\",{cacheMs:0,timeoutMs:30000});\n    seoProductsV333=Array.isArray(data.products)?data.products:[];\n    seoCanWriteFilesV333=Boolean(data.canWriteFiles);\n    if(status){status.className=\"orbit-status-pill \"+(data.authorised?\"success\":\"warning\");status.textContent=data.authorised?(seoProductsV333.length+\" products\"):\"Reconnect Shopify\";}\n    const prior=seoSelectedProductV333?.id;\n    seoSelectedProductV333=prior?seoProductsV333.find(product=>product.id===prior)||null:null;\n    renderSeoProductListV333();\n    if(seoSelectedProductV333)openSeoProductV333(seoSelectedProductV333);\n    return data;\n  }\n  async function saveSeoProductV333(button){\n    if(!seoSelectedProductV333)throw new Error(\"Choose a Shopify Product first.\");\n    const payload={\n      seoTitle:String($(\"seoProductTitleInputV333\")?.value||\"\").trim(),\n      seoDescription:String($(\"seoProductDescriptionInputV333\")?.value||\"\").trim()\n    };\n    const result=$(\"seoProductSaveResultV333\");setLoading(button,true);\n    try{\n      const data=await api(\"/api/admin/seo/products/\"+encodeURIComponent(seoSelectedProductV333.id),{method:\"PUT\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:45000});\n      const updated=data.product;if(!updated?.id)throw new Error(\"Shopify did not return the verified Product SEO.\");\n      seoProductsV333=seoProductsV333.map(product=>product.id===updated.id?updated:product);\n      seoSelectedProductV333=updated;openSeoProductV333(updated);\n      if(result){result.hidden=false;result.classList.remove(\"error\");result.textContent=\"Product SEO saved and read back from Shopify.\";}\n      setNotice(\"Shopify Product SEO saved and verified.\");\n    }catch(error){\n      if(result){result.hidden=false;result.classList.add(\"error\");result.textContent=error.message||String(error);}\n      throw error;\n    }finally{setLoading(button,false);}\n  }\n  async function saveSeoFileAltV333(button){\n    const fileId=button?.dataset?.seoFileSave;if(!fileId)return;\n    const input=document.querySelector(\"[data-seo-file-alt='\"+CSS.escape(fileId)+\"']\");\n    const alt=String(input?.value||\"\").trim();\n    setLoading(button,true);\n    try{\n      const data=await api(\"/api/admin/seo/files/\"+encodeURIComponent(fileId)+\"/alt\",{method:\"PUT\",body:JSON.stringify({alt}),cacheMs:0,timeoutMs:45000});\n      const file=data.file;if(!file?.id)throw new Error(\"Shopify did not return the verified image file.\");\n      if(seoSelectedProductV333){\n        seoSelectedProductV333.media=(seoSelectedProductV333.media||[]).map(item=>item.id===file.id?{...item,alt:file.alt,status:file.status||item.status}:item);\n        seoProductsV333=seoProductsV333.map(product=>product.id===seoSelectedProductV333.id?seoSelectedProductV333:product);\n      }\n      renderSeoProductImagesV333();setNotice(\"Image alt text saved and verified in Shopify.\");\n    }finally{setLoading(button,false);}\n  }\n\n  let seoCollectionsV333=[];\n  let seoSelectedCollectionV333=null;\n  function updateSeoCollectionPreviewV333(){\n    const title=String($(\"seoCollectionTitleInputV333\")?.value||\"\");\n    const description=String($(\"seoCollectionDescriptionInputV333\")?.value||\"\");\n    text(\"seoCollectionTitleCountV333\",title.length);\n    text(\"seoCollectionDescriptionCountV333\",description.length);\n    text(\"seoCollectionPreviewTitleV333\",title||seoSelectedCollectionV333?.title||\"Collection title\");\n    text(\"seoCollectionPreviewUrlV333\",seoSelectedCollectionV333?(\"orbitcollectorsclub.com/collections/\"+seoSelectedCollectionV333.handle):\"orbitcollectorsclub.com/collections/\u2026\");\n    text(\"seoCollectionPreviewDescriptionV333\",description||\"Meta description preview.\");\n  }\n  function renderSeoCollectionListV333(){\n    const target=$(\"seoCollectionListV333\");if(!target)return;\n    const q=String($(\"seoCollectionSearchV333\")?.value||\"\").trim().toLowerCase();\n    const rows=seoCollectionsV333.filter(collection=>!q||[collection.title,collection.handle].join(\" \").toLowerCase().includes(q));\n    if(!rows.length){target.innerHTML=\"<div class='orbit-empty-state'><strong>No matching collections</strong><span>Try another search.</span></div>\";return;}\n    target.innerHTML=rows.map(collection=>{\n      const selected=seoSelectedCollectionV333?.id===collection.id;\n      return \"<button type='button' class='orbit-seo-page-row-v332\"+(selected?\" active\":\"\")+\"' data-seo-collection-id='\"+esc(collection.id)+\"'><span><strong>\"+esc(collection.title||collection.handle)+\"</strong><small>/collections/\"+esc(collection.handle)+\"</small></span><b>Collection</b></button>\";\n    }).join(\"\");\n  }\n  function openSeoCollectionV333(collection){\n    seoSelectedCollectionV333=collection||null;\n    if($(\"seoCollectionEditorEmptyV333\"))$(\"seoCollectionEditorEmptyV333\").hidden=Boolean(collection);\n    if($(\"seoCollectionEditorV333\"))$(\"seoCollectionEditorV333\").hidden=!collection;\n    if(!collection){renderSeoCollectionListV333();return;}\n    text(\"seoCollectionNameV333\",collection.title||collection.handle);\n    text(\"seoCollectionUrlV333\",\"/collections/\"+collection.handle);\n    if($(\"seoOpenCollectionV333\"))$(\"seoOpenCollectionV333\").href=\"https://orbitcollectorsclub.com/collections/\"+encodeURIComponent(collection.handle);\n    if($(\"seoCollectionTitleInputV333\"))$(\"seoCollectionTitleInputV333\").value=collection.seoTitle||collection.title||\"\";\n    if($(\"seoCollectionDescriptionInputV333\"))$(\"seoCollectionDescriptionInputV333\").value=collection.seoDescription||\"\";\n    updateSeoCollectionPreviewV333();renderSeoCollectionListV333();\n  }\n  async function loadSeoCollectionsV333(){\n    const status=$(\"seoCollectionConnectionStatusV333\");if(status){status.className=\"orbit-status-pill waiting\";status.textContent=\"Loading\";}\n    const data=await api(\"/api/admin/seo/collections\",{cacheMs:0,timeoutMs:30000});\n    seoCollectionsV333=Array.isArray(data.collections)?data.collections:[];\n    if(status){status.className=\"orbit-status-pill \"+(data.authorised?\"success\":\"warning\");status.textContent=data.authorised?(seoCollectionsV333.length+\" collections\"):\"Reconnect Shopify\";}\n    const prior=seoSelectedCollectionV333?.id;\n    seoSelectedCollectionV333=prior?seoCollectionsV333.find(row=>row.id===prior)||null:null;\n    renderSeoCollectionListV333();\n    if(seoSelectedCollectionV333)openSeoCollectionV333(seoSelectedCollectionV333);\n    return data;\n  }\n  async function saveSeoCollectionV333(button){\n    if(!seoSelectedCollectionV333)throw new Error(\"Choose a Shopify Collection first.\");\n    const payload={\n      seoTitle:String($(\"seoCollectionTitleInputV333\")?.value||\"\").trim(),\n      seoDescription:String($(\"seoCollectionDescriptionInputV333\")?.value||\"\").trim()\n    };\n    const result=$(\"seoCollectionSaveResultV333\");setLoading(button,true);\n    try{\n      const data=await api(\"/api/admin/seo/collections/\"+encodeURIComponent(seoSelectedCollectionV333.id),{method:\"PUT\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:45000});\n      const updated=data.collection;if(!updated?.id)throw new Error(\"Shopify did not return the verified Collection SEO.\");\n      seoCollectionsV333=seoCollectionsV333.map(row=>row.id===updated.id?updated:row);\n      seoSelectedCollectionV333=updated;openSeoCollectionV333(updated);\n      if(result){result.hidden=false;result.classList.remove(\"error\");result.textContent=\"Collection SEO saved and read back from Shopify.\";}\n      setNotice(\"Shopify Collection SEO saved and verified.\");\n    }catch(error){\n      if(result){result.hidden=false;result.classList.add(\"error\");result.textContent=error.message||String(error);}\n      throw error;\n    }finally{setLoading(button,false);}\n  }\n\n\n  async function loadMetaBridgeV4484(){\n    const status=$(\"metaBridgeStatus\"),setup=$(\"metaBridgeSetup\"),area=$(\"metaBridgeCode\");\n    if(status)status.textContent=\"Loading Orbit checkout bridge\u2026\";\n    try{const data=await api(\"/api/admin/shopify-pixel-bridge\",{cacheMs:0,timeoutMs:30000});if(area)area.value=data.code||\"\";if(setup)setup.hidden=false;const d=data.diagnostics||{},last=d.lastEvent||null,diag=$(\"metaBridgeDiagnostics\");const auth=d.authoritativeTicketInitiateCheckout||null;\n      if(auth&&status){\n        const meta=auth.meta||{};\n        status.className=\"orbit-performance-tracking-status \"+(meta.sent?\"success\":\"warning\");\n        status.textContent=meta.sent\n          ?(\"Authoritative Ticket InitiateCheckout sent to Orbit Show Tickets \u00B7 \"+auth.checkoutId+\" \u00B7 \"+new Date(auth.sentAt).toLocaleString())\n          :(\"Ticket checkout created but Meta CAPI needs attention \u00B7 \"+auth.checkoutId+\" \u00B7 \"+String(meta.reason||meta.error||\"not sent\"));\n      }else if(last){if(status){const transportOk=last.status===\"transport_ok\";const accepted=last.status===\"accepted\"||last.status===\"duplicate\";status.className=\"orbit-performance-tracking-status \"+(transportOk||accepted?\"success\":\"warning\");status.textContent=(transportOk?\"Shopify pixel transport connected\":accepted?\"Live checkout bridge event received\":\"Bridge event received but rejected\")+\" \u00B7 \"+(last.eventName||\"unknown\")+\" \u00B7 \"+new Date(last.receivedAt).toLocaleString();}if(diag){\n        if(auth){\n          const am=auth.meta||{};\n          diag.hidden=false;\n          diag.innerHTML=\"<strong>Authoritative Ticket Meta</strong><br>Checkout: \"+esc(auth.checkoutId||\"\u2014\")+\"<br>Event: InitiateCheckout<br>Source: Orbit checkout creation<br>Value: \u00A3\"+Number(auth.value||0).toFixed(2)+\"<br>Meta: \"+esc(am.sent?\"Sent to Orbit Show Tickets\":(am.reason||am.error||\"Not sent\"))+\"<br>Event ID: \"+esc(am.eventId||(\"orbit_ticket_checkout_started_\"+String(auth.checkoutId||\"\")))+\"<br>Recorded: \"+esc(auth.sentAt||\"\u2014\")+\"<hr>\";\n        }\n        const prior=diag?.innerHTML||\"\";\n        const meta=last.meta||{};diag.hidden=false;diag.innerHTML=prior+\"<strong>Last Shopify telemetry event</strong><br>Event: \"+esc(last.eventName||\"\u2014\")+\"<br>Status: \"+esc(last.status||\"\u2014\")+\"<br>Orbit checkout: \"+esc(last.checkoutId||\"not applicable / not recognised\")+\"<br>Result: \"+esc(last.reason||\"\u2014\")+\"<br>Meta forwarding: \"+esc(last.status===\"transport_ok\"?\"Transport heartbeat only\":meta.sent?\"Sent to Orbit Show Tickets InitiateCheckout\":(meta.skipped?(\"Skipped \u00B7 \"+(meta.reason||\"\")):(meta.error?(\"Failed \u00B7 \"+meta.error):\"No forwarding result\")))+\"<br>Received: \"+esc(last.receivedAt||\"\u2014\");}}else{if(status)status.textContent=\"Bridge installed/setup available \u00B7 no Shopify checkout event has reached Orbit diagnostics yet.\";if(diag){diag.hidden=false;diag.textContent=\"No bridge events recorded yet. Start an Orbit ticket checkout after the Shopify Custom Pixel is connected, then Reload this panel.\";}}return data;}catch(error){if(status)status.textContent=\"Could not load bridge: \"+error.message;throw error;}\n  }\n  async function copyMetaBridgeV4484(){\n    const area=$(\"metaBridgeCode\"),result=$(\"metaBridgeResult\"); if(!area?.value)return;\n    try{await navigator.clipboard.writeText(area.value);if(result){result.hidden=false;result.textContent=\"Copied. Paste into a new Shopify Custom Pixel on the Collectors Club Shopify store.\";}}catch(_){area.focus();area.select();document.execCommand(\"copy\");if(result){result.hidden=false;result.textContent=\"Copied.\";}}\n  }\n  async function loadMetaIsolationHealthV4482(button=null){\n    if(button)setLoading(button,true);\n    try{\n      const data=await api(\"/api/admin/meta-isolation-health\",{cacheMs:0,timeoutMs:45000});\n      const status=$(\"metaIsolationHealthResult\"),detail=$(\"metaIsolationHealthDetail\");\n      if(status){\n        status.className=\"orbit-performance-tracking-status \"+(data.healthy?\"success\":\"warning\");\n        status.textContent=data.healthy?\"Healthy \u00B7 each Orbit website has only its own Meta dataset\":\"Attention required \u00B7 a Meta dataset is appearing on the wrong website\";\n      }\n      if(detail){\n        const rows=(data.results||[]).map(row=>{\n          const name=row.label||({card_show:\"Orbit Card Show\",show_tickets:\"Orbit Show Tickets\",collectors_club:\"Orbit Collectors Club\",card_show_index:\"CardShowIndex\"}[row.key]||row.key||\"Website\");\n          if(row.scanError)return \"<div><strong>\"+esc(name)+\"</strong><span>Scan failed: \"+esc(row.scanError)+\"</span></div>\";\n          const bad=Array.isArray(row.forbidden)?row.forbidden:[];\n          const forbidden=bad.length\n            ?bad.map(item=>\"Wrong Pixel \"+esc(item.id||\"unknown\")+(item.appManaged?\" \u00B7 Shopify Facebook & Instagram app Web Pixel\":\"\")).join(\" \u00B7 \")\n            :\"No foreign Orbit dataset detected\";\n          const own=row.allowed?.present?(\"Own Pixel present\"+(row.allowed?.appManaged?\" \u00B7 app managed\":\"\")):(row.allowed?\"Own Pixel not found\":\"Own Pixel not configured\");\n          return \"<div><strong>\"+esc(name)+\"</strong><span>\"+own+\" \u00B7 \"+forbidden+\"</span></div>\";\n        }).join(\"\");\n        let remediation=\"\";\n        if(data.remediation){\n          const r=data.remediation,checks=Array.isArray(r.checks)?r.checks:[],steps=Array.isArray(r.steps)?r.steps:[];\n          remediation=\"<section class='orbit-meta-remediation-v495'><strong>Why Show Tickets can show the Club Pixel</strong><p>\"+esc(r.cause||\"\")+\"</p><ul>\"+checks.map(x=>\"<li class='\"+(x.ok?\"ready\":\"missing\")+\"'>\"+(x.ok?\"\u2713 \":\"\u2717 \")+esc(x.label||x.key)+\"</li>\").join(\"\")+\"</ul><p><strong>\"+(r.ready?\"Safe to complete the manual Shopify cutover\":\"Do not disable Shopify Meta yet\")+\"</strong></p>\"+(r.ready?(\"<ol>\"+steps.map(x=>\"<li>\"+esc(x)+\"</li>\").join(\"\")+\"</ol><p><strong>Important:</strong> \"+esc(r.protectedWarning||\"\")+\"</p><a class='orbit-button-link' href='https://admin.shopify.com/' target='_blank' rel='noopener'>Open Shopify Admin \u2197</a>\"):\"<p>Complete the missing red readiness checks above first. Orbit will not automatically change Shopify or Meta settings.</p>\")+\"</section>\";\n        }\n        detail.hidden=false;\n        detail.classList.toggle(\"error\",!data.healthy);\n        detail.innerHTML=rows+(data.actionRequired?\"<p><strong>Next action:</strong> \"+esc(data.actionRequired)+\"</p>\":\"\")+remediation;\n      }\n      return data;\n    }finally{if(button)setLoading(button,false);}\n  }\n\n  // V535: Club receipt proof is separate from the unchanged Ticket diagnostics.\n  function renderClubMetaConversionDiagnosticsV535(data){\n    const status=$(\"clubMetaConversionDiagnosticsStatus\"),detail=$(\"clubMetaConversionDiagnosticsDetail\");\n    const health=data.health||{},rows=Array.isArray(data.events)?data.events:[],latest=rows[0]||null;\n    const labels={accepted:\"Meta API accepted\",rejected:\"Meta API rejected\",unknown:\"Outcome unknown\",attempting:\"Request in progress\",blocked:\"Not submitted\",skipped:\"Excluded from advertising\",legacy_sent_unverified:\"Previous send: acceptance unverified\",failed:\"Previous failure: no receipt recorded\"};\n    const label=row=>labels[row.status]||\"Acceptance unverified\";\n    const amount=row=>row.value!==null&&row.value!==undefined&&Number.isFinite(Number(row.value))?Number(row.value).toFixed(2)+\" \"+String(row.currency||\"\"):\"Not recorded\";\n    const when=value=>value?new Date(value).toLocaleString():\"Not recorded\";\n    if(status){\n      const configured=Boolean(health.enabled&&health.tokenConfigured&&health.pixelId);\n      const proved=latest&&latest.receiptVerified===true&&latest.pixelId===health.pixelId;\n      status.className=\"orbit-performance-tracking-status \"+(configured&&proved?\"success\":\"warning\");\n      status.textContent=!health.enabled?\"Club CAPI is disabled\":!health.tokenConfigured?\"Club CAPI token missing\":!health.pixelId?\"Club dataset missing\":latest?label(latest)+(proved?\" \u00B7 \"+latest.eventsReceived+\" event received \u00B7 \"+amount(latest):\"\"):\"Configured \u00B7 no conversion receipts yet\";\n    }\n    if(!detail)return;\n    detail.className=\"orbit-action-result orbit-club-capi-receipts-v535\";\n    detail.hidden=false;\n    const mode=health.testMode?\"Test mode \u00B7 request code \"+String(health.testEventCode||\"configured\"):\"Production mode \u00B7 no test_event_code in new requests\";\n    const intro=\"<p><strong>Current settings:</strong> \"+esc(mode)+\" \u00B7 Dataset \"+esc(health.pixelId||\"not configured\")+\"</p><p>Shopify Facebook &amp; Instagram data sharing must remain OFF. API acceptance does not by itself certify ads. Match the exact event ID in Meta Test Events before marking Fixed.</p>\";\n    detail.innerHTML=intro+(rows.length?rows.map(row=>{\n      const code=row.testEventCode===null||row.testEventCode===undefined?\"Not recorded in this older release\":row.testEventCode?row.testEventCode+\" (included in request)\":\"Absent (production request)\";\n      const received=row.eventsReceived===null||row.eventsReceived===undefined?\"Not recorded\":String(row.eventsReceived);\n      const http=row.httpStatus===null||row.httpStatus===undefined?\"No response recorded\":String(row.httpStatus);\n      const attempts=row.attemptCount===null||row.attemptCount===undefined?\"Not recorded\":String(row.attemptCount);\n      const reason=row.suppressedFreeOrder?\"This free/fully discounted order was not sent to Meta as a Purchase.\":row.failureReason||row.error||\"\";\n      const summary=row.responseSummary?\"<details><summary>View Meta response</summary><pre style='white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%;max-height:240px;overflow:auto'>\"+esc(JSON.stringify(row.responseSummary,null,2))+\"</pre></details>\":\"<p>No authoritative Meta response was retained for this record. Do not treat the old \u2018sent\u2019 label as proof.</p>\";\n      return \"<section style='padding:14px 0;border-top:1px solid #d7e1ec;overflow-wrap:anywhere'><strong>Purchase \u00B7 \"+esc(label(row))+\"</strong><p style='margin:6px 0'>Value: <strong>\"+esc(amount(row))+\"</strong> \u00B7 Dataset: \"+esc(row.pixelId||\"not configured\")+\"<br>Shopify order: \"+esc(row.shopifyOrderId||\"not recorded\")+\"<br>Event ID: \"+esc(row.eventId||\"not recorded\")+\"</p><p style='margin:6px 0'>HTTP: <strong>\"+esc(http)+\"</strong> \u00B7 Meta events received: <strong>\"+esc(received)+\"</strong><br>HTTP attempts: \"+esc(attempts)+\" \u00B7 Duplicate submissions prevented: \"+esc(String(row.duplicateSuppressedCount||0))+\"<br>Test code: \"+esc(code)+\"<br>Attempted: \"+esc(when(row.attemptedAt))+\"<br>Response: \"+esc(when(row.respondedAt))+\"<br>Meta trace: \"+esc(row.providerId||\"not recorded\")+\"</p>\"+(reason?\"<p><strong>Reason:</strong> \"+esc(reason)+\"</p>\":\"\")+summary+\"<p style='margin-bottom:0'>\"+esc(row.retryState||\"No automatic historical replay\")+\". Meta deduplication and Test Events visibility are not reported by this receipt.</p></section>\";\n    }).join(\"\"):\"<p>No Club conversion records yet. Complete the saved Acceptance Test, then reload this panel.</p>\");\n  }\n\n  async function loadMetaConversionDiagnosticsV4489(button=null,kind=\"ticket\"){\n    if(button)setLoading(button,true);\n    try{\n      const businessKind=kind===\"club\"?\"club\":\"ticket\";\n      const data=await api(\"/api/admin/meta-conversion-diagnostics?kind=\"+encodeURIComponent(businessKind)+\"&limit=12\",{cacheMs:0,timeoutMs:30000});\n      const isClub=businessKind===\"club\";\n      const status=$(isClub?\"clubMetaConversionDiagnosticsStatus\":\"metaConversionDiagnosticsStatus\"),detail=$(isClub?\"clubMetaConversionDiagnosticsDetail\":\"metaConversionDiagnosticsDetail\");\n      const health=data.health||{},rows=Array.isArray(data.events)?data.events:[];\n      if(isClub){renderClubMetaConversionDiagnosticsV535(data);return data;}\n      const latest=rows[0]||null,label=isClub?\"Club\":\"Ticket\";\n      if(status){\n        const ok=Boolean(health.tokenConfigured)&&Boolean(health.enabled)&&(!latest||latest.status===\"sent\");\n        status.className=\"orbit-performance-tracking-status \"+(ok?\"success\":\"warning\");\n        status.textContent=!health.tokenConfigured?label+\" CAPI token missing\":!health.enabled?label+\" CAPI disabled\":latest?(latest.status===\"sent\"?(\"Runtime healthy \u00B7 last \"+latest.eventName+\" sent\"):(\"Attention \u00B7 last \"+latest.eventName+\" \"+latest.status)):\"Runtime configured \u00B7 no persisted conversion events yet\";\n      }\n      if(detail){\n        detail.hidden=false;\n        if(!rows.length){detail.innerHTML=\"<strong>No persisted \"+esc(label)+\" CAPI events yet.</strong><br>\"+(isClub?\"Complete one genuine paid membership signup, then reload this panel to prove the server Purchase.\":\"Start a ticket checkout to create an InitiateCheckout diagnostic.\");}\n        else detail.innerHTML=rows.map(row=>{\n          const when=row.sentAt||row.updatedAt||\"\",value=Number(row.value);\n          return \"<div style='padding:8px 0;border-bottom:1px solid #d7e1ec'><strong>\"+esc(row.eventName||\"Meta event\")+\" \u00B7 \"+esc(row.status||\"unknown\")+\"</strong><br>Pixel: \"+esc(row.pixelId||\"\u2014\")+\" \u00B7 Checkout: \"+esc(row.checkoutId||\"\u2014\")+(row.shopifyOrderId?(\" \u00B7 Shopify order: \"+esc(row.shopifyOrderId)):\"\")+(Number.isFinite(value)?(\" \u00B7 Value: \u00A3\"+esc(value.toFixed(2))+\" \"+esc(row.currency||\"GBP\")):\"\")+\"<br>Event ID: \"+esc(row.eventId||\"\u2014\")+\" \u00B7 \"+(row.testEvent?\"Test event\":\"Live event\")+(when?(\" \u00B7 \"+esc(new Date(when).toLocaleString())):\"\")+(row.error?(\"<br><strong>Error:</strong> \"+esc(row.error)):\"\")+\"</div>\";\n        }).join(\"\");\n      }\n      return data;\n    }finally{if(button)setLoading(button,false);}\n  }\n\n  // V544 single reporting selector. Selection is local UI state, never tracking configuration.\n  const performanceSitesV544={show_tickets:'orbitshowtickets.co.uk',collectors_club:'orbitcollectorsclub.com'};\n  let performanceSiteV544='show_tickets';\n  const performanceReadTokensV544={};\n  function setPerformanceWorkspaceSiteV628(routeKey=''){\n    const workspace=adminWorkspaceConfig[routeKey]?.businessWorkspace||canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());\n    const wanted=workspace==='members-club'?'collectors_club':'show_tickets';\n    if(!Object.prototype.hasOwnProperty.call(performanceSitesV544,wanted)||performanceSiteV544===wanted)return;\n    performanceSiteV544=wanted;for(const key of Object.keys(performanceReadTokensV544))performanceReadTokensV544[key]++;seoRankingsLoadedV477=false;showPerformanceSiteV544();\n  }\n  function selectedPerformanceSiteV544(){return performanceSiteV544;}\n  function performanceDomainV544(){return performanceSitesV544[performanceSiteV544];}\n  function siteReadV544(channel){const key=performanceSiteV544,sequence=(performanceReadTokensV544[channel]||0)+1;performanceReadTokensV544[channel]=sequence;return{site:key,id:channel+\":\"+sequence,current:()=>performanceSiteV544===key&&performanceReadTokensV544[channel]===sequence};}\n  function siteLoadingV544(button,token,loading){if(!button)return;if(loading){button.dataset.siteLoadingV544=token.id;setLoading(button,true);}else if(button.dataset.siteLoadingV544===token.id){delete button.dataset.siteLoadingV544;setLoading(button,false);}}\n  function siteReadFailureV544(token,id,error){if(!token.current()||!$(id))return;const message=String(error?.message||'Please try Refresh again.'),auth=/authorization.+(?:expired|revoked)|reconnect google analytics|invalid_grant/i.test(message),action=auth&&id==='analyticsOverviewStatusV468'?\"<button type='button' class='secondary orbit-inline-reconnect-v619' data-ga-reconnect-v619>Reconnect Google Analytics</button>\":'';$(id).className='orbit-info-banner warning';$(id).innerHTML='<strong>'+esc(performanceDomainV544())+' report unavailable.</strong><span>'+esc(message)+'</span>'+action;}\n  function clearSiteTargetsV544(ids,message='Loading selected website\u2026'){for(const id of ids)if($(id))$(id).textContent=message;}\n  function showPerformanceSiteV544(){\n    if($('performanceSiteV544'))$('performanceSiteV544').value=performanceSiteV544;\n    document.querySelectorAll('[data-performance-domain-v544]').forEach(e=>e.textContent=performanceDomainV544());\n    document.querySelectorAll('[data-performance-only-v544]').forEach(e=>e.hidden=e.dataset.performanceOnlyV544!==performanceSiteV544);\n    document.querySelectorAll('[data-orbit-site-card-v494]').forEach(e=>e.hidden=e.dataset.orbitSiteCardV494!==performanceSiteV544);\n    for(const id of ['analyticsSiteV494','seoSiteV494','seoSitemapSiteV494']){const e=$(id);if(e){e.value=performanceSiteV544;const label=e.closest('label');if(label)label.hidden=true;}}\n    for(const id of ['perfSignups','perfOnePound','perfUpgrades']){const card=$(id)?.closest('article');if(card)card.hidden=performanceSiteV544!=='collectors_club';}\n    const ticket=$('perfTickets')?.closest('article');if(ticket)ticket.hidden=performanceSiteV544!=='show_tickets';\n    const forecast=$('forecastTitle')?.closest('article');if(forecast)forecast.hidden=performanceSiteV544!=='collectors_club';\n    text('performanceRevenueLabelV544',performanceSiteV544==='collectors_club'?'Estimated signup receipts':'Ticket Centre revenue');\n    text('performanceRevenueBasisV544',performanceSiteV544==='collectors_club'?'All Club acquisition routes; not a payment ledger':'Paid Ticket Centre product sales; Eventbrite excluded');\n    const eventPanel=$('seoPageListV332')?.closest('article');if(eventPanel)eventPanel.hidden=performanceSiteV544!=='show_tickets';\n    if($('seoFillMissingDefaultsV335'))$('seoFillMissingDefaultsV335').hidden=performanceSiteV544!=='show_tickets';\n    document.querySelectorAll('[data-ad-performance-club-v547]').forEach(e=>e.hidden=performanceSiteV544!=='collectors_club');\n  }\n  function siteRecordMatchesV544(row){try{return new URL(seoPublicUrlV332(row)).hostname.toLowerCase().replace(/^www\\./,'')===performanceDomainV544();}catch(_){return false;}}\n  function renderSiteAttributionV544(targetId,data){\n    const target=$(targetId);if(!target)return;\n    if(!data||data.status==='partial'){target.innerHTML=\"<p>Stored attribution is unavailable. No zero total has been inferred.</p>\";return;}\n    const rows=data.rows||[],c=data.coverage||{};\n    target.innerHTML=table(['Captured source','Recorded visits','Recorded signups','Recorded tickets','Recorded value'],rows.map(row=>'<tr><td>'+esc(row.source||'Direct')+'</td><td>'+esc(row.visits||0)+'</td><td>'+esc(row.signups||0)+'</td><td>'+esc(row.tickets||0)+'</td><td>'+esc(performanceMoney(row.revenue))+'</td></tr>'),'No matching website-attributed records for this period.')+'<p class=\"orbit-muted\">'+esc(c.included??data.totalRecords??0)+' matching records. '+esc(c.unknownSiteRecords??0)+' records with unknown destinations excluded. '+(c.possiblyCapped?'This bounded history may be incomplete. ':'')+'Captured counters are not deduplicated paid sales.</p>';\n  }\n  async function changePerformanceSiteV544(value){\n    if(!Object.prototype.hasOwnProperty.call(performanceSitesV544,value)){showPerformanceSiteV544();return;}\n    if(value===performanceSiteV544)return;\n    if(state.currentModule==='seo'&&activeSeoRecordV336()){\n      const save=$('seoSavePageV332');if(save?.disabled&&!activeSeoRecordV336()?.permissionRequired){showPerformanceSiteV544();setNotice('Wait for the current SEO save to finish before changing website.',true);return;}\n      if(!confirm('Changing website closes the current SEO editor. Discard any unsaved edits?')){showPerformanceSiteV544();return;}\n      populateSeoEditorV336(null);\n    }\n    performanceSiteV544=value;try{localStorage.setItem('orbitPerformanceWebsiteV544',value);}catch(_){}\n    // Invalidate all in-flight responses, including failures, before clearing old values.\n    for(const key of Object.keys(performanceReadTokensV544))performanceReadTokensV544[key]++;\n    seoRankingsLoadedV477=false;showPerformanceSiteV544();\n    renderSeoKeyPagesV336();renderSeoPageListV332();\n    if(['performance','analytics-overview'].includes(state.currentModule))await Promise.allSettled([loadPerformanceOverview(null),loadAnalyticsOverviewV468(null),loadPerformanceRankingsV496(null)]);\n    else if(state.currentModule==='ad-performance')await loadAdPerformanceV547(false);\n    else if(state.currentModule==='analytics-sales')await loadAnalyticsCommercialV471(null);\n    else if(state.currentModule==='seo'){const pane=document.querySelector('[data-seo-pane-v477].active')?.dataset.seoPaneV477;if(pane==='rankings')await loadSeoRankingsV477(null);if(pane==='sitemaps')await loadSeoSitemapV494(null);}\n    // Google/Meta profile cards already contain their separately loaded values. No reload or save.\n  }\n\n  let adPerformanceDataV547=null;\n  function adPerformanceMetricV547(value,kind){const n=Number(value);if(!Number.isFinite(n))return '\u2014';if(kind==='money')return performanceMoney(n);if(kind==='percent')return (Math.round(n*100)/100).toLocaleString('en-GB')+'%';return (Math.round(n*100)/100).toLocaleString('en-GB');}\n  function renderAdPerformanceV547(data){\n    adPerformanceDataV547=data||null;const meta=data?.meta||{},totals=meta.totals||{},business=data?.business||{},planning=data?.planning||{},ads=Array.isArray(meta.ads)?meta.ads:[],signals=meta.signals||{};\n    text('adPerfSpendV547',meta.available?adPerformanceMetricV547(totals.spend,'money'):'\u2014');text('adPerfPurchasesV547',meta.available?adPerformanceMetricV547(totals.purchase):'\u2014');text('adPerfCpaV547',meta.available&&totals.costPerPurchase!=null?adPerformanceMetricV547(totals.costPerPurchase,'money'):'\u2014');text('adPerfCtrV547',meta.available?adPerformanceMetricV547(totals.ctr,'percent'):'\u2014');\n    const signups=business?.membership?.total;text('adPerfSignupsV547',signups==null?'\u2014':String(signups));text('adPerfExpectedV547',planning.expectedGrossReceiptsThroughFirstFullPayment==null?'\u2014':adPerformanceMetricV547(planning.expectedGrossReceiptsThroughFirstFullPayment,'money'));text('adPerfExpectedBasisV547',planning?.assumptions?.label||'Planning estimate only; never sent to Meta');\n    document.querySelectorAll('[data-ad-performance-club-v547]').forEach(el=>el.hidden=selectedPerformanceSiteV544()!=='collectors_club');\n    const status=$('adPerformanceStatusV547');if(status){const cached=meta.cached?'Saved Meta snapshot':'Fresh Meta ads_read snapshot';status.className='orbit-info-banner '+(meta.available?'success':'warning');status.innerHTML=meta.available?'<strong>'+esc(cached)+' \u00B7 '+esc(performanceDomainV544())+'</strong><span> '+esc(meta.generatedAt?new Date(meta.generatedAt).toLocaleString('en-GB'):'time unavailable')+'. Orbit business/GA4 evidence is labelled separately; this page cannot change ads.</span>':'<strong>Meta ad-level data is not available yet.</strong><span> '+esc(meta.error||'Choose Refresh Meta data to request a current read-only snapshot.')+'</span>';}\n    const sig=$('adPerformanceSignalsV547');if(sig){const rows=[];if(signals.bestPurchase)rows.push('<article><span>Best cost per Purchase</span><strong>'+esc(signals.bestPurchase.name)+'</strong><small>'+esc(adPerformanceMetricV547(signals.bestPurchase.costPerPurchase,'money'))+' per Meta Purchase \u00B7 '+esc(adPerformanceMetricV547(signals.bestPurchase.spend,'money'))+' spend</small></article>');if(signals.bestCtr)rows.push('<article><span>Highest CTR</span><strong>'+esc(signals.bestCtr.name)+'</strong><small>'+esc(adPerformanceMetricV547(signals.bestCtr.ctr,'percent'))+' CTR \u00B7 '+esc(adPerformanceMetricV547(signals.bestCtr.spend,'money'))+' spend</small></article>');if(signals.worstSpendNoPurchase)rows.push('<article><span>Most spend without a reported Purchase</span><strong>'+esc(signals.worstSpendNoPurchase.name)+'</strong><small>'+esc(adPerformanceMetricV547(signals.worstSpendNoPurchase.spend,'money'))+' spend \u00B7 0 reported Purchases</small></article>');sig.innerHTML=rows.join('')||'<p class=\"orbit-muted\">There is not enough ad-level evidence in the selected snapshot to rank ads yet.</p>';}\n    const target=$('adPerformanceTableV547');if(target){target.innerHTML=table(['Ad','Status','Spend','CTR','CPC','Purchases','Cost / Purchase','Creative evidence'],ads.slice(0,40).map(row=>'<tr><td><strong>'+esc(row.name||'Unnamed ad')+'</strong><small>'+esc(row.campaignName||'')+'</small></td><td>'+esc(row.effectiveStatus||row.status||'\u2014')+'</td><td>'+esc(adPerformanceMetricV547(row.spend,'money'))+'</td><td>'+esc(adPerformanceMetricV547(row.ctr,'percent'))+'</td><td>'+esc(adPerformanceMetricV547(row.cpc,'money'))+'</td><td>'+esc(adPerformanceMetricV547(row.purchases))+'</td><td>'+esc(row.costPerPurchase==null?'\u2014':adPerformanceMetricV547(row.costPerPurchase,'money'))+'</td><td>'+esc(row.creative?.headline||row.creative?.creativeText||'No stored creative text for this snapshot')+'</td></tr>'),'No ads are present in the saved snapshot.');}\n  }\n  async function loadAdPerformanceV547(refreshMeta=false){\n    const token=siteReadV544('ad-performance'),period=$('adPerformancePeriodV547')?.value||'last_7_days',button=$('adPerformanceRefreshV547');if(refreshMeta)siteLoadingV544(button,token,true);const path='/api/admin/performance/ad-performance';\n    try{const data=refreshMeta?await api(path+'/refresh',{method:'POST',body:JSON.stringify({period,site:token.site}),timeoutMs:90000,cacheMs:0}):await api(path+'?period='+encodeURIComponent(period)+'&site='+encodeURIComponent(token.site),{timeoutMs:30000,cacheMs:0});if(token.current())renderAdPerformanceV547(data);return data;}catch(error){if(token.current()){const status=$('adPerformanceStatusV547');if(status){status.className='orbit-info-banner warning';status.innerHTML='<strong>'+esc(performanceDomainV544())+' ad report unavailable.</strong><span> '+esc(error.message||error)+'</span>';}}throw error;}finally{if(refreshMeta)siteLoadingV544(button,token,false);}\n  }\n  async function analyseAdPerformanceV547(){\n    const button=$('adPerformanceAnalyseV547'),target=$('adPerformanceAnalysisV547'),period=$('adPerformancePeriodV547')?.value||'last_7_days',site=selectedPerformanceSiteV544();if(button)setLoading(button,true);if(target)target.innerHTML='<p class=\"orbit-muted\">Marketing Analyst is reviewing the current read-only evidence\u2026</p>';\n    try{const data=await api('/api/admin/performance/ad-performance/analyse',{method:'POST',body:JSON.stringify({period,site}),timeoutMs:90000,cacheMs:0});if(site!==selectedPerformanceSiteV544())return;if(target)target.innerHTML=data.analysis?orbitMarkdown(data.analysis):'<p class=\"orbit-muted\">No analysis was returned.</p>';}\n    catch(error){if(target)target.innerHTML='<p class=\"error\">Marketing Analyst could not complete: '+esc(error.message||error)+'</p>';throw error;}finally{if(button)setLoading(button,false);}\n  }\n  document.getElementById('adPerformanceRefreshV547')?.addEventListener('click',()=>loadAdPerformanceV547(true).catch(err=>setNotice('Ad Performance refresh failed: '+(err.message||err),true)));\n  document.getElementById('adPerformanceAnalyseV547')?.addEventListener('click',()=>analyseAdPerformanceV547().catch(err=>setNotice('Marketing Analyst failed: '+(err.message||err),true)));\n  document.getElementById('adPerformancePeriodV547')?.addEventListener('change',()=>loadAdPerformanceV547(false).catch(err=>setNotice('Ad Performance unavailable: '+(err.message||err),true)));\n\n  async function loadPerformanceRankingsV496(button=null){\n    const token=siteReadV544(\"overview-rankings\");\n    clearSiteTargetsV544([\"performanceRankingsSummaryV496\",\"performanceRankingsQueriesV496\"],\"\");clearSiteTargetsV544([\"performanceRankingsStatusV496\"]);\n    siteLoadingV544(button,token,true);\n    try{\n      const site=token.site,period=$(\"analyticsPeriodV468\")?.value||\"last_30_days\",status=$(\"performanceRankingsStatusV496\"),summary=$(\"performanceRankingsSummaryV496\"),queries=$(\"performanceRankingsQueriesV496\"),h=seoMetricHelpersV494();\n      const data=await api(\"/api/admin/seo/rankings?period=\"+encodeURIComponent(period)+\"&site=\"+encodeURIComponent(site),{cacheMs:0,timeoutMs:30000});\n      if(!token.current())return data;\n      const snap=data.summary||{},siteLabel=data.site?.label||({card_show:\"Orbit Card Show\",show_tickets:\"Orbit Show Tickets\",collectors_club:\"Orbit Collectors Club\",card_show_index:\"CardShowIndex\"}[site]||site);\n      if(!data.configured){if(status)status.innerHTML=\"<strong>\"+esc(siteLabel)+\" Search Console is not connected.</strong><span>Use SEO or Google Analytics settings to finish the connection.</span>\";if(summary)summary.innerHTML=\"\";if(queries)queries.innerHTML=\"\";return data;}\n      if(status)status.innerHTML=\"<strong>\"+esc(siteLabel)+\" \u00B7 \"+esc(data.periodLabel||period)+\"</strong><span>Direct Google Search Console data.</span>\";\n      if(summary)summary.innerHTML=[[\"Organic clicks\",h.num(snap.clicks)],[\"Impressions\",h.num(snap.impressions)],[\"CTR\",h.pct(snap.ctr)],[\"Average position\",h.pos(snap.averagePosition)]].map(x=>\"<article><span>\"+esc(x[0])+\"</span><strong>\"+esc(x[1])+\"</strong></article>\").join(\"\");\n      const rows=(data.queries||[]).slice(0,5);if(queries)queries.innerHTML=rows.length?\"<table><thead><tr><th>Top search query</th><th>Clicks</th><th>Impressions</th><th>Avg. position</th></tr></thead><tbody>\"+rows.map(row=>\"<tr><td><strong>\"+esc(row.query||\"(not set)\")+\"</strong></td><td>\"+h.num(row.clicks)+\"</td><td>\"+h.num(row.impressions)+\"</td><td>\"+h.pos(row.averagePosition)+\"</td></tr>\").join(\"\")+\"</tbody></table>\":\"<div class='orbit-empty-state'><strong>No search queries in this period</strong></div>\";\n      return data;\n    }catch(error){siteReadFailureV544(token,\"performanceRankingsStatusV496\",error);}finally{siteLoadingV544(button,token,false);}\n  }\n\n  function analyticsNumberV468(value,decimals=0){const n=Number(value||0);return Number.isFinite(n)?n.toLocaleString(\"en-GB\",{minimumFractionDigits:decimals,maximumFractionDigits:decimals}):\"0\";}\n  function analyticsMoneyV468(value,currency=\"GBP\"){const n=Number(value||0);try{return new Intl.NumberFormat(\"en-GB\",{style:\"currency\",currency:currency||\"GBP\",maximumFractionDigits:2}).format(Number.isFinite(n)?n:0);}catch(_){return \"\u00A3\"+analyticsNumberV468(n,2);}}\n  function analyticsMetricV468(metrics,name){return Number(metrics&&metrics[name]!=null?metrics[name]:0)||0;}\n  function renderAnalyticsRowsV468(targetId,rows=[],kind=\"pages\"){const target=$(targetId);if(!target)return;if(!rows.length){target.innerHTML=\"<div class='orbit-empty-state'><strong>No data for this period</strong><span>Google Analytics returned no rows for this view.</span></div>\";return;}if(kind===\"pages\")target.innerHTML=\"<table><thead><tr><th>Page</th><th>Views</th><th>Users</th><th>Key events</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.pagePath||\"/\")+\"</strong></td><td>\"+analyticsNumberV468(r.screenPageViews)+\"</td><td>\"+analyticsNumberV468(r.activeUsers)+\"</td><td>\"+analyticsNumberV468(r.keyEvents)+\"</td></tr>\").join(\"\")+\"</tbody></table>\";else if(kind===\"sources\")target.innerHTML=\"<table><thead><tr><th>Source / medium</th><th>Sessions</th><th>Users</th><th>Key events</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.sessionSourceMedium||\"(direct) / (none)\")+\"</strong></td><td>\"+analyticsNumberV468(r.sessions)+\"</td><td>\"+analyticsNumberV468(r.activeUsers)+\"</td><td>\"+analyticsNumberV468(r.keyEvents)+\"</td></tr>\").join(\"\")+\"</tbody></table>\";else target.innerHTML=\"<table><thead><tr><th>Event</th><th>Event count</th><th>Key events</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.eventName||\"event\")+\"</strong></td><td>\"+analyticsNumberV468(r.eventCount)+\"</td><td>\"+analyticsNumberV468(r.keyEvents)+\"</td></tr>\").join(\"\")+\"</tbody></table>\";}\n  async function loadAnalyticsOverviewV468(button=null){\n    const token=siteReadV544(\"ga4\");clearSiteTargetsV544([\"analyticsActiveUsersV468\",\"analyticsSessionsV468\",\"analyticsPageViewsV468\",\"analyticsNewUsersV468\",\"analyticsKeyEventsV468\",\"analyticsRevenueV468\"],\"\u2014\");clearSiteTargetsV544([\"analyticsOverviewStatusV468\",\"analyticsTopPagesV468\",\"analyticsSourcesV468\",\"analyticsKeyEventTableV468\"]);\n    siteLoadingV544(button,token,true);\n    try{\n      const period=$(\"analyticsPeriodV468\")?.value||\"last_30_days\",site=token.site;\n      const data=await api(\"/api/admin/google-analytics/report?period=\"+encodeURIComponent(period)+\"&site=\"+encodeURIComponent(site),{cacheMs:0,timeoutMs:30000}),status=$(\"analyticsOverviewStatusV468\"),m=data.metrics||{};\n      if(!token.current())return data;\n      const map={analyticsActiveUsersV468:analyticsNumberV468(analyticsMetricV468(m,\"activeUsers\")),analyticsSessionsV468:analyticsNumberV468(analyticsMetricV468(m,\"sessions\")),analyticsPageViewsV468:analyticsNumberV468(analyticsMetricV468(m,\"screenPageViews\")),analyticsNewUsersV468:analyticsNumberV468(analyticsMetricV468(m,\"newUsers\")),analyticsKeyEventsV468:analyticsNumberV468(analyticsMetricV468(m,\"keyEvents\")),analyticsRevenueV468:analyticsMoneyV468(analyticsMetricV468(m,\"totalRevenue\"),data.currencyCode||\"GBP\")};\n      Object.entries(map).forEach(([id,value])=>{if($(id))$(id).textContent=data.configured===false?\"\u2014\":value;});\n      if($(\"analyticsRevenueNoteV468\"))$(\"analyticsRevenueNoteV468\").textContent=data.configured===false?\"Reporting not configured\":\"GA4 reported revenue\";\n      const siteLabel=data.site?.label||({card_show:\"Orbit Card Show\",show_tickets:\"Orbit Show Tickets\",collectors_club:\"Orbit Collectors Club\",card_show_index:\"CardShowIndex\"}[site]||site);\n      if(data.configured===false){if(status){status.className=\"orbit-info-banner warning\";status.innerHTML=\"<strong>\"+esc(siteLabel)+\" GA4 reporting is not configured.</strong><span>Open Performance & Analytics \u2192 Google Analytics and save this website's numeric Property ID.</span>\";}clearSiteTargetsV544([\"analyticsTopPagesV468\",\"analyticsSourcesV468\",\"analyticsKeyEventTableV468\"],\"Reporting is not configured for this website. No activity count is available.\");return data;}\n      if(status){status.className=\"orbit-info-banner success\";status.innerHTML=\"<strong>Live \"+esc(siteLabel)+\" GA4 report</strong><span>Property \"+esc(data.propertyId||\"\u2014\")+\" \u00B7 \"+esc(data.periodLabel||period)+\" \u00B7 \"+esc(data.timeZone||\"Google Analytics timezone\")+\" \u00B7 selected hostname only \u00B7 read-only.</span>\";}\n      renderAnalyticsRowsV468(\"analyticsTopPagesV468\",data.topPages||[],\"pages\");renderAnalyticsRowsV468(\"analyticsSourcesV468\",data.sources||[],\"sources\");renderAnalyticsRowsV468(\"analyticsKeyEventTableV468\",data.events||[],\"events\");return data;\n    }catch(error){siteReadFailureV544(token,\"analyticsOverviewStatusV468\",error);if(token.current())clearSiteTargetsV544([\"analyticsTopPagesV468\",\"analyticsSourcesV468\",\"analyticsKeyEventTableV468\"],\"Website report unavailable. Use Refresh report to retry.\");}finally{siteLoadingV544(button,token,false);}\n  }\n\n  function analyticsPercentV471(value){const n=Number(value||0);return Number.isFinite(n)?n.toFixed(1)+\"%\":\"0.0%\";}\n  function renderAnalyticsCommercialRowsV471(targetId,rows=[],kind=\"sources\"){\n    const target=$(targetId);if(!target)return;\n    if(!rows.length){target.innerHTML=\"<div class='orbit-empty-state'><strong>No paid Orbit ticket sales for this period</strong><span>Canonical Ticket Centre sales will appear here when available.</span></div>\";return;}\n    const money=value=>analyticsMoneyV468(Number(value||0),\"GBP\");\n    if(kind===\"sources\")target.innerHTML=\"<table><thead><tr><th>Captured source</th><th>Orders</th><th>Tickets</th><th>Revenue</th><th>Revenue share</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.sourceMedium||\"(direct) / (none)\")+\"</strong></td><td>\"+analyticsNumberV468(r.orders)+\"</td><td>\"+analyticsNumberV468(r.tickets)+\"</td><td>\"+money(r.revenue)+\"</td><td>\"+analyticsPercentV471(r.revenueSharePct)+\"</td></tr>\").join(\"\")+\"</tbody></table>\";\n    else if(kind===\"campaigns\")target.innerHTML=\"<table><thead><tr><th>Campaign</th><th>Orders</th><th>Tickets</th><th>Revenue</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.campaign||\"(not tagged)\")+\"</strong></td><td>\"+analyticsNumberV468(r.orders)+\"</td><td>\"+analyticsNumberV468(r.tickets)+\"</td><td>\"+money(r.revenue)+\"</td></tr>\").join(\"\")+\"</tbody></table>\";\n    else if(kind===\"landing\")target.innerHTML=\"<table><thead><tr><th>Landing page captured at checkout</th><th>Orders</th><th>Tickets</th><th>Revenue</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.landingPage||\"(not captured)\")+\"</strong></td><td>\"+analyticsNumberV468(r.orders)+\"</td><td>\"+analyticsNumberV468(r.tickets)+\"</td><td>\"+money(r.revenue)+\"</td></tr>\").join(\"\")+\"</tbody></table>\";\n    else if(kind===\"events\")target.innerHTML=\"<table><thead><tr><th>Orbit event</th><th>Orders</th><th>Tickets</th><th>Revenue</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.eventName||\"Unassigned event\")+\"</strong></td><td>\"+analyticsNumberV468(r.orders)+\"</td><td>\"+analyticsNumberV468(r.tickets)+\"</td><td>\"+money(r.revenue)+\"</td></tr>\").join(\"\")+\"</tbody></table>\";\n    else if(kind===\"ga\")target.innerHTML=\"<table><thead><tr><th>GA4 source / medium</th><th>Sessions</th><th>Users</th><th>Key events</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.sessionSourceMedium||\"(direct) / (none)\")+\"</strong></td><td>\"+analyticsNumberV468(r.sessions)+\"</td><td>\"+analyticsNumberV468(r.activeUsers)+\"</td><td>\"+analyticsNumberV468(r.keyEvents)+\"</td></tr>\").join(\"\")+\"</tbody></table>\";\n  }\n  async function loadAnalyticsCommercialV471(button=null){\n    const token=siteReadV544(\"commercial\");showPerformanceSiteV544();\n    clearSiteTargetsV544([\"analyticsSalesOrdersV471\",\"analyticsSalesTicketsV471\",\"analyticsSalesRevenueV471\",\"analyticsSalesAovV471\",\"analyticsSalesCoverageV471\",\"analyticsSalesGaSessionsV471\"],\"\u2014\");\n    clearSiteTargetsV544([\"analyticsSalesStatusV471\",\"analyticsSalesSourcesV471\",\"analyticsSalesCampaignsV471\",\"analyticsSalesLandingV471\",\"analyticsSalesEventsV471\",\"analyticsSalesGaSourcesV471\",\"analyticsClubAcquisitionV544\",\"analyticsSiteAttributionV544\"]);\n    siteLoadingV544(button,token,true);\n    try{\n      const period=$(\"analyticsSalesPeriodV471\")?.value||\"last_30_days\",data=await api(\"/api/admin/analytics/commercial?period=\"+encodeURIComponent(period)+\"&site=\"+encodeURIComponent(token.site),{cacheMs:0,timeoutMs:30000}),sales=data.ticketSales||{},revenue=Number(sales.revenue||0);\n      if(!token.current())return data;\n      renderSiteAttributionV544(\"analyticsSiteAttributionV544\",data.attribution);\n      const club=data.clubAcquisition,clubTarget=$(\"analyticsClubAcquisitionV544\");\n      if(token.site==='collectors_club'&&clubTarget){\n        const m=club?.membership;\n        clubTarget.innerHTML=m?[[\"New Club memberships\",m.total],[\"\u00A31 route signups\",m.onePound],[\"Direct full-price joins\",m.upgrades]].map(x=>'<article><span>'+esc(x[0])+'</span><strong>'+esc(x[1]??'\u2014')+'</strong></article>').join(''):'<p>Club acquisition records are unavailable. No zero count is inferred.</p>';\n      }\n      const values={analyticsSalesOrdersV471:analyticsNumberV468(sales.orders||0),analyticsSalesTicketsV471:analyticsNumberV468(sales.tickets||0),analyticsSalesRevenueV471:analyticsMoneyV468(revenue,\"GBP\"),analyticsSalesAovV471:analyticsMoneyV468(sales.averageOrderValue||0,\"GBP\"),analyticsSalesCoverageV471:analyticsPercentV471(sales.trackingCoveragePct||0),analyticsSalesGaSessionsV471:!data.ga4||data.ga4.configured===false?\"\u2014\":analyticsNumberV468(data.ga4?.metrics?.sessions||0)};\n      Object.entries(values).forEach(([id,value])=>{if($(id))$(id).textContent=id!==\"analyticsSalesGaSessionsV471\"&&!data.ticketSales?\"\u2014\":value;});\n      const sources=(sales.sources||[]).map(r=>({...r,revenueSharePct:revenue?Number(r.revenue||0)/revenue*100:0}));\n      renderAnalyticsCommercialRowsV471(\"analyticsSalesSourcesV471\",sources,\"sources\");renderAnalyticsCommercialRowsV471(\"analyticsSalesCampaignsV471\",sales.campaigns||[],\"campaigns\");renderAnalyticsCommercialRowsV471(\"analyticsSalesLandingV471\",sales.landingPages||[],\"landing\");renderAnalyticsCommercialRowsV471(\"analyticsSalesEventsV471\",sales.events||[],\"events\");if(data.ga4?.configured)renderAnalyticsRowsV468(\"analyticsSalesGaSourcesV471\",data.ga4.sources||[],\"sources\");else clearSiteTargetsV544([\"analyticsSalesGaSourcesV471\"],\"GA4 is unavailable or not configured for this website.\");\n      if(token.site==='show_tickets'&&!data.ticketSales)clearSiteTargetsV544([\"analyticsSalesSourcesV471\",\"analyticsSalesCampaignsV471\",\"analyticsSalesLandingV471\",\"analyticsSalesEventsV471\"],\"Ticket Centre report unavailable. Use Refresh report to retry.\");\n      const status=$(\"analyticsSalesStatusV471\");if(status){const warning=(data.warnings||[]).join(\" \u00B7 \");status.className=\"orbit-info-banner \"+(warning?\"warning\":\"info\");status.innerHTML=\"<strong>\"+esc(performanceDomainV544())+\" \u00B7 \"+esc(data.ga4?.periodLabel||period)+\"</strong><span>\"+esc(data.boundaries?.commercial||\"Selected website report\")+(warning?\" \"+esc(warning):\"\")+\"</span>\";}\n      return data;\n    }catch(error){siteReadFailureV544(token,\"analyticsSalesStatusV471\",error);if(token.current())clearSiteTargetsV544([\"analyticsSalesSourcesV471\",\"analyticsSalesCampaignsV471\",\"analyticsSalesLandingV471\",\"analyticsSalesEventsV471\",\"analyticsSalesGaSourcesV471\",\"analyticsClubAcquisitionV544\",\"analyticsSiteAttributionV544\"],\"Report unavailable. Use Refresh report to retry.\");}finally{siteLoadingV544(button,token,false);}\n  }\n\n  function siteProfilesPayloadV494(current={}){\n    const p=current.siteProfiles||{},get=(id,fallback=\"\")=>String($(id)?.value??fallback).trim(),checked=(id,fallback=true)=>$(id)?Boolean($(id).checked):fallback!==false;\n    return {\n      card_show:{...(p.card_show||{}),googleAnalyticsMeasurementId:get(\"siteCardShowGaMeasurementV494\",p.card_show?.googleAnalyticsMeasurementId),googleAnalyticsPropertyId:get(\"siteCardShowGaPropertyV494\",p.card_show?.googleAnalyticsPropertyId),searchConsoleSiteUrl:get(\"siteCardShowSearchConsoleV494\",p.card_show?.searchConsoleSiteUrl),sitemapUrl:get(\"siteCardShowSitemapV494\",p.card_show?.sitemapUrl),metaPixelId:get(\"performanceCardShowPixelId\",p.card_show?.metaPixelId),googleAnalyticsEnabled:checked(\"siteCardShowGaEnabledV494\",p.card_show?.googleAnalyticsEnabled),metaPixelEnabled:checked(\"performanceCardShowPixelEnabled\",p.card_show?.metaPixelEnabled)},\n      show_tickets:{...(p.show_tickets||{}),googleAnalyticsMeasurementId:get(\"siteTicketsGaMeasurementV494\",p.show_tickets?.googleAnalyticsMeasurementId),googleAnalyticsPropertyId:get(\"siteTicketsGaPropertyV494\",p.show_tickets?.googleAnalyticsPropertyId),searchConsoleSiteUrl:get(\"siteTicketsSearchConsoleV494\",p.show_tickets?.searchConsoleSiteUrl),sitemapUrl:get(\"siteTicketsSitemapV494\",p.show_tickets?.sitemapUrl),metaPixelId:get(\"performanceTicketPixelId\",p.show_tickets?.metaPixelId),googleAnalyticsEnabled:p.show_tickets?.googleAnalyticsEnabled!==false,metaPixelEnabled:checked(\"performanceTicketPixelEnabled\",p.show_tickets?.metaPixelEnabled)},\n      collectors_club:{...(p.collectors_club||{}),googleAnalyticsMeasurementId:get(\"siteClubGaMeasurementV494\",p.collectors_club?.googleAnalyticsMeasurementId),googleAnalyticsPropertyId:get(\"siteClubGaPropertyV494\",p.collectors_club?.googleAnalyticsPropertyId),searchConsoleSiteUrl:get(\"siteClubSearchConsoleV494\",p.collectors_club?.searchConsoleSiteUrl),sitemapUrl:get(\"siteClubSitemapV494\",p.collectors_club?.sitemapUrl),metaPixelId:get(\"performanceClubPixelId\",p.collectors_club?.metaPixelId),googleAnalyticsEnabled:p.collectors_club?.googleAnalyticsEnabled!==false,metaPixelEnabled:checked(\"performanceClubPixelEnabled\",p.collectors_club?.metaPixelEnabled)},\n      card_show_index:{...(p.card_show_index||{}),googleAnalyticsMeasurementId:get(\"siteCardShowIndexGaMeasurementV625\",p.card_show_index?.googleAnalyticsMeasurementId),googleAnalyticsPropertyId:get(\"siteCardShowIndexGaPropertyV625\",p.card_show_index?.googleAnalyticsPropertyId),searchConsoleSiteUrl:get(\"siteCardShowIndexSearchConsoleV625\",p.card_show_index?.searchConsoleSiteUrl),sitemapUrl:get(\"siteCardShowIndexSitemapV625\",p.card_show_index?.sitemapUrl),googleAnalyticsEnabled:p.card_show_index?.googleAnalyticsEnabled!==false,metaPixelEnabled:false}\n    };\n  }\n  async function savePerformanceTrackingV327(kind,button){setLoading(button,true);try{const current=state.trackingSettings||await loadTrackingSettings(),payload={siteProfiles:siteProfilesPayloadV494(current),clubMetaCapiEnabled:current.clubMetaCapiEnabled!==false,clubMetaCapiTestEventCode:current.clubMetaCapiTestEventCode||\"\",ticketMetaCapiEnabled:current.ticketMetaCapiEnabled!==false,ticketMetaCapiTestEventCode:current.ticketMetaCapiTestEventCode||\"\"};if(kind===\"ga\"){payload.googleAnalyticsOauthClientId=$(\"performanceGaOauthClientIdV469\")?.value||\"\";const secret=String($(\"performanceGaOauthClientSecretV469\")?.value||\"\").trim();if(secret)payload.googleAnalyticsOauthClientSecret=secret;}await api(\"/api/admin/tracking-settings\",{method:\"PUT\",body:JSON.stringify(payload),cacheMs:0});await loadTrackingSettings();const result=$(kind===\"ga\"?\"performanceGaResult\":\"performanceMetaResult\");if(result){result.hidden=false;result.textContent=kind===\"ga\"?\"Saved website GA4/Search Console profiles. Orbit preserves every stored profile but suppresses Show Tickets storefront GA4 whenever it matches the Collectors Club stream, preventing cross-site acquisition contamination. GA4 reporting remains read-only.\":\"Saved three separate website Pixel IDs. Orbit's hostname boundary will not intentionally load another site's configured Pixel.\";}setNotice(kind===\"ga\"?\"Website Analytics profiles saved.\":\"Website Meta Pixel profiles saved.\");}finally{setLoading(button,false);}}\n\n  async function connectGoogleAnalyticsV470(button){\n    const popup=window.open(\"about:blank\",\"orbitGoogleAnalyticsOauth\",\"popup,width=620,height=760,resizable=yes,scrollbars=yes\");\n    if(!popup)throw new Error(\"Your browser blocked the Google connection popup. Allow popups for Orbit Admin and try again.\");\n    setLoading(button,true);\n    try{\n      popup.document.write(\"<!doctype html><title>Connecting Google Analytics</title><body style='font-family:Arial;padding:28px'>Preparing secure Google connection\u2026</body>\");\n      await savePerformanceTrackingV327(\"ga\",null);\n      // V470: obtain the signed Google URL through Orbit's normal authenticated\n      // API transport so ADMIN_SECRET + Bearer session are verified before the\n      // popup leaves Orbit. The popup itself then navigates straight to Google.\n      const launch=await api(\"/api/admin/google-analytics/oauth/launch\",{method:\"POST\",body:\"{}\",cacheMs:0});\n      const target=String(launch?.url||\"\");\n      if(!/^https:\\/\\/accounts\\.google\\.com\\//i.test(target))throw new Error(\"Orbit did not return a valid Google authorization URL.\");\n      popup.location.replace(target);\n      setNotice(\"Complete the Google sign-in/consent window. Orbit requests Analytics read-only access only.\");\n    }catch(error){try{popup.close();}catch(_){}throw error;}finally{setLoading(button,false);}\n  }\n  async function disconnectGoogleAnalyticsV469(button){\n    if(!confirm(\"Disconnect Orbit's read-only Google Analytics reporting connection? Storefront measurement and your GA4 Property/Measurement IDs will remain unchanged.\"))return;\n    setLoading(button,true);\n    try{await api(\"/api/admin/google-analytics/oauth/disconnect\",{method:\"POST\",body:\"{}\",cacheMs:0});await loadTrackingSettings();setNotice(\"Google Analytics reporting disconnected. Storefront measurement was not changed.\");}finally{setLoading(button,false);}\n  }\n  function applyRecommendedSearchConsolePropertiesV495(){const values={siteCardShowSearchConsoleV494:\"sc-domain:orbitcardshow.co.uk\",siteTicketsSearchConsoleV494:\"sc-domain:orbitshowtickets.co.uk\",siteClubSearchConsoleV494:\"sc-domain:orbitcollectorsclub.com\",siteCardShowIndexSearchConsoleV625:\"sc-domain:cardshowindex.co.uk\"};Object.entries(values).forEach(([id,value])=>{if($(id))$(id).value=value;});setNotice(\"Recommended Search Console Domain property values filled in. Save website profiles before connecting.\");}\n  async function copySearchConsoleValueV495(value){try{await navigator.clipboard.writeText(String(value||\"\"));setNotice(\"Copied: \"+value);}catch(_){window.prompt(\"Copy this domain:\",String(value||\"\"));}}\n  async function loadSearchConsolePropertiesV495(button=null){if(button)setLoading(button,true);const target=$(\"searchConsolePropertyCheckV495\");try{const data=await api(\"/api/admin/google-search-console/properties\",{cacheMs:0,timeoutMs:30000});if(target){target.hidden=false;if(!data.connected){target.className=\"orbit-action-result warning\";target.innerHTML=\"<strong>Search Console is not connected yet.</strong><br>Add the four Domain properties in Google, verify each by DNS, then click Connect Search Console read-only once.\";}else{const rows=Array.isArray(data.properties)?data.properties:[];rows.forEach(row=>{const node=document.querySelector('[data-sc-property-status-v495=\"'+row.siteKey+'\"]');if(node){node.className=row.exactDomainProperty?\"success\":\"warning\";node.textContent=row.exactDomainProperty?(\"Found in Google \u00B7 \"+(row.permissionLevel||\"verified\")):(row.found?\"Found as a URL property, but use the recommended Domain property\":\"Missing from this Google account\");}});target.className=\"orbit-action-result \"+(data.allRequiredPresent?\"success\":\"warning\");target.innerHTML=data.allRequiredPresent?\"<strong>All 4 Domain properties found.</strong><br>Orbit can read each site's Search Console rankings and index state. Sitemap submission remains separately permissioned.\":\"<strong>Some Domain properties are still missing.</strong><br>Create/verify the amber properties in Google Search Console, then press Check 4 properties again.\";}}return data;}finally{if(button)setLoading(button,false);}}\n\n  async function connectGoogleSearchConsoleV494(button){const popup=window.open(\"about:blank\",\"orbitGoogleSearchConsoleOauth\",\"popup,width=620,height=760,resizable=yes,scrollbars=yes\");if(!popup)throw new Error(\"Your browser blocked the Google connection popup.\");setLoading(button,true);try{await savePerformanceTrackingV327(\"ga\",null);const launch=await api(\"/api/admin/google-search-console/oauth/launch\",{method:\"POST\",body:\"{}\",cacheMs:0}),target=String(launch?.url||\"\");if(!/^https:\\/\\/accounts\\.google\\.com\\//i.test(target))throw new Error(\"Orbit did not return a valid Google authorization URL.\");popup.location.replace(target);setNotice(\"Complete Google consent for read-only Search Console reporting and URL Inspection. Sitemap-write access is not requested here.\");}catch(error){try{popup.close();}catch(_){}throw error;}finally{setLoading(button,false);}}\n  async function disconnectGoogleSearchConsoleV494(button){if(!confirm(\"Disconnect read-only Search Console reporting and URL Inspection? GA4 and separately authorized sitemap-write access are unchanged.\"))return;setLoading(button,true);try{await api(\"/api/admin/google-search-console/oauth/disconnect\",{method:\"POST\",body:\"{}\",cacheMs:0});await loadTrackingSettings();setNotice(\"Search Console read-only access disconnected. Google Analytics was not changed.\");}finally{setLoading(button,false);}}\n  async function connectGoogleSearchConsoleWriteV625(button){const popup=window.open(\"about:blank\",\"orbitGoogleSearchConsoleWriteOauth\",\"popup,width=620,height=760,resizable=yes,scrollbars=yes\");if(!popup)throw new Error(\"Your browser blocked the Google connection popup.\");setLoading(button,true);try{await savePerformanceTrackingV327(\"ga\",null);const launch=await api(\"/api/admin/google-search-console/oauth/write/launch\",{method:\"POST\",body:\"{}\",cacheMs:0}),target=String(launch?.url||\"\");if(!/^https:\\/\\/accounts\\.google\\.com\\//i.test(target))throw new Error(\"Orbit did not return a valid Google authorization URL.\");popup.location.replace(target);setNotice(\"This separate Google consent grants sitemap submission only when you explicitly press Submit to Google.\");}catch(error){try{popup.close();}catch(_){}throw error;}finally{setLoading(button,false);}}\n  async function disconnectGoogleSearchConsoleWriteV625(button){if(!confirm(\"Disconnect the separately gated Search Console sitemap-write permission? Read-only rankings and URL Inspection will remain connected.\"))return;setLoading(button,true);try{await api(\"/api/admin/google-search-console/oauth/write/disconnect\",{method:\"POST\",body:\"{}\",cacheMs:0});await loadTrackingSettings();setNotice(\"Search Console sitemap-write permission disconnected. Read-only reporting remains unchanged.\");}finally{setLoading(button,false);}}\n  async function loadCardShowIndexSearchConsoleStatusV625(){const target=$(\"cardShowIndexSearchConsoleStatusV625\"),last=$(\"cardShowIndexSearchConsoleLastSyncV625\");if(!target&&!last&&!$(\"directoryAnalyticsSearchConsoleV628\"))return null;const [data,oauth]=await Promise.all([api(\"/api/admin/seo/search-console/sync-status?site=card_show_index\",{cacheMs:0,timeoutMs:30000}),api(\"/api/admin/google-search-console/oauth/status\",{cacheMs:0,timeoutMs:15000}).catch(()=>null)]);if(target){target.textContent=data.connected?\"Read-only connection ready for CardShowIndex Search Intelligence.\":(\"Read-only Search Console is not connected. Exact Google redirect URI: \"+String(oauth?.redirectUri||\"unavailable\"));target.className=data.connected?\"success\":\"warning\";}if(last){const state=data.state||{};last.textContent=state.lastSyncAt?(\"Last sync: \"+prettyDate(state.lastSyncAt)+\" \u00B7 \"+Number(state.queryRows||0)+\" queries \u00B7 \"+Number(state.pageRows||0)+\" pages\"):(state.lastError?(\"Last sync failed: \"+state.lastError):\"Last sync: never\");}renderDirectoryAnalyticsSearchConsoleV628(data,oauth);return {...data,oauth};}\n  function directoryMetricCardV628(label,value,detail=\"\"){return `<article class=\"orbit-finance-card\"><span>${esc(label)}</span><strong>${esc(String(value??\"\u2014\"))}</strong><small>${esc(detail||\"\")}</small></article>`;}\n  function renderDirectoryAnalyticsSearchConsoleV628(data={},oauth={}){\n    const target=$(\"directoryAnalyticsSearchConsoleV628\"),last=$(\"directoryAnalyticsLastSyncV628\"),settings=state.trackingSettings||{},profile=settings.siteProfiles?.card_show_index||{};\n    const setv=(id,value)=>{if($(id)&&document.activeElement!==$(id))$(id).value=value||\"\";};\n    setv(\"directoryGoogleOauthClientIdV628\",settings.googleAnalyticsOauthClientId);setv(\"directorySearchConsoleRedirectV628\",oauth?.redirectUri||\"\");setv(\"directorySearchConsolePropertyV628\",profile.searchConsoleSiteUrl||\"sc-domain:cardshowindex.co.uk\");setv(\"directorySitemapUrlV628\",profile.sitemapUrl||\"https://cardshowindex.co.uk/sitemap.xml\");setv(\"directoryGaMeasurementIdV628\",profile.googleAnalyticsMeasurementId);setv(\"directoryGaPropertyIdV628\",profile.googleAnalyticsPropertyId);\n    const connected=Boolean(data?.connected||oauth?.readConnected||settings.googleSearchConsoleOauthConnected),redirect=String(oauth?.redirectUri||\"\");\n    if(target){target.className=\"orbit-info-banner \"+(connected?\"success\":\"warning\");target.innerHTML=connected?`<strong>Search Console read-only is connected.</strong><span>CardShowIndex can sync rankings and indexing evidence without leaving Directory.</span>`:`<strong>Search Console is not connected.</strong><span>In Google Cloud, Authorized redirect URI must exactly equal <code>${esc(redirect||\"unavailable\")}</code>. Save the client details here, then connect.</span>`;}\n    if(last){const sync=data?.state||{};last.textContent=sync.lastSyncAt?(\"Last sync: \"+prettyDate(sync.lastSyncAt)+\" \u00B7 \"+Number(sync.queryRows||0)+\" queries \u00B7 \"+Number(sync.pageRows||0)+\" pages\"):(sync.lastError?(\"Last sync failed: \"+sync.lastError):\"Last sync: never\");}\n    const connect=$(\"directorySearchConsoleConnectV628\"),hasClient=Boolean(settings.googleAnalyticsOauthClientId&&(settings.googleAnalyticsOauthClientSecretConfigured||String($(\"directoryGoogleOauthClientSecretV628\")?.value||\"\").trim()));if(connect){connect.disabled=!hasClient;connect.title=hasClient?\"Authorize CardShowIndex Search Console read-only\":\"Save the Google OAuth Client ID and Client Secret first\";}\n  }\n  function renderDirectoryAnalyticsGaV628(data={}){const target=$(\"directoryAnalyticsGaV628\");if(!target)return;if(data.configured===false){target.innerHTML=\"<div class='orbit-empty-state'><strong>GA4 reporting not configured</strong><span>Save the CardShowIndex GA4 Property ID in Directory Analytics. No zero traffic has been inferred.</span></div>\";return;}const m=data.metrics||{};target.innerHTML=table([\"Metric\",\"Last 30 days\"],[[\"Active users\",analyticsNumberV468(m.activeUsers)],[\"Sessions\",analyticsNumberV468(m.sessions)],[\"Page views\",analyticsNumberV468(m.screenPageViews)],[\"New users\",analyticsNumberV468(m.newUsers)],[\"Key events\",analyticsNumberV468(m.keyEvents)]].map(row=>`<tr><td><strong>${esc(row[0])}</strong></td><td>${esc(row[1])}</td></tr>`),\"No GA4 rows returned.\");}\n  function renderDirectoryAnalyticsSearchV628(data={}){const target=$(\"directoryAnalyticsSearchV628\");if(!target)return;if(data.configured===false||data.connected===false){target.innerHTML=\"<div class='orbit-empty-state'><strong>Search Console not connected</strong><span>Connect read-only Search Console above. No zero search visibility has been inferred.</span></div>\";return;}const rows=(data.queries||[]).slice(0,12);target.innerHTML=table([\"Query\",\"Clicks\",\"Impressions\",\"Position\"],rows.map(row=>`<tr><td><strong>${esc(row.query||\"(not set)\")}</strong></td><td>${analyticsNumberV468(row.clicks)}</td><td>${analyticsNumberV468(row.impressions)}</td><td>${Number(row.averagePosition||0).toFixed(1)}</td></tr>`),\"No Search Console query rows for this period.\");}\n  async function saveDirectoryAnalyticsV628(button=null){setLoading(button,true);try{const current=state.trackingSettings||await loadTrackingSettings(),profiles={...(current.siteProfiles||{})},cardIndex={...(profiles.card_show_index||{})};Object.assign(cardIndex,{googleAnalyticsMeasurementId:String($(\"directoryGaMeasurementIdV628\")?.value||\"\").trim(),googleAnalyticsPropertyId:String($(\"directoryGaPropertyIdV628\")?.value||\"\").trim(),searchConsoleSiteUrl:String($(\"directorySearchConsolePropertyV628\")?.value||\"\").trim(),sitemapUrl:String($(\"directorySitemapUrlV628\")?.value||\"\").trim(),googleAnalyticsEnabled:true,metaPixelEnabled:false});profiles.card_show_index=cardIndex;const payload={siteProfiles:profiles,googleAnalyticsOauthClientId:String($(\"directoryGoogleOauthClientIdV628\")?.value||\"\").trim()},secret=String($(\"directoryGoogleOauthClientSecretV628\")?.value||\"\").trim();if(secret)payload.googleAnalyticsOauthClientSecret=secret;await api(\"/api/admin/tracking-settings\",{method:\"PUT\",body:JSON.stringify(payload),cacheMs:0});await loadTrackingSettings();await loadCardShowIndexSearchConsoleStatusV625();setNotice(\"CardShowIndex analytics settings saved.\");return state.trackingSettings;}finally{setLoading(button,false);}}\n  async function connectDirectorySearchConsoleV628(button=null){const popup=window.open(\"about:blank\",\"orbitGoogleSearchConsoleOauth\",\"popup,width=620,height=760,resizable=yes,scrollbars=yes\");if(!popup)throw new Error(\"Your browser blocked the Google connection popup.\");setLoading(button,true);try{await saveDirectoryAnalyticsV628(null);const launch=await api(\"/api/admin/google-search-console/oauth/launch\",{method:\"POST\",body:\"{}\",cacheMs:0}),target=String(launch?.url||\"\");if(!/^https:\\/\\/accounts\\.google\\.com\\//i.test(target))throw new Error(\"Orbit did not return a valid Google authorization URL.\");popup.location.replace(target);setNotice(\"Complete Google consent for CardShowIndex Search Console read-only access.\");}catch(error){try{popup.close();}catch(_){}throw error;}finally{setLoading(button,false);}}\n  async function loadDirectoryAnalyticsV628(force=false,button=null){if(button)setLoading(button,true);try{await loadTrackingSettings();const [statusResult,gaResult,searchResult]=await Promise.allSettled([loadCardShowIndexSearchConsoleStatusV625(),api(\"/api/admin/google-analytics/report?period=last_30_days&site=card_show_index\",{cacheMs:force?0:5000,timeoutMs:30000}),api(\"/api/admin/seo/rankings?period=last_30_days&site=card_show_index\",{cacheMs:force?0:5000,timeoutMs:30000})]),ga=gaResult.status===\"fulfilled\"?gaResult.value:{configured:false,error:gaResult.reason?.message||\"GA4 unavailable\"},search=searchResult.status===\"fulfilled\"?searchResult.value:{configured:false,connected:false,error:searchResult.reason?.message||\"Search Console unavailable\"};renderDirectoryAnalyticsGaV628(ga);renderDirectoryAnalyticsSearchV628(search);const metrics=$(\"directoryAnalyticsMetricsV628\"),sm=search.summary||{},gm=ga.metrics||{};if(metrics)metrics.innerHTML=[directoryMetricCardV628(\"Search clicks\",search.configured===false?\"\u2014\":analyticsNumberV468(sm.clicks),\"Last 30 days\"),directoryMetricCardV628(\"Search impressions\",search.configured===false?\"\u2014\":analyticsNumberV468(sm.impressions),\"Last 30 days\"),directoryMetricCardV628(\"Average position\",search.configured===false?\"\u2014\":Number(sm.averagePosition||0).toFixed(1),\"Search Console\"),directoryMetricCardV628(\"GA4 sessions\",ga.configured===false?\"\u2014\":analyticsNumberV468(gm.sessions),\"Last 30 days\")].join(\"\");if(statusResult.status===\"rejected\"&&$(\"directoryAnalyticsSearchConsoleV628\")){$(\"directoryAnalyticsSearchConsoleV628\").className=\"orbit-info-banner warning\";$(\"directoryAnalyticsSearchConsoleV628\").innerHTML=`<strong>Search Console status unavailable.</strong><span>${esc(statusResult.reason?.message||\"Retry\")}</span>`;}return {ga,search,status:statusResult.status===\"fulfilled\"?statusResult.value:null};}finally{if(button)setLoading(button,false);}}\n  async function testCardShowIndexSearchConsoleV625(button){setLoading(button,true);try{const data=await api(\"/api/admin/seo/search-console/test?site=card_show_index\",{cacheMs:0,timeoutMs:30000});if(!data.connected){const redirect=data.oauth?.redirectUri||\"\";throw new Error((data.reason||\"Connect Search Console read-only first.\")+(redirect?\" Google Cloud Authorized redirect URI must exactly equal: \"+redirect:\"\"));}setNotice(\"CardShowIndex Search Console connected \u00B7 \"+(data.permissionLevel||\"verified property\")+\".\");await loadCardShowIndexSearchConsoleStatusV625();return data;}finally{setLoading(button,false);}}\n  async function syncCardShowIndexSearchConsoleV625(button){setLoading(button,true);try{const data=await api(\"/api/admin/seo/search-console/sync\",{method:\"POST\",body:JSON.stringify({site:\"card_show_index\",period:\"last_30_days\"}),cacheMs:0,timeoutMs:90000});setNotice(\"CardShowIndex Search Console synced \u00B7 \"+Number(data.queryRows||0)+\" query rows \u00B7 \"+Number(data.pageRows||0)+\" page rows.\");await loadCardShowIndexSearchConsoleStatusV625();return data;}finally{setLoading(button,false);}}\n  window.addEventListener(\"message\",function(event){\n    let backendOrigin=\"\";try{backendOrigin=new URL(API_BASE).origin;}catch(_){}\n    if(event.origin!==backendOrigin||![\"orbit-google-analytics-oauth\",\"orbit-google-search-console-oauth\"].includes(event.data?.type))return;\n    const sc=event.data.type===\"orbit-google-search-console-oauth\";loadTrackingSettings().then(()=>{if(event.data.status===\"connected\"){setNotice(sc?(event.data.mode===\"write\"?\"Search Console sitemap-write permission connected separately.\":\"Search Console read-only connected. Now checking the 4 Orbit Domain properties.\"):\"Google Analytics connected with read-only access.\");if(sc)Promise.allSettled([loadSearchConsolePropertiesV495(null),loadCardShowIndexSearchConsoleStatusV625()]);if(state.currentModule===\"analytics-overview\"||state.currentModule===\"performance\")loadAnalyticsOverviewV468(null).catch(()=>{});if(state.currentModule===\"seo\")loadSeoRankingsV477(null).catch(()=>{});}else setNotice((sc?\"Search Console\":\"Google Analytics\")+\" connection was not completed.\",true);}).catch(err=>setNotice(err.message||err,true));\n  });\n\n  async function loadAttendance() {\n    const events = await api(\"/api/admin/attendance/events?limit=250&scope=all\");\n    state.attendance = { events: events.events || [] };\n    renderAttendanceCentre(state.attendance);\n  }\n\n  async function loadAttendanceDetail(eventId) {\n    const target = $(\"attendanceDetailTable\");\n    if (target) target.innerHTML = \"Loading attendance detail...\";\n    const detail = await api(\"/api/admin/attendance/events/\" + encodeURIComponent(eventId));\n    state.attendanceDetail = detail;\n    renderAttendanceDetail(detail);\n  }\n\n  async function loadAll(button) {\n    setLoading(button, true);\n    try {\n      // V454: operator Refresh means fresh data across the entire Home workspace, including Operations Snapshot.\n      orbitGetCache.clear();\n      if (!secret) {\n        setNotice(\"Missing ADMIN_SECRET. Open this as /pages/admin-os?secret=YOUR_ADMIN_SECRET\", true);\n        return;\n      }\n\n      text(\"commandCentreState\", \"Refreshing all dashboard data\");\n      setNotice(\"Refreshing Command Centre...\");\n      const workspaces = [\n        [\"Backend health\", loadBackendHealth], [\"Home summary\", function(){ return loadSummary(null,true); }],\n        [\"Fulfilment\", loadFulfilment], [\"Shipping configuration\", loadShippingConfig],\n        [\"Monthly Draw\", loadDraws], [\"Golden Tickets\", loadGolden],\n        [\"Events\", loadEvents], [\"Scheduler\", loadScheduler],\n        [\"Communications\", loadCommunications], [\"Eventbrite\", loadEventbrite],\n        [\"Tracking\", loadTrackingSettings],\n        [\"Attendance\", loadAttendance], [\"Tickets\", loadShopify],\n        [\"Tasks\", function () { return loadOperationsV74(null); }],\n        [\"Support\", function () { return loadSupportInbox(null, true); }]\n      ];\n      const results = await Promise.all(workspaces.map(function (entry) {\n        return loadWorkspace(entry[0], entry[1]);\n      }));\n      const failures = results.filter(function (result) { return !result.ok; });\n\n      text(\"lastUpdated\", \"Updated \" + new Date().toLocaleTimeString(\"en-GB\", {\n        hour: \"2-digit\", minute: \"2-digit\"\n      }));\n      updateCommandCentre();\n      text(\"commandCentreState\", failures.length ? \"Some checks need attention\" : \"All checks completed\");\n\n      if (failures.length) {\n        setNotice(failures.map(function(f){ return f.name + \": \" + (f.error?.message || \"request failed\"); }).join(\" \u00B7 \") + \". Other Orbit OS areas remain available. Use Refresh to retry.\", true);\n      } else {\n        setNotice(\"Command Centre refreshed successfully.\");\n      }\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  let homeHealthPromiseV554 = null;\n  function setHomeHealthCheckingV554(){\n    [\n      [\"healthBackend\",\"Backend\",\"Checking live connection\"],[\"healthMongo\",\"MongoDB\",\"Checking database\"],\n      [\"healthRecharge\",\"Recharge\",\"Checking billing provider\"],[\"healthScheduler\",\"Scheduler\",\"Checking scheduler\"],\n      [\"healthEventbrite\",\"Eventbrite\",\"Checking events connection\"],[\"healthShopify\",\"Shopify\",\"Checking ticket connection\"],\n      [\"healthShipEngine\",\"ShipStation\",\"Checking label provider\"],[\"healthResend\",\"Email\",\"Checking delivery configuration\"],\n      [\"healthScanner\",\"Scanner\",\"Checking dependencies\"],[\"healthWebhooks\",\"Monthly Draw\",\"Checking schedule\"]\n    ].forEach(([id,label,detail])=>healthCard(id,label,\"checking\",detail));\n  }\n  function transientHealthErrorV554(error){\n    const message=String(error?.message||error||\"\").toLowerCase();\n    return error?.status==null || error?.status>=500 || /network|fetch|timeout|timed out|abort|temporar/.test(message);\n  }\n  async function withHealthRetryV554(fn){\n    try{return await fn();}catch(error){if(!transientHealthErrorV554(error))throw error;await new Promise(resolve=>setTimeout(resolve,450));return fn();}\n  }\n  async function probeSchedulerHealthV554(){\n    const data=await api(\"/api/admin/scheduler/status\",{cacheMs:0,timeoutMs:20000});\n    if(!data||data.success===false)throw new Error(data?.error||\"Scheduler health check failed.\");\n    state.scheduler=data;renderSystemHealth(data.systemHealth||{});\n    const automatic=Boolean(data.automationEnabled&&data.midMonthDrawEnabled);\n    healthCard(\"healthWebhooks\",\"Monthly Draw\",automatic?\"enabled\":\"disabled\",automatic?(\"Automatic \u00B7 Next draw \"+prettyDate(data.nextMidMonthDrawAt)):\"Automatic draw is disabled \u2014 open Draw Automation\");\n    return data;\n  }\n  async function probeEventbriteHealthV554(){\n    const [status,events]=await Promise.all([api(\"/api/admin/eventbrite/status\",{cacheMs:0,timeoutMs:12000}),api(\"/api/admin/eventbrite/events?limit=1&metrics=0\",{cacheMs:0,timeoutMs:12000})]);\n    const ok=Boolean(status?.connected);healthCard(\"healthEventbrite\",\"Eventbrite\",ok?\"connected\":\"warning\",ok?`${Number(events?.count||events?.events?.length||0)}+ synced event records available`:(status?.error||\"Eventbrite needs attention\"));\n    if(!ok)throw Object.assign(new Error(status?.error||\"Eventbrite is not connected.\"),{healthRendered:true});return {status,events};\n  }\n  function dashboardCheckoutHealthMarkupV558(status={}){\n    const journey=status.journeyHealth||{};\n    const routeCard=(label,item)=>{\n      const healthy=item?.healthy===true;\n      return \"<div class='orbit-shopify-status-card \"+(healthy?\"\":\"is-warning\")+\"'><span>\"+esc(label)+\"</span><strong><i class='orbit-status-dot \"+(healthy?\"\":\"bad\")+\"'></i>\"+(healthy?\"Ready\":\"Check\")+\"</strong><small>\"+esc(item?.detail||\"Health unavailable\")+\"</small></div>\";\n    };\n    const shop=\"<div class='orbit-shopify-status-card'><span>Shopify</span><strong><i class='orbit-status-dot \" + (status.connected ? \"\" : \"bad\") + \"'></i>\" + (status.connected ? \"Connected\" : \"Not connected\") + \"</strong><small>\" + esc(status.shop || \"Shop unavailable\") + \" \u00B7 Paid-order webhook \" + (status.webhookExists ? \"confirmed\" : \"requires attention\") + \"</small></div>\",workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());\n    if(workspace==='card-shows')return shop+routeCard(\"Ticket Purchase\",journey.ticketPurchase);\n    if(workspace==='members-club')return shop+routeCard(\"\u00A31 Signup\",journey.directSignup)+routeCard(\"Event Upgrade\",journey.eventUpgrade);\n    return shop;\n  }\n  function renderDashboardCheckoutHealthV558(status={}){\n    const target=$(\"dashboardCheckoutHealth\");\n    if(target)target.innerHTML=dashboardCheckoutHealthMarkupV558(status);\n  }\n  function renderDashboardCheckoutHealthFailureV558(message){\n    const target=$(\"dashboardCheckoutHealth\");\n    if(target)target.innerHTML=\"<div class='orbit-empty-state'><strong>Checkout health unavailable</strong><span>\"+esc(message||\"Shopify health could not be checked.\")+\" Use Check all now to retry.</span></div>\";\n  }\n  async function probeShopifyHealthV554(forceFresh=false){\n    try{\n      const data=await api(\"/api/admin/shopify/status\"+(forceFresh?\"?force=1\":\"\"),{cacheMs:0,timeoutMs:12000});\n      renderDashboardCheckoutHealthV558(data||{});\n      const ok=data?.connected!==false && data?.configured!==false && data?.success!==false;healthCard(\"healthShopify\",\"Shopify\",ok?\"connected\":\"warning\",data?.shop||data?.shopDomain||data?.store||data?.message||\"Ticket sales connection\");\n      if(!ok)throw Object.assign(new Error(data?.error||\"Shopify needs attention.\"),{healthRendered:true});return data;\n    }catch(error){renderDashboardCheckoutHealthFailureV558(error?.message||String(error||\"Shopify health check failed.\"));throw error;}\n  }\n  async function probeShippingHealthV554(){\n    const data=await api(\"/api/admin/shipengine/test\",{cacheMs:0,timeoutMs:12000});\n    healthCard(\"healthShipEngine\",\"ShipStation\",\"operational\",data?.carrierName||data?.message||\"Live label-provider connection confirmed\");return data;\n  }\n  async function probeEmailHealthV554(){\n    const data=await api(\"/api/admin/communications/status\",{cacheMs:0,timeoutMs:10000});\n    const ok=Boolean(data?.configured||data?.resendConfigured||data?.ready||data?.success);healthCard(\"healthResend\",\"Email\",ok?\"configured\":\"warning\",data?.fromEmail||data?.sender||data?.error||\"Email delivery configuration\");\n    if(!ok)throw Object.assign(new Error(data?.error||\"Email delivery is not configured.\"),{healthRendered:true});return data;\n  }\n  async function runHomeHealthChecksV554({announce=false,forceFresh=false}={}){\n    if(homeHealthPromiseV554){\n      if(!forceFresh)return homeHealthPromiseV554;\n      const prior=homeHealthPromiseV554;try{await prior;}catch(_e){}\n      if(homeHealthPromiseV554&&homeHealthPromiseV554!==prior)return runHomeHealthChecksV554({announce,forceFresh:true});\n    }\n    setHomeHealthCheckingV554();\n    const run=(async()=>{\n      const checks=[\n        [\"Backend\",()=>loadBackendHealth()],[\"Core services\",()=>probeSchedulerHealthV554()],[\"Eventbrite\",()=>probeEventbriteHealthV554()],\n        [\"Shopify\",()=>probeShopifyHealthV554(forceFresh)],[\"ShipStation\",()=>probeShippingHealthV554()],[\"Email\",()=>probeEmailHealthV554()]\n      ];\n      const results=await Promise.all(checks.map(async([name,fn])=>{try{return{name,ok:true,value:await withHealthRetryV554(fn)}}catch(error){return{name,ok:false,error}}}));\n      const failed=results.filter(x=>!x.ok);\n      for(const item of failed){\n        if(item.error?.healthRendered)continue;\n        const map={Backend:[\"healthBackend\",\"Backend\"],\"Core services\":[\"healthMongo\",\"MongoDB\"],Eventbrite:[\"healthEventbrite\",\"Eventbrite\"],Shopify:[\"healthShopify\",\"Shopify\"],ShipStation:[\"healthShipEngine\",\"ShipStation\"],Email:[\"healthResend\",\"Email\"]};\n        const [id,label]=map[item.name]||[];if(id)healthCard(id,label,\"unavailable\",item.error?.message||\"Live health probe failed\");\n        if(item.name===\"Core services\"){healthCard(\"healthRecharge\",\"Recharge\",\"unavailable\",\"Core health probe failed\");healthCard(\"healthScheduler\",\"Scheduler\",\"unavailable\",\"Core health probe failed\");healthCard(\"healthScanner\",\"Scanner\",\"unavailable\",\"Backend/database health could not be confirmed\");healthCard(\"healthWebhooks\",\"Monthly Draw\",\"unavailable\",\"Scheduler health could not be confirmed\");}\n      }\n      text(\"lastUpdated\",(failed.length?\"Health check attempted \":\"Health checked \")+new Date().toLocaleTimeString(\"en-GB\",{hour:\"2-digit\",minute:\"2-digit\"}));\n      text(\"commandCentreState\",failed.length?\"Critical service checks need attention\":\"All critical services checked\");\n      if(announce)setNotice(failed.length?\"Critical service checks need attention: \"+failed.map(x=>x.name).join(\", \")+\". Use the red card to diagnose, then Check all now to retry.\":\"All critical Orbit services checked successfully.\",Boolean(failed.length));\n      return {success:!failed.length,failures:failed.map(x=>({name:x.name,error:x.error?.message||String(x.error||\"\")})),results};\n    })();\n    homeHealthPromiseV554=run;try{return await run;}finally{homeHealthPromiseV554=null;}\n  }\n\n  let homeRefreshPromiseV542 = null;\n  async function refreshHomeV542(button) {\n    if (homeRefreshPromiseV542) return homeRefreshPromiseV542;\n    setLoading(button, true);\n    const run = (async () => {\n      orbitGetCache.clear();\n      text(\"commandCentreState\", \"Refreshing Home\");\n      setNotice(\"Refreshing Home figures and task counts\u2026\");\n      const jobs = [\n        [\"Critical service health\", () => runHomeHealthChecksV554({announce:false,forceFresh:true})],\n        [\"Home figures\", () => loadSummary(null, true)],\n        [\"Tasks\", async () => { await loadOperationsV74(null,true); if (state.operationsCountErrorV539) throw new Error(\"Tasks could not refresh\"); }],\n        [\"Acceptance tasks\", () => refreshAcceptanceTaskCountV296(true)]\n      ];\n      const results = await Promise.all(jobs.map(([name, fn]) => loadWorkspace(name, fn)));\n      const failures = results.filter(r => !r.ok);\n      updateCommandCentre();\n      text(\"commandCentreState\", failures.length ? \"Home refresh needs attention\" : \"Home refreshed\");\n      text(\"lastUpdated\", (failures.length ? \"Last refresh attempted \" : \"Updated \") + new Date().toLocaleTimeString(\"en-GB\", {hour:\"2-digit\",minute:\"2-digit\"}));\n      setNotice(failures.length ? \"Some Home checks could not refresh: \" + failures.map(f => f.name).join(\", \") + \". Press Check all now to retry.\" : \"Home refreshed: critical service health, operations and tasks are up to date.\", Boolean(failures.length));\n      return {success:!failures.length, failures:failures.map(f=>f.name)};\n    })();\n    homeRefreshPromiseV542 = run;\n    try { return await run; } finally { homeRefreshPromiseV542=null; setLoading(button,false); }\n  }\n\n  function dotClass(status) {\n    const value = String(status || \"\").toLowerCase();\n    if ([\"online\", \"connected\", \"configured\", \"installed\", \"enabled\", \"healthy\", \"success\", \"ready\", \"ok\", \"operational\"].includes(value)) return \"\";\n    if ([\"missing_token\", \"disabled\", \"not_started\", \"paused\"].includes(value)) return \"warning\";\n    if ([\"checking\", \"unknown\", \"not yet checked\", \"not_checked\"].includes(value)) return \"neutral\";\n    return \"bad\";\n  }\n\n  /* HOME HEALTH ROUTING [LOCKED]: every card opens one exact operational destination. */\n  const healthDestinations = {\n    healthBackend: { module: \"settings\", anchor: \"settingsBackendCard\" },\n    healthMongo: { module: \"settings\", anchor: \"settingsMongoCard\" },\n    healthRecharge: { module: \"settings\", anchor: \"settingsRechargeCard\" },\n    healthScheduler: { module: \"settings\", anchor: \"settingsSchedulerCard\" },\n    healthEventbrite: { module: \"settings\", anchor: \"settingsEventbriteCard\" },\n    healthShopify: { module: \"settings\", anchor: \"settingsShopifyCard\" },\n    healthShipEngine: { module: \"settings\", anchor: \"shippingSettingsPanel\" },\n    healthResend: { module: \"settings\", anchor: \"settingsResendCard\" },\n    healthScanner: { module: \"settings\", anchor: \"settingsScannerCard\" },\n    healthWebhooks: { module: \"automation\", anchor: \"drawAutomationSummaryV83\", drawPane: \"automation\" }\n  };\n\n  function operatorHealthStatus(status) {\n    const value = String(status || \"\").toLowerCase();\n    if ([\"online\",\"connected\",\"configured\",\"installed\",\"enabled\",\"healthy\",\"success\",\"ready\",\"ok\",\"operational\"].includes(value)) return \"Operational\";\n    if ([\"running\",\"in_progress\"].includes(value)) return \"Running\";\n    if ([\"disabled\",\"paused\",\"missing_token\",\"not_started\"].includes(value)) return \"Needs setup\";\n    if ([\"warning\",\"attention\",\"degraded\"].includes(value)) return \"Needs attention\";\n    if ([\"checking\"].includes(value)) return \"Checking live connection\";\n    if ([\"unknown\",\"not yet checked\"].includes(value)) return \"Not checked\";\n    return status || \"Unavailable\";\n  }\n\n  function healthCard(id, label, status, detail) {\n    const el = $(id);\n    if (!el) return;\n    const dot = dotClass(status);\n    const destination = healthDestinations[id] || { module: \"settings\", anchor: \"\" };\n    el.dataset.healthModule = destination.module;\n    el.dataset.healthAnchor = destination.anchor || \"\";\n    if (destination.drawPane) el.dataset.healthDrawPane = destination.drawPane;\n    else delete el.dataset.healthDrawPane;\n    const checkedAt = new Date();\n    el.dataset.lastChecked = checkedAt.toISOString();\n    el.classList.remove('orbit-health-warning','orbit-health-error','orbit-health-good','orbit-health-neutral');\n    el.classList.add(dot==='bad'?'orbit-health-error':dot==='warning'?'orbit-health-warning':dot==='neutral'?'orbit-health-neutral':'orbit-health-good');\n    const actionLabel=dot==='bad'?'Diagnose now':dot==='warning'?'Open settings':dot==='neutral'?'Checking':'View details';\n    el.title = (detail || label) + \" \u2014 checked \" + checkedAt.toLocaleTimeString(\"en-GB\", {hour:\"2-digit\", minute:\"2-digit\"}) + \"; \" + actionLabel.toLowerCase();\n    el.setAttribute('aria-label',label + ': ' + operatorHealthStatus(status) + '. ' + (detail||'') + '. ' + actionLabel);\n    el.innerHTML = \"<i class='orbit-status-dot \" + esc(dot) + \"'></i><span>\" + esc(label) + \"</span><strong>\" + esc(operatorHealthStatus(status)) + \"</strong><small>\"+esc(detail||'Open for details')+\"</small><em class='orbit-health-action'>\"+esc(actionLabel)+\"</em><b aria-hidden='true'>\u203A</b>\";\n  }\n\n  function updateHealthCheckedLabelsV834() {\n    document.querySelectorAll('.orbit-health-card[data-last-checked]').forEach(function(card){\n      const target=card.querySelector('.orbit-health-checked');\n      const checked=Date.parse(card.dataset.lastChecked||'');\n      if(!target || Number.isNaN(checked)) return;\n      const mins=Math.max(0,Math.floor((Date.now()-checked)/60000));\n      target.textContent=mins<1?'Checked just now':mins===1?'Checked 1 min ago':'Checked '+mins+' mins ago';\n    });\n  }\n  window.setInterval(updateHealthCheckedLabelsV834, 30000);\n\n  function integrationSummaryRows(targetId, rows) {\n    const target = $(targetId);\n    if (!target) return;\n    target.innerHTML = rows.map(function(row){\n      return \"<strong>\" + esc(row[0]) + \": \" + esc(row[1]) + \"</strong>\" + (row[2] ? \"<span>\" + esc(row[2]) + \"</span>\" : \"\");\n    }).join(\"\");\n  }\n\n  function setRepairStatus(id, status) {\n    const target=$(id); if(!target) return;\n    const label=operatorHealthStatus(status);\n    target.textContent=label;\n    target.classList.remove('is-good','is-warning','is-bad');\n    const dot=dotClass(status);\n    target.classList.add(dot==='bad'?'is-bad':dot==='warning'?'is-warning':'is-good');\n  }\n\n  function resolveStaleSettingsChecks() {\n    document.querySelectorAll('.orbit-repair-status').forEach(function(target){\n      if (!/^checking$/i.test(String(target.textContent||'').trim())) return;\n      target.textContent='Not checked';\n      target.classList.remove('is-good','is-bad');\n      target.classList.add('is-warning');\n      const card=target.closest('.orbit-settings-card');\n      const summary=card?.querySelector('.orbit-settings-summary');\n      if(summary && /loading|checking/i.test(summary.textContent||'')) summary.innerHTML='<strong>Status: Not checked</strong><span>The live check did not return in time.</span><span>Use the Retest button below. If it still does not resolve, open Developer & Testing to inspect the backend connection.</span>';\n    });\n  }\n  window.setInterval(resolveStaleSettingsChecks, 5000);\n\n  function renderRepairCentreHealth(health) {\n    health=health||{};\n    const backend=health.backend||health;\n    const mongo=health.mongo||{};\n    const scheduler=health.scheduler||state.scheduler?.systemHealth?.scheduler||{};\n    const recharge=health.recharge||{};\n    const scannerReady=['healthy','online','ready','ok'].includes(String(backend.status||'').toLowerCase()) && ['healthy','connected','ready','ok'].includes(String(mongo.status||'').toLowerCase());\n    setRepairStatus('settingsBackendStatus',backend.status||'unknown');\n    setRepairStatus('settingsMongoStatus',mongo.status||'unknown');\n    setRepairStatus('settingsSchedulerStatus',scheduler.status||'unknown');\n    setRepairStatus('settingsRechargeStatus',recharge.status||'unknown');\n    setRepairStatus('settingsScannerStatus',scannerReady?'ready':'warning');\n    const rechargeState=String(recharge.status||'unknown').toLowerCase();\n    const rechargeReason = recharge.error || recharge.note || (recharge.warningCount ? recharge.warningCount + ' recent member billing warning(s) need review' : recharge.configured===false ? 'Recharge credentials are not configured in the backend environment' : rechargeState==='checking' ? 'The live Recharge check is still running' : 'Recharge is configured and the live probe completed');\n    const rechargeAction = recharge.configured===false ? 'Add the Recharge API token in the backend environment, redeploy, then retest' : rechargeState==='authentication_error' ? 'Replace the rejected Recharge credentials, redeploy, then retest' : recharge.warningCount ? 'Open Member Billing to inspect the affected members, then retest' : 'Use Retest Recharge whenever you want a fresh live check';\n    integrationSummaryRows('settingsRechargeSummary',[\n      ['Status',operatorHealthStatus(recharge.status||'unknown'),rechargeReason],\n      ['Configuration',recharge.configured===false?'Missing':'Present','Credentials remain masked'],\n      ['Next action',rechargeAction,'Open Member Billing for subscription-level detail']\n    ]);\n    integrationSummaryRows('settingsScannerSummary',[\n      ['Status',scannerReady?'Ready':'Needs attention',scannerReady?'Backend and MongoDB dependencies are available':'Repair Backend or MongoDB first'],\n      ['Backend',operatorHealthStatus(backend.status||'unknown'),'Required for ticket validation'],\n      ['MongoDB',operatorHealthStatus(mongo.status||'unknown'),'Required for attendance records']\n    ]);\n    const drawAutomatic=(state.scheduler?.automationEnabled!==false)&&(state.scheduler?.midMonthDrawEnabled!==false);\n    setRepairStatus('settingsDrawStatus',drawAutomatic?'enabled':'disabled');\n  }\n\n  function renderIntegrationSettings(health) {\n    health = health || {};\n    const backend = health.backend || health;\n    const mongo = health.mongo || {};\n    const scheduler = health.scheduler || state.scheduler?.systemHealth?.scheduler || {};\n    integrationSummaryRows(\"settingsBackendSummary\", [\n      [\"Status\", operatorHealthStatus(backend.status || \"unknown\"), \"Version \" + (backend.version || health.version || \"\u2014\")],\n      [\"Last check\", new Date().toLocaleString(\"en-GB\"), \"Live /health diagnostic\"],\n      [\"Admin API\", \"Available\", \"Sensitive environment values remain masked\"]\n    ]);\n    integrationSummaryRows(\"settingsMongoSummary\", [\n      [\"Status\", operatorHealthStatus(mongo.status || \"unknown\"), \"Database \" + (mongo.database || \"\u2014\")],\n      [\"Latency\", String(mongo.latencyMs ?? \"\u2014\") + \" ms\", \"Measured by the live backend\"],\n      [\"Credentials\", \"Masked\", \"Connection secrets are managed in the backend environment\"]\n    ]);\n    integrationSummaryRows(\"settingsSchedulerSummary\", [\n      [\"Status\", operatorHealthStatus(scheduler.status || \"unknown\"), scheduler.tickInProgress ? \"Scheduler tick is running\" : \"Scheduler is standing by\"],\n      [\"Global automation\", state.scheduler?.automationEnabled === false ? \"Disabled\" : \"Enabled\", \"Controls whether scheduled jobs can run\"],\n      [\"Automatic draw\", state.scheduler?.midMonthDrawEnabled ? \"Enabled\" : \"Disabled\", \"Monthly Draw configuration is managed in Prizes\"],\n      [\"Next draw\", prettyDate(state.scheduler?.nextMidMonthDrawAt), \"Open Monthly Draw for editable automation settings\"]\n    ]);\n    renderRepairCentreHealth(health);\n  }\n\n  function renderSystemHealth(health) {\n    if (!state.health) {\n      healthCard(\"healthBackend\", \"Backend\", health.backend?.status || \"unknown\", \"Version \" + (health.backend?.version || \"\u2014\"));\n    }\n    healthCard(\"healthMongo\", \"MongoDB\", health.mongo?.status || \"unknown\", (health.mongo?.database || \"\u2014\") + \" / \" + (health.mongo?.latencyMs ?? \"\u2014\") + \"ms\");\n    healthCard(\"healthRecharge\", \"Recharge\", health.recharge?.status || \"unknown\", health.recharge?.warningCount ? (health.recharge.warningCount + \" recent operational warning\" + (health.recharge.warningCount === 1 ? \"\" : \"s\")) : (health.recharge?.error || \"Billing integration\"));\n    healthCard(\"healthScheduler\", \"Scheduler\", health.scheduler?.tickInProgress ? (health.scheduler?.status || \"running\") : \"ready\", health.scheduler?.tickInProgress ? \"Tick running now\" : \"Standing by for next scheduled run\");\n    const backendHealthy = [\"healthy\", \"online\", \"ready\", \"ok\"].includes(String(health.backend?.status || \"\").toLowerCase());\n    const mongoHealthy = [\"healthy\", \"connected\", \"ready\", \"ok\"].includes(String(health.mongo?.status || \"\").toLowerCase());\n    const scannerReady = backendHealthy && mongoHealthy;\n    healthCard(\"healthScanner\", \"Scanner\", scannerReady ? \"ready\" : \"warning\", scannerReady ? \"Scanner dependencies are healthy: backend and MongoDB are available\" : \"Scanner depends on both the backend and MongoDB; check any unhealthy dependency\");\n    const schedulerState = health.scheduler || state.scheduler?.systemHealth?.scheduler || {};\n    const globalAutomationEnabled = state.scheduler?.automationEnabled !== false && schedulerState.automationEnabled !== false && schedulerState.enabled !== false;\n    const drawEnabled = state.scheduler?.midMonthDrawEnabled !== false;\n    const drawAutomatic = globalAutomationEnabled && drawEnabled;\n    const drawStatus = drawAutomatic ? \"enabled\" : \"disabled\";\n    const nextDraw = state.scheduler?.nextMidMonthDrawAt ? prettyDate(state.scheduler.nextMidMonthDrawAt) : \"No next draw date available\";\n    healthCard(\"healthWebhooks\", \"Monthly Draw\", drawStatus, drawAutomatic ? \"Automatic \u00B7 Next draw \" + nextDraw : \"Automatic draw is disabled \u2014 open Draw Automation\");\n    renderRepairCentreHealth(health);\n  }\n\n  function renderDashboardAutomation(status) {\n    const target = $(\"dashboardAutomationDetails\");\n    const explanation = $(\"automationExplanation\");\n    if (!target) return;\n    const enabled = Boolean(status.automationEnabled);\n    if (explanation) explanation.textContent = enabled\n      ? \"Automation is enabled. Orbit checks hourly and runs enabled jobs when their scheduled time is due.\"\n      : \"Automation is disabled because ORBIT_AUTOMATION_ENABLED is not enabled in the backend environment. Manual controls still work, but scheduled month-start and draw jobs will not run automatically.\";\n    const recent = Array.isArray(status.recentRuns) ? status.recentRuns : [];\n    const lastSuccess = recent.find(function(row){ return String(row.status || \"\").toLowerCase() === \"completed\"; });\n    const lastFailure = recent.find(function(row){ return [\"failed\", \"error\"].includes(String(row.status || \"\").toLowerCase()); });\n    const rows = [\n      [\"Global automation\", enabled ? \"Enabled\" : \"Disabled\"],\n      [\"Scheduler runner\", status.runningInProcess ? \"Running in this backend process\" : \"Not running\"],\n      [\"Month-start job\", status.monthStartEnabled ? \"Enabled\" : \"Disabled\"],\n      [\"Monthly draw job\", status.midMonthDrawEnabled ? \"Enabled\" : \"Disabled\"],\n      [\"Next month start\", prettyDate(status.nextMonthStartAt)],\n      [\"Next monthly draw\", prettyDate(status.nextMidMonthDrawAt)],\n      [\"Last successful run\", lastSuccess ? prettyDate(lastSuccess.finished_at || lastSuccess.created_at) : \"None recorded\"],\n      [\"Last failed run\", lastFailure ? ((lastFailure.summary || lastFailure.error || \"Failed\") + \" \u00B7 \" + prettyDate(lastFailure.finished_at || lastFailure.created_at)) : \"None recorded\"]\n    ];\n    target.innerHTML = rows.map(function(row){ return \"<div><span>\" + esc(row[0]) + \"</span><strong>\" + esc(row[1] || \"\u2014\") + \"</strong></div>\"; }).join(\"\");\n  }\n\n  function renderSchedulerStatus(status) {\n    const target = $(\"schedulerSummary\");\n    if (!target) return;\n\n    const config = status.config || {};\n    const recent = status.recentRuns || [];\n    const lastRun = recent[0];\n    const automationState = status.automationEnabled ? \"Enabled\" : \"Disabled\";\n    const monthStartState = status.monthStartEnabled ? \"Enabled\" : \"Disabled\";\n    const drawState = status.midMonthDrawEnabled ? \"Enabled\" : \"Disabled\";\n\n    text(\"automationStateLabel\", automationState);\n    const stateBadge = $(\"automationStateBadge\");\n    if (stateBadge) {\n      stateBadge.classList.toggle(\"enabled\", Boolean(status.automationEnabled));\n      stateBadge.classList.toggle(\"disabled\", !status.automationEnabled);\n    }\n\n    text(\"nextMonthStartAt\", prettyDate(status.nextMonthStartAt));\n    text(\"nextMidMonthDrawAt\", prettyDate(status.nextMidMonthDrawAt));\n    text(\"monthStartSchedule\", \"Day \" + (config.monthStartDay || 1) + \" after \" + String(config.monthStartHourUtc ?? 1).padStart(2, \"0\") + \":00 UTC / \" + monthStartState);\n    text(\"drawSchedule\", \"Day \" + (config.midMonthDrawDay || 15) + \" at \" + String(config.midMonthDrawHourLocal ?? config.midMonthDrawHourUtc ?? 14).padStart(2, \"0\") + \":00 UK time / \" + drawState);\n\n    const rows = [\n      [\"Automation\", automationState],\n      [\"Runner\", status.runningInProcess ? \"Installed\" : \"Not running\"],\n      [\"Month Start\", monthStartState],\n      [\"Prize Draw\", drawState],\n      [\"Last Tick\", prettyDate(status.lastTickAt)],\n      [\"Last Scheduled Run\", lastRun ? ((lastRun.workflow_type || \"Workflow\") + \" / \" + (lastRun.status || \"\u2014\")) : \"None yet\"]\n    ];\n\n    target.innerHTML = rows.map(([label, value]) =>\n      \"<div><span>\" + esc(label) + \"</span><strong>\" + esc(value) + \"</strong></div>\"\n    ).join(\"\");\n  }\n\n  function renderShopifyCentre(status, recent) {\n    renderDashboardCheckoutHealthV558(status||{});\n    const statusTarget = $(\"shopifyStatusPanel\");\n    if (statusTarget) {\n      // V370 NOTE-C9353DA904 / NOTE-BCFCC57D3F: checkout-health cards belong\n      // on Home. Tickets stays operational and does not repeat a blue explainer.\n      statusTarget.innerHTML=\"\";\n      statusTarget.hidden=true;\n    }\n\n    const checkoutTarget = $(\"ticketCheckoutsTable\");\n    if (checkoutTarget) {\n      const search = String($(\"ticketAdminSearch\")?.value || \"\").trim().toLowerCase();\n      const eventFilter = $(\"ticketAdminEventFilter\")?.value || \"all\";\n      const statusFilter = $(\"ticketAdminStatusFilter\")?.value || \"all\";\n      const allRows = (recent?.checkouts || []);\n      // V341 NOTE-53C280781E: operator Tickets view is for genuine paid/issued\n      // orders, not Shopify Draft Orders or abandoned checkout handoffs.\n      const visibleRows = allRows.filter(function(row){\n        const status=String(row.status||\"\").toLowerCase();\n        const isDraft=status===\"shopify_checkout_created\" || (!row.shopifyOrderId && Boolean(row.shopifyDraftOrderId) && !row.fulfilledAt);\n        return !isDraft;\n      });\n      const eventSelect = $(\"ticketAdminEventFilter\");\n      if(eventSelect&&eventSelect.options.length<=1){const current=eventSelect.value||\"all\",names=(recent?.eventOptions||Array.from(new Set(visibleRows.map(r=>r.eventName).filter(Boolean)))).sort();eventSelect.innerHTML=\"<option value='all'>All events</option>\"+names.map(name=>\"<option value='\"+esc(name)+\"'>\"+esc(name)+\"</option>\").join(\"\");if(names.includes(current))eventSelect.value=current;}\n      const filteredRows = visibleRows.filter(function(row){\n        const status = String(row.status || \"\");\n        const createdMs = row.createdAt ? Date.parse(row.createdAt) : 0;\n        const hasCustomer = Boolean(row.customerEmail || row.email);\n        const hasTickets = Number(row.ticketCount || 0) > 0;\n        const hasOrder = Boolean(row.shopifyOrderId || row.fulfilledAt || status === \"fulfilled\" || status === \"paid\");\n        const base = hasOrder || (hasCustomer && hasTickets);\n        const hay = [row.customerEmail,row.customerName,row.shopifyOrderId,row.shopifyDraftOrderId,row.checkoutId,row.eventName,row.eventDate].join(\" \").toLowerCase();\n        const statusValue = String(row.status || (row.lastSyncError ? \"failed\" : \"\")).toLowerCase();\n        const statusMatches=statusFilter === \"all\" || (statusFilter === \"fulfilled\" && [\"fulfilled\",\"tickets_issued\",\"completed\",\"paid\",\"order_paid\"].includes(statusValue)) || statusValue === statusFilter || (statusFilter === \"failed\" && Boolean(row.lastSyncError));\n        return base && (!search || hay.includes(search)) && (eventFilter === \"all\" || row.eventName === eventFilter) && statusMatches;\n      });\n      const rows=ticketSortRowsV497(filteredRows);\n      if (!rows.length) {\n        checkoutTarget.innerHTML = recent?.success === false ? \"Could not load recent checkouts: \" + esc(recent.error || \"Unknown error\") : \"No Orbit Shopify ticket checkouts found yet.\";\n      } else {\n        checkoutTarget.innerHTML = \"<table class='orbit-sortable-table-v497'><thead><tr><th>\"+ticketSortButtonV497(\"created\",\"Created\")+\"</th><th>\"+ticketSortButtonV497(\"status\",\"Status\")+\"</th><th>\"+ticketSortButtonV497(\"event\",\"Event\")+\"</th><th>\"+ticketSortButtonV497(\"order\",\"Shopify order\")+\"</th><th>\"+ticketSortButtonV497(\"email\",\"Email\")+\"</th><th>\"+ticketSortButtonV497(\"tickets\",\"Tickets\")+\"</th><th>Actions</th></tr></thead><tbody>\" + rows.map(row => {\n          const debugText = row.lastSyncDebug ? JSON.stringify(row.lastSyncDebug) : \"\";\n          const syncLine = row.lastSyncStatus || row.lastSyncError || row.fulfilledAt ? (\"<br><small class='orbit-sync-line'>\" + (row.fulfilledAt ? \"Fulfilled: \" + esc(prettyShortDate(row.fulfilledAt)) + \"<br>\" : \"\") + \"Sync: \" + esc(row.lastSyncStatus || \"\u2014\") + (row.lastSyncError ? \"<br>Error: \" + esc(row.lastSyncError) : \"\") + \"</small>\") : \"\";\n          const journeyLine = row.checkoutRoute || row.journeyStep || row.discountCode || row.adminTrackingNote ? (\"<br><small class='orbit-sync-line'>Route: \" + esc(row.checkoutRoute || \"ticket only\") + (row.journeyStep ? \"<br>Step: \" + esc(row.journeyStep) : \"\") + (row.discountCode ? \"<br>Code: \" + esc(row.discountCode) : \"\") + (row.adminTrackingNote ? \"<br>\" + esc(row.adminTrackingNote) : \"\") + \"</small>\") : \"\";\n          const invoiceLink = row.shopifyInvoiceUrl ? \"<br><a href='\" + esc(row.shopifyInvoiceUrl) + \"' target='_blank' rel='noopener noreferrer'>Open Shopify checkout</a>\" : \"\";\n          const statusClass = checkoutStatusClass(row.status || (row.lastSyncError ? \"failed\" : \"\"));\n          const checkoutLines = Array.isArray(row.lines) ? row.lines : [];\n          const ticketBreakdown = checkoutLines.length\n            ? \"<details class='orbit-ticket-order-expand'><summary>\" + esc(row.ticketCount || checkoutLines.length) + \" items \u00B7 Show details</summary><div class='orbit-ticket-line-breakdown'>\" + checkoutLines.map(function(line){\n                const qty = Number(line.quantity || line.count || 0);\n                const name = line.name || line.ticketName || \"Ticket item\";\n                const isAddon = Boolean(line.addOn) || String(line.ticketKind || \"\").toLowerCase() === \"add_on\" || /add[ -]?on|mystery box/i.test(String(name));\n                return \"<div><span class='orbit-pill \" + (isAddon ? \"info\" : \"\") + \"'>\" + (isAddon ? \"Add-on\" : \"Admission\") + \"</span><strong>\" + esc(name) + \"</strong><b>\u00D7 \" + esc(qty || 1) + \"</b></div>\";\n              }).join(\"\") + \"</div></details>\"\n            : \"<small>No item breakdown recorded</small>\";\n          return \"<tr class='\" + (row.status === \"fulfilled\" ? \"orbit-row-fulfilled\" : \"\") + \"'>\" +\n            \"<td>\" + esc(prettyShortDate(row.createdAt || row.updatedAt)) + \"</td>\" +\n            \"<td><span class='orbit-pill \" + statusClass + \"'>\" + esc(checkoutStatusLabel(row)) + \"</span>\" + (row.discountCode ? \"<br><span class='orbit-pill orbit-ticket-discount-pill'>Discount \u00B7 \"+esc(row.discountCode)+(Number(row.discountPercentage||0)>0?\" \u00B7 \"+esc(row.discountPercentage)+\"%\":\"\")+\"</span>\" : \"\") + (row.isAdminFreeTest ? \"<br><small>\u00A30 admin test</small>\" : \"\") + (row.lastResendAt ? \"<br><small>Resent: \" + esc(prettyShortDate(row.lastResendAt)) + \"</small>\" : \"\") + \"</td>\" +\n            \"<td><strong>\" + esc(row.eventName || \"\u2014\") + \"</strong>\" + (row.eventDate ? \"<br><small><strong>\" + esc(row.eventDate) + \"</strong></small>\" : \"\") + \"<br><small>\" + esc(row.checkoutId || \"\u2014\") + journeyLine + \"</small></td>\" +\n            \"<td><strong>\" + esc(row.shopifyOrderName || \"\u2014\") + \"</strong></td>\" +\n            \"<td>\" + esc(row.customerEmail || \"\u2014\") + \"</td>\" +\n            \"<td><strong>\" + esc(row.ticketCount || 0) + \" issued</strong>\" + ticketBreakdown + \"</td>\" +\n            \"<td><div class='orbit-row-actions'>\" +\n              \"<button type='button' class='secondary' data-ticket-details='\" + esc(row.checkoutId || \"\") + \"'>View Details</button>\" +\n              (row.status === \"fulfilled\" ? \"<button type='button' class='secondary' data-resend-public-tickets='\" + esc(row.checkoutId || \"\") + \"' data-ticket-email='\" + esc(row.customerEmail || \"\") + \"'>Resend Tickets</button><button type='button' class='danger' data-delete-fulfilled-ticket-order='\" + esc(row.checkoutId || \"\") + \"'>Delete Order</button>\" : \"\") +\n              (row.status === \"shopify_checkout_created\" ? \"<button type='button' class='secondary' data-dismiss-pending-ticket-order='\" + esc(row.checkoutId || \"\") + \"'>Dismiss Pending</button>\" : \"\") +\n            \"</div></td>\" +\n          \"</tr>\";\n        }).join(\"\") + \"</tbody></table>\"+(Number(recent?.pages||1)>1?\"<div class='orbit-ticket-pagination-v457'><button type='button' class='secondary' data-ticket-page-v457='\"+Math.max(1,Number(recent.page||1)-1)+\"' \"+(Number(recent.page||1)<=1?\"disabled\":\"\")+\">Previous</button><span>Page \"+Number(recent.page||1)+\" of \"+Number(recent.pages||1)+\" \u00B7 \"+Number(recent.total||0)+\" orders</span><button type='button' class='secondary' data-ticket-page-v457='\"+(Number(recent.page||1)+1)+\"' \"+(Number(recent.page||1)>=Number(recent.pages||1)?\"disabled\":\"\")+\">Next</button></div>\":\"\");\n        checkoutTarget.querySelectorAll('[data-ticket-sort-v497]').forEach(button=>button.addEventListener('click',()=>{const key=button.dataset.ticketSortV497;if(ticketAdminSortV497.key===key)ticketAdminSortV497.direction=ticketAdminSortV497.direction==='asc'?'desc':'asc';else ticketAdminSortV497={key,direction:'asc'};renderShopifyCentre(state.shopify||status,state.ticketCheckouts||recent);}));\n        checkoutTarget.querySelectorAll(\"[data-ticket-page-v457]\").forEach(b=>b.addEventListener(\"click\",()=>loadTicketOrderPageV457(Number(b.dataset.ticketPageV457)).catch(err=>setNotice(err.message||err,true))));\n      }\n    }\n  }\n\n  function openTicketDetails(checkoutId) {\n    const row = (state.ticketCheckouts?.checkouts || []).find(function(item){ return String(item.checkoutId || \"\") === String(checkoutId || \"\"); });\n    if (!row) { setNotice(\"Ticket order could not be found.\", true); return; }\n    const body = $(\"ticketDetailsBody\");\n    const dialog = $(\"ticketDetailsDialog\");\n    text(\"ticketDetailsTitle\", (row.eventName || \"Ticket order\") + (row.eventDate ? \" \u00B7 \" + row.eventDate : \"\"));\n    const lines = Array.isArray(row.lines) ? row.lines : [];\n    const issuedTickets = Array.isArray(row.issuedTickets) ? row.issuedTickets : [];\n    const admissionTickets = issuedTickets.filter(t => !/add[ -]?on|mystery box|merch/i.test(String(t.ticketName||\"\")));\n    const extras = lines.filter(line => Boolean(line.addOn) || String(line.ticketKind||\"\").toLowerCase()===\"add_on\" || /add[ -]?on|mystery box|merch/i.test(String(line.name||line.ticketName||\"\")));\n    body.innerHTML = \"<div class='orbit-ticket-detail-grid'>\" +\n      \"<div class='orbit-customer-card'><span>Customer</span><strong title='\" + esc(row.customerName || (row.customerEmail ? row.customerEmail.split(\"@\")[0].replace(/[._-]+/g,\" \").replace(/\\b\\w/g,c=>c.toUpperCase()) : \"Unknown Customer\")) + \"'>\" + esc(row.customerName || (row.customerEmail ? row.customerEmail.split(\"@\")[0].replace(/[._-]+/g,\" \").replace(/\\b\\w/g,c=>c.toUpperCase()) : \"Unknown Customer\")) + \"</strong><small title='\" + esc(row.customerEmail || \"\") + \"'>\" + esc(row.customerEmail || \"\u2014\") + \"</small></div>\" +\n      \"<div><span>Shopify order</span><strong>\" + esc(row.shopifyOrderId || \"\u2014\") + \"</strong><small>Checkout \" + esc(row.checkoutId || \"\u2014\") + \"</small></div>\" +\n      \"<div><span>Status</span><strong>\" + esc(checkoutStatusLabel(row)) + \"</strong><small>Created \" + esc(prettyShortDate(row.createdAt || row.updatedAt)) + \"</small>\"+(row.discountCode?\"<span class='orbit-pill orbit-ticket-discount-pill'>Discount \u00B7 \"+esc(row.discountCode)+(Number(row.discountPercentage||0)>0?\" \u00B7 \"+esc(row.discountPercentage)+\"%\":\"\")+\"</span>\":\"\")+\"</div>\" +\n      \"<div><span>Tickets issued</span><strong>\" + esc(row.ticketCount || 0) + \"</strong><small>Last resend \" + esc(prettyShortDate(row.lastResendAt) || \"Never\") + \"</small></div>\" +\n      \"</div><h3>Admission Tickets</h3>\" + (admissionTickets.length ? \"<div class='orbit-mini-list'>\" + admissionTickets.map(function(ticket){ return \"<div><strong>\" + esc(ticket.isCarer ? \"Carer Ticket\" : (ticket.ticketName || \"Admission Ticket\")) + \"</strong><span>\" + esc(ticket.holderName || ticket.email || \"Ticket holder\") + (ticket.isCarer ? \" \u00B7 Issued by Admin\" : \"\") + \"</span></div>\"; }).join(\"\") + \"</div><p class='orbit-muted'>Total admission tickets: \"+esc(admissionTickets.length)+\"</p>\" : \"<p class='orbit-muted'>No admission tickets are currently stored for this order.</p>\") +\n      \"<h3>Extras</h3>\" + (extras.length ? \"<div class='orbit-mini-list'>\" + extras.map(function(line){ return \"<div><strong>\"+esc(line.name||line.ticketName||\"Extra\")+\"</strong><span>Quantity \"+esc(line.quantity||line.count||1)+\"</span></div>\"; }).join(\"\") + \"</div>\" : \"<p class='orbit-muted'>No extras on this order.</p>\") +\n      \"<h3>Audit summary</h3><div class='orbit-mini-list'><div><strong>Fulfilled</strong><span>\" + esc(prettyShortDate(row.fulfilledAt) || \"Not yet\") + \"</span></div><div><strong>Last sync</strong><span>\" + esc(row.lastSyncStatus || row.lastSyncError || \"No sync result\") + \"</span></div><div><strong>Route</strong><span>\" + esc(row.checkoutRoute || row.journeyStep || \"Ticket only\") + \"</span></div></div>\";\n    const actions = $(\"ticketDetailsActions\");\n    if (actions) actions.innerHTML = \"<button type='button' data-resend-public-tickets='\"+esc(row.checkoutId||\"\")+\"' data-ticket-email='\"+esc(row.customerEmail||\"\")+\"'>Resend Tickets</button><button type='button' data-issue-carer-ticket='\"+esc(row.checkoutId||\"\")+\"'>Issue Carer Ticket</button><button type='button' class='secondary' data-ticket-quick-action='recipient' data-checkout-id='\"+esc(row.checkoutId||\"\")+\"'>Change Email</button><button type='button' class='secondary' data-ticket-quick-action='type' data-checkout-id='\"+esc(row.checkoutId||\"\")+\"'>Transfer / Change Ticket</button><button type='button' class='secondary' data-ticket-quick-action='cancel' data-checkout-id='\"+esc(row.checkoutId||\"\")+\"'>Cancel Tickets</button>\";\n    if (dialog && typeof dialog.showModal === \"function\") dialog.showModal();\n  }\n\n  function closeTicketActionDialog(){ const d=$(\"ticketActionDialog\"); if(d?.open)d.close(); }\n  function ticketActionRow(checkoutId){ return (state.ticketCheckouts?.checkouts||[]).find(item=>String(item.checkoutId||\"\")===String(checkoutId||\"\")); }\n  function actionReasonOptions(action){\n    const values=action===\"recipient\"?[\"Wrong email entered\",\"Typo correction\",\"Customer requested change\",\"Email bounced\",\"Test order\",\"Other\"]:action===\"type\"?[\"Customer requested change\",\"Customer illness\",\"Cannot attend\",\"Upgrade\",\"Downgrade\",\"Admin correction\",\"Other\"]:[\"Customer requested cancellation\",\"Duplicate order\",\"Admin correction\",\"Other\"];\n    return \"<label>Reason<select id='ticketActionReason'>\"+values.map(v=>\"<option>\"+esc(v)+\"</option>\").join(\"\")+\"</select></label><label id='ticketActionOtherWrap' hidden>Notes<input id='ticketActionOther' placeholder='Optional note'></label>\";\n  }\n  function openTicketAction(action, checkoutId){\n    const d=$(\"ticketActionDialog\"), title=$(\"ticketActionTitle\"), body=$(\"ticketActionBody\"), row=ticketActionRow(checkoutId); if(!d||!body||!row)return;\n    const labels={recipient:\"Change Email\",type:\"Transfer / Change Ticket\",cancel:\"Cancel Tickets\",carer:\"Issue Carer Ticket\"}; title.textContent=labels[action]||\"Edit Ticket Order\";\n    let fields=\"\";\n    if(action===\"recipient\") fields=\"<div class='orbit-current-value'><span>Current email</span><strong>\"+esc(row.customerEmail||\"\u2014\")+\"</strong></div><label>New email<input id='ticketActionEmail' type='email' required></label>\"+actionReasonOptions(action)+\"<label class='orbit-inline-check'><input id='ticketActionResend' type='checkbox' checked> Resend tickets immediately</label>\";\n    if(action===\"type\"){\n      const tickets=(row.issuedTickets||[]).filter(t=>!t.isCarer && !/add[ -]?on|mystery box|merch/i.test(String(t.ticketName||\"\")));\n      const events=(state.eventbrite?.events||[]).filter(e=>String(e.status||\"\").toLowerCase()!==\"completed\");\n      fields=\"<label>Ticket to change<select id='ticketActionTicketId' required><option value=''>Choose a ticket</option>\"+tickets.map((t,i)=>\"<option value='\"+esc(t.ticketId||\"\")+\"'>\"+esc((t.ticketName||\"Admission Ticket\")+\" #\"+(i+1))+\"</option>\").join(\"\")+\"</select></label>\"+\n        \"<label>Event<select id='ticketActionEvent'><option value='\"+esc(row.eventbriteEventId||\"\")+\"'>Keep current event \u00B7 \"+esc(row.eventName||\"Orbit event\")+\"</option>\"+events.filter(e=>String(e.eventbriteEventId)!==String(row.eventbriteEventId)).map(e=>\"<option value='\"+esc(e.eventbriteEventId||\"\")+\"'>Transfer to \u00B7 \"+esc(e.name||\"Orbit event\")+\"</option>\").join(\"\")+\"</select></label>\"+\n        \"<label>Change to <small>(optional when transferring)</small><select id='ticketActionType'><option value=''>Keep existing ticket type</option></select></label>\"+actionReasonOptions(action)+\"<label>Custom email message <small>(optional)</small><textarea id='ticketActionCustomMessage' rows='4' placeholder='Add a personal note for the customer'></textarea></label><label class='orbit-inline-check'><input id='ticketActionResend' type='checkbox' checked> Email updated ticket immediately</label>\";\n    }\n    if(action===\"carer\") fields=\"<div class='orbit-ticket-carer-confirm'><strong>Send a Carer Ticket to the original purchaser</strong><p>Customer: \"+esc(row.customerName||\"Customer\")+\"<br>Email: \"+esc(row.customerEmail||\"\u2014\")+\"<br>Event: \"+esc(row.eventName||\"Orbit event\")+\"</p></div><label>Custom email message <small>(optional)</small><textarea id='ticketActionCustomMessage' rows='4' placeholder='On arrival, please ask for Mark or Sabina at the entrance if you need any assistance.'></textarea></label>\";\n    if(action===\"cancel\") fields=actionReasonOptions(action);\n    body.innerHTML=\"<form id='ticketActionForm' class='orbit-ticket-action-form'><input type='hidden' id='ticketActionCheckoutId' value='\"+esc(checkoutId)+\"'><input type='hidden' id='ticketActionKind' value='\"+esc(action)+\"'>\"+fields+\"<div class='orbit-action-row'><button id='submitTicketActionButton' type='submit'>\"+(action===\"carer\"?\"Issue & Send Ticket\":action===\"type\"?\"Apply Ticket Change\":\"Save Changes\")+\"</button></div><div id='ticketActionResult' class='orbit-result' hidden></div></form>\";\n    const reason=$(\"ticketActionReason\"); reason?.addEventListener(\"change\",()=>{$(\"ticketActionOtherWrap\").hidden=reason.value!==\"Other\";});\n    const eventSelect=$(\"ticketActionEvent\"); const typeSelect=$(\"ticketActionType\");\n    function populateTypes(){ if(!typeSelect)return; const eventId=eventSelect?.value||row.eventbriteEventId; const ev=(state.eventbrite?.events||[]).find(e=>String(e.eventbriteEventId)===String(eventId)); const classes=(ev?.ticketClasses||[]).filter(tc=>!tc.hidden&&!/mystery box|add[ -]?on|collector box/i.test(String(tc.name||\"\"))); typeSelect.innerHTML=\"<option value=''>Keep existing ticket type</option>\"+classes.map(tc=>\"<option value='\"+esc(tc.name||\"Ticket\")+\"' data-class-id='\"+esc(tc.id||\"\")+\"'>\"+esc(tc.name||\"Ticket\")+\"</option>\").join(\"\"); }\n    eventSelect?.addEventListener(\"change\",populateTypes); populateTypes();\n    body.querySelector(\"form\").addEventListener(\"submit\",submitTicketAction); d.showModal();\n  }\n  async function submitTicketAction(event){\n    event.preventDefault(); const button=$(\"submitTicketActionButton\"), action=$(\"ticketActionKind\").value, checkoutId=$(\"ticketActionCheckoutId\").value;\n    const reasonSelect=$(\"ticketActionReason\"); const reason=action===\"carer\"?\"Carer Ticket issued to original purchaser\":((reasonSelect?.value||\"Admin correction\")+(reasonSelect?.value===\"Other\"&&$(\"ticketActionOther\")?.value.trim()?\": \"+$(\"ticketActionOther\").value.trim():\"\"));\n    setLoading(button,true); const resultBox=$(\"ticketActionResult\");\n    try{\n      let result;\n      if(action===\"carer\"){\n        try{ result=await api(\"/api/admin/ticket-checkouts/\"+encodeURIComponent(checkoutId)+\"/complimentary-ticket\",{method:\"POST\",body:JSON.stringify({reason,customMessage:$(\"ticketActionCustomMessage\")?.value.trim()})}); }\n        catch(err){\n          if(/already been issued/i.test(err.message||\"\")){\n            const ok=window.confirm(\"A Carer Ticket has already been issued for this order. Are you sure you want to issue another?\");\n            if(!ok)throw new Error(\"Additional Carer Ticket cancelled.\");\n            result=await api(\"/api/admin/ticket-checkouts/\"+encodeURIComponent(checkoutId)+\"/complimentary-ticket\",{method:\"POST\",body:JSON.stringify({reason:\"Additional Carer Ticket approved by Admin\",override:true,customMessage:$(\"ticketActionCustomMessage\")?.value.trim()})});\n          }else throw err;\n        }\n      }else{\n        const selectedType=$(\"ticketActionType\")?.selectedOptions?.[0];\n        result=await api(\"/api/admin/ticket-checkouts/\"+encodeURIComponent(checkoutId)+\"/admin-action\",{method:\"POST\",body:JSON.stringify({action,email:$(\"ticketActionEmail\")?.value.trim(),ticketId:$(\"ticketActionTicketId\")?.value,ticketType:$(\"ticketActionType\")?.value,targetEventId:$(\"ticketActionEvent\")?.value,ticketClassId:selectedType?.dataset.classId||null,resend:$(\"ticketActionResend\")?.checked!==false,reason,customMessage:$(\"ticketActionCustomMessage\")?.value.trim()})});\n      }\n      const message=result.message||result.ticket?.message||(action===\"carer\"?\"Carer Ticket issued successfully.\":\"Ticket order updated successfully.\");\n      if(resultBox){resultBox.hidden=false;resultBox.classList.remove(\"error\");resultBox.textContent=message;} setNotice(message); await loadShopify();\n      setTimeout(()=>{closeTicketActionDialog(); const parent=$(\"ticketDetailsDialog\"); if(parent?.open){ openTicketDetails(checkoutId); }},500);\n    }catch(err){ if(resultBox){resultBox.hidden=false;resultBox.classList.add(\"error\");resultBox.textContent=err.message||\"Action failed.\";} setNotice(err.message||\"Action failed.\",true); }\n    finally{setLoading(button,false)}\n  }\n  function renderQueueSummary(summary) {\n    const rows = [\n      [\"Total\", summary.total || 0],\n      [\"Ready for label\", summary.readyForLabel || 0],\n      [\"Needs delivery\", summary.needsDeliveryDetails || 0],\n      [\"Labels generated\", summary.labelGenerated || 0],\n      [\"Packed\", summary.packed || 0],\n      [\"Shipped\", summary.shipped || 0],\n      [\"Fulfilled\", summary.fulfilled || 0]\n    ];\n\n    const target = $(\"queueSummary\");\n    if (!target) return;\n    target.innerHTML = rows.map(([label, value]) =>\n      \"<div><span>\" + esc(label) + \"</span><strong>\" + esc(value) + \"</strong></div>\"\n    ).join(\"\");\n  }\n\n  function table(headers, rows, empty) {\n    if (!rows.length) return \"<p class='orbit-muted'>\" + esc(empty || \"No records yet.\") + \"</p>\";\n    return \"<table><thead><tr>\" + headers.map(h => \"<th>\" + esc(h) + \"</th>\").join(\"\") + \"</tr></thead><tbody>\" + rows.join(\"\") + \"</tbody></table>\";\n  }\n\n\n  function compactVenue(event) {\n    return event.venueName || (event.venue && event.venue.name) || \"Venue pending\";\n  }\n\n  function eventStartValue(event) {\n    return event.start && (event.start.local || event.start.utc) || null;\n  }\n\n  function formatEventShortDate(value) {\n    if (!value) return \"Date TBC\";\n    const date = new Date(value);\n    if (Number.isNaN(date.getTime())) return value;\n    return date.toLocaleDateString(\"en-GB\", { day: \"numeric\", month: \"short\", year: \"numeric\" });\n  }\n\n  function eventStatusClass(event) {\n    const status = String(event.status || \"\").toLowerCase();\n    if (status === \"live\" || status === \"started\") return \"live\";\n    if (status === \"draft\") return \"draft\";\n    return \"other\";\n  }\n\n  /* V191: one canonical presenter for public event sales labels. Keep this\n   * beside the renderer that consumes it so a future edit cannot reference an\n   * undeclared helper. */\n  function publicSalesPresentation(value) {\n    const label = String(value || \"On Sale\").trim() || \"On Sale\";\n    const key = label.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-+|-+$/g, \"\") || \"on-sale\";\n    const icons = {\n      \"on-sale\": \"\u2705\",\n      \"selling-fast\": \"\uD83D\uDD25\",\n      \"running-low\": \"\u26A0\uFE0F\",\n      \"nearly-sold-out\": \"\u23F3\",\n      \"sold-out\": \"\u274C\"\n    };\n    return { label, key, icon: icons[key] || \"\uD83C\uDFF7\uFE0F\" };\n  }\n\n  function eventHasPassed(event) {\n    const raw = event.end?.utc || event.end?.local || event.endAt || event.end_at || eventStartValue(event);\n    const time = raw ? new Date(raw).getTime() : NaN;\n    return Number.isFinite(time) && time < Date.now();\n  }\n\n  function renderEventbriteCentre(data) {\n    const status=data.status||{}, allEvents=(Array.isArray(data.events)?data.events:[]).filter(e=>String(e.status||'').toLowerCase()!=='draft'), events=allEvents.filter(e=>!e.archived&&!eventHasPassed(e));\n    const target=$(\"eventbriteEventsTable\"), statusTarget=$(\"eventbriteStatus\"), connected=Boolean(status.connected);\n    const connectButton=$(\"connectEventbriteButton\"); if(connectButton){connectButton.hidden=connected;connectButton.disabled=connected;}\n    if(statusTarget) statusTarget.innerHTML=\"<div class='orbit-communications-status-card \"+(connected?'configured':'warning')+\"'><span>Eventbrite</span><strong>\"+(connected?'Connected':'Needs connection')+\"</strong><small>\"+(connected?'Events and ticket data available':'Connect in System')+\"</small></div><div class='orbit-communications-status-card'><span>Upcoming events</span><strong>\"+events.length+\"</strong><small>Drafts and completed shows excluded</small></div><div class='orbit-communications-status-card'><span>Last event sync</span><strong>\"+esc(prettyDate(status.lastSyncAt))+\"</strong><small>\"+esc(status.lastSyncCount||0)+\" checked</small></div>\";\n    if(!target)return;\n    const upcomingMarkup=events.length?\"<div class='orbit-events-ops-grid'>\"+events.map(function(event){\n      const sold=Number(event.eventbriteSold??event.ticketsSold??0), orbitSold=Number(event.orbitSold||0), claims=Number(event.memberClaimCount||0), doorAdmissions=Number(event.doorAdmissions||0), carers=Number(event.carerAdmissions||0), expected=sold+orbitSold+claims+doorAdmissions+carers, synced=Number(event.preparedAdmissions??event.totalSynced??event.scannerSynced??event.eventbriteAttendeeCount??expected), unsynced=Math.max(0,expected-synced), cap=Number(event.capacity||event.ticketCapacity||0), pct=cap?Math.min(100,Math.round(sold/cap*100)):0;\n      const image=event.logoUrl?\"<img src='\"+esc(event.logoUrl)+\"' alt='' loading='lazy'>\":\"<div class='orbit-event-placeholder'>Orbit Card Show</div>\";\n      const visibleTag=event.publicTagEnabled&&event.publicTag?event.publicTag:'On Sale'; const salesPresentation=publicSalesPresentation(visibleTag); const tag=\"<span class='orbit-public-sales-tag status-\"+esc(salesPresentation.key)+\"' data-event-tag-preview='\"+esc(event.eventbriteEventId)+\"'><i aria-hidden='true'>\"+esc(salesPresentation.icon)+\"</i>\"+esc(salesPresentation.label)+\"</span>\";\n      return \"<article class='orbit-event-ops-card'><div class='orbit-event-ops-art'>\"+image+tag+\"</div><div class='orbit-event-ops-body'><div class='orbit-event-ops-heading'><div><h3>\"+esc(event.name||'Orbit event')+\"</h3><p>\"+esc(formatEventShortDate(eventStartValue(event)))+\" \u00B7 \"+esc(compactVenue(event))+\"</p></div><span class='orbit-event-status-pill \"+eventStatusClass(event)+\"'>\"+esc(event.statusLabel||event.status||'Scheduled')+\"</span></div><div class='orbit-event-ops-metrics'><div><span>Eventbrite sold</span><strong>\"+sold+\"</strong></div><div><span>Orbit sold</span><strong>\"+orbitSold+\"</strong></div><div><span>Member claims</span><strong>\"+claims+\"</strong></div><div><span>Door admissions</span><strong>\"+doorAdmissions+\"</strong></div><div><span>Add-ons sold</span><strong>\"+Number(event.addOnsExcluded||event.addOnsSold||0)+\"</strong></div><div><span>Total admissions</span><strong>\"+(synced+unsynced)+\"</strong></div><div class='\"+(unsynced?'warning':'good')+\"'><span>Scanner loaded</span><strong>\"+synced+\" / \"+(synced+unsynced)+\"</strong></div></div>\"+(cap?\"<div class='orbit-event-progress'><span style='width:\"+pct+\"%'></span></div><small>\"+sold+\" of \"+cap+\" sold \u00B7 \"+Math.max(0,cap-sold)+\" remaining</small>\":\"\")+\"<div class='orbit-event-sync-line'><div><span class='orbit-scanner-state-dot \"+(unsynced?'warning':'ready')+\"'></span><strong>\"+(unsynced?'Sync required':'Scanner ready')+\"</strong><small>\"+synced+\" of \"+(synced+unsynced)+\" admissions loaded</small></div><span>Last sync \"+esc(prettyShortDate(event.lastSyncedAt))+\"</span></div><div class='orbit-event-card-actions'>\"+\"<button type='button' class='orbit-prepare-event-button' data-prepare-event='\"+esc(event.eventbriteEventId)+\"'>Prepare This Event</button>\"+\"<label class='orbit-event-tag-editor'><span>Public Sales Status</span><select data-event-tag-select='\"+esc(event.eventbriteEventId)+\"'><option value=''>On Sale</option>\"+[\"Selling Fast\",\"Running Low\",\"Nearly Sold Out\",\"Sold Out\"].map(x=>\"<option \"+(event.publicTag===x?'selected':'')+\">\"+x+\"</option>\").join('')+\"</select><small data-event-tag-state='\"+esc(event.eventbriteEventId)+\"'>\"+(event.publicTagEnabled&&event.publicTag?\"Published: \"+esc(event.publicTag):\"Published: On Sale\")+\"</small></label></div></div></article>\";\n    }).join('')+\"</div>\":\"<div class='orbit-empty-state'><strong>No upcoming events</strong><span>Future live events will appear here automatically after Eventbrite sync.</span></div>\";\n    target.innerHTML=upcomingMarkup;\n  }\n\n\n  [\"eventClashDateV485\",\"eventClashEndDateV618\",\"eventClashTownV485\",\"eventClashPostcodeV485\",\"eventClashRadiusV485\"].forEach(id=>$(id)?.addEventListener(\"input\",()=>{invalidateEventCheckV618();const result=$(\"eventClashResultV485\");if(result)result.textContent=\"Details changed. Check our Directory again before booking.\";}));\n  $(\"eventPlanBeginV618\")?.addEventListener(\"click\",()=>{try{beginEventBookingV618();}catch(error){setNotice(error.message,true);}});\n  function eventPlanningIsoDateV485(value){\n    if(!value)return \"\";\n    const raw=String(value);\n    if(/^\\d{4}-\\d{2}-\\d{2}/.test(raw))return raw.slice(0,10);\n    const d=new Date(value);return Number.isNaN(d.getTime())?\"\":d.toISOString().slice(0,10);\n  }\n  function eventPlanningOrbitRowsV485(){\n    return (state.eventbrite?.events||[]).filter(event=>String(event.status||\"\").toLowerCase()!==\"draft\").map(event=>({\n      id:\"orbit:\"+(event.eventbriteEventId||event.id||[event.name,eventPlanningIsoDateV485(eventStartValue(event))].join(\"|\")),\n      title:event.name||\"Orbit Card Show\",\n      date:eventPlanningIsoDateV485(eventStartValue(event)),\n      endDate:eventPlanningIsoDateV485(event.end?.local||event.end?.utc||event.endAt||event.end_at||eventStartValue(event)),\n      location:compactVenue(event)||\"\",\n      type:\"orbit\",source:\"Eventbrite\",orbit:true\n    })).filter(row=>row.date);\n  }\n  function eventPlanningCalendarKeyV71613(row){\n    const norm=value=>String(value||\"\").normalize(\"NFKC\").toLowerCase().replace(/[^a-z0-9]+/g,\" \").trim();\n    return [String(row?.date||\"\").slice(0,10),norm(row?.title),norm(row?.postcode||row?.venue||row?.location)].join(\"|\");\n  }\n  function eventPlanningAllRowsV485(){\n    // Deduplicate only exact same-day/show/location identity across overlapping\n    // Eventbrite, Directory and saved planning inputs. No source records deleted.\n    const seen=new Set(),rows=[];\n    const append=(row,orbit)=>{\n      if(!row?.date)return;\n      const key=eventPlanningCalendarKeyV71613(row);\n      if(seen.has(key))return;\n      seen.add(key);rows.push({...row,orbit});\n    };\n    eventPlanningOrbitRowsV485().forEach(row=>append(row,true));\n    (state.eventPlanningDirectoryV618||[]).forEach(row=>append(row,false));\n    (state.eventPlanningEntriesV485||[]).forEach(row=>append(row,false));\n    return rows;\n  }\n  function eventPlanningMonthKeyV485(date){return date.getFullYear()+\"-\"+String(date.getMonth()+1).padStart(2,\"0\");}\n  function eventPlanningDisplayDateV485(value){\n    if(!value)return \"Date TBC\";const d=new Date(value+\"T12:00:00\");if(Number.isNaN(d.getTime()))return value;\n    return d.toLocaleDateString(\"en-GB\",{weekday:\"short\",day:\"numeric\",month:\"short\",year:\"numeric\"});\n  }\n  function eventPlanningCalendarEndDateV704(row){\n    const start=String(row?.date||\"\").slice(0,10),rawEnd=String(row?.endDate||start).slice(0,10);\n    if(!start||![\"directory\",\"orbit\"].includes(row?.type))return rawEnd||start;\n    const span=(Date.parse(rawEnd)-Date.parse(start))/86400000;\n    // Ticket-sale window dates can be weeks long; these are not show dates.\n    // Preserve genuine Fri-Sun multi-day events, never repeat a show for weeks.\n    return Number.isFinite(span)&&span>=0&&span<=2?rawEnd:start;\n  }\n  function eventPlanningRowsOnDateV485(date,rows=eventPlanningAllRowsV485()){\n    return rows.filter(row=>{\n      const start=row.date,end=eventPlanningCalendarEndDateV704(row)||row.date;\n      return start&&date>=start&&date<=end;\n    });\n  }\n  function renderEventPlanningSavedV485(){\n    const target=$(\"eventPlanSavedListV485\");if(!target)return;\n    const rows=[...(state.eventPlanningEntriesV485||[])].sort((a,b)=>String(a.date||\"\").localeCompare(String(b.date||\"\")));\n    target.innerHTML=rows.length?rows.map(row=>\"<div class='orbit-event-plan-saved-row-v485'><div><strong>\"+esc(row.title||\"Planning event\")+\"</strong><small>\"+esc(eventPlanningDisplayDateV485(row.date))+(row.endDate&&row.endDate!==row.date?\" \u2192 \"+esc(eventPlanningDisplayDateV485(row.endDate)):\"\")+\" \u00B7 \"+esc(row.location||\"No location\")+(row.postcode?\" \u00B7 \"+esc(row.postcode):\"\")+\" \u00B7 \"+esc(row.type===\"show_booking\"?\"Show booking\":row.type===\"competitor\"?\"Other card show\":row.type===\"venue_hold\"?\"Venue hold\":\"Planning\")+\"</small>\"+(row.organiser?\"<small>Organiser: \"+esc(row.organiser)+\"</small>\":\"\")+(row.notes?\"<p class='orbit-calendar-notes-v618'>\"+esc(row.notes)+\"</p>\":\"\")+\"</div><div class='orbit-action-row compact'>\"+(row.sourceUrl?\"<a class='orbit-admin-link-button secondary' href='\"+esc(safeLinkV618(row.sourceUrl))+\"' target='_blank' rel='noopener noreferrer'>Source \u2197</a>\":\"\")+\"<button type='button' class='secondary' data-event-plan-archive-v485='\"+esc(row.id)+\"'>Remove</button></div></div>\").join(\"\"):\"<div class='orbit-empty-state'><strong>No saved planning dates</strong><span>Check a date above, then confirm and save your proposed booking.</span></div>\";\n  }\n  function renderEventCalendarV485(){\n    const target=$(\"eventCalendarGridV485\");if(!target)return;\n    if(!document.getElementById(\"orbit-calendar-colour-v71613\")){\n      const style=document.createElement(\"style\");style.id=\"orbit-calendar-colour-v71613\";\n      style.textContent=\"#eventCalendarGridV485 .orbit-event-calendar-chip-v485.orbit{background:#155d36!important;color:#fff!important;border:1px solid #249457!important;font-weight:700}\";\n      document.head.appendChild(style);\n    }\n    const month=state.eventPlanningMonthV485 instanceof Date?state.eventPlanningMonthV485:new Date();\n    const first=new Date(month.getFullYear(),month.getMonth(),1),start=new Date(first);\n    const mondayOffset=(first.getDay()+6)%7;start.setDate(first.getDate()-mondayOffset);\n    text(\"eventCalendarMonthV485\",first.toLocaleDateString(\"en-GB\",{month:\"long\",year:\"numeric\"}));\n    const monthPicker=$(\"eventCalendarMonthPickerV487\");if(monthPicker)monthPicker.value=first.getFullYear()+\"-\"+String(first.getMonth()+1).padStart(2,\"0\");\n    const rows=eventPlanningAllRowsV485(),monthKey=eventPlanningMonthKeyV485(first),monthRows=rows.filter(row=>String(row.date||\"\").slice(0,7)===monthKey||String(eventPlanningCalendarEndDateV704(row)||\"\").slice(0,7)===monthKey);\n    text(\"eventCalendarSummaryV485\",monthRows.filter(x=>x.orbit).length+\" Orbit show\"+(monthRows.filter(x=>x.orbit).length===1?\"\":\"s\")+\" \u00B7 \"+monthRows.filter(x=>!x.orbit).length+\" Directory / saved planning date\"+(monthRows.filter(x=>!x.orbit).length===1?\"\":\"s\"));\n    const weekdays=[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"].map(day=>\"<div class='orbit-event-calendar-weekday-v485'>\"+day+\"</div>\").join(\"\");\n    const today=new Date().toISOString().slice(0,10),cells=[];\n    for(let i=0;i<42;i++){\n      const d=new Date(start);d.setDate(start.getDate()+i);\n      const iso=d.getFullYear()+\"-\"+String(d.getMonth()+1).padStart(2,\"0\")+\"-\"+String(d.getDate()).padStart(2,\"0\");\n      const events=eventPlanningRowsOnDateV485(iso,rows);\n      cells.push(\"<button type='button' class='orbit-event-calendar-day-v485 \"+(d.getMonth()===first.getMonth()?\"\":\"outside\")+\" \"+(iso===today?\"today\":\"\")+\"' data-event-calendar-date-v485='\"+iso+\"'><span class='orbit-event-calendar-day-number-v485'>\"+d.getDate()+\"</span>\"+events.slice(0,5).map(row=>\"<span class='orbit-event-calendar-chip-v485 \"+esc(row.orbit?\"orbit\":row.type||\"planning\")+\"' title='\"+esc(row.title||\"\")+\"'>\"+esc(row.title||\"Event\")+\"</span>\").join(\"\")+(events.length>5?\"<small>+\"+(events.length-5)+\" more</small>\":\"\")+\"</button>\");\n    }\n    target.innerHTML=weekdays+cells.join(\"\");\n    if(state.eventPlanningSelectedDateV618)renderEventCalendarDayV618(state.eventPlanningSelectedDateV618);\n    renderEventPlanningSavedV485();\n  }\n  function renderEventCalendarDayV618(date){\n    const grid=$(\"eventCalendarGridV485\");if(!grid)return;\n    let target=$(\"eventCalendarDayDetailsV618\");if(!target){target=document.createElement(\"section\");target.id=\"eventCalendarDayDetailsV618\";target.className=\"orbit-calendar-day-details-v618\";target.setAttribute(\"aria-live\",\"polite\");grid.insertAdjacentElement(\"afterend\",target);}\n    state.eventPlanningSelectedDateV618=date;\n    const rows=eventPlanningRowsOnDateV485(date);\n    target.innerHTML=\"<h4>\"+esc(eventPlanningDisplayDateV485(date))+\"</h4>\"+(rows.length?rows.map(row=>\"<div><strong>\"+esc(row.title||\"Event\")+\"</strong><p>\"+esc(row.location||row.venue||\"Location not stated\")+\" \u00B7 \"+esc(row.orbit?\"Orbit show\":row.source||\"Saved booking\")+(row.type===\"directory\"?(row.verified?\" \u00B7 Approved\":\" \u00B7 Not yet approved\"):\"\")+\"</p>\"+(row.sourceUrl?\"<a href='\"+esc(safeLinkV618(row.sourceUrl))+\"' target='_blank' rel='noopener noreferrer'>View source \u2197</a>\":\"\")+\"</div>\").join(\"\"):\"<p>No shows recorded on this date. Use Check our Directory before booking.</p>\");\n  }\n  let eventPlanningReadV618=0,eventClashReadV618=0,eventClashCheckedV618=null;\n  function eventClashInputV618(){return {date:$(\"eventClashDateV485\")?.value||\"\",endDate:$(\"eventClashEndDateV618\")?.value||$(\"eventClashDateV485\")?.value||\"\",location:String($(\"eventClashTownV485\")?.value||\"\").trim(),postcode:String($(\"eventClashPostcodeV485\")?.value||\"\").trim().toUpperCase().replace(/\\s+/g,\"\"),radiusKm:Number($(\"eventClashRadiusV485\")?.value||50)};}\n  function invalidateEventCheckV618(){eventClashReadV618++;eventClashCheckedV618=null;if($(\"eventPlanBeginV618\"))$(\"eventPlanBeginV618\").hidden=true;if($(\"eventPlanBookingV618\"))$(\"eventPlanBookingV618\").hidden=true;}\n  async function loadEventPlanningV485(button=null){\n    const read=++eventPlanningReadV618,month=eventPlanningMonthKeyV485(state.eventPlanningMonthV485 instanceof Date?state.eventPlanningMonthV485:new Date());\n    if(button)setLoading(button,true);\n    try{\n      const entriesResult=await api(\"/api/admin/event-planning/entries?month=\"+encodeURIComponent(month),{cacheMs:0,timeoutMs:15000});\n      if(read!==eventPlanningReadV618)return;\n      if(entriesResult?.success===false)throw new Error(\"The Calendar could not load.\");\n      state.eventPlanningEntriesV485=entriesResult.entries||[];state.eventPlanningDirectoryV618=entriesResult.directoryEvents||[];state.eventPlanningLoadedV485=true;\n      renderEventCalendarV485();\n      if(entriesResult.directoryComplete===false)text(\"eventCalendarSummaryV485\",\"This month has more Directory records than can be shown. Narrow your date check before booking.\");\n      if(!state.eventbrite)loadEventbrite().then(()=>{if(read===eventPlanningReadV618)renderEventCalendarV485();}).catch(()=>{if(read===eventPlanningReadV618)text(\"eventCalendarSummaryV485\",\"Directory and saved bookings loaded. Live Orbit event details are temporarily unavailable.\");});\n      return entriesResult;\n    }catch(error){if(read===eventPlanningReadV618)text(\"eventCalendarSummaryV485\",\"Calendar could not load. Select the month again to retry.\");throw error;}finally{if(button)setLoading(button,false);}\n  }\n  function beginEventBookingV618(){\n    const check=eventClashCheckedV618;if(!check||JSON.stringify(eventClashInputV618())!==check.fingerprint)throw new Error(\"Check this date and location again before booking.\");\n    const form=$(\"eventPlanBookingV618\");if(!form)return;\n    for(const [id,value] of Object.entries({eventPlanDateV485:check.data.target.date,eventPlanEndDateV485:check.data.target.endDate,eventPlanLocationV485:check.data.target.location,eventPlanPostcodeV485:check.data.target.postcode}))if($(id))$(id).value=value;\n    if($(\"eventPlanConflictLabelV618\"))$(\"eventPlanConflictLabelV618\").hidden=!(check.data.clashes||[]).length;\n    if($(\"eventPlanConflictsV618\"))$(\"eventPlanConflictsV618\").checked=false;\n    form.hidden=false;$(\"eventPlanTitleV485\")?.focus();\n  }\n  async function saveEventPlanningEntryV485(button){\n    const check=eventClashCheckedV618;\n    if(!check||JSON.stringify(eventClashInputV618())!==check.fingerprint)throw new Error(\"Check the current dates and location before saving.\");\n    const payload={...check.data.target,title:String($(\"eventPlanTitleV485\")?.value||\"\").trim(),type:\"show_booking\",checkId:check.data.checkId,conflictsAcknowledged:$(\"eventPlanConflictsV618\")?.checked===true,organiser:String($(\"eventPlanOrganiserV485\")?.value||\"\").trim(),sourceUrl:String($(\"eventPlanUrlV485\")?.value||\"\").trim(),notes:String($(\"eventPlanNotesV485\")?.value||\"\").trim()};\n    if(!payload.title)throw new Error(\"Add the show name.\");\n    if((check.data.clashes||[]).length&&!payload.conflictsAcknowledged)throw new Error(\"Confirm that you have reviewed the listed shows.\");\n    setLoading(button,true);\n    try{\n      const result=await api(\"/api/admin/event-planning/entries\",{method:\"POST\",body:JSON.stringify(payload),cacheMs:0});\n      if(!result.entry?.id)throw new Error(\"Orbit did not return the saved booking.\");\n      state.eventPlanningMonthV485=new Date(result.entry.date+\"T12:00:00\");\n      // Keep the idempotency key until the read-back succeeds; retrying after a\n      // response/network failure returns this same booking instead of a duplicate.\n      await loadEventPlanningV485();\n      if(!(state.eventPlanningEntriesV485||[]).some(row=>row.id===result.entry.id))throw new Error(\"Booking saved, but Calendar read-back is unavailable. Retry to check the same booking.\");\n      invalidateEventCheckV618();if($(\"eventPlanTitleV485\"))$(\"eventPlanTitleV485\").value=\"\";\n      setNotice(\"Saved to Calendar: \"+result.entry.title+\". No public event or tickets were created.\");\n    }finally{setLoading(button,false);}\n  }\n  async function archiveEventPlanningEntryV485(id,button){\n    setLoading(button,true);\n    try{\n      await api(\"/api/admin/event-planning/entries/\"+encodeURIComponent(id)+\"/archive\",{method:\"POST\",body:\"{}\",cacheMs:0});\n      await loadEventPlanningV485();setNotice(\"Planning date removed from Calendar.\");\n    }finally{setLoading(button,false);}\n  }\n  function renderEventClashResultsV485(data){\n    const target=$(\"eventClashResultV485\");if(!target)return;const rows=data.clashes||[];\n    const warning=data.complete===false?\"Results are incomplete. Narrow the date range and check again.\":data.geoWarning||\"\";\n    target.innerHTML=\"<div class='orbit-notice \"+(rows.length||warning?\"warning\":\"success\")+\"'><strong>\"+rows.length+\" show / booking\"+(rows.length===1?\"\":\"s\")+\" on these dates \u00B7 \"+Number(data.nearbyCount||0)+\" within \"+Number(data.target?.radiusKm||50)+\" km</strong><p>Checked our CardShowIndex records and saved Orbit bookings. This is not a guarantee that no other show exists.</p>\"+(warning?\"<p>\"+esc(warning)+\"</p>\":\"\")+\"</div>\"+rows.map(row=>\"<div class='orbit-event-clash-row-v485 \"+(row.nearby?\"is-clash\":\"\")+\"'><div><strong>\"+esc(row.title||\"Card show\")+\"</strong><small>\"+esc(eventPlanningDisplayDateV485(row.date))+(row.endDate!==row.date?\" to \"+esc(eventPlanningDisplayDateV485(row.endDate)):\"\")+\" \u00B7 \"+esc(row.venue||row.location||\"Location not stated\")+\" \u00B7 \"+(row.distanceKm==null?\"distance unavailable\":Number(row.distanceKm).toFixed(1)+\" km away\")+\"</small><small>\"+esc(row.source||\"CardShowIndex\")+\" \u00B7 \"+esc(row.verified?\"Approved / saved\":(\"Not yet approved: \"+(row.status||\"needs checking\")))+\"</small></div>\"+(row.sourceUrl?\"<a class='orbit-admin-link-button secondary' href='\"+esc(safeLinkV618(row.sourceUrl))+\"' target='_blank' rel='noopener noreferrer'>Source \u2197</a>\":\"\")+\"</div>\").join(\"\");\n  }\n  function safeLinkV618(value){try{const url=new URL(value,location.href);return [\"http:\",\"https:\"].includes(url.protocol)?url.href:\"#\";}catch(_){return \"#\";}}\n  async function checkEventClashesV485(button){\n    const payload=eventClashInputV618();if(!payload.date||!payload.location||!payload.postcode)throw new Error(\"Enter the proposed date, town or venue, and postcode.\");\n    invalidateEventCheckV618();const read=eventClashReadV618,fingerprint=JSON.stringify(payload);setLoading(button,true);\n    const result=$(\"eventClashResultV485\");if(result)result.innerHTML=\"<p role='status'>Checking our Directory and saved bookings\u2026</p>\";\n    try{\n      const data=await api(\"/api/admin/event-planning/clash-check\",{method:\"POST\",body:JSON.stringify(payload),cacheMs:0,timeoutMs:25000});\n      if(read!==eventClashReadV618||JSON.stringify(eventClashInputV618())!==fingerprint)return;\n      if(data.success===false||!data.checkId)throw new Error(\"The date check did not finish. Please retry.\");\n      renderEventClashResultsV485(data);if(data.complete!==false){eventClashCheckedV618={data,fingerprint};if($(\"eventPlanBeginV618\"))$(\"eventPlanBeginV618\").hidden=false;}\n      return data;\n    }catch(error){if(read===eventClashReadV618&&result)result.innerHTML=\"<p role='alert'>Could not check these dates: \"+esc(error.message||error)+\". Use Check our Directory to retry.</p>\";throw error;}finally{setLoading(button,false);}\n  }\n\n  function renderCommunicationsCentre(data) {\n    const statusTarget = $(\"communicationsStatus\");\n    const templatesTarget = $(\"communicationsTemplates\");\n    if (!statusTarget || !templatesTarget) return;\n\n    const status = data.status || {};\n    const safety = data.safety || {};\n    const configured = Boolean(status.configured);\n    // V643 NOTE-695DB7E67F: keep Email Templates focused on the templates\n    // themselves. Provider diagnostics live in Settings/Diagnostics, so the\n    // old blue information/status cards were duplicate visual noise here.\n    statusTarget.innerHTML = \"\";\n    statusTarget.hidden = true;\n\n    const banner=$(\"communicationsTemplateSafetyBanner\");\n    if(banner)banner.innerHTML=\"<strong>Protected Customer Communications \u00B7 approved designs live</strong><span>The eight designs approved in Review are now connected through code-authoritative production renderers. Preview Current shows the live renderer. Approved Design shows the same approved production design with representative data. Latest Historical Send preserves what was actually sent at that time. Editable template storage, direct publishing and template test-send remain disabled.</span>\";\n\n    const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());\n    const heading=$(\"communicationsTemplatesHeadingV643\"),intro=$(\"communicationsTemplatesIntroV643\"),vendorSection=$(\"vendorClubEmailTemplatesSectionV643\");\n    if(heading)heading.textContent=workspace==='card-shows'?'Card Shows Email Templates':'Members Club Email Templates';\n    if(intro)intro.textContent=workspace==='card-shows'?'Ticketing, vendor-event and Vendor Club emails using Orbit Card Show branding.':'Membership, billing, fulfilment, rewards and member-support emails using Orbit Collectors Club branding.';\n    if(vendorSection)vendorSection.hidden=workspace!=='card-shows';\n    const templates = (Array.isArray(data.templates) ? data.templates : []).filter(t=>{const category=String(t.category||'Other');const cardShow=['Tickets','Vendor \u00B7 Protected'].includes(category);return workspace==='card-shows'?cardShow:workspace==='members-club'?!cardShow:true;});\n    const groups=[];\n    templates.forEach(t=>{const category=t.category||\"Other\";let g=groups.find(x=>x.category===category);if(!g){g={category,items:[]};groups.push(g);}g.items.push(t);});\n    templatesTarget.innerHTML = groups.map(group=>{\n      const cards=group.items.map(t=>{\n        const live=/^live/.test(String(t.status||\"\"));\n        const planned=String(t.status||\"\")===\"planned\";\n        const internal=String(t.status||\"\")===\"internal\";\n        const latest=t.latestAvailable?\"<span class='orbit-comms-source-badge success'>Exact live send captured</span>\":(live?\"<span class='orbit-comms-source-badge'>Production renderer available</span>\":(internal?\"<span class='orbit-comms-source-badge'>Internal sender available</span>\":\"<span class='orbit-comms-source-badge muted'>No live sender</span>\"));\n        const currentAction=planned?\"\":(\"<button type='button' class='secondary' data-template-preview='\"+esc(t.key)+\"' data-template-preview-mode='current'>Preview current email</button>\");\n        const proposedAction=t.designCandidateAvailable?\"<button type='button' class='secondary orbit-comms-candidate-button' data-template-preview='\"+esc(t.key)+\"' data-template-preview-mode='candidate'>Preview approved live design</button>\":\"\";\n        const historicalAction=t.latestAvailable?\"<button type='button' class='secondary' data-template-preview='\"+esc(t.key)+\"' data-template-preview-mode='latest'>Latest historical send</button>\":\"\";\n        const action=currentAction+proposedAction+historicalAction+(planned&&!t.designCandidateAvailable?\"<button type='button' class='secondary' disabled>No live sender yet</button>\":\"\");\n        return \"<article class='orbit-template-card orbit-template-editor orbit-comms-template-v504'>\"+\n          \"<div class='orbit-comms-template-topline'><span>\"+esc(t.status||\"live\")+\"</span>\"+latest+\"</div>\"+\n          \"<strong>\"+esc(t.name||t.key)+\"</strong>\"+\n          \"<p>\"+esc(t.description||\"\")+\"</p>\"+\n          \"<small class='orbit-muted'><b>Category:</b> \"+esc(t.category||\"Other\")+\"</small>\"+\n          \"<small class='orbit-muted'><b>Production source:</b> \"+esc(t.productionSource||\"No sender exists yet\")+\"</small>\"+\n          (t.from?\"<small class='orbit-muted'><b>From:</b> \"+esc(t.from)+\"</small>\":\"\")+\n          (t.latestSubject?\"<small class='orbit-muted'><b>Last historical subject:</b> \"+esc(t.latestSubject)+\"</small>\":\"\")+\n          (t.designCandidateAvailable?\"<small class='orbit-comms-candidate-note'><b>Approved design:</b> Live in production</small>\":\"\")+\n          (t.attachment?\"<small class='orbit-muted'><b>Attachments:</b> \"+esc(t.attachment)+\"</small>\":\"\")+\n          \"<div class='orbit-action-row'>\"+action+\"</div>\"+\n        \"</article>\";\n      }).join(\"\");\n      return \"<section class='orbit-comms-category-v504'><div class='orbit-comms-category-heading-v504'><h3>\"+esc(group.category)+\"</h3><span>\"+group.items.length+\" email\"+(group.items.length===1?\"\":\"s\")+\"</span></div><div class='orbit-template-grid'>\"+cards+\"</div></section>\";\n    }).join(\"\") || \"<p class='orbit-muted'>No production email senders were discovered.</p>\";\n  }\n\n  function renderTemplateEditor(template) {\n    const target = $(\"communicationsTemplateEditor\");\n    if (!target) return;\n    if (!template) { target.style.display = \"none\"; target.innerHTML = \"\"; return; }\n    target.style.display = \"block\";\n    const editDialog = $(\"communicationsEditDialog\");\n    if (editDialog && typeof editDialog.showModal === \"function\" && !editDialog.open) editDialog.showModal();\n    state.selectedTemplateKey = template.key;\n    target.innerHTML =\n      \"<p class='orbit-kicker'>Editing Template</p><h2>\" + esc(template.name || template.key) + \"</h2>\" +\n      \"<p class='orbit-muted'>Variables: \" + esc((template.variables || []).join(\", \")) + \"</p>\" +\n      \"<div class='orbit-form-grid'>\" +\n        \"<label>Name<input id='templateNameInput' value='\" + esc(template.name || \"\") + \"'></label>\" +\n        \"<label>Status<select id='templateStatusInput'><option value='live'\" + (template.status === \"live\" ? \" selected\" : \"\") + \">live</option><option value='planned'\" + (template.status === \"planned\" ? \" selected\" : \"\") + \">planned</option><option value='disabled'\" + (template.status === \"disabled\" ? \" selected\" : \"\") + \">disabled</option></select></label>\" +\n      \"</div>\" +\n      \"<label>Trigger / conditions<textarea id='templateTriggerInput'>\" + esc(template.trigger || template.description || \"\") + \"</textarea></label>\" +\n      \"<label>Subject<textarea id='templateSubjectInput'>\" + esc(template.subject || \"\") + \"</textarea></label>\" +\n      \"<label>HTML<textarea id='templateHtmlInput' class='orbit-code-box' style='min-height:220px;'>\" + esc(template.html || \"\") + \"</textarea></label>\" +\n      \"<label>Plain text<textarea id='templateTextInput'>\" + esc(template.text || \"\") + \"</textarea></label>\" +\n      \"<div class='orbit-form-grid'><label>Test recipient<input id='templateTestToInput' placeholder='you@example.com'></label><label>Preview member name<input id='templatePreviewNameInput' value='Orbit Test Member'></label></div>\" +\n      \"<div class='orbit-action-row'><button type='button' id='saveTemplateButton'>Save Template</button><button type='button' id='previewTemplateButton' class='secondary'>Preview</button><button type='button' id='testSendTemplateButton' class='secondary'>Send Test</button><button type='button' id='resetTemplateButton' class='danger'>Reset Default</button></div>\" +\n      \"<div id='templatePreviewResult' class='orbit-action-result'>Template preview will appear here.</div>\";\n  }\n\n  function templatePayload() {\n    return {\n      name: $(\"templateNameInput\")?.value || \"\",\n      status: $(\"templateStatusInput\")?.value || \"live\",\n      trigger: $(\"templateTriggerInput\")?.value || \"\",\n      subject: $(\"templateSubjectInput\")?.value || \"\",\n      html: $(\"templateHtmlInput\")?.value || \"\",\n      text: $(\"templateTextInput\")?.value || \"\",\n    };\n  }\n\n  async function editTemplate(key, button) {\n    setLoading(button, true);\n    try {\n      const data = await api(\"/api/admin/communications/templates/\" + encodeURIComponent(key));\n      renderTemplateEditor(data.template);\n      setNotice(\"Template loaded for editing.\");\n    } finally { setLoading(button, false); }\n  }\n\n  async function saveTemplate(button) {\n    if (!state.selectedTemplateKey) throw new Error(\"Select a template first.\");\n    setLoading(button, true);\n    try {\n      const data = await api(\"/api/admin/communications/templates/\" + encodeURIComponent(state.selectedTemplateKey), { method: \"POST\", body: JSON.stringify(templatePayload()) });\n      $(\"communicationsTemplateResult\").textContent = data.message || \"Template saved.\";\n      await loadCommunications();\n      renderTemplateEditor(data.template);\n      setNotice(\"Template saved.\");\n    } finally { setLoading(button, false); }\n  }\n\n  async function previewTemplate(button) {\n    if (!state.selectedTemplateKey) throw new Error(\"Select a template first.\");\n    setLoading(button, true);\n    try {\n      const previewMode=button?.dataset?.templatePreviewMode||\"current\";\n      const preferLatest=previewMode===\"latest\";\n      const designCandidate=previewMode===\"candidate\";\n      const data = await api(\"/api/admin/communications/templates/\" + encodeURIComponent(state.selectedTemplateKey) + \"/preview\", { method:\"POST\", body:JSON.stringify({preferLatest,designCandidate,mode:previewMode}), cacheMs:0, timeoutMs:12000 });\n      if(!data.available){setNotice(data.message||\"No live sender is available for this item yet.\",true);return;}\n      const dialog=$(\"communicationsPreviewDialog\"), frame=$(\"communicationsPreviewFrame\"),meta=$(\"communicationsPreviewMeta\");\n      if (frame) frame.srcdoc = data.html || \"<p>No HTML preview returned.</p>\";\n      if(meta){\n        const sourceLabel=data.proposedDesign?(data.source===\"approved_live_design\"?\"Approved design \u00B7 LIVE production renderer\":\"Proposed design \u00B7 preview only \u00B7 NOT LIVE\"):(data.exactLiveSend?\"Exact payload from a historical successful Resend send\":\"Live production design \u00B7 representative data \u00B7 no successful historical send yet\");\n        meta.innerHTML=\"<div><span>Source</span><strong>\"+esc(sourceLabel)+\"</strong></div>\"+\n          \"<div><span>Subject</span><strong>\"+esc(data.subject||\"\u2014\")+\"</strong></div>\"+\n          \"<div><span>From</span><strong>\"+esc(data.from||\"\u2014\")+\"</strong></div>\"+\n          \"<div><span>Reply-to</span><strong>\"+esc(data.replyTo||\"\u2014\")+\"</strong></div>\"+\n          (data.attachment?\"<div><span>Attachments</span><strong>\"+esc(data.attachment)+\"</strong></div>\":\"\")+\n          (data.sentAt?\"<div><span>Captured send</span><strong>\"+esc(prettyShortDate(data.sentAt))+\"</strong></div>\":\"\");\n      }\n      if (dialog && typeof dialog.showModal === \"function\" && !dialog.open) dialog.showModal();\n      setNotice(data.proposedDesign?(data.source===\"approved_live_design\"?\"Opened the approved live production design with representative preview data.\":\"Opened a proposed design preview. It is not connected to live sending.\"):(data.exactLiveSend?\"Opened exact HTML from the latest historical successful send.\":\"Opened the live production design with representative data because no successful historical send exists yet. Nothing was saved or sent.\"));\n    } finally { setLoading(button, false); }\n  }\n\n  async function testSendTemplate(button) {\n    if (!state.selectedTemplateKey) throw new Error(\"Select a template first.\");\n    const to = String($(\"templateTestToInput\")?.value || \"\").trim();\n    if (!to || !to.includes(\"@\")) throw new Error(\"Enter a test recipient email.\");\n    setLoading(button, true);\n    try {\n      await api(\"/api/admin/communications/templates/\" + encodeURIComponent(state.selectedTemplateKey), { method: \"POST\", body: JSON.stringify(templatePayload()) });\n      const data = await api(\"/api/admin/communications/templates/\" + encodeURIComponent(state.selectedTemplateKey) + \"/test-send\", { method: \"POST\", body: JSON.stringify({ to, variables: { memberName: $(\"templatePreviewNameInput\")?.value || \"Orbit Test Member\", memberEmail: to, memberNumber: \"OCC000999\", trackingNumber: \"ORBIT-TEST-123\", trackingUrl: \"https://www.royalmail.com/track-your-item#/tracking-results/ORBIT-TEST-123\", message: \"Template test send\" } }) });\n      $(\"communicationsTemplateResult\").textContent = data.message || \"Test email sent.\";\n      await loadCommunications();\n    } finally { setLoading(button, false); }\n  }\n\n  async function resetTemplate(button) {\n    if (!state.selectedTemplateKey) throw new Error(\"Select a template first.\");\n    if (!window.confirm(\"Reset this email template to the Orbit default?\")) return;\n    setLoading(button, true);\n    try {\n      const data = await api(\"/api/admin/communications/templates/\" + encodeURIComponent(state.selectedTemplateKey) + \"/reset\", { method: \"POST\", body: JSON.stringify({}) });\n      $(\"communicationsTemplateResult\").textContent = data.message || \"Template reset.\";\n      await loadCommunications();\n      renderTemplateEditor(data.template);\n    } finally { setLoading(button, false); }\n  }\n\n\n  function getMonthlyContentPayload() {\n    return {\n      monthKey: ($(\"monthlyContentMonthKey\")?.value || currentMonthKey()).trim(),\n      headline: ($(\"monthlyContentHeadline\")?.value || \"\").trim(),\n      currentDrawTitle: ($(\"monthlyContentCurrentDrawTitle\")?.value || \"\").trim(),\n      currentDrawImageUrl: ($(\"monthlyContentCurrentDrawImageUrl\")?.value || \"\").trim(),\n      currentDrawDate: ($(\"monthlyContentCurrentDrawDate\")?.value || \"\").trim(),\n      currentDrawDescription: ($(\"monthlyContentCurrentDrawDescription\")?.value || \"\").trim(),\n      nextMonthTitle: ($(\"monthlyContentNextMonthTitle\")?.value || \"\").trim(),\n      nextMonthImageUrl: ($(\"monthlyContentNextMonthImageUrl\")?.value || \"\").trim(),\n      nextMonthDrawDate: ($(\"monthlyContentNextMonthDrawDate\")?.value || \"\").trim(),\n      nextMonthDescription: ($(\"monthlyContentNextMonthDescription\")?.value || \"\").trim(),\n      goldenTicketTitle: ($(\"monthlyContentGoldenTicketTitle\")?.value || \"\").trim(),\n      goldenTicketValue: ($(\"monthlyContentGoldenTicketValue\")?.value || \"\").trim(),\n      goldenTicketImageUrl: ($(\"monthlyContentGoldenTicketImageUrl\")?.value || \"\").trim(),\n      goldenTicketDescription: ($(\"monthlyContentGoldenTicketDescription\")?.value || \"\").trim()\n    };\n  }\n\n  function fillMonthlyContentForm(content) {\n    const item = content || {};\n    const fields = {\n      monthlyContentMonthKey: item.monthKey,\n      monthlyContentHeadline: item.headline,\n      monthlyContentCurrentDrawTitle: item.currentDrawTitle,\n      monthlyContentCurrentDrawImageUrl: item.currentDrawImageUrl,\n      monthlyContentCurrentDrawDate: item.currentDrawDate,\n      monthlyContentCurrentDrawDescription: item.currentDrawDescription,\n      monthlyContentNextMonthTitle: item.nextMonthTitle,\n      monthlyContentNextMonthImageUrl: item.nextMonthImageUrl,\n      monthlyContentNextMonthDrawDate: item.nextMonthDrawDate,\n      monthlyContentNextMonthDescription: item.nextMonthDescription,\n      monthlyContentGoldenTicketTitle: item.goldenTicketTitle,\n      monthlyContentGoldenTicketValue: item.goldenTicketValue,\n      monthlyContentGoldenTicketImageUrl: item.goldenTicketImageUrl,\n      monthlyContentGoldenTicketDescription: item.goldenTicketDescription\n    };\n    Object.keys(fields).forEach(id => { if ($(id)) $(id).value = fields[id] || \"\"; });\n  }\n\n\n\n  function renderMonthlyContentPreview() {\n    const previews = [\n      [\"monthlyContentCurrentPreview\", \"Current draw\", $(\"monthlyContentCurrentDrawImageUrl\")?.value],\n      [\"monthlyContentNextPreview\", \"Next month\", $(\"monthlyContentNextMonthImageUrl\")?.value],\n      [\"monthlyContentGoldenPreview\", \"Golden Ticket\", $(\"monthlyContentGoldenTicketImageUrl\")?.value]\n    ];\n    previews.forEach(function(entry){\n      const target = $(entry[0]);\n      if (!target) return;\n      target.innerHTML = entry[2] ? \"<img src='\" + esc(entry[2]) + \"' alt='\" + esc(entry[1]) + \" preview'>\" : \"<div class='orbit-empty'><strong>\" + esc(entry[1]) + \" image</strong><span>Add or select an image to preview it here.</span></div>\";\n    });\n  }\n\n  async function loadMonthlyContent(button) {\n    setLoading(button, true);\n    const result = $(\"monthlyContentResult\");\n    if (result) result.textContent = \"Loading monthly content...\";\n    try {\n      const monthKey = ($(\"monthlyContentMonthKey\")?.value || currentMonthKey()).trim();\n      const data = await api(\"/api/admin/monthly-content?monthKey=\" + encodeURIComponent(monthKey));\n      fillMonthlyContentForm(data.content || {});\n      renderMonthlyContentPreview();\n      if (result) result.textContent = \"Loaded monthly content for \" + ((data.content && data.content.monthKey) || monthKey) + \".\";\n      return data;\n    } catch (err) {\n      if (result) result.textContent = \"Monthly content failed: \" + (err.message || err);\n      throw err;\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function saveMonthlyContent(button) {\n    setLoading(button, true);\n    const result = $(\"monthlyContentResult\");\n    if (result) result.textContent = \"Saving monthly content...\";\n    try {\n      const data = await api(\"/api/admin/monthly-content\", { method: \"POST\", body: JSON.stringify(getMonthlyContentPayload()) });\n      fillMonthlyContentForm(data.content || {});\n      renderMonthlyContentPreview();\n      if (result) result.textContent = \"Saved. Monthly Content API now has the latest My Orbit content.\";\n      setNotice(\"Monthly Content saved.\");\n      return data;\n    } catch (err) {\n      if (result) result.textContent = \"Save failed: \" + (err.message || err);\n      setNotice(\"Monthly Content save failed: \" + (err.message || err), true);\n      throw err;\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  function renderSupportInbox(data) {\n    const target = $(\"supportInboxTable\");\n    const result = $(\"supportInboxResult\");\n    if (!target) return;\n    const rawTickets = Array.isArray(data?.tickets) ? data.tickets : [];\n    const filter = String($(\"supportStatusFilter\")?.value || \"active\").toLowerCase();\n    const search = String($(\"supportSearchInput\")?.value || \"\").toLowerCase().trim();\n    const tickets = rawTickets.filter(function(ticket){\n      const status = String(ticket.status || \"open\").toLowerCase();\n      if (filter === \"active\" && [\"resolved\", \"closed\"].includes(status)) return false;\n      if (filter !== \"active\" && filter !== \"all\" && status !== filter) return false;\n      if (!search) return true;\n      return [ticket.subject, ticket.email, ticket.member_number, ticket.memberNumber, ticket.message, ticket.latestMessagePreview, ticket.ticket_id, ticket.ticketId].join(\" \").toLowerCase().includes(search);\n    });\n    if (result) {\n      result.classList.remove(\"error\");\n      result.textContent = tickets.length ? (tickets.length + \" member message\" + (tickets.length === 1 ? \"\" : \"s\") + \" loaded.\") : \"No open member messages found.\";\n    }\n    const rows = tickets.map(ticket => {\n      const id = ticket.ticket_id || ticket.ticketId || ticket.id || \"\";\n      const preview = (Array.isArray(ticket.messages) && ticket.messages.length)\n        ? ticket.messages[ticket.messages.length - 1].message\n        : (ticket.message || ticket.latestMessagePreview || \"\");\n      const needsReply = Boolean(ticket.requires_admin_reply || ticket.requiresAdminReply || ticket.awaiting_reply || ticket.awaitingReply || String(ticket.status || \"\").toLowerCase() === \"waiting\");\n      return \"<tr class='\" + (needsReply ? \"orbit-support-needs-reply\" : \"\") + \"'>\" +\n        \"<td><strong>\" + esc(ticket.subject || \"Member message\") + \"</strong><br><span class='orbit-muted'>\" + esc(id) + \" \u00B7 \" + esc(ticket.category || \"General\") + \"</span></td>\" +\n        \"<td>\" + esc(ticket.email || \"\u2014\") + \"<br><span class='orbit-muted'>Member #\" + esc(ticket.member_number || ticket.memberNumber || \"\u2014\") + \"</span></td>\" +\n        \"<td><span class='orbit-pill'>\" + esc(ticket.status || \"open\") + \"</span></td>\" +\n        \"<td>\" + esc(preview || \"\u2014\") + \"</td>\" +\n        \"<td>\" + esc(prettyShortDate(ticket.last_message_at || ticket.lastMessageAt || ticket.updated_at || ticket.updatedAt || ticket.created_at || ticket.createdAt)) + \"</td>\" +\n        \"<td><button type='button' data-support-open='\" + esc(id) + \"'>Open</button></td>\" +\n      \"</tr>\";\n    });\n    target.innerHTML = table([\"Message\", \"Member\", \"Status\", \"Latest\", \"Updated\", \"Action\"], rows, \"No member support messages have been created yet.\");\n  }\n\n  async function loadSupportInbox(button, quiet) {\n    setLoading(button, true);\n    const result = $(\"supportInboxResult\");\n    if (result && !quiet) {\n      result.classList.remove(\"error\");\n      result.textContent = \"Loading member messages...\";\n    }\n    try {\n      const data = await api(\"/api/admin/support?limit=200\",{cacheMs:0});\n      state.supportInbox = data;\n      updateMemberSupportBadgesV688(data);\n      renderSupportInbox(data);\n      if (!quiet) setNotice(\"Support Inbox refreshed.\");\n      return data;\n    } catch (err) {\n      if (result) {\n        result.classList.add(\"error\");\n        result.textContent = \"Support Inbox failed: \" + (err.message || err);\n      }\n      if (!quiet) setNotice(\"Support Inbox failed: \" + (err.message || err), true);\n      throw err;\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  function closeSupportModal() {\n    const modal = $(\"supportConversationModal\");\n    if (!modal) return;\n    if (typeof modal.close === \"function\" && modal.open) modal.close();\n    modal.removeAttribute(\"open\");\n    modal.classList.remove(\"is-open\");\n    state.currentSupportTicketId = null;\n  }\n\n  function renderSupportConversation(ticket) {\n    if (!ticket) return;\n    const id = ticket.ticket_id || ticket.ticketId || \"\";\n    const messages = Array.isArray(ticket.messages) ? ticket.messages : [];\n    const modal = $(\"supportConversationModal\");\n    if (!modal) throw new Error(\"Support popup is missing from the Admin page.\");\n    state.currentSupportTicketId = id;\n    text(\"supportModalTitle\", ticket.subject || \"Member message\");\n    text(\"supportModalMeta\", (ticket.email || \"\u2014\") + \" \u00B7 \" + id + \" \u00B7 \" + (ticket.status || \"open\"));\n    const thread = $(\"supportModalThread\");\n    if (thread) thread.innerHTML = messages.length ? messages.map(message =>\n      \"<div class='orbit-support-message \" + esc(message.from || \"member\") + \"'><strong>\" + esc(message.from === \"admin\" ? \"Orbit\" : \"Member\") + \"</strong><small>\" + esc(prettyShortDate(message.created_at || message.createdAt)) + \"</small><p class='orbit-support-message-body'>\" + esc(message.message || \"\") + \"</p></div>\"\n    ).join(\"\") : \"<p class='orbit-muted'>No message history found.</p>\";\n    const reply = $(\"supportReplyText\");\n    if (reply) reply.value = \"\";\n    modal.classList.add(\"is-open\");\n    if (typeof modal.showModal === \"function\") {\n      if (!modal.open) modal.showModal();\n    } else {\n      modal.setAttribute(\"open\", \"\");\n    }\n  }\n\n  async function openSupportConversation(ticketId, button) {\n    setLoading(button, true);\n    try {\n      const data = await api(\"/api/admin/support/\" + encodeURIComponent(ticketId));\n      const ticket = data && (data.ticket || data.supportTicket || data);\n      if (!ticket || !(ticket.ticket_id || ticket.ticketId)) throw new Error(\"Support conversation loaded without a valid ticket record.\");\n      setLoading(button, false);\n      renderSupportConversation(ticket);\n      setNotice(\"Support conversation opened.\");\n    } catch (err) {\n      setNotice(\"Could not open support conversation: \" + (err.message || err), true);\n      throw err;\n    } finally {\n      if (button && button.isConnected) setLoading(button, false);\n    }\n  }\n\n  async function updateSupportStatus(ticketId, status, button) {\n    setLoading(button, true);\n    try {\n      const note = status === \"resolved\" ? \"Marked resolved by Orbit.\" : \"Conversation reopened by Orbit.\";\n      const data = await api(\"/api/admin/support/\" + encodeURIComponent(ticketId) + \"/status\", { method: \"POST\", body: JSON.stringify({ status, note }) });\n      renderSupportConversation(data.ticket);\n      await loadSupportInbox(null, true);\n      await loadSummary(null, true);\n      setNotice(\"Support conversation updated.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function replyToSupport(ticketId, button) {\n    const box = $(\"supportReplyText\");\n    const message = (box?.value || \"\").trim();\n    if (!message) {\n      setNotice(\"Write a reply before sending.\", true);\n      return;\n    }\n    setLoading(button, true);\n    try {\n      const data = await api(\"/api/admin/support/\" + encodeURIComponent(ticketId) + \"/status\", { method: \"POST\", body: JSON.stringify({ status: \"open\", note: message, notifyMember: true }) });\n      if (box) box.value = \"\";\n      renderSupportConversation(data.ticket);\n      await loadSupportInbox(null, true);\n      await loadSummary(null, true);\n      setNotice(\"Reply saved to the support conversation.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n\n  function renderFulfilmentCentre(centre) {\n    if (!centre) return;\n    const counts = centre.counts || {};\n    const cycle = centre.cycle || {};\n    const ship = centre.shipEngine || {};\n    const breakdown = centre.queueBreakdown || {};\n    text(\"fulfilmentMonthLabel\", counts.total || 0);\n    text(\"fulfilmentCurrentCycleCount\", breakdown.currentCycle || 0);\n    text(\"fulfilmentOlderCount\", breakdown.olderOutstanding || 0);\n    text(\"fulfilmentReissueCount\", breakdown.reissuesReplacements || 0);\n    text(\"fulfilmentReviewCount\", breakdown.needsReview || 0);\n    text(\"fulfilmentReadyCount\", counts.ready || 0);\n    text(\"fulfilmentLabelCount\", counts.labelsGenerated || 0);\n    text(\"fulfilmentAddressCount\", counts.needsAddress || 0);\n    text(\"fulfilmentLockLabel\", \"Current + older outstanding + replacements + review\");\n    const breakdownTarget = $(\"fulfilmentQueueBreakdownV667\");\n    if (breakdownTarget) {\n      const parts=[\n        [\"Current cycle\",Number(breakdown.currentCycle||0),\"good\"],\n        [\"Older outstanding\",Number(breakdown.olderOutstanding||0),\"warning\"],\n        [\"Reissues / replacements\",Number(breakdown.reissuesReplacements||0),\"\"],\n        [\"Needs review\",Number(breakdown.needsReview||0),Number(breakdown.needsReview||0)?\"bad\":\"good\"]\n      ];\n      breakdownTarget.innerHTML=parts.map(([label,count,tone])=>\"<span class='orbit-pill \"+tone+\"'><strong>\"+count+\"</strong> \"+esc(label)+\"</span>\").join(\"\");\n    }\n    const staleButton = $(\"reconcileSafeStaleParcelsButton\");\n    if (staleButton) {\n      const safe = Number(breakdown.safeStale || 0);\n      staleButton.hidden = safe < 1;\n      staleButton.disabled = safe < 1;\n      staleButton.textContent = safe > 0 ? \"Reconcile \" + safe + \" safe stale parcel\" + (safe === 1 ? \"\" : \"s\") : \"Reconcile safe stale parcels\";\n    }\n    text(\"fulfilmentDispatchStatus\", counts.labelsGenerated ? \"Labels ready\" : (counts.ready ? \"Awaiting labels\" : \"Nothing ready\"));\n    text(\"shipEngineStatus\", ship.testLabelMode ? \"TEST MODE\" : (ship.configured ? (ship.buyingEnabled ? \"Ready\" : \"Configured\") : \"Needs setup\"));\n    text(\"shipEngineBuying\", ship.testLabelMode ? \"\uD83E\uDDEA TEST LABEL MODE ACTIVE \u2014 no ShipEngine calls, no paid postage\" : (ship.buyingEnabled ? \"Live label buying enabled\" : \"Safe mode: label buying disabled until SHIPENGINE_LABEL_BUYING_ENABLED=true\"));\n    renderShipEngineBalanceV442(ship);\n    const testModeBanner = $(\"orbitLabelTestModeBanner\");\n    if (testModeBanner) {\n      testModeBanner.hidden = !ship.testLabelMode;\n      testModeBanner.textContent = ship.testLabelMode ? \"\uD83E\uDDEA TEST LABEL MODE ACTIVE \u2014 fake Royal Mail labels only. No postage is being purchased.\" : \"\";\n    }\n    healthCard(\"healthShipEngine\", ship.testLabelMode ? \"Test Labels\" : \"ShipStation\", ship.configured ? (ship.testLabelMode ? \"test mode\" : (ship.buyingEnabled ? \"ready\" : \"safe mode\")) : \"needs setup\", (ship.missing || []).length ? \"Missing: \" + (ship.missing || []).join(\", \") : (ship.testLabelMode ? \"ORBIT_LABEL_TEST_MODE=true \u00B7 ShipEngine is bypassed\" : ((ship.buyingEnabled ? \"Live labels enabled\" : \"Safe mode\") + \" \u00B7 Royal Mail \u00B7 Tracked 48 \u00B7 Small Parcel\")));\n    updateCommandCentre();\n    const noteTarget = $(\"fulfilmentNotifications\");\n    if (noteTarget) {\n      const notifications = (centre.notifications || []).filter(item => /fail|error|missing|invalid|attention/i.test(String(item.type || \"\") + \" \" + String(item.title || \"\") + \" \" + String(item.message || \"\")));\n      noteTarget.hidden = !notifications.length;\n      noteTarget.innerHTML = notifications.map(item => \"<div><strong>\" + esc(item.title || \"Fulfilment needs attention\") + \"</strong><br><span class='orbit-muted'>\" + esc(item.message || \"Review this exception before shipping.\") + \"</span></div>\").join(\"\");\n    }\n    const missingTarget = $(\"shipEngineMissing\");\n    if (missingTarget) {\n      missingTarget.textContent = ship.configured ? \"ShipEngine has the required configuration for label creation.\" : \"Missing: \" + ((ship.missing || []).join(\", \") || \"unknown\");\n    }\n    const helpTarget = $(\"shipEngineSetupHelp\");\n    if (helpTarget) {\n      const defaults = ship.defaults || {};\n      helpTarget.textContent = [\n        \"Render env vars needed before buying live labels:\",\n        \"SHIPENGINE_API_KEY=your ShipEngine production API key\",\n        \"SHIPENGINE_CARRIER_ID=\" + (defaults.carrierId || \"needed from ShipEngine carriers list\"),\n        \"SHIPENGINE_SERVICE_CODE=\" + (defaults.serviceCode || \"rm_cnd_walleted_tracked48\"),\n        \"ORBIT_LABEL_TEST_MODE=true for free fake-label workflow testing\",\n        \"SHIPENGINE_LABEL_BUYING_ENABLED=true (only when ready to buy live labels)\",\n        \"ORBIT_SHIP_FROM_ADDRESS_1 / CITY / POSTCODE / COUNTRY_CODE\",\n        \"ORBIT_FULFILMENT_EMAIL_TO=where the print pack is emailed\"\n      ].join(\"\\n\");\n    }\n  }\n\n  function optionList(items, selected, valueKey, labelFn) {\n    return (items || []).map(item => {\n      const value = item[valueKey] || item.service_code || item.package_code || item.carrier_id || \"\";\n      const label = labelFn ? labelFn(item) : value;\n      return \"<option value='\" + esc(value) + \"'\" + (String(value) === String(selected || \"\") ? \" selected\" : \"\") + \">\" + esc(label) + \"</option>\";\n    }).join(\"\");\n  }\n\n  function formatShipEngineBalanceV442(balance){\n    if(!balance?.available || balance.amount===null || balance.amount===undefined)return \"\u2014\";\n    const currency=String(balance.currency||\"GBP\").toUpperCase();\n    try{return new Intl.NumberFormat(\"en-GB\",{style:\"currency\",currency}).format(Number(balance.amount||0));}\n    catch(_){return (currency===\"GBP\"?\"\u00A3\":currency+\" \")+Number(balance.amount||0).toFixed(2);}\n  }\n  function renderShipEngineBalanceV442(config){\n    const balance=config?.balance||{},formatted=formatShipEngineBalanceV442(balance),available=Boolean(balance.available);\n    const fulfilment=$(\"shipEngineBalance\"),hint=$(\"shipEngineBalanceHint\");\n    if(fulfilment)fulfilment.textContent=available?formatted:(config?.testLabelMode?\"TEST MODE\":\"Unavailable\");\n    if(hint)hint.innerHTML=available\n      ? \"Available postage credit \u00B7 <a href='https://app.shipengine.com/' target='_blank' rel='noopener'>Top up in ShipEngine \u2197</a>\"\n      : (config?.testLabelMode?\"Live balance is hidden while Test Label Mode is active.\":\"Open Shipping Settings to retest the live ShipEngine account.\");\n    const settingsBalance=$(\"shipEngineSettingsBalance\");\n    const settingsHint=$(\"shipEngineSettingsBalanceHint\");\n    if(settingsBalance)settingsBalance.textContent=available?formatted:(config?.testLabelMode?\"TEST MODE\":\"Unavailable\");\n    if(settingsHint)settingsHint.textContent=available\n      ? (balance.requiresFunding?\"Prepaid carrier balance returned by ShipEngine.\":\"Carrier balance returned by ShipEngine.\")\n      : (config?.testLabelMode?\"Test Label Mode does not use paid ShipEngine postage.\":\"No live balance was returned for the selected carrier.\");\n  }\n\n  function renderShippingConfig(config) {\n    if (!config) return;\n    const target = $(\"shippingConfigPanel\");\n    if (!target) return;\n    const settings = config.settings || {};\n    const selectedCarrier = (config.selected || {}).carrier || {};\n    const carriers = config.carriers || [];\n    const services = selectedCarrier.services || config.domesticServices || [];\n    const packages = config.packages || selectedCarrier.packages || [];\n    const selected = config.selected || {};\n    const warning = (!selected.serviceFound || !selected.packageFound)\n      ? \"<div class='orbit-warning'>The currently saved service/package was not found for this carrier. Select one below and save before buying labels.</div>\"\n      : \"<div class='orbit-success'>Shipping configuration verified against your ShipStation account.</div>\";\n    target.innerHTML =\n      warning +\n      \"<div class='orbit-shipengine-credit-panel'><div><span>ShipEngine postage balance</span><strong id='shipEngineSettingsBalance'>\u2014</strong><small id='shipEngineSettingsBalanceHint'>Checking live carrier balance\u2026</small></div><a class='orbit-button-link secondary' href='https://app.shipengine.com/' target='_blank' rel='noopener'>Top up in ShipEngine \u2197</a></div>\" +\n      \"<div class='orbit-shipping-pricing-explainer'><strong>ShipEngine live quote</strong><p>Orbit uses the amount returned by ShipEngine as the provider quote and does not add its own VAT on top. Royal Mail's public online Tracked 48 prices are VAT-inclusive, while ShipEngine can return a different account/carrier rate. If ShipEngine explicitly returns a separate tax amount, Orbit includes that once and labels it as provider tax.</p><p><b>Important:</b> the final purchased label response is saved against the parcel as the actual ShipEngine shipment cost, so preview and purchase can be audited without guessing.</p></div>\" +\n      \"<div class='orbit-current-shipping-service'><span>Currently saved service</span><strong>\" + esc(selected.service?.name || settings.serviceCode || \"Not selected\") + \"</strong><small>\" + esc(selectedCarrier.friendly_name || selectedCarrier.nickname || \"Royal Mail\") + \" \u00B7 \" + esc(selected.package?.name || settings.packageCode || \"Package not selected\") + \"</small><div class='orbit-service-limits'><b>Saved quote weight:</b> \" + esc(settings.weightValue || 500) + \"g<br><b>Maximum service weight:</b> \" + (/tracked\\s*48|tracked48/i.test(String(selected.service?.name || settings.serviceCode || \"\")) ? \"2 kg\" : \"Confirm in live rate results\") + \"<br><b>Maximum parcel size:</b> \" + (/tracked\\s*48|tracked48/i.test(String(selected.service?.name || settings.serviceCode || \"\")) ? \"45 \u00D7 35 \u00D7 16 cm\" : \"Confirm in live rate results\") + \"<br><b>Price treatment:</b> ShipEngine provider quote \u00B7 Orbit adds no synthetic VAT</div></div>\" +\n      \"<div class='orbit-hidden-shipping-selects' hidden><select id='shippingCarrierSelect'>\" + optionList(carriers, settings.carrierId, \"carrier_id\", c => (c.friendly_name || c.nickname || c.carrier_code || c.carrier_id)) + \"</select><select id='shippingServiceSelect'>\" + optionList(services, settings.serviceCode, \"service_code\", s => (s.name || s.service_code)) + \"</select><select id='shippingPackageSelect'>\" + optionList(packages, settings.packageCode, \"package_code\", p => (p.name || p.package_code)) + \"</select></div>\" +\n      \"<div class='orbit-action-row'><button id='saveShippingConfigButton' type='button'>Save Selected Service</button><button id='loadShippingRatesButton' type='button' class='secondary'>Load Live Services & Prices</button><button id='useRoyalMailTracked48Button' type='button' class='secondary'>Use Royal Mail Tracked 48 Small Parcel</button><button id='toggleTestLabelModeButton' type='button' class='secondary'>\" + (settings.testLabelMode ? \"Turn Test Mode Off\" : \"Turn Test Mode On\") + \"</button></div>\" +\n      \"<div id='shippingSaveResult' class='orbit-action-result' hidden>Ready.</div>\" +\n      \"<div id='shippingRatesPanel' class='orbit-shipping-rate-list'><p class='orbit-muted'>Load live services and prices to compare available postage options.</p></div>\";\n    renderShipEngineBalanceV442(config);\n    $(\"shippingCarrierSelect\")?.addEventListener(\"change\", saveShippingConfigFromForm);\n    $(\"saveShippingConfigButton\")?.addEventListener(\"click\", function () { saveShippingConfigFromForm(this); });\n    $(\"loadShippingRatesButton\")?.addEventListener(\"click\", function () { loadShippingServiceRates(this); });\n    $(\"toggleTestLabelModeButton\")?.addEventListener(\"click\", async function () { toggleTestLabelMode(this, !Boolean(settings.testLabelMode)); });\n    $(\"useRoyalMailTracked48Button\")?.addEventListener(\"click\", async function () {\n      setLoading(this, true);\n      try {\n        await saveShippingConfig({ carrierId: \"se-393585\", serviceCode: \"rm_cnd_walleted_tracked48\", packageCode: \"rm_cnd_walleted_small_parcel\" });\n        const result = $(\"shippingSaveResult\");\n        if (result) { result.hidden = false; result.textContent = \"Royal Mail Tracked 48 Small Parcel saved and verified.\"; result.classList.remove(\"error\"); }\n      } catch (err) {\n        const result = $(\"shippingSaveResult\");\n        if (result) { result.hidden = false; result.textContent = err.message; result.classList.add(\"error\"); }\n        setNotice(err.message, true);\n      } finally { setLoading(this, false); }\n    });\n  }\n\n  async function toggleTestLabelMode(button, enabled) {\n    const result = $(\"shippingSaveResult\") || $(\"testingPostageResult\");\n    setLoading(button, true);\n    if (result) { result.hidden = false; result.textContent = (enabled ? \"Turning Test Label Mode on...\" : \"Turning Test Label Mode off...\"); result.classList.remove(\"error\"); }\n    try {\n      const response = await api(\"/api/admin/shipping/test-label-mode\", { method: \"POST\", body: JSON.stringify({ enabled: Boolean(enabled) }) });\n      state.shippingConfig = response.shipping;\n      renderShippingConfig(state.shippingConfig);\n      await loadFulfilment();\n      if (result) result.textContent = response.message || (enabled ? \"Test Label Mode enabled.\" : \"Test Label Mode disabled.\");\n      setNotice(response.message || \"Test Label Mode updated.\");\n    } catch (err) {\n      if (result) { result.textContent = err.message || \"Could not update Test Label Mode.\"; result.classList.add(\"error\"); }\n      setNotice(err.message || \"Could not update Test Label Mode.\", true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function saveShippingConfig(payload) {\n    const body = payload || {\n      carrierId: $(\"shippingCarrierSelect\")?.value,\n      serviceCode: $(\"shippingServiceSelect\")?.value,\n      packageCode: $(\"shippingPackageSelect\")?.value,\n      weightValue: $(\"shippingWeightInput\")?.value,\n      lengthCm: $(\"shippingLengthInput\")?.value,\n      widthCm: $(\"shippingWidthInput\")?.value,\n      heightCm: $(\"shippingHeightInput\")?.value,\n    };\n    const result = await api(\"/api/admin/shipping/config\", { method: \"POST\", body: JSON.stringify(body) });\n    state.shippingConfig = result.shipping;\n    renderShippingConfig(state.shippingConfig);\n    await loadFulfilment();\n    setNotice(\"Shipping settings saved.\");\n  }\n\n\n  async function loadShippingServiceRates(button) {\n    setLoading(button, true);\n    const target = $(\"shippingRatesPanel\");\n    try {\n      const quoteWeight = $(\"shippingQuoteWeightSelect\")?.value || state.shippingConfig?.settings?.weightValue || 500;\n      const data = await api(\"/api/admin/shipping/service-rates?weightValue=\" + encodeURIComponent(quoteWeight));\n      const rates = data.rates || [];\n      if (!rates.length) {\n        target.innerHTML = \"<div class='orbit-warning'>\" + esc(data.error || data.message || \"No live service prices were returned. A ready parcel with a complete address is required for a quote.\") + \"</div>\";\n        return;\n      }\n      target.innerHTML = rates.map(rate => {\n        const selected = String(rate.serviceCode) === String(state.shippingConfig?.settings?.serviceCode || \"\");\n        const delivery = rate.estimatedDeliveryDate ? (\"Estimated \" + prettyShortDate(rate.estimatedDeliveryDate)) : (rate.deliveryDays != null ? (rate.deliveryDays + \" day estimate\") : \"Delivery estimate unavailable\");\n        return \"<button type='button' class='orbit-shipping-rate-card \" + (selected ? \"active\" : \"\") + \"' data-shipping-rate-service='\" + esc(rate.serviceCode || \"\") + \"' data-shipping-rate-package='\" + esc(rate.packageCode || \"\") + \"'>\" +\n          \"<span>\" + esc(rate.carrierName || \"Carrier\") + \"</span><strong>\" + esc(rate.serviceName || rate.serviceCode || \"Service\") + \"</strong><b>\" + money(rate.amount) + \" ShipEngine quote</b><small>\" + (Number(rate.vatAmount||0)>0 ? (\"Carrier components \" + money(rate.baseAmount) + \" + provider tax \" + money(rate.vatAmount)) : \"No additional VAT added by Orbit\") + \"<br>\" + esc(delivery) + \"<br>Quote weight: \" + esc(rate.quotedWeightGrams || quoteWeight) + \"g<br>Max weight: \" + esc(rate.maxWeight || \"Carrier limit not returned\") + (rate.maxDimensions ? (\" \u00B7 Max size: \" + esc(rate.maxDimensions)) : \"\") + \"</small>\" + (selected ? \"<em>Currently saved</em>\" : \"<em>Select this service</em>\") + \"</button>\";\n      }).join(\"\");\n      target.querySelectorAll(\"[data-shipping-rate-service]\").forEach(card => card.addEventListener(\"click\", function(){\n        const service = this.dataset.shippingRateService;\n        const packageCode = this.dataset.shippingRatePackage;\n        if ($(\"shippingServiceSelect\")) $(\"shippingServiceSelect\").value = service;\n        if (packageCode && $(\"shippingPackageSelect\")) $(\"shippingPackageSelect\").value = packageCode;\n        target.querySelectorAll(\".orbit-shipping-rate-card\").forEach(item => item.classList.toggle(\"selected\", item === this));\n        const result = $(\"shippingSaveResult\");\n        if (result) { result.hidden=false; result.textContent=\"Selected \" + (this.querySelector(\"strong\")?.textContent || service) + \". Click Save Selected Service to make it the default for all parcels.\"; result.classList.remove(\"error\"); }\n      }));\n    } catch (err) {\n      target.innerHTML = \"<div class='orbit-warning'>Could not load live service prices: \" + esc(err.message || err) + \"</div>\";\n    } finally { setLoading(button, false); }\n  }\n\n  async function saveShippingConfigFromForm(button) {\n    if (button) setLoading(button, true);\n    try {\n      await saveShippingConfig();\n      const result = $(\"shippingSaveResult\");\n      if (result) { result.hidden = false; result.textContent = \"Shipping settings saved and verified.\"; result.classList.remove(\"error\"); }\n    } catch (err) {\n      const result = $(\"shippingSaveResult\");\n      if (result) { result.hidden = false; result.textContent = err.message; result.classList.add(\"error\"); }\n      setNotice(err.message, true);\n    } finally { if (button) setLoading(button, false); }\n  }\n\n  async function previewShippingCost(button) {\n    const selected = selectedPackIds().filter(id => selectedPackStage(id) === \"ready\");\n    if (!selected.length) throw new Error(\"Select at least one parcel marked Ready for label before previewing postage.\");\n    const target = $(\"shippingCostPreview\");\n    setLoading(button, true);\n    try {\n      const estimate = await api(\"/api/admin/shipping/estimate\", { method:\"POST\", body:JSON.stringify({ packIds:selected }) });\n      state.shippingCostEstimate = { ...estimate, packIds: selected.slice().sort() };\n      const count = Number(estimate.selectedCount || estimate.count || 0);\n      let message;\n      if (estimate.testLabelMode) message = \"Test Label Mode: \" + count + \" label(s), total cost \u00A30.00.\";\n      else if (estimate.success && estimate.total !== null) {\n        const base = estimate.basePerLabel !== null && estimate.basePerLabel !== undefined ? Number(estimate.basePerLabel).toFixed(2) : null;\n        const vat = estimate.vatPerLabel !== null && estimate.vatPerLabel !== undefined ? Number(estimate.vatPerLabel).toFixed(2) : null;\n        const explicitTax = Number(estimate.vatPerLabel || 0) > 0;\n        message = \"ShipEngine quoted \" + count + \" label(s) at \u00A3\" + Number(estimate.perLabel || 0).toFixed(2) + \" each\" +\n          (explicitTax && base !== null && vat !== null ? \" (\u00A3\" + base + \" carrier components + \u00A3\" + vat + \" provider tax)\" : \" (no additional VAT added by Orbit)\") +\n          \". Quoted total \u00A3\" + Number(estimate.total || 0).toFixed(2) + \".\";\n      }\n      else message = \"A live price could not be confirmed. \" + (estimate.error || estimate.message || \"Check Shipping Settings.\");\n      if (target) { target.hidden=false; target.textContent=message; target.classList.toggle(\"error\", !estimate.success); }\n      const generate = $(\"generateMonthlyDispatchButton\");\n      if (generate) generate.disabled = !(estimate.success && count > 0);\n      setNotice(message, !estimate.success);\n      return estimate;\n    } finally { setLoading(button, false); }\n  }\n\n  async function generateMonthlyDispatch(button) {\n    const selected = selectedPackIds().filter(id => selectedPackStage(id) === \"ready\");\n    if (!selected.length) throw new Error(\"Select at least one parcel marked Ready for label before generating postage.\");\n    let estimate = state.shippingCostEstimate;\n    const estimateIds = Array.isArray(estimate?.packIds) ? estimate.packIds.slice().sort().join(\"|\") : \"\";\n    const selectedIds = selected.slice().sort().join(\"|\");\n    if (!estimate || !estimate.success || estimateIds !== selectedIds) estimate = await previewShippingCost(null);\n    if (!estimate?.success) throw new Error(estimate?.error || estimate?.message || \"Postage cost could not be confirmed.\");\n    const count = Number(estimate?.selectedCount || estimate?.count || selected.length || 0);\n    const costText = estimate?.testLabelMode ? \"\u00A30.00 in Test Label Mode\" : (estimate?.total !== null && estimate?.total !== undefined ? \"approximately \u00A3\" + Number(estimate.total).toFixed(2) : \"an unconfirmed amount\");\n    if (!window.confirm(\"You are about to generate \" + count + \" label(s) for \" + costText + \". Continue?\")) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/fulfilment/generate-monthly-dispatch\", {\n        method: \"POST\",\n        body: JSON.stringify({ emailPrintPack: true, packIds: selected })\n      });\n      $(\"workflowResult\").textContent = JSON.stringify(result, null, 2);\n      const testGenerated = (result.generated || []).filter(row => row.testLabelMode || String(row.trackingNumber || \"\").includes(\"ORBIT-TEST\")).length;\n      const dispatchMessage = \"Monthly dispatch generated: \" + (result.generatedCount || 0) + \" label(s), \" + (result.skippedCount || 0) + \" skipped\" + (selected.length ? \" from \" + selected.length + \" selected.\" : \".\") + (testGenerated ? \" TEST MODE: \" + testGenerated + \" fake label(s), \u00A30 spent.\" : \"\");\n      const localResult = $(\"shippingDispatchResult\");\n      if (localResult) {\n        localResult.hidden = false;\n        localResult.textContent = dispatchMessage;\n        localResult.classList.toggle(\"error\", Boolean(result.skippedCount && !result.generatedCount));\n      }\n      setActionResult(\"Dispatch result: \" + (result.generatedCount || 0) + \" label(s) generated, \" + (result.skippedCount || 0) + \" skipped. \" + (selected.length ? \"Selected packs only.\" : \"Full eligible queue.\"));\n      setOrdersResult(dispatchMessage, Boolean(result.skippedCount && !result.generatedCount));\n      setNotice(dispatchMessage);\n      await Promise.all([loadFulfilment(), loadSummary(), loadEvents()]);\n    } catch (err) {\n      setOrdersResult(err.message || \"Could not generate labels.\", true);\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function generateMissingMonthlyPacks(button) {\n    const key = monthKeyValue();\n    const resultTarget = $(\"generateMissingMonthlyPacksResult\");\n    setLoading(button, true);\n    if (button) button.textContent = \"Generating missing packs...\";\n    if (resultTarget) resultTarget.textContent = \"Creating monthly pack records for active members missing from the queue...\";\n    try {\n      const result = await api(\"/api/admin/fulfilment/generate-missing-monthly-packs\", {\n        method: \"POST\",\n        body: JSON.stringify({ monthKey: key })\n      });\n      const created = Number(result.createdCount || 0);\n      const skipped = Number(result.skippedCount || 0);\n      if (resultTarget) resultTarget.textContent = \"Created \" + created + \" missing monthly pack(s). Skipped \" + skipped + \" already queued member(s). Refreshing fulfilment...\";\n      setActionResult(\"Missing monthly packs generated: \" + created + \" created, \" + skipped + \" skipped.\");\n      setNotice(\"Missing monthly packs generated: \" + created + \" created.\");\n      await Promise.all([loadFulfilment(), loadSummary()]);\n    } catch (err) {\n      if (resultTarget) resultTarget.textContent = err.message || \"Could not generate missing monthly packs.\";\n      setNotice(err.message || \"Could not generate missing monthly packs.\", true);\n    } finally {\n      setLoading(button, false);\n      if (button) button.textContent = \"Generate missing monthly packs\";\n    }\n  }\n\n  async function markBatchDispatched(button) {\n    const selected = selectedPackIds().filter(id => selectedPackStage(id) === \"packed\");\n    if (!selected.length) throw new Error(\"Select at least one packed parcel before marking dispatch.\");\n    const originalText = button ? button.textContent : \"\";\n    const localResult = $(\"shippingDispatchResult\");\n    setLoading(button, true);\n    if (button) button.textContent = \"Marking dispatched...\";\n    if (localResult) {\n      localResult.hidden = false;\n      localResult.textContent = \"Marking \" + (selected.length || \"all eligible\") + \" parcel(s) as dispatched...\";\n      localResult.classList.remove(\"error\");\n    }\n    try {\n      const result = await api(\"/api/admin/fulfilment/mark-batch-dispatched\", {\n        method: \"POST\",\n        body: JSON.stringify({ packIds: selected })\n      });\n      const failures = (result.emailFailures || []).length;\n      const missing = (result.missingEmail || []).length;\n      let msg = \"Dispatched \" + (result.dispatchedCount || 0) + \" parcel(s)\" + (selected.length ? \" from \" + selected.length + \" selected.\" : \".\") + \" \" + (result.emailedCount || 0) + \" tracking email(s) sent.\";\n      if (failures || missing) msg += \" \" + failures + \" email failed, \" + missing + \" missing email.\";\n      if (localResult) {\n        localResult.hidden = false;\n        localResult.textContent = msg;\n        localResult.classList.toggle(\"error\", Boolean(failures || missing));\n      }\n      setOrdersResult(msg, Boolean(failures || missing));\n      setNotice((failures||missing ? \"Dispatch saved, but customer email needs attention. \" : \"\u2713 Selected parcels dispatched successfully. \") + msg, Boolean(failures||missing));\n      await Promise.all([loadFulfilment(), loadSummary(), loadEvents()]);\n    } catch (err) {\n      if (localResult) { localResult.hidden = false; localResult.textContent = err.message || \"Could not mark dispatched.\"; localResult.classList.add(\"error\"); }\n      setOrdersResult(err.message || \"Could not mark dispatched.\", true);\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n      if (button) button.textContent = originalText || \"Mark Dispatched\";\n    }\n  }\n\n  async function markBatchDelivered(button) {\n    const selected = selectedPackIds();\n    if (!selected.length) throw new Error(\"Select at least one dispatched parcel before marking delivered.\");\n    const originalText = button ? button.textContent : \"\";\n    const localResult = $(\"shippingDispatchResult\");\n    setLoading(button, true);\n    if (button) button.textContent = \"Marking delivered...\";\n    if (localResult) {\n      localResult.hidden = false;\n      localResult.textContent = \"Marking \" + (selected.length || \"eligible\") + \" parcel(s) as delivered...\";\n      localResult.classList.remove(\"error\");\n    }\n    try {\n      const result = await api(\"/api/admin/fulfilment/mark-batch-delivered\", {\n        method: \"POST\",\n        body: JSON.stringify({ packIds: selected })\n      });\n      const msg = \"Delivered \" + (result.deliveredCount || 0) + \" parcel(s)\" + (selected.length ? \" from \" + selected.length + \" selected.\" : \".\") + \" Moved to Fulfilment History.\";\n      if (localResult) { localResult.hidden = false; localResult.textContent = msg; localResult.classList.remove(\"error\"); }\n      setOrdersResult(msg, false);\n      await Promise.all([loadFulfilment(), loadSummary()]);\n    } catch (err) {\n      if (localResult) { localResult.hidden = false; localResult.textContent = err.message || \"Could not mark delivered.\"; localResult.classList.add(\"error\"); }\n      setOrdersResult(err.message || \"Could not mark delivered.\", true);\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n      if (button) button.textContent = originalText || \"Mark Delivered\";\n    }\n  }\n\n  function setAddressRecoveryStatus(message, isError) {\n    const target = $(\"addressRecoveryStatus\"); if (!target) return;\n    target.hidden = !message; target.textContent = message || \"\"; target.classList.toggle(\"error\", Boolean(isError)); target.classList.toggle(\"warning\", Boolean(isError));\n  }\n\n  function fillAddressRecoveryForm(delivery) {\n    delivery = delivery || {};\n    const values = { addressRecipientName: delivery.recipientName, addressLine1: delivery.addressLine1, addressLine2: delivery.addressLine2, addressCity: delivery.city, addressCounty: delivery.county, addressPostcode: delivery.postcode, addressCountry: delivery.country || \"United Kingdom\", addressPhone: delivery.phone };\n    Object.keys(values).forEach(function(id){ const el=$(id); if(el) el.value=values[id]||\"\"; });\n  }\n\n  function openAddressRecovery(lookup, packId) {\n    addressRecoveryContext = { lookup: lookup || selectedMemberLookup, packId: packId || null, delivery: null };\n    const profileDelivery = selectedMemberProfile?.delivery || {};\n    fillAddressRecoveryForm(profileDelivery);\n    if ($(\"addressRecoveryLookup\")) $(\"addressRecoveryLookup\").value = addressRecoveryContext.lookup || \"\";\n    if ($(\"addressRecoveryPackId\")) $(\"addressRecoveryPackId\").value = addressRecoveryContext.packId || \"\";\n    text(\"addressRecoveryTitle\", \"Fix delivery address\" + (addressRecoveryContext.lookup ? \" \u00B7 \" + addressRecoveryContext.lookup : \"\"));\n    setAddressRecoveryStatus(\"Choose a live source to resync, or enter the address manually.\", false);\n    $(\"addressRecoveryDialog\")?.showModal();\n  }\n\n  async function syncAddressSource(source, button) {\n    const lookup = addressRecoveryContext.lookup || button?.dataset.addressLookup || selectedMemberLookup;\n    const packId = addressRecoveryContext.packId || button?.dataset.addressPack || null;\n    if (!lookup && !packId) throw new Error(\"No member or parcel selected.\");\n    setLoading(button, true); setAddressRecoveryStatus(\"Checking \" + (source === \"all\" ? \"Recharge, Shopify and Orbit\" : source) + \" for a complete address...\", false);\n    try {\n      const url = packId ? \"/api/admin/fulfilment/pack/\" + encodeURIComponent(packId) + \"/repair-address\" : \"/api/admin/members/\" + encodeURIComponent(lookup) + \"/repair-address\";\n      const result = await api(url, { method:\"POST\", body:JSON.stringify({ source:source, packId:packId, monthKey:monthKeyValue() }) });\n      if (result.afterComplete) {\n        fillAddressRecoveryForm(result.diagnostics?.bestDelivery || result.diagnostics?.delivery || {});\n        setAddressRecoveryStatus(\"Address recovered from \" + (result.deliverySource || source) + \". The parcel is now ready for validation.\", false);\n        await Promise.all([loadFulfilment(), loadSummary()]);\n        if (selectedMemberLookup) await loadMemberProfile(selectedMemberLookup);\n      } else {\n        const probes = result.diagnostics?.probes || [];\n        const error = probes.find(function(row){ return row.error; });\n        setAddressRecoveryStatus(error ? (\"Address was not recovered. \" + (error.status ? \"HTTP \" + error.status + \": \" : \"\") + error.error) : \"No complete address was found from that source. Try another source or enter it manually.\", true);\n      }\n      return result;\n    } finally { setLoading(button, false); }\n  }\n\n  async function saveManualAddress(button) {\n    const lookup = addressRecoveryContext.lookup || $(\"addressRecoveryLookup\")?.value;\n    const packId = addressRecoveryContext.packId || $(\"addressRecoveryPackId\")?.value || null;\n    const delivery = { recipientName:$(\"addressRecipientName\")?.value, addressLine1:$(\"addressLine1\")?.value, addressLine2:$(\"addressLine2\")?.value, city:$(\"addressCity\")?.value, county:$(\"addressCounty\")?.value, postcode:$(\"addressPostcode\")?.value, country:$(\"addressCountry\")?.value, phone:$(\"addressPhone\")?.value };\n    setLoading(button,true); setAddressRecoveryStatus(\"Saving address and updating the blocked parcel...\",false);\n    try {\n      const url = packId ? \"/api/admin/fulfilment/pack/\" + encodeURIComponent(packId) + \"/address\" : \"/api/admin/members/\" + encodeURIComponent(lookup) + \"/address\";\n      const result = await api(url,{method:\"PUT\",body:JSON.stringify({delivery:delivery,packId:packId})});\n      setAddressRecoveryStatus(\"Address saved. \" + (result.packsUpdated || 0) + \" parcel record(s) updated.\",false);\n      await Promise.all([loadFulfilment(),loadSummary()]);\n      if(selectedMemberLookup) await loadMemberProfile(selectedMemberLookup);\n      window.setTimeout(function(){ $(\"addressRecoveryDialog\")?.close(); },700);\n    } finally { setLoading(button,false); }\n  }\n\n  async function hydrateAddresses(button) {\n    const key = monthKeyValue();\n    const selected = selectedPackIds();\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/fulfilment/hydrate-addresses\", {\n        method: \"POST\",\n        body: JSON.stringify({ packIds: selected })\n      });\n      const msg = \"Address refresh checked \" + (result.checkedCount || 0) + \", updated \" + (result.updatedCount || 0) + \", still missing \" + (result.stillMissingCount || 0) + \".\";\n      const localResult = $(\"shippingDispatchResult\");\n      if (localResult) { localResult.hidden = false; localResult.textContent = msg; localResult.classList.toggle(\"error\", Boolean(result.stillMissingCount)); }\n      setOrdersResult(msg, Boolean(result.stillMissingCount));\n      setNotice(msg, Boolean(result.stillMissingCount));\n      await loadFulfilment();\n    } catch (err) {\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n\n  async function deleteSpecialShipment(shipmentId, button) {\n    if (!shipmentId) return;\n    const confirmation = window.prompt(\"Delete special shipment \" + shipmentId + \" permanently from fulfilment? Type DELETE to confirm.\", \"\");\n    if (confirmation === null) return;\n    if (String(confirmation).trim() !== \"DELETE\") { setNotice(\"Delete cancelled. You must type DELETE exactly.\", true); return; }\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/shipping/special-shipments/\" + encodeURIComponent(shipmentId) + \"/delete\", { method:\"POST\", body:JSON.stringify({confirmation:\"DELETE\",reason:\"Deleted from fulfilment by admin\"}) });\n      setNotice(result.message || \"Special shipment deleted.\");\n      await Promise.all([reloadSpecialShipments(), loadFulfilment(), loadSummary()]);\n    } finally { setLoading(button, false); }\n  }\n  async function deletePackRow(packId, button) {\n    if (!packId) return;\n    const confirmation = window.prompt(\"Delete monthly pack row \" + packId + \"? This removes it from active Orders. Type DELETE to confirm.\", \"\");\n    if (confirmation === null) return;\n    if (String(confirmation).trim() !== \"DELETE\") {\n      const localResult = $(\"shippingDispatchResult\");\n      if (localResult) { localResult.hidden = false; localResult.textContent = \"Delete cancelled. You must type DELETE exactly.\"; localResult.classList.add(\"error\"); }\n      setOrdersResult(\"Delete cancelled. You must type DELETE exactly.\", true);\n      return;\n    }\n    const localResult = $(\"shippingDispatchResult\");\n    setLoading(button, true);\n    if (button) button.textContent = \"Deleting...\";\n    if (localResult) { localResult.hidden = false; localResult.textContent = \"Removing row from active Orders...\"; localResult.classList.remove(\"error\"); }\n    setOrdersResult(\"Removing row from active Orders...\", false);\n    try {\n      const result = await api(\"/api/admin/fulfilment/pack/\" + encodeURIComponent(packId) + \"/delete\", { method: \"POST\", body: JSON.stringify({ reason: \"Removed from active Orders by admin\", confirmation: \"DELETE\" }) });\n      if (localResult) { localResult.hidden = false; localResult.textContent = result.message || \"Row removed from active Orders.\"; localResult.classList.remove(\"error\"); }\n      setOrdersResult(result.message || \"Row removed from active Orders.\", false);\n      await Promise.all([loadFulfilment(), loadSummary()]);\n    } catch (err) {\n      if (localResult) { localResult.hidden = false; localResult.textContent = err.message || \"Could not delete row.\"; localResult.classList.add(\"error\"); }\n      setOrdersResult(err.message || \"Could not delete row.\", true);\n      setNotice(err.message || \"Could not delete row.\", true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  function selectedPackIds() {\n    return Array.from(document.querySelectorAll(\".orbit-pack-select:checked\")).map(input => input.dataset.packSelect).filter(Boolean);\n  }\n\n  function selectedPackStage(packId) {\n    const input = Array.from(document.querySelectorAll(\".orbit-pack-select\")).find(box => String(box.dataset.packSelect || \"\") === String(packId || \"\"));\n    return String(input?.dataset.packStage || \"\").toLowerCase();\n  }\n\n  function syncMonthlyBatchButtons() {\n    const selected = selectedPackIds();\n    const selectedReady = selected.filter(id => selectedPackStage(id) === \"ready\");\n    const selectedPacked = selected.filter(id => selectedPackStage(id) === \"packed\");\n    const dispatch = $(\"markBatchDispatchedButton\");\n    if (dispatch) dispatch.disabled = selectedPacked.length === 0;\n    const preview = $(\"previewLabelCostButton\");\n    if (preview) preview.disabled = selectedReady.length === 0;\n    const labels = $(\"downloadLabelsButton\");\n    if (labels) labels.disabled = !(selectedPacked.length || (state.fulfilment?.packs || []).some(pack => fulfilmentStage(pack) === \"packed\"));\n  }\n\n  function packLabelHref(pack) {\n    return pack && pack.labelUrl ? String(pack.labelUrl) : \"\";\n  }\n\n  async function quickPackAction(kind, packId, button) {\n    if (!packId) return;\n    const originalText = button ? button.textContent : \"\";\n    const localResult = $(\"shippingDispatchResult\");\n    setLoading(button, true);\n    if (button) {\n      if (kind === \"generate\") button.textContent = \"Generating label...\";\n      if (kind === \"shipped\") button.textContent = \"Marking dispatched...\";\n      if (kind === \"fulfilled\") button.textContent = \"Marking delivered...\";\n      if (kind === \"packed\") button.textContent = \"Marking packed...\";\n    }\n    if (localResult) {\n      localResult.hidden = false;\n      localResult.classList.remove(\"error\");\n      localResult.textContent = \"Working on selected pack \" + packId + \"...\";\n    }\n    try {\n      if (kind === \"generate\") {\n        const result = await api(\"/api/admin/fulfilment/generate-monthly-dispatch\", { method: \"POST\", body: JSON.stringify({ emailPrintPack: false, packIds: [packId] }) });\n        const testGenerated = (result.generated || []).filter(row => row.testLabelMode || String(row.trackingNumber || \"\").includes(\"ORBIT-TEST\")).length;\n        const msg = \"Generated \" + (result.generatedCount || 0) + \" label(s) for selected pack.\" + (testGenerated ? \" TEST MODE: fake label generated, \u00A30 spent.\" : \"\");\n        if (localResult) { localResult.hidden = false; localResult.textContent = msg; localResult.classList.toggle(\"error\", Boolean(result.skippedCount && !result.generatedCount)); }\n        setOrdersResult(msg, Boolean(result.skippedCount && !result.generatedCount));\n      } else if (kind === \"shipped\") {\n        const result = await api(\"/api/admin/fulfilment/mark-batch-dispatched\", { method: \"POST\", body: JSON.stringify({ packIds: [packId] }) });\n        const failures = (result.emailFailures || []).length;\n        const missing = (result.missingEmail || []).length;\n        let msg = \"Dispatched \" + (result.dispatchedCount || 0) + \" parcel(s) from 1 selected. \" + (result.emailedCount || 0) + \" tracking email(s) sent.\";\n        if (failures || missing) msg += \" \" + failures + \" email failed, \" + missing + \" missing email. Check the row note.\";\n        if (localResult) { localResult.hidden = false; localResult.textContent = msg; localResult.classList.toggle(\"error\", Boolean(failures || missing)); }\n        setOrdersResult(msg, Boolean(failures || missing));\n        setNotice((failures||missing ? \"Dispatch saved, but customer email needs attention. \" : \"\u2713 Parcel dispatched successfully. \") + msg, Boolean(failures||missing));\n        const dispatchedRow=button?.closest(\"tr\");\n        if(dispatchedRow){\n          dispatchedRow.dataset.fulfilmentStage=\"dispatched\";\n          dispatchedRow.classList.add(\"orbit-row-dispatch-complete\");\n          dispatchedRow.querySelectorAll(\"button,input\").forEach(el=>el.disabled=true);\n          if(button)button.textContent=\"Dispatched \u2713\";\n          window.setTimeout(()=>dispatchedRow.remove(),220);\n        }\n      } else if (kind === \"fulfilled\") {\n        const result = await api(\"/api/admin/fulfilment/mark-batch-delivered\", { method: \"POST\", body: JSON.stringify({ packIds: [packId] }) });\n        const msg = \"Delivered \" + (result.deliveredCount || 0) + \" parcel(s) from 1 selected. Moved to Fulfilment History.\";\n        if (localResult) { localResult.hidden = false; localResult.textContent = msg; localResult.classList.remove(\"error\"); }\n        setOrdersResult(msg, false);\n      } else if (kind === \"packed\") {\n        await api(\"/api/admin/monthly-packs/\" + encodeURIComponent(packId) + \"/status\", { method: \"POST\", body: JSON.stringify({ status: \"packed\", fulfilmentStatus: \"packed\", notes: \"Packed by Orbit admin.\" }) });\n        if (localResult) { localResult.hidden = false; localResult.textContent = \"Selected pack marked packed.\"; localResult.classList.remove(\"error\"); }\n        setOrdersResult(\"Selected pack marked packed.\", false);\n      }\n      await Promise.all([loadFulfilment(), loadSummary()]);\n    } catch (err) {\n      if (localResult) { localResult.hidden = false; localResult.textContent = err.message || \"Pack action failed.\"; localResult.classList.add(\"error\"); }\n      setOrdersResult(err.message || \"Pack action failed.\", true);\n      setNotice(err.message || \"Pack action failed.\", true);\n    } finally {\n      setLoading(button, false);\n      if (button) button.textContent = originalText;\n    }\n  }\n\n  function downloadPackingList() {\n    const selected = selectedPackIds();\n    setNotice(\"Opening packing list\" + (selected.length ? \" for \" + selected.length + \" selected parcel(s).\" : \" for the full outstanding queue.\"));\n    const url = API_BASE + \"/api/admin/fulfilment/packing-list.pdf?secret=\" + encodeURIComponent(secret) + adminSessionQueryV329() + (selected.length ? \"&packIds=\" + encodeURIComponent(selected.join(\",\")) : \"\");\n    window.open(url, \"_blank\");\n  }\n\n  function downloadLabelsPdf() {\n    const selected = selectedPackIds().filter(id => selectedPackStage(id) === \"packed\");\n    setNotice(\"Opening generated labels\" + (selected.length ? \" for \" + selected.length + \" selected packed parcel(s).\" : \" for all outstanding labelled parcels.\"));\n    const url = API_BASE + \"/api/admin/fulfilment/labels.pdf?secret=\" + encodeURIComponent(secret) + adminSessionQueryV329() + (selected.length ? \"&packIds=\" + encodeURIComponent(selected.join(\",\")) : \"\");\n    window.open(url, \"_blank\");\n  }\n\n  // V733: the month selector is derived ONLY from historical monthly pack rows.\n  // Special prize and loyalty shipments never get attributed to a paid month.\n  function fulfilmentHistoryMonthOptions(monthlyPacks) {\n    return [...new Set((monthlyPacks || []).map(pack => String(pack.monthKey || pack.month_key || \"\").trim()).filter(month => /^\\d{4}-(0[1-9]|1[0-2])$/.test(month)))].sort().reverse();\n  }\n\n  function syncFulfilmentHistoryMonths(monthlyPacks) {\n    const select = $(\"fulfilmentHistoryMonth\");\n    if (!select) return;\n    const previous = select.value || \"all\";\n    const months = fulfilmentHistoryMonthOptions(monthlyPacks);\n    const optionLabel = month => {\n      const [year, number] = month.split(\"-\").map(Number);\n      return new Intl.DateTimeFormat(\"en-GB\", {month:\"long\", year:\"numeric\", timeZone:\"UTC\"}).format(new Date(Date.UTC(year,number-1,1)));\n    };\n    select.innerHTML = \"<option value='all'>All months and shipments</option>\" + months.map(month => \"<option value='\" + month + \"'>\" + optionLabel(month) + \"</option>\").join(\"\") + \"<option value='special'>Prizes and loyalty shipments</option>\";\n    select.value = previous === \"special\" || months.includes(previous) ? previous : \"all\";\n  }\n\n  function filteredFulfilmentHistory(monthlyPacks, specialShipments) {\n    const monthFilter = String($(\"fulfilmentHistoryMonth\")?.value || \"all\");\n    const q = String($(\"fulfilmentHistorySearch\")?.value || \"\").trim().toLowerCase();\n    const statusFilter = String($(\"fulfilmentHistoryStatus\")?.value || \"all\").toLowerCase();\n    const monthly = (monthlyPacks || []).map(pack => ({ ...pack, shipmentKind: \"Monthly Parcel\", completedStatus: String(pack.fulfilmentStatus || pack.fulfilment_status || pack.status || \"\").toLowerCase() }));\n    const special = (specialShipments || []).filter(item => [\"dispatched\",\"shipped\",\"delivered\",\"fulfilled\",\"completed\"].includes(String(item.status || \"\").toLowerCase())).map(item => ({ ...item, shipmentKind: item.type || \"Special Shipment\", completedStatus: String(item.status || \"\").toLowerCase(), memberNumber: item.memberNumber, memberName: item.memberName, email: item.email, trackingNumber: item.trackingNumber, trackingUrl: item.trackingUrl, labelUrl: item.labelUrl, dispatchedAt: item.dispatchedAt || item.updatedAt, delivery: item.delivery || {}, packId: item.shipmentId, monthKey: item.source === \"loyalty_store\" ? \"Loyalty Order\" : \"Prize\" }));\n    return monthly.concat(special).filter(item => {\n      const s = item.completedStatus;\n      if (monthFilter !== \"all\") {\n        if (monthFilter === \"special\") {\n          if (item.shipmentKind === \"Monthly Parcel\") return false;\n        } else if (item.shipmentKind !== \"Monthly Parcel\" || String(item.monthKey || item.month_key || \"\").trim() !== monthFilter) return false;\n      }\n      if (![\"dispatched\",\"shipped\",\"delivered\",\"fulfilled\",\"completed\",\"replaced\",\"superseded\"].includes(s)) return false;\n      if (statusFilter !== \"all\") {\n        if (statusFilter === \"shipped\" && ![\"dispatched\",\"shipped\",\"fulfilled\",\"completed\",\"replaced\",\"superseded\"].includes(s)) return false;\n        if (statusFilter === \"delivered\" && s !== \"delivered\") return false;\n      }\n      if (!q) return true;\n      return [item.shipmentKind,item.memberNumber,item.memberName,item.email,item.packId,item.trackingNumber,item.monthKey].join(\" \").toLowerCase().includes(q);\n    });\n  }\n\n  function specialShipmentStage(item) {\n    const status = String(item?.status || item?.fulfilmentStatus || item?.fulfilment_status || \"ready_for_label\").toLowerCase();\n    if ([\"fulfilled\",\"delivered\",\"dispatched\",\"shipped\",\"completed\"].includes(status)) return \"completed\";\n    if (item?.trackingNumber || item?.tracking_number || item?.labelUrl || item?.label_url || [\"labelled\",\"label_generated\",\"packed\",\"ready_for_dispatch\"].includes(status)) return \"packed\";\n    if ([\"blocked\",\"needs_attention\",\"needs_delivery_details\",\"invalid_address\",\"failed\"].includes(status)) return \"attention\";\n    return \"ready\";\n  }\n\n  function renderFulfilmentHistory(monthlyPacks, specialShipments) {\n    const target = $(\"fulfilmentHistoryTable\");\n    if (!target) return;\n    syncFulfilmentHistoryMonths(monthlyPacks);\n    const rows = filteredFulfilmentHistory(monthlyPacks, specialShipments).map(item => {\n      const delivery = item.delivery || {};\n      const address = [delivery.recipientName, delivery.addressLine1, delivery.city, delivery.postcode].filter(Boolean).join(\", \");\n      const status = [\"replaced\",\"superseded\"].includes(String(item.completedStatus || \"\").toLowerCase()) ? \"Replaced\" : (item.completedStatus === \"dispatched\" ? \"Dispatched\" : humanStatus(item.completedStatus || \"Completed\"));\n      return \"<tr>\" +\n        \"<td><strong>\" + esc(item.memberNumber || \"\u2014\") + \"</strong><br><span class='orbit-muted'>\" + esc(item.memberName || item.email || \"\") + \"</span></td>\" +\n        \"<td><strong>\" + esc(item.shipmentKind || \"Shipment\") + \"</strong><br><span class='orbit-muted'>\" + esc(item.monthKey || item.packId || \"\") + \"</span></td>\" +\n        \"<td><span class='orbit-pill good'>\" + esc(status) + \"</span><br><span class='orbit-muted'>\" + esc(item.dispatchedAt || item.updatedAt || \"\") + \"</span></td>\" +\n        \"<td>\" + (item.trackingNumber ? \"<a href='\" + esc(item.trackingUrl || (\"https://www.royalmail.com/track-your-item#/tracking-results/\" + encodeURIComponent(item.trackingNumber))) + \"' target='_blank' rel='noopener'>\" + esc(item.trackingNumber) + \"</a>\" : \"No tracking saved\") + \"</td>\" +\n        \"<td>\" + esc(address || \"Address not saved\") + \"</td>\" +\n        \"<td>\" + (item.labelUrl ? \"<a class='orbit-mini-link' href='\" + esc(item.labelUrl) + \"' target='_blank' rel='noopener'>View Label</a>\" : \"\u2014\") + (item.shipmentKind === \"Monthly Parcel\" && ![\"replaced\",\"superseded\"].includes(String(item.completedStatus || \"\").toLowerCase()) ? \"<br><button type='button' class='secondary' data-pack-reissue='\" + esc(item.packId || \"\") + \"'>Reissue Parcel</button>\" : \"\") + \"</td>\" +\n      \"</tr>\";\n    });\n    target.innerHTML = table([\"Member\", \"Shipment\", \"Status\", \"Tracking\", \"Delivery\", \"Label\"], rows, \"No completed shipments found.\");\n  }\n\n  function fulfilmentStage(pack) {\n    const status = String(pack.fulfilmentStatus || pack.fulfilment_status || pack.status || \"\").toLowerCase();\n    const label = String(pack.labelStatus || pack.label_status || \"\").toLowerCase();\n    const delivery = pack.delivery || {};\n    const complete = Boolean(delivery.recipientName && delivery.addressLine1 && delivery.city && delivery.postcode);\n    if (!complete || pack.labelError || pack.label_error || [\"label_error\",\"not_generated\"].includes(label)) return \"attention\";\n    if ([\"dispatched\",\"shipped\",\"delivered\",\"fulfilled\",\"completed\"].includes(status)) return \"completed\";\n    if (label === \"generated\" || pack.labelUrl || pack.trackingNumber || status === \"packed\") return \"packed\";\n    return \"ready\";\n  }\n\n  function fulfilmentAddress(pack) {\n    const d = pack.delivery || {};\n    return [d.recipientName,d.addressLine1,d.addressLine2,d.city,d.county,d.postcode].filter(Boolean).join(\", \");\n  }\n\n  function fulfilmentIssue(pack) {\n    const d = pack.delivery || {};\n    return pack.labelError || pack.label_error || (!d.postcode ? \"Postcode is missing\" : (!d.addressLine1 ? \"Address line is missing\" : (!d.recipientName ? \"Recipient name is missing\" : \"Delivery address could not be validated\")));\n  }\n\n  function fulfilmentStage(pack) {\n    const raw = String(pack.fulfilmentStatus || pack.fulfilment_status || pack.status || \"\").toLowerCase();\n    const d = pack.delivery || {};\n    const complete = Boolean(d.recipientName && d.addressLine1 && d.city && d.postcode);\n    const blocked = !complete || /attention|invalid|failed|error|needs_delivery/.test(raw) || Boolean(pack.labelError || pack.label_error);\n    if (blocked) return \"attention\";\n    // Completed state outranks the existence of a label/tracking number. A\n    // dispatched parcel still has both, but must never remain in Monthly Parcels.\n    if (/dispatched|shipped|delivered|fulfilled|completed|replaced|superseded/.test(raw)) return \"completed\";\n    if (pack.trackingNumber || pack.labelUrl || /label_generated|packed|awaiting_dispatch/.test(raw)) return \"packed\";\n    return \"ready\";\n  }\n\n  function fulfilmentMonthCellV618(pack){\n    const journey=pack.parcelJourney,number=journey?.monthNumber;\n    if(!journey?.available||!Number.isInteger(number)||number<1)return \"<td><span title='Parcel history unavailable'>\u2014</span></td>\";\n    return \"<td class='orbit-parcel-month-v618'><strong>\"+number+\"</strong>\"+(journey.firstParcel?\"<span class='orbit-first-parcel-v618' title='First parcel: include membership card and lanyard'><span aria-hidden='true'>\u2605</span><span class='orbit-sr-only'>First parcel: include membership card and lanyard</span></span>\":\"\")+\"</td>\";\n  }\n  function fulfilmentQueueBadgeV667(pack){\n    const key=String(pack?.queueClass||\"current_cycle\");\n    const map={\n      current_cycle:[\"Current cycle\",\"good\"],\n      older_outstanding:[\"Older outstanding\",\"warning\"],\n      reissue_replacement:[\"Reissue / replacement\",\"\"],\n      needs_review:[\"Needs review\",\"bad\"]\n    };\n    const pair=map[key]||[\"Outstanding\",\"\"];\n    return \"<span class='orbit-pill \"+pair[1]+\"' title='\"+esc(pack?.queueReason||\"\")+\"'>\"+esc(pair[0])+\"</span>\";\n  }\n  function renderFulfilmentTable(packs) {\n    const monthly = $(\"fulfilmentTable\");\n    const attention = $(\"fulfilmentAttentionTable\");\n    if (!monthly || !attention) return;\n    const blocked = (packs || []).filter(pack => fulfilmentStage(pack) === \"attention\");\n    const actionable = (packs || []).filter(pack => [\"ready\",\"packed\"].includes(fulfilmentStage(pack)));\n\n    const blockedRows = blocked.map(function(pack){\n      const lookup = pack.memberNumber || pack.email || \"\";\n      return \"<tr><td><strong>\"+esc(pack.memberName||pack.memberNumber||pack.email||\"Member\")+\"</strong><br><span class='orbit-muted'>\"+esc(pack.memberNumber||pack.packId||\"\")+\"</span></td>\"+\n        fulfilmentMonthCellV618(pack)+\"<td><strong>Monthly \"+esc(pack.monthKey||\"parcel\")+\"</strong><br><span class='orbit-muted'>\"+esc(fulfilmentIssue(pack))+\"</span></td>\"+\n        \"<td>\"+esc(fulfilmentAddress(pack)||\"Address incomplete\")+\"</td>\"+\n        \"<td><span class='orbit-pill bad'>Blocked</span></td>\"+\n        \"<td><div class='orbit-row-actions'><button type='button' data-address-action='recharge' data-address-lookup='\"+esc(lookup)+\"' data-address-pack='\"+esc(pack.packId||\"\")+\"'>Sync Recharge</button><button type='button' class='secondary' data-address-action='shopify' data-address-lookup='\"+esc(lookup)+\"' data-address-pack='\"+esc(pack.packId||\"\")+\"'>Sync Shopify</button><button type='button' class='secondary' data-address-action='edit' data-address-lookup='\"+esc(lookup)+\"' data-address-pack='\"+esc(pack.packId||\"\")+\"'>Edit Address</button><button type='button' class='secondary' data-address-action='all' data-address-lookup='\"+esc(lookup)+\"' data-address-pack='\"+esc(pack.packId||\"\")+\"'>Validate Again</button><button type='button' class='secondary' data-member-lookup='\"+esc(lookup)+\"' data-member-pane-target='profile'>Open Member</button><button type='button' class='danger' data-pack-delete='\"+esc(pack.packId||\"\")+\"'>Delete Parcel</button></div></td></tr>\";\n    });\n    attention.innerHTML = table([\"Customer\",\"Month\",\"Shipment\",\"Current address\",\"Status\",\"Actions\"], blockedRows, \"No blocked shipments. Everything is ready to progress.\");\n    setCountBadge(\"shippingAttentionCount\", blocked.length);\n    text(\"metricFulfilmentAttention\", blocked.length);\n\n    const rows = actionable.map(function(pack){\n      const stage = fulfilmentStage(pack);\n      const canSelect = stage === \"ready\" || stage === \"packed\";\n      const action = stage === \"ready\"\n        ? \"<button type='button' data-pack-label='generate' data-pack-id='\"+esc(pack.packId||\"\")+\"'>Generate Label</button>\"\n        : \"<a class='orbit-button secondary' target='_blank' rel='noopener' href='\"+esc(pack.labelUrl||pack.labelDownloadUrl||\"#\")+\"'>Open Label</a><button type='button' data-pack-dispatch='\"+esc(pack.packId||\"\")+\"'>Mark Dispatched</button>\";\n      const prepState=String(pack.preparationEmailStatus||\"\").toLowerCase();\n      const prepLabel=stage===\"packed\"?(prepState===\"sent\"?\" \u00B7 Preparation email sent\":(prepState===\"failed\"||prepState===\"missing_email\"?\" \u00B7 Preparation email needs attention\":(prepState===\"skipped_test_mode\"?\" \u00B7 Test mode: no customer email\":\"\"))):\"\";\n      return \"<tr data-fulfilment-stage='\"+stage+\"'><td>\"+(canSelect?\"<input type='checkbox' class='orbit-pack-select' data-pack-stage='\"+esc(stage)+\"' data-pack-select='\"+esc(pack.packId||\"\")+\"'>\":\"\")+\"</td><td><strong>\"+esc(pack.memberName||pack.memberNumber||pack.email||\"Member\")+\"</strong><br><span class='orbit-muted'>\"+esc(pack.memberNumber||pack.packId||\"\")+\"</span></td>\"+fulfilmentMonthCellV618(pack)+\"<td><strong>Monthly \"+esc(pack.monthKey||\"parcel\")+\"</strong><br><span class='orbit-muted'>\"+(stage===\"ready\"?\"Ready for label\":(\"Packed \u2014 awaiting dispatch\"+(pack.labelCost!=null?\" \u00B7 Actual postage \"+money(pack.labelCost):\"\")+prepLabel))+\"</span><br>\"+fulfilmentQueueBadgeV667(pack)+(pack.queueReason?\"<br><small class='orbit-muted'>\"+esc(pack.queueReason)+\"</small>\":\"\")+\"</td><td>\"+(stage===\"ready\"?\"<span class='orbit-pill warning'>Ready for label</span>\":\"<span class='orbit-pill good'>Packed</span>\")+\"</td><td>\"+esc(fulfilmentAddress(pack)||\"\u2014\")+\"</td><td>\"+(pack.trackingNumber?\"<a href='\"+esc(pack.trackingUrl||(\"https://www.royalmail.com/track-your-item#/tracking-results/\"+encodeURIComponent(pack.trackingNumber)))+\"' target='_blank' rel='noopener'>\"+esc(pack.trackingNumber)+\"</a>\":\"\u2014\")+\"</td><td><div class='orbit-row-actions'>\"+action+(pack.replacementOfPackId?\"<button type='button' class='secondary' data-pack-undo-reissue='\"+esc(pack.packId||\"\")+\"'>Undo Reissue</button>\":\"<button type='button' class='secondary' data-pack-reissue='\"+esc(pack.packId||\"\")+\"'>Reissue Parcel</button>\")+\"<button type='button' class='danger' data-pack-delete='\"+esc(pack.packId||\"\")+\"'>\"+(pack.replacementOfPackId?\"Cancel Replacement\":\"Delete Parcel\")+\"</button></div></td></tr>\";\n    });\n    monthly.innerHTML = table([\"Select\",\"Customer\",\"Month\",\"Shipment\",\"Status\",\"Delivery\",\"Tracking\",\"Action\"], rows, \"No monthly parcels are ready or awaiting dispatch.\");\n    setCountBadge(\"shippingMonthlyCount\", actionable.length);\n    const generate=$(\"generateMonthlyDispatchButton\");\n    if(generate) generate.disabled=true;\n    syncMonthlyBatchButtons();\n  }\n\n  function renderFulfilmentLabelsV516(monthlyPacks, historyPacks, specialShipments) {\n    const target = $(\"fulfilmentLabelsTable\");\n    if (!target) return;\n    const rows = [];\n    const seen = new Set();\n    const add = (item, kind) => {\n      const labelUrl = String(item?.labelUrl || item?.label_url || item?.labelDownloadUrl || item?.label_download_url || \"\").trim();\n      if (!labelUrl) return;\n      const tracking = String(item?.trackingNumber || item?.tracking_number || \"\").trim();\n      const parcelId = String(item?.packId || item?.shipmentId || item?.id || item?._id || \"\").trim();\n      const key = labelUrl || tracking || parcelId;\n      if (!key || seen.has(key)) return;\n      seen.add(key);\n      const customer = item?.memberName || item?.member_name || item?.memberNumber || item?.member_number || item?.memberEmail || item?.member_email || item?.email || \"Member\";\n      const memberNumber = item?.memberNumber || item?.member_number || \"\";\n      const title = item?.title || item?.prizeName || item?.prize_name || (kind === \"Monthly\" ? (\"Monthly \" + (item?.monthKey || item?.month_key || \"parcel\")) : kind);\n      const generated = item?.labelGeneratedAt || item?.label_generated_at || item?.labelCreatedAt || item?.label_created_at || item?.updatedAt || item?.updated_at || \"\";\n      rows.push({kind, customer, memberNumber, title, parcelId, tracking, labelUrl, generated});\n    };\n    [...(monthlyPacks || []), ...(historyPacks || [])].forEach(item => add(item, \"Monthly\"));\n    (specialShipments || []).forEach(item => {\n      const text = [item?.type,item?.source,item?.sourceType,item?.source_type,item?.title].filter(Boolean).join(\" \");\n      add(item, /loyalty|reward|points/i.test(text) ? \"Loyalty\" : /member_store|members_combined_basket|members store|members basket/i.test(text) ? \"Shop\" : \"Prize\");\n    });\n    rows.sort((a,b) => Date.parse(b.generated || 0) - Date.parse(a.generated || 0));\n    const html = rows.map(row => \"<tr><td><span class='orbit-pill'>\"+esc(row.kind)+\"</span></td><td><strong>\"+esc(row.customer)+\"</strong>\"+(row.memberNumber?\"<br><span class='orbit-muted'>\"+esc(row.memberNumber)+\"</span>\":\"\")+\"</td><td><strong>\"+esc(row.title)+\"</strong>\"+(row.parcelId?\"<br><span class='orbit-muted'>\"+esc(row.parcelId)+\"</span>\":\"\")+\"</td><td>\"+(row.tracking?esc(row.tracking):\"\u2014\")+\"</td><td>\"+(row.generated?esc(prettyDate(row.generated)):\"\u2014\")+\"</td><td><a class='orbit-button secondary' target='_blank' rel='noopener' href='\"+esc(row.labelUrl)+\"'>Open Label</a></td></tr>\");\n    target.innerHTML = table([\"Type\",\"Customer\",\"Parcel\",\"Tracking\",\"Generated\",\"Label\"], html, \"No generated labels are currently recorded.\");\n    setCountBadge(\"shippingLabelsCount\", rows.length);\n  }\n\n  function renderSpecialShipments(shipments) {\n    const shipmentText = item => String(item.type||\"\")+\" \"+String(item.source||item.sourceType||item.source_type||\"\")+\" \"+String(item.title||\"\");\n    const isLoyalty = item => /loyalty|reward|points/i.test(shipmentText(item));\n    const isShop = item => /member_store|members_combined_basket|members store|members basket/i.test(shipmentText(item));\n    const renderInto = (targetId, items, empty) => {\n      const target = $(targetId); if (!target) return;\n      const groups = { attention:[], ready:[], packed:[] };\n      items.filter(item => specialShipmentStage(item) !== \"completed\").forEach(item => groups[specialShipmentStage(item)].push(item));\n      const row = (item, stage) => {\n        const address=[item.delivery?.recipientName,item.delivery?.addressLine1,item.delivery?.addressLine2,item.delivery?.city,item.delivery?.county,item.delivery?.postcode].filter(Boolean).join(\", \");\n        const action = stage === \"attention\" ? \"<button type='button' data-member-lookup='\"+esc(item.memberNumber||item.email||\"\")+\"'>Fix Address</button>\" : stage === \"ready\" ? \"<button type='button' data-special-label='\"+esc(item.shipmentId||\"\")+\"'>Generate Label</button>\" : \"<a class='orbit-mini-link' target='_blank' rel='noopener' href='\"+esc(item.labelUrl||\"#\")+\"'>Open Label</a><button type='button' data-special-dispatch='\"+esc(item.shipmentId||\"\")+\"'>Mark Dispatched</button>\";\n        const pill = stage === \"attention\" ? \"<span class='orbit-pill bad'>Needs attention</span>\" : stage === \"ready\" ? \"<span class='orbit-pill warning'>Ready for label</span>\" : \"<span class='orbit-pill good'>Packed</span>\";\n        const deleteAction=item.source===\"monthly_draw\"?\"\":\"<button type='button' class='danger' data-special-delete='\"+esc(item.shipmentId||\"\")+\"'>Delete Parcel</button>\";\n        return \"<tr><td><input type='checkbox' data-special-shipment-select value='\"+esc(item.shipmentId||\"\")+\"'></td><td><strong>\"+esc(item.type||\"Shipment\")+\"</strong><br><span class='orbit-muted'>\"+esc(item.shipmentId||\"\")+\"</span></td><td>\"+esc(item.title||\"\u2014\")+(Array.isArray(item.contents)&&item.contents.length?\"<br><small>\"+esc(item.contents.map(c=>(c.quantity||1)+\" \u00D7 \"+(c.name||\"Item\")).join(\", \"))+\"</small>\":\"\")+\"</td><td>\"+esc(item.memberNumber||\"\u2014\")+\"<br><span class='orbit-muted'>\"+esc(item.memberName||item.email||\"\")+\"</span></td><td>\"+(item.deliveryComplete?esc(address):\"<span class='orbit-pill bad'>Address required</span>\")+\"</td><td>\"+pill+(item.trackingNumber?\"<br><a class='orbit-mini-link' target='_blank' rel='noopener' href='\"+esc(item.trackingUrl||(\"https://www.royalmail.com/track-your-item#/tracking-results/\"+encodeURIComponent(item.trackingNumber)))+\"'>\"+esc(item.trackingNumber)+\"</a>\":\"\")+\"</td><td><div class='orbit-row-actions'>\"+action+deleteAction+\"</div></td></tr>\";\n      };\n      const section=(title,copy,key)=>groups[key].length?\"<div class='orbit-fulfilment-group'><div class='orbit-fulfilment-group-head'><h3>\"+title+\" <span>\"+groups[key].length+\"</span></h3><p>\"+copy+\"</p></div>\"+table([\"Select\",\"Type\",\"Contents\",\"Customer\",\"Delivery\",\"Status\",\"Next action\"],groups[key].map(i=>row(i,key)),empty)+\"</div>\":\"\";\n      target.innerHTML=section(\"Needs attention\",\"Fix the blocker before postage.\",\"attention\")+section(\"Ready for label\",\"Generate postage for these shipments.\",\"ready\")+section(\"Packed \u2014 awaiting dispatch\",\"Labels exist. Dispatch when parcels leave Orbit.\",\"packed\") || \"<div class='orbit-empty'><strong>\"+esc(empty)+\"</strong></div>\";\n    };\n    const loyalty=(shipments||[]).filter(isLoyalty), shop=(shipments||[]).filter(item=>!isLoyalty(item)&&isShop(item)), prizes=(shipments||[]).filter(item=>!isLoyalty(item)&&!isShop(item));\n    renderInto(\"loyaltyShipmentsTable\",loyalty,\"No loyalty orders are waiting.\");\n    renderInto(\"shopShipmentsTable\",shop,\"No Members Shop orders are waiting.\");\n    renderInto(\"specialShipmentsTable\",prizes,\"No prize shipments are waiting.\");\n    setCountBadge(\"shippingLoyaltyCount\",loyalty.filter(i=>specialShipmentStage(i)!==\"completed\").length);\n    setCountBadge(\"shippingShopCount\",shop.filter(i=>specialShipmentStage(i)!==\"completed\").length);\n    setCountBadge(\"shippingPrizeCount\",prizes.filter(i=>specialShipmentStage(i)!==\"completed\").length);\n  }\n\n  function selectedSpecialShipmentIds(pane=state.currentShippingPane){\n    const root=document.querySelector('[data-shipping-pane=\"'+String(pane||'prizes').replace(/\"/g,'')+'\"]')||document;\n    return Array.from(root.querySelectorAll(\"[data-special-shipment-select]:checked\")).map(box=>String(box.value||\"\").trim()).filter(Boolean);\n  }\n\n  async function previewSpecialShippingCost(button, pane=state.currentShippingPane) {\n    const shipmentIds = selectedSpecialShipmentIds(pane);\n    if (!shipmentIds.length) throw new Error(\"Select at least one special shipment first.\");\n    setLoading(button, true);\n    try {\n      const estimate = await api(\"/api/admin/shipping/special-shipments/estimate\", { method:\"POST\", body:JSON.stringify({ shipmentIds }) });\n      const target = $(pane===\"shop\"?\"shopShippingCostPreview\":\"specialShippingCostPreview\");\n      if (target) {\n        target.hidden = false;\n        target.textContent = estimate.testLabelMode ? (estimate.count + \" test label(s) \u00B7 \u00A30.00 total\") : (estimate.success ? (estimate.count + \" label(s) \u00B7 \" + money(estimate.perLabel) + \" each \u00B7 \" + money(estimate.total) + \" total\") : (estimate.error || \"No live rate returned.\"));\n        target.classList.toggle(\"error\", !estimate.success);\n      }\n      const generate=$(pane===\"shop\"?\"generateShopLabelsButton\":\"generateSpecialLabelsButton\");if(generate)generate.disabled=!estimate.success;\n      return estimate;\n    } finally { setLoading(button, false); }\n  }\n\n  async function generateSpecialLabels(button, ids, pane=state.currentShippingPane) {\n    const shipmentIds = ids || selectedSpecialShipmentIds(pane);\n    if (!shipmentIds.length) throw new Error(\"Select at least one special shipment first.\");\n    const estimate = await api(\"/api/admin/shipping/special-shipments/estimate\", { method:\"POST\", body:JSON.stringify({ shipmentIds }) });\n    const totalText = estimate.testLabelMode ? \"\u00A30.00\" : (estimate.total == null ? \"an unavailable live estimate\" : money(estimate.total));\n    if (!confirm(\"You are about to generate \" + shipmentIds.length + \" special-shipment label(s) for \" + totalText + \". Continue?\")) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/shipping/special-shipments/labels\", { method:\"POST\", body:JSON.stringify({ shipmentIds, confirmPurchase:true }) });\n      const target = $(pane===\"shop\"?\"shopShippingResult\":\"specialShippingResult\");\n      if (target) { target.hidden = false; target.textContent = \"Generated \" + Number(result.generatedCount || 0) + \" label(s). \" + Number(result.skippedCount || 0) + \" skipped.\"; }\n      await reloadSpecialShipments();\n    } finally { setLoading(button, false); }\n  }\n\n  async function dispatchSpecialShipments(button, ids, pane=state.currentShippingPane) {\n    const shipmentIds = ids || selectedSpecialShipmentIds(pane);\n    if (!shipmentIds.length) throw new Error(\"Select at least one special shipment first.\");\n    if (!confirm(\"Mark \" + shipmentIds.length + \" special shipment(s) as dispatched?\")) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/shipping/special-shipments/dispatch\", { method:\"POST\", body:JSON.stringify({ shipmentIds }) });\n      const target = $(pane===\"shop\"?\"shopShippingResult\":\"specialShippingResult\");\n      if (target) { target.hidden = false; target.textContent = \"Marked \" + Number(result.dispatchedCount || 0) + \" special shipment(s) as dispatched.\"; }\n      await reloadSpecialShipments();\n    } finally { setLoading(button, false); }\n  }\n\n  async function combineSpecialShipments(button){\n    const shipmentIds=selectedSpecialShipmentIds(\"prizes\");\n    if(shipmentIds.length<2)throw new Error(\"Select at least two unlabelled special shipments for the same member.\");\n    if(!confirm(\"Combine \"+shipmentIds.length+\" selected shipments into one parcel? The original rows will be archived into the combined parcel.\"))return;\n    setLoading(button,true);\n    try{const result=await api(\"/api/admin/shipping/special-shipments/combine\",{method:\"POST\",body:JSON.stringify({shipmentIds})});await reloadSpecialShipments();setNotice(\"Combined \"+Number(result.combinedCount||shipmentIds.length)+\" shipments into one parcel.\");}\n    finally{setLoading(button,false);}\n  }\n\n  function renderDrawsTable(draws) {\n    const actualMonth = currentMonthKey();\n    const current = draws.find(function(d){ return String(d.monthKey||\"\") === actualMonth; }) || null;\n    const latest = draws[0] || null;\n    const display = current || latest;\n    renderDrawPoolCountV540();\n    text(\"drawCurrentMonth\", actualMonth);\n    text(\"drawCurrentPrize\", current?.prizeTitle || prizeTitleValue() || \"Monthly member prize\");\n    text(\"drawLatestWinner\", display?.winnerMemberNumber ? ((display.winnerName || display.winnerMemberNumber) + \" \u00B7 \" + display.winnerMemberNumber) : \"No winner selected\");\n    text(\"drawNotificationState\", display ? humanDrawStatus(display.notificationStatus || display.emailStatus || \"recorded\") : \"Not sent\");\n    text(\"drawDispatchState\", display ? humanDrawStatus(display.fulfilmentStatus || display.status || \"ready_for_label\") : \"No shipment\");\n    const rows = draws.map(draw => \"<tr>\" +\n      \"<td><strong>\" + esc(draw.monthKey || \"\u2014\") + \"</strong><br><small>\" + esc(draw.drawId || \"\") + \"</small></td>\" +\n      \"<td>\" + esc(draw.prizeTitle || \"\u2014\") + \"</td>\" +\n      \"<td>\" + esc(draw.winnerName || draw.winnerMemberNumber || \"\u2014\") + \"<br><small>\" + esc(draw.winnerMemberNumber || \"\") + \"</small></td>\" +\n      \"<td>\" + esc(humanDrawStatus(draw.notificationStatus || draw.emailStatus || \"Not recorded\")) + (draw.broadcastStatus && draw.emailStatus ? \"<br><small>Broadcast: \"+esc(humanDrawStatus(draw.broadcastStatus))+\" \u00B7 Email: \"+esc(humanDrawStatus(draw.emailStatus))+\"</small>\" : \"\") + \"</td>\" +\n      \"<td><span class='orbit-pill'>\" + esc(humanDrawStatus(draw.fulfilmentStatus || draw.status || \"ready_for_label\")) + \"</span>\" + (draw.trackingNumber ? \"<br><small>\"+esc(draw.trackingNumber)+\"</small>\" : \"\") + \"</td>\" +\n      \"<td>\" + (draw.fairness?.commitmentHash ? (\"<strong>Provably fair</strong><br><small>\"+esc(String(draw.fairness.commitmentHash).slice(0,12))+\"\u2026 \u00B7 round \"+esc(String(draw.fairness.beacon?.round||\"\"))+\"</small>\") : \"<small>Legacy / no proof</small>\") + \"</td>\" +\n      \"<td>\" + esc(prettyShortDate(draw.drawnAt || draw.createdAt)) + \"</td>\" +\n      \"<td><div class='orbit-row-actions'><button type='button' data-module-nav='shipping' data-shipping-tab='prizes'>Open Prize Fulfilment</button></div></td></tr>\");\n    const drawHistoryHtml = table([\"Month\",\"Prize\",\"Winner\",\"Notification\",\"Dispatch\",\"Fairness\",\"Drawn\",\"Actions\"], rows, \"No previous draws recorded yet.\");\n    const target=$(\"drawsTable\"); if(target) target.innerHTML = drawHistoryHtml;\n    const v77Target=$(\"drawHistoryTableV77\"); if(v77Target) v77Target.innerHTML = drawHistoryHtml;\n  }\n\n  function renderGoldenTable(tickets) {\n    const liveStatuses = [\"available\",\"active\",\"assigned\",\"claimed\",\"redeemed\",\"awaiting_fulfilment\"];\n    const historyStatuses = [\"fulfilled\",\"void\",\"expired\",\"cancelled\",\"disabled\"];\n    function row(ticket, history) {\n      const raw = String(ticket.status || \"available\").toLowerCase();\n      const member = ticket.memberNumber ? (\"<strong>\"+esc(ticket.memberNumber)+\"</strong>\") : \"Unclaimed\";\n      const actions = history\n        ? \"<button class='secondary' data-ticket-status='available' data-ticket-code='\"+esc(ticket.code)+\"'>Restore</button>\"\n        : \"<button class='secondary' data-golden-qr='png' data-ticket-code='\"+esc(ticket.code)+\"'>40mm QR</button><button class='secondary' data-golden-copy='\"+esc(ticket.claimUrl||\"\")+\"'>Copy Claim Link</button>\" + (raw === \"available\" ? \"<button data-ticket-status='void' data-ticket-code='\"+esc(ticket.code)+\"'>Disable</button>\" : \"\") + \"<button class='danger' data-ticket-delete='\"+esc(ticket.code)+\"'>Delete</button>\" + ([\"claimed\",\"redeemed\",\"awaiting_fulfilment\"].includes(raw) ? \"<button data-ticket-status='fulfilled' data-ticket-code='\"+esc(ticket.code)+\"'>Mark Fulfilled</button>\" : \"\");\n      return \"<tr><td><strong>\"+esc(ticket.code||\"\u2014\")+\"</strong><br><small>Created \"+esc(prettyShortDate(ticket.createdAt))+\"</small></td><td>\"+esc(ticket.prizeTitle||\"\u2014\")+\"</td><td><span class='orbit-pill'>\"+esc(humanDrawStatus(raw))+\"</span><br><small>Expiry: \"+esc(ticket.expiresAt?prettyShortDate(ticket.expiresAt):\"No expiry\")+\"</small></td><td>\"+member+\"<br><small>\"+esc(ticket.redeemedAt?prettyShortDate(ticket.redeemedAt):\"Not claimed\")+\"</small></td><td><div class='orbit-row-actions orbit-golden-actions'>\"+actions+\"</div></td></tr>\";\n    }\n    const active = tickets.filter(function(t){ return liveStatuses.includes(String(t.status||\"available\").toLowerCase()); });\n    const history = tickets.filter(function(t){ return historyStatuses.includes(String(t.status||\"\").toLowerCase()); });\n    const activeHtml = table([\"Ticket\",\"Prize\",\"Status\",\"Claim\",\"Actions\"], active.map(function(t){ return row(t,false); }), \"No active Golden Tickets awaiting claim or fulfilment.\");\n    const historyHtml = table([\"Ticket\",\"Prize\",\"Final Status\",\"Claim\",\"Actions\"], history.map(function(t){ return row(t,true); }), \"No completed or retired Golden Tickets yet.\");\n    if($(\"goldenTable\")) $(\"goldenTable\").innerHTML=activeHtml;\n    if($(\"goldenContentTable\")) $(\"goldenContentTable\").innerHTML=activeHtml;\n    if($(\"goldenContentTableRuntime\")) $(\"goldenContentTableRuntime\").innerHTML=activeHtml;\n    if($(\"goldenTicketHistoryRuntime\")) $(\"goldenTicketHistoryRuntime\").innerHTML=historyHtml;\n  }\n\n\n  function attendanceEventDateV367(event){ return event?.endAt || event?.end_at || event?.end?.utc || event?.end?.local || event?.startAt || event?.start_at || event?.start?.local || event?.start?.utc || \"\"; }\n  function isPastAttendanceEventV367(event){ const value=attendanceEventDateV367(event); const time=value?new Date(value).getTime():NaN; return Boolean(event?.archived) || (Number.isFinite(time) && time < Date.now()); }\n  function attendanceHistoryTableV367(events){\n    const rows=(events||[]).map(function(event){\n      const attendance=event.attendance||{},eventId=event.eventbriteEventId||event.id||\"\",date=event.startAt||event.start_at||event.start?.local||event.start?.utc||\"\";\n      const claimed=Number(attendance.claimed||0),checkedIn=Number(attendance.checkedIn||0),notCheckedIn=Number(attendance.notCheckedIn??Math.max(claimed-checkedIn,0));\n      return \"<tr><td><strong>\"+esc(event.name||\"Orbit event\")+\"</strong><small>\"+esc(event.venueName||\"Venue coming soon\")+\"</small></td><td>\"+esc(prettyDate(date))+\"</td><td>\"+esc(claimed)+\"</td><td><strong>\"+esc(checkedIn)+\"</strong></td><td>\"+esc(notCheckedIn)+\"</td><td>\"+esc(prettyShortDate(attendance.lastCheckInAt))+\"</td><td><button class='secondary' type='button' data-report-attendance-event='\"+esc(eventId)+\"'>View Full Event Data</button></td></tr>\";\n    }).join(\"\");\n    return rows?\"<table><thead><tr><th>Event</th><th>Date</th><th>Expected</th><th>Checked In</th><th>Not Checked In</th><th>Last Check-In</th><th>Action</th></tr></thead><tbody>\"+rows+\"</tbody></table>\":\"<div class='orbit-empty-state'><strong>No past event records yet</strong><span>Completed shows will appear here automatically.</span></div>\";\n  }\n\n  let attendanceViewV6001=\"live\";\n  function setAttendanceViewV6001(view=\"live\"){attendanceViewV6001=view===\"past\"?\"past\":\"live\";document.querySelectorAll(\"[data-attendance-view-v6001]\").forEach(button=>{const active=button.dataset.attendanceViewV6001===attendanceViewV6001;button.classList.toggle(\"active\",active);button.setAttribute(\"aria-current\",active?\"page\":\"false\");});document.querySelectorAll(\"[data-attendance-pane-v6001]\").forEach(pane=>pane.hidden=pane.dataset.attendancePaneV6001!==attendanceViewV6001);}\n  document.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-attendance-view-v6001]\");if(button)setAttendanceViewV6001(button.dataset.attendanceViewV6001);});\n\n  function renderAttendanceCentre(data) {\n    const statusTarget = $(\"attendanceStatus\");\n    const tableTarget = $(\"attendanceEventsTable\"),pastTarget=$(\"attendancePastEventsTable\");\n    const events = data?.events || [];\n    const upcomingEvents=events.filter(event=>!isPastAttendanceEventV367(event)),pastEvents=events.filter(isPastAttendanceEventV367);\n    const totalClaimed = events.reduce((sum, event) => sum + Number(event.attendance?.claimed || 0), 0);\n    const totalCheckedIn = events.reduce((sum, event) => sum + Number(event.attendance?.checkedIn || 0), 0);\n    const totalOutstanding = Math.max(totalClaimed - totalCheckedIn, 0);\n    const eventSelect=$(\"attendanceEventSelect\"); if(eventSelect){const current=eventSelect.value;eventSelect.innerHTML=\"<option value=''>Choose an upcoming event</option>\"+upcomingEvents.map(e=>\"<option value='\"+esc(e.eventbriteEventId||e.id||\"\")+\"'>\"+esc(e.name||\"Orbit event\")+\"</option>\").join(\"\");if(current&&upcomingEvents.some(e=>String(e.eventbriteEventId||e.id||\"\")===String(current)))eventSelect.value=current;const syncButton=$(\"attendanceSyncButton\");if(syncButton){syncButton.disabled=!eventSelect.value;syncButton.title=eventSelect.value?\"Sync the selected event's door data\":\"Choose an upcoming event first\";}}\n\n    if (statusTarget) {\n      statusTarget.innerHTML =\n        \"<div class='orbit-communications-status-card'><span>Claimed Tickets</span><strong>\" + esc(totalClaimed) + \"</strong><small>Across synced Orbit events</small></div>\" +\n        \"<div class='orbit-communications-status-card'><span>Checked In</span><strong>\" + esc(totalCheckedIn) + \"</strong><small>Successful door scans</small></div>\" +\n        \"<div class='orbit-communications-status-card'><span>Upcoming Events</span><strong>\" + esc(upcomingEvents.length) + \"</strong><small>Live operations only</small></div>\" +\n        \"<div class='orbit-communications-status-card'><span>Scanner</span><strong>Live</strong><small>Open scanner requires ADMIN_SECRET</small></div>\";\n    }\n\n    if (!tableTarget) return;\n    if(pastTarget)pastTarget.innerHTML=attendanceHistoryTableV367(pastEvents);\n    setAttendanceViewV6001(attendanceViewV6001);\n    if (!events.length) {\n      tableTarget.innerHTML = \"<p class='orbit-muted'>No attendance events loaded yet. Sync Eventbrite events first, then issue tickets.</p>\";\n      return;\n    }\n\n    const eventRows=function(list){return list.map(function (event) {\n      const attendance = event.attendance || {};\n      const claimed = Number(attendance.claimed || 0);\n      const checkedIn = Number(attendance.checkedIn || 0);\n      const notCheckedIn = Number(attendance.notCheckedIn ?? Math.max(claimed - checkedIn, 0));\n      const eventId = event.eventbriteEventId || event.id || \"\";\n      const date = event.startAt || event.start_at || event.start?.local || event.start?.utc || \"\";\n      return \"<tr>\" +\n        \"<td><strong>\" + esc(event.name || \"Orbit event\") + \"</strong><small>\" + esc(event.venueName || \"Venue coming soon\") + \"</small></td>\" +\n        \"<td>\" + esc(prettyDate(date)) + \"</td>\" +\n        \"<td>\" + esc(claimed) + \"</td>\" +\n        \"<td><strong>\" + esc(checkedIn) + \"</strong></td>\" +\n        \"<td>\" + esc(notCheckedIn) + \"</td>\" +\n        \"<td>\" + esc(prettyShortDate(attendance.lastCheckInAt)) + \"</td>\" +\n        \"<td><button class='secondary orbit-attendance-detail-button' type='button' data-attendance-event='\" + esc(eventId) + \"'>View Full Event Data</button></td>\" +\n      \"</tr>\";\n    }).join(\"\");};\n    const tableFor=function(list,empty){return list.length?\"<table><thead><tr><th>Event</th><th>Date</th><th>Expected</th><th>Checked In</th><th>Not Checked In</th><th>Last Check-In</th><th>Action</th></tr></thead><tbody>\"+eventRows(list)+\"</tbody></table>\":\"<div class='orbit-empty-state'><strong>\"+esc(empty)+\"</strong></div>\";};\n    tableTarget.innerHTML=\"<div class='orbit-attendance-event-groups'><section>\"+tableFor(upcomingEvents,\"No upcoming attendance events.\")+\"</section></div>\";\n\n    tableTarget.querySelectorAll(\"[data-attendance-event]\").forEach(function (button) {\n      button.addEventListener(\"click\", async function () {\n        try {\n          const scrollY=window.scrollY; setLoading(button, true); window.scrollTo(0,scrollY);\n          await loadAttendanceDetail(button.getAttribute(\"data-attendance-event\"));\n          window.scrollTo(0,scrollY); await new Promise(resolve=>requestAnimationFrame(()=>requestAnimationFrame(resolve)));\n          const detailNode=$(\"attendanceDetailTable\"); if(detailNode){detailNode.scrollIntoView({behavior:\"smooth\",block:\"start\"});detailNode.classList.add(\"orbit-attendance-highlight\");setTimeout(()=>detailNode.classList.remove(\"orbit-attendance-highlight\"),1600);}\n          setNotice(\"Full event data loaded.\");\n        } catch (err) {\n          console.error(err);\n          setNotice(err.message, true);\n        } finally {\n          setLoading(button, false);\n        }\n      });\n    });\n  }\n\n  document.addEventListener(\"click\",async event=>{const button=event.target.closest(\"[data-report-attendance-event]\");if(!button)return;try{setLoading(button,true);await loadAttendanceDetail(button.dataset.reportAttendanceEvent);$(\"attendanceDetailTable\")?.scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(error){setNotice(error.message||error,true);}finally{setLoading(button,false);}});\n\n  function attendanceDisplayNameV464(value){\n    return String(value??\"\").replace(/\\bb'([^']*)'/g,\"$1\").replace(/\\bb\"([^\"]*)\"/g,\"$1\").replace(/\\s+/g,\" \").trim();\n  }\n\n  function attendanceDetailMarkup(detail) {\n    const event = detail?.event || {}, summary = detail?.summary || {}, financials=detail?.financials||{}, addOns=detail?.addOns||{}, rows=detail?.attendees||[];\n    const money=v=>\"\u00A3\"+Number(v||0).toLocaleString(\"en-GB\",{minimumFractionDigits:2,maximumFractionDigits:2});\n    const sourceLabel=row=>row.sourceLabel||({eventbrite:\"Eventbrite\",orbit:\"Orbit\",orbit_member:\"Member\",carer:\"Carer\",door:\"Door\"}[row.source]||\"External\");\n    const explicitSlotFor=row=>{const t=String(row.ticketType||\"\").toLowerCase();if(/(?:^|\\D)10(?::?00)?\\s*(?:am)?(?:\\D|$)|early\\s*bird/.test(t))return \"10:00\";if(/(?:^|\\D)12(?::?00)?\\s*(?:pm)?(?:\\D|$)/.test(t))return \"12:00\";if(/(?:^|\\D)(?:2(?::?00)?\\s*pm|14(?::?00)?)(?:\\D|$)/.test(t))return \"14:00\";return null;};\n    const isChild=row=>Boolean(row.isChildTicket)||/child|under\\s*1[23]|under\\s*10|junior|free\\s*(?:under|child)/i.test(String(row.ticketType||\"\"));\n    const orderAdultSlot=new Map();for(const row of rows){const key=String(row.orderId||\"\");const slot=explicitSlotFor(row);if(!key||!slot||isChild(row))continue;if(!orderAdultSlot.has(key))orderAdultSlot.set(key,new Set());orderAdultSlot.get(key).add(slot);}\n    const slotFor=row=>{const explicit=explicitSlotFor(row);if(explicit)return explicit;if(isChild(row)){const linked=String(row.orderId||\"\")?orderAdultSlot.get(String(row.orderId)):null;if(linked?.size===1)return [...linked][0];if(linked?.size>1)return null;return \"10:00\";}return null;};\n    const backendSlots=detail?.timeSlots||null;const slotRows=[\"10:00\",\"12:00\",\"14:00\"].map(slot=>backendSlots?.[slot]?{slot,sold:Number(backendSlots[slot].sold||0),checkedIn:Number(backendSlots[slot].checkedIn||0)}:(()=>{const matching=rows.filter(r=>(slotFor(r)||\"10:00\")===slot);return {slot,sold:matching.length,checkedIn:matching.filter(r=>r.checkedIn).length};})());\n    const slotHtml=slotRows.some(x=>x.sold)?\"<div class='orbit-attendance-timeslot-grid'>\"+slotRows.map(x=>\"<article><span>\"+x.slot+\" entry</span><strong>\"+x.sold+\" sold / issued</strong><small>\"+x.checkedIn+\" checked in</small></article>\").join(\"\")+\"</div>\":\"\";\n    const eventId=event.eventbriteEventId||\"\",doorRecords=Array.isArray(detail?.doorRecords)?detail.doorRecords:[];\n    // V501.0.7: historical add-on recovery is a maintenance tool, not a normal\n    // event-day Attendance control. It now lives under System \u2192 Testing.\n    const recoveryHtml=\"\";\n    const doorCorrectionHtml=eventId&&doorRecords.length?\"<section class='orbit-panel orbit-door-correction-v489' data-door-correction-event='\"+esc(eventId)+\"'><div class='orbit-panel-header compact'><div><p class='orbit-kicker'>Door sales audit</p><h3>Door sale corrections</h3><p>Remove an incorrect test/mistake from live Door Sales, add-on and revenue totals without destroying the audit. Removed records can be restored.</p></div></div><div class='orbit-table-wrap'><table><thead><tr><th>When</th><th>Item</th><th>Qty</th><th>Payment</th><th>Amount</th><th>Status</th><th></th></tr></thead><tbody>\"+doorRecords.map(row=>{const id=row.door_entry_id||row.id||\"\",removed=Boolean(row.voided||row.voided_at);return \"<tr class='\"+(removed?\"orbit-door-record-voided-v489\":\"\")+\"'><td>\"+esc(prettyShortDate(row.created_at))+\"</td><td><strong>\"+esc(row.ticket_type||\"Door sale\")+\"</strong>\"+(row.customer_name?\"<small>\"+esc(row.customer_name)+\"</small>\":\"\")+(row.void_reason?\"<small>Removed: \"+esc(row.void_reason)+\"</small>\":\"\")+\"</td><td>\"+Number(row.quantity||0)+\"</td><td>\"+esc(humanStatus(row.payment_method||\"\u2014\"))+\"</td><td>\"+money(row.total_amount||0)+\"</td><td><span class='orbit-status-pill \"+(removed?\"waiting\":\"active\")+\"'>\"+(removed?\"Removed\":\"Active\")+\"</span></td><td><button type='button' class='secondary' data-door-record-correction-v489='\"+esc(id)+\"' data-action='\"+(removed?\"restore\":\"void\")+\"'>\"+(removed?\"Restore\":\"Remove\")+\"</button></td></tr>\"}).join(\"\")+\"</tbody></table></div><small class='orbit-muted'>Removing a record is an Orbit reporting correction only. It does not refund a card/cash payment or alter Eventbrite/Shopify.</small></section>\":\"\";\n    return \"<div class='orbit-attendance-detail-hero'><div><p class='orbit-kicker'>Selected Event</p><h3>\"+esc(event.name||\"Orbit event\")+\"</h3><div class='orbit-attendance-summary-grid'>\"+\n      \"<span><b>\"+esc(summary.claimed||0)+\"</b> Expected</span><span><b>\"+esc(summary.checkedIn||0)+\"</b> Checked in</span><span><b>\"+esc(summary.notCheckedIn||0)+\"</b> Not checked in</span>\"+\n      \"<span><b>\"+esc(addOns.issued||0)+\"</b> Add-ons issued</span><span><b>\"+esc(addOns.claimed||0)+\"</b> Add-ons claimed</span><span><b>\"+esc(addOns.unclaimed||0)+\"</b> Add-ons unclaimed</span><span><b>\"+money(financials.eventbriteRevenue)+\"</b> Eventbrite sales<small>\"+money(financials.eventbriteAdmissionRevenue)+\" tickets \u00B7 \"+money(financials.eventbriteAddOnRevenue)+\" add-ons</small></span><span><b>\"+money(financials.orbitRevenue)+\"</b> Orbit sales</span><span><b>\"+money(financials.doorRevenue)+\"</b> Door sales</span><span><b>\"+money(financials.totalRevenue)+\"</b> Total revenue</span></div></div></div>\"+slotHtml+recoveryHtml+doorCorrectionHtml+\n      (rows.length?\"<table><thead><tr><th>Source</th><th>Holder</th><th>Ticket Type</th><th>Checked In</th><th>Last Scan</th><th>Scans</th></tr></thead><tbody>\"+rows.map(row=>\"<tr><td><span class='orbit-pill'>\"+esc(sourceLabel(row))+\"</span></td><td class='orbit-attendance-holder-v376'><strong>\"+esc(attendanceDisplayNameV464(row.name||row.memberNumber||row.email||\"Ticket holder\"))+\"</strong><small>\"+esc(row.email||row.memberNumber||\"\")+\"</small></td><td>\"+esc(row.ticketType||\"Ticket\")+\"</td><td><strong>\"+(row.checkedIn?\"Yes\":\"No\")+\"</strong></td><td>\"+esc(prettyShortDate(row.checkedInAt))+\"</td><td>\"+esc(row.scanCount||0)+\"</td></tr>\").join(\"\")+\"</tbody></table>\":\"<p class='orbit-muted'>No attendance records for this event yet.</p>\");\n  }\n\n  function historicalAddOnRecoveryResultMarkupV480(data){\n    const repairable=Number(data?.repairable||0),ambiguous=Number(data?.ambiguous||0),unmatched=Number(data?.unmatched||0);\n    const after=Number(data?.projectedClaimed||0)+\" / \"+Number(data?.issued||0)+\" claimed\";\n    const warning=ambiguous||unmatched?\"<p class='orbit-muted'><strong>Needs review:</strong> \"+ambiguous+\" ambiguous \u00B7 \"+unmatched+\" unmatched. Orbit will not guess or repair these records automatically.</p>\":\"\";\n    const action=repairable>0?\"<div class='orbit-action-row'><button type='button' class='primary' data-addon-recovery-repair>Repair \"+repairable+\" proven claim\"+(repairable===1?\"\":\"s\")+\"</button></div>\":\"<p class='orbit-muted'>No uniquely proven missing claims need repair.</p>\";\n    return \"<div class='orbit-addon-recovery-summary-v480'><p><strong>Current:</strong> \"+Number(data?.alreadyClaimed||0)+\" / \"+Number(data?.issued||0)+\" claimed \u00B7 \"+Number(data?.currentlyUnclaimed||0)+\" unclaimed</p><p><strong>Stored historical scanner evidence:</strong> \"+Number(data?.provenHistoricalScans||0)+\" \u00B7 <strong>safe unique matches:</strong> \"+repairable+\"</p><p><strong>If repaired:</strong> \"+after+\" \u00B7 \"+Number(data?.projectedUnclaimed||0)+\" unclaimed</p>\"+warning+action+\"</div>\";\n  }\n\n  function wireHistoricalAddOnRecoveryV480(container,eventId,refresh){\n    if(!container||!eventId)return;\n    const section=container.querySelector(\"[data-addon-recovery-event]\");\n    if(!section)return;\n    const previewButton=section.querySelector(\"[data-addon-recovery-preview]\");\n    const result=section.querySelector(\"[data-addon-recovery-result]\");\n    const showPreview=async()=>{\n      setLoading(previewButton,true);\n      try{\n        const data=await api(\"/api/admin/attendance-reconciliation/\"+encodeURIComponent(eventId)+\"/add-ons/preview\",{cacheMs:0});\n        result.innerHTML=historicalAddOnRecoveryResultMarkupV480(data);result.hidden=false;\n        const repairButton=result.querySelector(\"[data-addon-recovery-repair]\");\n        if(repairButton)repairButton.addEventListener(\"click\",async function(){\n          const count=Number(data.repairable||0);\n          if(!window.confirm(\"Repair \"+count+\" uniquely proven historical add-on claim\"+(count===1?\"\":\"s\")+\"? This changes Orbit's local claim records only and does not change Eventbrite sales or admission check-ins.\"))return;\n          const typed=window.prompt(\"Type REPAIR PROVEN ADD-ON CLAIMS to confirm:\",\"\");\n          if(typed!==\"REPAIR PROVEN ADD-ON CLAIMS\"){setNotice(\"Historical add-on repair cancelled. Confirmation text did not match.\",true);return;}\n          setLoading(repairButton,true);\n          try{\n            const repaired=await api(\"/api/admin/attendance-reconciliation/\"+encodeURIComponent(eventId)+\"/add-ons/repair\",{method:\"POST\",body:JSON.stringify({confirmation:typed}),cacheMs:0,timeoutMs:60000});\n            setNotice(\"Historical add-on repair complete: \"+Number(repaired.repaired||0)+\" proven claim\"+(Number(repaired.repaired||0)===1?\"\":\"s\")+\" restored.\");\n            if(typeof refresh===\"function\")await refresh();\n          }catch(error){setNotice(error.message||String(error),true);}\n          finally{setLoading(repairButton,false);}\n        });\n      }catch(error){result.innerHTML=\"<div class='orbit-empty-state orbit-error-state'><strong>Historical scan check failed</strong><span>\"+esc(error.message||String(error))+\"</span></div>\";result.hidden=false;}\n      finally{setLoading(previewButton,false);}\n    };\n    previewButton?.addEventListener(\"click\",showPreview);\n  }\n\n  let systemAddonRecoveryEventsLoadedV507=false;\n  async function loadSystemAddonRecoveryEventsV507(force=false){\n    const select=$(\"systemAddonRecoveryEventV507\");if(!select)return [];\n    if(systemAddonRecoveryEventsLoadedV507&&!force&&select.options.length>1)return [...select.options].map(o=>o.value).filter(Boolean);\n    const previous=select.value;\n    select.disabled=true;\n    try{\n      const payload=(state.eventbrite?.events?.length&&!force)?{events:state.eventbrite.events}:await api(\"/api/admin/eventbrite/events?limit=100&metrics=0\",{cacheMs:5000,timeoutMs:15000});\n      const events=(payload?.events||[]).filter(e=>String(e.status||\"\").toLowerCase()!==\"draft\").sort((a,b)=>String(b.startLocal||b.start?.local||b.startUtc||b.start?.utc||b.date||\"\").localeCompare(String(a.startLocal||a.start?.local||a.startUtc||a.start?.utc||a.date||\"\")));\n      select.innerHTML=\"<option value=''>Choose an event\u2026</option>\"+events.map(e=>{const id=e.eventbriteEventId||e.eventbrite_event_id||e.id||\"\",label=e.name||e.title||\"Orbit event\",raw=e.startLocal||e.start?.local||e.startUtc||e.start?.utc||e.date||\"\",date=raw?prettyShortDate(raw):\"\";return \"<option value='\"+esc(id)+\"'>\"+esc(label)+(date?\" \u00B7 \"+esc(date):\"\")+\"</option>\";}).join(\"\");\n      if(previous&&[...select.options].some(o=>o.value===previous))select.value=previous;\n      systemAddonRecoveryEventsLoadedV507=true;\n      return events;\n    }finally{select.disabled=false;}\n  }\n\n  async function previewSystemAddonRecoveryV507(button){\n    const select=$(\"systemAddonRecoveryEventV507\"),result=$(\"systemAddonRecoveryResultV507\");if(!select||!result)return;\n    if(!select.value){await loadSystemAddonRecoveryEventsV507(false);if(!select.value){setNotice(\"Choose the event whose historical add-on scans you want to check.\",true);select.focus();return;}}\n    const eventId=select.value;setLoading(button,true);\n    try{\n      const data=await api(\"/api/admin/attendance-reconciliation/\"+encodeURIComponent(eventId)+\"/add-ons/preview\",{cacheMs:0,timeoutMs:30000});\n      result.innerHTML=historicalAddOnRecoveryResultMarkupV480(data);result.hidden=false;\n      const repairButton=result.querySelector(\"[data-addon-recovery-repair]\");\n      if(repairButton)repairButton.addEventListener(\"click\",async function(){\n        const count=Number(data.repairable||0);\n        if(!window.confirm(\"Repair \"+count+\" uniquely proven historical add-on claim\"+(count===1?\"\":\"s\")+\"? This changes Orbit's local claim records only and does not change Eventbrite sales or admission check-ins.\"))return;\n        const typed=window.prompt(\"Type REPAIR PROVEN ADD-ON CLAIMS to confirm:\",\"\");\n        if(typed!==\"REPAIR PROVEN ADD-ON CLAIMS\"){setNotice(\"Historical add-on repair cancelled. Confirmation text did not match.\",true);return;}\n        setLoading(repairButton,true);\n        try{\n          const repaired=await api(\"/api/admin/attendance-reconciliation/\"+encodeURIComponent(eventId)+\"/add-ons/repair\",{method:\"POST\",body:JSON.stringify({confirmation:typed}),cacheMs:0,timeoutMs:60000});\n          setNotice(\"Historical add-on repair complete: \"+Number(repaired.repaired||0)+\" proven claim\"+(Number(repaired.repaired||0)===1?\"\":\"s\")+\" restored.\");\n          await previewSystemAddonRecoveryV507(button);\n        }catch(error){setNotice(error.message||String(error),true);}\n        finally{setLoading(repairButton,false);}\n      });\n    }catch(error){result.innerHTML=\"<div class='orbit-empty-state orbit-error-state'><strong>Historical scan check failed</strong><span>\"+esc(error.message||String(error))+\"</span></div>\";result.hidden=false;}\n    finally{setLoading(button,false);}\n  }\n\n  document.addEventListener(\"DOMContentLoaded\",()=>{\n    const select=$(\"systemAddonRecoveryEventV507\"),button=$(\"systemAddonRecoveryPreviewV507\");\n    select?.addEventListener(\"focus\",()=>loadSystemAddonRecoveryEventsV507(false).catch(error=>setNotice(error.message||String(error),true)),{once:true});\n    button?.addEventListener(\"click\",()=>previewSystemAddonRecoveryV507(button));\n    document.querySelectorAll('[data-module-nav=\"testing\"]').forEach(nav=>nav.addEventListener(\"click\",()=>setTimeout(()=>loadSystemAddonRecoveryEventsV507(false).catch(()=>{}),0)));\n  });\n\n  function wireDoorCorrectionsV489(container,eventId,refresh){\n    if(!container||!eventId)return;\n    container.querySelectorAll(\"[data-door-record-correction-v489]\").forEach(button=>button.addEventListener(\"click\",async()=>{\n      const action=button.dataset.action,id=button.dataset.doorRecordCorrectionV489;if(!id)return;\n      let reason=\"\";\n      if(action===\"void\"){\n        reason=window.prompt(\"Why are you removing this door sale from the live totals?\",\"Test / incorrect door sale\")||\"\";\n        if(!reason.trim())return;\n        if(!window.confirm(\"Remove this door sale from current attendance, add-on and revenue totals?\\n\\nOrbit will keep the record in the audit so it can be restored. This does NOT issue a refund.\"))return;\n      }else if(!window.confirm(\"Restore this door sale to the live totals?\"))return;\n      setLoading(button,true);\n      try{\n        await api(\"/api/admin/attendance-corrections/\"+encodeURIComponent(eventId)+\"/door-entry/\"+encodeURIComponent(id),{method:\"POST\",body:JSON.stringify({action,reason}),cacheMs:0,timeoutMs:15000});\n        setNotice(action===\"void\"?\"Door sale removed from live totals. Audit preserved.\":\"Door sale restored to live totals.\");\n        if(typeof refresh===\"function\")await refresh();\n      }catch(error){setNotice(error.message||String(error),true);}\n      finally{setLoading(button,false);}\n    }));\n  }\n\n  function renderAttendanceDetail(detail) {\n    const target = $(\"attendanceDetailTable\");\n    if (!target) return;\n    target.innerHTML = attendanceDetailMarkup(detail);\n    const eventId=detail?.event?.eventbriteEventId||\"\";\n    wireDoorCorrectionsV489(target,eventId,async()=>{await loadAttendanceDetail(eventId);await loadAttendance();});\n  }\n\n  function renderEventsTable(events) {\n    const rows = events.map(event => \"<tr>\" +\n      \"<td><strong>\" + esc(event.title || \"Workflow event\") + \"</strong><br><span class='orbit-muted'>\" + esc(event.workflow_event_id || \"\") + \"</span></td>\" +\n      \"<td>\" + esc(event.type || \"\u2014\") + \"</td>\" +\n      \"<td><span class='orbit-pill'>\" + esc(event.status || \"\u2014\") + \"</span></td>\" +\n      \"<td>\" + esc(event.message || \"\u2014\") + \"</td>\" +\n      \"<td>\" + esc(prettyShortDate(event.created_at || event.createdAt)) + \"</td>\" +\n    \"</tr>\");\n\n    const target = $(\"eventsTable\");\n    if (!target) return;\n    target.innerHTML = table([\"Event\", \"Type\", \"Status\", \"Message\", \"Date\"], rows, \"No workflow events yet.\");\n  }\n\n  function renderScheduledRunsTable(runs) {\n    const target = $(\"scheduledRunsTable\");\n    if (!target) return;\n\n    const rows = runs.map(run => \"<tr>\" +\n      \"<td><strong>\" + esc(run.workflow_type || \"\u2014\") + \"</strong><br><span class='orbit-muted'>\" + esc(run.run_key || \"\") + \"</span></td>\" +\n      \"<td>\" + esc(run.month_key || \"\u2014\") + \"</td>\" +\n      \"<td><span class='orbit-pill'>\" + esc(run.status || \"\u2014\") + \"</span></td>\" +\n      \"<td>\" + esc(run.source || \"\u2014\") + \"</td>\" +\n      \"<td>\" + esc(prettyShortDate(run.created_at)) + \"</td>\" +\n      \"<td>\" + esc(prettyShortDate(run.finished_at)) + \"</td>\" +\n      \"<td>\" + esc(run.summary || run.error || \"\u2014\") + \"</td>\" +\n    \"</tr>\");\n\n    target.innerHTML = table([\"Workflow\", \"Month\", \"Status\", \"Source\", \"Created\", \"Finished\", \"Summary\"], rows, \"No scheduled draws yet.\");\n  }\n\n  function renderSchedulerTestResult(result) {\n    const target = $(\"schedulerTestResult\");\n    if (!target) return;\n\n    const jobs = Array.isArray(result && result.jobs) ? result.jobs : [];\n    const jobLines = jobs.length\n      ? jobs.map(job => \"<li><strong>\" + esc(job.workflowType || \"workflow\") + \"</strong>: \" + esc(job.skipped ? \"skipped\" : \"run\") + (job.reason ? \" <span>(\" + esc(job.reason) + \")</span>\" : \"\") + \"</li>\").join(\"\")\n      : \"<li>No workflow jobs were due or run.</li>\";\n\n    target.innerHTML =\n      \"<p class='orbit-kicker'>Manual Test Result</p>\" +\n      \"<strong>Visible scheduler test completed</strong>\" +\n      \"<small>Checked \" + esc(prettyDate(result && result.checkedAt)) + \" for \" + esc((result && result.monthKey) || \"\u2014\") + \". Jobs run: \" + esc((result && result.jobsRun) || 0) + \".</small>\" +\n      \"<ul>\" + jobLines + \"</ul>\" +\n      (result && result.visibleAudit && result.visibleAudit.run_key ? \"<small>Audit logged in Scheduled Draws: \" + esc(result.visibleAudit.run_key) + \"</small>\" : \"\");\n  }\n\n  async function runMonthStart(button) {\n    try {\n      setLoading(button, true);\n      const result = await api(\"/api/admin/workflows/month-start\", {\n        method: \"POST\",\n        body: JSON.stringify({ monthKey: monthKeyValue(), force: false })\n      });\n\n      const created = Number(result?.packRun?.createdCount || result?.createdCount || 0);\n      const skipped = Number(result?.packRun?.skippedCount || result?.skippedCount || 0);\n      const active = Number(result?.packRun?.activeMemberCount || 0);\n      const ready = Number(result?.packSummary?.ready || result?.packSummary?.readyForLabel || 0);\n      const missing = Number(result?.packSummary?.missingAddress || result?.packSummary?.needsDelivery || 0);\n      const summary = \"MONTH START WORKFLOW\\n\\n\" +\n        \"\u2713 \" + active + \" active member(s) checked\\n\" +\n        \"\u2713 \" + created + \" monthly pack row(s) created\\n\" +\n        \"\u2713 \" + skipped + \" existing member pack(s) skipped\\n\" +\n        \"\u2713 \" + ready + \" pack(s) ready for labels\\n\" +\n        (missing ? \"\u26A0 \" + missing + \" pack(s) need address attention\" : \"\u2713 No missing address warnings returned\");\n      if ($(\"workflowResult\")) $(\"workflowResult\").textContent = summary + \"\\n\\nDetailed raw result is hidden from the main view. Use Workflow Events if needed.\";\n      const ordersSummary = \"Latest Month Start: \" + created + \" created, \" + skipped + \" skipped, \" + ready + \" ready for labels\" + (missing ? \", \" + missing + \" address issue(s).\" : \".\");\n      setMonthStartOrdersResult(ordersSummary, Boolean(missing));\n      setOrdersResult(ordersSummary, Boolean(missing));\n      await Promise.all([loadSummary(), loadFulfilment(), loadEvents(), loadScheduler(), searchMembers(null)]);\n      setNotice(\"Month-start workflow completed: \" + created + \" created, \" + skipped + \" skipped.\");\n    } catch (err) {\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function runMidMonthDraw(button) {\n    if (!confirm(\"Run the monthly draw now? Orbit will freeze the eligible member pool first, commit that pool to a future independent League of Entropy randomness round, then derive the winner from that public randomness. Once committed, this draw cannot be rerolled. Continue?\")) return;\n    try {\n      setLoading(button, true);\n      const result = await api(\"/api/admin/workflows/mid-month-draw\", {\n        method: \"POST\",\n        body: JSON.stringify({ monthKey: monthKeyValue(), prizeTitle: prizeTitleValue(), force: false }),\n        // V574: a committed future drand round may take ~15 seconds to arrive.\n        // Keep the browser attached long enough to receive the canonical result\n        // instead of timing out while the server safely completes the draw.\n        timeoutMs: 60000\n      });\n\n      const drawResult=result?.drawRun||result;\n      const draw=drawResult?.draw||result?.draw||{};\n      const proof=drawResult?.fairness||draw?.fairness||{};\n      const winner = draw?.winnerName || result?.winner?.name || result?.winnerName || draw?.winnerMemberNumber || \"Winner recorded\";\n      const resultTarget = $(\"monthlyDrawResult\") || $(\"workflowResult\");\n      if (resultTarget) resultTarget.textContent = \"Monthly draw completed. Winner: \" + winner + \". \" + (proof?.commitmentHash ? (\"Frozen entries: \"+Number(proof.entrantCount||0)+\". Public randomness round: \"+String(proof.beacon?.round||\"recorded\")+\". Commitment: \"+String(proof.commitmentHash).slice(0,16)+\"\u2026 . \") : \"\") + \"The recorded winner cannot be rerolled. Winner history has been saved and the parcel is ready under Prize Fulfilment.\";\n      await Promise.all([loadSummary(), loadDraws(), reloadSpecialShipments(), loadScheduler()]);\n      setNotice(\"Monthly draw completed and Prize Fulfilment refreshed.\");\n    } catch (err) {\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function runDueAutomations(button) {\n    try {\n      setLoading(button, true);\n\n      const result = await api(\"/api/admin/scheduler/run-due?force=true\", {\n        method: \"POST\",\n        body: JSON.stringify({ force: true }),\n        timeoutMs: 120000\n      });\n\n      $(\"workflowResult\").textContent = JSON.stringify(result, null, 2);\n      renderSchedulerTestResult(result);\n      await Promise.all([loadSummary(), loadFulfilment(), loadDraws(), loadEvents(), loadScheduler()]);\n      setNotice(\"Manual scheduled automation test completed and visibly logged in v20.\");\n    } catch (err) {\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function downloadGoldenTicketQr(code, format, button) {\n    const cleanCode = String(code || \"\").trim();\n    const cleanFormat = String(format || \"png\").toLowerCase() === \"svg\" ? \"svg\" : \"png\";\n    if (!cleanCode) throw new Error(\"Golden Ticket code is missing.\");\n    setLoading(button, true);\n    try {\n      const url = API_BASE + \"/api/admin/golden-tickets/\" + encodeURIComponent(cleanCode) + \"/qr?format=\" + encodeURIComponent(cleanFormat) + \"&secret=\" + encodeURIComponent(secret) + adminSessionQueryV329();\n      const response = await fetch(url, { method: \"GET\" });\n      if (!response.ok) {\n        let message = \"Golden Ticket QR download failed.\";\n        try { const body = await response.json(); message = body?.error || message; } catch (_) { const body = await response.text(); if (body) message = body; }\n        throw new Error(message);\n      }\n      const blob = await response.blob();\n      const objectUrl = URL.createObjectURL(blob);\n      const anchor = document.createElement(\"a\");\n      anchor.href = objectUrl;\n      anchor.download = cleanCode.toUpperCase() + \"-golden-ticket-qr-40mm.\" + cleanFormat;\n      document.body.appendChild(anchor);\n      anchor.click();\n      anchor.remove();\n      window.setTimeout(() => URL.revokeObjectURL(objectUrl), 5000);\n      setNotice(\"Golden Ticket \" + cleanFormat.toUpperCase() + \" QR downloaded.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function copyGoldenTicketClaimLink(value, button) {\n    const link = String(value || \"\").trim();\n    if (!link) throw new Error(\"Claim link is not available yet.\");\n    setLoading(button, true);\n    try {\n      if (navigator.clipboard?.writeText) {\n        await navigator.clipboard.writeText(link);\n      } else {\n        const input = document.createElement(\"textarea\");\n        input.value = link;\n        input.setAttribute(\"readonly\", \"readonly\");\n        input.style.position = \"fixed\";\n        input.style.opacity = \"0\";\n        document.body.appendChild(input);\n        input.select();\n        const copied = document.execCommand(\"copy\");\n        input.remove();\n        if (!copied) throw new Error(\"Your browser blocked clipboard access.\");\n      }\n      setNotice(\"Golden Ticket claim link copied.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function createGoldenTicket(button) {\n    try {\n      setLoading(button, true);\n      const result = await api(\"/api/admin/golden-tickets\", {\n        method: \"POST\",\n        body: JSON.stringify({\n          code: $(\"goldenTicketCode\")?.value || \"\",\n          prizeTitle: $(\"goldenTicketPrize\")?.value || \"\",\n          prizeValue: $(\"goldenTicketValue\")?.value || \"\",\n          imageUrl: $(\"goldenTicketImageUrl\")?.value || \"\",\n          notes: $(\"goldenTicketDescription\")?.value || \"\",\n          expiresAt: $(\"goldenTicketExpiry\")?.value ? new Date($(\"goldenTicketExpiry\").value).toISOString() : null\n        })\n      });\n\n      if($(\"goldenTicketResult\")){ $(\"goldenTicketResult\").hidden=false; $(\"goldenTicketResult\").innerHTML=\"<strong>Golden Ticket saved</strong><span>\"+esc(result.ticket?.code||$(\"goldenTicketCode\")?.value||\"\")+\" is now available in Ticket Manager.</span>\"; }\n      await Promise.all([loadGolden(), loadSummary()]);\n      [\"goldenTicketCode\",\"goldenTicketPrize\",\"goldenTicketValue\",\"goldenTicketExpiry\",\"goldenTicketImageUrl\",\"goldenTicketDescription\"].forEach(id=>{if($(id)) $(id).value=\"\";});\n      setDrawPane(\"golden\");\n      rememberOrbitSubtab(\"automation\", \"golden\");\n      window.setTimeout(function(){ $(\"goldenContentTableRuntime\")?.scrollIntoView({ behavior:\"smooth\", block:\"start\" }); }, 60);\n      setNotice(\"Golden Ticket created. Ticket Manager is now open.\");\n    } catch (err) {\n      if($(\"goldenTicketResult\")){ $(\"goldenTicketResult\").hidden=false; $(\"goldenTicketResult\").classList.add(\"error\"); $(\"goldenTicketResult\").innerHTML=\"<strong>Golden Ticket was not created</strong><span>\"+esc(err.message||err)+\"</span>\"; }\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function updatePackStatus(packId, status) {\n    await api(\"/api/admin/monthly-packs/\" + encodeURIComponent(packId) + \"/status\", {\n      method: \"POST\",\n      body: JSON.stringify({ fulfilmentStatus: status, status: status === \"fulfilled\" ? \"fulfilled\" : undefined })\n    });\n    await Promise.all([loadFulfilment(), loadSummary(), loadEvents()]);\n    setNotice(\"Pack updated to \" + status + \".\");\n  }\n\n  async function updateTicketStatus(code, status) {\n    await api(\"/api/admin/golden-tickets/\" + encodeURIComponent(code) + \"/status\", {\n      method: \"POST\",\n      body: JSON.stringify({ status: status })\n    });\n    await Promise.all([loadGolden(), loadSummary(), loadEvents()]);\n    setNotice(\"Golden Ticket updated to \" + status + \".\");\n  }\n\n\n\n  /* ORBIT OS OPERATOR UX \u2014 CUSTOMERS MODULE (scoped; preserve data-member-lookup contract) */\n  let selectedMemberLookup = null;\n  let selectedMemberProfile = null;\n  let addressRecoveryContext = { lookup: null, packId: null, delivery: null };\n  let activeMemberPane = \"overview\";\n  let rechargeMembershipPreviewV473 = null;\n\n  function memberSearchQuery() {\n    return ($(\"memberSearchInput\")?.value || \"\").trim();\n  }\n\n  function memberSearchStatus() {\n    return ($(\"memberSearchStatus\")?.value || \"all\").trim();\n  }\n\n  function formatMoney(value, fallback) {\n    if (value == null || value === \"\") return fallback || \"\u2014\";\n    if (String(value).startsWith(\"\u00A3\")) return String(value);\n    const number = Number(value);\n    return Number.isNaN(number) ? String(value) : \"\u00A3\" + number.toFixed(2);\n  }\n\n  function memberDate(value) {\n    if (!value) return \"\u2014\";\n    const text = String(value);\n    const date = new Date(value);\n    if (Number.isNaN(date.getTime())) return text;\n    // Contract YYYY-MM-DD is a calendar date, not a timezone-bearing instant.\n    if (/^\\d{4}-\\d{2}-\\d{2}$/.test(text)) return date.toLocaleDateString(\"en-GB\", {day:\"2-digit\",month:\"short\",year:\"numeric\",timeZone:\"UTC\"});\n    return date.toLocaleString(\"en-GB\", {day:\"2-digit\",month:\"short\",year:\"numeric\",hour:\"2-digit\",minute:\"2-digit\",timeZone:\"Europe/London\"});\n  }\n  function memberRetryDateV501(value) {\n    if (!value) return \"Recharge retrying automatically\";\n    const date = new Date(value);\n    if (Number.isNaN(date.getTime()) || date.getTime() <= Date.now()) return \"Recharge retrying automatically\";\n    return date.toLocaleString(\"en-GB\", {\n      day:\"numeric\", month:\"long\", year:\"numeric\", hour:\"numeric\", minute:\"2-digit\", hour12:true, timeZone:\"Europe/London\"\n    }).replace(/am|pm/gi, match=>match.toLowerCase());\n  }\n\n  async function loadMemberSummary() {\n    const target = $(\"memberSummaryCards\");\n    if (!target) return;\n    try {\n      const data = await api(\"/api/admin/members-summary\");\n      target.innerHTML =\n        \"<button type='button' class='orbit-communications-status-card orbit-member-summary-card' data-member-summary-filter='all'><span>Total Members</span><strong>\" + esc(data.total || 0) + \"</strong><small>All</small></button>\" +\n        \"<button type='button' class='orbit-communications-status-card orbit-member-summary-card configured' data-member-summary-filter='active'><span>Active</span><strong>\" + esc(data.active || 0) + \"</strong><small>Active</small></button>\" +\n        \"<button type='button' class='orbit-communications-status-card orbit-member-summary-card warning' data-member-summary-filter='pending'><span>Pending</span><strong>\" + esc(data.pending || 0) + \"</strong><small>Pending</small></button>\" +\n        \"<button type='button' class='orbit-communications-status-card orbit-member-summary-card' data-member-summary-filter='cancelled'><span>Cancelled</span><strong>\" + esc(data.cancelled || 0) + \"</strong><small>Cancelled</small></button>\";\n    } catch (err) { target.innerHTML = \"<div class='orbit-notice error'>Member summary unavailable: \" + esc(err.message) + \"</div>\"; }\n  }\n\n  function renderMemberSearchEmpty() {\n    const target = $(\"memberSearchResults\");\n    if (!target) return;\n    state.memberSearchResult = null;\n    target.innerHTML = \"<div class='orbit-customer-empty-state orbit-customer-search-prompt'><div class='orbit-customer-search-prompt-copy'><strong>Find a member</strong><span>Search by member number, name, email or integration ID, or select a status card above.</span></div></div>\";\n  }\n\n  let memberSearchSortV496={key:null,direction:\"asc\"};\n  function memberSortValueV496(member,key){\n    if(key===\"member\")return String(member.name||member.holderName||member.email||\"\").toLowerCase();\n    if(key===\"number\")return Number(String(member.memberNumber||\"\").replace(/\\D/g,\"\"))||0;\n    if(key===\"status\")return String(member.status||\"\").toLowerCase();\n    if(key===\"price\")return Number(member.currentPrice||String(member.currentPriceFormatted||\"\").replace(/[^0-9.-]/g,\"\"))||0;\n    if(key===\"renewal\")return member.nextChargeDate?new Date(member.nextChargeDate).getTime():Number.MAX_SAFE_INTEGER;\n    if(key===\"signup\")return member.signupAt?new Date(member.signupAt).getTime():0;\n    return \"\";\n  }\n  function renderMemberSearchResults(result) {\n    const target = $(\"memberSearchResults\");\n    if (!target) return;\n    const members = [...(result.members || [])];\n    if(memberSearchSortV496.key){const {key,direction}=memberSearchSortV496;members.sort((a,b)=>{const av=memberSortValueV496(a,key),bv=memberSortValueV496(b,key),cmp=typeof av===\"number\"&&typeof bv===\"number\"?av-bv:String(av).localeCompare(String(bv),\"en-GB\",{numeric:true,sensitivity:\"base\"});return direction===\"desc\"?-cmp:cmp;});}\n    if (!members.length) {\n      target.innerHTML = \"<div class='orbit-customer-empty-state'><div><strong>No members found</strong><span>Try a member number, name, email, Recharge subscription ID or Shopify customer ID.</span></div></div>\";\n      return;\n    }\n    const sortButton=(key,label)=>{const active=memberSearchSortV496.key===key,arrow=active?(memberSearchSortV496.direction===\"asc\"?\" \u2191\":\" \u2193\"):\"\";return \"<button type='button' class='orbit-member-sort-v496 orbit-admin-table-sort-v497\"+(active?\" active\":\"\")+\"' data-member-sort-v496='\"+key+\"' aria-label='Sort by \"+label+\"' aria-sort='\"+(active?(memberSearchSortV496.direction===\"asc\"?\"ascending\":\"descending\"):\"none\")+\"'>\"+label+arrow+\"</button>\";};\n    const tableHead = \"<div class='orbit-member-table-head'><span>\"+sortButton(\"member\",\"Name / email\")+\"</span><span>\"+sortButton(\"number\",\"Number\")+\"</span><span>\"+sortButton(\"status\",\"Status\")+\"</span><span>\"+sortButton(\"price\",\"Price\")+\"</span><span>\"+sortButton(\"renewal\",\"Renewal\")+\"</span><span>\"+sortButton(\"signup\",\"Sign up date\")+\"</span><span>Action</span></div>\";\n    target.innerHTML = tableHead + members.map(function(member){\n      const active = selectedMemberLookup && selectedMemberLookup === member.subscriptionId ? \" active\" : \"\";\n      const memberName = member.name || member.holderName || member.email || \"Unknown member\";\n      const status = member.statusDisplay || member.status || \"Pending\";\n      const statusKey = String(status).toLowerCase().replace(/[^a-z0-9]+/g, \"-\");\n      const renewalDate = member.nextChargeDate ? memberDate(member.nextChargeDate) : \"No charge scheduled\";\n      const renewalAmount = member.nextChargeAmountFormatted || member.currentPriceFormatted || \"\u2014\";\n      const recoveryStatus = String(member.paymentRecoveryStatus || \"\").toLowerCase();\n      const recoveryMeta = recoveryStatus === \"grace\" ? ([member.paymentFailedAt ? \"Failed \" + memberDate(member.paymentFailedAt) : \"Payment failed\", member.paymentFailedReason || \"\", member.paymentRetryScheduledAt ? \"Retry \" + memberRetryDateV501(member.paymentRetryScheduledAt) : \"Retry schedule unavailable\", member.paymentGraceThroughDate ? \"Grace to \" + memberDate(member.paymentGraceThroughDate) : \"\"].filter(Boolean).join(\" \u00B7 \")) : (recoveryStatus === \"payment_pending\" ? ([member.paymentPendingProviderStatus || \"Payment pending\", member.paymentPendingScheduledAt ? memberDate(member.paymentPendingScheduledAt) : \"\"].filter(Boolean).join(\" \u00B7 \")) : \"\");\n      const signupDate = member.signupAt ? memberDate(member.signupAt) : \"\u2014\";\n      const flag = member.supportFlag ? \"<span class='orbit-customer-attention-chip'>Needs attention</span>\" : \"\";\n      const testClass = member.testMember ? \" orbit-test-member-row\" : \"\";\n      const testBadge = member.testMember ? \"<span class='orbit-test-member-badge'>TEST MEMBER</span>\" : \"\";\n      return \"<article class='orbit-member-result orbit-customer-member-row\" + active + testClass + \"'>\" +\n        \"<span class='orbit-customer-member-identity'><strong>\" + esc(memberName) + \"</strong><small>\" + esc(member.email || \"No email\") + \"</small>\"+testBadge+\"</span>\" +\n        \"<span class='orbit-customer-member-number'>\" + esc(member.memberNumber || \"No member number\") + \"</span>\" +\n        \"<span><em class='orbit-customer-status-pill status-\" + esc(statusKey) + \"'>\" + esc(status) + \"</em></span>\" +\n        \"<span class='orbit-customer-member-price'>\" + esc(member.currentPriceFormatted || \"\u00A30.00\") + \"<small>per month</small></span>\" +\n        \"<span class='orbit-customer-member-renewal'><strong>\" + esc(renewalDate) + \"</strong><small>\" + esc(recoveryMeta || renewalAmount) + \"</small></span>\" +\n        \"<span class='orbit-customer-member-signup'><strong>\" + esc(signupDate) + \"</strong><small>Sign up date</small></span>\" +\n        \"<span class='orbit-customer-member-action'>\" + flag + \"<button type='button' data-member-lookup='\"+esc(member.subscriptionId)+\"'>Open profile \u2192</button><button type='button' class='secondary' data-member-login-as='\"+esc(member.subscriptionId)+\"'>Login as</button></span>\" +\n      \"</article>\";\n    }).join(\"\");\n    target.querySelectorAll(\"[data-member-sort-v496]\").forEach(button=>button.addEventListener(\"click\",()=>{const key=button.dataset.memberSortV496;if(memberSearchSortV496.key===key)memberSearchSortV496.direction=memberSearchSortV496.direction===\"asc\"?\"desc\":\"asc\";else memberSearchSortV496={key,direction:\"asc\"};renderMemberSearchResults(state.memberSearchResult||result);}));\n  }\n\n\n  async function loginAsMember(lookup, button) {\n    if (!lookup) return;\n    if (!confirm(\"Open the Members Area as this member in a new tab? The access link expires in 15 minutes and is recorded in the admin audit log.\")) return;\n    // V441: reserve the tab synchronously from the operator's click. Calling\n    // window.open only after awaiting the login-as API can make browsers report\n    // a popup block even when the member page subsequently opens.\n    const opened = window.open(\"about:blank\", \"_blank\");\n    if (!opened) throw new Error(\"Your browser blocked the new tab. Allow pop-ups for Orbit Admin and try again.\");\n    try { opened.opener = null; } catch (_) {}\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/members/\" + encodeURIComponent(lookup) + \"/login-as\", { method:\"POST\", body:JSON.stringify({returnUrl:\"https://orbitcollectorsclub.com/pages/members-area\"}) });\n      opened.location.replace(result.loginUrl);\n      setNotice(\"Secure member view opened in a new tab. It expires in 15 minutes.\");\n    } catch (error) {\n      try { opened.close(); } catch (_) {}\n      throw error;\n    } finally { setLoading(button, false); }\n  }\n  let pendingPermanentDeleteLookup = null;\n  async function loadArchivedMembers(button) {\n    try {\n      setLoading(button, true);\n      const q = encodeURIComponent(String($(\"archivedMemberSearchInput\")?.value || \"\").trim());\n      const data = await api(\"/api/admin/archived-members?q=\" + q + \"&limit=200\", { cacheMs:0 });\n      const target = $(\"archivedMembersList\");\n      const rows = data.members || [];\n      target.innerHTML = rows.length ? rows.map(function(member){\n        const lookup = member.subscription_id || member.member_number || member.email;\n        const name = member.card_holder_name || member.member_name || member.name || member.email || \"Unknown member\";\n        return \"<article class='orbit-member-result orbit-customer-member-row orbit-archived-member-row'><span class='orbit-customer-member-identity'><strong>\"+esc(name)+\"</strong><small>\"+esc(member.email||\"No email\")+\"</small></span><span class='orbit-customer-member-number'>\"+esc(member.member_number||\"\u2014\")+\"</span><span><em class='orbit-customer-status-pill'>Archived</em></span><span><small>Archived</small><strong>\"+esc(memberDate(member.archived_at))+\"</strong></span><span class='orbit-customer-member-action'><button type='button' data-member-lookup='\"+esc(lookup)+\"'>Open profile \u2192</button><button type='button' class='secondary' data-member-login-as='\"+esc(lookup)+\"'>Login as</button><button type='button' class='secondary' data-restore-member='\"+esc(lookup)+\"'>Restore</button><button type='button' class='danger' data-delete-archived-member='\"+esc(lookup)+\"'>Delete Permanently</button></span></article>\";\n      }).join(\"\") : \"<div class='orbit-customer-empty-state'><strong>No archived members found</strong><span>Archived members will appear here.</span></div>\";\n    } finally { setLoading(button, false); }\n  }\n  async function archiveSelectedMember(button) {\n    if (!selectedMemberLookup) throw new Error(\"Select a member first.\");\n    if (!confirm(\"Archive this member? They will disappear from operational views, but no Orbit data will be deleted and they can be restored.\")) return;\n    setLoading(button, true);\n    try {\n      const archivedLookup = String(selectedMemberLookup);\n      await api(\"/api/admin/members/\"+encodeURIComponent(archivedLookup)+\"/archive\", { method:\"POST\", body:JSON.stringify({}) });\n      if (state.memberSearchResult && Array.isArray(state.memberSearchResult.members)) {\n        state.memberSearchResult.members = state.memberSearchResult.members.filter(function(member){\n          return String(member.subscriptionId || member.memberNumber || member.email || \"\") !== archivedLookup;\n        });\n        state.memberSearchResult.count = state.memberSearchResult.members.length;\n      }\n      returnToMemberSearch();\n      if (state.memberSearchResult) renderMemberSearchResults(state.memberSearchResult);\n      else renderMemberSearchEmpty();\n      await Promise.all([loadMemberSummary(), loadArchivedMembers()]);\n      setNotice(\"Member archived and moved to Archived Members. No data was deleted.\");\n    }\n    finally { setLoading(button, false); }\n  }\n  async function openPermanentDeletePreview(lookup, button) {\n    setLoading(button, true);\n    try {\n      const data = await api(\"/api/admin/archived-members/\"+encodeURIComponent(lookup)+\"/delete-preview\", { cacheMs:0, timeoutMs:120000 });\n      pendingPermanentDeleteLookup = lookup;\n      const rows = data.records || [];\n      $(\"memberDeletePreviewBody\").innerHTML = \"<div class='orbit-notice warning'><strong>This deletes Orbit database records only.</strong><span>Shopify, Recharge, Eventbrite and ShipEngine are not touched.</span></div><div class='orbit-delete-member-summary'><strong>\"+esc(data.member.member_number||data.member.email||lookup)+\"</strong><span>\"+Number(data.totalRecords||0)+\" linked record(s) across \"+rows.length+\" collection(s).</span></div><div class='orbit-table-wrap'>\"+table([\"Collection\",\"Records\"], rows.map(x=>\"<tr><td>\"+esc(x.collection)+\"</td><td><strong>\"+Number(x.count||0)+\"</strong></td></tr>\"), \"No linked records found.\")+\"</div>\";\n      $(\"memberDeleteConfirmInput\").value = \"\"; $(\"confirmPermanentMemberDelete\").disabled = true; $(\"memberDeleteResult\").textContent = \"Review the full scan, then type DELETE exactly.\"; $(\"memberDeleteDialog\").showModal();\n    } finally { setLoading(button, false); }\n  }\n\n  async function searchMembers(button) {\n    try {\n      setLoading(button, true);\n      const query = encodeURIComponent(memberSearchQuery());\n      const status = encodeURIComponent(memberSearchStatus());\n      const result = await api(\"/api/admin/members/search?q=\" + query + \"&status=\" + status + \"&limit=50\");\n      state.memberSearchResult = result;\n      renderMemberSearchResults(result);\n      await loadMemberSummary();\n      setNotice(\"Member search loaded \" + result.count + \" result(s).\");\n    } catch (err) {\n      setNotice(err.message, true);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function loadMemberProfile(lookup, button) {\n    selectedMemberLookup = lookup;\n    try { localStorage.setItem(\"orbitAdminOpenMember\", String(lookup)); } catch (_) {}\n    const searchWorkspace = $(\"memberSearchWorkspace\");\n    const profileWorkspace = $(\"memberProfileWorkspace\");\n    const panel = $(\"memberProfilePanel\");\n\n    if (searchWorkspace) searchWorkspace.hidden = true;\n    if (profileWorkspace) profileWorkspace.hidden = false;\n    if (panel) {\n      panel.className = \"orbit-member-empty\";\n      panel.innerHTML = \"<div><p class='orbit-kicker'>Loading Member</p><h2>Building member profile...</h2><p>Orbit OS is loading membership, billing, parcels, loyalty and support information.</p></div>\";\n    }\n\n    try {\n      setLoading(button, true);\n      const result = await api(\"/api/admin/members/\" + encodeURIComponent(lookup) + \"/profile?monthKey=\" + encodeURIComponent(monthKeyValue()), { timeoutMs: 20000, cacheMs: 15000 });\n      selectedMemberProfile = result.profile;\n      renderMemberProfile(result.profile);\n      setNotice(\"Loaded member profile \" + (result.profile.profile.memberNumber || result.profile.profile.subscriptionId) + \".\");\n    } catch (err) {\n      if (searchWorkspace) searchWorkspace.hidden = false;\n      if (profileWorkspace) profileWorkspace.hidden = true;\n      throw err;\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  function returnToMemberSearch() {\n    selectedMemberLookup = null;\n    selectedMemberProfile = null;\n    try { localStorage.removeItem(\"orbitAdminOpenMember\"); } catch (_) {}\n    const searchWorkspace = $(\"memberSearchWorkspace\");\n    const profileWorkspace = $(\"memberProfileWorkspace\");\n    if (profileWorkspace) profileWorkspace.hidden = true;\n    if (searchWorkspace) searchWorkspace.hidden = false;\n    if(state.memberSearchResult) renderMemberSearchResults(state.memberSearchResult);\n    document.querySelectorAll(\"#memberSearchResults .orbit-member-result\").forEach(function(card){ card.classList.remove(\"active\"); card.blur(); });\n    document.getElementById(\"memberSearchResults\")?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n    setNotice(\"Returned to member search results.\");\n  }\n\n  function profileDetail(label, value) {\n    return \"<div class='orbit-member-detail'><span>\" + esc(label) + \"</span><strong>\" + esc(value || \"\u2014\") + \"</strong></div>\";\n  }\n\n  function renderDeliveryAddressCard(delivery) {\n    delivery = delivery || {};\n    const lines = [\n      delivery.recipientName,\n      delivery.addressLine1,\n      delivery.addressLine2,\n      delivery.city,\n      delivery.county,\n      delivery.postcode,\n      delivery.country\n    ].filter(Boolean);\n    const complete = Boolean(delivery.complete && lines.length);\n    const source = [delivery.source, delivery.sourceOrderName ? (\"Order \" + delivery.sourceOrderName) : \"\", delivery.sourceCheckedAt ? (\"checked \" + memberDate(delivery.sourceCheckedAt)) : \"\"].filter(Boolean).join(\" \u00B7 \");\n    const sourceError = delivery.lastError ? ((delivery.lastErrorStatus ? \"HTTP \" + delivery.lastErrorStatus + \": \" : \"\") + delivery.lastError + (delivery.lastErrorAt ? \" \u00B7 \" + memberDate(delivery.lastErrorAt) : \"\")) : \"\";\n    return \"<section class='orbit-delivery-address-card\" + (complete ? \"\" : \" warning\") + \"'>\" +\n      \"<div><p class='orbit-kicker'>Delivery Address</p>\" + (complete ? \"\" : \"<h3>Address needs attention</h3>\") + \"</div>\" +\n      (complete ? \"<address>\" + lines.map(function(line){ return \"<span>\" + esc(line) + \"</span>\"; }).join(\"\") + \"</address>\" : \"<p>No complete delivery address is currently available for this member.</p>\") +\n      (sourceError ? \"<div class='orbit-notice warning'><strong>Last address sync problem</strong><br><span>\" + esc(sourceError) + \"</span></div>\" : \"\") +\n      \"<small>Orbit checks the latest available delivery address automatically when this profile opens\" + (source ? \". Source: \" + esc(source) : \"\") + \".</small>\" +\n      \"<div class='orbit-delivery-actions'><button type='button' data-address-action='recharge' data-address-lookup='\" + esc((selectedMemberProfile?.profile?.memberNumber || selectedMemberLookup || \"\")) + \"'>Sync Recharge</button><button type='button' class='secondary' data-address-action='shopify' data-address-lookup='\" + esc((selectedMemberProfile?.profile?.memberNumber || selectedMemberLookup || \"\")) + \"'>Sync Shopify</button><button type='button' class='secondary' data-address-action='edit' data-address-lookup='\" + esc((selectedMemberProfile?.profile?.memberNumber || selectedMemberLookup || \"\")) + \"'>Edit Address</button></div>\" +\n    \"</section>\";\n  }\n\n  function memberBillingDisplay(profile) {\n    const recharge = profile.recharge || {};\n    const last = profile.profile?.paymentPresentation?.last;\n    const nextDate = recharge.nextChargeDate || null;\n    const conflict = Boolean(last?.paidAt && nextDate && new Date(last.paidAt).getTime() > new Date(nextDate).getTime());\n    return {\n      lastCharge: last ? last.dateTimeLabel + \" / \" + (last.amount === null ? \"Amount unavailable\" : formatMoney(last.amount)) : \"No successful payment recorded\",\n      nextCharge: nextDate ? memberDate(nextDate) + \" / \" + (recharge.currentPriceFormatted || \"\u2014\") : \"No live next charge returned\",\n      conflict\n    };\n  }\n\n  function renderMemberTickets(tickets) {\n    const items = (tickets && tickets.items) || [];\n    if (!items.length) return \"<div class='orbit-empty'><strong>No issued member tickets</strong><p>This member has no active Orbit member/guest event tickets. If eligible, they can claim available tickets from the Members Area.</p></div>\";\n    return \"<div class='orbit-member-messages-heading'><div><p class='orbit-kicker'>Issued tickets</p><h3>Member event tickets</h3><p>Unissue or permanently delete an issued member ticket pair. Either action removes the current member + guest claim so an eligible active member can claim the event again.</p></div></div>\" +\n      items.map(function(ticket){\n        const checked = ticket.checkedInAt ? \" \u00B7 Checked in \" + esc(memberDate(ticket.checkedInAt)) : \"\";\n        return \"<article class='orbit-member-ticket-card'>\" +\n          \"<div><strong>\" + esc(ticket.eventName || \"Orbit event\") + \"</strong><p>\" + esc(ticket.ticketName || \"Member ticket\") + \" \u00B7 \" + esc(ticket.ticketId || \"No ticket ID\") + checked + \"</p><small>Issued \" + esc(memberDate(ticket.issuedAt)) + \"</small></div>\" +\n          \"<div class='orbit-action-row'>\" +\n            \"<button type='button' class='secondary' data-member-ticket-action='unissue' data-member-ticket-claim='\" + esc(ticket.claimKey || \"\") + \"'>Undo Issue</button>\" +\n            \"<button type='button' class='danger' data-member-ticket-action='delete' data-member-ticket-claim='\" + esc(ticket.claimKey || \"\") + \"'>Delete Ticket</button>\" +\n          \"</div>\" +\n        \"</article>\";\n      }).join(\"\");\n  }\n\n  function renderMemberTopUpsV712(rows=[]){if(!rows.length)return \"<div class='orbit-empty-state'><strong>No Member Credit top ups</strong><span>This member has no Shopify Member Credit checkout history yet.</span></div>\";return `<div class=\"orbit-panel\"><div class=\"orbit-panel-header\"><div><p class=\"orbit-kicker\">MEMBER CREDIT \u00B7 SUPPORT HISTORY</p><h3>Top ups</h3><p>Shopify payment, Orbit settlement and linked ledger state for this member.</p></div></div>${memberStoreTopUpsTableV712(rows)}</div>`;}\n  function renderMemberProfile(profile) {\n    const panel = $(\"memberProfilePanel\");\n    if (!panel || !profile) return;\n    const p = profile.profile || {};\n    const billing = profile.billing || {};\n    const delivery = profile.delivery || {};\n    const recharge = profile.recharge || {};\n    const shopify = profile.shopify || {};\n    const sharedBilling = Boolean(p.sharedBilling || recharge.sharedBilling || recharge.quantityReviewRequired);\n    const statusClass = p.statusKey === \"active\" ? \" active\" : \"\";\n    const memberRoute = String(billing.route || (profile.future && profile.future.acquisitionRoute) || p.acquisitionRoute || \"UNKNOWN\").toUpperCase();\n    const isUpgrade = memberRoute === \"EVENT_UPGRADE\";\n    const billingDisplay = memberBillingDisplay(profile);\n    const recovery = profile.paymentRecovery || p.paymentRecovery || {};\n    const paymentGrace = p.statusKey === \"payment_grace\" || String(p.paymentRecoveryStatus || \"\").toLowerCase() === \"grace\" || String(p.billingSyncStatus || recharge.billingSyncStatus || \"\").toLowerCase() === \"payment_grace\";\n    const paymentPending = p.statusKey === \"payment_pending\" || String(p.paymentRecoveryStatus || \"\").toLowerCase() === \"payment_pending\" || String(p.billingSyncStatus || recharge.billingSyncStatus || \"\").toLowerCase() === \"payment_pending\";\n    const paymentRecoveryActive = paymentGrace || paymentPending;\n    const billingCritical = !paymentRecoveryActive && String(p.billingSyncStatus || recharge.billingSyncStatus || \"\").toLowerCase() === \"critical\";\n    const attentionRequired = Boolean(billingCritical || paymentRecoveryActive || (profile.health && profile.health.ok === false) || p.supportFlag);\n    const recoveryHeading = paymentRecoveryActive ? (paymentGrace ? \"Payment recovery in progress\" : \"Payment waiting for Recharge\") : (attentionRequired ? \"Attention required\" : \"Everything looks on track\");\n    const recoveryPaymentTitle = paymentGrace ? \"PAYMENT DUE \u00B7 RETRYING\" : (paymentPending ? \"PAYMENT PENDING\" : (billingCritical ? \"BILLING SYNC REQUIRES REVIEW\" : (recharge.nextChargeDate ? memberDate(recharge.nextChargeDate) : \"Not available from Recharge\")));\n    const recoveryPaymentMeta = paymentRecoveryActive ? ([recovery.lastAttemptAt ? \"Last attempt \" + memberRetryDateV501(recovery.lastAttemptAt) : \"\", recovery.failureReason || \"\", recovery.nextRetryAt ? \"Next retry \" + memberRetryDateV501(recovery.nextRetryAt) : (paymentGrace ? \"Recharge retry schedule not returned\" : \"Waiting for provider result\"), recovery.graceThroughDate ? \"Grace through \" + memberDate(recovery.graceThroughDate) : \"\"].filter(Boolean).join(\" \u00B7 \")) : (billingCritical ? (\"Orbit contract: \" + memberDate(p.contractualNextChargeDate || recharge.contractualNextChargeDate || \"\u2014\") + \" \u00B7 Provider: \" + memberDate(p.providerQueuedChargeDate || recharge.queuedChargeDate || recharge.nextChargeDate || \"\u2014\")) : \"Recharge confirmed date\");\n    const supportCount = profile.support && profile.support.tickets ? profile.support.tickets.length : 0;\n    const currentParcel = (profile.fulfilment && profile.fulfilment.packs && profile.fulfilment.packs[0] && (profile.fulfilment.packs[0].fulfilmentStatus || profile.fulfilment.packs[0].status)) || \"No parcel\";\n\n    const advancedControls =\n      \"<details class='orbit-customer-advanced'><summary><span><strong>Advanced membership controls</strong><small>Lifecycle stage, technical IDs and integration data</small></span></summary><div class='orbit-customer-advanced-body'>\" +\n      \"<div class='orbit-member-lifecycle-panel'>\" +\n        \"<p class='orbit-kicker'>Admin Lifecycle Control</p>\" +\n        \"<p class='orbit-muted'>\" + (sharedBilling ? \"This membership shares one Recharge billing subscription with multiple Orbit membership cards. Manual lifecycle overrides are disabled so one card cannot accidentally change shared billing independently.\" : \"Move this member to any stage for testing or recovery. This updates the membership lifecycle and Recharge price. If the selected stage requires a parcel, Orbit creates or preserves the correct pack automatically. Use carefully on real customers.\") + \"</p>\" +\n        \"<div class='orbit-form-grid'>\" +\n          \"<label>Stage<select id='memberStageOverrideSelect'>\" +\n            \"<option value='1'\" + (Number(p.stage || 0) === 1 ? \" selected\" : \"\") + \">Stage 1 / \u00A31 signup / Pending</option>\" +\n            \"<option value='2'\" + (Number(p.stage || 0) === 2 ? \" selected\" : \"\") + \">Stage 2 / \u00A333.95 due / Pending</option>\" +\n            \"<option value='3'\" + (Number(p.stage || 0) === 3 ? \" selected\" : \"\") + \">Stage 3 / Active / first full payment complete</option>\" +\n            \"<option value='4'\" + (Number(p.stage || 0) === 4 ? \" selected\" : \"\") + \">Stage 4 / Active / intro renewal</option>\" +\n            \"<option value='5'\" + (Number(p.stage || 0) === 5 ? \" selected\" : \"\") + \">Stage 5 / Active / \u00A339.95 standard</option>\" +\n          \"</select></label>\" +\n          \"<label>Reason<input id='memberStageOverrideReason' value='\" + esc(isUpgrade ? \"Event Upgrade membership activation\" : \"Manual membership lifecycle correction\") + \"'></label>\" +\n        \"</div>\" +\n        \"<div class='orbit-action-row'><button type='button' data-member-action='set-stage'\" + (sharedBilling ? \" disabled title='Shared billing lifecycle is controlled by Recharge paid events'\" : \"\") + \">\" + (sharedBilling ? \"Shared Billing \u00B7 Stage Locked\" : \"Apply Stage\") + \"</button></div>\" +\n        \"<div id='memberLifecycleResult' class='orbit-result' style='min-height:54px;max-height:150px;'>Current stage: \" + esc(String(p.stage || 0)) + \" / \" + esc(p.currentPriceFormatted || \"\") + \"</div>\" +\n      \"</div>\" +\n      \"<div class='orbit-member-detail-grid'>\" +\n        profileDetail(\"Serial\", p.memberSerial) +\n        profileDetail(\"Current Price\", p.currentPriceFormatted) +\n        profileDetail(\"Stage\", String(p.stage || 0)) +\n        profileDetail(\"Member Since\", memberDate(p.memberSince)) +\n        profileDetail(\"Last Successful Charge\", billingDisplay.lastCharge) +\n        profileDetail(\"Next Recharge Charge\", billingDisplay.nextCharge) +\n        profileDetail(\"Current Parcel Month\", profile.future?.currentPackMonth || profile.future?.nextBoxDate || \"\u2014\") +\n        profileDetail(\"Orbit Membership ID\", p.subscriptionId) +\n        profileDetail(\"Recharge Billing Sub\", recharge.subscriptionId || p.billingSubscriptionId) +\n        (sharedBilling ? profileDetail(\"Membership Seat\", String(p.membershipSeat || recharge.membershipSeat || 1) + \" of \" + String(p.billingQuantity || recharge.billingQuantity || 1)) : \"\") +\n        profileDetail(\"Recharge Customer\", recharge.customerId) +\n        profileDetail(\"Billing Source\", recharge.source || \"Orbit cached from Recharge\") +\n        profileDetail(\"Recharge Refreshed\", memberDate(recharge.refreshedAt)) +\n        profileDetail(\"Recharge Status\", recharge.status || \"\u2014\") +\n        profileDetail(\"Shopify Customer\", shopify.customerId) +\n      \"</div>\" +\n      (billingDisplay.conflict ? \"<div class='orbit-notice warning'><strong>Recharge billing history needs review.</strong><br><span>The latest returned successful charge is later than the live next-charge date, so Orbit has hidden the contradictory date from the summary. Review the Billing tab before relying on the chronology.</span></div>\" : \"\") +\n      \"</div></details>\";\n\n    const profilePane = renderDeliveryAddressCard(delivery) + advancedControls + renderMemberHealth(profile.health || {}, p) + renderMemberOverview(profile, billing, delivery);\n    const communicationPane =\n      \"<div class='orbit-member-messages-heading'><div><p class='orbit-kicker'>Communication history</p><h3>Email and notification audit trail</h3><p>Review automated and manual communications sent to this member, including delivery status and resend history.</p></div></div>\" +\n      renderMemberCommunications(profile.communications || []);\n\n    panel.className = \"\";\n    panel.innerHTML =\n      \"<div class='orbit-member-workspace-back'><button type='button' class='secondary' data-member-back-search>\u2190 Back to Member Search</button></div>\" +\n      \"<section class='orbit-customer-attention orbit-member-overview-card \" + (attentionRequired ? \"warning\" : \"healthy\") + \"'>\" +\n        \"<div class='orbit-member-overview-heading'>\" +\n          \"<div class='orbit-member-overview-identity'><p class='orbit-kicker'>Member overview</p><h2>\" + esc(p.holderName || p.email || \"Unknown member\") + \"</h2><p class='orbit-member-overview-meta'><strong>\" + esc(p.memberNumber || \"No member number\") + \"</strong><span>\" + esc(p.email || \"No email\") + \"</span></p></div>\" +\n          \"<div class='orbit-member-refresh-block'><button type='button' class='secondary' data-member-action='refresh'>Refresh Profile</button><small class='orbit-member-sync-stamp'>Last synced<br><strong>\" + esc(memberDate(recharge.refreshedAt || p.updatedAt || profile.generatedAt)) + \"</strong></small></div>\" +\n        \"</div>\" +\n        \"<div class='orbit-member-overview-actions'>\" +\n          \"<button type='button' class='secondary' data-copy-value='\" + esc(p.memberNumber || \"\") + \"'>Copy Member Number</button>\" +\n          \"<button type='button' class='secondary' data-copy-value='\" + esc(p.email || \"\") + \"'>Copy Email</button>\" +\n          \"<button type='button' class='secondary' data-member-action='flag-support'>Flag for Attention</button>\" +\n          \"<button type='button' class='secondary' data-member-action='archive'>Archive Member</button>\" +\n          \"<button type='button' class='secondary' data-member-qr='png'>Download 40mm PNG</button>\" +\n          \"<button type='button' class='secondary' data-member-qr='svg'>Download SVG</button>\" +\n          (p.supportFlag ? \"<button type='button' class='secondary' data-member-action='clear-support-flag'>Clear Flag</button>\" : \"\") +\n        \"</div>\" +\n        \"<div class='orbit-member-overview-status'><h3>\" + esc(recoveryHeading) + \"</h3><span class='orbit-member-status\" + statusClass + \"'>\" + esc(p.status || \"Pending\") + \"</span></div>\" +\n        \"<div class='orbit-customer-attention-grid'>\" +\n          \"<span><small>Membership</small><strong>\" + esc(p.statusDisplay || p.status || \"Pending\") + \"</strong></span>\" +\n          \"<span><small>\" + (paymentRecoveryActive ? \"Payment recovery\" : \"Next payment queued for\") + \"</small><strong>\" + esc(recoveryPaymentTitle) + \"</strong><em>\" + esc(recoveryPaymentMeta) + \"</em></span>\" +\n          \"<span><small>Current parcel</small><strong>\" + esc(currentParcel) + \"</strong></span>\" +\n          \"<span><small>Support</small><strong>\" + esc(supportCount ? (supportCount + \" case\" + (supportCount === 1 ? \"\" : \"s\")) : \"No open cases\") + \"</strong></span>\" +\n        \"</div>\" +\n      \"</section>\" +\n      (p.cancelsAtPeriodEnd ? \"<div class='orbit-notice'><strong>Active \u00B7 Cancels at period end</strong><span>The current paid cycle remains fully active and its parcel stays funded. Automatic renewal is cancelled\" + (p.paidThroughCycle ? \" after \" + esc(p.paidThroughCycle) : \"\") + \".\" + (p.cancellationReason ? \" Recharge reason: \" + esc(p.cancellationReason) + \".\" : \"\") + \"</span></div>\" : \"\") +\n      (billingCritical ? \"<div class='orbit-notice warning'><strong>Critical Billing Sync</strong><span>\" + esc(p.billingSyncMessage || recharge.billingSyncMessage || \"Recharge billing does not match the Orbit contract. Use Members \u2192 Recharge Reconciliation \u2192 Billing Integrity to verify and repair the target subscription safely.\") + \"</span></div>\" : \"\") +\n      (paymentRecoveryActive ? \"<div class='orbit-notice warning'><strong>\" + (paymentGrace ? \"Payment Due \u00B7 Retrying\" : \"Payment Pending\") + \"</strong><span>\" + esc(p.billingSyncMessage || \"Paid benefits and the current parcel are paused until Recharge confirms a successful payment.\") + \"</span></div>\" : \"\") +\n      \"<div class='orbit-member-tabs' aria-label='Member profile sections'>\" +\n        \"<button class='active' type='button' data-member-pane-tab='overview'>Profile</button>\" +\n        \"<button type='button' data-member-pane-tab='billing'>Billing</button>\" +\n        \"<button type='button' data-member-pane-tab='topups'>Top ups</button>\" +\n        \"<button type='button' data-member-pane-tab='communications'>Communication History</button>\" +\n        \"<button type='button' data-member-pane-tab='timeline'>Timeline</button>\" +\n        \"<button type='button' data-member-pane-tab='fulfilment'>Parcels</button>\" +\n        \"<button type='button' data-member-pane-tab='rewards'>Rewards</button>\" +\n        \"<button type='button' data-member-pane-tab='support'>Support</button>\" +\n        \"<button type='button' data-member-pane-tab='tickets'>Tickets\" + ((profile.tickets && profile.tickets.count) ? \" (\" + esc(profile.tickets.count) + \")\" : \"\") + \"</button>\" +\n      \"</div>\" +\n      \"<div id='member-pane-overview' class='orbit-member-pane active'>\" + profilePane + \"</div>\" +\n      \"<div id='member-pane-billing' class='orbit-member-pane'>\" + renderMemberBilling(profile) + \"</div>\" +\n      \"<div id='member-pane-topups' class='orbit-member-pane'>\" + renderMemberTopUpsV712(profile.memberCreditTopUps || []) + \"</div>\" +\n      \"<div id='member-pane-communications' class='orbit-member-pane'>\" + communicationPane + \"</div>\" +\n      \"<div id='member-pane-timeline' class='orbit-member-pane'>\" + renderMemberTimeline(profile.timeline || []) + \"</div>\" +\n      \"<div id='member-pane-fulfilment' class='orbit-member-pane'>\" + renderMemberFulfilment(profile.fulfilment || {}) + \"</div>\" +\n      \"<div id='member-pane-rewards' class='orbit-member-pane'>\" + renderMemberRewards(profile.rewards || {}) + \"</div>\" +\n      \"<div id='member-pane-support' class='orbit-member-pane'>\" + renderMemberSupport(profile.support || {}) + \"</div>\" +\n      \"<div id='member-pane-tickets' class='orbit-member-pane'>\" + renderMemberTickets(profile.tickets || {}) + \"</div>\";\n    setActiveMemberPane(activeMemberPane);\n\n    // Bind the profile-local support button directly after every dynamic render.\n    // This avoids relying solely on the document delegate when the SPA profile is replaced.\n    panel.querySelector(\"[data-member-action='start-support']\")?.addEventListener(\"click\", function(event){\n      event.preventDefault();\n      event.stopPropagation();\n      try { startSelectedMemberSupportConversation(); }\n      catch (err) { setNotice(err.message || String(err), true); }\n    });\n    panel.querySelectorAll(\"[data-member-ticket-action]\").forEach(function(button){\n      button.addEventListener(\"click\", async function(event){\n        event.preventDefault();\n        const action = button.dataset.memberTicketAction;\n        const claimKey = button.dataset.memberTicketClaim;\n        const label = action === \"delete\" ? \"DELETE\" : \"UNISSUE\";\n        const warning = action === \"delete\"\n          ? \"Delete this issued member + guest ticket pair? The member will be able to claim again if still eligible.\"\n          : \"Undo issue for this member + guest ticket pair? The member will be able to claim again if still eligible.\";\n        if (!confirm(warning)) return;\n        if (action === \"delete\" && prompt(\"Type DELETE to permanently remove this issued ticket pair.\") !== \"DELETE\") return;\n        try {\n          setLoading(button, true);\n          const result = await api(\"/api/admin/members/\" + encodeURIComponent(selectedMemberLookup) + \"/tickets/\" + encodeURIComponent(claimKey) + \"/action\", {\n            method: \"POST\",\n            body: JSON.stringify({ action: action, monthKey: monthKeyValue(), operator: \"Orbit Admin\" })\n          });\n          if (result.profile) {\n            selectedMemberProfile = result.profile;\n            activeMemberPane = \"tickets\";\n            renderMemberProfile(result.profile);\n          } else await loadMemberProfile(selectedMemberLookup);\n          setNotice(action === \"delete\" ? \"Member ticket deleted. They can claim again if eligible.\" : \"Ticket issue undone. They can claim again if eligible.\");\n        } catch (err) {\n          setNotice(err.message || String(err), true);\n        } finally {\n          setLoading(button, false);\n        }\n      });\n    });\n  }\n\n  function setActiveMemberPane(name){\n    activeMemberPane = name || \"overview\";\n    document.querySelectorAll(\"[data-member-pane-tab]\").forEach(function(btn){ btn.classList.toggle(\"active\", btn.dataset.memberPaneTab === activeMemberPane); });\n    document.querySelectorAll(\".orbit-member-pane\").forEach(function(pane){ pane.classList.toggle(\"active\", pane.id === \"member-pane-\" + activeMemberPane); });\n  }\n\n  function renderMemberHealth(health, p) {\n    const checks = Array.isArray(health.checks) ? health.checks : [];\n    const overallClass = health.overall === \"problem\" ? \" error\" : (health.overall === \"warning\" ? \" warning\" : \"\");\n    return \"<div class='orbit-notice\" + overallClass + \"'><strong>Member Health: \" + esc(health.summary || \"No health checks returned.\") + \"</strong>\" +\n      (p.supportFlag ? \"<br><span>Manual flag: \" + esc(p.supportFlagNote || \"Needs attention\") + \"</span>\" : \"\") +\n      (checks.length ? \"<div class='orbit-mini-list' style='margin-top:12px;'>\" + checks.map(function(c){ return \"<div><strong>\" + esc(c.label || c.key || \"Check\") + \"</strong><br><span class='orbit-muted'>\" + esc(c.status || \"\u2014\") + \" \u00B7 \" + esc(c.message || \"\") + \"</span></div>\"; }).join(\"\") + \"</div>\" : \"\") +\n    \"</div>\";\n  }\n\n  function renderMemberOverview(profile, billing, delivery) {\n    const future = profile.future || {};\n    const p = profile.profile || {};\n    const route = String(billing.route || future.acquisitionRoute || \"UNKNOWN\").toUpperCase();\n    const isUpgrade = route === \"EVENT_UPGRADE\";\n    const paidLine = future.lastPaymentDisplay\n      ? \"\u2713 Latest payment recorded: \" + (future.firstPaymentAmount || \"amount unavailable\") + \" \u00B7 \" + future.lastPaymentDisplay.dateLabel\n      : (isUpgrade ? \"\u26A0 Upgrade route but no paid charge recorded yet.\" : \"\u00A31 signup route. First full \u00A333.95 payment not recorded yet.\");\n    const deliveryText = [delivery.recipientName, delivery.addressLine1, delivery.city, delivery.postcode].filter(Boolean).join(\", \");\n    const lifecycleItems = Array.isArray(billing.lifecycle) ? billing.lifecycle : [];\n    const lifecycleSchedule = Array.isArray(future.lifecycleSchedule) ? future.lifecycleSchedule : [];\n    const lifecycleHtml = lifecycleSchedule.length ? \"<div class='orbit-lifecycle-inspector'><div class='orbit-lifecycle-title'><strong>Full membership cycle</strong><span>Expected dates, charges and parcel months</span></div>\" + lifecycleSchedule.map(function(item){ return \"<div class='orbit-lifecycle-step'><span class='orbit-lifecycle-date'>\" + esc(item.paymentDisplay?.dateLabel || memberDate(item.date)) + \"</span><strong>\" + esc(item.paymentDisplay ? (item.paymentDisplay.amount == null ? \"Paid \u00B7 amount unavailable\" : \"\u00A3\" + Number(item.paymentDisplay.amount).toFixed(2)) : (item.amount > 0 ? (\"\u00A3\" + Number(item.amount).toFixed(2)) : \"No charge\")) + \"</strong><span>\" + esc(item.stageAfter || \"\") + \"</span><span>Parcel: \" + esc(item.parcelMonth || \"\u2014\") + \"</span><small>\" + esc(item.note || \"\") + \"</small></div>\"; }).join(\"\") + \"</div>\" : \"\";\n    const sourceBits = [delivery.source || \"not recorded\"];\n    if (delivery.sourceOrderName) sourceBits.push(\"Order \" + delivery.sourceOrderName);\n    if (delivery.sourceCheckedAt) sourceBits.push(\"Checked \" + memberDate(delivery.sourceCheckedAt));\n    return \"<div class='orbit-member-list'>\" +\n      \"<div class='orbit-member-row'><strong>Membership journey</strong><span>\" + esc(isUpgrade ? \"Upgrade route \u00B7 active immediately\" : \"\u00A31 signup route \u00B7 Members Area only until first full payment\") + \"</span><span>\" + esc(billing.currentStageExplanation || future.summary || \"\") + \"</span></div>\" +\n      \"<div class='orbit-member-row'><strong>Payment lifecycle</strong><span>\" + esc(paidLine) + \"</span><span>Next expected charge: \" + esc(future.expectedNextCharge || billing.nextExpectedPrice || \"\u2014\") + \" on \" + esc(future.nextRebillDate || \"\u2014\") + \"</span></div>\" +\n      \"<div class='orbit-member-row'><strong>Benefits</strong><span>Members Area: open</span><span>Benefits: \" + esc(future.benefitsActive ? \"active\" : \"locked until first \u00A333.95 payment\") + \" \u00B7 Prize draw: \" + esc(future.prizeEligibleNow ? \"eligible if active on draw day\" : \"not eligible yet\") + \"</span></div>\" +\n      \"<div class='orbit-member-row'><strong>Next member events</strong><span>First box: \" + esc(future.firstBoxDate || \"\u2014\") + \" \u00B7 Next box: \" + esc(future.nextBoxDate || \"\u2014\") + \"</span><span>Prize draw: \" + esc(future.prizeDrawDate || \"\u2014\") + \" \u00B7 Next renewal: \" + esc(future.nextRebillDate || \"\u2014\") + \"</span></div>\" +\n      \"<div class='orbit-member-row'><strong>Delivery address</strong><span>\" + esc(delivery.complete ? \"Complete\" : \"Missing / incomplete\") + \" \u00B7 \" + esc(deliveryText || \"No delivery address saved\") + \"</span><span>Source: \" + esc(sourceBits.join(\" \u00B7 \")) + \"</span></div>\" +\n      (Array.isArray(delivery.sourceCheckedSources) && delivery.sourceCheckedSources.length ? \"<div class='orbit-member-row'><strong>Address diagnostics</strong><span>Checked sources:</span><span>\" + esc(delivery.sourceCheckedSources.join(\", \")) + \"</span></div>\" : \"\") +\n      \"<div class='orbit-member-row'><strong>Current parcel</strong><span>\" + esc(future.currentPackStatus || \"waiting\") + \"</span><span>\" + esc(future.currentPackId || \"No current monthly parcel yet\") + \"</span></div>\" +\n      (lifecycleItems.length ? \"<div class='orbit-member-row'><strong>Route steps</strong><span>\" + esc(lifecycleItems.join(\" \u2192 \")) + \"</span></div>\" : \"\") +\n      lifecycleHtml +\n    \"</div>\";\n  }\n\n  function renderMemberBilling(profile) {\n    const recharge = profile.recharge || {};\n    const charges = Array.isArray(profile.billingHistory) ? profile.billingHistory : [];\n    const confidence = recharge.error\n      ? \"<div class='orbit-notice warning'><strong>Recharge live refresh failed.</strong><br><span>Showing cached Orbit data where available. \" + esc(recharge.error) + \"</span></div>\"\n      : \"<div class='orbit-notice'><strong>Billing source: \" + esc(recharge.source || \"Orbit cached from Recharge\") + \"</strong><br><span>Last refreshed: \" + esc(memberDate(recharge.refreshedAt)) + \". Next charge and price below come from the live Recharge subscription when available.</span></div>\";\n    const sharedBillingNotice = recharge.sharedBilling\n      ? \"<div class='orbit-notice warning'><strong>Shared Recharge billing subscription.</strong><br><span>This is Orbit membership seat \" + esc(String(recharge.membershipSeat || 1)) + \" of \" + esc(String(recharge.billingQuantity || 1)) + \". Recharge charges are shared by the quantity subscription; Orbit benefits, holder and fulfilment remain separate per membership card.\" + (recharge.quantityReviewRequired ? \" Quantity changed and requires operator review; no membership was removed automatically.\" : \"\") + \"</span></div>\"\n      : \"\";\n    const summary = \"<div class='orbit-member-detail-grid'>\" +\n      profileDetail(\"Subscription Status\", recharge.status || profile.profile?.status || profile.status || \"\u2014\") +\n      profileDetail(\"Next Charge Date\", memberDate(recharge.nextChargeDate)) +\n      profileDetail(\"Next Charge Amount\", recharge.currentPriceFormatted || \"\u2014\") +\n      profileDetail(\"Recharge Subscription\", recharge.subscriptionId || \"\u2014\") +\n      profileDetail(\"Recharge Customer\", recharge.customerId || \"\u2014\") +\n    \"</div>\";\n    const recovery = profile.paymentRecovery || profile.profile?.paymentRecovery || null;\n    const recoveryHtml = recovery ? \"<div class='orbit-notice warning'><strong>Recharge payment recovery detail</strong><br><span>Status: \" + esc(recovery.status || \"\u2014\") + \" \u00B7 Charge: \" + esc(recovery.chargeId || \"\u2014\") + \" \u00B7 Amount: \" + esc(recovery.amountFormatted || \"\u2014\") + \"</span><br><span>Last attempt: \" + esc(recovery.lastAttemptAt ? memberRetryDateV501(recovery.lastAttemptAt) : \"not returned\") + (recovery.failureReason ? \" \u00B7 Reason: \" + esc(recovery.failureReason) : \"\") + \"</span><br><span>Next retry: \" + esc(recovery.nextRetryAt ? memberRetryDateV501(recovery.nextRetryAt) : \"not returned by Recharge\") + (recovery.attemptCount !== null && recovery.attemptCount !== undefined ? \" \u00B7 Attempts: \" + esc(String(recovery.attemptCount)) : \"\") + \"</span><br><span>Grace cutoff: \" + esc(recovery.graceThroughDate ? memberDate(recovery.graceThroughDate) + \" close of business\" : \"\u2014\") + \" \u00B7 Benefits: \" + (recovery.benefitsPaused ? \"paused\" : \"available\") + \" \u00B7 Parcel: \" + (recovery.parcelPaused ? \"paused\" : \"eligible\") + \"</span><br><span>Next normal billing: \" + esc(recovery.nextNormalBillingDate ? memberDate(recovery.nextNormalBillingDate) : \"\u2014\") + \" \u00B7 Source: \" + esc(recovery.source || \"Recharge\") + \"</span></div>\" : \"\";\n    const attempt = profile.immediatePaymentAttempt || null;\n    const attemptStatus = String(attempt?.status || \"\").toLowerCase();\n    const permissionBlocked = attemptStatus === \"provider_permission_blocked\" || String(attempt?.processPermissionRequired || \"\").toLowerCase() === \"process_charge\";\n    const attemptWarning = [\"provider_uncertain\", \"provider_permission_blocked\", \"provider_rejected\"].includes(attemptStatus);\n    const permissionHtml = permissionBlocked\n      ? \"<br><span><strong>Recharge permission required:</strong> process_charge\" + (attempt.processHttpStatus ? \" \u00B7 HTTP \" + esc(String(attempt.processHttpStatus)) : \"\") + \". No immediate payment was accepted. Confirm the production Recharge API token can process queued charges before asking the member to try again.</span>\"\n      : \"\";\n    const providerRejectHtml = attempt?.processHttpStatus || attempt?.processProviderMessage\n      ? \"<br><span><strong>Provider process response:</strong>\" + (attempt.processHttpStatus ? \" HTTP \" + esc(String(attempt.processHttpStatus)) : \"\") + (attempt.processProviderMessage ? \" \u00B7 \" + esc(attempt.processProviderMessage) : \"\") + \".</span>\"\n      : \"\";\n    const retryHtml = attempt?.processRecoveryRetryRelease\n      ? \"<br><span>Process recovery attempt: \" + esc(attempt.processRecoveryRetryRelease) + (attempt.processRecoveryRetryAt ? \" at \" + esc(memberDate(attempt.processRecoveryRetryAt)) : \"\") + \".</span>\"\n      : (attempt?.permissionRetryRelease\n        ? \"<br><span>Permission recovery: \" + esc(attempt.permissionRetryRelease) + (attempt.permissionRetryAt ? \" at \" + esc(memberDate(attempt.permissionRetryAt)) : \"\") + \".</span>\"\n        : \"\");\n    const attemptHtml = attempt ? \"<div class='orbit-notice \" + (attemptWarning ? \"warning\" : \"\") + \"'><strong>Latest Upgrade Now / Reactivate attempt</strong><br><span>Orbit: \" + esc(attempt.status || \"\u2014\") + \" \u00B7 Recharge: \" + esc(attempt.providerStatus || \"not read yet\") + \" \u00B7 Amount: \" + esc(formatMoney(attempt.amount)) + \" \u00B7 Charge: \" + esc(attempt.chargeId || \"\u2014\") + \"</span><br><span>Provider read: \" + esc(attempt.providerReadSource === \"customer_delivery_schedule\" ? \"Customer Delivery Schedule\" : attempt.providerReadSource === \"process_response\" ? \"Process response\" : attempt.providerReadSource || \"not read yet\") + (attempt.chargeReadScopeForbidden ? \" (charge-history read forbidden; safe fallback used)\" : \"\") + \"</span><br><span>Submitted: \" + esc(attempt.processRequestedAt ? memberDate(attempt.processRequestedAt) : \"not submitted\") + \" \u00B7 Provider accepted: \" + esc(attempt.processAcceptedAt ? memberDate(attempt.processAcceptedAt) : \"not confirmed\") + \" \u00B7 Provider checked: \" + esc(attempt.providerCheckedAt ? memberDate(attempt.providerCheckedAt) : \"not checked\") + (attempt.error ? \" \u00B7 Error: \" + esc(attempt.error) : \"\") + \"</span>\" + permissionHtml + providerRejectHtml + retryHtml + \"</div>\" : \"\";\n    if (!charges.length) return confidence + sharedBillingNotice + summary + recoveryHtml + attemptHtml + \"<div class='orbit-member-row'><strong>No Recharge charge history returned</strong><span>This may mean no completed charges exist or Recharge did not return charge records for this subscription.</span></div>\";\n    return confidence + sharedBillingNotice + summary + recoveryHtml + attemptHtml + \"<div class='orbit-table-wrap'><table><thead><tr><th>Date / Time</th><th>Status</th><th>Amount</th><th>Refunded</th><th>Charge Reference</th><th>Source</th></tr></thead><tbody>\" + charges.map(function(c){ return \"<tr><td>\" + esc(c.paymentDisplay?.dateTimeLabel || \"Payment date unavailable\") + \"</td><td>\" + esc(c.status || \"\u2014\") + \"</td><td>\" + esc(c.amount === null ? \"Amount unavailable\" : formatMoney(c.amount)) + \" \" + esc(c.currency || \"GBP\") + \"</td><td>\" + esc(formatMoney(c.refundedAmount || 0)) + \"</td><td>\" + esc(c.chargeId || \"\u2014\") + \"</td><td>\" + esc(c.source || recharge.chargeHistorySource || 'Recharge') + \"</td></tr>\"; }).join(\"\") + \"</tbody></table></div>\";\n  }\n\n  function renderMemberCommunications(items) {\n    if (!items.length) return \"<div class='orbit-member-row'><strong>No communications recorded</strong><span>New Orbit emails will be persisted here after this release. Older messages may not exist because the previous log was memory-only.</span></div>\";\n    return \"<div class='orbit-table-wrap'><table><thead><tr><th>Sent</th><th>Type</th><th>Subject</th><th>Recipient</th><th>Status</th><th>Provider Ref</th><th>Action</th></tr></thead><tbody>\" + items.map(function(item){ return \"<tr><td>\" + esc(memberDate(item.createdAt)) + \"</td><td>\" + esc(item.type || \"email\") + \"</td><td>\" + esc(item.subject || \"\u2014\") + \"</td><td>\" + esc(item.to || \"\u2014\") + \"</td><td>\" + esc(item.status || \"\u2014\") + (item.error ? \"<br><small>\" + esc(item.error) + \"</small>\" : \"\") + \"</td><td>\" + esc(item.providerId || \"\u2014\") + \"</td><td><button type='button' class='secondary' data-member-communication-resend='\" + esc(item.id || \"\") + \"'>Resend</button></td></tr>\"; }).join(\"\") + \"</tbody></table></div>\";\n  }\n\n  function renderMemberTimeline(items) {\n    if (!items.length) return \"<div class='orbit-member-row'><strong>No timeline yet</strong><span>Events will appear as payments, packs, prize wins, Golden Tickets and support records are created.</span></div>\";\n    return \"<div class='orbit-member-timeline'>\" + items.slice(0, 35).map(item =>\n      \"<div class='orbit-member-timeline-item'><span>\" + esc(item.metadata?.paymentDisplay?.dateTimeLabel || memberDate(item.date)) + \" \u00B7 \" + esc(item.type || \"event\") + \"</span><strong>\" + esc(item.title || \"Timeline event\") + \"</strong><p>\" + esc(item.message || \"\") + \"</p></div>\"\n    ).join(\"\") + \"</div>\";\n  }\n\n  function renderMemberFulfilment(fulfilment) {\n    const packs = fulfilment.packs || [];\n    if (!packs.length) return \"<div class='orbit-member-row'><strong>No parcels yet</strong><span>Paid monthly parcel history will appear here when a parcel is created.</span></div>\";\n    return \"<div class='orbit-member-list'>\" + packs.map(pack =>\n      \"<div class='orbit-member-row'><strong>\" + esc(pack.monthKey || \"Parcel\") + \" \u00B7 \" + esc(pack.fulfilmentStatus || pack.status || \"pending\") + \"</strong><span>Tracking: \" + esc(pack.trackingNumber || \"Not added yet\") + \"</span>\" + (pack.replacementPackId ? \"<span>Replaced by: \" + esc(pack.replacementPackId) + \"</span>\" : \"\") + (pack.replacementOfPackId ? \"<span>Replacement for: \" + esc(pack.replacementOfPackId) + \"</span>\" : \"\") + \"<span>Created: \" + esc(memberDate(pack.createdAt)) + \"</span>\" + (pack.replacementOfPackId ? \"<div class='orbit-row-actions'><button type='button' class='secondary' data-pack-undo-reissue='\" + esc(pack.packId || \"\") + \"'>Undo Reissue</button></div>\" : (![\"replaced\",\"superseded\"].includes(String(pack.fulfilmentStatus || pack.status || \"\").toLowerCase()) ? \"<div class='orbit-row-actions'><button type='button' class='secondary' data-pack-reissue='\" + esc(pack.packId || \"\") + \"'>Reissue Parcel</button></div>\" : \"\")) + \"</div>\"\n    ).join(\"\") + \"</div>\";\n  }\n\n  function renderMemberRewards(rewards) {\n    const loyalty = rewards.loyalty || {};\n    const history = Array.isArray(loyalty.history) ? loyalty.history : [];\n    const prizes = rewards.prizes || [];\n    const golden = rewards.goldenTickets || [];\n    const loyaltyHtml = \"<section class='orbit-loyalty-dashboard'>\" +\n      \"<div class='orbit-loyalty-metrics'>\" +\n        profileDetail(\"Points Balance\", String(loyalty.pointsBalance || 0)) +\n        profileDetail(\"Lifetime Earned\", String(loyalty.lifetimeEarned || 0)) +\n        profileDetail(\"Lifetime Redeemed\", String(loyalty.lifetimeSpent || 0)) +\n        profileDetail(\"Reversed / Corrected\", String(loyalty.lifetimeReversed || 0)) +\n        profileDetail(\"Shows Attended\", String(loyalty.showsAttended || 0)) +\n      \"</div>\" +\n      \"<div class='orbit-loyalty-actions'><label>Points<input id='loyaltyPointsAmount' type='number' step='1' placeholder='100 or -25'></label><label>Reason<select id='loyaltyPointsReason'><option value='manual_bonus'>Manual bonus</option><option value='customer_service'>Customer service</option><option value='show_attendance'>Show attendance correction</option><option value='referral'>Referral correction</option><option value='other'>Other</option></select></label><label>Internal note<input id='loyaltyPointsNote' placeholder='Why are these points changing?'></label><button type='button' data-loyalty-adjust>Apply Points</button></div>\" +\n      \"<div class='orbit-action-row orbit-qr-actions'><button type='button' class='secondary' data-loyalty-test>Test QR Lookup</button></div>\" +\n      (loyalty.referrals ? \"<section class='orbit-referral-foundation'><h3>Referral Links</h3><div class='orbit-referral-grid'><div><span>Membership referrals</span><strong>\"+esc(loyalty.referrals.membershipReferrals||0)+\" completed</strong><input readonly value='\"+esc(loyalty.referrals.membershipUrl||\"\")+\"'><button type='button' class='secondary' data-copy-value='\"+esc(loyalty.referrals.membershipUrl||\"\")+\"'>Copy Membership Link</button></div><div><span>Ticket referrals</span><strong>\"+esc(loyalty.referrals.ticketReferrals||0)+\" completed</strong><input readonly value='\"+esc(loyalty.referrals.ticketUrl||\"\")+\"'><button type='button' class='secondary' data-copy-value='\"+esc(loyalty.referrals.ticketUrl||\"\")+\"'>Copy Ticket Link</button></div></div></section>\" : \"\") +\n      (loyalty.scanUrl ? \"<div class='orbit-result'><strong>Permanent scan address</strong><br><span>\" + esc(loyalty.scanUrl) + \"</span></div>\" : \"\") +\n      \"<h3>Points History</h3>\" + (history.length ? \"<div class='orbit-table-wrap'><table><thead><tr><th>Date</th><th>Points</th><th>Reason</th><th>Note</th><th>Action</th></tr></thead><tbody>\" + history.map(function(item){ return \"<tr><td>\"+esc(memberDate(item.createdAt))+\"</td><td><strong>\"+(Number(item.points)>0?\"+\":\"\")+esc(item.points)+\"</strong></td><td>\"+esc(String(item.reason||\"\").replaceAll(\"_\",\" \"))+\"</td><td>\"+esc(item.note||item.eventName||\"\u2014\")+\"</td><td>\"+(item.reversedAt||item.reversalOf?\"\u2014\":\"<button type='button' class='secondary' data-loyalty-reverse='\"+esc(item.id)+\"'>Reverse</button>\")+\"</td></tr>\"; }).join(\"\") + \"</tbody></table></div>\" : \"<div class='orbit-member-row'><strong>No points history yet</strong><span>Attendance, rebills, referrals and manual adjustments will appear here.</span></div>\") +\n    \"</section>\";\n    const parts = [];\n    prizes.forEach(prize => parts.push(\"<div class='orbit-member-row'><strong>Prize Draw \" + esc(prize.monthKey || \"\") + \"</strong><span>\" + esc(prize.prizeTitle || \"Monthly prize\") + \" \u00B7 \" + esc(humanStatus(prize.fulfilmentStatus || prize.status || \"pending\")) + \"</span></div>\"));\n    golden.forEach(ticket => parts.push(\"<div class='orbit-member-row'><strong>Golden Ticket \" + esc(ticket.code || \"\") + \"</strong><span>\" + esc(ticket.prizeTitle || \"Golden Ticket prize\") + \" \u00B7 \" + esc(ticket.status || \"active\") + \"</span></div>\"));\n    return loyaltyHtml + \"<h3>Prize and Golden Ticket History</h3>\" + (parts.length ? \"<div class='orbit-member-list'>\" + parts.join(\"\") + \"</div>\" : \"<div class='orbit-member-row'><strong>No prize rewards yet</strong><span>Prize wins and redeemed Golden Tickets will appear here.</span></div>\");\n  }\n\n  function renderMemberSupport(support) {\n    const tickets = support.tickets || [];\n    const heading = \"<div class='orbit-member-support-heading'><div><p class='orbit-kicker'>Member support</p><h3>Support conversations</h3><p>Open an existing thread or start a new conversation as Orbit.</p></div><button type='button' data-member-action='start-support'>New Support Conversation</button></div>\";\n    if (!tickets.length) return heading + \"<div class='orbit-customer-empty-state'><div><strong>No support conversations</strong><span>This member has no linked support history yet.</span></div></div>\";\n    return heading + \"<div class='orbit-member-list'>\" + tickets.map(function(ticket){\n      const status = String(ticket.status || \"open\").toLowerCase();\n      const friendly = status === \"closed\" ? \"Closed\" : ((ticket.lastSender === \"member\" || ticket.awaitingAdminReply) ? \"Awaiting Admin\" : \"Awaiting Member\");\n      return \"<article class='orbit-member-row orbit-support-row'><div><strong>\" + esc(ticket.ticketId || \"Ticket\") + \" \u00B7 \" + esc(friendly) + \"</strong><span>\" + esc(ticket.subject || \"No subject\") + \"</span><span>Updated: \" + esc(memberDate(ticket.updatedAt || ticket.createdAt)) + \"</span></div><button type='button' data-support-open='\" + esc(ticket.ticketId || ticket.id || ticket._id || \"\") + \"'>Open Conversation</button></article>\";\n    }).join(\"\") + \"</div>\";\n  }\n\n\n  async function refreshSelectedMember(button) {\n    if (!selectedMemberLookup) throw new Error(\"Select a member first.\");\n    const lookup = selectedMemberLookup;\n    const pane = activeMemberPane;\n    const scrollY = window.scrollY;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/members/\" + encodeURIComponent(lookup) + \"/refresh\", {\n        method: \"POST\",\n        body: JSON.stringify({ monthKey: monthKeyValue() })\n      });\n      selectedMemberLookup = lookup;\n      activeMemberPane = pane;\n      selectedMemberProfile = result.profile;\n      renderMemberProfile(result.profile);\n      requestAnimationFrame(function(){ window.scrollTo({ top: scrollY, behavior: \"instant\" }); });\n      setNotice(result.message || \"Member profile refreshed successfully.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function flagSelectedMember() {\n    if (!selectedMemberLookup) throw new Error(\"Select a member first.\");\n    const note = window.prompt(\"Support flag note\", \"Needs admin attention\");\n    if (note === null) return;\n    const result = await api(\"/api/admin/members/\" + encodeURIComponent(selectedMemberLookup) + \"/flag-support\", {\n      method: \"POST\",\n      body: JSON.stringify({ note: note })\n    });\n    selectedMemberProfile = result.profile;\n    renderMemberProfile(result.profile);\n    if ($(\"memberSearchWorkspace\")) $(\"memberSearchWorkspace\").hidden = true;\n    if ($(\"memberProfileWorkspace\")) $(\"memberProfileWorkspace\").hidden = false;\n    setNotice(\"Member flagged for support.\");\n  }\n\n  async function clearSelectedMemberFlag() {\n    if (!selectedMemberLookup) throw new Error(\"Select a member first.\");\n    const result = await api(\"/api/admin/members/\" + encodeURIComponent(selectedMemberLookup) + \"/clear-support-flag\", { method: \"POST\", body: JSON.stringify({}) });\n    selectedMemberProfile = result.profile;\n    renderMemberProfile(result.profile);\n    if ($(\"memberSearchWorkspace\")) $(\"memberSearchWorkspace\").hidden = true;\n    if ($(\"memberProfileWorkspace\")) $(\"memberProfileWorkspace\").hidden = false;\n    setNotice(\"Member support flag cleared.\");\n  }\n\n\n  async function setSelectedMemberStage(button) {\n    if (!selectedMemberLookup) throw new Error(\"Select a member first.\");\n    const stage = Number($(\"memberStageOverrideSelect\")?.value || 1);\n    const reason = String($(\"memberStageOverrideReason\")?.value || \"Manual membership lifecycle correction\").trim();\n    const resultBox = $(\"memberLifecycleResult\");\n    if (resultBox) resultBox.textContent = \"Applying stage \" + stage + \" and ensuring any required pack...\";\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/members/\" + encodeURIComponent(selectedMemberLookup) + \"/stage\", {\n        method: \"POST\",\n        body: JSON.stringify({ stage: stage, reason: reason, monthKey: monthKeyValue() })\n      });\n      selectedMemberProfile = result.profile;\n      renderMemberProfile(result.profile);\n      const refreshedResultBox = $(\"memberLifecycleResult\");\n      if (refreshedResultBox) {\n        const lines = [\n          \"Membership changed successfully.\",\n          result.stageLabel || (\"Stage \" + stage),\n          result.packAction || (stage >= 3 ? \"Paid monthly parcel checked.\" : \"Pending membership confirmed.\"),\n          \"Member overview and billing dates refreshed.\"\n        ];\n        refreshedResultBox.textContent = lines.filter(Boolean).join(\"\\n\");\n      }\n      await Promise.all([searchMembers(null), loadSummary(), loadFulfilment(), loadEvents()]);\n      setNotice(\"Member lifecycle stage updated.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function generatePackForSelectedMember(button) {\n    if (!selectedMemberLookup) throw new Error(\"Select a member first.\");\n    const resultBox = $(\"memberLifecycleResult\");\n    if (resultBox) resultBox.textContent = \"Generating or repairing current month pack row...\";\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/members/\" + encodeURIComponent(selectedMemberLookup) + \"/generate-pack\", {\n        method: \"POST\",\n        body: JSON.stringify({ monthKey: monthKeyValue(), force: true, reason: \"Manual admin pack generation for testing/recovery\" })\n      });\n      selectedMemberProfile = result.profile;\n      renderMemberProfile(result.profile);\n      if ($(\"memberLifecycleResult\")) {\n        const pack = result.pack || result.packResult?.pack || {};\n        $(\"memberLifecycleResult\").textContent = (result.created ? \"Created\" : \"Repaired\") + \" current month pack\" + (pack.packId ? \": \" + pack.packId : \".\") + \"\\nDelivery: \" + (pack.delivery && pack.delivery.addressLine1 ? \"ready for label\" : \"missing/incomplete\") + \".\";\n      }\n      await Promise.all([loadFulfilment(), loadSummary(), loadEvents()]);\n      setNotice(\"Member pack row generated/repaired.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  function resetRechargeMembershipPreviewV473(message) {\n    rechargeMembershipPreviewV473 = null;\n    const reconcileButton = $(\"rechargeSyncEmailButton\");\n    if (reconcileButton) {\n      reconcileButton.disabled = true;\n      reconcileButton.textContent = \"Reconcile Missing Memberships\";\n    }\n    const target = $(\"rechargeSyncResult\");\n    if (target) {\n      target.innerHTML = \"<div class='orbit-recharge-reconcile-empty-v473'><strong>Nothing has been changed.</strong><span>\" + esc(message || \"Enter the customer's email and check Recharge first.\") + \"</span></div>\";\n    }\n  }\n\n  function renderRechargeSyncResult(result, mode) {\n    const target = $(\"rechargeSyncResult\");\n    if (!target) return;\n    const isPreview = mode === \"preview\" || result?.mode === \"preview\";\n    const quantity = Number(result?.rechargeQuantity || 0);\n    const before = Number(result?.orbitMembershipsBefore || 0);\n    const after = isPreview ? before : Number(result?.orbitMembershipsAfter ?? before);\n    const missing = Number(isPreview ? result?.missingMembershipSeats : result?.missingMembershipSeatsBefore || 0);\n    const created = Number(result?.membersCreated || 0);\n    const subscriptions = Array.isArray(result?.subscriptions) ? result.subscriptions : (Array.isArray(result?.results) ? result.results : []);\n    const statusClass = !result?.rechargeSubscriptionsFound ? \"warning\" : ((isPreview && missing > 0) || (!isPreview && created > 0) ? \"attention\" : \"good\");\n    const statusTitle = !result?.rechargeSubscriptionsFound\n      ? \"No Recharge subscription found\"\n      : isPreview\n        ? (missing > 0 ? \"Missing Orbit membership seats found\" : \"Recharge and Orbit membership counts already match\")\n        : (created > 0 ? \"Membership reconciliation completed\" : \"Reconciliation rerun complete \u2014 no duplicates created\");\n    const stats = [\n      [\"Recharge quantity\", quantity],\n      [\"Orbit memberships before\", before],\n      [isPreview ? \"Missing memberships\" : \"Memberships created\", isPreview ? missing : created],\n      [\"Orbit memberships after\", after]\n    ];\n    const detailRows = subscriptions.map(function (item) {\n      const itemQuantity = Number(item?.quantity || 0);\n      const itemBefore = Number(item?.orbitMembershipsBefore || 0);\n      const itemAfter = isPreview ? itemBefore : Number(item?.orbitMembershipsAfter ?? itemBefore);\n      const itemMissing = Number(isPreview ? item?.missingMembershipSeats : item?.missingMembershipSeatsBefore || 0);\n      const itemCreated = Number(item?.membersCreated || 0);\n      const seatList = (item?.membershipSeats || item?.existingSeats || []).map(function (seat) {\n        const number = seat?.memberNumber || \"Member number pending\";\n        const index = Number(seat?.seatIndex || 0) || 1;\n        const action = seat?.action ? \" \u00B7 \" + humanStatus(seat.action) : \"\";\n        return \"<li><strong>Seat \" + esc(index) + \"</strong><span>\" + esc(number) + action + \"</span></li>\";\n      }).join(\"\");\n      return \"<article class='orbit-recharge-subscription-v473'>\" +\n        \"<div><strong>Recharge subscription \" + esc(item?.rechargeSubscriptionId || item?.subscriptionId || \"\u2014\") + \"</strong><span>Quantity \" + esc(itemQuantity) + \" \u00B7 Orbit before \" + esc(itemBefore) + \" \u00B7 \" + (isPreview ? \"Missing \" + esc(itemMissing) : \"Created \" + esc(itemCreated) + \" \u00B7 Orbit after \" + esc(itemAfter)) + \"</span></div>\" +\n        (seatList ? \"<ul>\" + seatList + \"</ul>\" : \"\") +\n        (item?.requiresQuantityReductionReview ? \"<p class='orbit-recharge-review-warning-v473'>Recharge quantity is lower than Orbit membership records. No membership was removed automatically; operator review is required.</p>\" : \"\") +\n      \"</article>\";\n    }).join(\"\");\n    target.innerHTML =\n      \"<div class='orbit-recharge-reconcile-status-v473 \" + statusClass + \"'><strong>\" + esc(statusTitle) + \"</strong><span>\" + esc(result?.message || \"Recharge reconciliation check complete.\") + \"</span></div>\" +\n      \"<div class='orbit-recharge-reconcile-stats-v473'>\" + stats.map(function (row) { return \"<div><span>\" + esc(row[0]) + \"</span><strong>\" + esc(row[1]) + \"</strong></div>\"; }).join(\"\") + \"</div>\" +\n      (detailRows ? \"<div class='orbit-recharge-subscriptions-v473'>\" + detailRows + \"</div>\" : \"\") +\n      \"<p class='orbit-recharge-boundary-v473'><strong>Billing safety:</strong> this reconciliation never changes Recharge quantity and never creates another Recharge billing subscription. Missing Orbit membership seats only are reconciled.</p>\";\n  }\n\n  async function previewRechargeByEmailV473(button) {\n    const email = String($(\"rechargeSyncEmailInput\")?.value || $(\"memberSearchInput\")?.value || \"\").trim().toLowerCase();\n    if (!email || !email.includes(\"@\")) throw new Error(\"Enter the Recharge customer email to check.\");\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/recharge-sync/preview-email\", {\n        method: \"POST\",\n        body: JSON.stringify({ email: email })\n      });\n      result.message = result.message || \"Recharge preview complete. Nothing has been changed.\";\n      rechargeMembershipPreviewV473 = { ...result, email: email };\n      renderRechargeSyncResult(result, \"preview\");\n      const reconcileButton = $(\"rechargeSyncEmailButton\");\n      if (reconcileButton) {\n        reconcileButton.disabled = Number(result.rechargeSubscriptionsFound || 0) < 1;\n        reconcileButton.textContent = Number(result.missingMembershipSeats || 0) > 0 ? \"Reconcile Missing Memberships\" : \"Run Reconciliation Again\";\n      }\n      if ($(\"memberSearchInput\")) $(\"memberSearchInput\").value = email;\n      setNotice(\"Recharge membership check completed. Nothing has been changed.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function syncRechargeByEmail(button) {\n    const email = String($(\"rechargeSyncEmailInput\")?.value || $(\"memberSearchInput\")?.value || \"\").trim().toLowerCase();\n    if (!email || !email.includes(\"@\")) throw new Error(\"Enter the Recharge customer email to sync.\");\n    if (!rechargeMembershipPreviewV473 || rechargeMembershipPreviewV473.email !== email) {\n      throw new Error(\"Check Recharge first. Orbit will not run membership reconciliation until the current email has been previewed.\");\n    }\n    const quantity = Number(rechargeMembershipPreviewV473.rechargeQuantity || 0);\n    const before = Number(rechargeMembershipPreviewV473.orbitMembershipsBefore || 0);\n    const missing = Number(rechargeMembershipPreviewV473.missingMembershipSeats || 0);\n    const confirmMessage = missing > 0\n      ? \"Recharge reports quantity \" + quantity + \" and Orbit currently has \" + before + \" membership(s). Reconcile \" + missing + \" missing Orbit membership seat(s)? Recharge billing quantity will NOT be changed.\"\n      : \"Recharge and Orbit already appear to match. Run reconciliation again to prove the operation is idempotent? No Recharge billing changes will be made.\";\n    if (typeof window.confirm === \"function\" && !window.confirm(confirmMessage)) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/recharge-sync/email/\" + encodeURIComponent(email), { method: \"POST\" });\n      result.message = result.message || \"Recharge membership reconciliation completed.\";\n      renderRechargeSyncResult(result, \"sync\");\n      rechargeMembershipPreviewV473 = {\n        success: true,\n        mode: \"preview\",\n        email: email,\n        rechargeCustomersFound: result.rechargeCustomersFound,\n        rechargeSubscriptionsFound: result.rechargeSubscriptionsFound,\n        rechargeQuantity: result.rechargeQuantity,\n        orbitMembershipsBefore: result.orbitMembershipsAfter,\n        missingMembershipSeats: Math.max(0, Number(result.rechargeQuantity || 0) - Number(result.orbitMembershipsAfter || 0)),\n        quantityReductionReviews: result.quantityReductionReviews || 0,\n        subscriptions: (result.results || []).map(function (item) {\n          return {\n            ...item,\n            orbitMembershipsBefore: item.orbitMembershipsAfter,\n            missingMembershipSeats: Math.max(0, Number(item.quantity || 0) - Number(item.orbitMembershipsAfter || 0)),\n            existingSeats: item.membershipSeats || []\n          };\n        })\n      };\n      button.textContent = \"Run Reconciliation Again\";\n      button.disabled = false;\n      if ($(\"memberSearchInput\")) $(\"memberSearchInput\").value = email;\n      await Promise.all([searchMembers(null), loadSummary()]);\n      setNotice(Number(result.membersCreated || 0) > 0 ? \"Missing Orbit membership seat created safely.\" : \"Recharge reconciliation rerun complete \u2014 no duplicate membership created.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function syncRechargeByCustomer(button) {\n    const customerId = String($(\"rechargeSyncCustomerInput\")?.value || \"\").trim();\n    if (!customerId) throw new Error(\"Enter the Recharge customer ID to sync.\");\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/recharge-sync/customer/\" + encodeURIComponent(customerId), { method: \"POST\" });\n      renderRechargeSyncResult(result, \"sync\");\n      if (result.email && $(\"memberSearchInput\")) $(\"memberSearchInput\").value = result.email;\n      await searchMembers(null);\n      setNotice(\"Recharge customer sync completed.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  function renderBillingIntegrityV482(result) {\n    const target=$(\"billingIntegrityResult\"); if(!target)return;\n    const rows=Array.isArray(result?.rows)?result.rows:[];\n    const checkout=result?.directSignupCheckoutIntegrity||null;\n    const checkoutLine=checkout?(\"<div class='orbit-recharge-reconcile-status-v473 \"+(Number(checkout.stillCritical||0)>0||checkout.success===false?\"warning\":\"good\")+\"'><strong>Direct \u00A31 Shopify checkout integrity</strong><span>Re-read \"+esc(Number(checkout.checked||0))+\" previously critical Shopify order(s): \"+esc(Number(checkout.verified||0))+\" verified, \"+esc(Number(checkout.stillCritical||0))+\" still critical\"+(Number((checkout.errors||[]).length)?\" \u00B7 \"+esc((checkout.errors||[]).length)+\" lookup error(s)\":\"\")+\".</span></div>\"):\"\";\n    target.innerHTML=checkoutLine+\"<div class='orbit-recharge-reconcile-status-v473 \"+(Number(result?.critical||0)>0?\"warning\":\"good\")+\"'><strong>\"+esc(Number(result?.critical||0)>0?\"Billing mismatch found\":\"Pending billing verified\")+\"</strong><span>Checked \"+esc(Number(result?.total||0))+\" pending \u00A31 subscription(s): \"+esc(Number(result?.verified||0))+\" verified, \"+esc(Number(result?.critical||0))+\" critical.</span></div>\"+\n      (rows.length?\"<div class='orbit-recharge-subscriptions-v473'>\"+rows.map(function(row){return \"<article class='orbit-recharge-subscription-v473'><div><strong>\"+esc(row.memberNumber||row.email||row.subscriptionId)+\"</strong><span>Expected \"+esc(row.expectedDate||\"\u2014\")+\" \u00B7 Recharge Charge \"+esc(row.chargeId||\"not found\")+\" \u00B7 Actual \"+esc(row.actualDate||\"\u2014\")+\" \u00B7 \"+esc(row.actualUnitPrice==null?\"price unknown\":\"\u00A3\"+Number(row.actualUnitPrice).toFixed(2))+\"</span></div><span class='orbit-recharge-safe-badge-v473'>\"+esc(row.verified?\"Verified\":\"CRITICAL\")+\"</span>\"+(row.verified?\"\":\"<button type='button' class='secondary' data-billing-repair='\"+esc(row.subscriptionId)+\"'>Verify & Repair</button>\")+\"</article>\";}).join(\"\")+\"</div>\":\"\");\n  }\n\n  async function checkBillingIntegrityV482(button){ setLoading(button,true); try{const result=await api(\"/api/admin/members/billing-integrity\");renderBillingIntegrityV482(result);setNotice(Number(result.critical||0)>0?\"Billing integrity check found provider mismatches.\":\"Pending \u00A31 billing matches Recharge queued Charges.\",Number(result.critical||0)>0);}finally{setLoading(button,false);} }\n  function ensureRechargeEntitlementAuditV665(){\n    const host=$(\"rechargeReconciliationWorkspace\");if(!host)return null;let panel=$(\"rechargeEntitlementAuditV665\");if(panel)return panel;\n    panel=document.createElement('article');panel.id='rechargeEntitlementAuditV665';panel.className='orbit-recharge-reconcile-v473';panel.innerHTML='<div class=\"orbit-recharge-reconcile-head-v473\"><div><p class=\"orbit-kicker\">Recharge Entitlement Audit</p><h3>Reconcile every member, payment and parcel</h3><p>Reads Recharge status and the current-cycle charge, then compares Orbit status and parcel entitlement. It never clicks Process now or creates a provider charge.</p></div><span class=\"orbit-recharge-safe-badge-v473\">Provider read-only</span></div><div class=\"orbit-recharge-reconcile-controls-v473\"><button id=\"rechargeEntitlementAuditButtonV665\" type=\"button\" class=\"secondary\">Audit All Members</button><button id=\"rechargeEntitlementReconcileButtonV665\" type=\"button\">Reconcile Safe Local State</button></div><div id=\"rechargeEntitlementAuditResultV665\" class=\"orbit-recharge-reconcile-result-v473\" aria-live=\"polite\"><div class=\"orbit-recharge-reconcile-empty-v473\"><strong>Not checked yet.</strong><span>Audit compares Recharge subscription/charge truth with Orbit member status and funded parcel entitlement.</span></div></div><hr><div class=\"orbit-recharge-reconcile-head-v473\"><div><p class=\"orbit-kicker\">Protected parcel cleanup</p><h3>Remove impossible pre-September parcel records</h3><p>September 2026 was the first real Members Club parcel cycle. This tool deletes only invalid parcel/fulfilment rows; member, billing and payment records are never deleted.</p></div><span class=\"orbit-recharge-safe-badge-v473\">Dry run first</span></div><div class=\"orbit-recharge-reconcile-controls-v473\"><button id=\"parcelIntegrityPreviewButtonV669\" type=\"button\" class=\"secondary\">Preview Parcel Cleanup</button><button id=\"parcelIntegrityApplyButtonV669\" type=\"button\" disabled>Purge Proven Invalid Parcels</button></div><div id=\"parcelIntegrityResultV669\" class=\"orbit-recharge-reconcile-result-v473\" aria-live=\"polite\"><div class=\"orbit-recharge-reconcile-empty-v473\"><strong>Not checked yet.</strong><span>Preview lists the exact parcel rows eligible for permanent deletion before anything is removed.</span></div></div>';\n    host.appendChild(panel);return panel;\n  }\n  function renderRechargeEntitlementAuditV665(result){const target=$(\"rechargeEntitlementAuditResultV665\");if(!target)return;const counts=result?.counts||{},rows=result?.rows||[],errors=result?.errors||[];const currentOk=Number(counts.currentCycleMismatchSeats||0)===0&&Number(counts.currentCycleFundedSeats||0)===Number(counts.currentCycleParcels||0);const cards=`<div class=\"orbit-dashboard-kpis\"><article class=\"orbit-metric\"><span>Members checked</span><strong>${Number(counts.members||0)}</strong><small>${Number(counts.billingSubscriptions||0)} Recharge subscriptions</small></article><article class=\"orbit-metric\"><span>Current funded seats</span><strong>${Number(counts.currentCycleFundedSeats||0)}</strong><small>${Number(counts.currentCycleParcels||0)} current parcel(s) \u00B7 ${Number(counts.currentCycleMismatchSeats||0)} mismatch(es)</small></article><article class=\"orbit-metric\"><span>Payment Pending</span><strong>${Number(counts.paymentPending||0)}</strong><small>Queued / draft / processing</small></article><article class=\"orbit-metric\"><span>Payment Due</span><strong>${Number(counts.paymentDue||0)}</strong><small>Failed charge recovery</small></article></div><div class=\"orbit-action-result ${currentOk?'success':'warning'}\"><strong>${currentOk?'Current fulfilment reconciles to successful payments.':'Current fulfilment still needs reconciliation.'}</strong> Funded seats ${Number(counts.currentCycleFundedSeats||0)} \u00B7 current parcels ${Number(counts.currentCycleParcels||0)} \u00B7 mismatched seats ${Number(counts.currentCycleMismatchSeats||0)}. ${Number(counts.prelaunchParcelsRetired||0)} impossible pre-September parcel(s), ${Number(counts.unfundedCurrentParcelsRetired||0)} unfunded current parcel(s), and ${Number(counts.satisfiedHistoricalDuplicatesRetired||0)} satisfied historical duplicate(s) were retired on this run.</div>`;const table=rows.length?`<div class=\"orbit-table-wrap\"><table><thead><tr><th>Member</th><th>Recharge</th><th>Charge</th><th>Orbit</th><th>Funded cycle</th><th>Current cycle</th><th>Parcel</th><th>Sequence</th><th>Why</th></tr></thead><tbody>${rows.map(r=>`<tr><td><strong>${esc(r.memberNumber||r.subscriptionId)}</strong><small>${esc(r.email||'')}</small></td><td>${esc(r.rechargeStatus||'\u2014')}<small>${esc(r.billingSubscriptionId||'')}</small></td><td>${esc(r.chargeStatus||'\u2014')}<small>${esc(r.scheduledAt?prettyDate(r.scheduledAt):'')}</small></td><td><strong>${esc(r.orbitStatus||'\u2014')}</strong>${r.orbitStatusBefore&&r.orbitStatusBefore!==r.orbitStatus?`<small>was ${esc(r.orbitStatusBefore)}</small>`:''}</td><td>${esc(r.expectedFundedCycle||'\u2014')}</td><td>${r.hasSuccessfulCurrentCycleFunding?'Funded':'Not funded'}<small>${r.currentCycleParcelExists?`${Number(r.currentCycleParcelCount||1)} parcel(s)`:'No current parcel'}</small></td><td>${r.parcelExists?`Yes${Number(r.parcelCount||0)>1?` (${Number(r.parcelCount)})`:''}`:'No'}</td><td>${r.actualParcelSequence?`Parcel ${Number(r.actualParcelSequence)}`:`Expected Parcel ${Number(r.expectedParcelSequence||1)}`}<small>${Number(r.priorFundedParcels||0)} prior funded parcel(s)</small></td><td>${esc(r.discrepancyReason||'')}</td></tr>`).join('')}</tbody></table></div>`:'<p>No linked Recharge memberships were returned.</p>';const err=errors.length?`<div class=\"orbit-action-result error\"><strong>${errors.length} item(s) need review.</strong> ${esc(errors.slice(0,3).map(x=>x.error).join(' \u00B7 '))}</div>`:'';target.innerHTML=cards+err+table;}\n  async function loadRechargeEntitlementAuditV665(button,apply=false){setLoading(button,true);const other=$(apply?'rechargeEntitlementAuditButtonV665':'rechargeEntitlementReconcileButtonV665');if(other)other.disabled=true;try{const result=await api('/api/admin/members/recharge-entitlement-audit'+(apply?'/reconcile':''),{method:apply?'POST':'GET',body:apply?'{}':undefined,cacheMs:0,timeoutMs:120000});renderRechargeEntitlementAuditV665(result);if(apply){await loadMemberSummary();setNotice(`Recharge reconciliation complete: ${Number(result.counts?.reconciledGroups||0)} billing group(s) updated, ${Number(result.counts?.missingExpectedParcels||0)} funded parcel mismatch(es) remain.`,Boolean(result.counts?.errors));}return result;}finally{setLoading(button,false);if(other)other.disabled=false;}}\n  function renderParcelIntegrityPreviewV669(result){const target=$('parcelIntegrityResultV669'),apply=$('parcelIntegrityApplyButtonV669');if(!target)return;const c=result?.counts||{},pre=result?.preSeptemberCandidates||[],sep=result?.septemberOutstandingCandidates||[],candidates=[...pre,...sep],unsafe=result?.unsafePreSeptember||[];if(apply)apply.disabled=!result?.safe||!candidates.length;const rows=candidates.map(x=>({...x,reason:String(x.month_key||'')<'2026-09'?'Impossible pre-September parcel entitlement':'Stale unshipped September outstanding parcel'}));target.innerHTML=`<div class=\"orbit-dashboard-kpis\"><article class=\"orbit-metric\"><span>Delete candidates</span><strong>${Number(c.totalDelete||rows.length||0)}</strong><small>Invalid parcel rows only</small></article><article class=\"orbit-metric\"><span>Pre-September</span><strong>${Number(c.preSeptemberDelete||0)}</strong><small>July/August impossible entitlements</small></article><article class=\"orbit-metric\"><span>Stale September</span><strong>${Number(c.septemberOutstandingDelete||0)}</strong><small>Unshipped operational rows</small></article><article class=\"orbit-metric\"><span>Unsafe / review</span><strong>${Number(c.unsafe||unsafe.length||0)}</strong><small>Shipping evidence blocks auto-delete</small></article></div>${unsafe.length?`<div class=\"orbit-action-result warning\"><strong>${unsafe.length} pre-September row(s) were NOT selected for deletion.</strong> They have shipping/tracking evidence and require manual review.</div>`:''}${rows.length?`<div class=\"orbit-table-wrap\"><table><thead><tr><th>Member</th><th>Funded cycle</th><th>Status</th><th>Reason</th><th>Pack ID</th></tr></thead><tbody>${rows.map(x=>`<tr><td><strong>${esc(x.member_number||x.subscription_id||'Unknown seat')}</strong></td><td>${esc(x.month_key||'\u2014')}</td><td>${esc(x.fulfilment_status||x.status||'\u2014')}</td><td>${esc(x.reason)}</td><td>${esc(x.pack_id||'\u2014')}</td></tr>`).join('')}</tbody></table></div>`:'<div class=\"orbit-action-result success\"><strong>No invalid parcel rows found.</strong></div>'}`;}\n  async function loadParcelIntegrityV669(button,apply=false){setLoading(button,true);try{if(apply){const confirmation=prompt('This permanently deletes only proven invalid parcel records. Member and billing data are preserved. Type PURGE INVALID PARCELS exactly:');if(confirmation!=='PURGE INVALID PARCELS')return null;const result=await api('/api/admin/members/parcel-integrity-cleanup/apply',{method:'POST',body:JSON.stringify({confirmation}),cacheMs:0,timeoutMs:60000});renderParcelIntegrityPreviewV669(result.after||result.preview||result);setNotice(`Parcel cleanup complete: ${Number(result.deleted?.monthlyPacks||0)} invalid parcel row(s) permanently removed.`);await loadMemberSummary();await loadFulfilment(null,true);await loadRechargeEntitlementAuditV665($('rechargeEntitlementAuditButtonV665'),false);return result;}const result=await api('/api/admin/members/parcel-integrity-cleanup/preview',{cacheMs:0,timeoutMs:30000});renderParcelIntegrityPreviewV669(result);return result;}finally{setLoading(button,false);}}\n\n  async function repairBillingIntegrityV482(subscriptionId,button){ if(typeof window.prompt!==\"function\")return;const confirmation=window.prompt(\"This changes the real Recharge billing schedule. Type VERIFY AND REPAIR BILLING exactly:\");if(confirmation!==\"VERIFY AND REPAIR BILLING\")return;setLoading(button,true);try{const result=await api(\"/api/admin/members/billing-integrity/\"+encodeURIComponent(subscriptionId)+\"/repair\",{method:\"POST\",body:JSON.stringify({confirmation})});setNotice(result.verified?\"Recharge queued Charge verified after repair.\":\"Recharge still does not match. Critical Billing Sync remains open.\",!result.verified);await checkBillingIntegrityV482($(\"billingIntegrityCheckButton\"));}finally{setLoading(button,false);} }\n  function renderBillingIncidentV482(result){const target=$(\"billingIncidentResult\");if(!target)return;target.innerHTML=\"<div class='orbit-recharge-reconcile-status-v473 \"+(result.repairable?\"attention\":\"good\")+\"'><strong>Activation incident preview</strong><span>Actual payment \"+esc(result.actualPaidDate||\"\u2014\")+\" \u00B7 Contract first full charge \"+esc(result.expectedFirstFullChargeDate||\"\u2014\")+\" \u00B7 Correct parcel cycle \"+esc(result.expectedActivationMonth||\"\u2014\")+\" \u00B7 Wrong unshipped parcels \"+esc((result.wrongPacks||[]).length)+\".</span></div>\"+(result.repairable?\"<button id='billingIncidentRepairButton' type='button'>Repair Billing Incident</button>\":\"\")+(result.unsafeWrongPacks?.length?\"<p class='orbit-recharge-review-warning-v473'>Automatic repair blocked because shipping evidence exists.</p>\":\"\");}\n  async function previewBillingIncidentV482(button){const id=String($(\"billingIncidentSubscriptionInput\")?.value||\"\").trim();if(!id)throw new Error(\"Enter the Recharge subscription ID.\");setLoading(button,true);try{const result=await api(\"/api/admin/members/billing-incident/\"+encodeURIComponent(id)+\"/preview\");renderBillingIncidentV482(result);$(\"billingIncidentRepairButton\")?.addEventListener(\"click\",function(){repairBillingIncidentV482(id,this).catch(err=>setNotice(err.message||String(err),true));});}finally{setLoading(button,false);} }\n  async function repairBillingIncidentV482(subscriptionId,button){if(typeof window.prompt!==\"function\")return;const confirmation=window.prompt(\"This voids only proven incorrect, unshipped parcel rows. Type REPAIR BILLING INCIDENT exactly:\");if(confirmation!==\"REPAIR BILLING INCIDENT\")return;setLoading(button,true);try{const result=await api(\"/api/admin/members/billing-incident/\"+encodeURIComponent(subscriptionId)+\"/repair\",{method:\"POST\",body:JSON.stringify({confirmation,operator:\"Orbit Admin\"})});setNotice(\"Billing incident repaired: wrong cycle voided and contractual parcel preserved.\");renderBillingIncidentV482(result.after||result);await loadFulfilment();}finally{setLoading(button,false);} }\n  function renderPostCutoffRetryV698(result){const target=$(\"postCutoffRetryResultV698\");if(!target)return;const evidence=result?.successfulPaymentEvidence||{},wrong=result?.wrongPacks||[],targetPacks=result?.targetPacks||[];target.innerHTML=`<div class=\"orbit-recharge-reconcile-status-v473 ${result?.repairable?'attention':'good'}\"><strong>Post-cutoff retry preview</strong><span>Successful payment ${esc(evidence.paidDate||'\u2014')} \u00B7 ${evidence.paidAmount==null?'amount unavailable':formatMoney(evidence.paidAmount)} \u00B7 funded cycle ${esc(result?.cycleMonth||'\u2014')} \u00B7 next normal billing ${esc(result?.nextDate||'\u2014')} \u00B7 incorrect following-month parcels ${wrong.length} \u00B7 approved exception parcel rows ${targetPacks.length}.</span></div>${result?.unsafeWrongPacks?.length?`<p class=\"orbit-recharge-review-warning-v473\">Repair blocked: the incorrect following-month parcel has shipping/label evidence.</p>`:''}${result?.repairable?'<button id=\"postCutoffRetryRepairV698\" type=\"button\">Repair Post-Cutoff Retry</button>':''}`;}\n  async function previewPostCutoffRetryV698(button){const subscriptionId=String($(\"postCutoffRetrySubscriptionV698\")?.value||\"\").trim(),parcelExceptionMonth=String($(\"postCutoffRetryMonthV698\")?.value||\"\").trim();if(!subscriptionId)throw new Error(\"Enter the Recharge subscription ID.\");if(!/^\\d{4}-\\d{2}$/.test(parcelExceptionMonth))throw new Error(\"Choose the explicitly approved one-off parcel month.\");setLoading(button,true);try{const result=await api(`/api/admin/members/post-cutoff-retry/${encodeURIComponent(subscriptionId)}/preview?parcelExceptionMonth=${encodeURIComponent(parcelExceptionMonth)}`,{cacheMs:0,timeoutMs:30000});renderPostCutoffRetryV698(result);$(\"postCutoffRetryRepairV698\")?.addEventListener(\"click\",function(){repairPostCutoffRetryV698(subscriptionId,parcelExceptionMonth,this).catch(err=>setNotice(err.message||String(err),true));});return result;}finally{setLoading(button,false);}}\n  async function repairPostCutoffRetryV698(subscriptionId,parcelExceptionMonth,button){if(typeof window.prompt!==\"function\")return;if(!window.confirm(`This keeps the midnight-on-the-5th cutoff unchanged. It will bind the proven late payment to ${parcelExceptionMonth}, remove only an unshipped unfunded following-month parcel, and restore the next normal Recharge date. Continue?`))return;const confirmation=window.prompt(\"Type REPAIR POST CUTOFF RETRY exactly:\");if(confirmation!==\"REPAIR POST CUTOFF RETRY\")return;setLoading(button,true);try{const result=await api(`/api/admin/members/post-cutoff-retry/${encodeURIComponent(subscriptionId)}/repair`,{method:\"POST\",body:JSON.stringify({confirmation,parcelExceptionMonth,operator:\"Orbit Admin\"}),cacheMs:0,timeoutMs:60000});renderPostCutoffRetryV698(result.after||result);setNotice(`Post-cutoff retry repaired. ${parcelExceptionMonth} remains the one-off parcel exception; the normal cutoff rule is unchanged.`);await loadFulfilment(null,true);if(state.selectedMemberLookup)await openMemberWorkspace(state.selectedMemberLookup,{preservePane:true}).catch(()=>{});}finally{setLoading(button,false);}}\n\n  async function copyText(value, button) {\n    if (!value) throw new Error(\"Nothing to copy.\");\n    const originalText = button ? button.textContent : \"\";\n    if (button) {\n      button.disabled = true;\n      button.textContent = \"Copied \u2713\";\n      button.classList.add(\"orbit-copy-confirmed\");\n    }\n    try {\n      if (navigator.clipboard?.writeText) await navigator.clipboard.writeText(value);\n      else {\n        const input = document.createElement(\"textarea\");\n        input.value = value;\n        input.setAttribute(\"readonly\", \"\");\n        input.style.position = \"fixed\";\n        input.style.opacity = \"0\";\n        document.body.appendChild(input);\n        input.select();\n        if (!document.execCommand(\"copy\")) throw new Error(\"Clipboard copy was blocked.\");\n        input.remove();\n      }\n      setNotice(\"Copied to clipboard.\");\n    } finally {\n      if (button) window.setTimeout(function(){\n        button.disabled = false;\n        button.textContent = originalText;\n        button.classList.remove(\"orbit-copy-confirmed\");\n      }, 1400);\n    }\n  }\n\n  async function refreshScheduledRuns(button) {\n    const originalText = button ? button.textContent : \"\";\n    try {\n      if (button) {\n        button.disabled = true;\n        button.textContent = \"Refreshing...\";\n      }\n      await loadScheduler();\n      const stamp = new Date().toLocaleTimeString(\"en-GB\", { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" });\n      setNotice(\"Scheduled Draws refreshed at \" + stamp + \".\");\n      text(\"scheduledRunsRefreshNotice\", \"Scheduled Draws refreshed at \" + stamp);\n      const panel = $(\"tab-scheduled-runs\");\n      if (panel) {\n        panel.dataset.lastRefresh = stamp;\n        panel.classList.add(\"orbit-panel-flash\");\n        window.setTimeout(() => panel.classList.remove(\"orbit-panel-flash\"), 900);\n      }\n    } catch (err) {\n      console.error(err);\n      setNotice(\"Scheduled Draws refresh failed: \" + (err.message || err), true);\n      text(\"scheduledRunsRefreshNotice\", \"Refresh failed\");\n    } finally {\n      if (button) {\n        button.disabled = false;\n        button.textContent = originalText || \"Refresh\";\n      }\n    }\n  }\n\n\n  function getTestMemberSearchValue() {\n    return String($(\"testMemberSearchInput\")?.value || \"\").trim();\n  }\n\n  function renderTestMemberResult(data) {\n    const target = $(\"testMemberResult\");\n    if (!target) return;\n    if (!data || !data.member) {\n      target.innerHTML = \"Search a member to load testing tools.\";\n      return;\n    }\n    const member = data.member || {};\n    const tickets = data.tickets || [];\n    const summary = data.ticketSummary || {};\n    target.innerHTML =\n      \"<div class='orbit-test-member-hero'>\" +\n        \"<p class='orbit-kicker'>Selected Test Member</p>\" +\n        \"<h3>\" + esc(member.memberNumber || \"No member number\") + \"</h3>\" +\n        \"<small>\" + esc(member.name || \"Orbit Member\") + \" \u00B7 \" + esc(member.email || \"No email\") + \"</small>\" +\n        \"<span class='orbit-pill'>\" + esc(member.status || \"Status unknown\") + \" \u00B7 Stage \" + esc(member.stage ?? \"\u2014\") + \"</span>\" +\n        \"<small>Tickets \" + esc(summary.total || 0) + \" \u00B7 Checked in \" + esc(summary.checkedIn || 0) + \" \u00B7 Waiting \" + esc(summary.waiting || 0) + \"</small>\" +\n      \"</div>\" +\n      \"<div class='orbit-test-ticket-list'>\" +\n        (tickets.length ? tickets.map(function(ticket) {\n          return \"<div class='orbit-test-ticket-row'>\" +\n            \"<strong>\" + esc(ticket.ticketId || \"No ticket ID\") + \"</strong>\" +\n            \"<small>\" + esc(ticket.eventName || ticket.eventbriteEventId || \"Orbit event\") + \"</small>\" +\n            \"<small>Status: \" + esc(ticket.ticketStatus || \"\u2014\") + \" \u00B7 Checked in: \" + esc(ticket.checkedIn ? \"Yes\" : \"No\") + \" \u00B7 Scans: \" + esc(ticket.scanCount || 0) + \"</small>\" +\n          \"</div>\";\n        }).join(\"\") : \"<p class='orbit-muted'>No current Orbit tickets found for this member.</p>\") +\n      \"</div>\";\n  }\n\n  async function lookupTestMember(button) {\n    const search = getTestMemberSearchValue();\n    if (!search) throw new Error(\"Enter a member number or email first.\");\n    try {\n      setLoading(button, true);\n      const data = await api(\"/api/admin/test/member-lookup?search=\" + encodeURIComponent(search));\n      state.testMember = data;\n      renderTestMemberResult(data);\n      setNotice(\"Test member loaded.\");\n      return data;\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function setTestMemberStatus(status, button) {\n    const search = getTestMemberSearchValue();\n    if (!search) throw new Error(\"Enter a member number or email first.\");\n    try {\n      setLoading(button, true);\n      const data = await api(\"/api/admin/test/member-status\", {\n        method: \"POST\",\n        body: JSON.stringify({ search, status })\n      });\n      state.testMember = data;\n      renderTestMemberResult(data);\n      setNotice(status === \"active\" ? \"Member set Active for testing.\" : \"Member set Pending for testing.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function resetTestMemberTools(mode, button) {\n    const search = getTestMemberSearchValue();\n    if (!search) throw new Error(\"Enter a member number or email first.\");\n    const body = mode === \"attendance\"\n      ? { search, clearClaims: false, clearAttendance: true, keepTickets: true }\n      : { search, clearClaims: true, clearAttendance: true, keepTickets: false };\n    try {\n      setLoading(button, true);\n      const data = await api(\"/api/admin/test/member-tools-reset\", {\n        method: \"POST\",\n        body: JSON.stringify(body)\n      });\n      state.testMember = data;\n      renderTestMemberResult(data);\n      await Promise.all([loadAttendance(), loadSummary()]);\n      setNotice(mode === \"attendance\" ? \"Check-ins reset. Tickets kept.\" : \"Ticket claims reset. Member can claim again.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function testFulfilCheckout(checkoutId, button) {\n    if (!checkoutId) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/ticket-checkouts/\" + encodeURIComponent(checkoutId) + \"/test-fulfil\", { method: \"POST\", body: JSON.stringify({}) });\n      const target = $(\"shopifyWebhookResult\");\n      if (target) target.textContent = JSON.stringify(result, null, 2);\n      await loadShopify();\n      setNotice(\"Test fulfilment ran. Check Resend email and scanner next.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function createFreeTestCheckout(checkoutId, button) {\n    if (!checkoutId) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/ticket-checkouts/\" + encodeURIComponent(checkoutId) + \"/free-test-checkout\", { method: \"POST\", body: JSON.stringify({}) });\n      const target = $(\"shopifyWebhookResult\");\n      if (target) target.textContent = JSON.stringify(result, null, 2);\n      await loadShopify();\n      if (result.checkoutUrl) window.open(result.checkoutUrl, \"_blank\", \"noopener\");\n      setNotice(\"\u00A30 Shopify test checkout created. Complete that checkout, then return here and refresh.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n\n  async function syncCheckoutOrder(checkoutId, button) {\n    if (!checkoutId) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/ticket-checkouts/\" + encodeURIComponent(checkoutId) + \"/sync-order\", { method: \"POST\", body: JSON.stringify({}) });\n      const target = $(\"shopifyWebhookResult\");\n      if (target) target.textContent = JSON.stringify(result, null, 2);\n      await loadShopify();\n      setNotice(result.success ? \"Sync completed. Check row status and email.\" : \"Sync ran but did not find the Shopify order yet.\", !result.success);\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function resendPublicTickets(checkoutId, button) {\n    if (!checkoutId) return;\n    const row = (state.ticketCheckouts?.checkouts || []).find(function(item){ return String(item.checkoutId || \"\") === String(checkoutId || \"\"); });\n    state.pendingTicketResendCheckoutId = checkoutId;\n    if ($(\"ticketResendEmailInput\")) $(\"ticketResendEmailInput\").value = row?.customerEmail || button?.dataset?.ticketEmail || \"\";\n    if ($(\"ticketResendResult\")) $(\"ticketResendResult\").textContent = \"No email has been sent.\";\n    const dialog = $(\"ticketResendDialog\");\n    if (dialog && typeof dialog.showModal === \"function\" && !dialog.open) dialog.showModal();\n  }\n\n  async function forceFulfilCheckout(checkoutId, button) {\n    if (!checkoutId) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/ticket-checkouts/\" + encodeURIComponent(checkoutId) + \"/force-fulfil\", { method: \"POST\", body: JSON.stringify({}) });\n      const target = $(\"shopifyWebhookResult\");\n      if (target) target.textContent = JSON.stringify(result, null, 2);\n      await loadShopify();\n      const status = result.checkout?.status || result.result?.checkout?.status || \"unknown\";\n      const tickets = result.checkout?.ticketCount || result.result?.ticketCount || 0;\n      setNotice(status === \"fulfilled\" ? \"Force fulfilment complete. Row is fulfilled and \" + tickets + \" ticket(s) were issued.\" : \"Force fulfilment ran. Check the result panel for details.\", status !== \"fulfilled\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n  async function ensureShopifyWebhook(button) {\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/shopify/webhooks/ensure\", { method: \"POST\", body: JSON.stringify({}) });\n      const target = $(\"shopifyWebhookResult\");\n      if (target) target.textContent = JSON.stringify(result, null, 2);\n      await loadShopify();\n      setNotice(result.message || \"Shopify ticket lifecycle webhooks confirmed.\");\n    } finally {\n      setLoading(button, false);\n    }\n  }\n\n\n  function factoryPayload() {\n    return {\n      name: $(\"factoryNameInput\")?.value || \"Orbit Test Member\",\n      email: $(\"factoryEmailInput\")?.value || \"\",\n      route: $(\"factoryRouteInput\")?.value || \"upgrade_route\",\n      stage: Number($(\"factoryStageInput\")?.value || 3),\n      addressLine1: $(\"factoryAddress1Input\")?.value || \"25 Test Street\",\n      addressLine2: $(\"factoryAddress2Input\")?.value || \"\",\n      city: $(\"factoryCityInput\")?.value || \"Bristol\",\n      county: $(\"factoryCountyInput\")?.value || \"\",\n      postcode: $(\"factoryPostcodeInput\")?.value || \"BS1 1AA\",\n      phone: $(\"factoryPhoneInput\")?.value || \"07400000000\",\n      signupDate: $(\"factorySignupDateInput\")?.value || \"\",\n      monthKey: $(\"factoryMonthKeyInput\")?.value || currentMonthKey(),\n      createPack: $(\"factoryCreatePackInput\") ? $(\"factoryCreatePackInput\").checked : true\n    };\n  }\n\n  async function createTestMemberFactory(button) {\n    const payload = factoryPayload();\n    if (!payload.email || !payload.email.includes(\"@\")) throw new Error(\"Enter a valid test member email.\");\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/testing/create-test-member\", { method: \"POST\", body: JSON.stringify(payload) });\n      const target = $(\"testMemberFactoryResult\");\n      if (target) target.innerHTML = \"<strong>Created:</strong> \" + esc(result.memberNumber) + \"<br>Email: \" + esc(result.email) + (result.pack ? \"<br>Pack: \" + esc(result.pack.pack_id || result.pack.packId) : \"<br>No pack created.\");\n      if ($(\"memberSearchInput\")) $(\"memberSearchInput\").value = result.email;\n      if ($(\"testMemberSearchInput\")) $(\"testMemberSearchInput\").value = result.email;\n      await Promise.all([loadSummary(), loadFulfilment(), searchMembers(null)]);\n      setNotice(\"Test member created and available in Membership Centre.\");\n    } finally { setLoading(button, false); }\n  }\n\n  async function loadAdminActivityLog(button) {\n    setLoading(button, true);\n    try {\n      const data = await api(\"/api/admin/activity-log\");\n      const rows = [];\n      (data.activity || []).slice(0, 50).forEach(item => rows.push(\"<tr><td>Member</td><td>\" + esc(item.title || item.type || \"activity\") + \"</td><td>\" + esc(item.member_number || item.email || \"\u2014\") + \"</td><td>\" + esc(item.message || \"\") + \"</td><td>\" + esc(prettyShortDate(item.created_at || item.createdAt)) + \"</td></tr>\"));\n      (data.workflows || []).slice(0, 50).forEach(item => rows.push(\"<tr><td>Workflow</td><td>\" + esc(item.title || item.type || \"workflow\") + \"</td><td>\" + esc(item.status || \"\u2014\") + \"</td><td>\" + esc(item.message || \"\") + \"</td><td>\" + esc(prettyShortDate(item.created_at || item.createdAt)) + \"</td></tr>\"));\n      (data.communications || []).slice(0, 50).forEach(item => rows.push(\"<tr><td>Email</td><td>\" + esc(item.type || \"email\") + \"</td><td>\" + esc(item.to || \"\u2014\") + \"</td><td>\" + esc(item.status || item.subject || \"\") + \"</td><td>\" + esc(prettyShortDate(item.createdAt)) + \"</td></tr>\"));\n      const target = $(\"adminActivityLogTable\");\n      if (target) target.innerHTML = table([\"Type\", \"Action\", \"Subject\", \"Detail\", \"Created\"], rows, \"No admin activity found yet.\");\n      setNotice(\"Admin activity log loaded.\");\n    } finally { setLoading(button, false); }\n  }\n\n  function launchResetReport(data) {\n    const counts = data?.counts || data?.before || {};\n    const rows = Object.entries(counts).map(([name, value]) => {\n      const count = typeof value === \"number\" ? value : (value?.error ? \"Error\" : 0);\n      return \"<tr><td>\" + esc(name) + \"</td><td>\" + esc(count) + \"</td></tr>\";\n    });\n    return table([\"Operational collection\", \"Records\"], rows, \"No operational customer or test records found.\");\n  }\n\n  async function loadLaunchResetPreview(button) {\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/danger-zone/launch-reset/preview\");\n      const target = $(\"launchResetPreview\");\n      if (target) target.innerHTML = \"<div class=\\\"orbit-launch-reset-total\\\"><strong>\" + esc(result.total || 0) + \"</strong><span>operational records will be deleted</span></div>\" + launchResetReport(result);\n      const preserved = $(\"launchResetPreserved\");\n      if (preserved) preserved.textContent = (result.preserveCollections || []).join(\", \");\n      setNotice(\"Launch Reset preview loaded. No data has been deleted.\");\n    } finally { setLoading(button, false); }\n  }\n\n  async function runLaunchReset(button) {\n    const confirmation = String($(\"launchResetConfirmInput\")?.value || \"\").trim();\n    const acknowledged = Boolean($(\"launchResetAcknowledge\")?.checked);\n    if (confirmation !== \"DELETE CUSTOMER DATA\") throw new Error(\"Type DELETE CUSTOMER DATA exactly.\");\n    if (!acknowledged) throw new Error(\"Confirm that Shopify, Recharge and other external customer records will remain.\");\n    if (!window.confirm(\"FINAL CONFIRMATION: permanently delete all internal Orbit OS customer and test operational data while preserving templates and configuration?\")) return;\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/danger-zone/launch-reset\", { method: \"POST\", body: JSON.stringify({ confirmation, acknowledged }) });\n      const target = $(\"launchResetResult\");\n      if (target) target.innerHTML = \"<strong>\" + esc(result.message) + \"</strong><p>Total deleted: \" + esc(result.totalDeleted || 0) + \"</p><p>Remaining operational records: \" + esc(result.remainingOperationalRecords || 0) + \"</p>\" + launchResetReport({ counts: result.deleted || {} });\n      if (Object.keys(result.errors || {}).length) throw new Error(\"Launch Reset completed with errors. Review the deletion report.\");\n      if ($(\"launchResetConfirmInput\")) $(\"launchResetConfirmInput\").value = \"\";\n      if ($(\"launchResetAcknowledge\")) $(\"launchResetAcknowledge\").checked = false;\n      await loadAll(null);\n      setNotice(\"Launch Reset complete. Templates and configuration were preserved.\");\n    } finally { setLoading(button, false); }\n  }\n\n  async function downloadSelectedMemberQr(format, button) {\n    if (!selectedMemberLookup) throw new Error(\"Select a member first.\");\n    setLoading(button, true);\n    try { const url=API_BASE+\"/api/admin/members/\"+encodeURIComponent(selectedMemberLookup)+\"/loyalty-qr?format=\"+encodeURIComponent(format||\"png\")+\"&secret=\"+encodeURIComponent(secret)+adminSessionQueryV329(); const response=await fetch(url); if(!response.ok)throw new Error(await response.text()||\"QR download failed.\"); const blob=await response.blob(); const a=document.createElement(\"a\"); a.href=URL.createObjectURL(blob); a.download=(selectedMemberProfile?.profile?.memberNumber||\"member\")+\"-loyalty-qr-40mm.\"+(format||\"png\"); document.body.appendChild(a); a.click(); a.remove(); setTimeout(()=>URL.revokeObjectURL(a.href),5000); setNotice(\"Member QR downloaded.\"); }\n    finally { setLoading(button, false); }\n  }\n  async function testSelectedMemberQr(button){ if(!selectedMemberLookup)throw new Error(\"Select a member first.\"); setLoading(button,true); try{const data=await api(\"/api/admin/members/\"+encodeURIComponent(selectedMemberLookup)+\"/loyalty\"); const l=data.loyalty||{}; alert(\"Member: \"+(l.memberNumber||\"\u2014\")+\"\\nStatus: \"+(l.status||\"\u2014\")+\"\\nPoints: \"+Number(l.pointsBalance||0)+\"\\nShows attended: \"+Number(l.showsAttended||0)+\"\\n\\n\"+(l.scanUrl||\"No scan URL\"));}finally{setLoading(button,false);} }\n  async function adjustSelectedMemberPoints(button){if(!selectedMemberLookup)throw new Error(\"Select a member first.\");const points=Number($(\"loyaltyPointsAmount\")?.value||0),reason=$(\"loyaltyPointsReason\")?.value||\"manual_bonus\",note=$(\"loyaltyPointsNote\")?.value||\"\";if(!points)throw new Error(\"Enter a non-zero points amount.\");if(!confirm(\"Apply \"+(points>0?\"+\":\"\")+points+\" points to this member?\"))return;setLoading(button,true);try{await api(\"/api/admin/members/\"+encodeURIComponent(selectedMemberLookup)+\"/loyalty/adjust\",{method:\"POST\",body:JSON.stringify({points,reason,note})});const y=window.scrollY;activeMemberPane=\"rewards\";await loadMemberProfile(selectedMemberLookup);requestAnimationFrame(()=>window.scrollTo({top:y,behavior:\"instant\"}));setNotice(\"Loyalty points updated.\");}finally{setLoading(button,false);}}\n  async function reverseSelectedMemberPoints(entryId,button){if(!selectedMemberLookup)throw new Error(\"Select a member first.\");if(!confirm(\"Reverse this points entry? The original record will remain in the audit history.\"))return;setLoading(button,true);try{await api(\"/api/admin/members/\"+encodeURIComponent(selectedMemberLookup)+\"/loyalty/\"+encodeURIComponent(entryId)+\"/reverse\",{method:\"POST\",body:JSON.stringify({})});const y=window.scrollY;activeMemberPane=\"rewards\";await loadMemberProfile(selectedMemberLookup);requestAnimationFrame(()=>window.scrollTo({top:y,behavior:\"instant\"}));setNotice(\"Points entry reversed.\");}finally{setLoading(button,false);}}\n\n  async function confirmTicketResend(button) {\n    const checkoutId = state.pendingTicketResendCheckoutId;\n    const email = String($(\"ticketResendEmailInput\")?.value || \"\").trim();\n    if (!checkoutId) throw new Error(\"No ticket order is selected.\");\n    if (!email || !email.includes(\"@\")) throw new Error(\"Enter a valid recipient email.\");\n    if (!confirm(\"Resend all issued tickets for this order to \" + email + \"?\")) return;\n    setLoading(button, true);\n    try { const result = await api(\"/api/admin/ticket-checkouts/\" + encodeURIComponent(checkoutId) + \"/resend-tickets\", { method:\"POST\", body:JSON.stringify({ email }) }); if($(\"ticketResendResult\")) $(\"ticketResendResult\").textContent=\"Sent \"+Number(result.resent||0)+\" ticket(s) to \"+email+\".\"; await loadShopify(); setNotice(\"Tickets resent to \"+email+\".\"); }\n    finally { setLoading(button, false); }\n  }\n\n  /**\n   * Prizes workspace controller.\n   * The primary context selects Monthly Draw or Golden Tickets.\n   * The local tabs then show only the pages belonging to that area.\n   */\n  function setPrizeArea(area) {\n    const selected = area === \"golden\" ? \"golden\" : \"monthly\";\n    state.currentPrizeArea = selected;\n    document.querySelectorAll(\"[data-prize-area]\").forEach(button => button.classList.toggle(\"active\", button.dataset.prizeArea === selected));\n    document.querySelectorAll(\"[data-prize-subnav]\").forEach(button => { button.hidden = button.dataset.prizeSubnav !== selected; });\n    setDrawPane(selected === \"golden\" ? \"golden-create\" : \"current\");\n  }\n\n  function syncPrizeNavigation(pane) {\n    const current = String(pane || \"current\");\n    const isGolden = current.startsWith(\"golden\");\n    const isSettings = current === \"schedule\";\n    document.querySelectorAll('[data-workspace-group=\"draws\"] [data-module-nav=\"automation\"]').forEach(function(button){\n      let active = false;\n      if (button.dataset.drawOpen) active = button.dataset.drawOpen === current;\n      else if (button.dataset.prizeArea === \"golden\") active = isGolden;\n      else if (button.dataset.prizeArea === \"monthly\") active = !isGolden;\n      button.classList.toggle(\"active\", active);\n      button.setAttribute(\"aria-selected\", String(active));\n      // V370 NOTE-79A64BA33E: expose the same active state semantically as well\n      // as visually so every context sub-navigation has one unmistakable tab.\n      if(active) button.setAttribute(\"aria-current\",\"page\"); else button.removeAttribute(\"aria-current\");\n    });\n  }\n\n  function setDrawPane(name) {\n    const pane = name || \"current\";\n    state.currentDrawPane = pane;rememberOrbitSubtab(\"automation\",pane);\n    if (String(pane).startsWith('golden')) state.currentPrizeArea='golden'; else state.currentPrizeArea='monthly';\n    document.querySelectorAll(\"[data-v77-draw-pane]\").forEach(section => { section.hidden = section.dataset.v77DrawPane !== pane; });\n    document.querySelectorAll(\"[data-v77-draw-tab]\").forEach(button => {\n      const active = button.dataset.v77DrawTab === pane;\n      button.classList.toggle(\"active\", active);\n      button.setAttribute(\"aria-selected\", String(active));\n      // V370 NOTE-79A64BA33E: expose the same active state semantically as well\n      // as visually so every context sub-navigation has one unmistakable tab.\n      if(active) button.setAttribute(\"aria-current\",\"page\"); else button.removeAttribute(\"aria-current\");\n    });\n    document.querySelectorAll(\"[data-prize-subnav]\").forEach(button=>button.hidden=button.dataset.prizeSubnav!==state.currentPrizeArea);\n    syncPrizeNavigation(pane);\n    if(state.adminAuthenticated&&[\"monthly-prize-schedule\",\"golden-schedule\"].includes(pane))loadPrizeSchedulesV536().catch(err=>setNotice(\"Prize schedules unavailable: \"+(err.message||err),true));\n    if(state.adminAuthenticated&&[\"current\",\"history\"].includes(pane))loadDraws().catch(err=>setNotice(\"Draws unavailable: \"+(err.message||err),true));\n    if (pane === \"schedule\") loadScheduler().catch(function(err){\n      const summary=$(\"v77DrawScheduleSummary\");\n      if(summary) summary.innerHTML=\"<strong>Draw schedule unavailable</strong><span>\"+esc(err.message||err)+\"</span>\";\n    });\n  }\n\n  /** Ensure the original Message Member composer exists inside the live DOM. */\n  function ensureMemberMessageModal() {\n    let modal = $(\"memberMessageModal\");\n    if (!modal) {\n      const host = document.querySelector(\".orbit-admin-app\") || document.body;\n      host.insertAdjacentHTML(\"beforeend\", `\n        <div id=\"memberMessageModal\" class=\"orbit-modal\" hidden aria-hidden=\"true\">\n          <div class=\"orbit-modal-backdrop\" data-close-member-message></div>\n          <section class=\"orbit-modal-dialog\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"memberMessageModalTitle\">\n            <div class=\"orbit-modal-header\"><div><p class=\"orbit-kicker\">Member support</p><h2 id=\"memberMessageModalTitle\">New Support Conversation</h2><p id=\"memberMessageRecipient\" class=\"orbit-modal-recipient\"></p></div><button type=\"button\" class=\"orbit-modal-close\" data-close-member-message aria-label=\"Close\">\u00D7</button></div>\n            <label>Subject<input id=\"memberMessageSubject\" type=\"text\" value=\"Support message from Orbit\"></label>\n            <label>Opening message<textarea id=\"memberMessageBody\" rows=\"8\" placeholder=\"Write the first support message from Orbit. Paragraphs and line breaks are supported.\"></textarea></label>\n            <label class=\"orbit-modal-checkbox\"><input id=\"memberMessageNotify\" type=\"checkbox\" checked> <span>Email the member that a support message is waiting</span></label>\n            <div id=\"memberMessageResult\" class=\"orbit-action-result\" hidden></div>\n            <div class=\"orbit-action-row orbit-modal-actions\"><button type=\"button\" class=\"secondary\" data-close-member-message>Cancel</button><button type=\"button\" id=\"sendMemberMessageButton\">Start Conversation</button></div>\n          </section>\n        </div>`);\n      modal = $(\"memberMessageModal\");\n    }\n    if (!modal) return null;\n    if (modal.dataset.orbitBound !== \"true\") {\n      modal.dataset.orbitBound = \"true\";\n      modal.querySelectorAll(\"[data-close-member-message]\").forEach(button => button.addEventListener(\"click\", closeMemberMessageModal));\n      $(\"sendMemberMessageButton\")?.addEventListener(\"click\", function(){\n        sendSelectedMemberSupportConversation(this).catch(err => {\n          const box = $(\"memberMessageResult\");\n          if (box) { box.hidden = false; box.textContent = err.message || String(err); }\n          setNotice(err.message || String(err), true);\n        });\n      });\n      $(\"memberMessageBody\")?.addEventListener(\"keydown\", function(event){\n        if ((event.ctrlKey || event.metaKey) && event.key === \"Enter\") { event.preventDefault(); $(\"sendMemberMessageButton\")?.click(); }\n      });\n    }\n    return modal;\n  }\n\n  /** Open the original Message Member composer as New Support Conversation. */\n  function startSelectedMemberSupportConversation() {\n    if (!selectedMemberLookup) throw new Error(\"Open a member before starting a support conversation.\");\n    const modal = ensureMemberMessageModal();\n    if (!modal) throw new Error(\"Support composer could not be created.\");\n    const memberName = selectedMemberProfile?.profile?.holderName || selectedMemberProfile?.profile?.email || \"Member\";\n    const memberEmail = selectedMemberProfile?.profile?.email || \"\";\n    if ($(\"memberMessageModalTitle\")) $(\"memberMessageModalTitle\").textContent = \"New support conversation with \" + memberName;\n    if ($(\"memberMessageRecipient\")) $(\"memberMessageRecipient\").textContent = memberEmail ? (memberName + \" \u00B7 \" + memberEmail) : memberName;\n    if ($(\"memberMessageSubject\")) $(\"memberMessageSubject\").value = \"Support message from Orbit\";\n    if ($(\"memberMessageBody\")) $(\"memberMessageBody\").value = \"\";\n    if ($(\"memberMessageResult\")) $(\"memberMessageResult\").hidden = true;\n    modal.hidden = false;\n    modal.setAttribute(\"aria-hidden\", \"false\");\n    document.body.classList.add(\"orbit-modal-open\");\n    window.setTimeout(() => $(\"memberMessageBody\")?.focus(), 20);\n    return true;\n  }\n\n  window.orbitOpenMemberSupportComposer = startSelectedMemberSupportConversation;\n\n  function closeMemberMessageModal() {\n    const modal = $(\"memberMessageModal\");\n    if (!modal) return;\n    modal.hidden = true;\n    modal.setAttribute(\"aria-hidden\",\"true\");\n    document.body.classList.remove(\"orbit-modal-open\");\n  }\n\n  async function sendSelectedMemberSupportConversation(button) {\n    if (!selectedMemberLookup) throw new Error(\"Open a member before starting a support conversation.\");\n    const subject = String($(\"memberMessageSubject\")?.value || \"\").trim() || \"Support message from Orbit\";\n    const message = String($(\"memberMessageBody\")?.value || \"\").trim();\n    const notifyMember = $(\"memberMessageNotify\") ? Boolean($(\"memberMessageNotify\").checked) : true;\n    if (!message) { $(\"memberMessageBody\")?.focus(); throw new Error(\"Write a message before sending.\"); }\n    setLoading(button, true);\n    try {\n      const result = await api(\"/api/admin/support/start\", { method: \"POST\", body: JSON.stringify({ lookup: selectedMemberLookup, subject, message, category: \"membership\", priority: \"normal\", notifyMember }) });\n      closeMemberMessageModal();\n      setNotice(\"Support conversation started successfully.\");\n      activeMemberPane = \"support\";\n      await Promise.all([loadSupportInbox(null, true), loadOperationsV74(), loadSummary()]);\n      await loadMemberProfile(selectedMemberLookup);\n      const ticketId = result.ticket?.ticketId || result.ticket?.ticket_id || result.ticket?.id || result.ticketId;\n      if (ticketId) await openSupportConversation(ticketId);\n    } finally { setLoading(button, false); }\n  }\n\n  function performanceMoney(value) { return \"\u00A3\" + Number(value || 0).toLocaleString(\"en-GB\", { minimumFractionDigits: 2, maximumFractionDigits: 2 }); }\n  function ensureReportsPeriodV348(){\n    const reports=document.querySelector('[data-module=\"reports\"]');\n    if(!reports)return null;\n    let select=document.getElementById('reportsPeriod');\n    if(select)return select;\n    const header=reports.querySelector('.orbit-panel-header')||reports;\n    const label=document.createElement('label');\n    label.className='orbit-period-filter orbit-period-filter-v348';\n    label.innerHTML='<span>Report period</span><select id=\"reportsPeriod\"><option value=\"today\">Today</option><option value=\"yesterday\">Yesterday</option><option value=\"last_7_days\">Last 7 days</option><option value=\"last_30_days\">Last 30 days</option><option value=\"this_month\">This month</option></select>';\n    header.appendChild(label);\n    select=label.querySelector('select');\n    select.value=state.performancePeriod||document.getElementById('performancePeriod')?.value||'this_month';\n    return select;\n  }\n  document.addEventListener('DOMContentLoaded',function(){ ensureReportsPeriodV348(); });\n\n  function performanceDate(value) { return value ? new Date(value).toLocaleString(\"en-GB\", { dateStyle: \"medium\", timeStyle: \"short\" }) : \"\u2014\"; }\n  function performancePeriodLabelV346(data) {\n    const start=data?.start?new Date(data.start):null,end=data?.end?new Date(data.end):null;\n    if(!start||!end||Number.isNaN(start.getTime())||Number.isNaN(end.getTime()))return \"Selected period\";\n    const fmt=value=>value.toLocaleDateString(\"en-GB\",{day:\"numeric\",month:\"short\",year:\"numeric\",timeZone:\"Europe/London\"});\n    return fmt(start)+\" \u2192 \"+fmt(end);\n  }\n\n  function vendorMoneyV384(value){\n    const amount=Number(value||0);\n    return new Intl.NumberFormat(\"en-GB\",{style:\"currency\",currency:\"GBP\"}).format(Number.isFinite(amount)?amount:0);\n  }\n  function vendorSyncTextV384(sync,totalOrders){\n    if(!sync||sync.status===\"never_synced\")return Number(totalOrders||0)>0?\"Historical archive is stored locally. No sync-state record is available yet.\":\"Historical import has not been run yet.\";\n    const mode=sync.mode||sync.lastSuccessfulMode||\"historical_backfill\";\n    if(sync.status===\"running\"){const read=Number(sync.ordersImported||0);return mode===\"incremental\"?\"Checking Shopify for new or changed data \u00B7 \"+read.toLocaleString(\"en-GB\")+\" updated orders received so far.\":\"Initial historical backfill running \u00B7 \"+read.toLocaleString(\"en-GB\")+\" orders received across \"+Number(sync.pages||0)+\" pages.\";}\n    if(sync.status===\"failed\")return \"Last Shopify sync failed: \"+(sync.error||\"Unknown error\")+(sync.hint?\" \u00B7 \"+sync.hint:\"\");\n    if(mode===\"incremental\")return \"Archive stored locally \u00B7 last incremental check received \"+Number(sync.ordersImported||0).toLocaleString(\"en-GB\")+\" changed orders and \"+Number(sync.productsImported||0).toLocaleString(\"en-GB\")+\" changed products \u00B7 completed \"+prettyDate(sync.completedAt||sync.updatedAt)+\".\";\n    return \"Historical backfill complete \u00B7 \"+Number(totalOrders||sync.ordersImported||0).toLocaleString(\"en-GB\")+\" orders stored locally \u00B7 completed \"+prettyDate(sync.completedAt||sync.updatedAt)+\".\";\n  }\n  // V716.0.9 NOTE-276A232959: independently acceptance-tested the existing\n  // Vendor Support suppression/restore and inbox-loading behaviour.\n  // V719 Vendor Growth Lab. This deliberately uses the existing Admin OS\n  // authenticated API function and workspace pane system: no parallel runtime.\n  function growthRunV719(){const runId=state.vendorGrowthV719?.runId;if(!runId)throw new Error('Reload Growth Lab to obtain the current sandbox run.');return runId;}\n  function growthPriceV719(n){return '\u00A3'+Number(n||0).toLocaleString('en-GB',{minimumFractionDigits:2,maximumFractionDigits:2});}\n  function growthNoticeV719(message='',bad=false){const el=$('vendorGrowthNoticeV719');if(el){el.textContent=message;el.classList.toggle('is-error',Boolean(bad));}}\n  async function growthPostV719(path,body){const answer=await api(path,{method:'POST',body:JSON.stringify({...body,runId:growthRunV719()}),timeoutMs:45000});await loadVendorGrowthV719();return answer;}\n  function growthEventOptionsV719(data){const ev=(data.events||[]);document.querySelectorAll('[data-growth-event-select]').forEach(select=>{const selected=select.value,upcoming=ev.filter(e=>Date.parse(e.eventDate||'')>=Date.now()-86400000),options=upcoming.length?upcoming:ev;select.innerHTML=options.map(e=>`<option value=\"${esc(e.eventKey)}\">${esc(e.name)} \u00B7 ${esc(String(e.eventDate||'').slice(0,10))}</option>`).join('');if([...select.options].some(o=>o.value===selected))select.value=selected;else{const wolves=[...select.options].find(o=>/Wolverhampton/i.test(o.textContent));if(wolves)select.value=wolves.value;}});}\n  function renderVendorGrowthV719(data){state.vendorGrowthV719=data;const summary=$('vendorGrowthSummaryV719'),products=data.products||[],contests=data.competitions||[],templates=data.templates||[],campaigns=data.campaigns||[],orders=data.orders||[];\n    if(summary)summary.innerHTML=`<span><small>Wholesale offers</small><strong>${products.length}</strong></span><span><small>Sandbox orders</small><strong>${orders.length}</strong></span><span><small>Competitions</small><strong>${contests.length}</strong></span><span><small>Flyer templates</small><strong>${templates.length}</strong></span>`;\n    const safety=$('vendorGrowthSafetyV719');if(safety)safety.innerHTML=`<strong>TEST SANDBOX \u00B7 ${esc(data.runId)}</strong><span>Provider checkout: ${esc(data.providerCheckout)} \u00B7 MSTX connection ${data.shopifyMstxConnected?'ON':'OFF'} \u00B7 Campaign send DISABLED \u00B7 Credit awards SIMULATED.</span>`;\n    growthEventOptionsV719(data);\n    // V720: prefill the Wolverhampton pilot so it is immediately inspectable.\n    const previewForm=$('vendorGrowthCompetitionFormV719'),wolves=contests.find(c=>c.eventDate==='2026-11-14'&&/wolverhampton/i.test(c.eventName||''));\n    if(previewForm&&wolves&&!previewForm.dataset.v720Prefilled){growthPutFieldsV719(previewForm,{id:wolves.id,title:wolves.title,eventKey:wolves.eventKey,status:wolves.status,startAt:growthFormDateV719(wolves.startAt),endAt:growthFormDateV719(wolves.endAt)});previewForm.dataset.v720Prefilled='1';}\n    const simForm=$('vendorGrowthSimFormV719'),testOrder=simForm?.elements?.namedItem('orderId');if(testOrder&&!testOrder.value)testOrder.value='WOLVES-DEMO-'+Date.now().toString(36).toUpperCase();\n    const productList=$('vendorGrowthProductListV719');if(productList)productList.innerHTML=products.length?products.map(p=>`<div class=\"orbit-vendor-growth-listitem-v719\"><div class=\"orbit-vendor-growth-thumb-v719\">${p.imageBase64?`<img alt=\"${esc(p.title)}\" loading=\"lazy\" src=\"data:image/jpeg;base64,${p.imageBase64}\">`:''}</div><div><strong>${esc(p.title)}</strong><small>${esc(p.status)} \u00B7 stock ${Number(p.stock||0)} \u00B7 ${growthPriceV719(p.priceGbp)} / market ${growthPriceV719(p.marketGbp)} \u00B7 ${Math.round((1-Number(p.marketRatio))*100)}% off</small></div><button type=\"button\" class=\"secondary\" data-growth-edit-product=\"${esc(p.id)}\">Edit</button></div>`).join(''):'<p class=\"orbit-muted\">No products in this test run. Create your first vendor-only offer above.</p>';\n    const contestList=$('vendorGrowthCompetitionListV719');if(contestList)contestList.innerHTML=contests.length?contests.map(c=>`<article class=\"orbit-vendor-growth-listcontest-v719\"><div class=\"orbit-vendor-growth-row-head-v719\"><div><strong>${esc(c.title)}</strong><small>${esc(c.eventName)} \u00B7 ${esc(c.status)} \u00B7 closes ${esc(prettyDate(c.endAt))}</small></div><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-growth-edit-contest=\"${esc(c.id)}\">Edit</button>${c.status==='sandbox_closed'?`<button type=\"button\" data-growth-award-contest=\"${esc(c.id)}\">Simulate prizes</button>`:''}</div></div><div class=\"orbit-vendor-growth-table-v719\"><div><b>Vendor</b><b>Eligible demo orders</b><b>Prize preview</b></div>${(c.leaderboard||[]).map(v=>`<div><span>#${Number(v.rank)} ${esc(v.name)}</span><span>${Number(v.orders)} <small>+${Number(v.referralPointsIllustration)} illustrative points</small></span><strong>${v.prizeGbp?growthPriceV719(v.prizeGbp):'\u2014'}</strong></div>`).join('')}</div></article>`).join(''):'<p class=\"orbit-muted\">Create the Wolverhampton competition above, then add synthetic paid orders to test rankings.</p>';\n    const sim=$('vendorGrowthSimCompetitionV719');if(sim){const keep=sim.value;sim.innerHTML=contests.map(c=>`<option value=\"${esc(c.id)}\">${esc(c.eventName)} (${esc(c.status)})</option>`).join('');if([...sim.options].some(o=>o.value===keep))sim.value=keep;}\n    const flyerList=$('vendorGrowthFlyerListV719');if(flyerList)flyerList.innerHTML=templates.length?templates.map(t=>`<div class=\"orbit-vendor-growth-listitem-v719\"><div><strong>${esc(t.eventName||t.eventKey)}</strong><small>${t.artworkBase64?'Custom art uploaded':'Branded default art'} \u00B7 QR x ${Math.round(t.placement.x*100)}%, y ${Math.round(t.placement.y*100)}%, size ${Math.round(t.placement.size*100)}%</small></div><button type=\"button\" class=\"secondary\" data-growth-edit-flyer=\"${esc(t.eventKey)}\">Edit placement</button></div>`).join(''):'<p class=\"orbit-muted\">Upload event artwork above to enable personalised A6 downloads for that event.</p>';\n    const campaignList=$('vendorGrowthCampaignListV719');if(campaignList)campaignList.innerHTML=campaigns.length?campaigns.map(c=>`<article class=\"orbit-vendor-growth-campaign-v719\"><strong>${esc(c.channel.toUpperCase())} \u00B7 ${esc(c.eventName)}</strong><small>DRAFT ONLY \u00B7 never sent \u00B7 recipients unverified</small>${c.channel==='sms'?`<p>${esc(c.content?.text)}</p>`:`<p><b>Subject:</b> ${esc(c.content?.subject)}</p><button class=\"secondary\" type=\"button\" data-growth-preview-email=\"${esc(c.id)}\">View HTML email design</button>`}</article>`).join(''):'<p class=\"orbit-muted\">No draft campaigns yet.</p>';\n    bindVendorGrowthControlsV719();\n  }\n  async function loadVendorGrowthV719(){growthNoticeV719('Reading the current isolated Growth Lab\u2026');const data=await api('/api/admin/vendors/club/growth/sandbox',{cacheMs:0,timeoutMs:30000});renderVendorGrowthV719(data);growthNoticeV719('Current sandbox loaded. No live orders, accounts or communications were changed.');return data;}\n  async function growthFileV719(file){if(!file)return null;if(file.size>5*1024*1024)throw new Error('Select an image under 5 MB.');if(!['image/png','image/jpeg','image/webp'].includes(file.type))throw new Error('Upload PNG, JPEG or WebP artwork.');return new Promise((resolve,reject)=>{const reader=new FileReader();reader.onload=()=>resolve(String(reader.result));reader.onerror=()=>reject(new Error('Unable to read artwork.'));reader.readAsDataURL(file);});}\n  function growthFieldsV719(form){const fd=new FormData(form),out={};for(const [k,v] of fd.entries()){if(!(v instanceof File))out[k]=String(v);}return out;}\n  function growthFormDateV719(value){if(!value)return'';const parsed=new Date(value);if(!Number.isFinite(parsed.getTime()))return'';const to2=v=>String(v).padStart(2,'0');return `${parsed.getFullYear()}-${to2(parsed.getMonth()+1)}-${to2(parsed.getDate())}T${to2(parsed.getHours())}:${to2(parsed.getMinutes())}`;}\n  function growthPutFieldsV719(form,values){Object.entries(values).forEach(([key,v])=>{const f=form?.elements?.namedItem(key);if(f&&typeof v!=='object')f.value=String(v??'');});}\n  function growthFlyerProofV719(){const form=$('vendorGrowthFlyerFormV719');if(!form)return;const x=Number(form.elements.namedItem('x').value),y=Number(form.elements.namedItem('y').value),size=Number(form.elements.namedItem('size').value),qr=$('vendorGrowthQrVisualV719');if(qr){qr.style.left=x+'%';qr.style.top=y+'%';qr.style.width=size+'%';qr.style.aspectRatio='1';}['X','Y','Size'].forEach((label,i)=>{const output=$('vendorGrowthQr'+label+'TextV719');if(output)output.textContent=[x,y,size][i]+'%';});}\n  function bindVendorGrowthControlsV719(){const pane=document.getElementById('orbitVendorsOverview');if(!pane||pane.dataset.growthBound==='1')return;pane.dataset.growthBound='1';\n    $('vendorGrowthRefreshV719')?.addEventListener('click',()=>loadVendorGrowthV719().catch(e=>growthNoticeV719(e.message,true)));\n    $('vendorGrowthClearProductV719')?.addEventListener('click',()=>{const f=$('vendorGrowthProductFormV719');f?.reset();if(f)f.elements.namedItem('id').value='';});\n    $('vendorGrowthClearCompV719')?.addEventListener('click',()=>{const f=$('vendorGrowthCompetitionFormV719');f?.reset();if(f)f.elements.namedItem('id').value='';});\n    $('vendorGrowthProductFormV719')?.addEventListener('submit',async e=>{e.preventDefault();const form=e.currentTarget,fields=growthFieldsV719(form);\n      const button=form.querySelector('[type=\"submit\"]');button.disabled=true;try{const file=form.elements.namedItem('image').files[0],imageDataUrl=await growthFileV719(file);await growthPostV719('/api/admin/vendors/club/growth/products',{...fields,marketReviewedAt:new Date(fields.marketReviewedAt).toISOString(),imageDataUrl});growthNoticeV719('Wholesale offer saved in the isolated sandbox.');form.reset();form.elements.namedItem('id').value='';}catch(err){growthNoticeV719(err.message,true);}finally{button.disabled=false;}});\n    $('vendorGrowthCompetitionFormV719')?.addEventListener('submit',async e=>{e.preventDefault();const form=e.currentTarget,fields=growthFieldsV719(form),button=form.querySelector('[type=\"submit\"]');button.disabled=true;try{await growthPostV719('/api/admin/vendors/club/growth/competitions',{...fields,startAt:new Date(fields.startAt).toISOString(),endAt:new Date(fields.endAt).toISOString()});growthNoticeV719('Competition saved in sandbox; no real referral/credit record changed.');}catch(err){growthNoticeV719(err.message,true);}finally{button.disabled=false;}});\n    $('vendorGrowthSimFormV719')?.addEventListener('submit',async e=>{e.preventDefault();const form=e.currentTarget,button=form.querySelector('[type=\"submit\"]');button.disabled=true;try{await growthPostV719('/api/admin/vendors/club/growth/competition-orders',growthFieldsV719(form));growthNoticeV719('Synthetic referral recorded; leaderboard updated.');form.elements.namedItem('orderId').value='WOLVES-DEMO-'+Date.now().toString(36).toUpperCase();}catch(err){growthNoticeV719(err.message,true);}finally{button.disabled=false;}});\n    const artForm=$('vendorGrowthFlyerFormV719');artForm?.querySelectorAll('input[type=\"range\"]').forEach(i=>i.addEventListener('input',growthFlyerProofV719));growthFlyerProofV719();\n    artForm?.elements?.namedItem('artwork')?.addEventListener('change',async e=>{const file=e.currentTarget.files?.[0];if(!file)return;try{const url=await growthFileV719(file),image=$('vendorGrowthFlyerImageV719');if(image){image.style.backgroundImage=`url(\"${url}\")`;image.classList.add('has-preview');}}catch(err){growthNoticeV719(err.message,true);}});\n    artForm?.addEventListener('submit',async e=>{e.preventDefault();const form=e.currentTarget,fields=growthFieldsV719(form),button=form.querySelector('[type=\"submit\"]');button.disabled=true;try{const imageDataUrl=await growthFileV719(form.elements.namedItem('artwork').files[0]);await growthPostV719('/api/admin/vendors/club/growth/flyers',{eventKey:fields.eventKey,artworkName:form.elements.namedItem('artwork').files[0]?.name||'',imageDataUrl,placement:{x:Number(fields.x)/100,y:Number(fields.y)/100,size:Number(fields.size)/100}});growthNoticeV719('A6 artwork and QR placement saved. The test vendor can download a tracked PDF in Promote & Earn.');}catch(err){growthNoticeV719(err.message,true);}finally{button.disabled=false;}});\n    $('vendorGrowthCampaignFormV719')?.addEventListener('submit',async e=>{e.preventDefault();const form=e.currentTarget,button=form.querySelector('[type=\"submit\"]');button.disabled=true;try{await growthPostV719('/api/admin/vendors/club/growth/campaigns',growthFieldsV719(form));growthNoticeV719('Email and SMS drafts created. Neither has been sent and recipient selection has not been validated.');}catch(err){growthNoticeV719(err.message,true);}finally{button.disabled=false;}});\n    pane.addEventListener('click',async e=>{const edit=e.target.closest('[data-growth-edit-product]'),contest=e.target.closest('[data-growth-edit-contest]'),flyer=e.target.closest('[data-growth-edit-flyer]'),award=e.target.closest('[data-growth-award-contest]'),preview=e.target.closest('[data-growth-preview-email]');const data=state.vendorGrowthV719||{};\n      if(edit){const p=(data.products||[]).find(x=>x.id===edit.dataset.growthEditProduct),form=$('vendorGrowthProductFormV719');if(!p||!form)return;growthPutFieldsV719(form,p);form.elements.namedItem('marketReviewedAt').value=growthFormDateV719(p.marketReviewedAt);form.scrollIntoView({block:'center',behavior:'smooth'});}\n      if(contest){const c=(data.competitions||[]).find(x=>x.id===contest.dataset.growthEditContest),form=$('vendorGrowthCompetitionFormV719');if(!c||!form)return;growthPutFieldsV719(form,{id:c.id,title:c.title,eventKey:c.eventKey,status:c.status,startAt:growthFormDateV719(c.startAt),endAt:growthFormDateV719(c.endAt),prizesGbp:(c.prizesGbp||[250,150,100]).join(', ')});form.scrollIntoView({block:'center',behavior:'smooth'});}\n      if(flyer){const t=(data.templates||[]).find(x=>x.eventKey===flyer.dataset.growthEditFlyer),form=$('vendorGrowthFlyerFormV719');if(!t||!form)return;growthPutFieldsV719(form,{eventKey:t.eventKey,x:Math.round(t.placement.x*100),y:Math.round(t.placement.y*100),size:Math.round(t.placement.size*100)});growthFlyerProofV719();form.scrollIntoView({block:'center',behavior:'smooth'});}\n      if(award){const id=award.dataset.growthAwardContest;if(!confirm('SIMULATE awarding test-only vendor credits? No real account credit will be issued.'))return;award.disabled=true;try{const result=await growthPostV719('/api/admin/vendors/club/growth/competition-awards',{competitionId:id});growthNoticeV719((result.awards||[]).length+' simulated prize records saved. Real Account Credit untouched.');}catch(err){growthNoticeV719(err.message,true);}finally{award.disabled=false;}}\n      if(preview){const item=(data.campaigns||[]).find(x=>x.id===preview.dataset.growthPreviewEmail),iframe=$('vendorGrowthEmailPreviewV719');if(!item||!iframe)return;iframe.hidden=false;iframe.srcdoc=String(item.content?.html||'');iframe.scrollIntoView({block:'nearest',behavior:'smooth'});}\n    });\n  }\n  function setVendorSandboxTabV727(tab){\n    const selected=['sponsor','vendor','growth','competitions','vendor-shop','flyer-studio','launch'].includes(tab)?tab:'sponsor';\n    state.currentSandboxSectionV730=selected;\n    const header=document.querySelector(\".orbit-vendor-workspace-header\");if(header&&state.currentVendorPane===\"sandbox\")header.hidden=selected===\"sponsor\";\n    document.querySelectorAll('[data-vendor-sandbox-tab-v727]').forEach(b=>{\n      const active=b.dataset.vendorSandboxTabV727===selected;\n      b.setAttribute('aria-selected',String(active));b.classList.toggle('active',active);\n    });\n    document.querySelectorAll('[data-vendor-sandbox-panel-v727]').forEach(el=>{\n      el.hidden=el.dataset.vendorSandboxPanelV727!==selected;\n    });\n    if(selected==='vendor')setVendorSettingsSectionV641('access').catch(e=>setNotice(e.message||e,true));\n  }\n  function setVendorCampaignTabV727(tab){\n    const selected=tab==='sms'?'sms':'campaigns';\n    document.querySelectorAll('[data-vendor-campaign-tab-v727]').forEach(b=>{\n      const active=b.dataset.vendorCampaignTabV727===selected;\n      b.setAttribute('aria-selected',String(active));b.classList.toggle('active',active);\n    });\n    // Existing per-channel loader, audience guards and send approvals are reused.\n    return setVendorSettingsSectionV641(selected);\n  }\n  // V729 operator-only: compare independently stored production configuration\n  // with verified Sandbox settings. This NEVER enables sponsor checkout.\n  let sponsorLivePreviewV729=null;\n  async function loadVendorSponsorLiveV729(){\n    sponsorLivePreviewV729=null;\n    const sel=$('vendorSponsorLiveEventV729'),copy=$('vendorSponsorLiveCopyV729'),list=$('vendorSponsorLiveListV729');\n    if(copy)copy.disabled=true;\n    const [live,sandbox]=await Promise.all([\n      api('/api/admin/vendors/club/sponsorships/live-config',{cacheMs:0}),\n      api('/api/admin/vendors/club/sponsorships/sandbox',{cacheMs:0})\n    ]);\n    if(sel){const previous=sel.value;\n      sel.innerHTML='<option value=\"\">Choose a verified upcoming event</option>'+(sandbox.events||[]).filter(e=>e.eventKey&&!String(e.eventKey).startsWith('fallback-')).map(e=>'<option value=\"'+esc(e.eventKey)+'\">'+esc(e.name||e.eventKey)+' \u00B7 '+esc(e.eventDate||'')+'</option>').join('');\n      if([...sel.options].some(x=>x.value===previous))sel.value=previous;\n    }\n    if(list)list.innerHTML=(live.rows||[]).length?'<div class=\"orbit-table-wrap\"><table><thead><tr><th>Verified event</th><th>Date</th><th>Configuration revision</th><th>Commercial status</th></tr></thead><tbody>'+live.rows.map(r=>'<tr><td>'+esc(r.eventName||r.eventKey)+'</td><td>'+esc(r.eventDate||'')+'</td><td>'+Number(r.revision||0)+'</td><td>Configured \u00B7 purchases disabled</td></tr>').join('')+'</tbody></table></div>':'<p class=\"orbit-muted\">No configurations have been copied to the live register. Sponsorship purchases remain unavailable.</p>';\n  }\n  async function previewVendorSponsorLiveV729(){\n    const eventKey=$('vendorSponsorLiveEventV729')?.value,box=$('vendorSponsorLiveComparisonV729'),copy=$('vendorSponsorLiveCopyV729');\n    sponsorLivePreviewV729=null;if(copy)copy.disabled=true;\n    if(!eventKey){if(box)box.textContent='Choose an event first.';return;}\n    const data=await api('/api/admin/vendors/club/sponsorships/live-config/preview?eventKey='+encodeURIComponent(eventKey),{cacheMs:0});\n    sponsorLivePreviewV729=data;\n    const current=data.current||{},proposed=data.proposed||{},format=(k,v)=> k==='assetDeadline'?String(v??'Unset'):k.endsWith('Slots')?String(v??'Unset'):String(v===undefined?'Unset':v?'Enabled':'Disabled');\n    if(box)box.innerHTML='<h5>'+esc(data.eventName)+' \u00B7 '+esc(data.eventDate)+'</h5><table class=\"orbit-sponsor-config-comparison-v729\"><thead><tr><th>Setting</th><th>Live</th><th>Sandbox proposal</th></tr></thead><tbody>'+Object.keys(proposed).map(key=>'<tr><th>'+esc(key.replace(/([A-Z])/g,' $1'))+'</th><td>'+esc(current[key]===undefined?'Unset':format(key,current[key]))+'</td><td><strong>'+esc(format(key,proposed[key]))+'</strong></td></tr>').join('')+'</tbody></table><p class=\"orbit-muted\">'+esc(data.warning)+'</p>';\n    if(copy)copy.disabled=data.changes.length===0;\n  }\n  async function copyVendorSponsorLiveV729(){\n    const data=sponsorLivePreviewV729,button=$('vendorSponsorLiveCopyV729');\n    if(!data||button?.disabled)return;\n    if(!confirm('Copy exactly the displayed configuration for '+data.eventName+' into a separate LIVE CONFIGURATION REGISTER? This does not activate sponsorship payments, ticket issuance or website sales.'))return;\n    setLoading(button,true);\n    try{\n      const saved=await api('/api/admin/vendors/club/sponsorships/live-config/copy',{method:'POST',body:JSON.stringify({eventKey:data.eventKey,expectedRevision:data.expectedRevision,sourceRunId:data.sourceRunId,confirm:'COPY VERIFIED SANDBOX SETTINGS'}),cacheMs:0});\n      if(!saved.success||saved.commercialLaunchBlocked!==true)throw Error('Live configuration read-back did not confirm safe staging.');\n      setNotice('Live event configuration saved and read back. Real sponsorship purchases remain disabled.');\n      await loadVendorSponsorLiveV729();\n    }finally{setLoading(button,false);if(button)button.disabled=true;}\n  }\n  let wolvesCampaignReviewV760=null;\n  const wolvesCampaignPathV760='/api/admin/vendors/club/campaigns/wolverhampton-invitation-draft';\n  async function previewWolverhamptonCampaignV729(){\n    const box=$('vendorWolvesResultV729'),button=$('vendorWolvesPreviewV729');setLoading(button,true);\n    try{\n      const data=await api(wolvesCampaignPathV760,{cacheMs:0,timeoutMs:30000});wolvesCampaignReviewV760=data;\n      if(!box)return;const rows=Array.isArray(data.audience)?data.audience:[];\n      if(!rows.length){box.innerHTML='<p class=\"orbit-vendor-launch-warning-v729\">'+esc(data.reason||'A verified Wolverhampton vendor audience could not be established. Nothing has been sent.')+'</p>';return;}\n      const d=data.invitationDraft||{},c=data.coverage||{},fmt=n=>Number(n||0).toLocaleString('en-GB');\n      const style='style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px\"';\n      const card=(number,label,sub)=>'<div class=\"orbit-panel\" style=\"min-width:0\"><strong style=\"font-size:22px\">'+fmt(number)+'</strong><p>'+esc(label)+'</p><small>'+esc(sub)+'</small></div>';\n      box.innerHTML='<div class=\"orbit-panel orbit-v760-wolves__intro\"><h4>Wolverhampton invitation audience</h4><p><strong>'+fmt(d.bookedTargetCount)+' / '+fmt(c.booked)+' booked vendors accounted for and targeted</strong> \u00B7 '+fmt(d.registeredCount)+' log in \u00B7 '+fmt(d.signupCount)+' join free</p><div '+style+'>'+card(d.emailOnFile,'With an email','Not automatically send eligible')+card(d.mobileOnFile,'With a mobile on file','SMS marketing consent checked separately')+card(d.emailPreparedEligible,'Email permission evidenced','Existing opt-in or reviewed Mailchimp evidence')+card(d.smsPreparedEligible,'SMS permission recorded','No newsletter-only SMS permission')+'</div><p class=\"orbit-muted\">'+esc(data.competitionEligibility==='ALL_ELIGIBLE_ORBIT_VENDORS_WITH_VERIFIED_REFERRALS'?'Any genuinely eligible Orbit vendor may compete for the prizes, not only traders at Wolverhampton. Booked traders are the initial invitation audience.':'All entrants remain subject to published competition rules.')+'</p><p class=\"orbit-muted\">Do not override opt-outs. Draft: '+esc(d.status)+' \u00B7 Newsletter subscribers matched: '+fmt(d.newsletterEvidenceMatched)+' \u00B7 Current evidence emails: '+fmt(d.newsletterEvidenceCount)+'.</p>'+'</div>';\n      const blockers=(d.blockers||[]).map(x=>'<li>'+esc(x)+'</li>').join('');\n      box.insertAdjacentHTML('beforeend','<div class=\"orbit-panel\"><h5>Pre-send checks</h5><ul>'+blockers+'</ul><p class=\"orbit-muted\">'+esc(data.contestVerifiedLive?'The authoritative competition record is verified live.':'Competition record is not yet independently verified live; campaign remains staged only.')+'</p></div>');\n      box.insertAdjacentHTML('beforeend','<details open><summary>Personalised invitation designs \u00B7 unsent</summary><div class=\"orbit-v760-wolves__previews\"><div><h5>Booked vendor with account \u2014 log in</h5><iframe title=\"Wolverhampton login email preview\" class=\"orbit-vendor-campaign-email-frame-v750\" sandbox=\"\" loading=\"lazy\" data-wolves-email-v760=\"registered\"></iframe></div><div><h5>Booked vendor without account \u2014 join free</h5><iframe title=\"Wolverhampton signup email preview\" class=\"orbit-vendor-campaign-email-frame-v750\" sandbox=\"\" loading=\"lazy\" data-wolves-email-v760=\"notRegistered\"></iframe></div></div><h5>SMS reminder \u00B7 draft only</h5><p>'+esc(data.creative?.sms||'')+'</p><p class=\"orbit-muted\">STOP and inbound opt-out handling must be independently checked on the real SMS provider before any send. No SMS is queued here.</p></details>');\n      const tableRows=rows.map(r=>'<tr><td>'+esc(r.vendorName)+'</td><td>'+esc(r.registered?'Log in':'Create free account')+'</td><td>'+esc(r.hasEmail?'On file':'Missing')+'</td><td>'+esc(r.emailLaunchReady?'Evidence matched / eligible':r.emailReason)+'</td><td>'+esc(r.hasPhone?'On file':'Missing')+'</td><td>'+esc(r.smsLaunchReady?'Opted in / verified':r.smsReason)+'</td></tr>').join('');\n      box.insertAdjacentHTML('beforeend','<details class=\"orbit-v757-campaign-audience\"><summary>All '+fmt(rows.length)+' booked vendors \u00B7 outreach and consent checks</summary><div class=\"orbit-table-wrap\"><table><thead><tr><th>Vendor</th><th>Invitation</th><th>Email</th><th>Email status</th><th>Mobile</th><th>SMS status</th></tr></thead><tbody>'+tableRows+'</tbody></table></div></details>');\n      for(const f of box.querySelectorAll('[data-wolves-email-v760]'))f.srcdoc=String(data.creative?.[f.dataset.wolvesEmailV760==='registered'?'emailRegistered':'emailSignup']?.html||'');\n      const status=$('vendorWolvesDraftStatusV760');if(status)status.textContent='Campaign '+d.status+' \u00B7 version '+d.revision+' \u00B7 '+fmt(d.bookedTargetCount)+' booked traders targeted \u00B7 '+fmt(d.emailPreparedEligible)+' email-permission candidates \u00B7 NOT SENT.';\n      wolvesLoadMailV761().catch(e=>{const x=$('vendorWolvesDeliverySummaryV761');if(x)x.textContent=e.message||String(e);});\n      wolvesLoadSmsV763().catch(e=>{const x=$('vendorWolvesSmsNoticeV763');if(x)x.textContent=e.message||String(e);});\n    }catch(error){if(box)box.textContent=error.message||String(error);throw error;}finally{setLoading(button,false);}\n  }\n  function parseMailchimpSubscribersV760(content){\n    const lines=String(content||'').split(/\\r?\\n/).map(x=>x.trim()).filter(Boolean);\n    const result=[],statuses={excluded:0},simpleEmail=/^[^\\s@,;]+@[^\\s@,;]+\\.[^\\s@,;]+$/;\n    if(!lines.length)throw Error('Paste an active newsletter subscriber list or select a Mailchimp export first.');\n    const sep=lines[0].includes(';')&&!lines[0].includes(',')?';':',';\n    const split=line=>{const cells=[];let buf='',quoted=false;for(let i=0;i<line.length;i++){const ch=line[i];if(ch==='\"'&&line[i+1]==='\"'&&quoted){buf+='\"';i++;continue;}if(ch==='\"'){quoted=!quoted;continue;}if(ch===sep&&!quoted){cells.push(buf.trim());buf='';continue;}buf+=ch;}cells.push(buf.trim());return cells;};\n    const first=split(lines[0]).map(x=>x.toLowerCase().replace(/[ _-]/g,''));const ei=first.findIndex(x=>x==='email'||x==='emailaddress'||x==='e-mail');const si=first.findIndex(x=>x==='status'||x==='subscribed'||x==='subscriptionstatus');\n    const rows=ei>=0?lines.slice(1):lines;\n    for(const line of rows){const cols=split(line),value=String(ei>=0?cols[ei]:line).trim().toLowerCase();if(!simpleEmail.test(value)){statuses.excluded++;continue;}const state=si>=0?String(cols[si]||'').toLowerCase().trim():'subscribed';if(si>=0&&!['subscribed','active','true','yes','1','confirmed'].includes(state)){statuses.excluded++;continue;}result.push(value);}\n    const emails=[...new Set(result)];if(!emails.length)throw Error('No confirmed, active subscriber email addresses found. Check the Mailchimp export headings or statuses.');if(emails.length>2000)throw Error('Import at most 2,000 reviewed subscriber addresses.');\n    return {emails,excluded:statuses.excluded};\n  }\n  document.addEventListener('click',async event=>{\n    const button=event.target?.closest?.('#vendorWolvesSaveDraftV760,#vendorWolvesEvidenceV760');if(!button)return;event.preventDefault();\n    if(!wolvesCampaignReviewV760){setNotice('Refresh the booked vendors and review the audience first.',true);return;}\n    setLoading(button,true);const note=$('vendorWolvesDraftStatusV760');try{\n      if(button.id==='vendorWolvesSaveDraftV760'){\n        if(!confirm('Save the Wolverhampton invitation as an UNSENT DRAFT? This does not approve or send marketing.'))return;\n        const d=wolvesCampaignReviewV760;const response=await api(wolvesCampaignPathV760,{method:'POST',body:JSON.stringify({expectedAudienceHash:d.audienceSnapshotHash,expectedRevision:d.invitationDraft?.revision,confirmation:'SAVE WOLVERHAMPTON CAMPAIGN DRAFT'}),cacheMs:0});if(note)note.textContent=response.message;\n      }else{\n        const file=$('vendorWolvesSubscriberFileV760')?.files?.[0];if(file&&file.size>128000)throw Error('Mailchimp export is too large (maximum 128KB).');\n        const content=(await (file?.text?.()||Promise.resolve('')))||$('vendorWolvesSubscriberListV760')?.value||'';const parsed=parseMailchimpSubscribersV760(content);\n        const source=$('vendorWolvesSourceV760')?.value||'';\n        if(!confirm('Confirm these '+parsed.emails.length+' addresses are CURRENT active subscribers to your Mailchimp newsletter, and that you have checked the source list. '+parsed.excluded+' excluded/invalid rows were ignored. This does NOT approve SMS or override opt-outs.'))return;\n        const response=await api('/api/admin/vendors/club/campaigns/wolverhampton-newsletter-evidence',{method:'POST',body:JSON.stringify({addresses:parsed.emails,sourceName:source,expectedRevision:wolvesCampaignReviewV760.invitationDraft?.revision,confirmation:'I VERIFIED CURRENT MAILCHIMP NEWSLETTER SUBSCRIPTIONS'}),cacheMs:0});\n        if(note)note.textContent=response.message;\n        const area=$('vendorWolvesSubscriberListV760');if(area)area.value='';const picker=$('vendorWolvesSubscriberFileV760');if(picker)picker.value='';\n      }\n      await previewWolverhamptonCampaignV729();\n    }catch(e){if(note)note.textContent=e.message||String(e);setNotice(e.message||String(e),true);}finally{setLoading(button,false);}\n  },true);\n  // V761 dedicated, event-scoped Wolverhampton email delivery. Existing Club\n  // launch/send machinery remains untouched. No SMS is sent by these controls.\n  let wolvesDeliveryV761=null;\n  const wolvesMailPathV761='/api/admin/vendors/club/campaigns/wolverhampton-email';\n  function wolvesRenderMailV761(data){\n    wolvesDeliveryV761=data;const el=$('vendorWolvesDeliverySummaryV761');if(!el)return;\n    const fmt=x=>Number(x||0).toLocaleString('en-GB');\n    const statusLabel={not_started:'Ready to prepare',running:'Sending',paused:'Paused',completed:'Completed',review_required:'Needs review'}[data.status]||data.status||'Not started';\n    const states=data.counts||{},count=Object.entries(states).map(([k,v])=>esc(k)+': '+fmt(v)).join(' \u00B7 ');\n    el.innerHTML='<div class=\"orbit-v761-wolves-send__summary\"><strong>'+esc(String(data.emailCandidates||0))+' ready-to-email recipients</strong> of '+fmt(data.bookedTargets)+' booked vendors \u00B7 '+fmt(data.emailExclusions)+' excluded or requiring review.<p>Mailchimp subscriber evidence: '+fmt(data.evidenceMatched)+' matched \u00B7 Saved as: '+esc(data.sourceName||'not recorded')+'</p><p><strong>Campaign: '+esc(statusLabel)+'</strong> \u00B7 '+(data.test?'TEST accepted by provider; confirm inbox':'TEST not yet accepted')+' \u00B7 '+(count||'no live recipients queued')+'</p><p>'+esc(data.competitionNotice||'')+'</p>'+(data.blockers||[]).map(x=>'<p style=\"color:#9e3b42\">'+esc(x)+'</p>').join('')+'</div>';\n    const send=$('vendorWolvesSendLiveV761'),pause=$('vendorWolvesPauseV761');\n    if(send){send.disabled=Boolean(data.status!=='not_started'||data.blockers?.length||!data.test);send.textContent=data.status==='not_started'?'Send '+fmt(data.emailCandidates)+' Wolverhampton email invitations':'Campaign '+statusLabel;}\n    if(pause){pause.disabled=!['running','paused'].includes(data.status);pause.textContent=data.status==='paused'?'Resume campaign':'Pause campaign';}\n    const status=$('vendorWolvesSendNoticeV761');if(status&&data.status!=='not_started')status.textContent='Email campaign '+data.status+' \u00B7 '+fmt(data.accepted)+' accepted by provider \u00B7 '+fmt(data.remaining)+' pending. No SMS sent.';\n  }\n  async function wolvesLoadMailV761(){const data=await api(wolvesMailPathV761+'/status',{cacheMs:0,timeoutMs:30000});wolvesRenderMailV761(data);return data;}\n  document.addEventListener('click',async event=>{\n    const button=event.target?.closest?.('#vendorWolvesDeliveryRefreshV761,#vendorWolvesSendTestV761,#vendorWolvesSendLiveV761,#vendorWolvesPauseV761');if(!button)return;\n    event.preventDefault();if(button.dataset.wolvesBusyV762==='1')return;button.dataset.wolvesBusyV762='1';setLoading(button,true);\n    const note=$('vendorWolvesSendNoticeV761');\n    try{\n      let data=wolvesDeliveryV761||await wolvesLoadMailV761();\n      if(button.id==='vendorWolvesDeliveryRefreshV761'){data=await wolvesLoadMailV761();return;}\n      if(button.id==='vendorWolvesSendTestV761'){\n        const to=($('vendorWolvesTestEmailV761')?.value||'').trim();if(!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(to))throw Error('Enter your own valid test email address.');\n        if(!confirm('Send one real TEST email to '+to+'? This does NOT send to vendors.'))return;\n        const result=await api(wolvesMailPathV761+'/test',{method:'POST',body:JSON.stringify({to,registered:$('vendorWolvesTestSegmentV761')?.value==='registered',requestId:'wolve-test-'+Date.now()+'-'+Math.random().toString(36).slice(2),expectedSnapshot:data.snapshot}),cacheMs:0,timeoutMs:30000});\n        if(note)note.textContent=result.message||'Test accepted by provider. Check the inbox, then confirm you reviewed it.';\n      } else if(button.id==='vendorWolvesSendLiveV761'){\n        if(!data.test)throw Error('Send and review a test email first.');\n        data=await wolvesLoadMailV761();\n        if(!data.sendEnabled)throw Error(data.blockers?.join('; ')||'Check the current test email and campaign status before sending.');\n        const phrase='SEND WOLVERHAMPTON EMAIL CAMPAIGN';\n        if(!confirm('Send '+data.emailCandidates+' Wolverhampton email invitations now?\\n\\nBy sending, you confirm you have reviewed the test email, the Mailchimp subscriber audience and the \u00A3500 competition terms. Known opt-outs remain excluded.\\n\\nEmails cannot be recalled after sending. No SMS will be sent.'))return;\n        const result=await api(wolvesMailPathV761+'/send',{method:'POST',body:JSON.stringify({expectedSnapshot:data.snapshot,expectedCount:data.emailCandidates,expectedRevision:data.version,testId:data.test.id,confirmation:phrase,permissionReviewed:true,testReviewed:true,competitionAcknowledged:true,mailchimpSourceConfirmed:true}),cacheMs:0,timeoutMs:30000});\n        if(note)note.textContent=result.message||'Campaign queued. Refresh status to follow progress.';\n      } else if(button.id==='vendorWolvesPauseV761'){\n        const paused=data.status!=='paused';if(!confirm((paused?'Pause':'Resume')+' the Wolverhampton invitation campaign?'))return;\n        await api(wolvesMailPathV761+'/pause',{method:'POST',body:JSON.stringify({paused}),cacheMs:0,timeoutMs:30000});\n      }\n      await wolvesLoadMailV761();\n    }catch(error){if(note)note.textContent=error.message||String(error);setNotice(error.message||String(error),true);}\n    finally{delete button.dataset.wolvesBusyV762;setLoading(button,false);if(wolvesDeliveryV761)wolvesRenderMailV761(wolvesDeliveryV761);}\n  },true);\n  // V763: independently approved Wolverhampton SMS. Email controls never call this endpoint.\n  const wolvesSmsPathV763='/api/admin/vendors/club/wolverhampton-sms';\n  let wolvesSmsV763=null;\n  function wolvesRenderSmsV763(data){\n    // Local to the SMS panel: the email formatter belongs to a different function.\n    const fmt=value=>Number(value||0).toLocaleString('en-GB');\n    wolvesSmsV763=data;const summary=$('vendorWolvesSmsSummaryV763');if(!summary)return;\n    const n=Number(data.recipientCount||0),total=Number(data.booked||0),parts=[];\n    for(const [reason,number] of Object.entries(data.excluded||{}))if(number)parts.push(fmt(number)+' '+reason);\n    summary.innerHTML='<div class=\"orbit-v763-sms-facts\"><span><strong>'+fmt(total)+'</strong><small>Booked vendors</small></span><span><strong>'+fmt(n)+'</strong><small>Unique SMS recipients</small></span><span><strong>'+fmt(data.accepted||0)+'</strong><small>Provider accepted</small></span><span><strong>'+fmt(data.remaining||0)+'</strong><small>Still queued</small></span></div><p>Campaign status: <strong>'+esc(data.status||'not_started')+'</strong>. Exclusions: '+esc(parts.join(' \u00B7 ')||'None')+'.</p>';\n    const preview=$('vendorWolvesSmsPreviewV763');if(preview)preview.textContent=data.messagePreview||'';\n    const segment=$('vendorWolvesSmsSegmentsV763');if(segment)segment.textContent=(data.smsSegments?.segments||'?')+' SMS segment(s) per contact, including the individual opt-out link. The actual link is personalised before sending.';\n    const send=$('vendorWolvesSmsSendV763');if(send){send.disabled=Boolean(data.status!=='not_started'||!data.test||data.blocked?.length);send.textContent=data.status==='not_started'?'Send '+fmt(n)+' Wolverhampton SMS messages':'SMS campaign '+data.status;}\n    const pause=$('vendorWolvesSmsPauseV763');if(pause){pause.disabled=!['queued','paused'].includes(data.status);pause.textContent=data.status==='paused'?'Resume SMS campaign':'Pause SMS campaign';}\n    const note=$('vendorWolvesSmsNoticeV763');if(note&&data.blocked?.length)note.textContent=data.blocked.join('; ');\n  }\n  async function wolvesLoadSmsV763(){const data=await api(wolvesSmsPathV763+'/status',{cacheMs:0,timeoutMs:30000});wolvesRenderSmsV763(data);return data;}\n  document.addEventListener('click',async event=>{\n    const b=event.target?.closest?.('#vendorWolvesSmsRefreshV763,#vendorWolvesSmsTestV763,#vendorWolvesSmsSendV763,#vendorWolvesSmsPauseV763');if(!b)return;\n    event.preventDefault();if(b.dataset.busyV763==='1')return;b.dataset.busyV763='1';setLoading(b,true);\n    const note=$('vendorWolvesSmsNoticeV763');try{\n      let data=wolvesSmsV763||await wolvesLoadSmsV763();\n      if(b.id==='vendorWolvesSmsRefreshV763'){await wolvesLoadSmsV763();return;}\n      if(b.id==='vendorWolvesSmsTestV763'){\n        const to=($('vendorWolvesSmsPhoneV763')?.value||'').trim();if(!/^(?:07\\d{9}|\\+447\\d{9})$/.test(to.replace(/[\\s-]/g,'')))throw Error('Enter your authorised UK mobile number.');\n        if(!confirm('Send one real TEST text to your own number? No vendors will receive this test.'))return;\n        const test=await api(wolvesSmsPathV763+'/test',{method:'POST',body:JSON.stringify({to,confirmation:'SEND TEST SMS',requestId:'wolves-sms-'+Date.now()+'-'+Math.random().toString(36).slice(2)}),cacheMs:0,timeoutMs:30000});\n        if(note)note.textContent=test.message||'Test accepted; confirm it reached your phone.';\n      }else if(b.id==='vendorWolvesSmsSendV763'){\n        data=await wolvesLoadSmsV763();if(!data.test)throw Error('Send and receive the TEST SMS first.');\n        if(!data.sendEnabled)throw Error(data.blocked?.join('; ')||'SMS campaign is not ready.');\n        if(!$('vendorWolvesSmsConsentV763')?.checked)throw Error('Confirm the SMS audience permission and review the wording first.');\n        const raw=$('vendorWolvesSmsScheduleV763')?.value||'';const scheduledFor=raw?new Date(raw).toISOString():null;\n        const when=scheduledFor?'at your selected time':'now';\n        if(!confirm('SEND '+data.recipientCount+' WOLVERHAMPTON SMS REMINDERS '+when+'?\\n\\nThis is real paid SMS and cannot be recalled. Existing STOP and opt-outs are excluded. Email is not touched.'))return;\n        const out=await api(wolvesSmsPathV763+'/send',{method:'POST',body:JSON.stringify({snapshot:data.snapshot,expectedCount:data.recipientCount,testId:data.test.id,permissionConfirmed:true,previewReviewed:true,confirmation:'SEND WOLVERHAMPTON SMS',scheduledFor}),cacheMs:0,timeoutMs:30000});\n        if(note)note.textContent=out.message||'SMS queued. Refresh status to track progress.';\n      }else if(b.id==='vendorWolvesSmsPauseV763'){\n        const paused=data.status!=='paused';if(!confirm((paused?'Pause':'Resume')+' the separate Wolverhampton SMS campaign?'))return;\n        await api(wolvesSmsPathV763+'/pause',{method:'POST',body:JSON.stringify({paused}),cacheMs:0,timeoutMs:30000});\n      }\n      await wolvesLoadSmsV763();\n    }catch(e){if(note)note.textContent=e.message||String(e);setNotice(e.message||String(e),true);}finally{delete b.dataset.busyV763;setLoading(b,false);if(wolvesSmsV763)wolvesRenderSmsV763(wolvesSmsV763);}\n  },true);\n  // V750 production contest management. Kept distinct from the synthetic sandbox.\n  let vendorLiveContestRevisionV750=0;\n  let vendorLiveRankRowsV751=[],vendorLiveRankPhaseV751='';\n  function renderVendorLiveRankV751(){\n    const box=$('vendorContestLeaderboardV750');if(!box)return;\n    const query=String($('vendorContestRankSearchV751')?.value||'').trim().toLowerCase();\n    const filtered=vendorLiveRankRowsV751.filter(row=>!query||String(row.vendorName||'').toLowerCase().includes(query)||String(row.vendorId||'').toLowerCase().includes(query));\n    const mode=vendorLiveRankPhaseV751==='PROVISIONAL_TRACKED_CLICKS_ONLY';\n    const showAll=$('vendorContestRankAllV751')?.checked===true;\n    const visible=showAll?filtered.slice(0,250):filtered.slice(0,15);\n    const formatNumber=n=>Number(n||0).toLocaleString('en-GB');\n    const trs=visible.map(r=>'<tr><td><span class=\"orbit-rank-number-v751\">'+Number(r.rank)+'</span></td><td><strong>'+esc(r.vendorName||'Name requires verification')+'</strong></td><td class=\"numeric\">'+formatNumber(r.verifiedRedirects)+'</td><td class=\"numeric\">'+formatNumber(r.paidTickets)+'</td><td class=\"numeric\">'+formatNumber(r.pointsEarned)+'</td></tr>').join('');\n    const table=visible.length?'<div class=\"orbit-table-wrap\"><table class=\"orbit-vendor-live-table-v751\"><thead><tr><th>Position</th><th>Vendor</th><th>Tracked clicks</th><th>Verified ticket units</th><th>Points</th></tr></thead><tbody>'+trs+'</tbody></table></div>':'<p class=\"orbit-muted\">No vendors match the current search.</p>';\n    const previous=box.querySelector('.orbit-vendor-live-rank-table-v751');if(previous)previous.remove();\n    box.insertAdjacentHTML('beforeend','<div class=\"orbit-vendor-live-rank-table-v751\">'+table+'</div>');\n    const summary=$('vendorContestRankCountV751');if(summary)summary.textContent=filtered.length+' of '+vendorLiveRankRowsV751.length+' vendor accounts'+(mode?' \u00B7 Clicks are NOT prize results.':' \u00B7 Paid-ticket ranking subject to reconciliation.');\n  }\n  async function loadVendorLiveLeaderboardV750(){\n    const box=$('vendorContestLeaderboardV750');if(!box)return;\n    const result=await api('/api/admin/vendors/club/live-competition/leaderboard',{cacheMs:0,timeoutMs:30000});\n    if(result.complete!==true){box.innerHTML='<p class=\"orbit-vendor-launch-warning-v729\">Live referral evidence could not be verified. Rankings remain withheld until reconciliation.</p>';return;}\n    vendorLiveRankRowsV751=result.leaderboard||[];vendorLiveRankPhaseV751=result.rankingMode||'';\n    const provisional=result.rankingMode==='PROVISIONAL_TRACKED_CLICKS_ONLY';\n    box.innerHTML='<div class=\"orbit-vendor-live-rank-head-v751\"><div><strong>'+(provisional?'Provisional click activity':'Qualifying paid ticket positions')+'</strong><p>'+(provisional?'No verified ticket sales have been reconciled yet. Click activity is not a prize ranking.':'Positions are based on verified ticket units. Final prizes require independent settlement and refund reconciliation.')+'</p></div><span class=\"orbit-vendor-live-phase-v751\">'+(provisional?'EARLY ACTIVITY':'SALES')+'</span></div><div class=\"orbit-vendor-live-rank-toolbar-v751\"><label>Find vendor<input id=\"vendorContestRankSearchV751\" placeholder=\"Search business or vendor\" type=\"search\" autocomplete=\"off\"></label><label class=\"orbit-vendor-rank-toggle-v751\"><input id=\"vendorContestRankAllV751\" type=\"checkbox\"> Show all vendors</label><span id=\"vendorContestRankCountV751\" aria-live=\"polite\"></span></div>';\n    box.querySelector('#vendorContestRankSearchV751')?.addEventListener('input',renderVendorLiveRankV751);\n    box.querySelector('#vendorContestRankAllV751')?.addEventListener('change',renderVendorLiveRankV751);\n    renderVendorLiveRankV751();\n  }\n  async function loadVendorLiveContestV750(){\n    const data=await api('/api/admin/vendors/club/live-competition',{cacheMs:0,timeoutMs:30000}),form=$('vendorContestFormV750'),stats=$('vendorContestEvidenceV750');if(!form)return;\n    const record=data.record||{};vendorLiveContestRevisionV750=Number(record.revision||0);\n    for(const field of ['title','popupHeadline','popupBody','popupCta'])if(form.elements.namedItem(field))form.elements.namedItem(field).value=record[field]||'';\n    if(stats){const proof=data.audit||{};stats.innerHTML=`<div class=\"orbit-vendor-live-stat-v750\"><strong>${esc(data.publicPromotion?.displayed?'Promotion visible':'Not published')}</strong><span>Wolverhampton public banner \u00B7 ${esc(record.status||'draft')}</span></div><div class=\"orbit-vendor-live-stat-v750\"><strong>${Number(proof.referralAccounts||0)}</strong><span>Real tracked vendor links</span></div><div class=\"orbit-vendor-live-stat-v750\"><strong>${Number(proof.totalRecordedClicks||0)}</strong><span>Recorded link clicks \u00B7 not unique people</span></div><div class=\"orbit-vendor-live-stat-v750\"><strong>Not verified</strong><span>Paid ticket attribution \u00B7 final prize awards on hold</span></div><p class=\"orbit-muted\">${esc(data.launchMessage||'')}</p>`;}\n  }\n  function previewVendorLoginModalV750(){\n    const form=$('vendorContestFormV750');if(!form)return;const field=k=>esc(String(form.elements.namedItem(k)?.value||''));\n    document.getElementById('orbitContestPreviewDialogV750')?.remove();const wrap=document.createElement('div');wrap.id='orbitContestPreviewDialogV750';wrap.className='orbit-vendor-competition-preview-v750';wrap.innerHTML=`<div class=\"orbit-vendor-competition-preview-v750__card\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Wolverhampton login pop-up draft preview\"><div class=\"orbit-vendor-competition-preview-v750__top\"><span>LIVE-STYLE PREVIEW \u00B7 NO CUSTOMER ACTION</span><button type=\"button\" data-contest-preview-close>Close \u2715</button></div><div class=\"orbit-vendor-competition-preview-v750__hero\"><span>WOLVERHAMPTON \u00B7 14 NOVEMBER 2026</span><h2>${field('popupHeadline')}</h2><p>${field('popupBody')}</p><div class=\"orbit-vendor-competition-preview-v750__prizes\"><strong>\u00A3250</strong><strong>\u00A3150</strong><strong>\u00A3100</strong></div><button type=\"button\" disabled>${field('popupCta')}</button><small>The real vendor will receive their own verified referral link and tracked A6 flyer.</small></div></div>`;\n    document.body.appendChild(wrap);const close=()=>wrap.remove();wrap.addEventListener('click',e=>{if(e.target===wrap||e.target.closest('[data-contest-preview-close]'))close();});wrap.querySelector('[data-contest-preview-close]')?.focus();\n  }\n  let vendorLiveShopProductsV750=[];\n  async function loadVendorLiveShopV750(){const data=await api('/api/admin/vendors/club/live-shop-drafts',{cacheMs:0});vendorLiveShopProductsV750=data.products||[];\n    const diag=$('vendorLiveShopReadinessV757');if(diag){const check=data.readiness||{};diag.innerHTML='<strong>Verified Shopify connection</strong><p>'+esc(check.storeVerified?'Connected to '+(check.store||'Orbit Card Show')+' in GBP':'Shop identity requires checking')+' \u00B7 '+esc(check.productsReadable?'Product catalogue readable':'Catalogue not verified')+' \u00B7 '+esc(check.liveCheckoutCapability?'Draft order checkout capability verified':'Checkout permission not verified')+'</p><p class=\"orbit-muted\">'+esc((check.reason||[]).join(' '))+'</p>';}\n    const list=$('vendorLiveShopListV750');if(!list)return;list.innerHTML='<p class=\"orbit-muted\">'+esc(data.notice||'')+'</p>'+(vendorLiveShopProductsV750.length?vendorLiveShopProductsV750.map(p=>`<article class=\"orbit-vendor-live-shop-item-v750\"><img src=\"${esc(p.photoDataUrl||'')}\" alt=\"Product photo\"><div><strong>${esc(p.title)}</strong><p>${esc(p.description)}</p><small>\u00A3${Number(p.priceGbp||0).toFixed(2)} \u00B7 Postage \u00A3${Number(p.postageGbp||0).toFixed(2)} \u00B7 Stock ${Number(p.stock||0)}</small><p>${esc(p.status)} \u00B7 NOT AVAILABLE TO BUY</p></div><button type=\"button\" class=\"secondary\" data-live-shop-edit-v750=\"${esc(p.id)}\">Edit draft</button></article>`).join(''):'<p>No saved Vendor Shop products yet.</p>');\n    list.querySelectorAll('[data-live-shop-edit-v750]').forEach(b=>b.addEventListener('click',()=>{const prod=vendorLiveShopProductsV750.find(p=>p.id===b.dataset.liveShopEditV750),form=$('vendorLiveShopDraftV750');if(!prod||!form)return;for(const n of ['id','revision','title','description','priceGbp','postageGbp','stock'])form.elements.namedItem(n).value=prod[n]??'';form.scrollIntoView({block:'start',behavior:'smooth'});}));}\n  function bindVendorLiveShopV750(){const form=$('vendorLiveShopDraftV750');if(!form)return;\n    $('vendorLiveShopRefreshV750')?.addEventListener('click',()=>loadVendorLiveShopV750().catch(e=>setNotice(e.message||e,true)));\n    $('vendorLiveShopClearV750')?.addEventListener('click',()=>{form.reset();form.elements.namedItem('id').value='';form.elements.namedItem('revision').value='0';});\n    form.addEventListener('submit',async e=>{e.preventDefault();const button=form.querySelector('[type=submit]'),notice=$('vendorLiveShopNoticeV750');setLoading(button,true);\n      try{const fd=new FormData(form),body={};for(const n of ['id','revision','title','description','priceGbp','postageGbp','stock'])body[n]=fd.get(n);const file=fd.get('photo');if(file&&file.size){if(file.size>1250000)throw Error('Please compress the photograph below 1.25 MB.');body.photoDataUrl=await new Promise((resolve,reject)=>{const reader=new FileReader();reader.onload=()=>resolve(reader.result);reader.onerror=()=>reject(Error('Image could not be read'));reader.readAsDataURL(file);});}\n        if(!confirm('Save this real-store PRODUCT DRAFT without publishing it? No Shopify checkout or label will be created yet.'))return;\n        const result=await api('/api/admin/vendors/club/live-shop-drafts',{method:'POST',body:JSON.stringify(body),cacheMs:0});notice.textContent='Draft saved. Shopify publication and postage verification are still required.';form.elements.namedItem('id').value=result.id;form.elements.namedItem('revision').value=result.revision;await loadVendorLiveShopV750();\n      }catch(err){notice.textContent=err.message||String(err);}finally{setLoading(button,false);}});\n    loadVendorLiveShopV750().catch(e=>{const box=$('vendorLiveShopListV750');if(box)box.textContent=e.message||'Could not load products';});}\n  function switchCompetitionPanelV757(target){\n    document.querySelectorAll('[data-contest-panel-v757]').forEach(el=>{el.hidden=el.dataset.contestPanelV757!==target;});\n    document.querySelectorAll('[data-contest-view-v757]').forEach(btn=>{const on=btn.dataset.contestViewV757===target;btn.setAttribute('aria-pressed',String(on));btn.classList.toggle('active',on);});\n  }\n  document.addEventListener('click',ev=>{const btn=ev.target?.closest?.('[data-contest-view-v757]');if(btn){ev.preventDefault();switchCompetitionPanelV757(btn.dataset.contestViewV757);}},true);\n  let flyerStudioRowsV757=[],flyerStudioCurrentV757=null,flyerStudioImageV757=null;\n  function flyerStatusV757(message,error=false){const el=$('vendorFlyerStatusV757');if(el){el.textContent=message;el.style.color=error?'#ad3b3b':'';}}\n  function showFlyerImageV757(image){const box=$('vendorFlyerPreviewImageV757');if(!box)return;box.innerHTML=image?'<img src=\"'+esc(image)+'\" alt=\"Chosen event artwork\"><span class=\"orbit-v757-flyer-qr-demo\">VENDOR QR</span>':'<span>No artwork uploaded for this event yet.</span>';}\n  async function loadFlyerStudioV757(){\n    const selector=$('vendorFlyerEventV757');if(!selector)return;\n    const value=selector.value,info=await api('/api/admin/vendors/club/flyer-studio',{cacheMs:0});\n    flyerStudioRowsV757=info.events||[];\n    selector.innerHTML=flyerStudioRowsV757.map(e=>'<option value=\"'+esc(e.eventKey)+'\">'+esc(e.eventDate+' \u00B7 '+e.name+' \u00B7 '+(e.template?.status||'No flyer'))+'</option>').join('')||'<option value=\"\">No active shows available</option>';\n    selector.value=flyerStudioRowsV757.some(e=>e.eventKey===value)?value:(flyerStudioRowsV757.some(e=>e.eventKey===info.defaultEventKey)?info.defaultEventKey:flyerStudioRowsV757[0]?.eventKey||'');\n    await loadFlyerTemplateV757();\n  }\n  async function loadFlyerTemplateV757(){\n    const eventKey=$('vendorFlyerEventV757')?.value,form=$('vendorFlyerFormV757');if(!form||!eventKey)return;\n    const data=await api('/api/admin/vendors/club/flyer-studio/template?eventKey='+encodeURIComponent(eventKey),{cacheMs:0});\n    const x=data.template||{},isW=eventKey==='event:2026-11-14|wolverhampton racecourse';flyerStudioCurrentV757=x;\n    for(const [key,fallback] of Object.entries({title:isW?'WOLVERHAMPTON':'ORBIT CARD SHOW',tagline:'Trading cards. Collectibles. A brilliant day out.',cta:'SCAN FOR TICKETS',qrXmm:36.1,qrYmm:98.5,qrSizeMm:38.8,revision:0})){if(form.elements.namedItem(key))form.elements.namedItem(key).value=x[key]??fallback;}\n    flyerStudioImageV757=x.artworkDataUrl||(isW?'https://orbit-membership-service.onrender.com/vendor-club-assets/wolverhampton-a6-master.png':null);\n    showFlyerImageV757(flyerStudioImageV757);\n    flyerStatusV757(x.status==='published'?(x.hasUnpublishedDraft?'New draft ready for approval \u00B7 current published flyer remains live':'Published for this event')+' \u00B7 revision '+x.revision:x.status==='disabled'?'Deactivated \u00B7 existing artwork retained':x.status==='draft'?'Unpublished draft saved \u00B7 revision '+x.revision:'No custom template yet. This event needs a saved draft before publication.');\n    $('vendorFlyerPublishV757').disabled=!(x.hasArtwork&&(x.status==='draft'||x.hasUnpublishedDraft));\n    $('vendorFlyerDeactivateV757').disabled=x.status!=='published';\n  }\n  document.addEventListener('change',e=>{\n    if(e.target?.id==='vendorFlyerEventV757')loadFlyerTemplateV757().catch(err=>flyerStatusV757(err.message,true));\n    if(e.target?.closest?.('#vendorFlyerFormV757 input[name=\"artwork\"]')){const file=e.target.files?.[0];if(!file)return;if(file.size>1250000||!['image/png','image/jpeg'].includes(file.type)){flyerStatusV757('Use PNG/JPEG artwork below 1.25 MB.',true);e.target.value='';return;}const reader=new FileReader();reader.onload=()=>{flyerStudioImageV757=String(reader.result||'');showFlyerImageV757(flyerStudioImageV757);flyerStatusV757('New image selected. Save draft to preserve it.');};reader.readAsDataURL(file);}\n  },true);\n  document.addEventListener('submit',async e=>{\n    if(e.target?.id!=='vendorFlyerFormV757')return;e.preventDefault();const form=e.target,btn=$('vendorFlyerSaveV757'),eventKey=$('vendorFlyerEventV757')?.value;\n    const local=String(flyerStudioImageV757||''),image=local.startsWith('data:image/')?local:flyerStudioCurrentV757?.artworkDataUrl||'';\n    if(!eventKey||!image){flyerStatusV757('Upload original event artwork before saving a flyer.',true);return;}\n    if(!confirm('Save this event artwork as an UNPUBLISHED draft? Existing published flyer will be replaced only after later explicit approval.'))return;\n    setLoading(btn,true);try{const fd=new FormData(form),input=Object.fromEntries(fd);delete input.artwork;\n     const result=await api('/api/admin/vendors/club/flyer-studio/template',{method:'POST',body:JSON.stringify({...input,eventKey,artworkDataUrl:image}),cacheMs:0});flyerStatusV757('Flyer draft saved (revision '+result.template.revision+'). Click Publish when you have reviewed it.');await loadFlyerStudioV757();}\n    catch(err){flyerStatusV757(err.message||'Artwork save failed',true);}finally{setLoading(btn,false);}\n  },true);\n  document.addEventListener('click',async e=>{\n    const id=e.target?.closest?.('button')?.id;if(!['vendorFlyerReloadV757','vendorFlyerPublishV757','vendorFlyerDeactivateV757'].includes(id))return;\n    e.preventDefault();const eventKey=$('vendorFlyerEventV757')?.value,action=id==='vendorFlyerPublishV757'?'publish':'deactivate';\n    if(id==='vendorFlyerReloadV757'){await loadFlyerStudioV757().catch(err=>flyerStatusV757(err.message,true));return;}\n    if(!eventKey||!flyerStudioCurrentV757)return;\n    const confirmPhrase=action==='publish'?'PUBLISH VERIFIED EVENT FLYER':'DEACTIVATE EVENT FLYER';\n    if(!confirm((action==='publish'?'Publish':'Deactivate')+' this exact event artwork? No customer messages are sent.'))return;\n    try{const result=await api('/api/admin/vendors/club/flyer-studio/publication',{method:'POST',body:JSON.stringify({eventKey,revision:flyerStudioCurrentV757.revision,action,confirm:confirmPhrase}),cacheMs:0});flyerStatusV757('Event flyer '+result.status+'.');await loadFlyerStudioV757();}catch(err){flyerStatusV757(err.message,true);}\n  },true);\n  function bindVendorLiveControlsV750(){\n    document.addEventListener('click',async e=>{if(!e.target?.closest?.('#vendorContestPublishPopupV757'))return;e.preventDefault();\n      if(!confirm('Publish the saved Wolverhampton popup wording to genuine vendors? No email/SMS or prize change occurs.'))return;\n      const btn=e.target.closest('button');setLoading(btn,true);\n      try{const result=await api('/api/admin/vendors/club/live-competition/publish-popup-copy',{method:'POST',body:JSON.stringify({revision:vendorLiveContestRevisionV750,confirm:'PUBLISH WOLVERHAMPTON PROMOTION COPY'}),cacheMs:0});\n        $('vendorContestNoticeV750').textContent='Live promo popup copy published (revision '+result.revision+'). No messages sent.';\n      }catch(err){const el=$('vendorContestNoticeV750');if(el)el.textContent=err.message||'Publication refused.';}finally{setLoading(btn,false);}\n    },true);\n    $('vendorContestRefreshV750')?.addEventListener('click',()=>loadVendorLiveContestV750().catch(e=>setNotice(e.message||e,true)));\n    $('vendorContestFormV750')?.addEventListener('submit',async e=>{e.preventDefault();const form=e.currentTarget,button=form.querySelector('[type=submit]');if(!confirm('Save this real competition copy as an UNPUBLISHED draft? No customer notification will be sent.'))return;\n      setLoading(button,true);try{const draft=Object.fromEntries(new FormData(form));Object.assign(draft,{revision:vendorLiveContestRevisionV750,prizesGbp:[250,150,100],pointsPerEligibleOrder:2});const saved=await api('/api/admin/vendors/club/live-competition/draft',{method:'POST',body:JSON.stringify(draft),cacheMs:0});vendorLiveContestRevisionV750=saved.revision;$('vendorContestNoticeV750').textContent='Unpublished draft saved. No customers were contacted.';await loadVendorLiveContestV750();}catch(err){$('vendorContestNoticeV750').textContent=err.message||String(err);}finally{setLoading(button,false);}});\n    $('vendorFlyerPreviewV750')?.addEventListener('click',()=>{const box=$('vendorFlyerPreviewResultV750');if(box)box.innerHTML='<figure class=\"orbit-vendor-flyer-master-v751\"><div class=\"orbit-vendor-flyer-master-v751__image\"><img src=\"https://orbit-membership-service.onrender.com/vendor-club-assets/wolverhampton-a6-master.png\" alt=\"Official Orbit Card Show Wolverhampton A6 event poster artwork; QR area reserved for each individual vendor\"><div class=\"orbit-vendor-flyer-master-v751__qr\"><span>PERSONALISED<br>VENDOR QR</span></div></div><figcaption>Artwork preview \u00B7 the downloadable vendor PDF places a genuine, unique ticket-referral QR in this area. No demonstration referral or sale is created by previewing.</figcaption></figure>';});\n    loadVendorLiveLeaderboardV750().catch(e=>{const box=$('vendorContestLeaderboardV750');if(box)box.textContent=e.message||'Real leaderboard unavailable';});\n    loadVendorLiveContestV750().catch(e=>{const box=$('vendorContestEvidenceV750');if(box)box.textContent=e.message||'Could not load live competition.';});\n  }\n  function initVendorAdminTabsV727(){\n    document.querySelectorAll('[data-vendor-sandbox-tab-v727]').forEach(b=>b.addEventListener('click',()=>setVendorSandboxTabV727(b.dataset.vendorSandboxTabV727)));\n    document.querySelectorAll('[data-vendor-campaign-tab-v727]').forEach(b=>b.addEventListener('click',()=>setVendorCampaignTabV727(b.dataset.vendorCampaignTabV727).catch(e=>setNotice(e.message||e,true))));\n    document.querySelectorAll('[data-growth-refresh-v727]').forEach(b=>b.addEventListener('click',()=>loadVendorGrowthV719().catch(e=>growthNoticeV719(e.message||String(e),true))));\n    document.querySelectorAll('[data-vendor-open-sandbox-section-v730]').forEach(b=>b.addEventListener('click',()=>{setVendorPaneV385('sandbox');setVendorSandboxTabV727(b.dataset.vendorOpenSandboxSectionV730);}));\n    document.querySelectorAll('[data-vendor-go-sandbox-v727]').forEach(b=>b.addEventListener('click',()=>setVendorPaneV385('sandbox')));\n    $('vendorSponsorLiveRefreshV729')?.addEventListener('click',()=>loadVendorSponsorLiveV729().catch(e=>setNotice(e.message||e,true)));\n    $('vendorSponsorLivePreviewV729')?.addEventListener('click',()=>previewVendorSponsorLiveV729().catch(e=>setNotice(e.message||e,true)));\n    $('vendorSponsorLiveCopyV729')?.addEventListener('click',()=>copyVendorSponsorLiveV729().catch(e=>setNotice(e.message||e,true)));\n    $('vendorSponsorLiveEventV729')?.addEventListener('change',()=>{sponsorLivePreviewV729=null;const b=$('vendorSponsorLiveCopyV729');if(b)b.disabled=true;});\n    $('vendorWolvesPreviewV729')?.addEventListener('click',()=>previewWolverhamptonCampaignV729().catch(e=>setNotice(e.message||e,true)));\n    bindVendorLiveControlsV750();\n    bindVendorLiveShopV750();\n  }\n  // V751: handle late/dynamically rendered Admin panes. V750 attached to one\n  // static element at startup, leaving the operator's Preview button inert.\n  document.addEventListener('click',event=>{\n    const trigger=event.target?.closest?.('#vendorContestPopupPreviewV750');\n    if(!trigger)return;\n    event.preventDefault();event.stopPropagation();\n    try{\n      const form=$('vendorContestFormV750');if(!form)throw new Error('Competition editor has not loaded. Reopen Competitions and try again.');\n      previewVendorLoginModalV750();\n      const notice=$('vendorContestNoticeV750');if(notice)notice.textContent='Preview open \u2014 nothing has been published or sent.';\n    }catch(error){\n      const message=error?.message||'Preview could not be shown.';\n      const notice=$('vendorContestNoticeV750');if(notice)notice.textContent=message;\n      setNotice(message,true);\n    }\n  },true);\n  // On the existing startup path, bind only once; do not install a new runtime.\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',initVendorAdminTabsV727,{once:true});else initVendorAdminTabsV727();\n  function setVendorPaneV385(pane){\n    pane=pane||\"customers\";state.currentVendorPane=pane;rememberOrbitSubtab(\"vendors\",pane);if(pane==='flyer-studio')void loadFlyerStudioV757().catch(err=>flyerStatusV757(err.message,true));\n    const workspaceHeader=document.querySelector(\".orbit-vendor-workspace-header\");if(workspaceHeader)workspaceHeader.hidden=pane===\"sponsorships\"||(pane===\"sandbox\"&&(!state.currentSandboxSectionV730||state.currentSandboxSectionV730===\"sponsor\"));\n    const headerActions=document.querySelector(\".orbit-vendor-header-actions-v496\");if(headerActions)headerActions.style.display=pane===\"club-support\"?\"none\":\"\";\n    // V704 NOTE-276A232959 revision 1: Vendor Support keeps the useful Shopify\n    // sync summary, but positions it opposite the Vendor Support heading rather\n    // than leaving a detached Vendors header block above the support workspace.\n    const syncStatus=$(\"vendorHeaderSyncStatusV497\"),supportSyncSlot=$(\"vendorSupportSyncStatusSlotV704\"),vendorTitle=workspaceHeader?.querySelector(\":scope > div\");\n    if(syncStatus){\n      if(pane===\"club-support\"&&supportSyncSlot){supportSyncSlot.appendChild(syncStatus);syncStatus.classList.add(\"is-support-v704\");}\n      else if(vendorTitle&&!vendorTitle.contains(syncStatus)){vendorTitle.appendChild(syncStatus);syncStatus.classList.remove(\"is-support-v704\");}\n    }\n    if(workspaceHeader)workspaceHeader.classList.toggle(\"support-pane-v704\",pane===\"club-support\");\n    // V726 NOTE-151D343E80 / NOTE-674F659BBE: the allocation tray replaces\n    // the entire grey workspace sub-navigation row. It must never be a child\n    // of the floor-plan panel, which is scrollable and contains the map.\n    const vendorStrip=document.querySelector('.orbit-vendor-planner-panel > .orbit-vendor-planner-vendor-strip-v693')\n      ||document.querySelector('#orbitTablePlannerSubnavSlotV726 > .orbit-vendor-planner-vendor-strip-v693');\n    const plannerSlot=document.getElementById('orbitTablePlannerSubnavSlotV726');\n    const plannerToolbar=document.querySelector('.orbit-vendor-planner-panel > .orbit-vendor-planner-toolbar');\n    if(vendorStrip&&plannerSlot&&plannerToolbar){\n      if(pane==='planner'&&vendorStrip.parentElement!==plannerSlot)plannerSlot.appendChild(vendorStrip);\n      else if(pane!=='planner'&&vendorStrip.parentElement!==plannerToolbar.parentElement)plannerToolbar.parentElement.insertBefore(vendorStrip,plannerToolbar);\n    }\n\n    document.querySelectorAll('[data-vendor-pane]').forEach(x=>{const active=x.dataset.vendorPane===pane;x.hidden=!active;x.classList.toggle('active',active);});\n    document.querySelectorAll('[data-vendor-open]').forEach(x=>{const active=x.dataset.vendorOpen===pane;x.classList.toggle('active',active);x.setAttribute('aria-selected',String(active));if(active)x.setAttribute('aria-current','page');else x.removeAttribute('aria-current');});\n    if(pane==='sandbox')loadVendorSponsorLiveV729().catch(err=>setNotice(err.message||err,true));\n    if(pane===\"changes\")loadVendorBookingChangesV487().catch(err=>setNotice(err.message||err,true));\n    if(pane===\"club\")loadVendorClubV620().catch(err=>setNotice(err.message||err,true));\n    if(pane===\"club-support\")loadVendorClubSupportV621().catch(err=>setNotice(err.message||err,true));\n    // V727: new Vendor Club Admin boundaries. All former Growth Lab product,\n    // competition, flyer and draft-campaign mutations still require a sandbox\n    // run ID; this routing never grants live payment or communication authority.\n    if(pane==='sandbox'){\n      loadVendorGrowthV719().catch(err=>growthNoticeV719(err.message||'Cannot load isolated sandbox.',true));\n    }\n    if(pane==='sandbox'){\n      loadVendorSponsorshipsV695().catch(err=>setNotice(err.message||err,true));\n      loadVendorClubSettingsV620().then(()=>setVendorSandboxTabV727(state.currentSandboxSectionV730||'sponsor')).catch(err=>setNotice(err.message||err,true));\n    }\n    if(pane==='growth'){\n      loadVendorClubSettingsV620().then(()=>setVendorCampaignTabV727('campaigns')).catch(err=>setNotice(err.message||err,true));\n    }\n    if(pane==='club-settings')loadVendorClubSettingsV620().then(()=>setVendorSettingsSectionV641('rewards')).catch(err=>setNotice(err.message||err,true));\n  }\n  function vendorClubStatusPillV620(value,label=null){const status=String(value||\"not_activated\").toLowerCase(),cls=status===\"active\"?\"active\":\"waiting\",text=label||status.replace(/_/g,\" \");return \"<span class='orbit-status-pill \"+cls+\"'>\"+esc(text)+\"</span>\";}\n  function vendorClubAdoptionBadgeV624(row){if(!row)return \"<span class='orbit-status-pill waiting'>Not joined</span>\";if(row.communicationSuppressed)return \"<span class='orbit-status-pill warning'>Do not contact</span>\";if(row.fullySetup)return \"<span class='orbit-status-pill active'>Fully set up</span>\";if(row.verifiedMobile)return \"<span class='orbit-status-pill active'>Mobile verified</span>\";if(row.activated)return \"<span class='orbit-status-pill active'>Accessed</span>\";if(row.signupStarted)return \"<span class='orbit-status-pill waiting'>Started</span>\";return \"<span class='orbit-status-pill waiting'>Not joined</span>\";}\n  function applyVendorClubStatusCellsV624(){const map=state.vendorClubStatusMapV624||{};document.querySelectorAll('[data-vendor-club-status-cell-v624]').forEach(cell=>{cell.innerHTML=vendorClubAdoptionBadgeV624(map[cell.dataset.vendorClubStatusCellV624]);});}\n  async function loadVendorClubStatusMapV624(){try{const data=await api(\"/api/admin/vendors/club?q=\",{cacheMs:0,timeoutMs:20000}),rows=data.rows||[];state.vendorClubStatusMapV624=Object.fromEntries(rows.map(row=>[String(row.canonicalVendorId||\"\"),row]));applyVendorClubStatusCellsV624();return data;}catch(error){state.vendorClubStatusMapV624=state.vendorClubStatusMapV624||{};return null;}}\n  const vendorClubSortV727={key:'vendor',direction:'asc'};\n  function vendorClubSortedRowsV727(rows){\n    const keys={vendor:r=>r.vendor||'',access:r=>r.statusLabel||r.clubStatus||'',points:r=>Number(r.pointsBalance||0),mobile:r=>r.verifiedMobile?1:0,upcoming:r=>Number(r.upcomingBookings||0),referred:r=>Number(r.lifetimeReferredPaidTickets||0),lastLogin:r=>r.lastLoginAt?Date.parse(r.lastLoginAt):null,updated:r=>r.lastRecordUpdatedAt?Date.parse(r.lastRecordUpdatedAt):null};\n    const get=keys[vendorClubSortV727.key]||keys.vendor,sign=vendorClubSortV727.direction==='desc'?-1:1;\n    return rows.map((r,i)=>({r,i})).sort((a,b)=>{\n      const av=get(a.r),bv=get(b.r),am=av==null||Number.isNaN(av),bm=bv==null||Number.isNaN(bv);\n      // Missing/never dates remain at the bottom in either direction.\n      if(am!==bm)return am?1:-1;\n      if(am&&bm)return a.i-b.i;\n      const cmp=typeof av==='number'&&typeof bv==='number'?av-bv:String(av).localeCompare(String(bv),'en-GB',{sensitivity:'base',numeric:true});\n      return sign*Math.sign(cmp)||a.i-b.i;\n    }).map(x=>x.r);\n  }\n  function vendorClubSortHeadingV727(label,key){\n    const selected=vendorClubSortV727.key===key,dir=selected?(vendorClubSortV727.direction==='asc'?'\u2191':'\u2193'):'';\n    return \"<th scope='col' aria-sort='\"+(selected?(vendorClubSortV727.direction==='asc'?'ascending':'descending'):'none')+\"'><button type='button' class='orbit-vendor-sort-v727' data-vendor-sort-v727='\"+key+\"' aria-label='Sort \"+label+\"'>\"+label+\"<span aria-hidden='true'>\"+(dir||'\u2195')+\"</span></button></th>\";\n  }\n  async function loadVendorClubV620(button=null){\n    if(button)setLoading(button,true);try{\n      const q=String($(\"vendorClubSearchV620\")?.value||\"\").trim(),data=await api(\"/api/admin/vendors/club?q=\"+encodeURIComponent(q),{cacheMs:0,timeoutMs:20000}),rows=vendorClubSortedRowsV727(data.rows||[]),target=$(\"vendorClubTableV620\"),summary=$(\"vendorClubSummaryV620\");\n      state.vendorClubStatusMapV624={...(state.vendorClubStatusMapV624||{}),...Object.fromEntries(rows.map(row=>[String(row.canonicalVendorId||\"\"),row]))};applyVendorClubStatusCellsV624();\n      if(summary){const active=rows.filter(x=>x.activated===true).length,verified=rows.filter(x=>x.verifiedMobile).length,total=rows.reduce((n,x)=>n+Number(x.pointsBalance||0),0),duration=Number(data.performance?.durationMs||0);summary.className=\"orbit-vendor-club-statusline is-success\";summary.innerHTML=\"<strong>\"+rows.length+\" Vendor Club account\"+(rows.length===1?\"\":\"s\")+\"</strong><span>\"+active+\" activated \u00B7 \"+verified+\" verified mobiles \u00B7 \"+total+\" points\"+(duration?\" \u00B7 loaded in \"+duration+\" ms\":\"\")+\"</span>\";}\n      if(target&&!target.dataset.sortBoundV727){\n        target.dataset.sortBoundV727='1';\n        target.addEventListener('click',event=>{\n          const b=event.target.closest('[data-vendor-sort-v727]');if(!b)return;\n          const key=b.dataset.vendorSortV727;\n          vendorClubSortV727.direction=vendorClubSortV727.key===key&&vendorClubSortV727.direction==='asc'?'desc':'asc';\n          vendorClubSortV727.key=key;\n          loadVendorClubV620().catch(e=>setNotice(e.message||e,true));\n        });\n      }\n      if(target)target.innerHTML=rows.length?\"<div class='orbit-table-wrap'><table><thead><tr>\"+vendorClubSortHeadingV727(\"Vendor\",\"vendor\")+vendorClubSortHeadingV727(\"Club access\",\"access\")+vendorClubSortHeadingV727(\"Points\",\"points\")+vendorClubSortHeadingV727(\"Mobile\",\"mobile\")+vendorClubSortHeadingV727(\"Upcoming\",\"upcoming\")+vendorClubSortHeadingV727(\"Referred tickets\",\"referred\")+vendorClubSortHeadingV727(\"Last vendor login\",\"lastLogin\")+vendorClubSortHeadingV727(\"Account updated\",\"updated\")+\"<th></th></tr></thead><tbody>\"+rows.map(row=>\"<tr><td><strong>\"+esc(row.vendor||\"Vendor\")+\"</strong><small>\"+esc(row.email||\"\")+\"</small></td><td>\"+vendorClubStatusPillV620(row.clubStatus,row.statusLabel)+\"</td><td><strong>\"+Number(row.pointsBalance||0)+\"</strong></td><td>\"+(row.verifiedMobile?\"Verified\":\"Not verified\")+\"</td><td>\"+Number(row.upcomingBookings||0)+\"</td><td>\"+Number(row.lifetimeReferredPaidTickets||0)+\"</td><td>\"+(row.lastLoginAt?esc(prettyDate(row.lastLoginAt)):\"Never\")+\"</td><td>\"+esc(prettyDate(row.lastRecordUpdatedAt))+\"</td><td><div class='orbit-action-row'><button type='button' class='secondary' data-vendor-club-open-v620='\"+esc(row.canonicalVendorId)+\"'>Open</button><button type='button' class='secondary' data-vendor-club-preview-vendor-v6201='\"+esc(row.canonicalVendorId)+\"'>Log in as vendor</button><button type='button' class='secondary' data-vendor-club-mobile-v675='\"+esc(row.canonicalVendorId)+\"'>Mobile QR</button></div></td></tr>\").join(\"\")+\"</tbody></table></div>\":\"<p class='orbit-muted'>No Vendor Club accounts match this search.</p>\";\n      return data;\n    }finally{if(button)setLoading(button,false);}\n  }\n\n  function vendorSponsorshipStatusV695(value){const raw=String(value||'').toUpperCase(),good=['APPROVED','FULFILLED','COMPLETED'].includes(raw),bad=raw.includes('REJECT'),label=raw.replace(/_/g,' ').toLowerCase();return \"<span class='orbit-status-pill \"+(good?'active':bad?'error':'waiting')+\"'>\"+esc(label||'unknown')+\"</span>\";}\n  function vendorSponsorshipRunV695(){const runId=state.vendorSponsorshipSandboxV695?.runId;if(!runId)throw new Error('Refresh the Sponsorships sandbox before changing it.');return runId;}\n  async function vendorSponsorshipPostV695(path,payload={}){return api(path,{method:'POST',body:JSON.stringify({...payload,runId:vendorSponsorshipRunV695()}),cacheMs:0,timeoutMs:30000});}\n  function vendorSponsorshipEventByIdV695(id){return (state.vendorSponsorshipSandboxV695?.events||[]).find(x=>String(x.id)===String(id));}\n  function vendorSponsorshipMoneyV695(value){return vendorMoneyV384(Number(value||0));}\n  function vendorSponsorshipEventCardV695(event){const plan=event.goldPlan||{},headline=event.headline||{},gold=event.gold||{};return \"<article class='orbit-vendor-sponsor-event-v695' data-sponsorship-event-v695='\"+esc(event.id)+\"'><div class='orbit-vendor-sponsor-event-head-v695'><div><span>\"+esc(prettyDate(event.eventDate))+\"</span><strong>\"+esc(event.name)+\"</strong><small>\"+esc(event.venue||event.location||'')+\"</small></div><div class='orbit-vendor-sponsor-event-stock-v695'><small>Table stock</small><strong>\"+Number(event.tableStock||0)+\"</strong></div></div><div class='orbit-vendor-sponsor-slot-grid-v695'><span><small>Headline</small><strong>\"+(headline.slotsUsed||0)+\" / \"+(headline.slotCapacity||1)+\"</strong><em>\"+esc(headline.reason||'')+\"</em></span><span><small>Gold</small><strong>\"+(gold.slotsUsed||0)+\" / \"+(gold.slotCapacity||5)+\"</strong><em>\"+esc(gold.reason||'')+\"</em></span><span><small>Canonical planner</small><strong>\"+(plan.ready?'Ready':'Not ready')+\"</strong><em>\"+esc(plan.ready?(plan.status||'draft'):(plan.reason||'No linked plan'))+\"</em></span></div><form class='orbit-vendor-sponsor-event-settings-v695' data-sponsor-event-settings-v695='\"+esc(event.id)+\"'><label><input type='checkbox' name='sponsorshipEnabled' \"+(event.sponsorshipEnabled?'checked':'')+\"> Sponsorship enabled</label><label><input type='checkbox' name='headlineEnabled' \"+(event.headlineEnabled?'checked':'')+\"> Headline enabled</label><label><input type='checkbox' name='goldEnabled' \"+(event.goldEnabled?'checked':'')+\"> Gold enabled</label><label>Asset deadline<input type='date' name='assetDeadline' value='\"+esc(event.assetDeadline||'')+\"'></label><button class='secondary' type='submit'>Save event controls</button></form><div class='orbit-action-row'><button type='button' class='secondary' data-sponsor-plan-toggle-v695='\"+esc(event.id)+\"' data-unlocked='\"+(plan.unlocked?'1':'0')+\"' \"+(!plan.ready&&!plan.unlocked?'disabled':'')+\">\"+(plan.unlocked?'Close Gold table choices':'Invite Gold sponsors to choose positions')+\"</button>\"+(event.overrideReason?\"<small>\"+esc(event.overrideReason)+\"</small>\":'')+\"</div></article>\";}\n  function vendorSponsorshipChecklistV695(s){return \"<div class='orbit-vendor-sponsor-checklist-v695'>\"+(s.checklist||[]).map(task=>\"<label><input type='checkbox' data-sponsor-task-v695='\"+esc(s.id)+\"|\"+esc(task.id)+\"' \"+(task.completed?'checked':'')+\"> <span>\"+esc(task.label)+\"</span></label>\").join('')+\"</div>\";}\n  function vendorSponsorshipRecordV695(s){const event=vendorSponsorshipEventByIdV695(s.eventId)||{},assets=s.assets||{},currentGold=event.goldPlan?.currentSponsorshipId===s.id,bookingLinks=s.bookingLinks||[],tickets=s.ticketBatch;return \"<article class='orbit-vendor-sponsor-record-v695'><div class='orbit-vendor-sponsor-record-head-v695'><div><span>\"+esc((s.tier||'').toUpperCase())+\" \u00B7 \"+esc(event.name||s.eventId)+\"</span><strong>\"+esc(s.vendorName||'Sponsor')+\"</strong><small>\"+esc(s.considerationType||'')+(s.commercialNotes?' \u00B7 '+esc(s.commercialNotes):'')+\"</small></div>\"+vendorSponsorshipStatusV695(s.status)+\"</div><div class='orbit-vendor-sponsor-finance-v695'><span><small>Package</small><strong>\"+vendorSponsorshipMoneyV695(s.packagePrice)+\"</strong></span><span><small>Cash credit</small><strong>\"+vendorSponsorshipMoneyV695(s.cashCredit)+\"</strong></span><span><small>Paid</small><strong>\"+vendorSponsorshipMoneyV695(s.amountPaid)+\"</strong></span><span><small>Existing / new tables</small><strong>\"+Number(s.existingTableQty||0)+\" / \"+Number(s.newTableQty||0)+\"</strong></span><span><small>Points return</small><strong>\"+Number(s.pointsReturnPosted||s.pendingPointsReturn||0)+\"</strong></span></div>\"+(bookingLinks.length?\"<details><summary>Table credit evidence</summary><ul>\"+bookingLinks.map(x=>\"<li>\"+esc(x.sourceOrderLineId||x.id)+\" \u00B7 \"+esc(x.funding)+\" \u00B7 \"+vendorSponsorshipMoneyV695(x.amountPaid||0)+(x.pointsSpent?' \u00B7 '+Number(x.pointsSpent)+' pts':'')+\"</li>\").join('')+\"</ul></details>\":'')+\"<div class='orbit-action-row orbit-vendor-sponsor-primary-actions-v695'>\"+(s.status==='PAID_PENDING_APPROVAL'?\"<button type='button' data-sponsor-approve-v695='\"+esc(s.id)+\"'>Approve</button><button type='button' class='secondary orbit-danger-button' data-sponsor-reject-v695='\"+esc(s.id)+\"'>Reject &amp; full sandbox refund</button>\":'')+(s.tier==='gold'&&currentGold&&!s.tableSelection?.confirmedAt?\"<button type='button' class='secondary' data-sponsor-skip-v695='\"+esc(s.id)+\"'>Skip Gold turn</button>\":'')+\"</div><div class='orbit-vendor-sponsor-columns-v695'><section><h5>Assets</h5>\"+(assets.logoDataUrl?\"<img class='orbit-vendor-sponsor-logo-v695' src='\"+esc(assets.logoDataUrl)+\"' alt='Sponsor logo preview'>\":'')+\"<p><strong>\"+esc(assets.displayName||s.vendorName||'')+\"</strong><br>\"+esc(assets.website||'No website yet')+\"<br>\"+esc(assets.socialUrl||'No social link yet')+\"</p><label>Review<select data-sponsor-asset-status-v695='\"+esc(s.id)+\"'><option value='pending' \"+(assets.reviewStatus==='pending'?'selected':'')+\">Pending</option><option value='accepted' \"+(assets.reviewStatus==='accepted'?'selected':'')+\">Accepted</option><option value='needs_replacement' \"+(assets.reviewStatus==='needs_replacement'?'selected':'')+\">Needs replacement</option></select></label><label>Vendor-facing reason<textarea rows='2' data-sponsor-asset-reason-v695='\"+esc(s.id)+\"'>\"+esc(assets.reviewReason||'')+\"</textarea></label><button type='button' class='secondary' data-sponsor-asset-save-v695='\"+esc(s.id)+\"'>Save asset review</button></section><section><h5>Fulfilment</h5>\"+vendorSponsorshipChecklistV695(s)+(tickets?\"<p class='orbit-vendor-sponsor-ticket-v695'><strong>Ticket preview ready</strong><br>\"+Number(tickets.pairCount||0)+\" pair PDFs \u00B7 \"+Number(tickets.ticketCount||0)+\" unique 10am tickets<br><small>No live credentials issued.</small></p>\":\"<p class='orbit-muted'>Ticket batch locked until approval.</p>\")+\"</section></div>\"+(s.tier==='headline'?\"<label class='orbit-vendor-sponsor-placement-v695'>Headline premium placement / area<textarea rows='3' data-sponsor-placement-v695='\"+esc(s.id)+\"'>\"+esc(s.manualPlacement||'')+\"</textarea><button type='button' class='secondary' data-sponsor-placement-save-v695='\"+esc(s.id)+\"'>Save placement</button></label>\":'')+\"<details><summary>Audit history</summary><div class='orbit-vendor-sponsor-audit-v695'>\"+(s.audit||[]).slice().reverse().map(a=>\"<p><strong>\"+esc(String(a.action||'').replace(/_/g,' '))+\"</strong><span>\"+esc(prettyDate(a.at))+\" \u00B7 \"+esc(a.actor||'system')+\"</span></p>\").join('')+\"</div></details></article>\";}\n  function renderVendorSponsorshipsV695(data){state.vendorSponsorshipSandboxV695=data;const boundary=$('vendorSponsorshipBoundaryV695'),events=data.events||[],sponsors=data.sponsorships||[],pending=sponsors.filter(x=>x.status==='PAID_PENDING_APPROVAL').length,approved=sponsors.filter(x=>x.status==='APPROVED').length,goldUsed=events.reduce((n,e)=>n+Number(e.gold?.slotsUsed||0),0);if(boundary){boundary.className='orbit-vendor-club-statusline is-success';boundary.innerHTML='<strong>SANDBOX ONLY \u00B7 run '+esc(data.runId||'')+'</strong><span>No live Shopify charges, refunds, ticket credentials, public branding, customer emails or live table-stock writes are enabled by this release.</span>';}\n    const persona=$('vendorSponsorshipPersonaV695');if(persona){persona.innerHTML=(data.personas||[]).map(p=>\"<option value='\"+esc(p.id)+\"' \"+(p.id===data.activePersona?.id?'selected':'')+\">\"+esc(p.name)+' \u00B7 '+esc(p.summary)+\"</option>\").join('');}\n    const metrics=$('vendorSponsorshipMetricsV695');if(metrics)metrics.innerHTML=\"<span><small>Pending approval</small><strong>\"+pending+\"</strong></span><span><small>Approved / seeded</small><strong>\"+approved+\"</strong></span><span><small>Gold slots occupied</small><strong>\"+goldUsed+\"</strong></span><span><small>Test persona</small><strong>\"+esc(data.activePersona?.name||'')+\"</strong></span>\";\n    const eventRoot=$('vendorSponsorshipEventsV695');if(eventRoot)eventRoot.innerHTML=events.map(vendorSponsorshipEventCardV695).join('')||\"<p class='orbit-muted'>No sponsorship events in this sandbox.</p>\";\n    const manualEvent=$('vendorSponsorshipManualEventV695');if(manualEvent)manualEvent.innerHTML=events.map(e=>\"<option value='\"+esc(e.id)+\"'>\"+esc(e.name)+\"</option>\").join('');\n    const rows=$('vendorSponsorshipRowsV695');if(rows)rows.innerHTML=sponsors.length?sponsors.map(vendorSponsorshipRecordV695).join(''):\"<p class='orbit-muted'>No sponsorships yet. Open the Vendor Club Sandbox as a test vendor and purchase one.</p>\";bindVendorSponsorshipControlsV695();bindVendorSponsorshipAdminTabsV698();}\n  async function loadVendorSponsorshipsV695(button=null){if(button)setLoading(button,true);try{const data=await api('/api/admin/vendors/club/sponsorships/sandbox',{cacheMs:0,timeoutMs:30000});renderVendorSponsorshipsV695(data);return data;}finally{if(button)setLoading(button,false);}}\n  function renderVendorSponsorshipMobileQrV695(data){document.getElementById('vendorSponsorshipQrModalV695')?.remove();const wrap=document.createElement('div');wrap.id='vendorSponsorshipQrModalV695';wrap.className='orbit-vendor-sponsor-qr-modal-v695';wrap.innerHTML=\"<div class='orbit-vendor-sponsor-qr-card-v695' role='dialog' aria-modal='true' aria-labelledby='vendorSponsorQrTitleV695'><button type='button' class='orbit-vendor-sponsor-qr-close-v695' data-sponsor-qr-close-v695 aria-label='Close'>\u00D7</button><p class='orbit-kicker'>Vendor Club TEST SANDBOX</p><h3 id='vendorSponsorQrTitleV695'>Open this test vendor on your phone</h3><p>This signed link expires in five minutes, is sandbox-scoped and cannot grant live Admin or live-commerce authority.</p><img src='\"+esc(data.qrDataUrl||'')+\"' alt='QR code for Vendor Club sponsorship sandbox'><div class='orbit-action-row'><a class='orbit-button' href='\"+esc(data.url||'#')+\"' target='_blank' rel='noopener'>Open on this device</a><button class='secondary' type='button' data-sponsor-qr-copy-v695>Copy link</button><button class='secondary orbit-danger-button' type='button' data-sponsor-qr-revoke-v695>Revoke</button></div><small>Expires \"+esc(prettyDate(data.expiresAt))+\"</small></div>\";document.body.appendChild(wrap);wrap.querySelector('[data-sponsor-qr-close-v695]')?.addEventListener('click',()=>wrap.remove());wrap.addEventListener('click',e=>{if(e.target===wrap)wrap.remove();});wrap.querySelector('[data-sponsor-qr-copy-v695]')?.addEventListener('click',async e=>{try{await navigator.clipboard.writeText(data.url);e.currentTarget.textContent='Copied';}catch(_){prompt('Copy this sandbox link:',data.url);}});wrap.querySelector('[data-sponsor-qr-revoke-v695]')?.addEventListener('click',async e=>{if(!confirm('Revoke this unused sponsorship sandbox link?'))return;setLoading(e.currentTarget,true);try{await api('/api/admin/vendors/club/mobile-impersonation/'+encodeURIComponent(data.previewTokenId)+'/revoke',{method:'POST',body:'{}',cacheMs:0});wrap.remove();setNotice('Sponsorship sandbox mobile link revoked.');}finally{setLoading(e.currentTarget,false);}});}\n  function setVendorSponsorshipAdminTabV698(tab){const selected=['overview','events','sponsors','manual'].includes(String(tab))?String(tab):'overview';document.querySelectorAll('[data-sponsor-admin-tab-v698]').forEach(button=>{const active=button.dataset.sponsorAdminTabV698===selected;button.classList.toggle('active',active);button.setAttribute('aria-selected',String(active));});document.querySelectorAll('[data-sponsor-admin-panel-v698]').forEach(panel=>{panel.hidden=panel.dataset.sponsorAdminPanelV698!==selected;});state.vendorSponsorshipAdminTabV698=selected;}\n  function bindVendorSponsorshipAdminTabsV698(){document.querySelectorAll('[data-sponsor-admin-tab-v698]').forEach(button=>{if(button.dataset.boundV698)return;button.dataset.boundV698='1';button.addEventListener('click',()=>setVendorSponsorshipAdminTabV698(button.dataset.sponsorAdminTabV698));});setVendorSponsorshipAdminTabV698(state.vendorSponsorshipAdminTabV698||'overview');}\n  function bindVendorSponsorshipControlsV695(){\n    document.querySelectorAll('[data-sponsor-event-settings-v695]').forEach(form=>form.addEventListener('submit',async e=>{e.preventDefault();const eventId=form.dataset.sponsorEventSettingsV695,fd=new FormData(form),button=form.querySelector('button[type=submit]');setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorship-events/'+encodeURIComponent(eventId)+'/settings',{sponsorshipEnabled:form.querySelector('[name=sponsorshipEnabled]').checked,headlineEnabled:form.querySelector('[name=headlineEnabled]').checked,goldEnabled:form.querySelector('[name=goldEnabled]').checked,assetDeadline:fd.get('assetDeadline')});await loadVendorSponsorshipsV695();setNotice('Sandbox sponsorship event controls saved.');}finally{setLoading(button,false);}}));\n    document.querySelectorAll('[data-sponsor-plan-toggle-v695]').forEach(button=>button.addEventListener('click',async()=>{if(button.dataset.unlocked!=='1'&&!confirm('Only continue after the final event floor plan has been completed and marked Ready for show. This opens the in-app Gold position selection for approved sandbox sponsors in booking order. No emails or SMS are sent. Continue?'))return;setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorship-events/'+encodeURIComponent(button.dataset.sponsorPlanToggleV695)+'/gold-plan',{unlocked:button.dataset.unlocked!=='1'});await loadVendorSponsorshipsV695();}finally{setLoading(button,false);}}));\n    document.querySelectorAll('[data-sponsor-approve-v695]').forEach(button=>button.addEventListener('click',async()=>{if(!confirm('Approve this TEST SANDBOX sponsorship? This will post only simulated points/ticket-preview state.'))return;setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/'+encodeURIComponent(button.dataset.sponsorApproveV695)+'/approve');await loadVendorSponsorshipsV695();}finally{setLoading(button,false);}}));\n    document.querySelectorAll('[data-sponsor-reject-v695]').forEach(button=>button.addEventListener('click',async()=>{if(!confirm('Reject and simulate a full refund of the sponsorship transaction? Existing test table bookings will stay untouched.'))return;setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/'+encodeURIComponent(button.dataset.sponsorRejectV695)+'/reject');await loadVendorSponsorshipsV695();}finally{setLoading(button,false);}}));\n    document.querySelectorAll('[data-sponsor-asset-save-v695]').forEach(button=>button.addEventListener('click',async()=>{const id=button.dataset.sponsorAssetSaveV695,status=document.querySelector('[data-sponsor-asset-status-v695=\"'+CSS.escape(id)+'\"]')?.value||'pending',reason=document.querySelector('[data-sponsor-asset-reason-v695=\"'+CSS.escape(id)+'\"]')?.value||'';setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/'+encodeURIComponent(id)+'/assets-review',{status,reason});await loadVendorSponsorshipsV695();}finally{setLoading(button,false);}}));\n    document.querySelectorAll('[data-sponsor-task-v695]').forEach(input=>input.addEventListener('change',async()=>{const [id,taskId]=String(input.dataset.sponsorTaskV695||'').split('|');input.disabled=true;try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/'+encodeURIComponent(id)+'/checklist',{taskId,completed:input.checked});await loadVendorSponsorshipsV695();}catch(error){input.checked=!input.checked;setNotice(error.message||error,true);}finally{input.disabled=false;}}));\n    document.querySelectorAll('[data-sponsor-skip-v695]').forEach(button=>button.addEventListener('click',async()=>{const reason=prompt('Why are you skipping this Gold sponsor selection turn?');if(!reason)return;setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/'+encodeURIComponent(button.dataset.sponsorSkipV695)+'/skip-selection',{reason});await loadVendorSponsorshipsV695();}finally{setLoading(button,false);}}));\n    document.querySelectorAll('[data-sponsor-placement-save-v695]').forEach(button=>button.addEventListener('click',async()=>{const id=button.dataset.sponsorPlacementSaveV695,placement=document.querySelector('[data-sponsor-placement-v695=\"'+CSS.escape(id)+'\"]')?.value||'';setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/'+encodeURIComponent(id)+'/headline-placement',{placement});await loadVendorSponsorshipsV695();}finally{setLoading(button,false);}}));\n  }\n\n  function vendorClubLedgerTableV620(rows=[]){return rows.length?\"<div class='orbit-table-wrap'><table><thead><tr><th>When</th><th>Points</th><th>Reason</th><th>Source</th></tr></thead><tbody>\"+rows.slice(0,100).map(x=>\"<tr><td>\"+esc(prettyDate(x.createdAt))+\"</td><td><strong>\"+(Number(x.deltaPoints||0)>0?\"+\":\"\")+Number(x.deltaPoints||0)+\"</strong></td><td>\"+esc(x.humanReadableReason||x.reasonCode||\"Vendor Club points\")+\"</td><td>\"+esc(String(x.sourceType||\"\").replace(/_/g,\" \"))+\"</td></tr>\").join(\"\")+\"</tbody></table></div>\":\"<p class='orbit-muted'>No points ledger entries yet.</p>\";}\n  function vendorClubCustomerPanelV620(data,customer={}){\n    if(!data?.admin)return \"\";\n    const a=data.admin,p=data.profile||{},prefs=p.notificationPreferences||{},bookings=a.pointsBookings||[],account=a.accountState||{},suppression=a.suppression||{},suppressed=suppression.suppressed===true,status=account.code||(p.clubStatus===\"active\"?\"active\":\"not_activated\"),statusLabel=account.label||(status===\"active\"?\"Activated\":\"Not activated\"),email=account.primaryEmail||data.vendor?.primaryEmail||data.vendor?.email||customer.email||\"Not recorded\",lastLogin=account.lastLoginAt?prettyDate(account.lastLoginAt):\"Never\",activatedAt=account.firstActivatedAt?prettyDate(account.firstActivatedAt):\"Not yet\",mobileVerified=account.mobileVerified===true||p.mobileVerified===true;\n    const accessPanel=\"<section class='orbit-vendor-club-account-state-v623 \"+(suppressed?\"is-suppressed-v624\":\"\")+\"'><div class='orbit-panel-header'><div><p class='orbit-kicker'>Vendor Club access</p><h4>\"+esc(statusLabel)+\"</h4>\"+(suppressed?\"<p class='orbit-vendor-do-not-contact-v624'><strong>DO NOT CONTACT</strong><span>Excluded from Vendor Club invitations, newsletters, new-show announcements and bulk marketing.</span></p>\":\"\")+\"</div><div class='orbit-action-row'>\"+vendorClubStatusPillV620(status,statusLabel)+\"<button type='button' class='secondary' data-vendor-club-preview-vendor-v6201='\"+esc(a.canonicalVendorId)+\"'>Log in as vendor</button><button type='button' class='secondary' data-vendor-club-mobile-v675='\"+esc(a.canonicalVendorId)+\"'>Mobile QR</button><button type='button' class='secondary' data-vendor-club-primary-email-v670='\"+esc(a.canonicalVendorId)+\"' data-current-email='\"+esc(email)+\"'>Change primary email</button><button type='button' class='secondary \"+(suppressed?\"\":\"orbit-danger-button\")+\"' data-vendor-club-suppression-v624='\"+esc(a.canonicalVendorId)+\"' data-suppressed='\"+(suppressed?\"1\":\"0\")+\"'>\"+(suppressed?\"Allow communications\":\"Exclude from communications\")+\"</button></div></div><div class='orbit-vendor-club-state-meta-v623'><span><small>Club email</small><strong>\"+esc(email)+\"</strong></span><span><small>Activated</small><strong>\"+esc(activatedAt)+\"</strong></span><span><small>Last login</small><strong>\"+esc(lastLogin)+\"</strong></span><span><small>Mobile</small><strong>\"+(mobileVerified?\"Verified\":\"Not verified\")+\"</strong></span></div>\"+(suppressed&&suppression.reason?\"<p class='orbit-muted'>Suppression reason: \"+esc(suppression.reason)+\"</p>\":\"\")+\"<p class='orbit-muted'>Log in as vendor opens an audited, interactive real account. Purchases affect real stock and balances. Use the separate Test Sandbox for isolated tests.</p></section>\";\n    const pointsPanel=\"<section class='orbit-panel orbit-vendor-club-profile-v620'><div class='orbit-panel-header'><div><p class='orbit-kicker'>Points &amp; Club activity</p><h4>\"+Number(data.summary?.pointsBalance||0)+\" points \u00B7 \u00A3\"+Number(data.summary?.pointsValueGbp||0)+\" booking value</h4></div></div><div class='orbit-vendor-customer-stats'><span><strong>\"+Number(a.lifetimeEarned||0)+\"</strong><small>Lifetime earned</small></span><span><strong>\"+Number(a.lifetimeRedeemed||0)+\"</strong><small>Redeemed</small></span><span><strong>\"+Number(a.launchFuturePoints||0)+\"</strong><small>Upcoming launch credit</small></span><span><strong>\"+(mobileVerified?\"Yes\":\"No\")+\"</strong><small>Mobile verified</small></span></div><p class='orbit-muted'>Notifications: booking updates \"+(prefs.bookingUpdates!==false?\"on\":\"off\")+\" \u00B7 new show announcements \"+(prefs.newShowAnnouncements?\"on\":\"off\")+\" \u00B7 referral ticket sales \"+(prefs.referralTicketSales?\"on\":\"off\")+\".</p><div class='orbit-action-row'><button type='button' class='secondary' data-vendor-club-adjust-v620='add' data-customer-key='\"+esc(a.canonicalVendorId)+\"'>Add points</button><button type='button' class='secondary' data-vendor-club-adjust-v620='deduct' data-customer-key='\"+esc(a.canonicalVendorId)+\"'>Deduct points</button></div><h4>Points-funded bookings</h4>\"+(bookings.length?\"<div class='orbit-table-wrap'><table><thead><tr><th>Event</th><th>Tables</th><th>Spent</th><th>Status</th><th></th></tr></thead><tbody>\"+bookings.map(b=>\"<tr><td>\"+esc(b.eventLabel||b.eventKey||\"Event\")+\"</td><td>\"+Number(b.quantity||0)+\"</td><td>\"+Number(b.pointsDebited||0)+\"</td><td>\"+(b.active!==false&&!b.cancelledAt?\"Active\":\"Cancelled\")+\"</td><td>\"+(b.active!==false&&!b.cancelledAt?vendorManagedButtonsV639({...b,vendorClubBookingId:b.id}):\"<button type='button' class='secondary' data-vendor-booking-action-v639='details' data-booking-id='\"+esc(b.id)+\"'>History / return status</button>\")+\"</td></tr>\").join(\"\")+\"</tbody></table></div>\":\"<p class='orbit-muted'>No points-funded bookings.</p>\")+\"<h4>Points ledger</h4>\"+vendorClubLedgerTableV620(a.ledger||[])+\"</section>\";\n    const conversions=Array.isArray(a.referralConversions)?a.referralConversions:[],settled=conversions.filter(x=>x.status===\"settled\"),rewarded=settled.reduce((n,x)=>n+Number(x.totalRewardPoints??x.rewardPoints??0),0),reversed=conversions.reduce((n,x)=>n+Number(x.totalReversedRewardCount??x.reversedRewardCount??0),0);\n    const referralPanel=\"<section class='orbit-panel orbit-vendor-referral-audit-v716'><div class='orbit-panel-header'><div><p class='orbit-kicker'>Promote &amp; Earn audit</p><h4>\"+settled.length+\" attributed checkout\"+(settled.length===1?\"\":\"s\")+\" \u00B7 \"+rewarded+\" points awarded</h4><p>Traceable paid-ticket conversions for this canonical vendor. Rewards are idempotent and refunded tickets are reversed against the original ledger entry.</p></div></div><div class='orbit-vendor-customer-stats'><span><strong>\"+conversions.length+\"</strong><small>Checked out</small></span><span><strong>\"+settled.reduce((n,x)=>n+Number(x.eligiblePaidTicketCount||0),0)+\"</strong><small>Eligible tickets</small></span><span><strong>\"+rewarded+\"</strong><small>Points awarded</small></span><span><strong>\"+reversed+\"</strong><small>Rewards reversed</small></span></div>\"+(conversions.length?\"<div class='orbit-table-wrap'><table><thead><tr><th>When</th><th>Event</th><th>Checkout / order</th><th>Attribution</th><th>Tickets</th><th>Points</th><th>Refund</th></tr></thead><tbody>\"+conversions.map(x=>\"<tr><td>\"+esc(prettyDate(x.settledAt||x.paidAt||x.updatedAt||x.createdAt))+\"</td><td>\"+esc(x.eventName||x.eventKey||x.eventbriteEventId||\"Event\")+\"</td><td><strong>\"+esc(x.checkoutId||\"\u2014\")+\"</strong>\"+(x.shopifyOrderId?\"<br><small>\"+esc(x.shopifyOrderId)+\"</small>\":\"\")+\"</td><td>\"+esc(String(x.referralTokenMatched||x.reason||x.status||\"checked\").replace(/_/g,\" \"))+(x.referralClickId?\"<br><small>\"+(x.referralClickVerified?\"Verified click\":\"Legacy / unmatched click\")+\" \u00B7 \"+esc(x.referralClickId)+\"</small>\":\"<br><small>Legacy attribution</small>\")+\"</td><td>\"+Number(x.eligiblePaidTicketCount||0)+\"</td><td><strong>\"+(Number(x.totalRewardPoints??x.rewardPoints??0)>0?\"+\":\"\")+Number(x.totalRewardPoints??x.rewardPoints??0)+\"</strong></td><td>\"+esc(String(x.refundStatus||\"\u2014\").replace(/_/g,\" \"))+(Number(x.totalReversedRewardCount??x.reversedRewardCount??0)?\"<br><small>\"+Number(x.totalReversedRewardCount??x.reversedRewardCount??0)+\" reversed</small>\":\"\")+\"</td></tr>\").join(\"\")+\"</tbody></table></div>\":\"<p class='orbit-muted'>No Promote &amp; Earn ticket conversions have been recorded for this vendor yet.</p>\")+\"</section>\";\n    const ra=a.referralAudit||{},review=Array.isArray(ra.rewards)?ra.rewards:[];\n    const referralEvidencePanel=\"<section class='orbit-panel'><div class='orbit-panel-header'><div><p class='orbit-kicker'>Historical referral evidence</p><h4>\"+(ra.unavailable?\"Evidence lookup unavailable\":review.length+\" historical reward\"+(review.length===1?\"\":\"s\")+\" \u00B7 \"+Number(ra.totalReferralRewardPoints||0)+\" points\")+\"</h4><p class='orbit-muted'>Read-only verification against saved click, attribution, order and reward records. Missing records require investigation, not automatic deductions.</p></div></div>\"+(ra.unavailable?\"<p class='orbit-muted'>The ledger is unchanged. Please retry later.</p>\":review.length?\"<div class='orbit-table-wrap'><table><thead><tr><th>Issued</th><th>Points</th><th>Checkout</th><th>Order</th><th>Attribution</th><th>Click</th><th>Review</th></tr></thead><tbody>\"+review.map(r=>\"<tr><td>\"+esc(prettyDate(r.createdAt))+\"</td><td>+\"+Number(r.points||0)+\"</td><td>\"+esc(r.checkoutId||r.sourceReferenceId||\"Unrecorded\")+\"</td><td>\"+(r.orderPresent?\"Linked\":\"Not found\")+\"</td><td>\"+(r.conversionPresent?\"Linked\":\"Not found\")+\"</td><td>\"+(r.clickPresent?\"Linked\":\"Not found\")+\"</td><td>\"+esc(r.verdict==='evidence_linked'?\"Evidence linked\":(r.flags||[]).join(', ').replace(/_/g,' ').toLowerCase())+\"</td></tr>\").join('')+\"</tbody></table></div>\":\"<p class='orbit-muted'>No historical positive referral reward entries found.</p>\")+\"<p class='orbit-muted'>Review required: \"+Number(ra.needsReview||0)+\" \u00B7 Linked evidence: \"+Number(ra.evidenceLinked||0)+\". No points, orders or credit were changed.</p></section>\";\n    return accessPanel+pointsPanel+referralPanel+referralEvidencePanel;\n  }\n  async function changeVendorClubPrimaryEmailV670(button){\n    const key=button?.dataset?.vendorClubPrimaryEmailV670||state.currentVendorCustomerKey,current=button?.dataset?.currentEmail||state.currentVendorClubData?.admin?.accountState?.primaryEmail||\"\";if(!key)return;\n    const email=prompt(\"Enter the vendor\u2019s new primary Vendor Club email address:\",current);if(email===null)return;const next=String(email||\"\").trim().toLowerCase();if(!/^\\S+@\\S+\\.\\S+$/.test(next))throw new Error(\"Enter a valid email address.\");\n    const reason=prompt(\"Reason for changing the primary email (required):\",\"Vendor support request\");if(reason===null)return;if(!String(reason).trim())throw new Error(\"A reason is required.\");\n    if(!confirm(\"Change this Vendor Club primary email to \"+next+\"? The existing account, bookings, points and history will be preserved. Existing live Vendor Club sessions will be signed out.\"))return;\n    setLoading(button,true);try{const result=await api(\"/api/admin/vendors/club/vendors/\"+encodeURIComponent(key)+\"/primary-email\",{method:\"POST\",body:JSON.stringify({email:next,reason:String(reason).trim()}),cacheMs:0,timeoutMs:20000});setNotice(result.changed===false?\"That email is already the primary Vendor Club email.\":\"Vendor Club primary email changed. The vendor can now sign in with the new address.\");if(state.currentVendorCustomerKey===key)await viewVendorCustomerV398(key);await loadVendorClubV620();return result;}finally{setLoading(button,false);}\n  }\n  async function adjustVendorClubPointsV620(button){const key=button.dataset.customerKey,direction=button.dataset.vendorClubAdjustV620;const amount=Number(prompt((direction===\"deduct\"?\"Deduct\":\"Add\")+\" how many whole Vendor Club points?\",\"1\"));if(!Number.isInteger(amount)||amount<=0)return;const reason=prompt(\"Reason for this points adjustment (required):\",\"\");if(!reason?.trim())throw new Error(\"A reason is required.\");setLoading(button,true);try{await api(\"/api/admin/vendors/club/vendors/\"+encodeURIComponent(key)+\"/points\",{method:\"POST\",body:JSON.stringify({direction,amount,reason:reason.trim()}),cacheMs:0});setNotice(\"Vendor Club points adjusted with an audit entry.\");if(state.currentVendorCustomerKey===key)await viewVendorCustomerV398(key);await loadVendorClubV620();}finally{setLoading(button,false);}}\n  async function cancelVendorClubBookingV620(button){return openVendorBookingV639(button.dataset.vendorClubCancelV620,'cancel');}\n\n  function renderVendorClubLaunchStateV6201(v={}){\n    const live=v.publicLaunchEnabled===true,target=$(\"vendorClubLaunchStateV6201\"),enable=$(\"vendorClubEnableLaunchV6201\"),disable=$(\"vendorClubDisableLaunchV6201\");\n    if(target){target.className=\"orbit-vendor-club-statusline \"+(live?\"is-warning\":\"is-success\");target.innerHTML=live?\"<strong>Automatic invitations enabled</strong><span>Eligible table bookings can send the approved Vendor Club welcome email. Disable this switch to stop automatic invitations.</span>\":\"<strong>Automatic invitations disabled</strong><span>The website, voluntary signup and normal login remain available. New table bookings cannot automatically send a Vendor Club invitation.</span>\";}\n    if(enable)enable.hidden=live;if(disable)disable.hidden=!live;\n  }\n  function renderVendorClubPageStateV6202(v={}){\n    const target=$(\"vendorClubPageStateV6202\"),open=$(\"openVendorClubPageV6202\"),exists=v.exists===true,published=v.published===true,verified=v.publicVerified===true,url=v.url||\"https://orbitvendorclub.co.uk/\";\n    if(target){target.className=\"orbit-vendor-club-statusline \"+(verified?\"is-success\":exists&&published?\"is-warning\":\"\");target.innerHTML=verified?\"<strong>Render Vendor Club ready</strong><span>Public home, access, login and legal routes are served from orbitvendorclub.co.uk.</span>\":\"<strong>Render Vendor Club needs attention</strong><span>Recheck the standalone Vendor Club service before using Admin preview tools.</span>\";}\n    if(open){open.href=url;open.hidden=!exists;}\n  }\n  async function loadVendorClubPageV6202(){const data=await api(\"/api/admin/vendors/club/page\",{cacheMs:0,timeoutMs:30000});renderVendorClubPageStateV6202(data||{});return data;}\n  async function ensureVendorClubPageV6202(button=null){if(button)setLoading(button,true);try{const data=await api(\"/api/admin/vendors/club/page/ensure\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:45000});renderVendorClubPageStateV6202(data||{});if(data?.url)setNotice(\"Vendor Club review page is ready at \"+data.url+\". The Club remains locked from normal vendors.\");return data;}finally{if(button)setLoading(button,false);}}\n  async function openVendorClubPreviewV6201(mode,canonicalVendorId=null,button=null){const popup=window.open(\"about:blank\",\"_blank\");if(button)setLoading(button,true);try{const page=await api(\"/api/admin/vendors/club/page/ensure\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:45000});renderVendorClubPageStateV6202(page||{});if(!page?.url)throw new Error(\"Orbit could not prepare the standalone Vendor Club review page.\");const data=await api(\"/api/admin/vendors/club/preview-link\",{method:\"POST\",body:JSON.stringify({mode,canonicalVendorId}),cacheMs:0});if(!data?.url)throw new Error(\"Orbit did not return a Vendor Club preview URL.\");if(popup)popup.location.href=data.url;else window.open(data.url,\"_blank\",\"noopener\");setNotice(mode===\"vendor\"?\"Read-only Vendor Club preview opened. No vendor was emailed and no customer data can be changed.\":mode===\"sandbox\"?\"Interactive Test Vendor Sandbox opened. Test actions are isolated from live business state.\":\"Private Vendor Club preview opened. No vendor access was enabled.\");return data;}catch(err){if(popup)popup.close();throw err;}finally{if(button)setLoading(button,false);}}\n  let vendorMobileQrEpochV71601=0;\n  function closeVendorMobileQrV675(){vendorMobileQrEpochV71601++;const modal=$(\"vendorMobileQrV675\");if(modal){try{modal.close();}catch(_){}modal.remove();}}\n  function renderVendorMobileQrV675(data=null,{error='',vendorId=''}={}){\n    let wrap=$(\"vendorMobileQrV675\");\n    if(!wrap){wrap=document.createElement('dialog');wrap.id='vendorMobileQrV675';wrap.className='orbit-vendor-mobile-qr-v675';wrap.setAttribute('aria-labelledby','vendorMobileQrTitleV675');document.body.appendChild(wrap);wrap.addEventListener('cancel',e=>{e.preventDefault();closeVendorMobileQrV675();});wrap.addEventListener('click',e=>{if(e.target===wrap)closeVendorMobileQrV675();});try{wrap.showModal();}catch(_){wrap.setAttribute('open','');}}\n    const ready=Boolean(data?.url&&data?.qrDataUrl),expires=data?.expiresAt;\n    // A native modal remains visible even when launched from the customer-detail\n    // dialog's top layer. Loading is shown before waiting for the same auth API.\n    wrap.innerHTML=\"<section class='orbit-vendor-mobile-qr-card-v675'><button type='button' class='orbit-vendor-mobile-qr-close-v675' data-mobile-qr-close aria-label='Close'>\u00D7</button><p class='orbit-kicker'>Secure mobile impersonation</p><h3 id='vendorMobileQrTitleV675'>Open this vendor on your phone</h3>\"+(ready?\"<p class='orbit-muted'>Scan once with your phone camera. This audited Admin link expires in 5 minutes and cannot be reused after login.</p><div class='orbit-vendor-mobile-qr-image-v675'><img src='\"+esc(data.qrDataUrl)+\"' alt='QR code for secure Vendor Club mobile impersonation'></div><div class='orbit-vendor-mobile-qr-actions-v675'><a class='primary' href='\"+esc(data.url)+\"' target='_blank' rel='noopener noreferrer'>Open on this device</a><button type='button' class='secondary' data-mobile-qr-copy>Copy secure link</button><button type='button' class='secondary orbit-danger-button' data-mobile-qr-revoke>Revoke link</button></div><small>Expires \"+esc(prettyDate(expires))+\" \u00B7 ADMIN IMPERSONATION remains clearly labelled and audited.</small>\":error?\"<p class='orbit-error' role='alert' data-orbit-error>\"+esc(error)+\"</p><button type='button' class='secondary' data-mobile-qr-retry>Try again</button>\":\"<p role='status' aria-live='polite'>Creating your secure mobile QR\u2026</p><p class='orbit-muted'>Normal vendor login is unchanged.</p>\")+\"</section>\";\n    wrap.querySelector('[data-mobile-qr-close]')?.addEventListener('click',closeVendorMobileQrV675);\n    wrap.querySelector('[data-mobile-qr-retry]')?.addEventListener('click',e=>openVendorMobileQrV675(vendorId,e.currentTarget).catch(()=>{}));\n    wrap.querySelector('[data-mobile-qr-copy]')?.addEventListener('click',async e=>{const button=e.currentTarget;try{await navigator.clipboard.writeText(data.url);if(button.isConnected)button.textContent='Copied';}catch(_){prompt('Copy this secure mobile link:',data.url);}});\n    wrap.querySelector('[data-mobile-qr-revoke]')?.addEventListener('click',async e=>{const button=e.currentTarget;if(!confirm('Revoke this unused mobile impersonation link?'))return;setLoading(button,true);try{await api('/api/admin/vendors/club/mobile-impersonation/'+encodeURIComponent(data.previewTokenId)+'/revoke',{method:'POST',body:'{}',cacheMs:0,timeoutMs:15000});setNotice('Mobile impersonation link revoked.');closeVendorMobileQrV675();}catch(error){setNotice(error.message||'The link could not be revoked. It still expires automatically.',true);}finally{if(button.isConnected)setLoading(button,false);}});\n    wrap.querySelector('[data-mobile-qr-close]')?.focus();return wrap;\n  }\n  async function openVendorMobileQrV675(canonicalVendorId,button=null){\n    if(!canonicalVendorId)throw new Error('Choose a vendor first.');\n    const epoch=++vendorMobileQrEpochV71601;if(button)setLoading(button,true);renderVendorMobileQrV675(null,{vendorId:canonicalVendorId});\n    try{const data=await api('/api/admin/vendors/club/mobile-impersonation',{method:'POST',body:JSON.stringify({canonicalVendorId}),cacheMs:0,timeoutMs:20000});\n      if(epoch!==vendorMobileQrEpochV71601||!$(\"vendorMobileQrV675\"))return data;\n      if(!data?.url||!/^data:image\\/png;base64,/.test(String(data.qrDataUrl||'')))throw new Error('Orbit could not create the secure mobile QR. Please try again.');\n      renderVendorMobileQrV675(data,{vendorId:canonicalVendorId});return data;\n    }catch(error){if(epoch===vendorMobileQrEpochV71601&&$(\"vendorMobileQrV675\"))renderVendorMobileQrV675(null,{error:error.message||'The mobile QR could not be created.',vendorId:canonicalVendorId});throw error;\n    }finally{if(button?.isConnected)setLoading(button,false);}\n  }\n  async function loadVendorClubPreviewVendorsV623(){\n    const select=$(\"vendorClubPreviewVendorV623\");if(!select)return null;\n    const data=await api(\"/api/admin/vendors/club/preview-vendors\",{cacheMs:0,timeoutMs:15000}),rows=data.rows||[],current=select.value;\n    select.innerHTML=\"<option value=''>Choose a Vendor Club account</option>\"+rows.map(row=>\"<option value='\"+esc(row.canonicalVendorId)+\"'>\"+esc(row.vendor||row.email||\"Orbit Vendor\")+\" \u00B7 \"+esc(row.statusLabel||row.status||\"Not activated\")+\"</option>\").join(\"\");\n    if(current&&rows.some(row=>row.canonicalVendorId===current))select.value=current;\n    return data;\n  }\n  async function previewSelectedVendorClubV623(button){const key=$(\"vendorClubPreviewVendorV623\")?.value;if(!key)throw new Error(\"Choose a vendor to preview first.\");return openVendorClubPreviewV6201(\"vendor\",key,button);}\n  async function openVendorClubSandboxV624(button){return openVendorClubPreviewV6201(\"sandbox\",null,button);}\n  async function resetVendorClubSandboxV624(button){if(!confirm(\"Reset the Test Vendor Sandbox to a clean first-login state? This resets only synthetic test data and never touches a real Vendor account.\"))return;setLoading(button,true);try{const data=await api(\"/api/admin/vendors/club/sandbox/reset\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:20000}),result=$(\"vendorClubSandboxResultV624\");if(result){result.hidden=false;result.textContent=\"Test Vendor reset to 100 test points and a clean onboarding state.\";}setNotice(\"Test Vendor Sandbox reset. Live Vendor data and Shopify inventory were not changed.\");return data;}finally{setLoading(button,false);}}\n  async function setVendorCommunicationSuppressionV624(button){const key=button.dataset.vendorClubSuppressionV624,current=button.dataset.suppressed===\"1\",next=!current;if(!key)return;let reason=\"\";if(next){reason=prompt(\"Optional internal reason for excluding this vendor from Vendor Club invitations, newsletters and bulk marketing:\",\"\")||\"\";if(!confirm(\"Exclude this vendor from all Vendor marketing and launch communications? Transactional/security messages remain separate.\"))return;}else if(!confirm(\"Allow this vendor to receive future Vendor marketing and Vendor Club launch communications again?\"))return;setLoading(button,true);try{await api(\"/api/admin/vendors/club/vendors/\"+encodeURIComponent(key)+\"/communication-suppression\",{method:\"POST\",body:JSON.stringify({suppressed:next,reason}),cacheMs:0,timeoutMs:15000});setNotice(next?\"Vendor marked DO NOT CONTACT for marketing and launch communications.\":\"Vendor communication suppression removed.\");await Promise.all([viewVendorCustomerV398(key),loadVendorClubStatusMapV624()]);}finally{setLoading(button,false);}}\n  async function setVendorClubLaunchStateV6201(enabled,button){let confirmation=\"\";if(enabled){confirmation=prompt(\"Automatic Vendor Club invitations are currently disabled. Type GO LIVE to allow confirmed eligible bookings to send the approved welcome email.\",\"\");if(String(confirmation||\"\").trim().toUpperCase()!==\"GO LIVE\")return;}else if(!confirm(\"Disable automatic Vendor Club invitations now? Public signup/login will remain available and no existing normal session will be revoked.\"))return;setLoading(button,true);try{const data=await api(\"/api/admin/vendors/club/launch-state\",{method:\"POST\",body:JSON.stringify({enabled,confirmation}),cacheMs:0});renderVendorClubLaunchStateV6201(data.launch||{});const r=$(\"vendorClubLaunchResultV6201\");if(r){r.hidden=false;r.textContent=enabled?\"Automatic Vendor Club invitations are enabled.\":\"Automatic Vendor Club invitations are disabled. Public signup/login remain available.\";}setNotice(enabled?\"Automatic Vendor Club invitations authorised.\":\"Automatic Vendor Club invitations disabled.\");return data;}finally{setLoading(button,false);}}\n  // V642_REMINDER_BEGIN\n  let vendorReminderPreviewV642=null,vendorReminderEpochV642=0,vendorReminderPollV642=null,vendorReminderBusyV642=false,vendorReminderStateV642=null;\n  function reminderNoticeV642(text){const n=$('vendorReminderNoticeV642');if(n)n.textContent=text;}\n  function drawVendorReminderStatusV642(data){\n    vendorReminderStateV642=data;const b=data.batch,c=data.counts||{},target=$('vendorReminderStatusV642');\n    target.innerHTML=b?'<p><strong>Reminder '+esc(b.status.replace(/_/g,' '))+'</strong> \u00B7 '+Number(b.total||0)+' approved \u00B7 '+Number(c.accepted||0)+' accepted \u00B7 '+Number((c.queued||0)+(c.sending||0)+(c.retry||0))+' pending \u00B7 '+Number(c.skipped||0)+' skipped \u00B7 '+Number(c.needs_review||0)+' need review</p><details><summary>Reminder recipient history</summary>'+(data.rows||[]).map(r=>'<p>'+esc(r.to)+' \u00B7 '+esc(r.status.replace(/_/g,' '))+(r.providerId?' \u00B7 '+esc(r.providerId):'')+(r.errorCode?' \u00B7 '+esc(r.errorCode.replace(/_/g,' ').toLowerCase()):'')+'</p>').join('')+'</details>':'<p>No reminder has been authorised.</p>';\n    const pause=$('vendorReminderPauseV642');pause.hidden=!b||!['running','paused'].includes(b.status);pause.textContent=b?.status==='paused'?'Resume approved reminder':'Pause reminder';\n    if(b){$('vendorReminderReviewV642').hidden=true;$('vendorReminderPreviewV642').disabled=true;}\n    clearTimeout(vendorReminderPollV642);\n    if(b?.status==='running'&&vendorSettingsSectionV641==='archive')vendorReminderPollV642=setTimeout(()=>{if(!$('vendorSettingsPanelV641-archive')?.hidden&&!document.querySelector('[data-vendor-pane=\"club-settings\"]')?.hidden)loadVendorReminderStatusV642().catch(()=>{});},5000);\n  }\n  async function loadVendorReminderStatusV642(){const data=await api('/api/admin/vendors/club/reminder/status',{cacheMs:0,timeoutMs:15000});drawVendorReminderStatusV642(data);return data;}\n  async function loadVendorReminderPreviewV642(){\n    const epoch=++vendorReminderEpochV642;vendorReminderPreviewV642=null;$('vendorReminderApproveV642').checked=false;$('vendorReminderSendV642').disabled=true;$('vendorReminderReviewV642').hidden=true;\n    reminderNoticeV642('Checking original recipients against current signup and eligibility. No messages are being sent.');\n    const p=await api('/api/admin/vendors/club/reminder/preview',{cacheMs:0,timeoutMs:30000});if(epoch!==vendorReminderEpochV642)return;\n    if(p.existing){await loadVendorReminderStatusV642();reminderNoticeV642('A reminder has already been authorised. Its saved history is shown below.');return;}\n    vendorReminderPreviewV642=p;$('vendorReminderReviewV642').hidden=false;\n    $('vendorReminderSummaryV642').textContent=Number(p.total||0)+' eligible non-signups from '+Number(p.originalFrozen||0)+' original launch recipients. '+(p.excluded||[]).length+' excluded. Everyone is checked again immediately before sending.';\n    $('vendorReminderAudienceV642').innerHTML='<h4>Would receive this reminder</h4>'+((p.rows||[]).map(r=>'<p>'+esc(r.businessName||r.greetingName||'Vendor')+' \u00B7 '+esc(r.email)+'</p>').join('')||'<p>No eligible recipients.</p>')+'<h4>Excluded</h4>'+(p.excluded||[]).map(r=>'<p>'+esc(r.to||'Vendor')+' \u00B7 '+esc(r.reason.replace(/_/g,' '))+'</p>').join('');\n    $('vendorReminderSubjectV642').textContent=p.preview?.subject||'No message to preview';$('vendorReminderMessageV642').srcdoc=p.preview?.html||'<p>No eligible recipient to preview.</p>';\n    $('vendorReminderApproveV642').disabled=!p.canAuthorise;reminderNoticeV642(p.canAuthorise?'Preview ready. Review the audience and message before approving this separate reminder.':'No reminder can be authorised from this preview. Nothing has been sent.');\n  }\n  async function sendVendorReminderV642(){\n    const p=vendorReminderPreviewV642;if(vendorReminderBusyV642||!p?.canAuthorise||!$('vendorReminderApproveV642')?.checked)return;\n    if(!confirm('Send ONE separate reminder to these '+p.total+' vendors who have not joined? This sends real email. The original launch will not be repeated.'))return;\n    vendorReminderBusyV642=true;$('vendorReminderSendV642').disabled=true;reminderNoticeV642('Saving your explicit approval for this one reminder\u2026');\n    try{const result=await api('/api/admin/vendors/club/reminder/send',{method:'POST',body:JSON.stringify({confirmed:true,permissionConfirmed:true,reviewedTemplate:true,fingerprint:p.fingerprint,expectedCount:p.total}),cacheMs:0,timeoutMs:30000});drawVendorReminderStatusV642(result);reminderNoticeV642('Your separate reminder is authorised. Signup and suppression checks run again before each email.');}\n    catch(e){$('vendorReminderApproveV642').checked=false;reminderNoticeV642('Could not confirm the outcome. Refresh reminder status before doing anything else. '+e.message);await loadVendorReminderStatusV642().catch(()=>{});}\n    finally{vendorReminderBusyV642=false;}\n  }\n  // V642_REMINDER_END\n\n  // V676_VENDOR_CAMPAIGNS_BEGIN \u2014 two deliberately separate audiences, mandatory preview + TEST before live send.\n  const vendorCampaignStateV676={};\n  function campaignElV676(attr,key){return document.querySelector('['+attr+'=\"'+CSS.escape(key)+'\"]');}\n  let vendorCampaignPollV71601=null,vendorCampaignReadV71601=null,vendorCampaignFailuresV71601=0;\n  function campaignStatusTextV676(status={}){\n    const c=status.campaign,counts=status.counts||{};if(!c)return '<strong>Not sent</strong><span>No live campaign has been authorised.</span>';\n    const accepted=Number(counts.accepted||0),review=Number(counts.needs_review||0),unprepared=c.status==='preparing'?Math.max(0,Number(c.total||0)-Number(c.preparedCount||0)):0;\n    const remaining=unprepared+Number(counts.queued||0)+Number(counts.retry||0)+Number(counts.sending||0);\n    return '<strong>'+esc(String(c.status||'campaign').replace(/_/g,' '))+' \u00B7 '+accepted+' accepted</strong><span>'+remaining+' remaining \u00B7 '+review+' need review \u00B7 '+Number(counts.failed||0)+' failed \u00B7 '+Number(counts.skipped||0)+' skipped \u00B7 '+Number(c.total||0)+' frozen recipients</span>'+(c.lastError?'<span class=\"orbit-error\" data-orbit-error>'+esc(c.lastError)+'</span>':'')+'<small>Accepted means the provider accepted the email, not confirmed delivery. '+(status.checkedAt?'Updated '+esc(new Date(status.checkedAt).toLocaleTimeString('en-GB'))+'.':'')+'</small>';\n  }\n  function campaignPanelVisibleV71601(){return !document.hidden&&[...document.querySelectorAll('[data-campaign-status-v676]')].some(el=>el.getClientRects().length>0);}\n  function scheduleVendorCampaignPollV71601(){clearTimeout(vendorCampaignPollV71601);const active=Object.values(vendorCampaignStateV676).some(v=>v.launchUnknown||['preparing','running'].includes(v.status?.campaign?.status));if(!active||!campaignPanelVisibleV71601())return;vendorCampaignPollV71601=setTimeout(()=>loadVendorCampaignStatusesV676().catch(()=>{}),Math.min(30000,4000*Math.pow(2,Math.min(vendorCampaignFailuresV71601,3))));}\n  function drawVendorCampaignStatusV676(key,status){const state=vendorCampaignStateV676[key]||(vendorCampaignStateV676[key]={});state.status=status;if(status?.campaign)state.launchUnknown=false;\n    const el=campaignElV676('data-campaign-status-v676',key);if(el){el.className='orbit-vendor-campaign-status-v676 '+(status?.campaign?.status==='completed'?'is-complete':status?.campaign?'is-live':'');el.setAttribute('aria-live','polite');el.innerHTML=campaignStatusTextV676(status||{});}\n    const pause=campaignElV676('data-campaign-pause-v676',key);if(pause){pause.hidden=!['preparing','running','paused'].includes(status?.campaign?.status);pause.textContent=status?.campaign?.status==='paused'?'Resume campaign':'Pause campaign';pause.dataset.paused=String(status?.campaign?.status==='paused');}\n    updateVendorCampaignSendStateV676(key);scheduleVendorCampaignPollV71601();\n  }\n  async function loadVendorCampaignStatusesV676(){if(vendorCampaignReadV71601)return vendorCampaignReadV71601;\n    vendorCampaignReadV71601=(async()=>{try{const data=await api('/api/admin/vendors/club/campaigns?summary=1',{cacheMs:0,timeoutMs:20000});vendorCampaignFailuresV71601=0;for(const status of data.statuses||[])drawVendorCampaignStatusV676(status.key,{...status,checkedAt:new Date().toISOString()});return data;}\n      catch(error){vendorCampaignFailuresV71601++;for(const [key,state] of Object.entries(vendorCampaignStateV676)){const el=campaignElV676('data-campaign-status-v676',key);if(el&&!el.querySelector('[data-campaign-refresh-error]')){const note=document.createElement('p');note.dataset.campaignRefreshError='1';note.dataset.orbitError='';note.textContent='Progress could not be refreshed. The saved campaign has not been restarted. Retrying automatically.';el.appendChild(note);}}throw error;}\n      finally{vendorCampaignReadV71601=null;scheduleVendorCampaignPollV71601();}})();return vendorCampaignReadV71601;\n  }\n  document.addEventListener('visibilitychange',()=>{if(document.hidden)clearTimeout(vendorCampaignPollV71601);else if(campaignPanelVisibleV71601())loadVendorCampaignStatusesV676().catch(()=>{});});\n  window.addEventListener('focus',()=>{if(campaignPanelVisibleV71601())loadVendorCampaignStatusesV676().catch(()=>{});});\n  function campaignExclusionLabelV676(reason){return ({exclude_from_communications:'Excluded from communications',marketing_opt_out:'Marketing opt-out / unsubscribe',campaign_1_priority:'Campaign 1 recipient \u2014 excluded from Campaign 2',duplicate_email_deduped:'Duplicate email deduped',missing_valid_email:'No valid primary email',removed_or_merged:'Removed / merged vendor',sandbox:'Test/sandbox account',already_activated:'Vendor Club already activated',no_points_waiting:'No Vendor Points waiting'})[reason]||String(reason||'Excluded').replace(/_/g,' ');}\n  function drawVendorCampaignPreviewV676(key,p){\n    const state=vendorCampaignStateV676[key]||(vendorCampaignStateV676[key]={});state.preview=p;state.testId=null;\n    const review=campaignElV676('data-campaign-review-v676',key);if(review)review.hidden=false;\n    const set=(attr,value)=>{const el=campaignElV676(attr,key);if(el)el.textContent=value;};\n    set('data-campaign-count-v676',Number(p.total||0).toLocaleString('en-GB'));set('data-campaign-subject-v676',p.template?.subject||'No eligible recipient example');set('data-campaign-from-v676',p.template?.from||'\u2014');set('data-campaign-reply-v676',p.template?.replyTo||'\u2014');\n    const frame=campaignElV676('data-campaign-iframe-v676',key);if(frame)frame.srcdoc=p.template?.html||'<p>No eligible recipient example.</p>';\n    const audience=campaignElV676('data-campaign-audience-v676',key);if(audience){const inc=(p.rows||[]).slice(0,500),exc=Object.entries(p.exclusionCounts||{});audience.innerHTML='<p><strong>'+Number(p.total||0).toLocaleString('en-GB')+' included</strong> \u00B7 audience fingerprint '+esc(String(p.fingerprint||'').slice(0,12))+'\u2026</p>'+(inc.length?'<div class=\"orbit-vendor-campaign-audience-list-v676\">'+inc.map(r=>'<p><strong>'+esc(r.businessName||r.greetingName||'Vendor')+'</strong><span>'+esc(r.email)+' \u00B7 '+esc(r.inclusionReason==='future_booking_not_activated'?'Forward booking \u00B7 Vendor Club not activated':r.activated?'Existing Vendor Club member \u00B7 feature update':'Eligible vendor \u00B7 win-back')+(r.points?' \u00B7 '+Number(r.points)+' points':'')+'</span></p>').join('')+'</div>':'<p>No eligible recipients.</p>')+(p.rows?.length>500?'<p class=\"orbit-muted\">Showing the first 500 of '+Number(p.rows.length).toLocaleString('en-GB')+' recipients.</p>':'')+'<h5>Exclusions</h5>'+(exc.length?exc.map(([reason,n])=>'<p>'+Number(n).toLocaleString('en-GB')+' \u00B7 '+esc(campaignExclusionLabelV676(reason))+'</p>').join(''):'<p>No exclusions.</p>');}\n    const testStatus=campaignElV676('data-campaign-test-status-v676',key);if(testStatus)testStatus.textContent='Preview refreshed. Send yourself a fresh TEST of this exact template before live sending.';\n    const reviewed=campaignElV676('data-campaign-reviewed-v676',key);if(reviewed)reviewed.checked=false;const confirmation=campaignElV676('data-campaign-confirmation-v676',key);if(confirmation)confirmation.value='';updateVendorCampaignSendStateV676(key);\n  }\n  function updateVendorCampaignSendStateV676(key){const state=vendorCampaignStateV676[key]||{},reviewed=campaignElV676('data-campaign-reviewed-v676',key)?.checked===true,confirmation=String(campaignElV676('data-campaign-confirmation-v676',key)?.value||'').trim(),send=campaignElV676('data-campaign-send-v676',key),required=state.preview?.definition?.confirmation||'';if(send)send.disabled=Boolean(state.status?.campaign)||state.sending===true||state.launchUnknown===true||!state.preview?.total||!state.testId||!reviewed||confirmation!==required;}\n  async function previewVendorCampaignV676(key,button=null){if(button)setLoading(button,true);try{const p=await api('/api/admin/vendors/club/campaigns/'+encodeURIComponent(key)+'/preview',{cacheMs:0,timeoutMs:30000});drawVendorCampaignPreviewV676(key,p);drawVendorCampaignStatusV676(key,p.status||{});return p;}finally{if(button)setLoading(button,false);}}\n  async function testVendorCampaignV676(key,button=null){const state=vendorCampaignStateV676[key]||{},p=state.preview;if(!p)throw new Error('Preview the final audience and email first.');const to=String(campaignElV676('data-campaign-test-email-v676',key)?.value||'').trim();if(!to)throw new Error('Enter the authorised email address that should receive this TEST.');if(button)setLoading(button,true);try{const result=await api('/api/admin/vendors/club/campaigns/'+encodeURIComponent(key)+'/test',{method:'POST',body:JSON.stringify({vendorId:p.selectedId,to,requestId:'test_'+crypto.randomUUID(),testRecipientConfirmed:true}),cacheMs:0,timeoutMs:30000});state.testId=result.testId;const status=campaignElV676('data-campaign-test-status-v676',key);if(status)status.innerHTML='<strong>TEST accepted by provider.</strong> '+esc(to)+' \u00B7 provider '+esc(result.providerId||'accepted')+'. This does not count as a live recipient.';updateVendorCampaignSendStateV676(key);return result;}finally{if(button)setLoading(button,false);}}\n  async function sendVendorCampaignV676(key,button=null){\n    const state=vendorCampaignStateV676[key]||{},p=state.preview;if(state.sending||state.status?.campaign||state.launchUnknown)return;\n    if(!p||!state.testId)throw new Error('Preview the audience and send a TEST first.');\n    const confirmation=String(campaignElV676('data-campaign-confirmation-v676',key)?.value||'').trim();if(confirmation!==p.definition?.confirmation)throw new Error('Type the exact final confirmation shown in the field.');\n    if(campaignElV676('data-campaign-reviewed-v676',key)?.checked!==true)throw new Error('Confirm that you reviewed the audience, exclusions and TEST email.');\n    if(!confirm('FINAL LIVE SEND: send '+Number(p.total||0).toLocaleString('en-GB')+' real emails for \u201C'+(p.definition?.name||key)+'\u201D? This will contact the frozen eligible audience shown in the preview.'))return;\n    state.sending=true;if(button)setLoading(button,true);updateVendorCampaignSendStateV676(key);\n    try{const result=await api('/api/admin/vendors/club/campaigns/'+encodeURIComponent(key)+'/send',{method:'POST',body:JSON.stringify({fingerprint:p.fingerprint,expectedCount:p.total,testId:state.testId,confirmation,permissionConfirmed:true,testReviewed:true}),cacheMs:0,timeoutMs:30000});\n      drawVendorCampaignStatusV676(key,{...result,checkedAt:new Date().toISOString()});setNotice('Vendor campaign saved. Preparation and delivery progress will update automatically.');return result;\n    }catch(error){\n      // A transport timeout is not a failed campaign. Only read saved status;\n      // never silently issue a second send request.\n      state.launchUnknown=true;\n      try{const actual=await api('/api/admin/vendors/club/campaigns/'+encodeURIComponent(key)+'/status?summary=1',{cacheMs:0,timeoutMs:15000});if(actual?.campaign){drawVendorCampaignStatusV676(key,{...actual,checkedAt:new Date().toISOString()});setNotice('The campaign was saved successfully. Its progress will update automatically; no repeat send was made.');return actual;}state.launchUnknown=false;}catch(_){}\n      const el=campaignElV676('data-campaign-status-v676',key);if(el){el.innerHTML='<strong data-orbit-error>Campaign launch confirmation unavailable</strong><span>Checking the saved campaign automatically. Do not send it again while its state is unknown.</span>';}\n      setNotice(state.launchUnknown?'The connection ended before launch was confirmed. Orbit is checking saved status; do not send again.':error.message,true);scheduleVendorCampaignPollV71601();throw error;\n    }finally{state.sending=false;if(button?.isConnected)setLoading(button,false);updateVendorCampaignSendStateV676(key);scheduleVendorCampaignPollV71601();}\n  }\n  async function pauseVendorCampaignV676(key,button=null){const state=vendorCampaignStateV676[key]||{},paused=state.status?.campaign?.status!=='paused';if(!paused&&!confirm('Resume the already-approved frozen campaign? Recipient eligibility is still rechecked before each email.'))return;if(button)setLoading(button,true);try{const result=await api('/api/admin/vendors/club/campaigns/'+encodeURIComponent(key)+'/pause',{method:'POST',body:JSON.stringify({paused}),cacheMs:0});state.status=result;drawVendorCampaignStatusV676(key,result);return result;}finally{if(button)setLoading(button,false);}}\n  // V676_VENDOR_CAMPAIGNS_END\n\n  // V681_MANUAL_SMS_BEGIN\n  const smsCampaignV681={data:null,campaign:null,preview:null,poll:null,testRequest:null};\n  async function smsRequestV681(path='',method='GET',body){return api('/api/admin/vendors/club/sms-campaigns'+path,{method,body:body?JSON.stringify(body):undefined,cacheMs:0,timeoutMs:60000});}\n  function smsNoteV681(message,error=false){const el=$('smsCampaignNoticeV681');if(el){el.textContent=message;el.classList.toggle('is-error',error);} }\n  function smsMoneyV681(n,currency){return Number.isFinite(n)&&currency?new Intl.NumberFormat('en-GB',{style:'currency',currency}).format(n):'Unavailable';}\n  function smsCountsV681(data){const c=data?.counts;if(!c)return;const root=$('smsAudienceV681');if(root)root.innerHTML=`<div class=\"sms-metrics\"><div><strong>${c.subscribers}</strong><span>Subscribed accounts</span></div><div><strong>${c.uniqueDestinations}</strong><span>Eligible unique phones</span></div><div><strong>${c.excluded}</strong><span>Excluded accounts</span></div></div><details><summary>Why accounts are excluded</summary>${Object.entries(data.exclusions||{}).map(([k,n])=>`<p>${n} \u00B7 ${esc(k)}</p>`).join('')}</details><p class=\"sms-muted\">Only subscribers to new-show announcements with a verified UK mobile and no contact exclusion. Shared phone numbers receive one message.</p>`;}\n  function smsAccountV681(account){const el=$('smsCreditV681');if(!el)return;el.innerHTML=`<strong class=\"sms-credit-amount\">${account?.balance?smsMoneyV681(account.balance.balance,account.balance.currency):'Not available yet'}</strong><span>SMS account credit</span><p class=\"sms-muted\">${account?.checkedAt?'Last checked '+esc(new Date(account.checkedAt).toLocaleString('en-GB')):'Use Refresh credit & pricing. No balance is assumed.'}</p>${account?.balanceError?`<p class=\"sms-error\">${esc(account.balanceError)}</p>`:''}${account?.pricing?`<p class=\"sms-muted\">UK segment estimate: ${smsMoneyV681(account.pricing.minimumPerSegment,account.pricing.currency)}\u2013${smsMoneyV681(account.pricing.maximumPerSegment,account.pricing.currency)}. Charges depend on network and message length.</p>`:''}${account?.pricingError?`<p class=\"sms-error\">${esc(account.pricingError)}</p>`:''}`;}\n  function smsCampaignEditorV681(c=null){smsCampaignV681.campaign=c;smsCampaignV681.preview=null;smsCampaignV681.testRequest=null;$('smsTitleV681').value=c?.title||'';$('smsBodyV681').value=c?.body||'';document.querySelectorAll('[data-sms-event-v681]').forEach(x=>x.checked=(c?.draftIds||[]).includes(x.value));const frozen=c&&!['draft','review'].includes(c.state);['smsTitleV681','smsBodyV681','smsSaveV681','smsPreviewV681'].forEach(id=>$(id).disabled=Boolean(frozen));document.querySelectorAll('[data-sms-event-v681]').forEach(x=>x.disabled=Boolean(frozen));$('smsReviewV681').hidden=true;$('smsEditorStatusV681').textContent=c?`${c.title} \u00B7 ${c.state} \u00B7 revision ${c.revision}`:'New message \u00B7 nothing is scheduled';smsBodyCountV681();}\n  function smsBodyCountV681(){const text=$('smsBodyV681')?.value||'';$('smsLengthV681').textContent=text.length+' typed characters. Preview calculates the exact segments after personalisation and the SMS-settings link.';}\n  function smsHistoryV681(rows){const el=$('smsHistoryV681');el.innerHTML=rows.length?rows.map(c=>`<article class=\"sms-history-card\"><div><strong>${esc(c.title)}</strong><span>${esc(c.state)} \u00B7 ${c.recipientCount||0} phones</span>${c.progress?`<small>${c.progress.accepted||0} accepted \u00B7 ${c.progress.delivered||0} delivered \u00B7 ${c.progress.failed||0} failed \u00B7 ${c.progress.unknown||0} uncertain \u00B7 ${c.progress.remaining||0} remaining</small>`:''}${c.lastError?`<p class=\"sms-error\">${esc(c.lastError)}</p>`:''}</div><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-sms-open-v681=\"${esc(c._id)}\">${['draft','review'].includes(c.state)?'Open draft':'View message'}</button>${['queued','sending'].includes(c.state)?`<button type=\"button\" class=\"secondary\" data-sms-pause-v681=\"${esc(c._id)}\">Pause</button>`:''}${c.state==='paused'?`<button type=\"button\" class=\"secondary\" data-sms-resume-v681=\"${esc(c._id)}\">Resume approved campaign</button>`:''}${!['draft','review'].includes(c.state)?`<button type=\"button\" class=\"secondary\" data-sms-receipts-v681=\"${esc(c._id)}\">Check delivery</button>`:''}</div></article>`).join(''):'<p class=\"sms-muted\">No manual SMS campaigns yet. Publishing events never creates one.</p>';}\n  async function smsRunV681(button,fn){if(button)setLoading(button,true);try{return await fn();}catch(e){smsNoteV681(e.message,true);throw e;}finally{if(button)setLoading(button,false);}}\n  async function smsSaveV681(){const d={id:smsCampaignV681.campaign?._id,revision:smsCampaignV681.campaign?.revision,title:$('smsTitleV681').value,body:$('smsBodyV681').value,draftIds:[...document.querySelectorAll('[data-sms-event-v681]:checked')].map(x=>x.value)};const r=await smsRequestV681('','POST',d);smsCampaignEditorV681(r.campaign);smsNoteV681('Draft saved. No text has been sent.');await smsRefreshHistoryV681();return r.campaign;}\n  async function smsRefreshHistoryV681(){const data=await smsRequestV681();smsCampaignV681.data=data;smsHistoryV681(data.campaigns||[]);smsAccountV681(data.account);clearTimeout(smsCampaignV681.poll);if((data.campaigns||[]).some(c=>['queued','sending'].includes(c.state)))smsCampaignV681.poll=setTimeout(()=>{if(vendorSettingsSectionV641==='sms')smsRefreshHistoryV681().catch(e=>smsNoteV681(e.message,true));},5000);}\n  function smsSendReadyV681(){const p=smsCampaignV681.preview;$('smsSendV681').disabled=!(p?.sendReady&&$('smsConsentV681').checked&&$('smsConfirmV681').value.trim()==='SEND CAMPAIGN');}\n  function smsReviewV681(p){smsCampaignV681.preview=p;smsCampaignV681.campaign=p.campaign;const estimate=p.estimate,cost=estimate.cost;smsCountsV681(p);$('smsReviewV681').hidden=false;$('smsConsentV681').checked=false;$('smsConfirmV681').value='';$('smsRenderedV681').innerHTML=p.samples.length?p.samples.map(x=>`<article class=\"sms-phone-preview\"><strong>${esc(x.name)} \u00B7 ${esc(x.phoneMasked)}</strong><pre>${esc(x.text)}</pre><small>${x.characters} characters \u00B7 ${x.segments} segment${x.segments===1?'':'s'} \u00B7 ${esc(x.encoding)}</small></article>`).join(''):'<p>No eligible subscribers.</p>';$('smsQuoteV681').innerHTML=`<strong>${estimate.destinations} texts \u00B7 ${estimate.totalSegments} SMS segments</strong><p>Estimated campaign cost: <strong>${cost?smsMoneyV681(cost.minimum,cost.currency)+' to '+smsMoneyV681(cost.maximum,cost.currency):'Unavailable \u2014 refresh credit & pricing before sending'}</strong></p><p class=\"sms-muted\">${esc(estimate.note)}</p>`;smsSendReadyV681();}\n  async function loadVendorSmsCampaignsV681(){const root=$('vendorSmsCampaignsV681');if(!root)return;if(!root.dataset.bound){root.dataset.bound='1';root.innerHTML=`<div class=\"sms-page\"><header class=\"sms-heading\"><div><p class=\"orbit-kicker\">VENDOR CLUB \u00B7 MANUAL ONLY</p><h3>SMS campaigns</h3><p>You write the message. You choose when it sends. Publishing events never sends an announcement.</p></div><button type=\"button\" class=\"secondary\" id=\"smsNewV681\">New message</button></header><div class=\"sms-summary\"><section class=\"orbit-panel\"><div id=\"smsCreditV681\"></div><button type=\"button\" class=\"secondary\" id=\"smsRefreshCreditV681\">Refresh credit & pricing</button></section><section class=\"orbit-panel\"><div id=\"smsAudienceV681\"><p>Refresh subscribers to see the current audience and exclusions.</p></div><button type=\"button\" class=\"secondary\" id=\"smsRefreshAudienceV681\">Refresh subscribers</button></section></div><p id=\"smsCampaignNoticeV681\" class=\"sms-notice\" role=\"status\" aria-live=\"polite\">Nothing is queued. Drafts and previews do not send messages.</p><div class=\"sms-editor-grid\"><section class=\"orbit-panel\"><h4>Compose your announcement</h4><p id=\"smsEditorStatusV681\" class=\"sms-muted\"></p><label>Campaign name <input id=\"smsTitleV681\" maxlength=\"100\" placeholder=\"For your own reference\"></label><label>Message <textarea id=\"smsBodyV681\" rows=\"7\" maxlength=\"480\" placeholder=\"Write your message to subscribed vendors\u2026\"></textarea></label><p id=\"smsLengthV681\" class=\"sms-muted\"></p><p class=\"sms-muted\">Every text includes the SMS-settings link so subscribers can change their preferences. Longer or personalised messages may use several paid segments.</p><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" id=\"smsSaveV681\">Save draft</button><button type=\"button\" id=\"smsPreviewV681\">Preview audience & cost</button></div></section><aside class=\"orbit-panel\"><h4>Insert merge tag</h4><p class=\"sms-muted\">Click a tag to insert it at the cursor. Examples are not live recipient values.</p><div id=\"smsTagsV681\"></div><details><summary>Link published events (optional)</summary><p class=\"sms-muted\">Event tags use these choices. Draft, Unlisted and unpublished products cannot be announced.</p><div id=\"smsEventsV681\"></div></details></aside></div><section id=\"smsReviewV681\" class=\"orbit-panel\" hidden><h4>Review the exact message</h4><div id=\"smsQuoteV681\" class=\"sms-quote\"></div><div id=\"smsRenderedV681\"></div><div class=\"sms-test\"><label>Your authorised test mobile<input id=\"smsTestPhoneV681\" type=\"tel\" placeholder=\"07\u2026\"></label><button type=\"button\" class=\"secondary\" id=\"smsTestV681\">Send me a test SMS</button></div><label class=\"sms-check\"><input type=\"checkbox\" id=\"smsConsentV681\">I have reviewed this message, its cost and recipients, and confirm it is an announcement these subscribers have agreed to receive.</label><label>Type SEND CAMPAIGN to send to these subscribers<input id=\"smsConfirmV681\" autocomplete=\"off\"></label><button type=\"button\" id=\"smsSendV681\" disabled>Send this campaign once</button></section><section class=\"orbit-panel\"><div class=\"sms-heading\"><h4>Campaign history</h4><button type=\"button\" class=\"secondary\" id=\"smsRefreshHistoryV681\">Refresh history</button></div><div id=\"smsHistoryV681\"></div><div id=\"smsDeliveryV681\"></div></section></div>`;\n      root.addEventListener('click',e=>{const b=e.target.closest('button');if(!b)return;const run=fn=>smsRunV681(b,fn).catch(()=>{});\n        if(b.id==='smsNewV681'){smsCampaignEditorV681();return;}\n        if(b.dataset.smsTagV681){if($('smsBodyV681').disabled)return;const a=$('smsBodyV681');a.setRangeText('{{'+b.dataset.smsTagV681+'}}',a.selectionStart,a.selectionEnd,'end');a.dispatchEvent(new Event('input',{bubbles:true}));a.focus();return;}\n        if(b.id==='smsRefreshCreditV681')return run(async()=>{const r=await smsRequestV681('/account-refresh','POST',{});smsAccountV681(r.account);smsNoteV681('Account refresh completed. Unavailable values are not treated as zero.');});\n        if(b.id==='smsRefreshAudienceV681')return run(async()=>{smsCountsV681(await smsRequestV681('/audience','POST',{}));smsNoteV681('Subscriber list refreshed. Nothing sent.');});\n        if(b.id==='smsRefreshHistoryV681')return run(smsRefreshHistoryV681);\n        if(b.id==='smsSaveV681')return run(smsSaveV681);\n        if(b.id==='smsPreviewV681')return run(async()=>{const c=await smsSaveV681();const p=await smsRequestV681('/'+encodeURIComponent(c._id)+'/preview','POST',{});smsReviewV681(p);smsNoteV681('Preview ready. No customer messages have been sent.');});\n        if(b.id==='smsTestV681')return run(async()=>{if(!smsCampaignV681.preview)throw Error('Preview the saved campaign first.');if(!confirm('Send one real test SMS to your entered authorised phone? This may use SMS credit.'))return;const requestId=smsCampaignV681.testRequest||(smsCampaignV681.testRequest=crypto.randomUUID());const r=await smsRequestV681('/'+encodeURIComponent(smsCampaignV681.campaign._id)+'/test','POST',{to:$('smsTestPhoneV681').value,confirmation:'SEND TEST SMS',requestId});smsNoteV681(r.duplicate?'This test request already exists. Check delivery before repeating it.':'Test submitted. Provider acceptance is not delivery confirmation.');});\n        if(b.id==='smsSendV681')return run(async()=>{const p=smsCampaignV681.preview;if(!p)throw Error('Preview the exact campaign first.');const r=await smsRequestV681('/'+encodeURIComponent(p.campaign._id)+'/approve','POST',{approvalHash:p.approvalHash,confirmation:$('smsConfirmV681').value,consentConfirmed:$('smsConsentV681').checked});smsCampaignEditorV681(r.campaign);smsNoteV681('Your manual campaign is approved. Progress is saved; no individual event messages are triggered.');await smsRefreshHistoryV681();});\n        if(b.dataset.smsResumeV681)return run(async()=>{if(prompt('Previously submitted or uncertain messages will not be repeated. Type RESUME CAMPAIGN to continue remaining recipients.')!=='RESUME CAMPAIGN')return;await smsRequestV681('/'+encodeURIComponent(b.dataset.smsResumeV681)+'/resume','POST',{confirmation:'RESUME CAMPAIGN'});await smsRefreshHistoryV681();smsNoteV681('Resume requested for the remaining approved recipients only.');});\n        if(b.dataset.smsOpenV681)return run(async()=>{const r=await smsRequestV681('/'+encodeURIComponent(b.dataset.smsOpenV681));smsCampaignEditorV681(r.campaign);smsNoteV681('Campaign opened. Nothing was sent.');});\n        if(b.dataset.smsPauseV681)return run(async()=>{await smsRequestV681('/'+encodeURIComponent(b.dataset.smsPauseV681)+'/pause','POST',{});await smsRefreshHistoryV681();smsNoteV681('Campaign paused. A message already submitted cannot be recalled.');});\n        if(b.dataset.smsReceiptsV681)return run(async()=>{const r=await smsRequestV681('/'+encodeURIComponent(b.dataset.smsReceiptsV681)+'/receipts','POST',{});$('smsDeliveryV681').innerHTML='<h5>Latest delivery receipts</h5>'+(r.recent||[]).map(x=>`<p>${esc(x.phoneMasked)} \u00B7 ${esc(x.status)}${x.providerStatus?' \u00B7 '+esc(x.providerStatus):''}${x.reason?' \u00B7 '+esc(x.reason):''}</p>`).join('');await smsRefreshHistoryV681();});\n      });\n      root.addEventListener('input',e=>{if(['smsBodyV681','smsTitleV681'].includes(e.target.id)){smsCampaignV681.preview=null;$('smsReviewV681').hidden=true;smsBodyCountV681();}if(e.target.id==='smsConfirmV681')smsSendReadyV681();});root.addEventListener('change',e=>{if(e.target.id==='smsConsentV681')smsSendReadyV681();if(e.target.matches('[data-sms-event-v681]')){smsCampaignV681.preview=null;$('smsReviewV681').hidden=true;}});\n    }\n    try{const [data,events]=await Promise.all([smsRequestV681(),api('/api/admin/card-show-shopify/drafts?kind=product&limit=250',{cacheMs:0,timeoutMs:25000})]);smsCampaignV681.data=data;smsAccountV681(data.account);smsHistoryV681(data.campaigns||[]);$('smsTagsV681').innerHTML=(data.tags||[]).map(t=>`<div class=\"sms-tag\"><button type=\"button\" class=\"secondary\" data-sms-tag-v681=\"${esc(t.key)}\">{{${esc(t.key)}}}</button><small>${esc(t.description)} Example: ${esc(t.example)}</small></div>`).join('');$('smsEventsV681').innerHTML=(events.drafts||[]).filter(d=>d.status==='published').map(d=>`<label class=\"sms-check\"><input type=\"checkbox\" data-sms-event-v681 value=\"${esc(d._id)}\">${esc(d.title)}</label>`).join('')||'<p>No managed events are published yet.</p>';if(!smsCampaignV681.campaign)smsCampaignEditorV681();else smsCampaignEditorV681(smsCampaignV681.campaign);}catch(e){smsNoteV681(e.message,true);}\n  }\n  // V681_MANUAL_SMS_END\n\n  // V641_CLUB_ADMIN_BEGIN \u2014 one canonical runtime, one visible settings panel.\n  let vendorSettingsSectionV641 = 'rewards', vendorArchiveReadV641 = 0, vendorArchivePageV641 = 1, vendorArchivePollV641 = null;\n  let vendorArchiveReportV641 = null;\n  const vendorSettingsKeysV641 = ['overview','rewards','credit','access','notifications','delivery','checks','campaigns','sms','archive'];\n  function vendorArchiveNoticeV641(message,error=false){const n=$('vendorLaunchArchiveNoticeV641');if(n){n.textContent=message;n.classList.toggle('is-error',error);}}\n  async function setVendorSettingsSectionV641(key,{focus=false}={}){\n    if(!vendorSettingsKeysV641.includes(key))key='overview';vendorSettingsSectionV641=key;\n    document.querySelectorAll('[data-vendor-settings-panel-v641]').forEach(p=>p.hidden=p.dataset.vendorSettingsPanelV641!==key);\n    document.querySelectorAll('[data-vendor-settings-tab-v641]').forEach(b=>{const yes=b.dataset.vendorSettingsTabV641===key;b.setAttribute('aria-selected',String(yes));b.tabIndex=yes?0:-1;if(yes&&focus)b.focus();});\n    try{sessionStorage.setItem('orbitVendorClubSettingsSectionV641',key);}catch(_){}\n    clearTimeout(vendorArchivePollV641);clearTimeout(vendorReminderPollV642);\n    if(key==='archive')await Promise.all([loadVendorLaunchReportV641(),loadVendorReminderStatusV642()]);\n    if(key==='campaigns')await loadVendorCampaignStatusesV676();\n    if(key==='sms')await loadVendorSmsCampaignsV681();\n    if(key==='delivery')await loadVendorDeliveryV642();\n    if(key==='access')await Promise.all([loadVendorClubPreviewVendorsV623(),loadVendorClubPageV6202().then(renderVendorClubPageStateV6202)]);\n    if(key==='checks'){\n      const select=$('vendorCommerceVendorV641');if(select&&!select.dataset.loaded){const data=await api('/api/admin/vendors/club?q=',{cacheMs:0,timeoutMs:20000});select.innerHTML='<option value=\"\">Store connection only</option>'+(data.rows||[]).map(r=>'<option value=\"'+esc(r.canonicalVendorId)+'\">'+esc(r.vendor||r.email||'Vendor')+'</option>').join('');select.dataset.loaded='1';}\n    }\n  }\n  function vendorArchiveFilteredV641(){\n    const q=String($('vendorLaunchArchiveSearchV641')?.value||'').trim().toLowerCase(),f=$('vendorLaunchArchiveFilterV641')?.value||'all';\n    return (vendorArchiveReportV641?.rows||[]).filter(r=>(!q||[r.to,r.subject,r.id].join(' ').toLowerCase().includes(q))&&(f==='all'||f==='delivered'&&r.outcome==='delivered'||f==='unverified'&&['accepted','sent'].includes(r.outcome)||f==='problems'&&['bounced','complained','suppressed','failed'].includes(r.outcome)||f==='unaccepted'&&!r.acceptanceProved||f==='recovered'&&r.recovered||f==='retryable'&&r.retryable));\n  }\n  function drawVendorLaunchRowsV641(){\n    const target=$('vendorLaunchReportRowsV641');if(!target)return;\n    const rows=vendorArchiveFilteredV641(),pages=Math.max(1,Math.ceil(rows.length/30));vendorArchivePageV641=Math.min(pages,Math.max(1,vendorArchivePageV641));\n    const labels={delivered:'Delivered',sent:'Sent \u00B7 delivery pending',accepted:'Accepted \u00B7 delivery unverified',bounced:'Bounced',complained:'Complaint',suppressed:'Suppressed',failed:'Provider delivery failed',quota_rejected:'Quota rejected \u00B7 never accepted',queued:'Queued',pending:'Retry / outcome pending',needs_review:'Needs review',skipped:'Skipped'};\n    target.innerHTML=rows.slice((vendorArchivePageV641-1)*30,vendorArchivePageV641*30).map(r=>'<article class=\"orbit-launch-recipient-v641\"><div><strong>'+esc(r.to||'Recipient address not retained')+'</strong><span class=\"orbit-launch-outcome-v641 '+(r.outcome==='delivered'?'is-delivered':['bounced','complained','suppressed','failed'].includes(r.outcome)?'is-review':r.acceptanceProved?'is-accepted':'is-review')+'\">'+esc(labels[r.outcome]||r.outcome)+'</span></div><p>'+esc(r.subject||'Vendor Club launch invitation')+'</p><small>'+Number(r.attemptCount||0)+' attempt'+(r.attemptCount===1?'':'s')+(r.recovered?' \u00B7 Accepted after retry; do not resend':'')+' \u00B7 '+(r.deliveryCheckedAt?'Receipt checked '+esc(prettyDate(r.deliveryCheckedAt)):'Delivery has not been checked')+'</small>'+(r.deliveryStatusError?'<p class=\"orbit-launch-receipt-warning-v641\">Receipt check unavailable: '+esc(r.deliveryStatusError)+'. Previous acceptance is preserved.</p>':'')+'<details><summary>Send and delivery evidence</summary><p>Provider reference: '+esc(r.providerId||'No acceptance ID recorded')+'</p><p>Accepted: '+esc(r.acceptedAt?prettyDate(r.acceptedAt):'Not proved')+' \u00B7 Last provider event: '+esc(r.providerStatus||'Unverified')+'</p>'+(r.attempts||[]).map(a=>'<p class=\"orbit-launch-attempt-v641\">'+esc(prettyDate(a.at))+' \u00B7 '+esc(a.status)+(a.providerId?' \u00B7 '+esc(a.providerId):'')+' '+(a.errorCode?'\u00B7 '+esc(a.errorCode):'')+'</p>').join('')+(!(r.attempts||[]).length?'<p>No individual attempt logs were retained. The saved recipient receipt remains the evidence.</p>':'')+'</details></article>').join('')||'<p class=\"orbit-muted\">No original recipients match this filter.</p>';\n    $('vendorLaunchRowsPageV641').textContent=rows.length+' recipients \u00B7 page '+vendorArchivePageV641+' of '+pages;$('vendorLaunchRowsPreviousV641').disabled=vendorArchivePageV641<=1;$('vendorLaunchRowsNextV641').disabled=vendorArchivePageV641>=pages;\n  }\n  function drawVendorLaunchReportV641(data){\n    vendorArchiveReportV641=data;const c=data.counts||{},note=$('vendorLaunchCountNoteV641');note.hidden=!data.countDiscrepancy&&!data.storedCountMismatch;note.textContent=data.countNote+(data.storedCountMismatch?' The recorded count and frozen row count also differ; recovery is blocked.':'');\n    const metrics=[['Original recipients',data.originalFrozen],['Accepted by Resend',c.accepted],['Delivery confirmed',c.delivered],['Delivery unverified',c.awaitingDelivery],['Delivery problems',c.deliveryProblems],['Not yet accepted',c.unaccepted],['Recovered after retry',c.recovered]];\n    $('vendorLaunchSummaryV641').innerHTML=metrics.map(([label,n])=>'<div><strong>'+Number(n||0)+'</strong><span>'+esc(label)+'</span></div>').join('');\n    const j=data.job;$('vendorLaunchJobV641').textContent=j?'Provider receipt check: '+j.checked+' / '+j.total+' checked \u00B7 '+j.errors+' unavailable \u00B7 '+j.status+(j.status==='completed'?'. Errors are not treated as proof of a missing email.':'. You can leave this page; progress is saved.'):'Provider acceptance is not delivery. Verify receipts to request the latest status of each original accepted message.';\n    $('vendorLaunchVerifyV641').disabled=Boolean(j&&['queued','running'].includes(j.status));$('vendorLaunchExportV641').disabled=false;\n    $('vendorLaunchRecoverV641').disabled=!c.safeToRetry||data.storedCountMismatch;\n    $('vendorLaunchRecoveryInfoV641').textContent=c.safeToRetry?c.safeToRetry+' proven-unsent original recipients can be reviewed for safe retry. No accepted recipients will be selected.':'No proven-unsent recipients are currently eligible for automatic recovery. Do not start a second launch.';\n    drawVendorLaunchRowsV641();\n  }\n  async function loadVendorLaunchReportV641({quiet=false}={}){\n    const epoch=++vendorArchiveReadV641;if(!quiet)vendorArchiveNoticeV641('Reading the frozen campaign and its latest saved evidence\u2026');\n    try{const data=await api('/api/admin/vendors/club/launch/report',{cacheMs:0,timeoutMs:20000});if(epoch!==vendorArchiveReadV641)return;drawVendorLaunchReportV641(data);vendorArchiveNoticeV641('Saved report loaded. No emails have been sent. Failed attempts remain in the audit history.');\n      clearTimeout(vendorArchivePollV641);if(data.job&&['running','queued'].includes(data.job.status)&&vendorSettingsSectionV641==='archive')vendorArchivePollV641=setTimeout(()=>{if(!$('vendorSettingsPanelV641-archive')?.hidden&&!document.querySelector('[data-vendor-pane=\"club-settings\"]')?.hidden)loadVendorLaunchReportV641({quiet:true}).catch(()=>{});},5000);\n      return data;\n    }catch(e){if(epoch===vendorArchiveReadV641)vendorArchiveNoticeV641('The report could not refresh. Existing evidence is unchanged. '+e.message,true);throw e;}\n  }\n  function exportVendorLaunchReportV641(){\n    const report=vendorArchiveReportV641;if(!report)return;const cell=v=>'\"'+String(v??'').replace(/^[=+@\\-\\t\\r]/,m=>\"'\"+m).replace(/\"/g,'\"\"')+'\"';\n    const rows=[['Recipient','Subject','Original recipient ID','Current outcome','Provider ID','Accepted at','Delivery checked at','Attempts','Recovered after retry','Safe retry','Attempt audit JSON'],...report.rows.map(r=>[r.to,r.subject,r.id,r.outcome,r.providerId,r.acceptedAt,r.deliveryCheckedAt,r.attemptCount,r.recovered?'Yes':'No',r.retryable?'Yes':'No',JSON.stringify(r.attempts||[])])];\n    const url=URL.createObjectURL(new Blob(['\\ufeff'+rows.map(row=>row.map(cell).join(',')).join('\\r\\n')],{type:'text/csv;charset=utf-8'}));const a=document.createElement('a');a.href=url;a.download='Orbit-Vendor-Club-Original-Launch-Reconciliation.csv';document.body.append(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),1000);\n  }\n  // V717.0.4: operator-guided 100% historical table inventory audit.\n  // Every confirmation is server-validated against the exact row evidence.\n  async function wolverhamptonNovAuditV71704(button){if(button)setLoading(button,true);try{\n    const data=await api('/api/admin/vendors/club/wolverhampton-november-audit',{cacheMs:0,timeoutMs:30000}),target=$('wolverhamptonNovAuditResultV71704');if(!target)return;\n    const sum=data.summary||{};\n    const detail=(data.vendors||[]).map(v=>{\n      const rows=(v.bookings||[]).map(r=>{\n        const ev=r.evidence||{},confirmed=r.verifiedSize||'Unresolved',readonly=r.bookingStatus!=='active'||!r.key;\n        const header=`<td><strong>${esc(r.orderName||r.stockType||'Booking')}</strong><small>${esc(String(r.sourceBookingDate||'Date unknown'))} \u00B7 ${esc(r.stockType)} \u00B7 ${esc(r.bookingStatus)}</small><small>${esc(ev.bookingRef||'No source ID')}</small></td>`;\n        const evidence=`<td>${esc(ev.originalUnitPrice==null?'Price unknown':'\u00A3'+ev.originalUnitPrice)} \u00B7 ${esc(ev.variantTitle||'No saved table variant')}</td>`;\n        const classification=`<td><strong>${esc(confirmed)}</strong><small>${esc(r.classification)}</small></td>`;\n        const controls=readonly?'Not eligible for correction':`<label>Table size<select data-wh-size-v71704=\"${esc(r.key)}\"><option value=\"\">Select\u2026</option><option value=\"4ft\" ${confirmed==='4ft'?'selected':''}>4ft</option><option value=\"6ft\" ${confirmed==='6ft'?'selected':''}>6ft</option></select></label><label>Original evidence<input data-wh-reason-v71704=\"${esc(r.key)}\" placeholder=\"Booking records, date, operator confirmation\u2026\"></label><button class=\"secondary\" type=\"button\" data-wh-confirm-v71704=\"${esc(r.key)}\" data-wh-fingerprint-v71704=\"${esc(r.evidenceFingerprint)}\">Confirm this record</button>`;\n        return `<tr>${header}<td>${Number(r.quantity||0)}</td>${evidence}${classification}<td>${controls}</td></tr>`;\n      }).join('');\n      return `<details style=\"padding:12px;border:1px solid #c7dbea;border-radius:12px;margin-top:10px;background:#fff\"><summary><strong>${esc(v.vendorName||'Vendor identity pending')}</strong> \u00B7 ${Number(v.tables||0)} active tables \u00B7 ${Number(v.unresolved||0)} need review</summary><div class=\"orbit-table-wrap\"><table><thead><tr><th>Source and original date</th><th>Tables</th><th>Original unit price / variant</th><th>Classification</th><th>Confirm with evidence</th></tr></thead><tbody>${rows}</tbody></table></div></details>`;\n    }).join('');\n    target.innerHTML='<p><strong>'+Number(sum.activeTableUnits||0)+' active tables across '+Number(sum.vendorCount||0)+' vendors.</strong> <strong>'+Number(sum.confirmed6ft||0)+' confirmed 6ft</strong> \u00B7 <strong>'+Number(sum.confirmed4ft||0)+' confirmed 4ft</strong> \u00B7 <strong>'+Number(sum.unresolved||0)+' unresolved</strong></p>'+ (sum.duplicateIdentityKeys?'<p data-orbit-error>Duplicate booking identities: '+Number(sum.duplicateIdentityKeys)+'. Do not confirm duplicate rows.</p>':'')+'<p class=\"orbit-muted\">Cancelled: '+Number(sum.cancelledTableUnits||0)+' tables \u00B7 Assignment review: '+Number(sum.assignmentReviewTableUnits||0)+' tables \u00B7 Archived inactive adjustments: '+Number(data.excludedHistoricalAdjustments?.count||0)+' records ('+Number(data.excludedHistoricalAdjustments?.quantity||0)+' table units). Fully refunded Shopify lines: '+Number(data.excludedRefundedShopifyLines?.count||0)+' ('+Number(data.excludedRefundedShopifyLines?.quantity||0)+' original table units). '+esc(data.coverage?.warning||'')+'</p>'+ '<details><summary>Excluded historic adjustments and refunded orders</summary>'+(data.excludedHistoricalAdjustments?.records||[]).map(x=>'<p>'+esc(x.vendorName)+' \u00B7 '+esc(x.kind)+' \u00B7 '+Number(x.quantity||0)+' table units \u00B7 '+esc(x.id)+'</p>').join('')+(data.excludedRefundedShopifyLines?.rows||[]).map(x=>'<p>'+esc(x.orderName||x.orderId)+' \u00B7 refunded Shopify line \u00B7 '+Number(x.quantity||0)+' table units \u00B7 '+esc(x.variantTitle||'No size recorded')+'</p>').join('')+'</details>'+'<p class=\"orbit-muted\">No inferred historical stock parity is claimed until the original sold-stock snapshot is verified. Select any uncertain booking to record the actual table size and your evidence; the source booking is never changed.</p>'+detail;\n  }finally{if(button)setLoading(button,false);}}\n  async function wolverhamptonNovConfirmV71704(button){const key=button?.dataset?.whConfirmV71704,fingerprint=button?.dataset?.whFingerprintV71704,container=$('wolverhamptonNovAuditResultV71704');if(!key||!container)return;\n    const size=[...container.querySelectorAll('select[data-wh-size-v71704]')].find(x=>x.dataset.whSizeV71704===key)?.value||'',reason=[...container.querySelectorAll('input[data-wh-reason-v71704]')].find(x=>x.dataset.whReasonV71704===key)?.value||'';\n    if(!['4ft','6ft'].includes(size)||reason.trim().length<12)throw new Error('Select 4ft or 6ft and enter at least 12 characters of real supporting evidence.');\n    if(!confirm('Confirm this exact historical booking as '+size+'? This changes the classified size shown in Vendor Club, but not stock, orders or payments.'))return;\n    setLoading(button,true);try{await api('/api/admin/vendors/club/wolverhampton-november-confirm',{method:'POST',body:JSON.stringify({key,fingerprint,size,reason}),cacheMs:0,timeoutMs:30000});await wolverhamptonNovAuditV71704(null);setNotice('Historical table size evidence recorded. Vendor Club will use this verified classification.');}finally{setLoading(button,false);}}\n  async function warwickFloorAuditV71704(button){setLoading(button,true);try{const data=await api('/api/admin/vendors/club/warwick-floor-plan-evidence',{cacheMs:0,timeoutMs:30000}),target=$('warwickOriginalPlanResultV71704');if(target)target.innerHTML='<p>'+esc(data.notice||'')+'</p>'+(data.events||[]).map(e=>'<details open><summary>'+esc(e.eventKey)+' \u00B7 '+esc(e.planStatus||'Unknown status')+' \u00B7 '+Number(e.releaseCount||0)+' preserved releases</summary>'+(e.immutableSnapshots||[]).map(x=>'<p>Snapshot '+esc(x.planId)+' \u00B7 '+(x.rooms||[]).map(r=>esc(r.roomName)+': '+(r.hasArtwork?'original artwork stored':'artwork missing')).join(', ')+'</p>').join('')+(e.rooms||[]).map(r=>'<p><strong>'+esc(r.roomName||'Room')+'</strong> \u00B7 master '+(r.masterExists?'present':'missing')+' \u00B7 original image '+(r.artworkReadable||r.roomHasInlineArtwork?'available':'missing')+' \u00B7 '+Number(r.savedAllocationSnapshots||0)+' saved table positions \u00B7 plan ID '+esc(r.venuePlanId||'none')+'</p>').join('')+'</details>').join('');}finally{setLoading(button,false);}}\n  // V717.0.4 audited historic points: preview never writes; commit must be a\n  // separate authenticated Admin action using the server's exact fingerprint.\n  let vendorRewardPreviewV71701=null;\n  function vendorRewardReadyV71701(){const b=$('vendorRewardCommitV71701'),p=vendorRewardPreviewV71701;if(b)b.disabled=!p||p.truncated||!p.totals?.bookings||!$('vendorRewardReviewV71701')?.checked||String($('vendorRewardConfirmV71701')?.value||'').trim()!=='AWARD VERIFIED HISTORICAL VENDOR POINTS';}\n  async function vendorRewardReviewV71701(button){if(button)setLoading(button,true);try{\n    const data=await api('/api/admin/vendors/club/historical-reward-preview',{cacheMs:0,timeoutMs:30000});vendorRewardPreviewV71701=data;\n    const target=$('vendorRewardResultV71701'),approval=$('vendorRewardApprovalV71701');\n    const fundLabel={complimentary:'Manual / complimentary',vendor_club_points:'Vendor Points'};\n    const byVendor=new Map();for(const item of data.candidates||[]){const id=String(item.canonicalVendorId||'');if(!byVendor.has(id))byVendor.set(id,[]);byVendor.get(id).push(item);}\n    const readableReason={credit_payment_unconfirmed:'Credit settlement has not been verified',missing_booking_identity_or_quantity:'Missing booking ID or table quantity',vendor_identity_not_verified:'Vendor identity has not been verified'};\n    if(target)target.innerHTML='<p><strong>'+Number(data.totals?.bookings||0)+' bookings \u00B7 '+Number(data.totals?.vendors||0)+' vendors \u00B7 '+Number(data.totals?.points||0)+' proposed points</strong> \u00B7 '+Number(data.totals?.exceptions||0)+' exceptions</p>'+\n      '<p class=\"orbit-muted\">Read-only snapshot '+esc(String(data.fingerprint||'').slice(0,20))+'\u2026 No balances changed. Check each original booking before approving.</p>'+\n      (data.truncated?'<p data-orbit-error>More than 250 candidates; awarding is blocked.</p>':'')+\n      [...byVendor.entries()].map(([id,items])=>{const first=items[0],total=items.reduce((n,x)=>n+Number(x.points||0),0);return '<details class=\"orbit-vendor-reward-group\" open><summary><strong>'+esc(first.vendorName||'Unknown vendor')+'</strong> \u00B7 '+items.length+' bookings \u00B7 <strong>+'+total+' pts</strong></summary><p class=\"orbit-muted\">'+esc(first.vendorEmail||'Email not recorded')+' \u00B7 Vendor record: '+esc(id)+'</p><div class=\"orbit-table-wrap\"><table><thead><tr><th>Event</th><th>Booking date</th><th>Funding</th><th>Tables</th><th>Existing points at event</th><th>Proposed</th><th>Booking ID</th></tr></thead><tbody>'+items.map(x=>'<tr><td>'+esc(x.eventName||x.eventId)+' <small>'+esc(String(x.eventDate||'').slice(0,10))+'</small></td><td>'+esc(prettyDate(x.bookingDate))+'</td><td>'+esc(x.funding||fundLabel[x.source]||x.source||'Unknown')+'</td><td>'+Number(x.quantity||0)+'</td><td>'+Number(x.earnedBefore||0)+'</td><td><strong>+'+Number(x.points||0)+'</strong></td><td><small>'+esc(x.bookingId||'Unknown')+'</small></td></tr>').join('')+'</tbody></table></div></details>';}).join('')+\n      '<details><summary>Held for manual evidence review ('+Number(data.totals?.exceptions||0)+')</summary>'+(data.exceptions||[]).map(x=>'<p><strong>'+esc(x.vendorName||'Identity not established')+'</strong> \u00B7 '+esc(x.eventName||x.eventId||'Event not established')+' \u00B7 '+esc(x.funding||'Unknown booking type')+' \u00B7 '+esc(readableReason[x.reason]||String(x.reason||'Evidence unavailable').replace(/_/g,' '))+' <small>'+esc(x.bookingId||'No booking ID')+'</small></p>').join('')+'</details>';\n    if(approval)approval.hidden=!(data.totals?.bookings>0&&!data.truncated);if($('vendorRewardReviewV71701'))$('vendorRewardReviewV71701').checked=false;if($('vendorRewardConfirmV71701'))$('vendorRewardConfirmV71701').value='';vendorRewardReadyV71701();return data;\n  }finally{if(button)setLoading(button,false);}}\n  async function vendorRewardApproveV71701(button){const p=vendorRewardPreviewV71701;if(!p||!p.fingerprint)throw new Error('Review the current historical point evidence first.');vendorRewardReadyV71701();if(button.disabled)return;\n    if(!confirm('FINAL VENDOR POINTS LEDGER ACTION: award exactly '+Number(p.totals?.points||0)+' historical points across '+Number(p.totals?.bookings||0)+' booking records? This changes real Vendor Point balances.'))return;\n    if(button)setLoading(button,true);try{const out=await api('/api/admin/vendors/club/historical-reward-award',{method:'POST',body:JSON.stringify({fingerprint:p.fingerprint,acknowledge:'AWARD VERIFIED HISTORICAL VENDOR POINTS'}),cacheMs:0,timeoutMs:60000});vendorRewardPreviewV71701=null;\n      if($('vendorRewardApprovalV71701'))$('vendorRewardApprovalV71701').hidden=true;if($('vendorRewardResultV71701'))$('vendorRewardResultV71701').innerHTML='<p><strong>'+Number(out.pointsAdded||0)+' points awarded</strong> across '+Number(out.awarded||0)+' verified bookings; '+Number(out.duplicates||0)+' duplicate requests safely ignored.</p><p>Audit saved. Refresh to reconcile remaining exceptions.</p>';setNotice('Approved historical Vendor Points were recorded in the audited ledger. No campaign was sent.');return out;\n    }catch(error){vendorRewardPreviewV71701=null;if($('vendorRewardApprovalV71701'))$('vendorRewardApprovalV71701').hidden=true;throw error;}finally{if(button)setLoading(button,false);}}\n  function initVendorClubSettingsV641(){\n    const panel=document.querySelector('[data-vendor-pane=\"club-settings\"]');if(!panel||panel.dataset.boundV641)return;panel.dataset.boundV641='1';\n    const handler=fn=>Promise.resolve().then(fn).catch(e=>setNotice(e.message||String(e),true));\n    $('vendorRewardPreviewV71701')?.addEventListener('click',event=>handler(()=>vendorRewardReviewV71701(event.currentTarget)));\n    $('wolverhamptonNovAuditLoadV71704')?.addEventListener('click',event=>handler(()=>wolverhamptonNovAuditV71704(event.currentTarget)));\n    $('wolverhamptonNovAuditResultV71704')?.addEventListener('click',event=>{const b=event.target.closest('[data-wh-confirm-v71704]');if(b)handler(()=>wolverhamptonNovConfirmV71704(b));});\n    $('warwickOriginalPlanAuditV71704')?.addEventListener('click',event=>handler(()=>warwickFloorAuditV71704(event.currentTarget)));\n    $('vendorRewardCommitV71701')?.addEventListener('click',event=>handler(()=>vendorRewardApproveV71701(event.currentTarget)));\n    $('vendorRewardReviewV71701')?.addEventListener('change',vendorRewardReadyV71701);\n    $('vendorRewardConfirmV71701')?.addEventListener('input',vendorRewardReadyV71701);\n    document.querySelectorAll('[data-campaign-preview-v676]').forEach(b=>b.addEventListener('click',()=>handler(()=>previewVendorCampaignV676(b.dataset.campaignPreviewV676,b))));\n    document.querySelectorAll('[data-campaign-test-v676]').forEach(b=>b.addEventListener('click',()=>handler(()=>testVendorCampaignV676(b.dataset.campaignTestV676,b))));\n    document.querySelectorAll('[data-campaign-send-v676]').forEach(b=>b.addEventListener('click',()=>handler(()=>sendVendorCampaignV676(b.dataset.campaignSendV676,b))));\n    document.querySelectorAll('[data-campaign-pause-v676]').forEach(b=>b.addEventListener('click',()=>handler(()=>pauseVendorCampaignV676(b.dataset.campaignPauseV676,b))));\n    document.querySelectorAll('[data-campaign-reviewed-v676],[data-campaign-confirmation-v676]').forEach(el=>el.addEventListener(el.matches('input[type=\"checkbox\"]')?'change':'input',()=>updateVendorCampaignSendStateV676(el.dataset.campaignReviewedV676||el.dataset.campaignConfirmationV676)));\n    $('vendorCampaignRefreshV676')?.addEventListener('click',()=>handler(()=>loadVendorCampaignStatusesV676()));\n    panel.querySelectorAll('[data-vendor-settings-tab-v641]').forEach(b=>{b.addEventListener('click',()=>handler(()=>setVendorSettingsSectionV641(b.dataset.vendorSettingsTabV641)));b.addEventListener('keydown',e=>{if(!['ArrowLeft','ArrowRight','Home','End'].includes(e.key))return;e.preventDefault();let i=vendorSettingsKeysV641.indexOf(b.dataset.vendorSettingsTabV641);i=e.key==='Home'?0:e.key==='End'?vendorSettingsKeysV641.length-1:(i+(e.key==='ArrowRight'?1:vendorSettingsKeysV641.length-1))%vendorSettingsKeysV641.length;handler(()=>setVendorSettingsSectionV641(vendorSettingsKeysV641[i],{focus:true}));});});\n    panel.querySelectorAll('[data-vendor-settings-shortcut-v641]').forEach(b=>b.addEventListener('click',()=>handler(()=>setVendorSettingsSectionV641(b.dataset.vendorSettingsShortcutV641,{focus:true}))));\n    $('vendorCreditCustomersV642')?.addEventListener('click',()=>activateModule('vendors','customers'));\n    $('vendorDeliveryRefreshV642')?.addEventListener('click',()=>handler(()=>loadVendorDeliveryV642()));\n    $('vendorDeliveryPreviousV642')?.addEventListener('click',()=>handler(()=>loadVendorDeliveryV642(vendorDeliveryPageV642-1)));\n    $('vendorDeliveryNextV642')?.addEventListener('click',()=>handler(()=>loadVendorDeliveryV642(vendorDeliveryPageV642+1)));\n    $('vendorDeliveryStatusV642')?.addEventListener('change',()=>handler(()=>loadVendorDeliveryV642()));\n    let deliverySearchTimerV642; $('vendorDeliverySearchV642')?.addEventListener('input',()=>{clearTimeout(deliverySearchTimerV642);deliverySearchTimerV642=setTimeout(()=>handler(()=>loadVendorDeliveryV642()),350);});\n    $('vendorReminderPreviewV642')?.addEventListener('click',()=>handler(()=>loadVendorReminderPreviewV642().catch(e=>{reminderNoticeV642('Preview unavailable. Nothing has been sent. '+e.message);throw e;})));\n    $('vendorReminderRefreshV642')?.addEventListener('click',()=>handler(()=>loadVendorReminderStatusV642()));\n    $('vendorReminderApproveV642')?.addEventListener('change',()=>{$('vendorReminderSendV642').disabled=!$('vendorReminderApproveV642').checked||!vendorReminderPreviewV642?.canAuthorise||vendorReminderBusyV642;});\n    $('vendorReminderSendV642')?.addEventListener('click',()=>handler(sendVendorReminderV642));\n    $('vendorReminderPauseV642')?.addEventListener('click',()=>handler(async()=>{const paused=vendorReminderStateV642?.batch?.status!=='paused';if(!paused&&!confirm('Resume only the reminder already approved? Eligibility will be rechecked before sending.'))return;drawVendorReminderStatusV642(await api('/api/admin/vendors/club/reminder/pause',{method:'POST',body:JSON.stringify({paused}),cacheMs:0}));}));\n    $('vendorLaunchEligibilityV642')?.addEventListener('click',()=>handler(async()=>{const out=$('vendorLaunchEligibilityResultV642');out.textContent='Reading current eligibility without changing the original campaign\u2026';try{const d=await api('/api/admin/vendors/club/launch/eligibility',{cacheMs:0,timeoutMs:30000});out.innerHTML='<p>'+esc(d.comparisonNote)+'</p><p>'+Number(d.currentEligible)+' currently eligible \u00B7 '+Number(d.originalFrozen)+' frozen recipients \u00B7 '+Number(d.currentlyEligibleOutsideLaunch?.length||0)+' currently eligible outside the original snapshot.</p><details><summary>Original recipient eligibility now</summary>'+d.rows.map(r=>'<p>'+esc(r.to)+' \u00B7 '+esc(r.currentReason.replace(/_/g,' '))+'</p>').join('')+'</details><details><summary>Currently eligible outside the frozen launch</summary>'+((d.currentlyEligibleOutsideLaunch||[]).map(r=>'<p>'+esc(r.to)+' \u00B7 '+esc(r.businessName||'Vendor')+'</p>').join('')||'<p>None.</p>')+'</details>';}catch(e){out.textContent='Current comparison unavailable. Original evidence is unchanged. '+e.message;throw e;}}));\n    $('vendorLaunchReportRefreshV641')?.addEventListener('click',()=>handler(()=>loadVendorLaunchReportV641()));\n    $('vendorLaunchVerifyV641')?.addEventListener('click',async e=>{e.currentTarget.disabled=true;vendorArchiveNoticeV641('Starting a read-only receipt check. This does not send or resend emails.');try{const data=await api('/api/admin/vendors/club/launch/verify',{method:'POST',body:'{}',cacheMs:0,timeoutMs:20000});drawVendorLaunchReportV641(data);await loadVendorLaunchReportV641({quiet:true});}catch(err){vendorArchiveNoticeV641(err.message,true);$('vendorLaunchVerifyV641').disabled=false;}});\n    $('vendorLaunchExportV641')?.addEventListener('click',exportVendorLaunchReportV641);\n    ['vendorLaunchArchiveSearchV641','vendorLaunchArchiveFilterV641'].forEach(id=>$(id)?.addEventListener(id.includes('Search')?'input':'change',()=>{vendorArchivePageV641=1;drawVendorLaunchRowsV641();}));\n    $('vendorLaunchRowsPreviousV641')?.addEventListener('click',()=>{vendorArchivePageV641--;drawVendorLaunchRowsV641();});$('vendorLaunchRowsNextV641')?.addEventListener('click',()=>{vendorArchivePageV641++;drawVendorLaunchRowsV641();});\n    $('vendorLaunchRecoverV641')?.addEventListener('click',async e=>{const data=vendorArchiveReportV641,ids=(data?.rows||[]).filter(r=>r.retryable&&!r.acceptanceProved).map(r=>r.id);if(!ids.length)return;if(!confirm('Retry '+ids.length+' proven quota-rejected ORIGINAL recipients only? This sends real email. Already accepted messages, unknown outcomes and bounces are excluded.'))return;const b=e.currentTarget;b.disabled=true;try{await api('/api/admin/vendors/club/launch/recover',{method:'POST',body:JSON.stringify({actorId:undefined,confirmed:true,requestId:'recovery_'+crypto.randomUUID(),fingerprint:data.fingerprint,recipientIds:ids}),cacheMs:0,timeoutMs:30000});await loadVendorLaunchReportV641();vendorArchiveNoticeV641('Only the reviewed original failed recipients were queued. The existing provider idempotency keys are preserved.');}catch(err){vendorArchiveNoticeV641(err.message,true);}finally{if(vendorArchiveReportV641)drawVendorLaunchReportV641(vendorArchiveReportV641);}});\n    $('vendorCommerceCheckV636')?.addEventListener('click',async e=>{const b=e.currentTarget,out=$('vendorCommerceResultV636');b.disabled=true;out.textContent='Checking the configured store and selected vendor\u2026';try{const data=await api('/api/admin/vendors/club/commerce-check',{method:'POST',body:JSON.stringify({vendorId:$('vendorCommerceVendorV641')?.value||undefined}),cacheMs:0,timeoutMs:60000});out.textContent=JSON.stringify(data,null,2);}catch(err){out.textContent=err.message;}finally{b.disabled=false;}});\n  }\n  // V641_CLUB_ADMIN_END\n\n\n  let vendorSettingsLoadV641=null;\n  async function loadVendorClubSettingsV620(){\n    if(vendorSettingsLoadV641)return vendorSettingsLoadV641;\n    vendorSettingsLoadV641=(async()=>{initVendorClubSettingsV641();let key='rewards';try{key=sessionStorage.getItem('orbitVendorClubSettingsSectionV641')||'rewards';}catch(_){}\n      const data=await api(\"/api/admin/vendors/club/settings\",{cacheMs:0}),v=data.settings||{};\n      const values={vendorClubFirstTablePointsV620:v.firstTablePoints,vendorClubAdditionalTablePointsV620:v.additionalTablePoints,vendorClubReferralPointsV620:v.referredPaidTicketPoints,vendorClubPhonePointsV620:v.firstMobileVerificationPoints,vendorClubGoldSponsorshipPointsV698:v.goldSponsorshipPoints,vendorClubHeadlineSponsorshipPointsV698:v.headlineSponsorshipPoints};\n      Object.entries(values).forEach(([id,value])=>{if($(id))$(id).value=Number(value||0);});renderVendorClubLaunchStateV6201(v);\n      const commit=$(\"commitVendorClub2027V620\");if(commit)commit.disabled=true;state.vendorClubMigrationDryRunV623=null;\n      await setVendorSettingsSectionV641(key);return data;\n    })();try{return await vendorSettingsLoadV641;}finally{vendorSettingsLoadV641=null;}\n  }\n  async function saveVendorClubSettingsV620(button){setLoading(button,true);try{const payload={firstTablePoints:Number($(\"vendorClubFirstTablePointsV620\").value),additionalTablePoints:Number($(\"vendorClubAdditionalTablePointsV620\").value),referredPaidTicketPoints:Number($(\"vendorClubReferralPointsV620\").value),firstMobileVerificationPoints:Number($(\"vendorClubPhonePointsV620\").value),goldSponsorshipPoints:Number($(\"vendorClubGoldSponsorshipPointsV698\").value),headlineSponsorshipPoints:Number($(\"vendorClubHeadlineSponsorshipPointsV698\").value)},data=await api(\"/api/admin/vendors/club/settings\",{method:\"POST\",body:JSON.stringify(payload),cacheMs:0}),r=$(\"vendorClubSettingsResultV620\");if(r){r.hidden=false;r.textContent=\"Club settings saved. Future qualifying activity uses the new reward values.\";}return data;}finally{setLoading(button,false);}}\n  function renderVendorClubMigrationV620(data){\n    const d=data?.dryRun||{},target=$(\"vendorClubMigrationV620\"),commit=$(\"commitVendorClub2027V620\"),unresolved=Number(d.unresolvedCount||0),pendingPoints=Number(d.totalPointsToIssue||0),corrections=Number(d.pastRewardCorrections||0),alreadyComplete=(d.alreadyComplete===true||d.migrationStatus===\"complete\"&&pendingPoints===0&&corrections===0)&&!unresolved;\n    if(!target)return;\n    target.className=\"orbit-vendor-club-statusline \"+(unresolved?\"is-warning\":\"is-success\");\n    if(alreadyComplete)target.innerHTML=\"<strong>Launch credit already complete</strong><span>\"+Number(d.eligibleFutureBookings||0)+\" eligible upcoming bookings have reward evidence. \"+Number(d.alreadyCreditedSkips||0)+\" are already credited and there is nothing waiting to issue.\"+(d.completedAt?\" Completed \"+esc(prettyDate(d.completedAt))+\".\":\"\")+\"</span>\";\n    else target.innerHTML=\"<strong>\"+Number(d.eligibleFutureBookings||0)+\" eligible upcoming booking\"+(Number(d.eligibleFutureBookings||0)===1?\"\":\"s\")+\" \u00B7 \"+pendingPoints+\" points waiting to issue</strong><span>\"+Number(d.canonicalVendors||0)+\" vendors \u00B7 \"+Number(d.excludedPastBookings||0)+\" past excluded \u00B7 \"+Number(d.excludedFullyRefunded||0)+\" fully refunded excluded \u00B7 \"+Number(d.excludedComplimentary||0)+\" complimentary excluded \u00B7 \"+Number(d.alreadyCreditedSkips||0)+\" already credited \u00B7 \"+corrections+\" past event correction\"+(corrections===1?\"\":\"s\")+\" \u00B7 \"+unresolved+\" unresolved</span>\";\n    const canCommit=!alreadyComplete&&!unresolved&&Boolean(d.fingerprint)&&Boolean(d.cutoffAt);\n    if(commit)commit.disabled=!canCommit;\n    state.vendorClubMigrationDryRunV623=canCommit?{fingerprint:d.fingerprint,cutoffAt:d.cutoffAt}:null;\n  }\n  async function runVendorClubMigrationV620(button,commit=false){\n    setLoading(button,true);try{\n      if(commit&&!state.vendorClubMigrationDryRunV623)throw new Error(\"Run a fresh Dry run before Commit.\");\n      if(commit&&!confirm(\"Commit the audited upcoming booking Vendor Club launch credit now? Past events receive no retrospective points. The ledger is idempotent and a second run must add zero duplicates.\"))return null;\n      const proof=state.vendorClubMigrationDryRunV623,data=await api(\"/api/admin/vendors/club/migration-future\",{method:commit?\"POST\":\"GET\",body:commit?JSON.stringify(proof):undefined,cacheMs:0,timeoutMs:60000});\n      renderVendorClubMigrationV620(data);\n      if(commit){setNotice(\"Upcoming booking launch credit processed. \"+Number(data.created||0)+\" new ledger entries, \"+Number(data.correctedPast||0)+\" past event corrections, second run would create \"+Number(data.secondRunWouldCreate||0)+\".\");state.vendorClubMigrationDryRunV623=null;const commitButton=$(\"commitVendorClub2027V620\");if(commitButton)commitButton.disabled=true;}\n      return data;\n    }finally{setLoading(button,false);}\n  }\n  async function reconcileVendorClubV620(button){setLoading(button,true);try{const data=await api(\"/api/admin/vendors/club/reconciliation\",{cacheMs:0,timeoutMs:60000}),target=$(\"vendorClubReconcileV620\"),m=(data.balanceMismatches||[]).length,deferred=data.paidBookingReconciliation?.deferred===true;if(target){target.className=\"orbit-vendor-club-statusline \"+(m?\"is-warning\":\"is-success\");target.innerHTML=\"<strong>\"+(m?m+\" balance mismatch\"+(m===1?\"\":\"es\"):\"Ledger balances reconcile\")+\"</strong><span>Launch Dry run: \"+Number(data.launchDryRun?.eligibleFutureBookings||0)+\" eligible bookings, \"+Number(data.launchDryRun?.excludedPastBookings||0)+\" past excluded.\"+(deferred?\" New paid booking rewards are safely deferred until launch migration Commit.\":\" Paid booking repair created \"+Number(data.paidBookingReconciliation?.created||0)+\" and reversed \"+Number(data.paidBookingReconciliation?.reversed||0)+\".\")+\"</span>\";}return data;}finally{setLoading(button,false);}}\n  function vendorClubEmailTemplateCardV621(t){return \"<article class='orbit-panel orbit-vendor-email-card-v621'><div class='orbit-panel-header'><div><p class='orbit-kicker'>\"+esc(t.name||t.key)+\"</p><h4>\"+esc(t.subject||\"Vendor Club email\")+\"</h4><p>\"+esc(t.preheader||\"\")+\"</p></div><span class='orbit-status-pill \"+(t.approved?\"active\":\"waiting\")+\"'>\"+(t.approved?\"Approved\":\"Needs approval\")+\"</span></div><div class='orbit-action-row'><button type='button' class='secondary' data-vendor-email-preview-v621='\"+esc(t.key)+\"'>Preview</button><button type='button' class='secondary' data-vendor-email-test-v621='\"+esc(t.key)+\"'>Test send</button><button type='button' \"+(t.approved?\"class='secondary'\":\"\")+\" data-vendor-email-approve-v621='\"+esc(t.key)+\"' data-approved='\"+(t.approved?\"1\":\"0\")+\"'>\"+(t.approved?\"Revoke approval\":\"Approve template\")+\"</button></div>\"+(t.approvedAt?\"<p class='orbit-muted'>Approved \"+esc(prettyDate(t.approvedAt))+\".</p>\":\"\")+\"</article>\";}\n  async function loadVendorClubEmailsV621(button=null){if(button)setLoading(button,true);try{const data=await api(\"/api/admin/vendors/club/email-templates\",{cacheMs:0,timeoutMs:15000}),target=$(\"vendorClubEmailTemplatesV621\");if(target)target.innerHTML=(data.templates||[]).map(vendorClubEmailTemplateCardV621).join(\"\")||\"<p class='orbit-muted'>No Vendor Club email templates are available.</p>\";return data;}finally{if(button)setLoading(button,false);}}\n  async function previewVendorClubEmailV621(key,button=null){if(button)setLoading(button,true);try{const data=await api(\"/api/admin/vendors/club/email-templates/\"+encodeURIComponent(key)+\"/preview\",{cacheMs:0,timeoutMs:15000}),wrap=$(\"vendorClubEmailPreviewWrapV621\"),frame=$(\"vendorClubEmailPreviewFrameV621\"),title=$(\"vendorClubEmailPreviewTitleV621\");if(title)title.textContent=data.template?.name||data.template?.subject||\"Vendor Club email\";if(frame)frame.srcdoc=data.template?.html||\"<p>Preview unavailable.</p>\";if(wrap){wrap.hidden=false;wrap.scrollIntoView({behavior:\"smooth\",block:\"start\"});}return data;}finally{if(button)setLoading(button,false);}}\n  async function testVendorClubEmailV621(key,button=null){const to=String($(\"vendorClubEmailTestAddressV621\")?.value||\"\").trim();if(!to)throw new Error(\"Enter the Admin/test email address to receive the Vendor Club template.\");if(button)setLoading(button,true);try{const data=await api(\"/api/admin/vendors/club/email-templates/\"+encodeURIComponent(key)+\"/test-send\",{method:\"POST\",body:JSON.stringify({to}),cacheMs:0,timeoutMs:20000});setNotice(\"Vendor Club template test sent to \"+to+\" from info@orbitcardshow.co.uk.\");return data;}finally{if(button)setLoading(button,false);}}\n  async function approveVendorClubEmailV621(key,approved,button=null){const next=!approved;if(!confirm((next?\"Approve\":\"Revoke approval for\")+\" this Vendor Club email template?\"))return;if(button)setLoading(button,true);try{const data=await api(\"/api/admin/vendors/club/email-templates/\"+encodeURIComponent(key)+\"/approval\",{method:\"POST\",body:JSON.stringify({approved:next}),cacheMs:0});setNotice(next?\"Vendor Club email template approved.\":\"Vendor Club email template approval revoked.\");await loadVendorClubEmailsV621();return data;}finally{if(button)setLoading(button,false);}}\n  function vendorSupportIsSandboxV635(){return $(\"vendorClubSupportModeV635\")?.value===\"sandbox\";}\n  let vendorSupportBadgeLastV688=null;\n  function setVendorSupportNavBadgeV670(count){const badge=$(\"vendorSupportNavBadgeV670\"),n=Math.max(0,Number(count||0));if(!badge)return n;badge.textContent=n>99?\"99+\":String(n);badge.hidden=n<1;badge.setAttribute(\"aria-label\",n+\" vendor support request\"+(n===1?\"\":\"s\")+\" waiting for reply\");badge.setAttribute('aria-live','polite');return n;}\n  async function refreshVendorSupportNavBadgeV670(){try{const data=await api('/api/admin/vendors/club/support?status=waiting',{cacheMs:0,timeoutMs:10000}),count=Number((data?.unanswered??(data?.tickets||[]).filter(t=>t.awaitingAdminReply&&t.status!=='closed').length)||0),previous=vendorSupportBadgeLastV688;setVendorSupportNavBadgeV670(count);vendorSupportBadgeLastV688=count;if(state.adminAuthenticated&&count>0&&(previous===null||count>previous))void loadOperationsV74(null,true).catch(()=>{});return data;}catch(_){return null;}}\n  // V641_SUPPORT_ADMIN_BEGIN\n  let vendorSupportListEpochV641=0,vendorSupportDetailEpochV641=0,vendorSupportBusyV641=false;\n  const vendorSupportDraftsV641=new Map(),vendorSupportRequestsV641=new Map();\n  function vendorSupportKeyV641(id){return (vendorSupportIsSandboxV635()?'sandbox:':'live:')+id;}\n  function saveVendorSupportDraftV641(){const t=state.currentVendorSupportTicketV621,input=$('vendorClubSupportReplyV621');if(t&&input)vendorSupportDraftsV641.set((t.sandbox?'sandbox:':'live:')+t.id,input.value);}\n  function vendorSupportActionV641(text,error=false){const el=$('vendorSupportActionV641');if(el){el.textContent=text;el.classList.toggle('is-error',error);}}\n  function vendorSupportCardV621(t){const selected=state.currentVendorSupportTicketV621?.id===t.id&&Boolean(state.currentVendorSupportTicketV621?.sandbox)===vendorSupportIsSandboxV635();return \"<button type='button' class='orbit-vendor-support-row-v621 \"+(selected?'is-selected':'')+\"' aria-pressed='\"+selected+\"' data-vendor-support-open-v621='\"+esc(t.id)+\"'><span class='orbit-support-row-head-v641'><strong>\"+(t.sandbox?'[TEST] ':'')+esc(t.subject||'Vendor support')+\"</strong><span class='orbit-status-pill \"+(t.awaitingAdminReply?'waiting':'active')+\"'>\"+esc(t.status==='closed'?'Closed':t.awaitingAdminReply?'Needs reply':'Replied')+\"</span></span><span>\"+esc(t.vendorName||t.vendorEmail||'Vendor')+\"</span><small>\"+esc(t.ticketNumber||'')+\" \u00B7 \"+esc(prettyDate(t.updatedAt||t.createdAt))+\"</small></button>\";}\n  async function loadVendorClubSupportV621(button=null){\n    const epoch=++vendorSupportListEpochV641,mode=vendorSupportIsSandboxV635();if(button)setLoading(button,true);\n    try{const q=String($('vendorClubSupportSearchV621')?.value||'').trim(),wanted=$('vendorClubSupportStatusV621')?.value||'open',status=['waiting','replied','inbox'].includes(wanted)?'open':wanted;\n      const data=await api('/api/admin/vendors/club/support?sandbox='+(mode?'1':'0')+'&q='+encodeURIComponent(q)+'&status='+encodeURIComponent(status),{cacheMs:0,timeoutMs:15000});if(epoch!==vendorSupportListEpochV641||mode!==vendorSupportIsSandboxV635())return data;\n      const rows=(data.tickets||[]).filter(t=>wanted==='waiting'?t.awaitingAdminReply===true:wanted==='replied'?t.awaitingAdminReply!==true:true);if(wanted==='inbox')rows.sort((a,b)=>Number(Boolean(b.awaitingAdminReply))-Number(Boolean(a.awaitingAdminReply)));document.querySelectorAll('[data-vendor-support-view-v642]').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.vendorSupportViewV642===wanted)));state.vendorClubSupportRowsV621=rows;\n      const summary=$('vendorClubSupportSummaryV621'),waiting=rows.filter(t=>t.awaitingAdminReply&&t.status!=='closed').length;if(summary){summary.className='orbit-support-summary-v641';summary.innerHTML='<strong>'+rows.length+' conversation'+(rows.length===1?'':'s')+'</strong><span>'+waiting+' waiting on Orbit'+(mode?' \u00B7 Sandbox only; live counts unchanged':'')+'</span>';}\n      const target=$('vendorClubSupportListV621');if(target)target.innerHTML=rows.map(vendorSupportCardV621).join('')||'<p class=\"orbit-support-empty-v641\">No conversations match this view.</p>';\n      if(!mode)void refreshVendorSupportNavBadgeV670();\n      return data;\n    }catch(e){if(epoch===vendorSupportListEpochV641)vendorSupportActionV641('Inbox could not refresh. Your reply draft is preserved. '+e.message,true);throw e;}\n    finally{if(button)setLoading(button,false);}\n  }\n  async function openVendorClubSupportV621(id){\n    saveVendorSupportDraftV641();const epoch=++vendorSupportDetailEpochV641,mode=vendorSupportIsSandboxV635();vendorSupportActionV641('Opening conversation\u2026');\n    try{const data=await api('/api/admin/vendors/club/support/'+encodeURIComponent(id)+(mode?'?sandbox=1':''),{cacheMs:0,timeoutMs:15000});if(epoch!==vendorSupportDetailEpochV641||mode!==vendorSupportIsSandboxV635())return data;\n      const t=data.ticket||{},target=$('vendorClubSupportDetailV621');state.currentVendorSupportTicketV621=t;if(!target)return data;\n      target.innerHTML=\"<button type='button' class='secondary orbit-support-back-v641' id='vendorSupportBackV641'>\u2190 Back to inbox</button><div class='orbit-support-conversation-head-v641'><div><p class='orbit-kicker'>\"+esc(t.ticketNumber||'Vendor Support')+\"</p><h3>\"+(t.sandbox?'[TEST] ':'')+esc(t.subject||'Vendor Support')+\"</h3><p>\"+esc(t.vendorName||'Vendor')+\" \u00B7 \"+esc(t.vendorEmail||'')+\"</p></div><span class='orbit-status-pill \"+(t.status==='closed'?'waiting':'active')+\"'>\"+esc(t.status||'open')+\"</span></div><div class='orbit-vendor-support-thread-v621' tabindex='0' aria-label='Conversation messages'>\"+(t.messages||[]).map(m=>\"<article class='orbit-vendor-support-message-v621 \"+(m.from==='admin'?'is-admin':'is-vendor')+\"'><strong>\"+(m.from==='admin'?'Orbit team':'Vendor')+\"</strong><p>\"+esc(m.body||'').replace(/\\n/g,'<br>')+\"</p><small>\"+esc(prettyDate(m.createdAt))+\"</small></article>\").join('')+\"</div>\"+(t.archivedRun?\"<p>Archived sandbox conversation. Preserved as read-only test evidence.</p>\":t.status!=='closed'?\"<div class='orbit-support-composer-v641'><label for='vendorClubSupportReplyV621'>Reply to this vendor</label><textarea id='vendorClubSupportReplyV621' rows='4' maxlength='6000' placeholder='Write your reply\u2026'></textarea><div class='orbit-action-row'><button type='button' data-vendor-support-reply-v621='\"+esc(t.id)+\"'>Send reply</button><button type='button' class='secondary' data-vendor-support-close-v621='\"+esc(t.id)+\"'>Reply &amp; close</button><button type='button' class='secondary' data-vendor-support-status-v621='\"+esc(t.id)+\"' data-status='closed'>Close without reply</button></div></div>\":\"<p class='orbit-support-closed-v641'>This conversation is closed. Its messages are preserved.</p><button type='button' class='secondary' data-vendor-support-status-v621='\"+esc(t.id)+\"' data-status='open'>Reopen request</button>\");\n      const input=$('vendorClubSupportReplyV621');if(input){input.value=vendorSupportDraftsV641.get(vendorSupportKeyV641(id))||'';input.addEventListener('input',()=>vendorSupportDraftsV641.set(vendorSupportKeyV641(id),input.value));}\n      const workspace=target.closest('[data-vendor-pane=\"club-support\"]');workspace?.classList.add('has-conversation-v641');$('vendorSupportBackV641').addEventListener('click',()=>{saveVendorSupportDraftV641();workspace?.classList.remove('has-conversation-v641');document.querySelector('[data-vendor-support-open-v621=\"'+CSS.escape(id)+'\"]')?.focus();});\n      const list=$('vendorClubSupportListV621');if(list)list.innerHTML=(state.vendorClubSupportRowsV621||[]).map(vendorSupportCardV621).join('');vendorSupportActionV641('Conversation loaded.');\n      return data;\n    }catch(e){if(epoch===vendorSupportDetailEpochV641)vendorSupportActionV641('Conversation could not load. '+e.message,true);throw e;}\n  }\n  async function replyVendorClubSupportV621(id,closeAfter=false,button=null){\n    if(vendorSupportBusyV641)return;const message=String($('vendorClubSupportReplyV621')?.value||'').trim();if(!message)throw Error('Enter a reply for the vendor.');\n    const mode=vendorSupportIsSandboxV635(),key=vendorSupportKeyV641(id),prior=vendorSupportRequestsV641.get(key);if(prior&&(prior.message!==message||prior.closeAfter!==closeAfter))throw Error('The previous reply outcome is uncertain. Retry that same reply before sending different content.');\n    const request=prior||{message,closeAfter,id:'support_'+crypto.randomUUID()};vendorSupportRequestsV641.set(key,request);vendorSupportBusyV641=true;saveVendorSupportDraftV641();\n    const controls=[...($('vendorClubSupportDetailV621')?.querySelectorAll('button[data-vendor-support-reply-v621],button[data-vendor-support-close-v621],button[data-vendor-support-status-v621]')||[])];controls.forEach(b=>b.disabled=true);vendorSupportActionV641('Saving your reply\u2026');\n    try{await api('/api/admin/vendors/club/support/'+encodeURIComponent(id)+'/reply',{method:'POST',body:JSON.stringify({message,status:closeAfter?'closed':'open',sandbox:mode,requestId:request.id}),cacheMs:0,timeoutMs:20000});vendorSupportRequestsV641.delete(key);vendorSupportDraftsV641.delete(key);\n      if(mode===vendorSupportIsSandboxV635()&&state.currentVendorSupportTicketV621?.id===id){if($('vendorClubSupportReplyV621'))$('vendorClubSupportReplyV621').value='';await loadVendorClubSupportV621();await openVendorClubSupportV621(id);vendorSupportActionV641(closeAfter?'Reply saved and conversation closed.':'Reply saved to the conversation.');setNotice('Support reply saved.',false);}\n      if(!mode){await refreshVendorSupportNavBadgeV670();await loadVendorClubSupportV621();if(state.currentVendorSupportTicketV621?.id===id)await openVendorClubSupportV621(id);setNotice('Support reply saved.',false);}\n    }catch(e){vendorSupportActionV641('Reply could not be confirmed. Your draft is saved; retry the same reply to avoid duplication. '+e.message,true);throw e;}\n    finally{vendorSupportBusyV641=false;controls.forEach(b=>b.disabled=false);}\n  }\n  async function statusVendorClubSupportV621(id,status,button=null){if(vendorSupportBusyV641)return;if(status==='closed'&&!confirm('Close this Vendor Support request without sending a reply?'))return;saveVendorSupportDraftV641();const mode=vendorSupportIsSandboxV635();vendorSupportBusyV641=true;if(button)setLoading(button,true);try{await api('/api/admin/vendors/club/support/'+encodeURIComponent(id)+'/status',{method:'POST',body:JSON.stringify({status,sandbox:mode}),cacheMs:0});if(mode===vendorSupportIsSandboxV635()){await loadVendorClubSupportV621();await openVendorClubSupportV621(id);vendorSupportActionV641(status==='closed'?'Conversation closed.':'Conversation reopened.');}if(!mode){await refreshVendorSupportNavBadgeV670();await loadVendorClubSupportV621();await openVendorClubSupportV621(id);vendorSupportActionV641(status==='closed'?'Conversation closed.':'Conversation reopened.');}}finally{vendorSupportBusyV641=false;if(button)setLoading(button,false);}}\n  // V641_SUPPORT_ADMIN_END\n\n  function vendorDateV385(value){if(!value)return 'Date not detected';const d=new Date(value);return Number.isNaN(d.getTime())?'Date not detected':d.toLocaleDateString('en-GB',{day:'numeric',month:'short',year:'numeric',timeZone:'Europe/London'});}\n  function vendorDateInputV388(value){if(!value)return \"\";const d=new Date(value);if(Number.isNaN(d.getTime()))return \"\";return d.toISOString().slice(0,10);}\n  function vendorOrderAdminUrl(orderId){const id=String(orderId||\"\").match(/(\\d+)$/)?.[1];return id?\"https://admin.shopify.com/store/4b1z9j-2x/orders/\"+encodeURIComponent(id):null;}\n  let vendorBookingChangesTimerV487=null,vendorBookingChangesRowsV488=[];\n  function renderVendorBookingChangesV487(rows){\n    const target=$(\"vendorBookingChangesTableV487\"),summary=$(\"vendorBookingChangesSummaryV487\");if(!target)return;\n    const items=rows||[];vendorBookingChangesRowsV488=items;\n    const transfers=items.filter(x=>x.action===\"transfer\").length,cancellations=items.filter(x=>x.action===\"cancellation\").length;\n    if(summary){summary.className=\"orbit-vendor-booking-summary-v496\";summary.innerHTML=\"<strong>\"+items.length+\" booking change\"+(items.length===1?\"\":\"s\")+\"</strong><span>\"+transfers+\" transfer\"+(transfers===1?\"\":\"s\")+\" \u00B7 \"+cancellations+\" cancellation\"+(cancellations===1?\"\":\"s\")+\" \u00B7 Shopify source orders remain unchanged.</span>\";}\n    if(!items.length){target.innerHTML=\"<p class='orbit-muted'>No matching transferred or cancelled Vendor bookings were found.</p>\";return;}\n    target.innerHTML=\"<table><thead><tr><th>When</th><th>Action</th><th>Vendor</th><th>Order</th><th>From</th><th>To</th><th>Reason / status</th><th>Internal note</th><th></th></tr></thead><tbody>\"+items.map(row=>{\n      const orderUrl=vendorOrderAdminUrl(row.shopifyOrderId),order=orderUrl?\"<a href='\"+esc(orderUrl)+\"' target='_blank' rel='noopener'>\"+esc(row.orderName||row.shopifyOrderId||\"Order\")+\" \u2197</a>\":esc(row.orderName||\"Manual booking\");\n      const action=row.action===\"transfer\"?\"Transferred\":\"Cancelled\";\n      const credit=row.accountCredit,rowCredit=credit?(\"Credit: \"+vendorMoneyV384(credit.remainingAmount)+\" remaining of \"+vendorMoneyV384(credit.originalAmount)):\"\";\n      const detail=row.action===\"cancellation\"?[row.reason,row.refundStatus&&(\"Refund: \"+humanStatus(row.refundStatus)),rowCredit].filter(Boolean).join(\" \u00B7 \"):[row.reason,row.transferPricing?.difference!=null?(\"Difference: \"+vendorMoneyV384(row.transferPricing.difference)):\"\",row.convertedFromCancellation?\"Converted from cancellation\":\"\"].filter(Boolean).join(\" \u00B7 \");\n      return \"<tr><td>\"+esc(prettyDate(row.changedAt))+\"</td><td><span class='orbit-status-pill \"+(row.action===\"transfer\"?\"active\":\"waiting\")+\"'>\"+action+\"</span></td><td><strong>\"+esc(row.vendorName||\"Vendor\")+\"</strong>\"+(row.vendorEmail?\"<small>\"+esc(row.vendorEmail)+\"</small>\":\"\")+\"</td><td>\"+order+\"</td><td>\"+esc(row.sourceEventLabel||\"\u2014\")+\"</td><td>\"+esc(row.destinationEventLabel||\"\u2014\")+\"</td><td>\"+esc(detail||\"\u2014\")+\"</td><td>\"+esc(row.operatorNote||\"\u2014\")+\"</td><td><button type='button' class='secondary' data-vendor-booking-change-edit-v488='\"+esc(row.id)+\"'>Edit</button> <button type='button' class='secondary' data-vendor-resolution-v542='\"+esc(row.id)+\"'>\"+(row.resolved?\"Reopen\":\"Mark resolved\")+\"</button></td></tr>\";\n    }).join(\"\")+\"</tbody></table>\";\n  }\n  async function loadVendorBookingChangesV487(button=null){\n    const q=String($(\"vendorBookingChangesSearchV487\")?.value||\"\").trim();if(button)setLoading(button,true);\n    try{const result=await api(\"/api/admin/vendors/booking-changes?q=\"+encodeURIComponent(q)+\"&limit=250&workspaceStatus=\"+encodeURIComponent($(\"vendorBookingChangesStateV542\")?.value||\"open\"),{timeoutMs:15000,cacheMs:0});renderVendorBookingChangesV487(result.rows||[]);return result;}\n    finally{if(button)setLoading(button,false);}\n  }\n  function scheduleVendorBookingChangesSearchV487(){\n    if(vendorBookingChangesTimerV487)clearTimeout(vendorBookingChangesTimerV487);\n    vendorBookingChangesTimerV487=setTimeout(()=>loadVendorBookingChangesV487().catch(err=>setNotice(err.message||err,true)),250);\n  }\n  function openVendorBookingChangeEditV488(id){\n    const row=vendorBookingChangesRowsV488.find(x=>String(x.id)===String(id));if(!row)return;\n    $(\"vendorBookingChangeEditIdV488\").value=row.id||\"\";\n    $(\"vendorBookingChangeEditTitleV488\").textContent=(row.action===\"cancellation\"?\"Edit cancellation\":\"Edit transfer\")+\" \u00B7 \"+(row.vendorName||row.orderName||\"Vendor\");\n    $(\"vendorBookingChangeEditSubtitleV488\").textContent=[row.orderName,row.sourceEventLabel,row.destinationEventLabel].filter(Boolean).join(\" \u00B7 \")||\"Orbit internal Vendor booking-change record\";\n    const refundWrap=$(\"vendorBookingChangeRefundWrapV488\"),refund=$(\"vendorBookingChangeRefundV488\");\n    if(refundWrap)refundWrap.hidden=row.action!==\"cancellation\";\n    if(refund)refund.value=row.action===\"cancellation\"?(row.refundStatus||\"unknown\"):\"unknown\";\n    $(\"vendorBookingChangeNoteV488\").value=row.operatorNote||\"\";\n    const actions=$(\"vendorBookingChangeCancellationActionsV492\"),creditSummary=$(\"vendorBookingChangeCreditSummaryV492\"),createCredit=$(\"vendorBookingChangeCreateCreditV492\"),convert=$(\"vendorBookingChangeConvertTransferV492\"),creditManage=$(\"vendorBookingChangeCreditManageV493\"),actionResult=$(\"vendorBookingChangeActionResultV492\");\n    if(actions)actions.hidden=row.action!==\"cancellation\";\n    if(actionResult){actionResult.hidden=true;actionResult.textContent=\"\";}\n    if(row.action===\"cancellation\"){\n      const credit=row.accountCredit||null,remaining=Number(credit?.remainingAmount||0),creditable=Number(row.creditableAmount||credit?.sourcePaidAmount||credit?.originalAmount||0);\n      if(creditSummary){creditSummary.className=\"orbit-info-banner \"+(credit?\"success\":\"info\");creditSummary.innerHTML=credit?\"<strong>Vendor Account Credit \u00B7 \"+esc(vendorMoneyV384(remaining))+\" held on account</strong><span>Original credit \"+esc(vendorMoneyV384(credit.originalAmount))+\". Keep it here until the vendor chooses another show, then manually deduct the GBP amount you use.</span>\":\"<strong>No account credit yet</strong><span>Choose Not refunded above and enter the GBP credit to hold on this vendor account. Orbit will not move any money.</span>\";}\n      if(createCredit){createCredit.hidden=Boolean(credit);createCredit.disabled=false;}\n      if(convert){convert.hidden=Boolean(credit);convert.disabled=false;}\n      if(creditManage)creditManage.hidden=!credit||remaining<=0;\n      if($(\"vendorBookingChangeCreditAmountV493\"))$(\"vendorBookingChangeCreditAmountV493\").value=credit?Number(credit.originalAmount||0).toFixed(2):(creditable>0?creditable.toFixed(2):\"\");\n      if($(\"vendorBookingChangeCreditUsedV493\"))$(\"vendorBookingChangeCreditUsedV493\").value=\"\";\n      if($(\"vendorBookingChangeEventV492\"))$(\"vendorBookingChangeEventV492\").value=\"\";\n    }\n    $(\"vendorBookingChangeEditDialogV488\")?.showModal();\n  }\n  async function saveVendorBookingChangeEditV488(button){\n    const id=$(\"vendorBookingChangeEditIdV488\")?.value||\"\",row=vendorBookingChangesRowsV488.find(x=>String(x.id)===String(id));if(!id||!row)return;\n    const payload={operatorNote:$(\"vendorBookingChangeNoteV488\")?.value||\"\"};\n    if(row.action===\"cancellation\")payload.refundStatus=$(\"vendorBookingChangeRefundV488\")?.value||\"unknown\";\n    setLoading(button,true);\n    try{\n      await api(\"/api/admin/vendors/booking-changes/\"+encodeURIComponent(id),{method:\"PATCH\",body:JSON.stringify(payload),timeoutMs:15000,cacheMs:0});\n      $(\"vendorBookingChangeEditDialogV488\")?.close();\n      await loadVendorBookingChangesV487();\n      setNotice(\"Vendor \"+(row.action===\"cancellation\"?\"cancellation\":\"transfer\")+\" record updated. Shopify source order was not changed.\");\n    }finally{setLoading(button,false);}\n  }\n  function currentVendorBookingChangeV492(){const id=$(\"vendorBookingChangeEditIdV488\")?.value||\"\";return vendorBookingChangesRowsV488.find(x=>String(x.id)===String(id))||null;}\n  function vendorBookingChangeResultV492(message,error=false){const box=$(\"vendorBookingChangeActionResultV492\");if(!box)return;box.hidden=false;box.classList.toggle(\"error\",Boolean(error));box.textContent=String(message||\"\");}\n  async function refreshVendorBookingChangeDialogV492(id){await loadVendorBookingChangesV487();const next=vendorBookingChangesRowsV488.find(x=>String(x.id)===String(id));if(next)openVendorBookingChangeEditV488(id);else $(\"vendorBookingChangeEditDialogV488\")?.close();return next;}\n  async function ensureVendorCancellationNotRefundedV493(row){const refund=$(\"vendorBookingChangeRefundV488\")?.value||\"unknown\",operatorNote=$(\"vendorBookingChangeNoteV488\")?.value||\"\";if(refund!==\"not_refunded\")throw new Error(\"Choose Not refunded above before creating credit or converting this cancellation.\");if(row.refundStatus===\"not_refunded\"&&String(row.operatorNote||\"\")===String(operatorNote||\"\"))return row;await api(\"/api/admin/vendors/booking-changes/\"+encodeURIComponent(row.id),{method:\"PATCH\",body:JSON.stringify({refundStatus:\"not_refunded\",operatorNote}),timeoutMs:15000,cacheMs:0});await loadVendorBookingChangesV487();return currentVendorBookingChangeV492()||row;}\n  async function createVendorAccountCreditV492(button){let row=currentVendorBookingChangeV492();if(!row||row.action!==\"cancellation\")return;const amount=Number($(\"vendorBookingChangeCreditAmountV493\")?.value||0);if(!Number.isFinite(amount)||amount<=0)throw new Error(\"Enter the GBP amount you want to hold as Vendor Account Credit.\");setLoading(button,true);try{row=await ensureVendorCancellationNotRefundedV493(row);const result=await api(\"/api/admin/vendors/booking-changes/\"+encodeURIComponent(row.id)+\"/account-credit\",{method:\"POST\",body:JSON.stringify({amount}),timeoutMs:15000,cacheMs:0});vendorBookingChangeResultV492(result.message||(\"Account credit created: \"+vendorMoneyV384(result.credit?.originalAmount)));setNotice(\"Vendor Account Credit is now held on the vendor account. No refund or charge was made.\");await refreshVendorBookingChangeDialogV492(row.id);}finally{setLoading(button,false);}}\n  async function convertVendorCancellationToTransferV492(button){let row=currentVendorBookingChangeV492();const ev=selectedVendorEventV388(\"vendorBookingChangeEventV492\");if(!row||row.action!==\"cancellation\")return;if(!ev.key)throw new Error(\"Select the destination event first.\");if(!confirm(\"Convert this cancellation into a transfer to \"+ev.label+\"? No refund or charge will be made and the Shopify source order will remain unchanged.\"))return;setLoading(button,true);try{row=await ensureVendorCancellationNotRefundedV493(row);const result=await api(\"/api/admin/vendors/booking-changes/\"+encodeURIComponent(row.id)+\"/convert-transfer\",{method:\"POST\",body:JSON.stringify({toEventKey:ev.key,toEventLabel:ev.label,toEventDate:ev.date||null,reason:\"Converted from cancelled booking in Booking Changes\"}),timeoutMs:15000,cacheMs:0});setNotice(\"Cancellation converted to transfer. \"+(result.message||\"Shopify source order unchanged.\"));await refreshVendorBookingChangeDialogV492(row.id);}finally{setLoading(button,false);}}\n  async function useVendorAccountCreditV492(button){const row=currentVendorBookingChangeV492(),credit=row?.accountCredit,ev=selectedVendorEventV388(\"vendorBookingChangeEventV492\");if(!row||!credit)throw new Error(\"Create Vendor Account Credit first.\");if(!ev.key)throw new Error(\"Select the destination event first.\");const quantity=Math.max(1,Math.min(20,Number($(\"vendorBookingChangeCreditQuantityV492\")?.value||1))),requestId=(globalThis.crypto?.randomUUID?.()||(\"credit-use-\"+Date.now()+\"-\"+Math.random().toString(36).slice(2)));setLoading(button,true);try{const result=await api(\"/api/admin/vendors/account-credits/\"+encodeURIComponent(credit.id)+\"/book\",{method:\"POST\",body:JSON.stringify({eventKey:ev.key,eventLabel:ev.label,eventDate:ev.date||null,quantity,requestId}),timeoutMs:15000,cacheMs:0});vendorBookingChangeResultV492(result.message||\"Credit-funded booking created.\");setNotice(result.amountToInvoice>0?(\"Manual Vendor booking created. Invoice \"+vendorMoneyV384(result.amountToInvoice)+\" difference.\"):\"Manual Vendor booking created using account credit.\");await refreshVendorBookingChangeDialogV492(row.id);}finally{setLoading(button,false);}}\n  async function adjustVendorAccountCreditV493(button,{clear=false,creditId=null,customerKey=null}={}){const row=currentVendorBookingChangeV492(),creditIdResolved=creditId||row?.accountCredit?.id;if(!creditIdResolved)throw new Error(\"No Vendor Account Credit is available.\");const bookingValue=clear?null:Number($(\"vendorBookingChangeCreditUsedV493\")?.value||0);if(!clear&&(!Number.isFinite(bookingValue)||bookingValue<=0))throw new Error(\"Enter the GBP value of the replacement booking.\");const label=clear?\"Clear the full remaining Vendor Account Credit?\":\"Apply this credit against a \"+vendorMoneyV384(bookingValue)+\" replacement booking?\";if(!confirm(label+\" This only updates Orbit's credit ledger and does not move money or edit Shopify.\"))return;setLoading(button,true);try{const requestId=(globalThis.crypto?.randomUUID?.()||(\"credit-adjust-\"+Date.now()+\"-\"+Math.random().toString(36).slice(2))),result=await api(\"/api/admin/vendors/account-credits/\"+encodeURIComponent(creditIdResolved)+\"/adjust\",{method:\"POST\",body:JSON.stringify({bookingValue,clearRemaining:clear,reason:\"Credit used against manually assigned Vendor tables\",requestId}),timeoutMs:15000,cacheMs:0});setNotice(result.message||\"Vendor Account Credit updated.\");if(customerKey)await viewVendorCustomerV398(customerKey);else if(row)await refreshVendorBookingChangeDialogV492(row.id);return result;}finally{setLoading(button,false);}}\n  function vendorLineLabel(b){if(b.type===\"complimentary\")return \"Manual table\";if(b.lineKind===\"display_case\")return \"Display case\";if(b.lineKind===\"addon\")return \"Add-on\";return \"Vendor table\";}\n  function selectedVendorCustomerKeysV390(){return [...document.querySelectorAll('[data-vendor-customer-select]:checked')].map(x=>x.value).filter(Boolean);}\n  function updateVendorMergeButtonV390(){const b=$(\"mergeVendorCustomers\");if(!b)return;const count=selectedVendorCustomerKeysV390().length;b.disabled=count<2;b.textContent=count>=2?\"Merge \"+count+\" selected customers\":\"Merge selected customers\";}\n\n  function vendorCustomerSortValueV414(c,key){\n    if([\"orders\",\"events\",\"tables\",\"displayCases\",\"spend\"].includes(key))return Number(c?.[key]||0);\n    if(key===\"lastBookingAt\")return Date.parse(c?.lastBookingAt||\"1970-01-01\")||0;\n    if(key===\"businessName\")return String(c?.businessName||c?.instagram||\"\").toLowerCase();\n    if(key===\"contact\")return String(c?.email||c?.phone||\"\").toLowerCase();\n    return String(c?.name||\"\").toLowerCase();\n  }\n  function sortVendorCustomersV414(rows){\n    const sort=state.vendorCustomerSortV414||{key:\"spend\",dir:\"desc\"},mult=sort.dir===\"asc\"?1:-1;\n    return [...(rows||[])].sort((a,b)=>{const av=vendorCustomerSortValueV414(a,sort.key),bv=vendorCustomerSortValueV414(b,sort.key);if(typeof av===\"number\"&&typeof bv===\"number\")return (av-bv)*mult;return String(av).localeCompare(String(bv),undefined,{numeric:true,sensitivity:\"base\"})*mult;});\n  }\n  function vendorCustomerSortHeadingV414(label,key){\n    const sort=state.vendorCustomerSortV414||{key:\"spend\",dir:\"desc\"},mark=sort.key===key?(sort.dir===\"asc\"?\" \u25B2\":\" \u25BC\"):\" \u2195\";\n    return \"<button type='button' class='orbit-vendor-sort-heading' data-vendor-customer-sort='\"+key+\"'>\"+label+\"<span>\"+mark+\"</span></button>\";\n  }\n  function renderVendorCustomersV398(customers){\n    const target=$(\"vendorCustomersTable\");if(!target)return;const source=customers||[];state.vendorCustomers=source;const rows=sortVendorCustomersV414(source);\n    if(!rows.length){target.innerHTML=\"<p class='orbit-muted'>No vendor customer records were produced from the stored Shopify archive.</p>\";return;}\n    target.innerHTML=\"<table><thead><tr><th class='orbit-vendor-customer-select'><span class='sr-only'>Select</span></th><th>\"+vendorCustomerSortHeadingV414(\"Vendor\",\"name\")+\"</th><th>\"+vendorCustomerSortHeadingV414(\"Business identifier\",\"businessName\")+\"</th><th>\"+vendorCustomerSortHeadingV414(\"Email / phone\",\"contact\")+\"</th><th>Vendor Club</th><th>\"+vendorCustomerSortHeadingV414(\"Orders\",\"orders\")+\"</th><th>\"+vendorCustomerSortHeadingV414(\"Shows\",\"events\")+\"</th><th>\"+vendorCustomerSortHeadingV414(\"Tables\",\"tables\")+\"</th><th>\"+vendorCustomerSortHeadingV414(\"Cases\",\"displayCases\")+\"</th><th>\"+vendorCustomerSortHeadingV414(\"Lifetime spend\",\"spend\")+\"</th><th>\"+vendorCustomerSortHeadingV414(\"Last booking\",\"lastBookingAt\")+\"</th><th></th></tr></thead><tbody>\"+rows.map(c=>{\n      const search=String(c.searchText||[c.name,c.email,c.phone].filter(Boolean).join(\" \")).toLowerCase();\n      const displayName=c.businessName||c.name||\"Unknown vendor\",bookingName=c.businessName&&c.name&&c.name!==c.businessName?c.name:null;\n      return \"<tr data-vendor-customer-row data-vendor-search='\"+esc(search)+\"'><td class='orbit-vendor-customer-select'><input type='checkbox' data-vendor-customer-select value='\"+esc(c.key||\"\")+\"'></td><td><strong>\"+esc(displayName)+\"</strong>\"+(bookingName?\"<small>Booking name: \"+esc(bookingName)+\"</small>\":\"\")+(c.merged?\"<small>Merged Orbit identity</small>\":\"\")+\"</td><td>\"+esc(c.businessName?c.name||\"\u2014\":c.instagram||\"\u2014\")+(c.businessName&&c.instagram?\"<small>\"+esc(c.instagram)+\"</small>\":\"\")+\"</td><td>\"+esc(c.email||\"\u2014\")+(c.phone?\"<small>\"+esc(c.phone)+\"</small>\":\"\")+\"</td><td data-vendor-club-status-cell-v624='\"+esc(c.key||\"\")+\"'>\"+vendorClubAdoptionBadgeV624((state.vendorClubStatusMapV624||{})[String(c.key||\"\")])+\"</td><td>\"+Number(c.orders||0)+\"</td><td>\"+Number(c.events||0)+\"</td><td>\"+Number(c.tables||0)+\"</td><td>\"+Number(c.displayCases||0)+\"</td><td>\"+esc(vendorMoneyV384(c.spend))+\"</td><td>\"+esc(c.lastBookingAt?prettyDate(c.lastBookingAt):\"\u2014\")+\"</td><td><button type='button' class='secondary' data-vendor-customer-view='\"+esc(c.key||\"\")+\"'>Open</button></td></tr>\";\n    }).join(\"\")+\"</tbody></table>\";\n    updateVendorMergeButtonV390();applyVendorCustomerSearchV398();if(!state.vendorClubStatusMapV624||!Object.keys(state.vendorClubStatusMapV624).length)loadVendorClubStatusMapV624().catch(()=>{});else applyVendorClubStatusCellsV624();\n  }\n  function applyVendorCustomerSearchV398(){const q=String($(\"vendorCustomerSearch\")?.value||\"\").trim().toLowerCase();document.querySelectorAll(\"[data-vendor-customer-row]\").forEach(row=>row.classList.toggle(\"orbit-vendor-row-hidden\",Boolean(q)&&!String(row.dataset.vendorSearch||row.textContent||\"\").toLowerCase().includes(q)));}\n  function renderVendorDuplicateSuggestionsV398(rows){\n    const box=$(\"vendorDuplicateSuggestions\");if(!box)return;const items=rows||[];state.vendorDuplicateSuggestions=items;\n    if(!items.length){box.hidden=true;box.innerHTML=\"\";return;}\n    box.hidden=false;box.innerHTML=\"<div class='orbit-panel-header'><div><p class='orbit-kicker'>Possible duplicates</p><h3>\"+items.length+\" customer match\"+(items.length===1?\"\":\"es\")+\" worth checking</h3><p>Orbit never auto-merges identities. Confirm only the ones you recognise.</p></div></div><div class='orbit-vendor-duplicate-list'>\"+items.slice(0,12).map(x=>{\n      const a=x.customers?.[0]||{},b=x.customers?.[1]||{};\n      return \"<div class='orbit-vendor-duplicate-row'><div><strong>\"+esc(a.name)+\"</strong> <span>\"+esc(a.email||\"\")+\"</span><br><strong>\"+esc(b.name)+\"</strong> <span>\"+esc(b.email||\"\")+\"</span><small>\"+esc((x.reasons||[]).join(\" \u00B7 \"))+\" \u00B7 \"+Number(x.score||0)+\"% confidence</small></div><div class='orbit-action-row'><button type='button' class='secondary' data-vendor-duplicate-dismiss='\"+esc(x.id)+\"'>Do not merge</button><button type='button' class='secondary' data-vendor-duplicate-merge='\"+esc(x.id)+\"'>Review merge</button></div></div>\";\n    }).join(\"\")+\"</div>\";\n  }\n  function applyVendorEventSearchV398(targetId,inputId){const q=String($(inputId)?.value||\"\").trim().toLowerCase();const target=$(targetId);if(!target)return;target.querySelectorAll(\"[data-vendor-event-card]\").forEach(card=>card.classList.toggle(\"orbit-vendor-card-hidden\",Boolean(q)&&!String(card.dataset.vendorSearch||card.textContent||\"\").toLowerCase().includes(q)));}\n  function vendorTablePlanIsManuallyCompleteV466(plan){return String(plan?.status||\"\").toLowerCase()===\"ready\"&&Boolean(plan?.completionConfirmedAt);}\n  function ensureFinanceAttendanceDialogV509(){\n    let dialog=$(\"financeAttendanceDialogV509\");if(dialog)return dialog;\n    dialog=document.createElement(\"dialog\");dialog.id=\"financeAttendanceDialogV509\";dialog.className=\"orbit-admin-dialog orbit-finance-attendance-dialog-v510\";\n    dialog.innerHTML=\"<div class='orbit-dialog-heading orbit-finance-attendance-heading-v510'><div><p class='orbit-kicker'>Past Event Finance</p><h3 id='financeAttendanceTitleV509'>Attendance</h3></div><button type='button' class='secondary orbit-finance-attendance-close-v510' data-finance-attendance-close-v509>Close</button></div><div class='orbit-finance-attendance-toolbar-v510'><button type='button' class='secondary' data-finance-attendance-refresh-v509>Refresh from Eventbrite</button><div id='financeAttendanceRefreshStatusV510' class='orbit-finance-attendance-refresh-status-v510' hidden></div></div><div id='financeAttendanceBodyV509' class='orbit-finance-attendance-body-v510'><p class='orbit-muted'>Loading attendance\u2026</p></div>\";\n    document.body.appendChild(dialog);return dialog;\n  }\n  async function renderFinanceAttendanceV509(eventId,eventName){\n    const dialog=ensureFinanceAttendanceDialogV509(),body=$(\"financeAttendanceBodyV509\"),title=$(\"financeAttendanceTitleV509\");\n    dialog.dataset.eventId=eventId;if(title)title.textContent=(eventName||\"Past event\")+\" \u00B7 Attendance\";if(body)body.innerHTML=\"<p class='orbit-muted'>Loading attendance\u2026</p>\";if(!dialog.open)dialog.showModal();\n    const full=await api(\"/api/admin/attendance/events/\"+encodeURIComponent(eventId),{cacheMs:0});\n    if(body){body.innerHTML=attendanceDetailMarkup(full);wireHistoricalAddOnRecoveryV480(body,eventId,async()=>renderFinanceAttendanceV509(eventId,eventName));wireDoorCorrectionsV489(body,eventId,async()=>renderFinanceAttendanceV509(eventId,eventName));}\n    return full;\n  }\n  function financeAttendanceRefreshStatusV510(message,state){\n    const node=$(\"financeAttendanceRefreshStatusV510\");if(!node)return;\n    if(!message){node.hidden=true;node.textContent=\"\";node.className=\"orbit-finance-attendance-refresh-status-v510\";return;}\n    node.hidden=false;node.textContent=message;node.className=\"orbit-finance-attendance-refresh-status-v510 \"+(state?\"is-\"+state:\"\");\n  }\n  async function refreshFinanceAttendanceFromEventbriteV509(button){\n    const dialog=ensureFinanceAttendanceDialogV509(),eventId=dialog.dataset.eventId;if(!eventId)return;\n    const eventName=String($(\"financeAttendanceTitleV509\")?.textContent||\"\").replace(/ \u00B7 Attendance$/,\"\");\n    setLoading(button,true);\n    const startedAt=Date.now();let pollTimer=null;\n    const elapsed=()=>Math.max(0,Math.round((Date.now()-startedAt)/1000));\n    try{\n      // V510: reuse Orbit's proven persistent attendance preparation job rather\n      // than leaving Finance waiting on one long HTTP request. The underlying\n      // Eventbrite sync remains the existing read-only implementation; this only\n      // makes progress/failure visible and survives a slow historical download.\n      financeAttendanceRefreshStatusV510(\"Starting Eventbrite attendance download\u2026\",\"working\");\n      const started=await api(\"/api/admin/attendance/events/\"+encodeURIComponent(eventId)+\"/prepare-jobs\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:15000});\n      const jobId=started?.job?.id;if(!jobId)throw new Error(\"Orbit could not start the Eventbrite attendance refresh job.\");\n      let job=started.job;\n      while(job&&[\"queued\",\"running\"].includes(String(job.status||\"\").toLowerCase())){\n        financeAttendanceRefreshStatusV510(\"Downloading Eventbrite attendance\u2026 \"+elapsed()+\"s elapsed. Large historical events can take a few minutes.\",\"working\");\n        await new Promise(resolve=>{pollTimer=setTimeout(resolve,1200);});pollTimer=null;\n        const check=await api(\"/api/admin/attendance/prepare-jobs/\"+encodeURIComponent(jobId),{cacheMs:0,timeoutMs:15000});\n        job=check?.job||null;\n        if(elapsed()>600)throw new Error(\"The Eventbrite attendance refresh is still running after 10 minutes. Do not start another refresh; check again shortly.\");\n      }\n      if(!job)throw new Error(\"Orbit lost the Eventbrite attendance refresh status.\");\n      if(String(job.status||\"\").toLowerCase()!==\"completed\")throw new Error(job.error||\"Eventbrite attendance refresh failed.\");\n      financeAttendanceRefreshStatusV510(\"Eventbrite attendance downloaded. Reloading the report\u2026\",\"success\");\n      await renderFinanceAttendanceV509(eventId,eventName);\n      const admissions=Number(job.result?.preparedAdmissions??job.result?.totalSynced??0);\n      financeAttendanceRefreshStatusV510(\"Refresh complete\"+(admissions?\" \u00B7 \"+admissions+\" admissions loaded\":\"\")+\". Eventbrite itself was not changed.\",\"success\");\n      setNotice(\"Attendance refreshed from Eventbrite. Eventbrite itself was not changed.\");\n    }catch(error){\n      financeAttendanceRefreshStatusV510(error.message||\"Eventbrite attendance refresh failed.\",\"error\");throw error;\n    }finally{if(pollTimer)clearTimeout(pollTimer);setLoading(button,false);}\n  }\n\n  function renderVendorEventsV398(targetId,events,searchInputId=null){\n    const target=$(targetId);if(!target)return;const rows=events||[];\n    if(!rows.length){target.innerHTML=\"<p class='orbit-muted'>No events in this group yet.</p>\";return;}\n    target.innerHTML=rows.map(e=>{\n      const search=[e.displayName||e.label,e.eventDate,e.venue?.name,...(e.bookings||[]).flatMap(b=>[b.customer?.name,b.customer?.email,b.orderName])].filter(Boolean).join(\" \").toLowerCase();\n      const profit=e.finance?.profit,finance=e.finance||{},isPast=e.state===\"past\",metaUnknown=[\"unavailable\",\"not_requested\"].includes(finance.metaAccounting?.status);\n      const tax=Number(finance.tax??((finance.totalIncome||e.sales||0)*0.20)),costsIncludingTax=Number(finance.expenses?.total||0)+tax;\n      const financialLine=isPast?\"<div class='orbit-vendor-event-finance-mini'><span>Income <strong>\"+esc(vendorMoneyV384(finance.totalIncome||e.sales))+\"</strong></span><span>Costs <strong>\"+(metaUnknown?\"\u2014\":esc(vendorMoneyV384(costsIncludingTax)))+\"</strong></span><span class='tax'>Tax <strong>\"+esc(vendorMoneyV384(tax))+\"</strong></span><span class='\"+(Number(profit||0)<0?\"loss\":\"profit\")+\"'>P&amp;L <strong>\"+(metaUnknown?\"\u2014\":esc(vendorMoneyV384(profit)))+\"</strong></span>\"+(metaUnknown?\"<small>Advertising not loaded; view Finance for accounting</small>\":\"\")+\"</div>\":\"\";\n      const planReady=String(e.tablePlan?.status||\"\").toLowerCase()===\"ready\"&&Boolean(e.tablePlan?.completionConfirmedAt),briefSent=Boolean(e.vendorBriefingLastSent?.sentAt);\n      const liveOps=!isPast?\"<div class='orbit-vendor-live-hero-cards'><span><small>Vendors attending</small><strong>\"+Number(e.customers||0)+\"</strong></span><span><small>Total tables booked</small><strong>\"+Number(e.tables||0)+\"</strong></span><span class='\"+(planReady?\"ready\":\"pending\")+\"'><small>Table plan complete</small><strong>\"+(planReady?\"Yes\":\"No\")+\"</strong></span><span class='\"+(briefSent?\"ready\":\"pending\")+\"'><small>Vendor email sent</small><strong>\"+(briefSent?(\"Yes \u00B7 \"+esc(prettyDate(e.vendorBriefingLastSent.sentAt))):\"No\")+\"</strong></span></div>\":\"\";\n      const eventbriteId=e.eventbriteEventId||e.financials?.eventbriteEventId||\"\";\n      const attendanceButton=targetId===\"financePastEventsV463\"&&eventbriteId?\"<button type='button' class='secondary' data-finance-attendance-v509='\"+esc(eventbriteId)+\"' data-event-name='\"+esc(e.displayName||e.label||\"Past event\")+\"'>Attendance</button>\":\"\";\n      const nav=\"<div class='orbit-vendor-event-card-nav'><button type='button' data-vendor-event-open='\"+esc(e.key)+\"'>Open event</button>\"+(targetId===\"financePastEventsV463\"?\"<button type='button' class='secondary' data-vendor-archive-floorplan='\"+esc(e.key)+\"'>Floor plan</button>\":\"<button type='button' class='secondary' data-vendor-event-tool='planner' data-event-key='\"+esc(e.key)+\"'>Floor plan</button>\")+\"\"+(!isPast?\"<button type='button' class='secondary' data-vendor-event-tool='briefings' data-event-key='\"+esc(e.key)+\"'>Briefing</button>\":\"\")+\"<button type='button' class='secondary' data-vendor-event-finance='\"+esc(e.key)+\"'>Financial report</button><button type='button' class='secondary' data-vendor-event-tool='documents' data-event-key='\"+esc(e.key)+\"'>Documents</button>\"+attendanceButton+\"</div>\";\n      return \"<article class='orbit-panel orbit-vendor-event-card orbit-vendor-event-summary' data-vendor-event-card data-vendor-search='\"+esc(search)+\"'><div><p class='orbit-kicker'>\"+esc(vendorDateV385(e.eventDate))+(e.eventEndDate?\" \u2013 \"+esc(vendorDateV385(e.eventEndDate)):\"\")+\"</p><h3>\"+esc(e.displayName||e.label||\"Uncategorised event\")+\"</h3><p>\"+Number(e.customers||0)+\" vendors \u00B7 \"+Number(e.tables||0)+\" tables \u00B7 \"+Number(e.displayCases||0)+\" display cases \u00B7 \"+esc(vendorMoneyV384(e.sales))+\" vendor income</p>\"+(e.venue?.name?\"<small>\"+esc(e.venue.name)+\"</small>\":\"\")+\"</div>\"+liveOps+financialLine+nav+\"</article>\";\n    }).join(\"\");\n    applyVendorEventSearchV398(targetId,searchInputId||(targetId===\"vendorLiveEvents\"?\"vendorLiveEventSearch\":\"vendorPastEventSearch\"));\n  }\n  function populateVendorEventSelectorsV398(events){\n    const rows=(events||[]).filter(e=>e&&e.key);\n    const options=\"<option value=''>Select event</option>\"+rows.map(e=>\"<option value='\"+esc(e.key)+\"' data-label='\"+esc(e.displayName||e.label||\"\")+\"' data-date='\"+esc(vendorDateInputV388(e.eventDate))+\"'>\"+esc(e.displayName||e.label||\"Uncategorised event\")+(e.eventDate?\" \u00B7 \"+esc(vendorDateV385(e.eventDate)):\"\")+\"</option>\").join(\"\");\n    [\"vendorCompEvent\",\"vendorTransferEvent\",\"vendorBookingChangeEventV492\",\"vendorPlannerEventSelect\",\"vendorBriefingEventSelect\"].forEach(id=>{const el=$(id);if(el){const previous=el.value;el.innerHTML=options;if(previous&&[...el.options].some(o=>o.value===previous))el.value=previous;}});\n    const all=(state.vendorWorkspace?.allEvents||rows).filter(e=>e&&e.key),allOptions=\"<option value=''>Select event</option>\"+all.map(e=>\"<option value='\"+esc(e.key)+\"'>\"+esc(e.displayName||e.label||\"Uncategorised event\")+\" \u00B7 \"+esc(vendorDateV385(e.eventDate))+\"</option>\").join(\"\");\n    const docs=$(\"vendorDocumentsEventSelect\");if(docs){const previous=docs.value;docs.innerHTML=allOptions;if(previous&&[...docs.options].some(o=>o.value===previous))docs.value=previous;}\n  }\n  function selectedVendorEventV388(selectId){const select=$(selectId),option=select?.selectedOptions?.[0];return {key:select?.value||\"\",label:option?.dataset?.label||option?.textContent||\"\",date:option?.dataset?.date||\"\"};}\n  function renderVendorOrderHistoryV433(rows){\n    const target=$(\"vendorOrderHistoryTable\");if(!target)return;const orders=rows||[];state.vendorOrderHistory=orders;\n    const q=String($(\"vendorOrderHistorySearch\")?.value||\"\").trim().toLowerCase();\n    if(!orders.length){target.innerHTML=\"<p class='orbit-muted'>No stored Shopify order rows are available.</p>\";return;}\n    if(!q){target.innerHTML=\"<div class='orbit-info-banner'><strong>\"+Number(orders.length).toLocaleString(\"en-GB\")+\" historical Shopify rows available</strong><span>Use the search box above to load only the records you need.</span></div>\";return;}\n    const filtered=orders.filter(o=>[o.orderName,o.financialStatus,o.customer?.name,o.customer?.email,...(o.eventLabels||[])].filter(Boolean).join(\" \").toLowerCase().includes(q)).slice(0,100);\n    if(!filtered.length){target.innerHTML=\"<p class='orbit-muted'>No Shopify vendor orders match that search.</p>\";return;}\n    target.innerHTML=\"<div class='orbit-info-banner'><strong>\"+filtered.length+(filtered.length===100?\"+\":\"\")+\" matching row\"+(filtered.length===1?\"\":\"s\")+\"</strong><span>Only matching history is rendered to keep the Vendor workspace fast.</span></div><div class='orbit-table-wrap'><table><thead><tr><th>Order</th><th>Vendor</th><th>Matched event</th><th>Tables</th><th>Cases</th><th>Spend</th><th>Date</th><th></th></tr></thead><tbody>\"+filtered.map(o=>{const url=vendorOrderAdminUrl(o.shopifyOrderId);return \"<tr><td><strong>\"+esc(o.orderName||\"\u2014\")+\"</strong><small>\"+esc(o.financialStatus||\"\")+\"</small></td><td>\"+esc(o.customer?.name||\"Unknown vendor\")+\"<small>\"+esc(o.customer?.email||\"\")+\"</small></td><td>\"+esc((o.eventLabels||[]).join(\" \u00B7 \")||(o.unresolvedLines?\"Needs reconciliation\":\"Uncategorised\"))+\"</td><td>\"+Number(o.tables||0)+\"</td><td>\"+Number(o.displayCases||0)+\"</td><td>\"+esc(vendorMoneyV384(o.spend))+\"</td><td>\"+esc(o.createdAt?prettyDate(o.createdAt):\"\u2014\")+\"</td><td>\"+(url?\"<a class='orbit-button-link' target='_blank' rel='noopener' href='\"+esc(url)+\"'>View Shopify \u2197</a>\":\"\")+\"</td></tr>\";}).join(\"\")+\"</tbody></table></div>\";\n  }\n  function renderVendorOrderHistoryV398(rows){renderVendorOrderHistoryV433(rows);}\n  function renderVendorVenuesV398(venues){\n    const target=$(\"vendorVenuesList\");if(!target)return;const rows=venues||[];state.vendorVenues=rows;\n    if(!rows.length){target.innerHTML=\"<article class='orbit-panel'><h3>No venues yet</h3><p class='orbit-muted'>Add the venues you use regularly so future events inherit access information, hire costs and floor-plan defaults.</p></article>\";return;}\n    target.innerHTML=rows.map(v=>\"<article class='orbit-panel orbit-vendor-venue-card'><p class='orbit-kicker'>\"+(v.source===\"eventbrite\"?\"Imported venue\":\"Venue\")+\"</p><h3>\"+esc(v.name)+\"</h3><p>\"+esc([v.address,v.postcode].filter(Boolean).join(\", \")||\"Address not added\")+\"</p>\"+(v.source===\"eventbrite\"?\"<small class='orbit-vendor-source-note'>Eventbrite \u00B7 \"+Number((v.eventbriteEventIds||[]).length)+\" linked event\"+(Number((v.eventbriteEventIds||[]).length)===1?\"\":\"s\")+(v.manualEditedAt?\" \u00B7 manually enriched\":\" \u00B7 ready to enrich\")+\"</small>\":\"\")+\"<div class='orbit-vendor-venue-facts'><span>Setup <strong>\"+esc(v.defaultSetupTime||\"\u2014\")+\"</strong></span><span>Default hire <strong>\"+esc(vendorMoneyV384(v.defaultHireCost))+\"</strong></span><span>Floor plans <strong>\"+Number(v.floorPlanCount||0)+\"</strong></span></div><button type='button' class='secondary' data-vendor-venue-edit='\"+esc(v.id)+\"'>Open venue</button></article>\").join(\"\");\n  }\n  function renderVendorReconciliationV398(rows){\n    const target=$(\"vendorReconciliationList\");if(!target)return;const items=rows||[];state.vendorReconciliation=items;\n    if($(\"vendorReconcileCount\"))$(\"vendorReconcileCount\").textContent=Number(items.length).toLocaleString(\"en-GB\");\n    if(!items.length){target.innerHTML=\"<div class='orbit-info-banner success'><strong>Everything confidently assigned</strong><span>No Shopify lines currently need manual event reconciliation.</span></div>\";return;}\n    const options=(state.vendorWorkspace?.allEvents||[]).map(e=>\"<option value='\"+esc(e.key)+\"' data-label='\"+esc(e.displayName||e.label||\"\")+\"' data-date='\"+esc(vendorDateInputV388(e.eventDate))+\"'>\"+esc(e.displayName||e.label||\"\")+\" \u00B7 \"+esc(vendorDateV385(e.eventDate))+\"</option>\").join(\"\");\n    target.innerHTML=\"<div class='orbit-vendor-reconcile-list'>\"+items.map(r=>\"<article class='orbit-panel orbit-vendor-reconcile-row' data-reconcile-id='\"+esc(r.id)+\"'><div><p class='orbit-kicker'>\"+esc(vendorLineLabel(r))+\" \u00B7 \"+esc(r.orderName||r.shopifyOrderId)+\"</p><h3>\"+esc(r.customer?.name||\"Unknown vendor\")+\"</h3><p>\"+esc(r.reason||\"Needs event confirmation\")+\" \u00B7 \"+Number(r.lineQuantity||0)+\" item(s) \u00B7 \"+esc(vendorMoneyV384(r.sales))+\"</p></div><select data-reconcile-event><option value=''>Choose the correct event\u2026</option>\"+options+\"</select><button type='button' data-vendor-reconcile-save='\"+esc(r.id)+\"'>Confirm event</button></article>\").join(\"\")+\"</div>\";\n  }\n\n  function vendorPaneRequestNameV453(pane){return ({reconcile:'reconcile',merge:'merge',shopify:'shopify',rules:'rules',briefings:'live',documents:'past'}[pane]||pane||'customers');}\n  function appendVendorPagerV453(targetId,pageInfo,pane){const target=$(targetId);if(!target||!pageInfo||Number(pageInfo.pages||1)<=1)return;const wrap=document.createElement('div');wrap.className='orbit-vendor-pagination-v453';wrap.innerHTML=\"<button type='button' class='secondary' data-vendor-page='\"+Math.max(1,Number(pageInfo.page)-1)+\"' \"+(Number(pageInfo.page)<=1?'disabled':'')+\">Previous</button><span>Page \"+Number(pageInfo.page)+\" of \"+Number(pageInfo.pages)+\" \u00B7 \"+Number(pageInfo.total).toLocaleString('en-GB')+\" records</span><button type='button' class='secondary' data-vendor-page='\"+(Number(pageInfo.page)+1)+\"' \"+(Number(pageInfo.page)>=Number(pageInfo.pages)?'disabled':'')+\">Next</button>\";target.appendChild(wrap);wrap.querySelectorAll('[data-vendor-page]').forEach(btn=>btn.addEventListener('click',()=>loadVendorWorkspaceV398(null,false,false,pane,Number(btn.dataset.vendorPage))));}\n  function setVendorTaskBadgeV690(element,rawCount){const numeric=Number(rawCount),count=Number.isFinite(numeric)?Math.max(0,Math.trunc(numeric)):0;if(!element)return count;const visible=count>0;element.textContent=count.toLocaleString('en-GB');element.hidden=!visible;element.setAttribute('aria-hidden',String(!visible));if(visible)element.style.removeProperty('display');else element.style.setProperty('display','none','important');element.closest('button')?.classList.toggle('has-count',visible);return count;}\n  function applyVendorTaskCountsV461(payload={}){setVendorTaskBadgeV690($(\"vendorMergeTaskCount\"),payload.possibleDuplicateRows);setVendorTaskBadgeV690($(\"vendorReconciliationTaskCount\"),payload.reconciliationRows);}\n  async function exportVendorCustomersV530(button){\n    if(button)setLoading(button,true);\n    try{\n      const data=await api(\"/api/admin/vendors/customers/export\",{cacheMs:0,timeoutMs:30000});\n      const rows=Array.isArray(data.rows)?data.rows:[];\n      const lines=[\"First Name,Last Name,Email address\"].concat(rows.map(row=>[row.firstName,row.lastName,row.email].map(csvCellV48304).join(\",\")));\n      const blob=new Blob([\"\\ufeff\"+lines.join(\"\\r\\n\")],{type:\"text/csv;charset=utf-8\"}),url=URL.createObjectURL(blob),a=document.createElement(\"a\");\n      a.href=url;a.download=\"orbit-vendor-customers-\"+new Date().toISOString().slice(0,10)+\".csv\";document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),1000);\n      setNotice(\"Vendor customer CSV exported: \"+rows.length+\" customer\"+(rows.length===1?\"\":\"s\")+\".\");\n    }finally{if(button)setLoading(button,false);}\n  }\n\n  async function loadVendorTaskCountsV461(attempt=0){try{const data=await api('/api/admin/vendors/workspace-metrics',{cacheMs:0,timeoutMs:8000});applyVendorTaskCountsV461(data);if(!data.ready&&attempt<20)setTimeout(()=>loadVendorTaskCountsV461(attempt+1).catch(()=>{}),3000);return data;}catch(error){if(attempt<20)setTimeout(()=>loadVendorTaskCountsV461(attempt+1).catch(()=>{}),3000);throw error;}}\n  function renderFinancePastEventsV465(events=[]){\n    const target=$(\"financePastEventsV463\"),summary=$(\"financeOverviewSummaryV463\"),rows=events||[];if(!target)return;\n    state.financePastEventsV464=rows;\n    const metaUnknown=rows.some(e=>e.finance?.metaAccounting?.status===\"unavailable\");\n    const income=rows.reduce((n,e)=>n+Number(e?.finance?.totalIncome||e?.sales||0),0),costs=rows.reduce((n,e)=>{const eventIncome=Number(e?.finance?.totalIncome||e?.sales||0),tax=Number(e?.finance?.tax??(eventIncome*0.20));return n+Number(e?.finance?.expenses?.total||0)+tax;},0),profit=rows.reduce((n,e)=>n+Number(e?.finance?.profit||0),0);\n    if(summary){\n      const profitClass=Number(profit)<0?\"loss\":\"profit\";\n      summary.innerHTML=\"<article class='income'><span>Income</span><strong>\"+esc(vendorMoneyV384(income))+\"</strong></article>\"+\n        \"<article class='costs'><span>Costs</span><strong>\"+(metaUnknown?\"\u2014\":esc(vendorMoneyV384(costs)))+\"</strong></article>\"+\n        \"<article class='\"+profitClass+\"'><span>P&amp;L</span><strong>\"+(metaUnknown?\"\u2014\":esc(vendorMoneyV384(profit)))+\"</strong></article>\";\n      summary.dataset.eventCount=String(rows.length);\n      summary.title=rows.length+\" past event\"+(rows.length===1?\"\":\"s\")+\" loaded from Orbit\";\n    }\n    if(!rows.length){target.innerHTML=\"<div class='orbit-empty-state'><strong>No past events yet</strong><span>Past Vendor events will appear here automatically.</span></div>\";return;}\n    /* Finance deliberately uses the canonical Vendor event renderer so identity,\n       actions and financial presentation cannot drift between the two workspaces. */\n    renderVendorEventsV398(\"financePastEventsV463\",rows,\"financePastEventSearchV463\");\n  }\n  function renderFinancePastEventsV464(events=[]){return renderFinancePastEventsV465(events);}\n  function financeReadStatusV539(message,kind=\"warning\"){\n    // V571 NOTE-6B7435F320: keep the Finance header clean. The large blue\n    // accounting banner is retired; actionable warnings use the single compact\n    // global status surface instead.\n    const target=$(\"financeAccountingStatusV539\");if(target){target.hidden=true;target.textContent=\"\";target.className=\"orbit-info-banner\";}\n    if(message&&kind===\"warning\")setNotice(\"Finance: \"+message,false);\n    if(message&&kind===\"error\")setNotice(\"Finance: \"+message,true);\n  }\n  async function loadFinanceWorkspaceV464(button,forceRefresh=false){\n    if(button)setLoading(button,true);\n    try{\n      const includeFinancials=forceRefresh===true;\n      const data=await api(\"/api/admin/vendors/workspace?pane=past&page=1&limit=50&financials=\"+(includeFinancials?\"true\":\"false\")+(forceRefresh?\"&refresh=1\":\"\"),{timeoutMs:forceRefresh?30000:15000,cacheMs:0});\n      state.vendorWorkspace={...(state.vendorWorkspace||{}),...data};\n      renderFinancePastEventsV464(data.pastEvents||[]);\n      const meta=data.diagnostics?.metaAccounting||{status:\"current\"};\n      const savedAt=meta.asOf?\" Snapshot saved \"+prettyDate(meta.asOf)+\".\":\"\";\n      if(meta.status===\"saved\")financeReadStatusV539((meta.warning||\"Showing the last complete stored advertising snapshot while accounting refresh is in progress.\")+savedAt+\" Figures will stay fixed until you choose Refresh report.\",\"info\");\n      else if(meta.status===\"unavailable\")financeReadStatusV539((meta.warning||\"Advertising accounting is temporarily unavailable.\")+savedAt+\" Stored figures will not auto-refresh. Use Refresh report or Retry loading when you want to check again.\",\"warning\");\n      else financeReadStatusV539(\"\");\n      return data;\n    }catch(error){\n      financeReadStatusV539(\"Finance could not refresh: \"+(error.message||\"connection unavailable\")+\". \"+(state.financePastEventsV464?\"Previously loaded figures are unchanged and may be out of date. \":\"\")+\"Use Retry loading to try again.\",\"error\");\n      if(!state.financePastEventsV464){\n        const target=$(\"financePastEventsV463\"),summary=$(\"financeOverviewSummaryV463\");\n        if(target)target.innerHTML=\"<div class='orbit-empty-state'><strong>Finance could not load</strong><span>Retry loading. No zero totals or partial advertising report have been substituted.</span></div>\";\n        if(summary)summary.innerHTML=\"<article><span>Income</span><strong>\u2014</strong></article><article><span>Costs</span><strong>\u2014</strong></article><article><span>P&amp;L</span><strong>\u2014</strong></article>\";\n      }\n      throw error;\n    }finally{if(button)setLoading(button,false);}\n  }\n  $(\"financeRetryReadV539\")?.addEventListener(\"click\",e=>loadFinanceWorkspaceV464(e.currentTarget,false).catch(()=>{}));\n\n  async function loadVendorWorkspaceV398(button,includeFinancials=false,forceRefresh=false,paneOverride=null,page=1){\n    const pane=paneOverride||state.currentVendorPane||'customers';if(['sponsorships','sandbox','growth','competitions','vendor-shop','flyer-studio'].includes(pane))return null;\n    if(button)setLoading(button,true);const diagnostics=$(\"vendorWorkspaceDiagnostics\");\n    if(diagnostics&&pane==='shopify')diagnostics.textContent=\"Loading lightweight \"+pane+\" Vendor data from Orbit\u2026\";\n    try{\n      const requestPane=vendorPaneRequestNameV453(pane),searchId=pane===\"customers\"?\"vendorCustomerSearch\":(pane===\"shopify\"?\"vendorOrderHistorySearch\":(pane===\"reconcile\"?\"vendorReconciliationSearch\":\"\")),q=searchId?String($(searchId)?.value||\"\").trim():\"\",customerSort=state.vendorCustomerSortV414||{key:\"spend\",dir:\"desc\"},sortQuery=pane===\"customers\"?(\"&sortKey=\"+encodeURIComponent(customerSort.key)+\"&sortDir=\"+encodeURIComponent(customerSort.dir)):\"\",url=\"/api/admin/vendors/workspace?pane=\"+encodeURIComponent(requestPane)+\"&page=\"+encodeURIComponent(page)+\"&limit=50\"+sortQuery+(q?\"&q=\"+encodeURIComponent(q):\"\")+(includeFinancials?\"&financials=true\":\"\")+(forceRefresh?\"&refresh=1\":\"\");\n      const workspaceResponse=await api(url,{timeoutMs:includeFinancials?45000:15000,cacheMs:forceRefresh?0:10000});\n      $(\"vendorLoadFailureV540-\"+pane)?.remove();\n      state.vendorPaneLoadedV540=state.vendorPaneLoadedV540||{};state.vendorPaneLoadedV540[pane]=true;\n      state.vendorWorkspace={...(state.vendorWorkspace||{}),...workspaceResponse};state.vendorVenues=workspaceResponse.venues||state.vendorVenues||[];if(workspaceResponse.bookings)state.vendorBookings=workspaceResponse.bookings;\n      if(pane==='customers'){renderVendorCustomersV398(workspaceResponse.customers||[]);appendVendorPagerV453('vendorCustomersTable',workspaceResponse.customerPage,pane);}\n      if(pane==='merge'){renderVendorDuplicateSuggestionsV398(workspaceResponse.possibleDuplicates||[]);}\n      if(pane==='live'||pane==='briefings'){renderVendorEventsV398('vendorLiveEvents',workspaceResponse.liveEvents||[]);populateVendorEventSelectorsV398(workspaceResponse.liveEvents||[]);}\n      if(pane==='past'||pane==='documents'){renderVendorEventsV398('vendorPastEvents',workspaceResponse.pastEvents||[]);}\n      if(pane==='venues'){renderVendorVenuesV398(workspaceResponse.venues||[]);loadVendorFloorPlansV401().then(()=>{populateVendorFloorPlanSelectV401();}).catch(()=>{});}\n      if(pane==='rules')setVendorRichEditorV421('vendorGlobalRules',workspaceResponse.globalSettings?.globalRulesHtml,workspaceResponse.globalSettings?.globalRules);\n      if(pane==='reconcile'){renderVendorReconciliationV398(workspaceResponse.reconciliation||[]);appendVendorPagerV453('vendorReconciliationList',workspaceResponse.reconciliationPage,pane);}\n      if(pane==='shopify'){renderVendorOrderHistoryV398(workspaceResponse.orderHistory||[]);appendVendorPagerV453('vendorOrderHistoryTable',workspaceResponse.orderHistoryPage,pane);}\n      if(pane==='planner'){populateVendorEventSelectorsV398(workspaceResponse.liveEvents||[]);loadVendorFloorPlansV401().then(()=>populateVendorFloorPlanSelectV401()).catch(()=>{});}\n      const ov=workspaceResponse.overview||{},vd=workspaceResponse.diagnostics||{};\n      // V501.0.7: the Global Rules pane intentionally returns settings only.\n      // Do not replace already-loaded Vendor overview/task figures with zeroes\n      // merely because this lightweight pane omits the full workspace payload.\n      if(pane!=='rules'){\n        applyVendorTaskCountsV461({possibleDuplicateRows:Number(workspaceResponse.diagnostics?.possibleDuplicateRows??(workspaceResponse.possibleDuplicates||[]).length),reconciliationRows:Number(workspaceResponse.reconciliationPage?.total??workspaceResponse.diagnostics?.reconciliationRows??0)});\n        const reconcileTotal=Number(workspaceResponse.reconciliationRows||ov.reconciliationRows||vd.reconciliationRows||0);if($(\"vendorOrderCount\"))$(\"vendorOrderCount\").textContent=Number(ov.totalOrders||vd.sourceOrders||0).toLocaleString('en-GB');if($(\"vendorGrossSales\"))$(\"vendorGrossSales\").textContent=vendorMoneyV384(ov.grossSales);if($(\"vendorCustomerCount\"))$(\"vendorCustomerCount\").textContent=Number(ov.uniqueCustomers||workspaceResponse.customerPage?.total||vd.customerRows||0).toLocaleString('en-GB');if($(\"vendorReconcileCount\"))$(\"vendorReconcileCount\").textContent=reconcileTotal.toLocaleString('en-GB');\n        renderVendorSyncHeaderV497(ov);\n      }\n      if(pane==='shopify'){\n        const syncText=vendorSyncTextV384(ov.sync,ov.totalOrders),oldestVendorOrder=ov.earliestOrderAt?new Date(ov.earliestOrderAt).toLocaleDateString(\"en-GB\",{day:\"2-digit\",month:\"short\",year:\"numeric\"}):\"Not available\";if($(\"vendorSyncSummary\"))$(\"vendorSyncSummary\").textContent=syncText+\" \u00B7 Background incremental refresh runs every 5 minutes.\";if($(\"vendorHistoryStatus\"))$(\"vendorHistoryStatus\").innerHTML=\"<h3>Orbit vendor archive</h3><p>\"+esc(syncText)+\"</p><p><strong>Automatic refresh:</strong> every 5 minutes in the background \u00B7 <strong>Orders stored:</strong> \"+Number(ov.totalOrders||0).toLocaleString('en-GB')+\" \u00B7 <strong>Oldest stored order:</strong> \"+esc(oldestVendorOrder)+\" \u00B7 <strong>Recorded sales:</strong> \"+esc(vendorMoneyV384(ov.grossSales))+\" \u00B7 <strong>Customers:</strong> \"+Number(ov.uniqueCustomers||0).toLocaleString('en-GB')+\"</p>\";const c=$(\"vendorShopifyConnection\");if(c)c.innerHTML=\"<strong>Stored archive ready</strong><span>Background incremental Shopify refresh runs every 5 minutes. Normal page load still reads Orbit Mongo only.</span>\";const n=$(\"vendorConnectionNotice\");if(n){n.className='orbit-info-banner success';n.innerHTML=\"<strong>Automatic Vendor refresh active</strong><span>Orbit refreshes new/changed Shopify Vendor data in the background every 5 minutes without making this page wait on Shopify.</span>\";}}\n      if(diagnostics&&pane==='shopify')diagnostics.textContent=\"Loaded \"+pane+\" pane \u00B7 \"+Number(vd.requestElapsedMs||0).toLocaleString('en-GB')+\"ms server time \u00B7 payload: \"+Number(vd.customerPayload||0)+\" customers / \"+Number(vd.eventPayload||0)+\" events / \"+Number(vd.historyPayload||0)+\" history rows.\";\n      if(state.currentVendorEventKey){const fresh=(workspaceResponse.allEvents||[]).find(x=>x.key===state.currentVendorEventKey);if(fresh){state.currentVendorEvent=fresh;renderVendorEventDetailV398(fresh);}}\n      return workspaceResponse;\n    }catch(error){\n      if(diagnostics&&pane==='shopify')diagnostics.textContent=\"Vendor pane failed to load: \"+(error.message||String(error));\n      const target=$(pane==='live'||pane==='briefings'?'vendorLiveEvents':pane==='past'?'vendorPastEvents':pane==='customers'?'vendorCustomersTable':'');\n      if(target){$(\"vendorLoadFailureV540-\"+pane)?.remove();const message='<div id=\"vendorLoadFailureV540-'+esc(pane)+'\" class=\"orbit-notice error\" role=\"status\"><strong>Vendor data could not load.</strong><p>'+esc(error.message||String(error))+'</p><button type=\"button\" data-vendor-retry-v540=\"'+esc(pane)+'\">Retry loading</button></div>';if(state.vendorPaneLoadedV540?.[pane])target.insertAdjacentHTML('afterbegin',message);else target.innerHTML=message;target.querySelector('[data-vendor-retry-v540]')?.addEventListener('click',e=>loadVendorWorkspaceV398(e.currentTarget,false,true,pane,page).catch(()=>{}));}\n      throw error;\n    }finally{if(button)setLoading(button,false);}\n  }\n  function renderVendorSyncHeaderV497(overview={}){\n    const target=$(\"vendorHeaderSyncStatusV497\");if(!target)return;\n    const sync=overview.sync||{},total=Number(overview.totalOrders||0),running=sync.status===\"running\",failed=sync.status===\"failed\";\n    const last=sync.lastSuccessfulAt||sync.completedAt||sync.updatedAt||null;\n    target.className=\"orbit-vendor-header-sync-v497 \"+(failed?\"warning\":running?\"running\":\"success\");\n    target.innerHTML=\"<strong>\"+(running?\"Shopify sync running\":failed?\"Last sync needs attention\":\"Shopify auto-sync active\")+\"</strong><span>\"+total.toLocaleString(\"en-GB\")+\" order records \u00B7 automatic check every 5 minutes\"+(last?\" \u00B7 last completed \"+esc(prettyDate(last)):\"\")+\"</span>\";\n  }\n  async function waitForVendorSyncV497(previousCompletedAt,timeoutMs=30000){\n    const started=Date.now();let latest=null,sawRunning=false;\n    while(Date.now()-started<timeoutMs){\n      await new Promise(resolve=>setTimeout(resolve,900));\n      const data=await api(\"/api/admin/vendors/overview?orbit_vendor_sync_poll=\"+Date.now(),{cacheMs:0,timeoutMs:10000});latest=data;\n      renderVendorSyncHeaderV497(data||{});\n      const sync=data?.sync||{};\n      if(sync.status===\"running\"){sawRunning=true;continue;}\n      if(sync.status===\"failed\")throw new Error(sync.error||\"Vendor Shopify sync failed.\");\n      const completedAt=sync.lastSuccessfulAt||sync.completedAt||null;\n      if(sync.status===\"complete\"&&(sawRunning||!previousCompletedAt||completedAt!==previousCompletedAt))return data;\n    }\n    return latest;\n  }\n  async function startVendorHistoricalSyncV384(button){\n    if(button)setLoading(button,true);\n    const before=state.vendorWorkspace?.overview||{};\n    const beforeOrders=Number(before.totalOrders||0),beforeCompletedAt=before.sync?.lastSuccessfulAt||before.sync?.completedAt||null;\n    try{\n      const result=await api(\"/api/admin/vendors/shopify/sync\",{method:\"POST\",body:JSON.stringify({full:false})});\n      setNotice(result.alreadyRunning?\"Vendor Shopify sync is already running \u2014 waiting for the result.\":(result.mode===\"historical_backfill\"?\"Initial historical Vendor backfill started.\":\"Checking Shopify now. Automatic checks also run every 5 minutes.\"));\n      let after=null;\n      try{after=await waitForVendorSyncV497(beforeCompletedAt,30000);}catch(error){setNotice(error.message||String(error),true);throw error;}\n      await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");\n      const sync=after?.sync||state.vendorWorkspace?.overview?.sync||{},afterOrders=Number(after?.totalOrders??state.vendorWorkspace?.overview?.totalOrders??beforeOrders),delta=afterOrders-beforeOrders,orderUpdates=Number(sync.ordersImported||0),productUpdates=Number(sync.productsImported||0);\n      const outcome=delta>0?(\"Imported \"+delta.toLocaleString(\"en-GB\")+\" new order record\"+(delta===1?\"\":\"s\")+\".\"):(orderUpdates||productUpdates)?(\"No new order records, but Shopify returned \"+orderUpdates.toLocaleString(\"en-GB\")+\" changed order\"+(orderUpdates===1?\"\":\"s\")+\" and \"+productUpdates.toLocaleString(\"en-GB\")+\" changed product\"+(productUpdates===1?\"\":\"s\")+\".\"):\"Everything was already up to date \u2014 no new Vendor Shopify data found.\";\n      setNotice(outcome+\" Stored order records: \"+beforeOrders.toLocaleString(\"en-GB\")+\" \u2192 \"+afterOrders.toLocaleString(\"en-GB\")+\".\");\n      return {...result,completedSync:sync,beforeOrders,afterOrders};\n    }finally{if(button)setLoading(button,false);}\n  }\n  async function startVendorFullResyncV396(button){if(!confirm(\"Run a FULL Vendor Shopify resync? Normal operation does not need this. Use it only to repair the local archive.\"))return;setLoading(button,true);try{const result=await api(\"/api/admin/vendors/shopify/sync\",{method:\"POST\",body:JSON.stringify({full:true})});setNotice(result.alreadyRunning?\"Vendor Shopify sync is already running.\":\"Full Vendor Shopify repair resync started.\");await new Promise(resolve=>setTimeout(resolve,750));await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");return result;}finally{setLoading(button,false);}}\n\n  function openVendorTransferV385(button){$(\"vendorTransferOrderId\").value=button.dataset.orderId||\"\";$(\"vendorTransferLineId\").value=button.dataset.lineId||\"\";if($(\"vendorTransferAdjustmentId\"))$(\"vendorTransferAdjustmentId\").value=button.dataset.adjustmentId||\"\";$(\"vendorTransferEvent\").value=\"\";$(\"vendorTransferEventDate\").value=\"\";$(\"vendorTransferReason\").value=\"\";$(\"vendorTransferResult\").hidden=true;const preview=$(\"vendorTransferPricingPreview\");if(preview){preview.hidden=true;preview.textContent=\"\";preview.className=\"orbit-notice\";}$(\"vendorTransferDialog\")?.showModal();}\n  async function loadVendorTransferPricingV485(){const target=$(\"vendorTransferPricingPreview\"),adjustmentId=$(\"vendorTransferAdjustmentId\")?.value||\"\",ev=selectedVendorEventV388(\"vendorTransferEvent\");if(!target)return null;if(!ev.key){target.hidden=true;return null;}if(adjustmentId){target.hidden=false;target.className=\"orbit-notice\";target.innerHTML=\"<strong>Complimentary booking</strong><br>No paid source value is being carried. Transfer remains operational only.\";return null;}target.hidden=false;target.className=\"orbit-notice\";target.textContent=\"Calculating table-price difference\u2026\";try{const pricing=await api(\"/api/admin/vendors/bookings/transfer-preview\",{method:\"POST\",body:JSON.stringify({shopifyOrderId:$(\"vendorTransferOrderId\").value,lineItemId:$(\"vendorTransferLineId\").value,toEventKey:ev.key,toEventLabel:ev.label}),cacheMs:0});target.className=\"orbit-notice \"+(pricing.action===\"invoice_difference\"?\"warning\":\"success\");target.innerHTML=\"<strong>\"+esc(pricing.quantity)+\" table\"+(Number(pricing.quantity)===1?\"\":\"s\")+\" \u00B7 Existing booking value \"+(pricing.sourceBookingValue==null?\"unknown\":\"\u00A3\"+Number(pricing.sourceBookingValue).toFixed(2))+\" \u00B7 Destination \"+(pricing.destinationBookingValue==null?\"price not set\":\"\u00A3\"+Number(pricing.destinationBookingValue).toFixed(2))+\"</strong><br>\"+esc(pricing.message||\"\");return pricing;}catch(err){target.className=\"orbit-notice warning\";target.textContent=err.message||String(err);return null;}}\n  async function saveVendorTransferV385(button){setLoading(button,true);try{const ev=selectedVendorEventV388(\"vendorTransferEvent\");if(!ev.key)throw new Error(\"Select a destination event.\");const adjustmentId=$(\"vendorTransferAdjustmentId\")?.value||\"\";if(!adjustmentId)await loadVendorTransferPricingV485();const payload={shopifyOrderId:$(\"vendorTransferOrderId\").value,lineItemId:$(\"vendorTransferLineId\").value,toEventKey:ev.key,toEventLabel:ev.label,toEventDate:ev.date||null,reason:$(\"vendorTransferReason\").value},result=adjustmentId?await api(\"/api/admin/vendors/bookings/complimentary-action\",{method:\"POST\",body:JSON.stringify({...payload,adjustmentId,action:\"transfer\"})}):await api(\"/api/admin/vendors/bookings/transfer\",{method:\"POST\",body:JSON.stringify(payload)});$(\"vendorTransferResult\").hidden=false;const pricing=result?.transferPricing;$(\"vendorTransferResult\").textContent=pricing?.message?(\"Transfer saved. \"+pricing.message+\" Shopify source order remains unchanged.\"):\"Transfer saved. Shopify source order remains unchanged.\";setNotice(pricing?.action===\"invoice_difference\"?\"Vendor transferred \u2014 \"+pricing.message:\"Vendor booking transferred operationally.\");await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setTimeout(()=>$(\"vendorTransferDialog\")?.close(),900);return result;}finally{setLoading(button,false);}}\n  async function saveVendorComplimentaryV385(button){setLoading(button,true);try{const ev=selectedVendorEventV388(\"vendorCompEvent\");if(!ev.key)throw new Error(\"Select an event.\");const result=await api(\"/api/admin/vendors/bookings/complimentary\",{method:\"POST\",body:JSON.stringify({customerKey:state.vendorCompSelectedCustomerV509?.key||null,customerName:$(\"vendorCompName\").value,email:$(\"vendorCompEmail\").value,eventKey:ev.key,eventLabel:ev.label,eventDate:ev.date||null,quantity:Number($(\"vendorCompQuantity\").value||1),notes:$(\"vendorCompNotes\").value,awardVendorClubPoints:$(\"vendorCompAwardClubPointsV620\")?.checked===true})});$(\"vendorCompResult\").hidden=false;$(\"vendorCompResult\").textContent=\"Manual booking added.\";setNotice(\"Manual vendor table added.\");await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setTimeout(()=>$(\"vendorComplimentaryDialog\")?.close(),600);return result;}finally{setLoading(button,false);}}\n  function openVendorMergeV409(keysOverride=null,rowsOverride=null){\n    let keys=Array.isArray(keysOverride)?keysOverride.filter(Boolean):selectedVendorCustomerKeysV390();\n    const suppliedRows=Array.isArray(rowsOverride)?rowsOverride.filter(Boolean):[];\n    if(!keys.length&&suppliedRows.length)keys=suppliedRows.map(c=>c.key).filter(Boolean);\n    const rows=suppliedRows.length?suppliedRows.filter(c=>keys.includes(c.key)):(state.vendorCustomers||[]).filter(c=>keys.includes(c.key));\n    if(keys.length<2||rows.length<2){setNotice(\"Select at least two customer records to review and merge.\",true);return;}\n    state.vendorMergeKeys=keys;\n    const selection=$(\"vendorMergeSelection\");\n    if(selection)selection.innerHTML=rows.map(c=>{const orders=(c.orderIds||[]).map(id=>{const url=vendorOrderAdminUrl(id);return url?\"<a href='\"+esc(url)+\"' target='_blank' rel='noopener'>#\"+esc(String(id).match(/(\\d+)$/)?.[1]||id)+\" \u2197</a>\":\"<span>#\"+esc(id)+\"</span>\";}).join(\" \")||\"<span>No Shopify order IDs</span>\";return \"<div class='orbit-vendor-merge-candidate'><strong>\"+esc(c.name||\"Unknown vendor\")+\"</strong><span>\"+esc(c.email||\"No email\")+(c.phone?\" \u00B7 \"+esc(c.phone):\"\")+\"</span><small>\"+Number(c.orders||0)+\" orders \u00B7 \"+Number(c.events||0)+\" shows \u00B7 \"+Number(c.tables||0)+\" tables \u00B7 \"+vendorMoneyV384(c.spend||0)+\"</small><div class='orbit-vendor-merge-orders'>Orders: \"+orders+\"</div></div>\";}).join(\"\");\n    $(\"vendorMergeName\").value=rows[0]?.name||\"\";if($(\"vendorMergeEmail\"))$(\"vendorMergeEmail\").value=rows[0]?.email||\"\";$(\"vendorMergeResult\").hidden=true;$(\"vendorCustomerMergeDialog\")?.showModal();\n  }\n  async function saveVendorMergeV390(button){setLoading(button,true);try{const memberKeys=state.vendorMergeKeys?.length?state.vendorMergeKeys:selectedVendorCustomerKeysV390(),canonicalName=$(\"vendorMergeName\").value.trim();if(memberKeys.length<2)throw new Error(\"Select at least two customers.\");const result=await api(\"/api/admin/vendors/customers/merge\",{method:\"POST\",body:JSON.stringify({memberKeys,canonicalName,preferredEmail:$(\"vendorMergeEmail\")?.value||\"\"})});$(\"vendorMergeResult\").hidden=false;$(\"vendorMergeResult\").textContent=\"Customer records merged successfully. Shopify orders were not changed.\";setNotice(\"Vendor customer records merged successfully.\");state.vendorMergeKeys=[];setTimeout(()=>$(\"vendorCustomerMergeDialog\")?.close(),450);loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||'customers').catch(err=>setNotice(\"Merge saved, but Vendor workspace refresh failed: \"+(err.message||err),true));return result;}finally{setLoading(button,false);}}\n\n  function vendorBookingActionButtonsV398(b){\n    if(b.vendorClubBookingId)return vendorManagedButtonsV639(b);\n    const url=vendorOrderAdminUrl(b.shopifyOrderId),parts=[],attrs=b.type===\"complimentary\"?\" data-adjustment-id='\"+esc(b.adjustmentId||\"\")+\"'\":\" data-order-id='\"+esc(b.shopifyOrderId||\"\")+\"' data-line-id='\"+esc(b.lineItemId||\"\")+\"'\";\n    if(url)parts.push(\"<a class='orbit-button-link' target='_blank' rel='noopener' href='\"+esc(url)+\"'>View order \u2197</a>\");\n    if(b.lineKind===\"table\"&&(b.type===\"shopify\"||b.type===\"complimentary\")){\n      parts.push(\"<button type='button' class='secondary' data-vendor-transfer\"+attrs+\">Transfer</button>\");\n      if(!b.operationalCancelled)parts.push(\"<button type='button' class='secondary' data-vendor-cancel-booking\"+attrs+\">Cancel</button>\");\n      parts.push(\"<button type='button' class='secondary' data-vendor-substitute-booking\"+attrs+\">Change attending vendor</button>\");\n      parts.push(\"<button type='button' class='secondary' data-vendor-add-display-case\"+attrs+\">Add display case</button>\");\n      if(b.type===\"complimentary\")parts.push(\"<button type='button' class='secondary' data-vendor-complimentary-email\"+attrs+\" data-current-email='\"+esc(b.customer?.email||\"\")+\"'>\"+(b.customer?.email?\"Edit email\":\"Add email\")+\"</button>\");\n    }\n    return parts.join(\" \");\n  }\n  function groupedEventBookingsV398(event){\n    const map=new Map();for(const b of event?.bookings||[]){if(b.operationalCancelled)continue;const attending=b.attendingVendor||b.customer||{};const key=b.customer?.key||attending.email||attending.name||\"unknown\";const customer={...attending,key};const g=map.get(key)||{customer,purchaser:b.attendingVendor?b.customer:null,tables:0,displayCases:0,spend:0,orders:new Set(),rows:[]};g.tables+=Number(b.quantity||0);g.displayCases+=Number(b.displayCases||0);g.spend+=Number(b.sales||0);if(b.orderName)g.orders.add(b.orderName);g.rows.push(b);map.set(key,g);}return [...map.values()].map(g=>({...g,orders:[...g.orders]}));\n  }\n  function renderVendorEventBookingsV398(event){\n    const target=$(\"vendorEventBookingsTable\");if(!target)return;const groups=groupedEventBookingsV398(event),q=String($(\"vendorEventBookingSearch\")?.value||\"\").trim().toLowerCase();\n    const rows=groups.filter(g=>!q||[g.customer?.businessName,g.customer?.name,g.customer?.email,...g.orders].filter(Boolean).join(\" \").toLowerCase().includes(q));\n    if(!rows.length){target.innerHTML=\"<p class='orbit-muted'>No matching vendor bookings.</p>\";return;}\n    target.innerHTML=\"<div class='orbit-table-wrap'><table><thead><tr><th>Vendor</th><th>Orders</th><th>Tables</th><th>Cases</th><th>Spend</th><th>Actions</th></tr></thead><tbody>\"+rows.map((g,index)=>{\n      const orderRows=[...new Map(g.rows.filter(x=>x.shopifyOrderId&&x.orderName).map(x=>[x.shopifyOrderId,x])).values()].sort((a,b)=>{const na=Number(String(a.orderName||\"\").replace(/\\D/g,\"\"))||0,nb=Number(String(b.orderName||\"\").replace(/\\D/g,\"\"))||0;return na-nb||String(a.orderName||\"\").localeCompare(String(b.orderName||\"\"));});\n      const orderLinks=orderRows.map(x=>{const url=vendorOrderAdminUrl(x.shopifyOrderId);return url?\"<a target='_blank' rel='noopener' href='\"+esc(url)+\"'>\"+esc(x.orderName)+\" \u2197</a>\":esc(x.orderName);}).join(\" \u00B7 \")||\"Complimentary\";\n      const actionable=g.rows.filter(x=>!x.vendorClubBookingId&&x.lineKind===\"table\"&&(x.type===\"shopify\"||x.type===\"complimentary\"));\n      const managedActions=g.rows.filter(x=>x.vendorClubBookingId).map(vendorManagedButtonsV639).join(\"\");\n      const actions=managedActions+\"<div class='orbit-vendor-booking-actions-v457'><button type='button' class='secondary' data-vendor-customer-view='\"+esc(g.customer?.key||\"\")+\"'>Customer</button>\"+(event?.state!==\"past\"?\"<button type='button' class='secondary' data-vendor-send-info='\"+esc(g.customer?.key||\"\")+\"'>Send info</button>\":\"\")+(actionable.length?\"<span class='orbit-vendor-table-adjust'><button type='button' class='secondary' data-vendor-group-action='remove-table' data-group-index='\"+index+\"' aria-label='Remove one table'>\u2212</button><strong>\"+Number(g.tables||0)+\" tables</strong><button type='button' class='secondary' data-vendor-group-action='add-table' data-group-index='\"+index+\"' aria-label='Add one table'>+</button></span><button type='button' class='secondary' data-vendor-group-action='transfer' data-group-index='\"+index+\"'>Transfer</button><button type='button' class='secondary' data-vendor-group-action='cancel' data-group-index='\"+index+\"'>Cancel</button><button type='button' class='secondary' data-vendor-group-action='substitute' data-group-index='\"+index+\"'>Change attending vendor</button><button type='button' class='secondary' data-vendor-group-action='display-case' data-group-index='\"+index+\"'>Add display case</button>\":\"\")+\"</div>\";\n      const displayName=g.customer?.businessName||g.customer?.name||\"Unknown vendor\",bookingName=g.customer?.businessName&&g.customer?.name&&g.customer.name!==g.customer.businessName?g.customer.name:null;\n      return \"<tr><td><strong>\"+esc(displayName)+\"</strong>\"+(bookingName?\"<small>Booking name: \"+esc(bookingName)+\"</small>\":\"\")+\"<small>\"+esc(g.customer?.email||\"\")+\"</small></td><td>\"+orderLinks+\"</td><td>\"+Number(g.tables||0)+\"</td><td>\"+Number(g.displayCases||0)+\"</td><td>\"+esc(vendorMoneyV384(g.spend))+\"</td><td>\"+actions+\"</td></tr>\";\n    }).join(\"\")+\"</tbody></table></div>\";\n    state.vendorEventBookingGroups=rows;\n  }\n  function renderVendorEventFinanceV398(event){\n    const target=$(\"vendorEventFinanceSummary\");if(!target)return;const f=event.finance||{},sf=event.financials||{},metaUnknown=[\"unavailable\",\"not_requested\"].includes(f.metaAccounting?.status);\n    const totalIncome=Number(f.totalIncome??((f.vendorRevenue??event.sales??0)+(f.ticketRevenue??sf.orbitTicketRevenue??0)+(f.eventbriteRevenue??sf.eventbriteRevenue??0))),tax=Number(f.tax??(totalIncome*0.20)),costsIncludingTax=Number(f.expenses?.total||0)+tax;\n    target.innerHTML=\"<div><span>Vendor income</span><strong>\"+esc(vendorMoneyV384(f.vendorRevenue??event.sales))+\"</strong><small>Tables + cases + add-ons</small></div><div><span>Orbit ticket income</span><strong>\"+esc(vendorMoneyV384(f.ticketRevenue??sf.orbitTicketRevenue))+\"</strong><small>\"+Number(sf.orbitTickets||0)+\" paid tickets \u00B7 \"+Number(sf.memberTickets||0)+\" member tickets</small></div><div><span>Eventbrite ticket sales</span><strong>\"+esc(vendorMoneyV384(f.eventbriteRevenue??sf.eventbriteRevenue))+\"</strong><small>\"+Number(sf.eventbriteTickets||0)+\" tickets\"+(Number(sf.eventbriteAddOns||0)?\" \u00B7 \"+Number(sf.eventbriteAddOns)+\" add-ons\":\"\")+\"</small></div><div><span>Total costs</span><strong>\"+(metaUnknown?\"\u2014\":esc(vendorMoneyV384(costsIncludingTax)))+\"</strong><small>Includes \"+esc(vendorMoneyV384(tax))+\" tax</small></div><div class='orbit-vendor-profit-card'><span>Profit / loss</span><strong>\"+(metaUnknown?\"\u2014\":esc(vendorMoneyV384(f.profit)))+\"</strong></div>\"+(metaUnknown?\"<p class='orbit-info-banner'>Advertising is not loaded in this view. Total costs and profit are unavailable; use Finance for accounting.</p>\":f.metaAccounting?.status===\"saved\"?\"<p class='orbit-info-banner'>Advertising uses the last complete stored snapshot. It has not been refreshed.</p>\":\"\");\n    const expenses=$(\"vendorEventExpensesList\"),rows=(event.expenses||[]).filter(x=>x.active!==false);\n    if(expenses)expenses.innerHTML=rows.length?\"<div class='orbit-table-wrap'><table><thead><tr><th>Type</th><th>Supplier</th><th>Description</th><th>Amount</th><th></th></tr></thead><tbody>\"+rows.map(x=>\"<tr><td>\"+esc(x.category||\"other\")+(x.automatic?\" <small>Automatic</small>\":\"\")+\"</td><td>\"+esc(x.supplier||\"\u2014\")+\"</td><td>\"+esc(x.description||\"\u2014\")+\"</td><td>\"+esc(vendorMoneyV384(x.amount))+\"</td><td>\"+(x.automatic?(x.source===\"meta_ads_attribution\"?\"<button type='button' class='secondary' data-vendor-meta-breakdown-v457='\"+esc(event.key)+\"'>View matched ads</button>\":\"<small>From Venue Master</small>\"):\"<button type='button' class='secondary' data-vendor-expense-delete='\"+esc(x.id)+\"'>Remove</button>\")+\"</td></tr>\").join(\"\")+\"</tbody></table></div>\":\"<p class='orbit-muted'>No event costs entered yet.</p>\";\n  }\n  function renderVendorEventDocumentsV398(event){\n    const target=$(\"vendorEventDocumentsList\");if(!target)return;const rows=(event.documents||[]).filter(x=>x.active!==false);\n    target.innerHTML=rows.length?\"<div class='orbit-vendor-document-list'>\"+rows.map(x=>{const final=x.finalVendorDocument===true,released=Boolean(x.releasedToVendorsAt);return \"<div><span><strong>\"+esc(x.name||x.fileName)+\"</strong><small>\"+esc(x.fileName||\"\")+\" \u00B7 \"+Math.max(1,Math.round(Number(x.bytes||0)/1024))+\" KB \u00B7 \"+esc(x.category||\"general\")+(final?\" \u00B7 Final\":\"\")+(released?\" \u00B7 Released to Club\":\"\")+\"</small></span><button type='button' class='secondary' data-vendor-document-open='\"+esc(x.id)+\"'>Open</button>\"+(final?\"<button type='button' class='secondary' data-vendor-document-release-v620='\"+esc(x.id)+\"' data-released='\"+(released?\"1\":\"0\")+\"'>\"+(released?\"Unrelease from Club\":\"Release to Club\")+\"</button>\":\"\")+\"<button type='button' class='secondary' data-vendor-document-delete='\"+esc(x.id)+\"'>Remove</button></div>\";}).join(\"\")+\"</div>\":\"<p class='orbit-muted'>No invoices or documents attached yet.</p>\";\n  }\n  function fillVendorEventSetupV398(event){\n    const venues=state.vendorVenues||[],select=$(\"vendorEventVenue\");\n    if(select){select.innerHTML=\"<option value=''>No venue selected</option>\"+venues.map(v=>\"<option value='\"+esc(v.id)+\"'>\"+esc(v.name)+\"</option>\").join(\"\");select.value=event.venueId||\"\";}\n    if($(\"vendorEventSetupTime\"))$(\"vendorEventSetupTime\").value=event.setupTime||\"\";\n    if($(\"vendorEventInstructions\"))$(\"vendorEventInstructions\").value=event.vendorInstructions||\"\";\n    if($(\"vendorEventParking\"))$(\"vendorEventParking\").value=event.parkingNotes||\"\";\n    if($(\"vendorEventRules\"))$(\"vendorEventRules\").value=event.rules||\"\";\n  }\n  // V560 Show Broadcast is deliberately separate from Vendor Briefing. It never\n  // changes briefing sent-state, floor-plan readiness or the structured show-info workflow.\n  function ensureVendorShowBroadcastButtonV560(event){\n    const row=document.querySelector(\"#vendorEventDetailDialog .orbit-vendor-event-top-actions\");if(!row)return;let b=$(\"vendorEventShowBroadcastV560\");\n    if(!b){b=document.createElement(\"button\");b.type=\"button\";b.id=\"vendorEventShowBroadcastV560\";b.className=\"secondary\";b.textContent=\"Show Broadcast\";row.insertBefore(b,$(\"previewVendorEventDetails\")||null);b.addEventListener(\"click\",()=>{const current=state.currentVendorEvent;if(current)openVendorShowBroadcastV560(current).catch(err=>setNotice(\"Show Broadcast unavailable: \"+(err.message||err),true));});}\n    b.hidden=event?.state===\"past\";b.disabled=event?.state===\"past\";\n  }\n  function vendorShowBroadcastHistoryHtmlV560(rows=[]){if(!rows.length)return \"<p class='orbit-muted'>No Show Broadcasts have been sent for this event yet.</p>\";return `<div class=\"orbit-table-wrap\"><table><thead><tr><th>Sent</th><th>Subject</th><th>Recipients</th><th>Status</th></tr></thead><tbody>${rows.map(x=>`<tr><td>${esc(prettyDate(x.completedAt||x.createdAt||\"\"))}</td><td>${esc(x.subject||\"\")}</td><td>${Number(x.counts?.sent||0)} sent${Number(x.counts?.failed||0)?` \u00B7 ${Number(x.counts.failed)} failed`:\"\"}</td><td>${esc(String(x.status||\"\").replace(/_/g,\" \"))}</td></tr>`).join(\"\")}</tbody></table></div>`;}\n  async function openVendorShowBroadcastV560(event){\n    state.currentVendorEvent=event;state.currentVendorEventKey=event.key;\n    const [preview,history]=await Promise.all([api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/show-broadcast/preview\",{cacheMs:0}),api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/show-broadcast/history?limit=10\",{cacheMs:0}).catch(()=>({broadcasts:[]}))]);\n    const d=vendorEventToolDialogV439(\"Show Broadcast\",[(event.displayName||event.label||\"Event\"),vendorDateV385(event.eventDate)].filter(Boolean).join(\" \u00B7 \"),\"Custom vendor email\"),body=$(\"vendorEventToolBody\");if(!d||!body)return;\n    body.innerHTML=`<div class=\"orbit-show-broadcast-v561\">\n      <section class=\"orbit-show-broadcast-intro-v561\"><div><p class=\"orbit-kicker\">ONE-OFF VENDOR EMAIL</p><h3>Email only the vendors booked on this show</h3><p>This does not change Vendor Briefing, floor-plan or show-information sent status.</p></div><div class=\"orbit-show-broadcast-from-v561\"><span>From</span><strong>${esc(preview.from||\"info@orbitcardshow.co.uk\")}</strong></div></section>\n      <div class=\"orbit-show-broadcast-metrics-v561\"><article><small>Will receive</small><strong id=\"vendorShowBroadcastWillReceiveV566\">${Number(preview.recipientCount||0)}</strong><span>selected vendor emails</span></article><article><small>Booked vendors</small><strong>${Number(preview.totalBookedVendors||0)}</strong><span>on this show</span></article><article><small>Missing email</small><strong>${Number(preview.missingEmail||0)}</strong><span>cannot receive</span></article><article><small>Duplicates removed</small><strong>${Number(preview.duplicateEmailsRemoved||0)}</strong><span>send once per address</span></article></div>\n      <section class=\"orbit-show-broadcast-card-v561 orbit-show-broadcast-compose-v561\"><div class=\"orbit-show-broadcast-section-heading-v561\"><div><span>1</span><div><h3>Write broadcast</h3><p>Compose the exact email your vendors will receive.</p></div></div></div><label>Subject<input id=\"vendorShowBroadcastSubjectV560\" maxlength=\"200\" placeholder=\"Email subject\"></label><label>Message<textarea id=\"vendorShowBroadcastMessageV560\" rows=\"11\" placeholder=\"Write your message to vendors booked on this show\"></textarea></label></section>\n      <section class=\"orbit-show-broadcast-card-v561\"><div class=\"orbit-show-broadcast-section-heading-v561\"><div><span>2</span><div><h3>Check recipients</h3><p>Select <strong>Exclude</strong> beside anyone who should not receive this broadcast. Exclusions apply only to this message.</p></div></div><div class=\"orbit-show-broadcast-selection-v566\"><strong id=\"vendorShowBroadcastSelectedCountV566\">${Number(preview.recipientCount||0)}</strong><span>selected</span></div></div><details class=\"orbit-show-broadcast-recipients-v561\" open><summary>Recipient list</summary><div class=\"orbit-table-wrap\"><table><thead><tr><th>Vendor</th><th>Email</th><th class=\"orbit-show-broadcast-exclude-heading-v566\">Exclude</th></tr></thead><tbody>${(preview.recipients||[]).map(x=>`<tr><td>${esc(x.name||\"Vendor\")}</td><td>${esc(x.email||\"\")}</td><td class=\"orbit-show-broadcast-exclude-cell-v566\"><label class=\"orbit-show-broadcast-exclude-v566\"><input type=\"checkbox\" class=\"vendor-show-broadcast-exclude-v566\" value=\"${esc(x.email||\"\")}\"><span>Exclude</span></label></td></tr>`).join(\"\")||\"<tr><td colspan='3'>No deliverable vendor email addresses.</td></tr>\"}</tbody></table></div></details></section>\n      <section class=\"orbit-show-broadcast-card-v561 orbit-show-broadcast-test-v561\"><div class=\"orbit-show-broadcast-section-heading-v561\"><div><span>3</span><div><h3>Send a test</h3><p>The exact subject and message go only to the address below. Vendors are not contacted.</p></div></div></div><div class=\"orbit-show-broadcast-test-row-v561\"><input id=\"vendorShowBroadcastTestEmailV560\" type=\"email\" value=\"info@orbitcardshow.co.uk\" aria-label=\"Test email address\"><button type=\"button\" class=\"secondary\" id=\"vendorShowBroadcastTestV560\">Send test email</button></div></section>\n      <section class=\"orbit-show-broadcast-card-v561 orbit-show-broadcast-send-v561\"><div class=\"orbit-show-broadcast-section-heading-v561\"><div><span>4</span><div><h3>Send broadcast</h3><p>Orbit logs each recipient separately and prevents accidental duplicate sends.</p></div></div><button type=\"button\" id=\"vendorShowBroadcastSendV560\" ${preview.recipientCount?\"\":\"disabled\"}>Send to ${Number(preview.recipientCount||0)} vendor${Number(preview.recipientCount||0)===1?\"\":\"s\"}</button></div><div id=\"vendorShowBroadcastResultV560\" class=\"orbit-action-result\" hidden></div></section>\n      <section class=\"orbit-show-broadcast-history-v561\"><div class=\"orbit-panel-header\"><div><h3>Broadcast history</h3><p>Previous custom broadcasts for this show.</p></div></div><div id=\"vendorShowBroadcastHistoryV560\">${vendorShowBroadcastHistoryHtmlV560(history.broadcasts||[])}</div></section>\n      </div>`;\n    const excludedEmails=()=>Array.from(body.querySelectorAll(\".vendor-show-broadcast-exclude-v566:checked\")).map(input=>String(input.value||\"\").trim()).filter(Boolean);\n    const values=()=>({subject:$(\"vendorShowBroadcastSubjectV560\")?.value||\"\",message:$(\"vendorShowBroadcastMessageV560\")?.value||\"\",excludedEmails:excludedEmails()});\n    const updateRecipientSelectionV566=()=>{const excluded=excludedEmails().length,selected=Math.max(0,Number(preview.recipientCount||0)-excluded),countNode=$(\"vendorShowBroadcastSelectedCountV566\"),metricNode=$(\"vendorShowBroadcastWillReceiveV566\"),send=$(\"vendorShowBroadcastSendV560\");if(countNode)countNode.textContent=String(selected);if(metricNode)metricNode.textContent=String(selected);if(send){send.disabled=selected<1;send.textContent=`Send to ${selected} vendor${selected===1?\"\":\"s\"}`;}return selected;};\n    body.querySelectorAll(\".vendor-show-broadcast-exclude-v566\").forEach(input=>input.addEventListener(\"change\",updateRecipientSelectionV566));\n    updateRecipientSelectionV566();\n    $(\"vendorShowBroadcastTestV560\")?.addEventListener(\"click\",async ev=>{const r=$(\"vendorShowBroadcastResultV560\"),v=values(),to=$(\"vendorShowBroadcastTestEmailV560\")?.value||\"\";setLoading(ev.currentTarget,true);if(r){r.hidden=false;r.classList.remove(\"error\");r.textContent=\"Sending test\u2026\";}try{const data=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/show-broadcast/test\",{method:\"POST\",body:JSON.stringify({...v,to}),cacheMs:0,timeoutMs:30000});if(r)r.textContent=data.sent?\"Test email sent to \"+data.to+\". Vendors were not contacted.\":\"Test send was not confirmed by the email provider.\";}catch(err){if(r){r.classList.add(\"error\");r.textContent=err.message||err;}}finally{setLoading(ev.currentTarget,false);}});\n    $(\"vendorShowBroadcastSendV560\")?.addEventListener(\"click\",async ev=>{const v=values(),count=updateRecipientSelectionV566();if(!v.subject.trim()||!v.message.trim()){const r=$(\"vendorShowBroadcastResultV560\");if(r){r.hidden=false;r.classList.add(\"error\");r.textContent=\"Enter both a subject and message first.\";}return;}if(count<1){const r=$(\"vendorShowBroadcastResultV560\");if(r){r.hidden=false;r.classList.add(\"error\");r.textContent=\"Include at least one vendor before sending.\";}return;}const excluded=v.excludedEmails.length,selectionNote=excluded?`\\n\\n${excluded} vendor${excluded===1?\" is\":\"s are\"} excluded from this broadcast.`:\"\";if(!window.confirm(`Send this Show Broadcast to ${count} vendor${count===1?\"\":\"s\"} booked on ${event.displayName||event.label||\"this show\"}?${selectionNote}\\n\\nThis is separate from Vendor Briefing.`))return;await sendVendorShowBroadcastV560(event,v,ev.currentTarget,false);});\n    if(typeof d.showModal===\"function\")d.showModal();else d.setAttribute(\"open\",\"\");\n  }\n  async function sendVendorShowBroadcastV560(event,values,button,allowRepeat){const r=$(\"vendorShowBroadcastResultV560\");setLoading(button,true);if(r){r.hidden=false;r.classList.remove(\"error\");r.textContent=\"Queuing broadcast\u2026\";}try{const data=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/show-broadcast/batches\",{method:\"POST\",body:JSON.stringify({...values,allowRepeat:Boolean(allowRepeat)}),cacheMs:0,timeoutMs:30000});if(r)r.textContent=\"Broadcast queued. Orbit is sending it with per-recipient delivery logging\u2026\";await pollVendorShowBroadcastV560(event,data.job?.id,r);}catch(err){if(!allowRepeat&&String(err.data?.code||err.code||\"\")===\"SHOW_BROADCAST_REPEAT_CONFIRMATION_REQUIRED\"&&window.confirm(\"This exact broadcast was already sent within the last 24 hours. Send the same message again anyway?\")){setLoading(button,false);return sendVendorShowBroadcastV560(event,values,button,true);}if(r){r.classList.add(\"error\");r.textContent=err.message||err;}}finally{setLoading(button,false);}}\n  async function pollVendorShowBroadcastV560(event,id,result){if(!id)return;for(let i=0;i<80;i++){await new Promise(resolve=>setTimeout(resolve,1500));const data=await api(\"/api/admin/vendors/show-broadcast/batches/\"+encodeURIComponent(id),{cacheMs:0,timeoutMs:12000}),job=data.job;if(!job)continue;const c=job.counts||{};if(result)result.textContent=`${Number(c.sent||0)} sent \u00B7 ${Number(c.failed||0)} failed \u00B7 ${Number(c.pending||0)} remaining.`;if([\"completed\",\"completed_with_failures\"].includes(job.status)){if(result){result.classList.toggle(\"error\",Number(c.failed||0)>0);result.textContent=`Show Broadcast complete \u00B7 ${Number(c.sent||0)} sent${Number(c.failed||0)?` \u00B7 ${Number(c.failed)} failed`:\"\"}. Vendor Briefing status was not changed.`;}const h=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/show-broadcast/history?limit=10\",{cacheMs:0}).catch(()=>({broadcasts:[]}));if($(\"vendorShowBroadcastHistoryV560\"))$(\"vendorShowBroadcastHistoryV560\").innerHTML=vendorShowBroadcastHistoryHtmlV560(h.broadcasts||[]);return;}}if(result){result.classList.add(\"error\");result.textContent=\"Sending is still running in the background. Reopen Show Broadcast to view its status.\";}}\n\n\n  function renderVendorEventDetailV398(event){\n    state.currentVendorEvent=event;state.currentVendorEventKey=event.key;\n    if($(\"vendorEventDetailKey\"))$(\"vendorEventDetailKey\").value=event.key;\n    if($(\"vendorEventDetailTitle\"))$(\"vendorEventDetailTitle\").textContent=event.displayName||event.label||\"Vendor event\";\n    if($(\"vendorEventDetailKicker\"))$(\"vendorEventDetailKicker\").textContent=event.state===\"past\"?\"Past event financial record\":\"Live event operations\";\n    if($(\"vendorEventDetailSubtitle\"))$(\"vendorEventDetailSubtitle\").textContent=[vendorDateV385(event.eventDate),event.venue?.name].filter(Boolean).join(\" \u00B7 \");\n    const venueSelect=$(\"vendorEventVenueTag\");if(venueSelect){venueSelect.innerHTML=\"<option value=''>Choose venue</option>\"+(state.vendorVenues||[]).map(v=>\"<option value='\"+esc(v.id)+\"'>\"+esc(v.name)+\"</option>\").join(\"\");venueSelect.value=event.venueId||event.venue?.id||\"\";}\n    const metrics=$(\"vendorEventDetailMetrics\");if(metrics)metrics.innerHTML=\"<article><span>Vendors</span><strong>\"+Number(event.customers||0)+\"</strong></article><article><span>Tables</span><strong>\"+Number(event.tables||0)+\"</strong></article><article><span>Display cases</span><strong>\"+Number(event.displayCases||0)+\"</strong></article><article><span>Vendor income</span><strong>\"+esc(vendorMoneyV384(event.sales))+\"</strong></article>\";\n    if($(\"vendorEventClubPriceV620\"))$(\"vendorEventClubPriceV620\").value=event.standardTablePrice??event.shopifyVariantPrice??\"\";if($(\"vendorEventClubCapacityV620\"))$(\"vendorEventClubCapacityV620\").value=event.vendorClubTableCapacity??\"\";if($(\"vendorEventAllowClubPointsV620\"))$(\"vendorEventAllowClubPointsV620\").checked=event.allowVendorClubPointsBookings!==false;\n    renderVendorEventBookingsV398(event);renderVendorEventFinanceV398(event);\n    const financePanel=$(\"vendorPastFinancePanel\"),commsPanel=$(\"vendorLiveCommunicationPanel\");\n    if(financePanel)financePanel.hidden=event.state!==\"past\";if(commsPanel)commsPanel.hidden=event.state===\"past\";\n    if($(\"vendorEventEmailCustomMessage\"))setVendorRichEditorV421(\"vendorEventEmailCustomMessage\",event.vendorEmailCustomHtml,event.vendorEmailCustomMessage);\n    if($(\"vendorEmailHtmlEditor\"))$(\"vendorEmailHtmlEditor\").value=event.vendorEmailHtmlOverride||\"\";\n    const sentRecord=$(\"vendorEventSentRecord\"),lastSent=event.vendorBriefingLastSent;if(sentRecord){sentRecord.hidden=!lastSent;if(lastSent)sentRecord.innerHTML=\"<strong>Vendor information sent</strong><span>Last batch: \"+esc(prettyDate(lastSent.sentAt))+\" \u00B7 \"+Number(lastSent.sent||0)+\" sent\"+(Number(lastSent.failed||0)?\" \u00B7 \"+Number(lastSent.failed)+\" failed\":\"\")+(Number(lastSent.unallocatedTablesAtSend||0)?\" \u00B7 \"+Number(lastSent.unallocatedTablesAtSend)+\" unallocated table(s) acknowledged\":\"\")+\"</span>\";}\n    const preview=$(\"vendorRenderedEmailPreview\");if(preview){preview.hidden=true;preview.innerHTML=\"\";}\n    ensureVendorShowBroadcastButtonV560(event);\n    loadVendorBriefingBatchStatusV487(event.key).catch(()=>{});\n  }\n  function vendorEventByKeyV399(key){return (state.vendorWorkspace?.allEvents||[]).find(x=>x.key===key)||null;}\n\n  function closeVendorEventToolV562(clear=false){\n    const d=$(\"vendorEventToolDialog\");if(!d)return;\n    if(d.open||d.hasAttribute(\"open\")){try{d.close();}catch(_e){d.removeAttribute(\"open\");}}\n    else d.removeAttribute(\"open\");\n    d.classList.remove(\"orbit-show-broadcast-dialog-v561\");\n    if(clear){\n      const body=$(\"vendorEventToolBody\");if(body)body.innerHTML=\"\";\n      if($(\"vendorEventToolTitle\"))$(\"vendorEventToolTitle\").textContent=\"Event tool\";\n      if($(\"vendorEventToolSubtitle\"))$(\"vendorEventToolSubtitle\").textContent=\"\";\n      state.currentVendorEvent=null;\n      state.currentVendorEventKey=\"\";\n    }\n  }\n  function vendorEventToolDialogV439(title,subtitle,kicker=\"Vendor event\"){\n    const d=$(\"vendorEventToolDialog\");if(!d)return null;\n    d.classList.toggle(\"orbit-show-broadcast-dialog-v561\",title===\"Show Broadcast\");\n    if($(\"vendorEventToolTitle\"))$(\"vendorEventToolTitle\").textContent=title||\"Event tool\";\n    if($(\"vendorEventToolSubtitle\"))$(\"vendorEventToolSubtitle\").textContent=subtitle||\"\";\n    if($(\"vendorEventToolKicker\"))$(\"vendorEventToolKicker\").textContent=kicker;\n    return d;\n  }\n  function vendorEventDocumentRowsV439(event){\n    const rows=(event?.documents||[]).filter(x=>x.active!==false);\n    return rows.length?\"<div class='orbit-vendor-document-list orbit-vendor-popup-document-list'>\"+rows.map(x=>\"<div><span><strong>\"+esc(x.name||x.fileName)+\"</strong><small>\"+esc(x.fileName||\"\")+\" \u00B7 \"+Math.max(1,Math.round(Number(x.bytes||0)/1024))+\" KB</small></span><button type='button' class='secondary' data-vendor-popup-document-open='\"+esc(x.id)+\"'>Open</button><button type='button' class='secondary' data-vendor-popup-document-delete='\"+esc(x.id)+\"'>Remove</button></div>\").join(\"\")+\"</div>\":\"<p class='orbit-muted'>No documents attached to this event yet.</p>\";\n  }\n  function openVendorDocumentsDialogV439(event){\n    state.currentVendorEvent=event;state.currentVendorEventKey=event.key;\n    const d=vendorEventToolDialogV439(\"Documents\",[(event.displayName||event.label||\"Event\"),vendorDateV385(event.eventDate)].filter(Boolean).join(\" \u00B7 \"),\"Event documents\"),body=$(\"vendorEventToolBody\");if(!d||!body)return;\n    body.innerHTML=\"<div id='vendorPopupDocumentList'>\"+vendorEventDocumentRowsV439(event)+\"</div><section class='orbit-panel orbit-vendor-popup-upload'><div class='orbit-form-grid'><label>Document<input id='vendorPopupDocumentFile' type='file' accept='.pdf,image/*'></label><label>Description<input id='vendorPopupDocumentName' placeholder='e.g. Venue final invoice'></label></div><div class='orbit-action-row'><button type='button' id='vendorPopupDocumentUpload'>Upload document</button></div></section>\";d.showModal();\n  }\n  async function uploadVendorPopupDocumentV439(button){\n    const event=state.currentVendorEvent,file=$(\"vendorPopupDocumentFile\")?.files?.[0];if(!event||!file)throw new Error(\"Choose a PDF or image to upload.\");setLoading(button,true);\n    try{const dataUrl=await fileToDataUrlV398(file);await api(\"/api/admin/vendors/events/documents\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,name:$(\"vendorPopupDocumentName\")?.value||file.name,fileName:file.name,dataUrl})});await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");const refreshed=vendorEventByKeyV399(event.key)||event;state.currentVendorEvent=refreshed;if($(\"vendorPopupDocumentList\"))$(\"vendorPopupDocumentList\").innerHTML=vendorEventDocumentRowsV439(refreshed);setNotice(\"Event document stored.\");}finally{setLoading(button,false);}\n  }\n  function openVendorBriefingDialogV440(event){\n    state.currentVendorEvent=event;state.currentVendorEventKey=event.key;\n    const d=vendorEventToolDialogV439(\"Vendor briefing\",[(event.displayName||event.label||\"Event\"),vendorDateV385(event.eventDate)].filter(Boolean).join(\" \u00B7 \"),\"Live event briefing\"),body=$(\"vendorEventToolBody\");if(!d||!body)return;\n    body.innerHTML=\"<div class='orbit-vendor-popup-brief-toolbar'><button type='button' class='secondary' data-vendor-popup-format='bold'><strong>B</strong></button><button type='button' class='secondary' data-vendor-popup-format='underline'><u>U</u></button><button type='button' class='secondary' data-vendor-popup-format='italic'><em>I</em></button><button type='button' class='secondary' data-vendor-popup-format='insertUnorderedList'>Bullets</button><button type='button' class='secondary' data-vendor-popup-format='insertOrderedList'>Numbers</button><button type='button' class='secondary' id='vendorPopupBriefingSourceToggle'>HTML source</button><button type='button' class='secondary' id='vendorPopupBriefingSelectAll' hidden>Select all</button></div><div id='vendorPopupBriefingEditor' class='orbit-vendor-brief-editor orbit-vendor-popup-brief-editor' contenteditable='true'>\"+(event.vendorEmailCustomHtml||esc(event.vendorEmailCustomMessage||\"\"))+\"</div><textarea id='vendorPopupBriefingSource' class='orbit-vendor-rich-source orbit-vendor-popup-brief-source' rows='18' hidden spellcheck='false'></textarea><div class='orbit-action-row'><button type='button' id='saveVendorPopupBriefing'>Save briefing</button></div>\";d.showModal();\n  }\n  function toggleVendorPopupBriefingSourceV440(){\n    const editor=$(\"vendorPopupBriefingEditor\"),source=$(\"vendorPopupBriefingSource\"),toggle=$(\"vendorPopupBriefingSourceToggle\"),selectAll=$(\"vendorPopupBriefingSelectAll\");if(!editor||!source)return;\n    const sourceMode=!source.hidden;\n    if(sourceMode){editor.innerHTML=source.value;source.hidden=true;editor.hidden=false;if(toggle)toggle.textContent=\"HTML source\";if(selectAll)selectAll.hidden=true;}\n    else{source.value=editor.innerHTML;editor.hidden=true;source.hidden=false;if(toggle)toggle.textContent=\"Visual editor\";if(selectAll)selectAll.hidden=false;}\n  }\n  async function saveVendorPopupBriefingV439(button){\n    const event=state.currentVendorEvent,editor=$(\"vendorPopupBriefingEditor\"),source=$(\"vendorPopupBriefingSource\");if(!event||!editor)return;setLoading(button,true);\n    try{if(source&&!source.hidden)editor.innerHTML=source.value;const html=editor.innerHTML.trim(),text=editor.innerText.trim();await api(\"/api/admin/vendors/events/config\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,vendorEmailCustomMessage:text,vendorEmailCustomHtml:html})});event.vendorEmailCustomMessage=text;event.vendorEmailCustomHtml=html;setNotice(\"Vendor briefing saved.\");}finally{setLoading(button,false);}\n  }\n  function vendorFloorPlanVendorMapV439(event){const map=new Map();for(const g of plannerGroupsV398(event)||[]){if(g.customer?.key)map.set(g.customer.key,g.customer.businessName||g.customer.name||\"Vendor\");}return map;}\n  async function openVendorFloorPlanDialogV439(event){\n    state.currentVendorEvent=event;state.currentVendorEventKey=event.key;\n    let result;try{result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/table-plan\");}catch(_){result={tablePlan:null};}\n    const plan=result?.tablePlan||null,ready=String(plan?.status||event.tablePlan?.status||\"\").toLowerCase()===\"ready\";if(!ready)return false;\n    const d=vendorEventToolDialogV439(\"Final floor plan\",[(event.displayName||event.label||\"Event\"),vendorDateV385(event.eventDate)].filter(Boolean).join(\" \u00B7 \"),\"Ready for show\"),body=$(\"vendorEventToolBody\");if(!d||!body)return true;\n    const names=vendorFloorPlanVendorMapV439(event);let html=\"\";\n    for(const room of (plan.rooms||[])){const bg=await orientedVendorBackgroundV401(room).catch(()=>room.backgroundDataUrl||\"\");const tables=room.tables||[];html+=\"<section class='orbit-vendor-floor-preview-room'><h3>\"+esc(room.name||\"Floor plan\")+\"</h3><div class='orbit-vendor-floor-preview-canvas'>\"+(bg?\"<img src='\"+esc(bg)+\"' alt='Floor plan'>\":\"\")+\"<div class='orbit-vendor-floor-preview-overlay'>\"+tables.map((table,index)=>{const pt=transformVendorPointV401(Number(table.x??table.left??0),Number(table.y??table.top??0),room),swap=Number(room?.rotation||0)===90||Number(room?.rotation||0)===270,rawW=Number(table.widthPct||table.width||3.5),rawH=Number(table.heightPct||table.height||2.5),w=swap?rawH:rawW,h=swap?rawW:rawH,x=pt.x,y=pt.y;return \"<span class='\"+(table.vendorKey?\"allocated\":\"unallocated\")+\"' style='left:\"+x+\"%;top:\"+y+\"%;width:\"+Math.max(1,w)+\"%;height:\"+Math.max(1,h)+\"%;transform:translate(-50%,-50%) rotate(\"+Number(table?.angleDeg||0)+\"deg)' title='\"+esc(table.vendorKey?(names.get(table.vendorKey)||\"Vendor\"):\"Unallocated\")+\"'>\"+esc(String(table.label||index+1))+\"</span>\";}).join(\"\")+\"</div></div><div class='orbit-vendor-floor-preview-list'>\"+tables.filter(x=>x.vendorKey).map(x=>\"<span><strong>Table \"+esc(String(x.label||tables.indexOf(x)+1))+\"</strong> \"+esc(names.get(x.vendorKey)||\"Vendor\")+\"</span>\").join(\"\")+\"</div></section>\";}\n    body.innerHTML=html||\"<p class='orbit-muted'>No saved room map found.</p>\";d.showModal();return true;\n  }\n  function vendorFinanceHtmlV441(event){\n    const f=event.finance||{},sf=event.financials||{},expenses=f.expenses||{},rows=(event.expenses||[]).filter(x=>x.active!==false),\n      vendorRevenue=Number(f.vendorRevenue??event.sales??0),orbitTickets=Number(f.ticketRevenue??sf.orbitTicketRevenue??0),\n      eventbrite=Number(f.eventbriteRevenue??sf.eventbriteRevenue??0),totalIncome=Number(f.totalIncome??(vendorRevenue+orbitTickets+eventbrite)),\n      tax=Number(f.tax??(totalIncome*0.20)),operatingCosts=Number(expenses.total||0),costs=operatingCosts+tax,profit=Number(f.profit??(totalIncome-tax-operatingCosts));\n    const costRows=rows.length?\"<div class='orbit-table-wrap'><table><thead><tr><th>Type</th><th>Supplier</th><th>Description</th><th>Amount</th><th></th></tr></thead><tbody>\"+rows.map(x=>\"<tr><td>\"+esc(x.category||\"other\")+(x.automatic?\" <small>Automatic</small>\":\"\")+\"</td><td>\"+esc(x.supplier||\"\u2014\")+\"</td><td>\"+esc(x.description||\"\u2014\")+\"</td><td>\"+esc(vendorMoneyV384(x.amount||0))+\"</td><td>\"+(x.automatic?(x.source===\"meta_ads_attribution\"?\"<button type='button' class='secondary' data-vendor-meta-breakdown-v457='\"+esc(event.key)+\"'>View matched ads</button>\":\"<small>From Venue Master</small>\"):\"<button type='button' class='secondary' data-vendor-finance-expense-delete='\"+esc(x.id)+\"'>Remove</button>\")+\"</td></tr>\").join(\"\")+\"</tbody></table></div>\":\"<p class='orbit-muted'>No event costs entered yet.</p>\";\n    return \"<div class='orbit-vendor-finance-popup-summary'>\"+\n      \"<article><span>Vendor income</span><strong>\"+esc(vendorMoneyV384(vendorRevenue))+\"</strong></article>\"+\n      \"<article><span>Orbit ticket income</span><strong>\"+esc(vendorMoneyV384(orbitTickets))+\"</strong></article>\"+\n      \"<article><span>Eventbrite income</span><strong>\"+esc(vendorMoneyV384(eventbrite))+\"</strong></article>\"+\n      \"<article><span>Total income</span><strong>\"+esc(vendorMoneyV384(totalIncome))+\"</strong></article>\"+\n      \"<article><span>Total costs</span><strong>\"+esc(vendorMoneyV384(costs))+\"</strong></article>\"+\n      \"<article class='tax'><span>Tax \u00B7 20%</span><strong>\"+esc(vendorMoneyV384(tax))+\"</strong></article>\"+\n      \"<article class='\"+(profit<0?\"loss\":\"profit\")+\"'><span>Profit / loss</span><strong>\"+esc(vendorMoneyV384(profit))+\"</strong></article>\"+\n    \"</div>\"+\n    \"<section class='orbit-panel orbit-vendor-finance-ledger'><div class='orbit-panel-header'><div><p class='orbit-kicker'>Cost ledger</p><h3>Expenses</h3><p>All finance controls for this event live here.</p></div><button type='button' id='vendorPopupRefreshFinancials' class='secondary'>Refresh income & advertising</button></div>\"+\n      \"<div id='vendorPopupExpensesList'>\"+costRows+\"</div>\"+\n      \"<div class='orbit-form-grid orbit-vendor-expense-form'><label>Category<select id='vendorPopupExpenseCategory'><option value='venue'>Venue hire</option><option value='advertising'>Advertising</option><option value='miscellaneous'>Miscellaneous</option><option value='other'>Other</option></select></label><label>Amount (\u00A3)<input id='vendorPopupExpenseAmount' type='number' min='0' step='0.01'></label><label>Supplier<input id='vendorPopupExpenseSupplier' placeholder='e.g. Warwick Racecourse'></label><label>Description<input id='vendorPopupExpenseDescription' placeholder='What was this cost?'></label></div>\"+\n      \"<div class='orbit-action-row'><button type='button' id='vendorPopupAddExpense'>Add expense</button></div>\"+\n    \"</section>\";\n  }\n  function openVendorFinancialDialogV440(key){\n    const event=vendorEventByKeyV399(key);if(!event)return;\n    state.currentVendorEvent=event;state.currentVendorEventKey=event.key;\n    const d=vendorEventToolDialogV439(\"Financial report\",[(event.displayName||event.label||\"Event\"),vendorDateV385(event.eventDate)].filter(Boolean).join(\" \u00B7 \"),\"Past event\"),body=$(\"vendorEventToolBody\");\n    if(body)body.innerHTML=vendorFinanceHtmlV441(event);\n    d?.showModal();\n  }\n\n  async function waitForVendorMetaSyncV48307(jobId,{timeoutMs=120000}={}){\n    const started=Date.now();\n    while(Date.now()-started<timeoutMs){\n      const status=await api(\"/api/admin/meta-ads/history/import/\"+encodeURIComponent(jobId),{cacheMs:0,timeoutMs:25000});\n      if(status.status===\"completed\")return status;\n      if(status.status===\"failed\")throw new Error(status.error?.message||\"Meta advertising sync failed.\");\n      await new Promise(resolve=>setTimeout(resolve,1800));\n    }\n    throw new Error(\"Meta advertising sync is still running. The stored finance view can be refreshed again shortly.\");\n  }\n\n  async function refreshVendorFinancialPopupV465(button){\n    if(button)setLoading(button,true);\n    try{\n      const event=state.currentVendorEvent||vendorEventByKeyV399(state.currentVendorEventKey),eventbriteEventId=event?.financials?.eventbriteEventId||event?.finance?.eventbriteEventId||null;\n      let remoteMode=\"stored_only\",metaMode=\"stored_only\",metaDiagnostics=null;\n      const advertisingBefore=Number(event?.finance?.expenses?.advertising||event?.expenses?.advertising||0);\n      if(eventbriteEventId){\n        try{\n          const synced=await api(\"/api/admin/vendors/eventbrite/event-financial-sync\",{method:\"POST\",body:JSON.stringify({eventbriteEventId})});\n          remoteMode=synced?.mode||\"targeted_ticket_metrics\";\n        }catch(syncError){\n          setNotice(\"Eventbrite refresh warning: \"+(syncError.message||syncError)+\". Orbit will keep the latest stored ticket totals.\",true);\n        }\n      }\n      // This button is an explicit operator refresh, so it is safe to contact\n      // Meta here. Normal Vendor page hydration remains persisted/read-only.\n      try{\n        // V517: Finance refresh must never rematch/rewrite imported Meta history.\n        // Refresh only the bounded current-provider overlay used by event Finance.\n        const overlay=await api(\"/api/admin/meta-ads/live-overlay/refresh\",{method:\"POST\",body:JSON.stringify({skipRematch:true,days:45}),cacheMs:0,timeoutMs:120000});\n        if(overlay?.success!==false){metaDiagnostics=overlay||null;metaMode=\"incremental_live\";}\n      }catch(metaError){\n        throw new Error(\"Meta advertising was not refreshed: \"+(metaError.message||metaError)+\". The financial report has not been replaced. Finish the current Meta sync or retry this refresh.\");\n      }\n      // V537: persist this exact event's canonical Attendance-backed Finance\n      // snapshot before redrawing. The old all-events financials=true read could\n      // hit its 8-second guard and silently fall back to an older snapshot.\n      const canonical=await api(\"/api/admin/vendors/events/financial-refresh\",{method:\"POST\",body:JSON.stringify({eventKey:event?.key||state.currentVendorEventKey}),cacheMs:0,timeoutMs:120000});\n      remoteMode=canonical?.success===false?remoteMode:\"canonical_event_snapshot\";\n      orbitGetCache.clear();\n      await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");\n      const fresh=vendorEventByKeyV399(state.currentVendorEventKey);if(fresh){state.currentVendorEvent=fresh;const body=$(\"vendorEventToolBody\");if(body)body.innerHTML=vendorFinanceHtmlV441(fresh);}\n      const advertisingAfter=Number(fresh?.finance?.expenses?.advertising||0);\n      const metaSummary=metaDiagnostics?(\" Meta recent window: \u00A3\"+Number(metaDiagnostics.providerSpend||0).toFixed(2)+\" provider spend, \u00A3\"+Number(metaDiagnostics.importedSpend||0).toFixed(2)+\" imported, \u00A3\"+Number(metaDiagnostics.deltaSpend||0).toFixed(2)+\" live ad/day delta; \u00A3\"+Number(metaDiagnostics.matchedDeltaSpend||0).toFixed(2)+\" matched, \u00A3\"+Number(metaDiagnostics.reviewDeltaSpend||0).toFixed(2)+\" review, \u00A3\"+Number(metaDiagnostics.unmatchedDeltaSpend||0).toFixed(2)+\" unmatched.\"):\"\";\n      const unchanged=metaMode===\"incremental_live\"&&Math.abs(advertisingAfter-advertisingBefore)<0.005;\n      setNotice((remoteMode===\"canonical_event_snapshot\"?\"Ticket/add-on Finance snapshot refreshed and saved\":(remoteMode===\"stored_only\"?\"Stored ticket income\":\"Ticket income refreshed\"))+\" \u00B7 \"+(metaMode===\"incremental_live\"?\"Meta safe ad/day sync completed\":\"stored advertising costs retained\")+\". Advertising \u00A3\"+advertisingBefore.toFixed(2)+\" \u2192 \u00A3\"+advertisingAfter.toFixed(2)+\".\"+metaSummary+(unchanged?\" No event advertising change was produced. Review unmatched/review ads rather than forcing campaign-lifetime spend into this event.\":\"\"),false);\n    }finally{if(button)setLoading(button,false);}\n  }\n  async function refreshVendorFinancialPopupV441(button){return refreshVendorFinancialPopupV465(button);}\n  async function addVendorFinancialPopupExpenseV441(button){\n    const event=state.currentVendorEvent,amount=Number($(\"vendorPopupExpenseAmount\")?.value||0);if(!event)return;if(!amount)throw new Error(\"Enter the expense amount.\");\n    setLoading(button,true);\n    try{\n      await api(\"/api/admin/vendors/events/expenses\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,category:$(\"vendorPopupExpenseCategory\")?.value||\"other\",amount,supplier:$(\"vendorPopupExpenseSupplier\")?.value||\"\",description:$(\"vendorPopupExpenseDescription\")?.value||\"\"})});\n      await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");\n      const fresh=vendorEventByKeyV399(event.key)||event;state.currentVendorEvent=fresh;const body=$(\"vendorEventToolBody\");if(body)body.innerHTML=vendorFinanceHtmlV441(fresh);\n      setNotice(\"Event expense added.\");\n    }finally{setLoading(button,false);}\n  }\n  async function deleteVendorFinancialPopupExpenseV441(id){\n    const event=state.currentVendorEvent;if(!event||!confirm(\"Remove this event expense?\"))return;\n    await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/expenses/\"+encodeURIComponent(id),{method:\"DELETE\"});\n    await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");\n    const fresh=vendorEventByKeyV399(event.key)||event;state.currentVendorEvent=fresh;const body=$(\"vendorEventToolBody\");if(body)body.innerHTML=vendorFinanceHtmlV441(fresh);\n    setNotice(\"Event expense removed.\");\n  }\n\n  async function openVendorMetaBreakdownV457(eventKey){\n    const event=vendorEventByKeyV399(eventKey);if(!event)return;let d=$(\"vendorMetaBreakdownDialogV457\");if(!d){d=document.createElement(\"dialog\");d.id=\"vendorMetaBreakdownDialogV457\";d.className=\"orbit-dialog orbit-vendor-meta-dialog-v457\";d.innerHTML=\"<div class='orbit-dialog-card'><div class='orbit-panel-header'><div><p class='orbit-kicker'>Advertising audit</p><h2 id='vendorMetaBreakdownTitleV457'>Matched Meta ads</h2></div><button type='button' class='secondary' id='closeVendorMetaBreakdownV457'>Close</button></div><div id='vendorMetaBreakdownBodyV457'>Loading\u2026</div></div>\";document.body.appendChild(d);$(\"closeVendorMetaBreakdownV457\").addEventListener(\"click\",()=>d.close());}\n    $(\"vendorMetaBreakdownTitleV457\").textContent=(event.displayName||event.label||\"Event\")+\" \u00B7 matched Meta ads\";d.showModal();await loadVendorMetaBreakdownV457(event,1);\n  }\n  async function loadVendorMetaBreakdownV457(event,page=1){\n    const body=$(\"vendorMetaBreakdownBodyV457\");if(!body)return;\n    body.innerHTML=\"<p class='orbit-muted'>Loading matched advertising\u2026</p>\";\n    const data=await api(\"/api/admin/meta-ads/history?view=event&eventId=\"+encodeURIComponent(event.key)+\"&page=\"+encodeURIComponent(page)+\"&limit=50\",{cacheMs:0,timeoutMs:25000}),rows=data.rows||[];\n    body.innerHTML=rows.length?\"<p class='orbit-muted'>Campaigns group individual matched ads for display only. Stored history and the published live delta are shown separately. Change ad assignments in Marketing \u2192 Reconciliation.</p><div class='orbit-table-wrap'><table><thead><tr><th>Campaign</th><th>Dates</th><th>Attributed spend</th><th>Breakdown</th></tr></thead><tbody>\"+rows.map(r=>\"<tr><td><strong>\"+esc(r.campaign_name||r.ad_name||\"Meta campaign\")+\"</strong></td><td>\"+esc([r.first_date,r.last_date].filter(Boolean).join(\" to \"))+\"</td><td>\"+esc(metaAdsMoneyV449(r.spend??r.metrics?.spend,\"GBP\"))+\"</td><td><small>Stored \"+esc(metaAdsMoneyV449(r.historical_spend,\"GBP\"))+\" \u00B7 live \"+esc(metaAdsMoneyV449(r.live_delta_spend,\"GBP\"))+\" \u00B7 \"+esc(String(r.ad_count||1))+\" ad(s)</small></td></tr>\").join(\"\")+\"</tbody></table></div>\"+(data.pages>1?\"<div class='orbit-meta-pagination-v453'><button class='secondary' data-vendor-meta-page-v457='\"+(page-1)+\"' \"+(page<=1?\"disabled\":\"\")+\">Previous</button><span>Page \"+page+\" of \"+data.pages+\"</span><button class='secondary' data-vendor-meta-page-v457='\"+(page+1)+\"' \"+(page>=data.pages?\"disabled\":\"\")+\">Next</button></div>\":\"\"):\"<p class='orbit-muted'>No matched Meta advertising rows are currently attributed to this event.</p>\";\n    body.querySelectorAll(\"[data-vendor-meta-page-v457]\").forEach(btn=>btn.addEventListener(\"click\",()=>loadVendorMetaBreakdownV457(event,Number(btn.dataset.vendorMetaPageV457))));\n  }\n  // Finance archive is read-only and cannot silently use today's Venue master.\n  async function openFinanceArchivedFloorPlanV71705(key){\n    const response=await api('/api/admin/vendors/events/'+encodeURIComponent(key)+'/archived-floor-plan',{cacheMs:0,timeoutMs:25000});\n    let dlg=document.getElementById('orbitHistoricFloorPlanDialogV71705');\n    if(!dlg){dlg=document.createElement('dialog');dlg.id='orbitHistoricFloorPlanDialogV71705';dlg.style.cssText='border:1px solid #c9dae6;border-radius:20px;padding:24px;width:min(950px,94vw);max-height:90vh;overflow:auto;box-shadow:0 20px 70px #041b3466';document.body.appendChild(dlg);}\n    const event=vendorEventByKeyV399(key),title=event?.displayName||event?.label||'Past event';\n    let body='<p role=\"status\" style=\"padding:16px;border-radius:12px;background:#fff6e3;color:#755016\">The original released floor plan is not in the immutable archive. The booking totals remain available, but the original artwork and coordinates must be recovered before the venue plan can be displayed.</p><p>Review original briefing emails, historic media or database backups. The editable modern venue plan is not a substitute.</p>';\n    if(response.available){body='<p>Genuine preserved event release \u00B7 '+esc(response.releasedAt||'date unavailable')+'. Read-only.</p>'+(response.rooms||[]).map(room=>{\n      const marks=(room.tables||[]).map(t=>'<span title=\"Table '+esc(t.label)+'\" style=\"position:absolute;left:'+Math.max(0,Math.min(98,Number(t.x)))+'%;top:'+Math.max(0,Math.min(98,Number(t.y)))+'%;font-size:10px;line-height:1;transform:translate(-50%,-50%);border:1px solid #13304c;background:#ffffffca;color:#12304d;padding:2px;border-radius:3px;pointer-events:none\">'+esc(t.label)+'</span>').join('');\n      return '<section><h3>'+esc(room.name)+'</h3><div style=\"position:relative;border:1px solid #c1d2e1;border-radius:12px;overflow:hidden\"><img alt=\"Original archived floor plan for '+esc(room.name)+'\" style=\"display:block;width:100%;height:auto\" src=\"'+esc(room.backgroundDataUrl)+'\"/>'+marks+'</div></section>';\n    }).join('');}\n    dlg.innerHTML='<div style=\"display:flex;justify-content:space-between;gap:14px;align-items:start\"><div><small>Historical released floor plan \u00B7 read-only</small><h2 style=\"margin:6px 0 16px\">'+esc(title)+'</h2></div><button type=\"button\" data-close-archive-plan style=\"padding:10px 15px;border:1px solid #d7e3eb;border-radius:10px;background:#f5f9fb\">Close</button></div>'+body;\n    dlg.querySelector('[data-close-archive-plan]').addEventListener('click',()=>dlg.close());dlg.showModal();\n  }\n  async function selectVendorToolEventV399(tool,key){\n    const event=vendorEventByKeyV399(key);if(!event)return;\n    state.currentVendorEvent=event;state.currentVendorEventKey=event.key;\n    if(tool===\"planner\"){\n      setVendorPaneV385(\"planner\");const select=$(\"vendorPlannerEventSelect\");if(select)select.value=event.key;\n      if($(\"vendorPlannerEventTitle\"))$(\"vendorPlannerEventTitle\").textContent=event.displayName||event.label||\"Event\";\n      try{const plan=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/table-plan\");state.vendorTablePlan=plan.tablePlan||{version:2,rooms:[],activeRoomId:null};}catch(_){state.vendorTablePlan={version:2,rooms:[],activeRoomId:null};}\n      if(!Array.isArray(state.vendorTablePlan.rooms)){const legacy=state.vendorTablePlan;state.vendorTablePlan={version:2,rooms:(legacy.backgroundDataUrl||legacy.tables?.length)?[{id:\"legacy-room\",name:legacy.backgroundName||\"Legacy floor plan\",rotation:0,flipX:false,flipY:false,backgroundDataUrl:legacy.backgroundDataUrl||null,tables:legacy.tables||[]}]:[],activeRoomId:\"legacy-room\"};}\n      state.vendorPlannerZoom=1;if($(\"vendorPlannerZoomLabel\"))$(\"vendorPlannerZoomLabel\").textContent=\"100%\";if($(\"vendorPlannerStatus\"))$(\"vendorPlannerStatus\").value=vendorTablePlanIsManuallyCompleteV466(state.vendorTablePlan)?\"ready\":\"draft\";setVendorPlanSaveStateV403(\"Saved\",\"saved\");populateVendorFloorPlanSelectV401();await renderVendorTablePlanV398();updateVendorPlannerProgressV399();void loadVendorBookingNotesV618(event);void loadVendorPlannerBookingAuditV725(event);\n    }else if(tool===\"documents\"){\n      openVendorDocumentsDialogV439(event);\n    }else if(tool===\"briefings\"){\n      openVendorBriefingDialogV440(event);\n    }\n  }\n  function updateVendorPlannerProgressV399(){\n    const event=state.currentVendorEvent,plan=state.vendorTablePlan||{rooms:[]},target=$(\"vendorPlannerProgress\");if(!target||!event)return;\n    const groups=plannerGroupsV398(event),tables=(plan.rooms||[]).flatMap(r=>r.tables||[]),required=groups.reduce((n,g)=>n+vendorPlannerRequiredTablesV418(g),0),assigned=tables.filter(x=>x.vendorKey).length,complete=groups.filter(g=>tables.filter(x=>x.vendorKey===g.customer?.key).length>=vendorPlannerRequiredTablesV418(g)).length;\n    const orphanCount=(plan.rooms||[]).reduce((n,r)=>n+Number((r.orphanAllocations||[]).length),0);\n    target.textContent=complete+\"/\"+groups.length+\" vendors complete \u00B7 \"+assigned+\"/\"+required+\" required tables allocated \u00B7 \"+Number((plan.rooms||[]).length)+\" room/map\"+((plan.rooms||[]).length===1?\"\":\"s\")+(orphanCount?\" \u00B7 \u26A0 \"+orphanCount+\" preserved allocation\"+(orphanCount===1?\"\":\"s\")+\" need reassignment\":\"\");\n    target.classList.toggle(\"warning\",orphanCount>0);\n  }\n  function vendorGroupActionRowV399(group,action){\n    const shopify=(group?.rows||[]).filter(x=>x.type===\"shopify\"&&x.lineKind===\"table\"),complimentary=(group?.rows||[]).filter(x=>x.type===\"complimentary\"&&x.lineKind===\"table\"),rows=shopify.length?shopify:complimentary;if(!rows.length)return null;if(rows.length===1)return rows[0];\n    const labels=rows.map((x,i)=>(i+1)+\": \"+(x.orderName||x.shopifyOrderId)+\" \u00B7 \"+Number(x.quantity||0)+\" table(s)\").join(\"\\n\");\n    const answer=prompt(\"This vendor has multiple underlying bookings. Choose which booking to \"+action+\":\\n\\n\"+labels+\"\\n\\nEnter 1-\"+rows.length,\"1\");\n    if(answer===null)return null;const index=Number(answer)-1;return rows[index]||null;\n  }\n  function runVendorGroupActionV399(button){\n    const group=(state.vendorEventBookingGroups||[])[Number(button.dataset.groupIndex)],action=button.dataset.vendorGroupAction,row=vendorGroupActionRowV399(group,action);if(!row)return;\n    const proxy=document.createElement(\"button\");proxy.dataset.orderId=row.shopifyOrderId||\"\";proxy.dataset.lineId=row.lineItemId||\"\";proxy.dataset.adjustmentId=row.adjustmentId||\"\";\n    if(action===\"add-table\"||action===\"remove-table\"){adjustVendorBookingTablesV420(group,row,action===\"add-table\"?1:-1).catch(err=>setNotice(err.message||err,true));}\n    else if(action===\"transfer\")openVendorTransferV385(proxy);\n    else if(action===\"cancel\")cancelVendorBookingV398(proxy).catch(err=>setNotice(err.message||err,true));\n    else if(action===\"substitute\")substituteVendorBookingV398(proxy).catch(err=>setNotice(err.message||err,true));\n    else if(action===\"display-case\")addVendorDisplayCaseV404(proxy).catch(err=>setNotice(err.message||err,true));\n  }\n\n  async function addVendorDisplayCaseV404(button){\n    const quantity=Number(prompt(\"How many display cases should be added to this booking?\",\"1\"));if(!Number.isFinite(quantity)||quantity<1)return;\n    const adjustmentId=button.dataset.adjustmentId||\"\",result=adjustmentId?await api(\"/api/admin/vendors/bookings/complimentary-action\",{method:\"POST\",body:JSON.stringify({adjustmentId,action:\"display-case\",quantity})}):await api(\"/api/admin/vendors/bookings/display-cases\",{method:\"POST\",body:JSON.stringify({shopifyOrderId:button.dataset.orderId,lineItemId:button.dataset.lineId,quantity})});\n    setNotice(quantity+\" display case\"+(quantity===1?\"\":\"s\")+\" added to the Orbit vendor record.\");await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");if(state.currentVendorEvent){const refreshed=(state.vendorWorkspace?.allEvents||[]).find(x=>x.key===state.currentVendorEvent.key);if(refreshed)renderVendorEventDetailV398(refreshed);}\n    return result;\n  }\n  function clearVendorCompCustomerSelectionV509(){state.vendorCompSelectedCustomerV509=null;const selected=$(\"vendorCompSelectedCustomerV509\");if(selected){selected.hidden=true;selected.innerHTML=\"\";}}\n  function selectVendorCompCustomerV509(customer){state.vendorCompSelectedCustomerV509=customer||null;if(!customer)return;$(\"vendorCompName\").value=customer.businessName||customer.name||\"\";$(\"vendorCompEmail\").value=customer.email||\"\";const selected=$(\"vendorCompSelectedCustomerV509\");if(selected){selected.hidden=false;selected.innerHTML=\"<strong>Linked to existing Vendor customer</strong><span>\"+esc(customer.businessName||customer.name||\"Vendor\")+(customer.email?\" \u00B7 \"+esc(customer.email):\"\")+\"</span>\";}const results=$(\"vendorCompCustomerResultsV509\");if(results){results.hidden=true;results.innerHTML=\"\";}}\n  async function searchVendorCompCustomersV509(){const input=$(\"vendorCompCustomerSearchV509\"),results=$(\"vendorCompCustomerResultsV509\");if(!input||!results)return;const q=String(input.value||\"\").trim();if(q.length<2){results.hidden=true;results.innerHTML=\"\";return;}const data=await api(\"/api/admin/vendors/workspace?pane=customers&page=1&limit=8&q=\"+encodeURIComponent(q),{cacheMs:0,timeoutMs:15000});const rows=data.customers||[];results.hidden=false;results.innerHTML=rows.length?rows.map((c,i)=>\"<button type='button' class='secondary' data-vendor-comp-customer-v509='\"+i+\"'><strong>\"+esc(c.businessName||c.name||\"Vendor\")+\"</strong><span>\"+esc(c.email||c.name||\"\")+\"</span></button>\").join(\"\"):\"<p class='orbit-muted'>No existing Vendor customer matched. You can still enter the booking manually.</p>\";state.vendorCompSearchResultsV509=rows;}\n  function resetVendorComplimentaryV404(event=null){\n    clearVendorCompCustomerSelectionV509();if($(\"vendorCompCustomerSearchV509\"))$(\"vendorCompCustomerSearchV509\").value=\"\";if($(\"vendorCompCustomerResultsV509\")){$(\"vendorCompCustomerResultsV509\").hidden=true;$(\"vendorCompCustomerResultsV509\").innerHTML=\"\";}\n    $(\"vendorCompName\").value=\"\";$(\"vendorCompEmail\").value=\"\";$(\"vendorCompQuantity\").value=\"1\";$(\"vendorCompNotes\").value=\"\";if($(\"vendorCompAwardClubPointsV620\"))$(\"vendorCompAwardClubPointsV620\").checked=false;$(\"vendorCompResult\").hidden=true;\n    const select=$(\"vendorCompEvent\");if(select){select.value=event?.key||\"\";select.dispatchEvent(new Event(\"change\"));}if($(\"vendorCompEventDate\"))$(\"vendorCompEventDate\").value=vendorDateInputV388(event?.eventDate||\"\");\n  }\n  function openVendorComplimentaryV404(event=null){resetVendorComplimentaryV404(event);$(\"vendorComplimentaryDialog\")?.showModal();}\n\n  async function openVendorEventV398(key){\n    const event=(state.vendorWorkspace?.allEvents||[]).find(x=>x.key===key);if(!event)return;\n    renderVendorEventDetailV398(event);$(\"vendorEventDetailDialog\")?.showModal();\n    // V440: Past-event finance is served from persisted snapshots.\n    // External ticket-source refresh is explicit, never triggered by simply opening an event.\n  }\n  async function saveVendorEventSetupV398(button){\n    const event=state.currentVendorEvent;if(!event)return;setLoading(button,true);\n    try{await api(\"/api/admin/vendors/events/config\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,venueId:$(\"vendorEventVenue\").value,setupTime:$(\"vendorEventSetupTime\").value,vendorInstructions:$(\"vendorEventInstructions\").value,parkingNotes:$(\"vendorEventParking\").value,rules:$(\"vendorEventRules\").value})});setNotice(\"Event setup saved.\");await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");return true;}finally{setLoading(button,false);}\n  }\n  async function saveVendorEventClubV620(button){const event=state.currentVendorEvent;if(!event)return;const price=Number($(\"vendorEventClubPriceV620\")?.value||0),capacityRaw=String($(\"vendorEventClubCapacityV620\")?.value||\"\").trim(),capacity=capacityRaw===\"\"?null:Number(capacityRaw);if(price<0||!Number.isFinite(price))throw new Error(\"Enter a valid table price.\");if(capacity!==null&&(!Number.isInteger(capacity)||capacity<0))throw new Error(\"Capacity must be a whole number or blank to use live Shopify stock.\");setLoading(button,true);try{const result=await api(\"/api/admin/vendors/events/config\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,standardTablePrice:price,allowVendorClubPointsBookings:$(\"vendorEventAllowClubPointsV620\")?.checked!==false,vendorClubTableCapacity:capacity}),cacheMs:0});Object.assign(event,result.eventRecord||{});setNotice(\"Vendor Club booking controls saved.\");await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");return result;}finally{setLoading(button,false);}}\n  async function addVendorEventExpenseV398(button){\n    const event=state.currentVendorEvent;if(!event)return;const amount=Number($(\"vendorExpenseAmount\").value||0);if(!amount)throw new Error(\"Enter the expense amount.\");setLoading(button,true);\n    try{await api(\"/api/admin/vendors/events/expenses\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,category:$(\"vendorExpenseCategory\").value,amount,supplier:$(\"vendorExpenseSupplier\").value,description:$(\"vendorExpenseDescription\").value})});$(\"vendorExpenseAmount\").value=\"\";$(\"vendorExpenseSupplier\").value=\"\";$(\"vendorExpenseDescription\").value=\"\";await loadVendorWorkspaceV398(null,true,true,state.currentVendorPane||\"customers\");setNotice(\"Event expense added.\");}finally{setLoading(button,false);}\n  }\n  async function deleteVendorEventExpenseV398(id){const event=state.currentVendorEvent;if(!event||!confirm(\"Remove this event expense?\"))return;await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/expenses/\"+encodeURIComponent(id),{method:\"DELETE\"});await loadVendorWorkspaceV398(null,true,true,state.currentVendorPane||\"customers\");setNotice(\"Event expense removed.\");}\n  function fileToDataUrlV398(file){return new Promise((resolve,reject)=>{const reader=new FileReader();reader.onload=()=>resolve(reader.result);reader.onerror=()=>reject(reader.error||new Error(\"Could not read file.\"));reader.readAsDataURL(file);});}\n  async function uploadVendorEventDocumentV398(button){\n    const event=state.currentVendorEvent,file=$(\"vendorEventDocumentFile\")?.files?.[0];if(!event||!file)throw new Error(\"Choose a PDF or image to upload.\");setLoading(button,true);\n    try{const dataUrl=await fileToDataUrlV398(file);await api(\"/api/admin/vendors/events/documents\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,name:$(\"vendorEventDocumentName\").value||file.name,fileName:file.name,dataUrl,category:$(\"vendorEventDocumentCategoryV620\")?.value||\"general\",finalVendorDocument:$(\"vendorEventDocumentFinalV620\")?.checked===true})});$(\"vendorEventDocumentFile\").value=\"\";$(\"vendorEventDocumentName\").value=\"\";if($(\"vendorEventDocumentFinalV620\"))$(\"vendorEventDocumentFinalV620\").checked=false;await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setNotice(\"Event document stored.\");}finally{setLoading(button,false);}\n  }\n  async function openVendorEventDocumentV398(id){const event=state.currentVendorEvent;if(!event)return;const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/documents/\"+encodeURIComponent(id));const url=result.document?.dataUrl;if(url){const w=window.open();if(w)w.location.href=url;}}\n  async function deleteVendorEventDocumentV398(id){const event=state.currentVendorEvent;if(!event||!confirm(\"Remove this document from the event record?\"))return;await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/documents/\"+encodeURIComponent(id),{method:\"DELETE\"});await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setNotice(\"Event document removed.\");}\n  async function releaseVendorEventDocumentV620(button){const event=state.currentVendorEvent,id=button.dataset.vendorDocumentReleaseV620,released=button.dataset.released!==\"1\";if(!event||!id)return;if(released&&!confirm(\"Release this final vendor document to booked vendors in Vendor Club?\"))return;setLoading(button,true);try{await api(\"/api/admin/vendors/club/events/\"+encodeURIComponent(event.key)+\"/documents/\"+encodeURIComponent(id)+\"/release\",{method:\"POST\",body:JSON.stringify({released}),cacheMs:0});await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"documents\");const refreshed=(state.vendorWorkspace?.allEvents||[]).find(x=>x.key===event.key);if(refreshed){state.currentVendorEvent=refreshed;renderVendorEventDocumentsV398(refreshed);}setNotice(released?\"Final document released to Vendor Club.\":\"Document removed from Vendor Club while remaining in Admin.\");}finally{setLoading(button,false);}}\n\n  function plannerGroupsV398(event){return groupedEventBookingsV398(event).filter(g=>Number(g.tables||0)>0);}\n  function vendorPlannerSlotsV401(){return \"\";}\n  function activeVendorPlannerRoomV401(){const plan=state.vendorTablePlan||{},rooms=plan.rooms||[];return rooms.find(r=>r.id===plan.activeRoomId)||rooms[0]||null;}\n  function transformVendorPointV401(x,y,room){let px=Number(x||0),py=Number(y||0),r=Number(room?.rotation||0);if(r===90)[px,py]=[100-py,px];else if(r===180)[px,py]=[100-px,100-py];else if(r===270)[px,py]=[py,100-px];if(room?.flipX)px=100-px;if(room?.flipY)py=100-py;return {x:px,y:py};}\n  function inverseVendorPointV401(x,y,room){let px=Number(x||0),py=Number(y||0);if(room?.flipX)px=100-px;if(room?.flipY)py=100-py;const r=Number(room?.rotation||0);if(r===90)[px,py]=[py,100-px];else if(r===180)[px,py]=[100-px,100-py];else if(r===270)[px,py]=[100-py,px];return {x:px,y:py};}\n  function imageDimensionsV401(dataUrl){return new Promise((resolve,reject)=>{const img=new Image();img.onload=()=>resolve({img,width:img.naturalWidth||img.width,height:img.naturalHeight||img.height});img.onerror=()=>reject(new Error(\"Could not load floor plan image.\"));img.src=dataUrl;});}\n  async function orientedVendorBackgroundV401(room){if(!room?.backgroundDataUrl)return null;const key=[room.rotation||0,room.flipX?1:0,room.flipY?1:0,room.backgroundDataUrl.length].join(\":\");if(room._orientedKey===key&&room._orientedDataUrl)return room._orientedDataUrl;const {img,width,height}=await imageDimensionsV401(room.backgroundDataUrl),rot=Number(room.rotation||0),swap=rot===90||rot===270,canvas=document.createElement(\"canvas\");canvas.width=swap?height:width;canvas.height=swap?width:height;const ctx=canvas.getContext(\"2d\");ctx.translate(canvas.width/2,canvas.height/2);ctx.scale(room.flipX?-1:1,room.flipY?-1:1);ctx.rotate(rot*Math.PI/180);ctx.drawImage(img,-width/2,-height/2);room._orientedKey=key;room._orientedDataUrl=canvas.toDataURL(\"image/jpeg\",.9);room._displayWidth=canvas.width;room._displayHeight=canvas.height;return room._orientedDataUrl;}\n  function vendorPlannerExtraTablesV418(group){const key=group?.customer?.key||\"\",map=state.vendorTablePlan?.tableOverrides||{};return Math.max(0,Number(map[key]||0));}\n  function vendorPlannerRequiredTablesV418(group){return Math.max(1,Number(group?.tables||0));} // V419: booking quantity is canonical; legacy V418 planner overrides are ignored, not deleted.\n  function adjustVendorPlannerExtraTablesV418(vendorKey,delta){\n    const plan=state.vendorTablePlan,group=plannerGroupsV398(state.currentVendorEvent).find(g=>g.customer?.key===vendorKey);if(!plan||!group)return;\n    plan.tableOverrides=plan.tableOverrides||{};const current=Math.max(0,Number(plan.tableOverrides[vendorKey]||0)),next=Math.max(0,Math.min(20,current+Number(delta||0)));\n    if(next)plan.tableOverrides[vendorKey]=next;else delete plan.tableOverrides[vendorKey];\n    const required=vendorPlannerRequiredTablesV418(group),all=(plan.rooms||[]).flatMap(r=>r.tables||[]),assigned=all.filter(t=>t.vendorKey===vendorKey);\n    if(assigned.length>required){assigned.slice(required).forEach(t=>t.vendorKey=null);}\n    setNotice((group.customer?.name||\"Vendor\")+\" now needs \"+required+\" table\"+(required===1?\"\":\"s\")+\" in this show plan\"+(next?\" (\"+next+\" manually added)\":\"\")+\".\");\n    refreshVendorPlannerAllocationsV727();scheduleVendorPlanAutosaveV403();\n  }\n  function undoVendorAllocationV418(vendorKey){const plan=state.vendorTablePlan,group=plannerGroupsV398(state.currentVendorEvent).find(g=>g.customer?.key===vendorKey);if(!plan||!group)return;let cleared=0;(plan.rooms||[]).forEach(r=>{(r.tables||[]).forEach(t=>{if(t.vendorKey===vendorKey){t.vendorKey=null;cleared++;}});if(Array.isArray(r.orphanAllocations)){const before=r.orphanAllocations.length;r.orphanAllocations=r.orphanAllocations.filter(o=>o.vendorKey!==vendorKey);cleared+=before-r.orphanAllocations.length;}});setNotice((group.customer?.name||\"Vendor\")+\" returned to the unallocated list (\"+cleared+\" table\"+(cleared===1?\"\":\"s\")+\" cleared).\");refreshVendorPlannerAllocationsV727();scheduleVendorPlanAutosaveV403();}\n  async function loadVendorBookingNotesV618(event){\n    if(!event?.key)return;event.bookingNotesStatusV618='Loading booking notes\u2026';renderVendorPlannerTrayV398(event);\n    try{\n      const data=await api('/api/admin/vendors/events/'+encodeURIComponent(event.key)+'/booking-notes',{cacheMs:0,timeoutMs:20000});\n      if(state.currentVendorEvent?.key!==event.key)return;\n      const notes=new Map((data.notes||[]).map(row=>[row.shopifyOrderId,row.note]));\n      for(const booking of event.bookings||[])if(notes.has(booking.shopifyOrderId))booking.orderNote=notes.get(booking.shopifyOrderId);\n      event.bookingNotesStatusV618=data.complete===false?'Some booking notes could not be checked. Retry before finalising allocations.':'';\n    }catch(error){if(state.currentVendorEvent?.key!==event.key)return;event.bookingNotesStatusV618='Booking notes unavailable. Retry before finalising allocations.';}\n    renderVendorPlannerTrayV398(event);\n  }\n  function vendorBookingNotesV618(group){\n    const seen=new Set(),rows=[];\n    for(const booking of group?.rows||[]){const note=String(booking.orderNote||\"\").trim();if(!note)continue;const key=String(booking.shopifyOrderId||booking.orderName||\"\")+\"|\"+note;if(seen.has(key))continue;seen.add(key);rows.push({order:booking.orderName||\"Booking\",note});}\n    return rows.length?\"<details class='orbit-booking-notes-v618' open><summary>Booking notes (\"+rows.length+\")</summary>\"+rows.map(row=>\"<p><strong>\"+esc(row.order)+\"</strong><span>\"+esc(row.note)+\"</span></p>\").join(\"\")+\"</details>\":\"\";\n  }\n  // V724 / NOTE-151D343E80 / rejection revision 1: table allocations are\n  // distinct from the temporary selected chip. A single click on an ALLOCATED\n  // chip returns the vendor to the unallocated state, across all event rooms.\n  // A click on an unallocated chip selects/deselects it for a one-click table\n  // placement. Neither action mutates bookings, orders or venue master tables.\n  // V725: real first-party booking-size evidence, not a guess from today's\n  // event variant or the booking subtotal. The November Wolverhampton audit is\n  // a read-only, admin-authenticated API with independently confirmed decisions.\n  function vendorPlannerBookingIdentityV725(row){\n    const kind=String(row?.type||'').trim(),ref=String(row?.shopifyOrderId||row?.adjustmentId||row?.vendorClubBookingId||row?.id||'').trim(),line=String(row?.lineItemId||'').trim();\n    return kind&&ref?JSON.stringify([kind,ref,line]):null;\n  }\n  function vendorPlannerExplicitSizeV725(row){\n    const fields=[row?.tableType,row?.historicalLine?.variantTitle,row?.historicalLine?.lineTitle,row?.historicalLine?.sku].filter(Boolean),detected=new Set();\n    for(const field of fields)for(const match of String(field).matchAll(/(?:^|[^\\d])([46])\\s*(?:ft|feet|foot|['\u2019])(?=[^a-z]|$)/gi))detected.add(match[1]+'ft');\n    return detected.size===1?[...detected][0]:null;\n  }\n  function vendorPlannerBookingSizesV724(group){\n    const totals={'4ft':0,'6ft':0,unknown:0},event=state.currentVendorEvent||{},verified=event.vendorPlannerSizeAuditV725;\n    for(const row of group?.rows||[]){\n      if(row.lineKind&&row.lineKind!=='table')continue;\n      const qty=Math.max(0,Math.trunc(Number(row.quantity)||0));if(!qty)continue;\n      const identity=vendorPlannerBookingIdentityV725(row),original=vendorPlannerExplicitSizeV725(row),audited=identity&&verified instanceof Map?verified.get(identity):null;\n      // A live audit decision with matching exact booking identity is the\n      // stronger source. Never silently override contradictory original data.\n      const size=audited&&['4ft','6ft'].includes(audited.size)&&audited.quantity===qty&&(!original||original===audited.size)?audited.size:\n        audited&&audited.size&&original&&audited.size!==original?'unknown':\n        audited&&audited.size===null?'unknown':original||'unknown';\n      totals[size]+=qty;\n    }\n    return totals;\n  }\n  async function loadVendorPlannerBookingAuditV725(event){\n    if(!event||!/^2026-11-14/.test(String(event.eventDate||event.date||''))||!/wolverhampton/i.test(String(event.label||event.eventName||event.displayName||event.venueName||event.venue||'')))return;\n    const eventKey=event.key;\n    event.vendorPlannerSizeAuditStatusV725='Reading original booking sizes\u2026';\n    try{\n      const data=await api('/api/admin/vendors/club/wolverhampton-november-audit',{cacheMs:0,timeoutMs:30000});\n      if(state.currentVendorEvent?.key!==eventKey)return;\n      const map=new Map(),duplicates=new Set();\n      for(const vendor of data.vendors||[])for(const record of vendor.bookings||[]){\n        if(record.bookingStatus!=='active')continue;\n        const key=vendorPlannerBookingIdentityV725({type:record.evidence?.source,shopifyOrderId:record.evidence?.source==='shopify'?record.evidence?.bookingRef:null,adjustmentId:record.evidence?.source!=='shopify'?record.evidence?.bookingRef:null,lineItemId:record.evidence?.lineItemId});\n        if(!key)continue;\n        if(map.has(key))duplicates.add(key);\n        else map.set(key,{size:['4ft','6ft'].includes(record.verifiedSize)?record.verifiedSize:null,quantity:Math.max(0,Number(record.quantity)||0)});\n      }\n      for(const key of duplicates)map.delete(key); // ambiguous identities must never be classified\n      state.currentVendorEvent.vendorPlannerSizeAuditV725=map;\n      state.currentVendorEvent.vendorPlannerSizeAuditStatusV725=Number(data.summary?.unresolved||0)>0?String(data.summary.unresolved)+' genuine bookings still need source confirmation.':'';\n      renderVendorPlannerTrayV398(state.currentVendorEvent);\n    }catch(error){\n      if(state.currentVendorEvent?.key!==event.key)return;\n      state.currentVendorEvent.vendorPlannerSizeAuditStatusV725='Booking-size audit unavailable; no table sizes have been guessed.';\n      renderVendorPlannerTrayV398(state.currentVendorEvent);\n    }\n  }\n  function vendorPlannerBookingSizeLabelV724(group){\n    const sizes=vendorPlannerBookingSizesV724(group),parts=[];\n    if(sizes['4ft'])parts.push(sizes['4ft']+' \u00D7 4ft');\n    if(sizes['6ft'])parts.push(sizes['6ft']+' \u00D7 6ft');\n    if(sizes.unknown)parts.push(sizes.unknown+' \u00D7 confirm size in booking audit');\n    return parts.join(' \u00B7 ')||'No verified booking size';\n  }\n  function vendorPlannerAllocatedCountV724(vendorKey){\n    return (state.vendorTablePlan?.rooms||[]).reduce((n,room)=>n+(room.tables||[]).filter(t=>String(t.vendorKey||'')===String(vendorKey)).length,0);\n  }\n  function toggleVendorPlannerChipV723(vendorKey){\n    if(!vendorKey)return;\n    const tray=$(\"vendorPlannerVendorTray\");if(!tray)return;\n    if(vendorPlannerAllocatedCountV724(vendorKey)>0){\n      state.vendorPlannerSelectedKeyV723=null;\n      undoVendorAllocationV418(vendorKey); // includes autosave and rerender\n      return;\n    }\n    state.vendorPlannerSelectedKeyV723=state.vendorPlannerSelectedKeyV723===vendorKey?null:vendorKey;\n    tray.querySelectorAll(\"[data-planner-vendor]\").forEach(el=>{\n      const selected=el.dataset.plannerVendor===state.vendorPlannerSelectedKeyV723;\n      el.classList.toggle(\"is-selected-v723\",selected);\n      el.setAttribute(\"aria-pressed\",String(selected));\n    });\n  }\n  function renderVendorPlannerTrayV398(event){\n    const tray=$(\"vendorPlannerVendorTray\");if(!tray)return;const plan=state.vendorTablePlan||{rooms:[]},groups=plannerGroupsV398(event||state.currentVendorEvent);\n    const validKeys=new Set(groups.map(g=>g.customer?.key).filter(Boolean));\n    if(!validKeys.has(state.vendorPlannerSelectedKeyV723))state.vendorPlannerSelectedKeyV723=null;\n    // Preserve the operator's place in the horizontal rail across allocation changes.\n    const railScrollLeftV72601=tray.scrollLeft;\n    const activeVendorV72601=(document.activeElement?.closest?.(\"[data-planner-vendor]\")?.dataset.plannerVendor)||null;\n    tray.innerHTML=groups.map(g=>{\n      const vendorKey=g.customer?.key||\"\",assigned=vendorPlannerAllocatedCountV724(vendorKey),required=vendorPlannerRequiredTablesV418(g),status=assigned>=required?\"complete\":assigned?\"partial\":\"unallocated\",name=g.customer?.businessName||g.customer?.name||\"Unknown vendor\",selected=state.vendorPlannerSelectedKeyV723===vendorKey;\n      const sizes=vendorPlannerBookingSizeLabelV724(g),action=assigned?\"Click to remove this vendor from all allocated tables\":\"Click to select, then click a free table or drag onto the map\";\n      const aria=name+\" \u00B7 \"+sizes+\" \u00B7 \"+assigned+\" of \"+required+\" allocated \u00B7 \"+action;\n      return \"<div class='orbit-vendor-planner-chip orbit-vendor-planner-chip-v724 \"+status+(selected?\" is-selected-v723\":\"\")+\"' draggable='true' tabindex='0' role='button' aria-pressed='\"+selected+\"' aria-label='\"+esc(aria)+\"' title='\"+esc(action)+\"' data-planner-vendor='\"+esc(vendorKey)+\"'><div class='orbit-vendor-planner-chip-main-v724'><strong>\"+esc(name)+\"</strong><small class='orbit-vendor-planner-booking-sizes-v724'>\"+esc(sizes)+\"</small></div><span class='orbit-vendor-planner-state-v724'>\"+(assigned?(\"Placed \"+assigned+\"/\"+required+\" \u00B7 Click to remove\"):(\"To place \u00B7 \"+required+\" table\"+(required===1?\"\":\"s\")))+\"</span></div>\";\n    }).join(\"\")||\"<p class='orbit-muted'>No table bookings for this event.</p>\";\n    tray.scrollLeft=railScrollLeftV72601;\n    if(activeVendorV72601){const prior=[...tray.querySelectorAll(\"[data-planner-vendor]\")].find(el=>el.dataset.plannerVendor===activeVendorV72601);if(prior)prior.focus({preventScroll:true});}\n    tray.querySelectorAll(\"[data-planner-vendor]\").forEach(el=>{\n      el.addEventListener(\"dragstart\",e=>{e.dataTransfer.setData(\"application/x-orbit-vendor\",el.dataset.plannerVendor);e.dataTransfer.effectAllowed=\"move\";});\n      el.addEventListener(\"click\",()=>toggleVendorPlannerChipV723(el.dataset.plannerVendor));\n      el.addEventListener(\"keydown\",e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();toggleVendorPlannerChipV723(el.dataset.plannerVendor);}});\n    });\n  }\n  function effectiveVendorTableOrientationV403(table,room){const base=table?.orientation===\"vertical\"?\"vertical\":\"horizontal\",rot=Number(room?.rotation||0);return (rot===90||rot===270)?(base===\"vertical\"?\"horizontal\":\"vertical\"):base;}\n  function vendorTableAdjacencyScoreV419(a,b,room){\n    const aa=vendorTableDisplayBoxV404(a,room),bb=vendorTableDisplayBoxV404(b,room),orientation=effectiveVendorTableOrientationV403(b,room);\n    const cross=orientation===\"vertical\"?Math.abs(aa.x-bb.x):Math.abs(aa.y-bb.y),along=orientation===\"vertical\"?Math.abs(aa.y-bb.y):Math.abs(aa.x-bb.x);\n    const crossSize=orientation===\"vertical\"?Math.max(aa.width,bb.width):Math.max(aa.height,bb.height);\n    const sameOrientation=effectiveVendorTableOrientationV403(a,room)===orientation;\n    return (sameOrientation?0:100000)+(cross>Math.max(1.25,crossSize*1.25)?50000:0)+cross*1000+along;\n  }\n  function nearestVendorTablesV401(room,target,needed,vendorKey,alreadyAssigned=new Set()){\n    const available=(room.tables||[]).filter(t=>!t.vendorKey&&!alreadyAssigned.has(t.id));if(!needed||!available.length)return [];\n    const selected=[];let cursor=target;\n    if(available.includes(target)){selected.push(target);cursor=target;}\n    while(selected.length<needed){const candidates=available.filter(t=>!selected.includes(t));if(!candidates.length)break;\n      const cb=vendorTableDisplayBoxV404(cursor,room),co=effectiveVendorTableOrientationV403(cursor,room);\n      candidates.sort((a,b)=>{const score=t=>{const tb=vendorTableDisplayBoxV404(t,room),to=effectiveVendorTableOrientationV403(t,room),dx=Math.abs(tb.x-cb.x),dy=Math.abs(tb.y-cb.y),dist=Math.hypot(dx,dy),straight=co===\"vertical\"?dx:dy,turn=to===co?0:Math.max(0,dist-1.5)*4;return dist+straight*2+turn;};return score(a)-score(b);});\n      const next=candidates[0];selected.push(next);cursor=next;\n    }\n    return selected.slice(0,needed);\n  }\n  function assignVendorSlotsV401(vendorKey,tableId){\n    const plan=state.vendorTablePlan,room=activeVendorPlannerRoomV401();if(!plan||!room)return;const groups=plannerGroupsV398(state.currentVendorEvent),group=groups.find(g=>g.customer?.key===vendorKey);if(!group)return;const target=(room.tables||[]).find(t=>t.id===tableId);if(!target)return;\n    const allTables=(plan.rooms||[]).flatMap(r=>r.tables||[]),activeVendorKeys=new Set(groups.map(g=>g.customer?.key).filter(Boolean));\n    if(target.vendorKey&&target.vendorKey!==vendorKey){\n      if(activeVendorKeys.has(target.vendorKey)){setNotice(\"Table \"+target.label+\" is already allocated to another current vendor.\",true);return;}\n      const staleKey=target.vendorKey,freed=allTables.filter(t=>t.vendorKey===staleKey);freed.forEach(t=>t.vendorKey=null);\n      setNotice(\"Recovered \"+freed.length+\" stale table allocation\"+(freed.length===1?\"\":\"s\")+\" from the previous vendor identity. Reassigning to \"+(group.customer?.businessName||group.customer?.name||\"the current vendor\")+\".\");\n    }\n    const needed=vendorPlannerRequiredTablesV418(group);let existing=allTables.filter(t=>t.vendorKey===vendorKey);\n    if(existing.length>=needed){allTables.forEach(t=>{if(t.vendorKey===vendorKey)t.vendorKey=null;});existing=[];}\n    const remaining=Math.max(0,needed-existing.length),already=new Set(existing.map(t=>t.id)),slots=nearestVendorTablesV401(room,target,remaining,vendorKey,already);slots.forEach(t=>t.vendorKey=vendorKey);\n    const assigned=allTables.filter(t=>t.vendorKey===vendorKey);state.vendorPlannerSelectedKeyV723=null;if(assigned.length<needed)setNotice(\"Only \"+assigned.length+\" of \"+needed+\" required table slots are allocated. Drop the vendor on the closest free table to fill the gap.\",true);else setNotice((group.customer?.businessName||group.customer?.name||\"Vendor\")+\" allocated to \"+assigned.length+\" closest table slots.\");refreshVendorPlannerAllocationsV727();scheduleVendorPlanAutosaveV403();\n  }\n  let vendorPlanAutosaveTimerV403=null;\n  let vendorPlanSaveInFlightV726=null;\n  let vendorPlanEditRevisionV726=0;\n  function setVendorPlanSaveStateV403(text,state=\"\"){const el=$(\"vendorPlannerSaveState\");if(!el)return;el.textContent=text;el.dataset.state=state;}\n  function scheduleVendorPlanAutosaveV403(){if(!state.currentVendorEvent)return;vendorPlanEditRevisionV726++;setVendorPlanSaveStateV403(\"Unsaved changes\",\"dirty\");clearTimeout(vendorPlanAutosaveTimerV403);vendorPlanAutosaveTimerV403=setTimeout(()=>saveVendorTablePlanV398(null,true).catch(err=>{setVendorPlanSaveStateV403(\"Autosave failed\",\"error\");setNotice(err.message||err,true);}),900);}\n  function renderVendorRoomTabsV401(){const target=$(\"vendorPlannerRoomTabs\"),rooms=state.vendorTablePlan?.rooms||[];if(!target)return;target.innerHTML=rooms.map(r=>\"<span class='orbit-vendor-room-tab-wrap'><button type='button' class='secondary \"+(r.id===state.vendorTablePlan.activeRoomId?\"active\":\"\")+\"' data-vendor-room-tab='\"+esc(r.id)+\"'>\"+esc(r.name||\"Room\")+\" <small>\"+Number((r.tables||[]).length)+\" tables</small></button><button type='button' class='secondary orbit-vendor-room-remove' data-vendor-room-remove='\"+esc(r.id)+\"' aria-label='Remove \"+esc(r.name||\"room\")+\"'>\u00D7</button></span>\").join(\"\");}\n  function vendorTableDisplayBoxV404(table,room){const point=transformVendorPointV401(table.x,table.y,room),rot=Number(room?.rotation||0),swap=rot===90||rot===270;let width=Math.max(.8,Math.min(12,Number(table.widthPct||0)||((table.orientation===\"vertical\")?2.8:6.4))),height=Math.max(.8,Math.min(12,Number(table.heightPct||0)||((table.orientation===\"vertical\")?6.4:2.8)));if(swap)[width,height]=[height,width];return {x:point.x,y:point.y,width,height};}\n  function applyVendorTableGeometryV404(el,table,room){const box=vendorTableDisplayBoxV404(table,room);el.style.left=box.x+\"%\";el.style.top=box.y+\"%\";el.style.width=box.width+\"%\";el.style.height=box.height+\"%\";el.style.minHeight=\"0\";el.style.setProperty(\"transform\",\"translate(-50%,-50%) rotate(\"+Number(table?.angleDeg||0)+\"deg)\",\"important\");el.style.setProperty(\"--orbit-table-counter-rotation\",(-Number(table?.angleDeg||0))+\"deg\");el.classList.toggle(\"horizontal\",effectiveVendorTableOrientationV403(table,room)===\"horizontal\");el.classList.toggle(\"vertical\",effectiveVendorTableOrientationV403(table,room)===\"vertical\");return box;}\n  function inferVendorPdfTableGeometryV410(tables,pageWidth=0,pageHeight=0){\n    const rows=Array.isArray(tables)?tables:[],sourceRows=rows.map(table=>({table,x:Number(table.x||0),y:Number(table.y||0)})),pw=Math.max(1,Number(pageWidth||100)),ph=Math.max(1,Number(pageHeight||100));\n    let changed=false;\n    for(const table of rows){\n      if(table.manualGeometry){if(Number(table.geometryVersion||0)<411){table.geometryVersion=411;changed=true;}continue;}\n      const tx=Number(table.x||0),ty=Number(table.y||0);\n      const verticalNeighbours=sourceRows.filter(other=>other.table!==table&&Math.abs(other.x-tx)<=1.15).map(other=>Math.abs(other.y-ty)).filter(d=>d>=1.4&&d<=8).sort((a,b)=>a-b);\n      const horizontalNeighbours=sourceRows.filter(other=>other.table!==table&&Math.abs(other.y-ty)<=.85).map(other=>Math.abs(other.x-tx)).filter(d=>d>=1.8&&d<=10).sort((a,b)=>a-b);\n      let orientation=table.orientation===\"vertical\"?\"vertical\":\"horizontal\";\n      if(verticalNeighbours.length>horizontalNeighbours.length)orientation=\"vertical\";\n      else if(horizontalNeighbours.length>verticalNeighbours.length)orientation=\"horizontal\";\n      else if(verticalNeighbours.length&&horizontalNeighbours.length){\n        const vPhysical=verticalNeighbours[0]/100*ph,hPhysical=horizontalNeighbours[0]/100*pw;\n        orientation=vPhysical<=hPhysical?\"vertical\":\"horizontal\";\n      }\n      const neighbours=orientation===\"vertical\"?verticalNeighbours:horizontalNeighbours;\n      let widthPct=Number(table.widthPct||0),heightPct=Number(table.heightPct||0),crossPct=0;\n      if(neighbours.length){\n        const stepPct=neighbours[0],alongPx=stepPct/100*(orientation===\"vertical\"?ph:pw),crossPx=alongPx*.50;\n        crossPct=orientation===\"vertical\"?crossPx/pw*100:crossPx/ph*100;\n        if(orientation===\"vertical\"){\n          heightPct=Math.max(1.8,Math.min(7.5,stepPct*.94));\n          widthPct=Math.max(1.6,Math.min(6.5,crossPx/pw*100));\n        }else{\n          widthPct=Math.max(2.2,Math.min(9.5,stepPct*.94));\n          heightPct=Math.max(1.4,Math.min(5.5,crossPx/ph*100));\n        }\n      }\n      if(table.orientation!==orientation||Math.abs(Number(table.widthPct||0)-widthPct)>.05||Math.abs(Number(table.heightPct||0)-heightPct)>.05)changed=true;\n      // V410: x/y are source-plan coordinates and are immutable. Earlier releases\n      // tried to compensate for CSS background letterboxing by nudging vertical\n      // coordinates. The image and overlay now share one exact aspect-ratio stage,\n      // so all per-browser/per-viewport offsets are deliberately removed.\n      if(Number(table.geometryVersion||0)<410)changed=true;\n      table.orientation=orientation;table.widthPct=Number(widthPct.toFixed(3));table.heightPct=Number(heightPct.toFixed(3));table.geometryVersion=410;\n    }\n    return {tables:rows,changed};\n  }\n  function renderVendorAssignmentSpansV401(canvas,room){const groups=plannerGroupsV398(state.currentVendorEvent);for(const g of groups){const boxes=(room.tables||[]).filter(t=>t.vendorKey===g.customer?.key).map(t=>vendorTableDisplayBoxV404(t,room));if(!boxes.length)continue;const minX=Math.min(...boxes.map(p=>p.x-p.width/2)),maxX=Math.max(...boxes.map(p=>p.x+p.width/2)),minY=Math.min(...boxes.map(p=>p.y-p.height/2)),maxY=Math.max(...boxes.map(p=>p.y+p.height/2)),span=document.createElement(\"div\");span.className=\"orbit-vendor-assignment-span\";span.style.left=Math.max(0,minX)+\"%\";span.style.top=Math.max(0,minY)+\"%\";span.style.width=Math.min(100-minX,maxX-minX)+\"%\";span.style.height=Math.min(100-minY,maxY-minY)+\"%\";span.innerHTML=\"<strong>\"+esc(g.customer?.businessName||g.customer?.name||\"Vendor\")+\"</strong><small>\"+boxes.length+\"/\"+Number(g.tables||0)+\" table slots</small>\";canvas.appendChild(span);}}\n  async function restoreVendorPlannerSourceCoordinatesV410(room){\n    if(!room?.venuePlanId||Number((room.tables||[])[0]?.geometryVersion||0)>=410)return false;\n    let source=(state.vendorFloorPlans||[]).find(p=>p.id===room.venuePlanId)||null;\n    if(!source?.tables?.length){try{source=(await api(\"/api/admin/vendors/venue-floor-plans/\"+encodeURIComponent(room.venuePlanId),{timeoutMs:20000})).floorPlan||null;}catch(_){return false;}}\n    if(!source?.tables?.length)return false;\n    const byId=new Map((source.tables||[]).map(t=>[String(t.id||t.label),t])),byLabel=new Map((source.tables||[]).map(t=>[String(t.label),t]));let restored=false;\n    for(const table of room.tables||[]){const canonical=byId.get(String(table.id||table.label))||byLabel.get(String(table.label));if(!canonical)continue;table.x=Number(canonical.x);table.y=Number(canonical.y);table.orientation=canonical.orientation||table.orientation;table.widthPct=Number(canonical.widthPct||table.widthPct||0);table.heightPct=Number(canonical.heightPct||table.heightPct||0);restored=true;}\n    if(restored){room.width=Number(source.width||room.width||0);room.height=Number(source.height||room.height||0);}\n    return restored;\n  }\n  async function renderVendorTablePlanV398(){\n    const canvas=$(\"vendorTablePlannerCanvas\");if(!canvas)return;const room=activeVendorPlannerRoomV401();renderVendorRoomTabsV401();if(!room){state.vendorPlannerRenderSerialV726=(state.vendorPlannerRenderSerialV726||0)+1;delete canvas.dataset.plannerRoomIdV727;canvas.innerHTML=\"<div class='orbit-vendor-plan-empty'>Add a saved venue floor plan / room to this event.</div>\";canvas.style.backgroundImage=\"none\";canvas.classList.remove(\"has-plan\");if($(\"vendorPlannerOrientationControls\"))$(\"vendorPlannerOrientationControls\").hidden=true;renderVendorPlannerTrayV398(state.currentVendorEvent);updateVendorPlannerProgressV399();return;}\n    if($(\"vendorPlannerOrientationControls\"))$(\"vendorPlannerOrientationControls\").hidden=false;\n    // V726: Rendering is PURE with respect to Venue Master geometry. Historic\n    // repair/restore calls here rewrote x/y/room dimensions and autosaved them\n    // merely because a vendor allocation triggered a redraw. Never do that.\n    const renderSerial=(state.vendorPlannerRenderSerialV726=(state.vendorPlannerRenderSerialV726||0)+1);\n    const bg=await orientedVendorBackgroundV401(room).catch(()=>room.backgroundDataUrl||null);\n    if(renderSerial!==state.vendorPlannerRenderSerialV726 || room!==activeVendorPlannerRoomV401())return;\n    canvas.innerHTML=\"\";canvas.dataset.plannerRoomIdV727=String(room.id);canvas.style.backgroundImage=\"none\";canvas.classList.toggle(\"has-plan\",Boolean(bg));canvas.style.aspectRatio=(room._displayWidth&&room._displayHeight)?room._displayWidth+\" / \"+room._displayHeight:\"4 / 3\";const zoom=Number(state.vendorPlannerZoom||1);canvas.style.transform=\"scale(\"+zoom+\")\";canvas.style.transformOrigin=\"top left\";\n    if(bg){const image=document.createElement(\"img\");image.className=\"orbit-vendor-plan-image\";image.alt=\"\";image.draggable=false;image.src=bg;canvas.appendChild(image);}\n    const plannerVendorMap=new Map(plannerGroupsV398(state.currentVendorEvent).map(g=>[String(g.customer?.key||\"\"),g.customer||{}]));\n    for(const table of room.tables||[]){const vendor=plannerVendorMap.get(String(table.vendorKey||\"\"))||null,point=transformVendorPointV401(table.x,table.y,room),orientation=effectiveVendorTableOrientationV403(table,room),el=document.createElement(\"button\");el.type=\"button\";el.className=\"orbit-vendor-table-marker \"+orientation+(vendor?\" assigned\":\"\");el.dataset.tableId=table.id;applyVendorTableGeometryV404(el,table,room);el.draggable=Boolean(vendor);el.innerHTML=\"<strong>\"+esc(table.label)+\"</strong>\"+(vendor?\"\":\"<small>Free</small>\");el.title=vendor?((vendor.businessName||vendor.name||\"Vendor\")+\" \u00B7 Table \"+table.label+\" \u00B7 click to return vendor to unallocated\"):\"Click to allocate the selected vendor, or drag a vendor here\";el.addEventListener(\"dragstart\",e=>{if(table.vendorKey)e.dataTransfer.setData(\"application/x-orbit-vendor\",table.vendorKey);else e.preventDefault();});el.addEventListener(\"dragover\",e=>e.preventDefault());el.addEventListener(\"drop\",e=>{e.preventDefault();const vendorKey=e.dataTransfer.getData(\"application/x-orbit-vendor\");if(vendorKey)assignVendorSlotsV401(vendorKey,table.id);});el.addEventListener(\"click\",()=>{if(table.vendorKey){state.vendorPlannerSelectedKeyV723=null;undoVendorAllocationV418(table.vendorKey);return;}if(state.vendorPlannerSelectedKeyV723)assignVendorSlotsV401(state.vendorPlannerSelectedKeyV723,table.id);});canvas.appendChild(el);}\n    renderVendorPlannerTrayV398(state.currentVendorEvent);updateVendorPlannerProgressV399();\n  }\n  // V726.0.1 \u2014 allocation clicks change vendor state, never the physical plan DOM.\n  // Preserve each marker's x/y, room, orientation, dimensions, scroll/zoom and\n  // the background image. Full rendering is reserved for loading/changing rooms.\n  function refreshVendorPlannerAllocationsV727(){\n    const canvas=$(\"vendorTablePlannerCanvas\"),room=activeVendorPlannerRoomV401();\n    if(!canvas||!room||canvas.dataset.plannerRoomIdV727!==String(room.id)){\n      void renderVendorTablePlanV398();return;\n    }\n    const tables=new Map((room.tables||[]).map(t=>[String(t.id),t]));\n    const vendorMap=new Map(plannerGroupsV398(state.currentVendorEvent).map(g=>[String(g.customer?.key||\"\"),g.customer||{}]));\n    canvas.querySelectorAll(\".orbit-vendor-table-marker[data-table-id]\").forEach(el=>{\n      const table=tables.get(String(el.dataset.tableId));if(!table)return;\n      const vendor=vendorMap.get(String(table.vendorKey||\"\"))||null;\n      const assigned=Boolean(vendor);\n      el.classList.toggle(\"assigned\",assigned);\n      el.draggable=assigned;\n      el.innerHTML=\"<strong>\"+esc(table.label)+\"</strong>\"+(assigned?\"\":\"<small>Free</small>\");\n      el.title=assigned?((vendor.businessName||vendor.name||\"Vendor\")+\" \u00B7 Table \"+table.label+\" \u00B7 click to return vendor to unallocated\"):\"Click to allocate the selected vendor, or drag a vendor here\";\n      // Deliberately do not alter el.style, DOM order, map image, or room tables.\n    });\n    renderVendorPlannerTrayV398(state.currentVendorEvent);\n    updateVendorPlannerProgressV399();\n  }\n  async function loadVendorFloorPlansV401(venueId=\"\"){const result=await api(\"/api/admin/vendors/venue-floor-plans\"+(venueId?\"?venueId=\"+encodeURIComponent(venueId):\"\"),{timeoutMs:20000});if(!venueId)state.vendorFloorPlans=result.floorPlans||[];return result.floorPlans||[];}\n  function populateVendorFloorPlanSelectV401(){const select=$(\"vendorPlannerFloorPlanSelect\");if(!select)return;const plans=state.vendorFloorPlans||[],venues=new Map((state.vendorVenues||[]).map(v=>[v.id,v.name]));select.innerHTML=\"<option value=''>Choose a saved venue plan</option>\"+plans.map(p=>\"<option value='\"+esc(p.id)+\"'>\"+esc((venues.get(p.venueId)||\"Venue\")+\" \u00B7 \"+(p.roomName||p.name)+\" \u00B7 \"+Number((p.tables||[]).length)+\" tables\")+\"</option>\").join(\"\");}\n  async function addVendorPlannerRoomV401(){const select=$(\"vendorPlannerFloorPlanSelect\"),id=select?.value;if(!id)throw new Error(\"Choose a saved venue floor plan first.\");const result=await api(\"/api/admin/vendors/venue-floor-plans/\"+encodeURIComponent(id)),p=result.floorPlan;if(!p)throw new Error(\"Floor plan could not be loaded.\");state.vendorTablePlan=state.vendorTablePlan||{version:2,rooms:[]};state.vendorTablePlan.version=2;state.vendorTablePlan.rooms=state.vendorTablePlan.rooms||[];const otherVenue=state.vendorTablePlan.rooms.find(r=>r.venueId&&r.venueId!==p.venueId);if(otherVenue)throw new Error(\"This event already uses floor plans from another venue. Remove those room maps before switching venue.\");if(state.vendorTablePlan.rooms.some(r=>r.venuePlanId===p.id)){state.vendorTablePlan.activeRoomId=state.vendorTablePlan.rooms.find(r=>r.venuePlanId===p.id).id;await renderVendorTablePlanV398();return;}const room={id:\"room-\"+Date.now().toString(36),venuePlanId:p.id,venueId:p.venueId,name:p.roomName||p.name,rotation:Number(p.rotation||0),flipX:Boolean(p.flipX),flipY:Boolean(p.flipY),backgroundDataUrl:p.backgroundDataUrl,width:p.width,height:p.height,tables:(p.tables||[]).map(x=>({...x,vendorKey:null}))};state.vendorTablePlan.rooms.push(room);state.vendorTablePlan.activeRoomId=room.id;scheduleVendorPlanAutosaveV403();if(state.currentVendorEvent){state.currentVendorEvent.venueId=p.venueId;api(\"/api/admin/vendors/events/config\",{method:\"POST\",body:JSON.stringify({eventKey:state.currentVendorEvent.key,venueId:p.venueId})}).catch(error=>console.warn(\"Vendor event venue binding warning\",error));}await renderVendorTablePlanV398();}\n  async function saveVendorTablePlanV398(button,automatic=false){\n    const event=state.currentVendorEvent;if(!event)return;\n    // One writer at a time. Otherwise delayed server replies can replace a\n    // newer local allocation or send requests in the wrong order.\n    if(vendorPlanSaveInFlightV726){\n      await vendorPlanSaveInFlightV726;\n      if(event!==state.currentVendorEvent)return;\n    }\n    const revision=vendorPlanEditRevisionV726;\n    const plan=state.vendorTablePlan||{version:3,rooms:[]};\n    const status=$(\"vendorPlannerStatus\")?.value===\"ready\"?\"ready\":\"draft\";\n    const completedAt=status===\"ready\"?(plan.completionConfirmedAt||new Date().toISOString()):null;\n    const payload={eventKey:event.key,status,completionConfirmedAt:completedAt,activeRoomId:plan.activeRoomId,\n      tableOverrides:plan.tableOverrides||{},rooms:(plan.rooms||[]).map(r=>({id:r.id,venuePlanId:r.venuePlanId,venueId:r.venueId,name:r.name,\n        // Event-specific allocation fields only. Venue Master geometry is never written by a click.\n        tables:(r.tables||[]).map(t=>({id:t.id,label:t.label,vendorKey:t.vendorKey||null})),orphanAllocations:r.orphanAllocations||[]}))};\n    setLoading(button,true);\n    const pending=api(\"/api/admin/vendors/events/table-plan\",{method:\"POST\",body:JSON.stringify(payload)});\n    vendorPlanSaveInFlightV726=pending;\n    try{\n      const saved=await pending;\n      if(event!==state.currentVendorEvent)return;\n      if(revision!==vendorPlanEditRevisionV726){\n        setVendorPlanSaveStateV403(\"Saving newer changes\u2026\",\"dirty\");\n        clearTimeout(vendorPlanAutosaveTimerV403);\n        vendorPlanAutosaveTimerV403=setTimeout(()=>saveVendorTablePlanV398(null,true).catch(err=>{setVendorPlanSaveStateV403(\"Autosave failed\",\"error\");setNotice(err.message||err,true);}),50);\n        return;\n      }\n      // Do not replace local table state from a potentially older API reply.\n      if(saved?.tablePlan){plan.updatedAt=saved.tablePlan.updatedAt;plan.status=saved.tablePlan.status;plan.completionConfirmedAt=saved.tablePlan.completionConfirmedAt;}\n      const stamp=new Date().toLocaleTimeString([],{hour:\"2-digit\",minute:\"2-digit\"});\n      setVendorPlanSaveStateV403(\"Saved \"+stamp,\"saved\");\n      if(!automatic)setNotice(\"Vendor allocations saved. Venue master still owns all table numbers and geometry.\");\n    }finally{\n      if(vendorPlanSaveInFlightV726===pending)vendorPlanSaveInFlightV726=null;\n      setLoading(button,false);\n    }\n  }\n  async function updateVendorTablePlanStatusV467(){const event=state.currentVendorEvent,select=$(\"vendorPlannerStatus\"),plan=state.vendorTablePlan;if(!event||!select||!plan)return;const previous=vendorTablePlanIsManuallyCompleteV466(plan)?\"ready\":\"draft\",status=select.value===\"ready\"?\"ready\":\"draft\";select.disabled=true;setVendorPlanSaveStateV403(\"Saving status\u2026\",\"dirty\");try{const saved=await api(\"/api/admin/vendors/events/table-plan/status\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,status}),cacheMs:0});if(saved?.tablePlan){state.vendorTablePlan={...plan,status:saved.tablePlan.status,completionConfirmedAt:saved.tablePlan.completionConfirmedAt,updatedAt:saved.tablePlan.updatedAt};}setVendorPlanSaveStateV403(\"Saved\",\"saved\");setNotice(status===\"ready\"?\"Floor plan marked Complete \u00B7 ready for show. Table layout was not changed.\":\"Floor plan marked Draft \u00B7 not complete. Table layout was not changed.\");await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"live\").catch(()=>{});}catch(err){select.value=previous;setVendorPlanSaveStateV403(\"Status save failed\",\"error\");throw err;}finally{select.disabled=false;}}\n  function transformActiveVendorRoomV401(action){const room=activeVendorPlannerRoomV401();if(!room)return;if(state.vendorTablePlan?.masterArchitecture||state.vendorTablePlan?.version===3){setNotice(\"Venue Floor Plan is the master for table layout and orientation. Make physical layout changes under Vendors \u2192 Venues \u2192 Floor Plan; this event stores vendor allocations only.\",true);return;}if(action===\"rotate-left\")room.rotation=(Number(room.rotation||0)+270)%360;else if(action===\"rotate-right\")room.rotation=(Number(room.rotation||0)+90)%360;else if(action===\"flip-x\")room.flipX=!room.flipX;else if(action===\"flip-y\")room.flipY=!room.flipY;else if(action===\"reset\"){room.rotation=0;room.flipX=false;room.flipY=false;}room._orientedKey=null;renderVendorTablePlanV398();scheduleVendorPlanAutosaveV403();}\n  async function printVendorEventShowPackageV404(){const event=state.currentVendorEvent;if(!event)return;const previousPlan=state.vendorTablePlan;try{const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/table-plan\");state.vendorTablePlan=result.tablePlan||{version:2,rooms:[]};await printVendorShowPackageV398();}finally{state.vendorTablePlan=previousPlan;}}\n  function vendorShowPackageTableLabelsV461(assigned=[]){return (assigned||[]).map(x=>String(x?.label||'').trim()).filter(Boolean).join(', ');}\n  function openSecretFreePrintDocumentV476(popup,html){\n    if(!popup)throw new Error(\"Orbit could not open the printable show package. Allow pop-ups for Admin OS and try again.\");\n    let printUrl=\"\";\n    try{\n      const blob=new Blob([String(html||\"\")],{type:\"text/html;charset=utf-8\"});\n      printUrl=URL.createObjectURL(blob);\n      if(!String(printUrl).startsWith(\"blob:\")||/[?&]secret=/i.test(String(printUrl)))throw new Error(\"Unsafe printable document URL.\");\n      try{popup.opener=null;}catch(_){}\n      popup.location.replace(printUrl);\n      setTimeout(()=>{try{URL.revokeObjectURL(printUrl);}catch(_){}},10*60*1000);\n      return printUrl;\n    }catch(error){\n      try{popup.close();}catch(_){}\n      throw new Error(\"Orbit blocked the printable show package because a secret-free print document could not be created. \"+(error?.message||error));\n    }\n  }\n  async function printVendorShowPackageV398(){\n    const event=state.currentVendorEvent,plan=state.vendorTablePlan||{rooms:[]};if(!event)return;const groups=plannerGroupsV398(event),w=window.open(\"about:blank\",\"_blank\");if(!w)return;let pages=\"\";for(const room of plan.rooms||[]){const bg=await orientedVendorBackgroundV401(room).catch(()=>room.backgroundDataUrl||\"\"),ratio=(room._displayWidth||room.width||4)+\" / \"+(room._displayHeight||room.height||3);pages+=\"<h2>\"+esc(room.name||\"Floor plan\")+\"</h2><div class='plan' style='aspect-ratio:\"+ratio+\"'><img alt='Floor plan' src='\"+esc(bg)+\"'></div>\";}\n    const allTables=(plan.rooms||[]).flatMap(r=>(r.tables||[]).map(t=>({...t,roomName:r.name}))),rows=groups.map(g=>({...g,assigned:allTables.filter(t=>t.vendorKey===g.customer?.key)})),html=\"<!doctype html><html><head><meta name='referrer' content='no-referrer'><title>\"+esc(event.displayName||event.label)+\" show package</title><style>body{font-family:Arial;color:#111;margin:24px}h1{margin-bottom:4px}.plan{position:relative;width:100%;border:1px solid #bbb;page-break-after:always;overflow:hidden}.plan>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:0}table{width:100%;border-collapse:collapse}th,td{padding:7px;border-bottom:1px solid #ddd;text-align:left}@media print{button{display:none}}</style></head><body><button onclick='window.print()'>Print</button><h1>\"+esc(event.displayName||event.label)+\"</h1><p>\"+esc(vendorDateV385(event.eventDate))+\"</p>\"+pages+\"<h2>Vendor allocation</h2><table><thead><tr><th>Vendor / business</th><th>Booking name</th><th>Order #</th><th>Table numbers</th><th>Tables</th><th>Display cases</th></tr></thead><tbody>\"+rows.map(g=>\"<tr><td>\"+esc(g.customer?.businessName||g.customer?.name||\"\")+\"</td><td>\"+esc(g.customer?.name||g.customer?.bookingName||g.customer?.contactName||\"\u2014\")+\"</td><td>\"+esc((g.orders||[]).join(\", \")||\"\u2014\")+\"</td><td>\"+esc(vendorShowPackageTableLabelsV461(g.assigned)||\"UNALLOCATED\")+\"</td><td>\"+vendorPlannerRequiredTablesV418(g)+\"</td><td>\"+Number(g.displayCases||0)+\"</td></tr>\").join(\"\")+\"</tbody></table></body></html>\";\n    openSecretFreePrintDocumentV476(w,html);setTimeout(()=>{try{w.focus();}catch(_){}},200);\n  }\n\n  function vendorRichEditorHtmlV421(id){const editor=$(id),source=$(id+\"Source\");return source&&!source.hidden?source.value:(editor?.innerHTML||\"\");}\n  function vendorRichEditorTextV421(id){const editor=$(id),source=$(id+\"Source\");if(source&&!source.hidden){const tmp=document.createElement(\"div\");tmp.innerHTML=source.value;return tmp.innerText||tmp.textContent||\"\";}return editor?.innerText||\"\";}\n  function setVendorRichEditorV421(id,html,text=\"\"){const editor=$(id),source=$(id+\"Source\"),value=html||esc(text||\"\").replace(/\\n/g,\"<br>\");if(editor)editor.innerHTML=value;if(source){source.value=value;source.hidden=true;}if(editor)editor.hidden=false;}\n  function ensureVendorRichSourceActionsV423(id){const source=$(id+\"Source\"),field=source?.closest(\"[data-vendor-rich-field]\")||source?.parentElement,toolbar=field?.querySelector(\".orbit-vendor-brief-toolbar\")||(id===\"vendorEventEmailCustomMessage\"?$(\"vendorEventBriefSourceToggle\")?.parentElement:null);if(!source||!toolbar)return null;let button=toolbar.querySelector('[data-vendor-rich-select-all=\"'+id+'\"]');if(!button){button=document.createElement(\"button\");button.type=\"button\";button.className=\"secondary orbit-vendor-source-select-all\";button.dataset.vendorRichSelectAll=id;button.textContent=\"Select all\";button.hidden=true;const toggle=toolbar.querySelector('[data-vendor-rich-source=\"'+id+'\"]')||(id===\"vendorEventEmailCustomMessage\"?$(\"vendorEventBriefSourceToggle\"):null);toolbar.insertBefore(button,toggle||null);}return button;}\n  function selectAllVendorRichSourceV423(id){const source=$(id+\"Source\");if(!source||source.hidden)return;source.focus();source.select();source.setSelectionRange(0,source.value.length);}\n  function toggleVendorRichSourceV421(id){const editor=$(id),source=$(id+\"Source\"),button=document.querySelector('[data-vendor-rich-source=\"'+id+'\"]')||(id===\"vendorEventEmailCustomMessage\"?$(\"vendorEventBriefSourceToggle\"):null),selectAll=ensureVendorRichSourceActionsV423(id);if(!editor||!source)return;if(source.hidden){source.value=editor.innerHTML;editor.hidden=true;source.hidden=false;if(button)button.textContent=\"Visual editor\";if(selectAll)selectAll.hidden=false;source.focus();source.scrollLeft=0;}else{editor.innerHTML=source.value;source.hidden=true;editor.hidden=false;if(button)button.textContent=\"HTML source\";if(selectAll)selectAll.hidden=true;editor.focus();}}\n  function formatVendorRichV421(id,command){const editor=$(id);if(!editor||editor.hidden)return;editor.focus();document.execCommand(command,false,null);}\n  async function saveVendorGlobalRulesV422(button){setLoading(button,true);try{const html=vendorRichEditorHtmlV421(\"vendorGlobalRules\"),text=vendorRichEditorTextV421(\"vendorGlobalRules\"),result=await api(\"/api/admin/vendors/global-settings\",{method:\"POST\",body:JSON.stringify({globalRules:text,globalRulesHtml:html})});state.vendorWorkspace=state.vendorWorkspace||{};state.vendorWorkspace.globalSettings=result.settings||{};setVendorRichEditorV421(\"vendorGlobalRules\",result.settings?.globalRulesHtml,result.settings?.globalRules);const box=$(\"vendorGlobalRulesResult\");if(box){box.hidden=false;box.textContent=\"Global Vendor Rules saved. They will now be included in every Vendor briefing.\";}setNotice(\"Global Vendor Rules saved for all Orbit shows.\");return result;}finally{setLoading(button,false);}}\n  function formatVendorBriefingV419(command){\n    const editor=$(\"vendorEventEmailCustomMessage\");if(!editor)return;editor.focus();\n    document.execCommand(command,false,null);\n  }\n  async function adjustVendorBookingTablesV420(group,row,delta){\n    if(!row)throw new Error(\"No editable table booking was found for this vendor.\");const verb=delta>0?\"Add one table to\":\"Remove one table from\",name=group.customer?.businessName||group.customer?.name||\"this vendor\";\n    if(!confirm(verb+\" \"+name+\"? Orbit will adjust the operational booking and Table Planner requirement. The original Shopify order remains unchanged.\"))return;\n    if(row.type===\"complimentary\")await api(\"/api/admin/vendors/bookings/complimentary-action\",{method:\"POST\",body:JSON.stringify({adjustmentId:row.adjustmentId,action:\"adjust-tables\",delta})});\n    else await api(\"/api/admin/vendors/bookings/tables\",{method:\"POST\",body:JSON.stringify({shopifyOrderId:row.shopifyOrderId,lineItemId:row.lineItemId,delta})});\n    await loadVendorWorkspaceV398(null,true,true,state.currentVendorPane||\"customers\");const refreshed=vendorEventByKeyV399(state.currentVendorEventKey);if(refreshed){state.currentVendorEvent=refreshed;renderVendorEventDetailV398(refreshed);}setNotice((delta>0?\"One table added to \":\"One table removed from \")+name+\". Table Planner now uses the updated booking quantity.\");\n  }\n  async function saveVendorEventEmailCustomV414(button=null,{quiet=false}={}){\n    const selectedKey=$(\"vendorBriefingEventSelect\")?.value||\"\";const event=(state.currentVendorPane===\"briefings\"&&selectedKey?vendorEventByKeyV399(selectedKey):state.currentVendorEvent);if(!event)return false;const html=vendorRichEditorHtmlV421(\"vendorEventEmailCustomMessage\"),text=vendorRichEditorTextV421(\"vendorEventEmailCustomMessage\");\n    if(html===String(event.vendorEmailCustomHtml||\"\")&&text.trim()===String(event.vendorEmailCustomMessage||\"\").trim())return true;if(button)setLoading(button,true);\n    try{await api(\"/api/admin/vendors/events/config\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,vendorEmailCustomMessage:text,vendorEmailCustomHtml:html})});event.vendorEmailCustomMessage=text;event.vendorEmailCustomHtml=html;if(!quiet)setNotice(\"Vendor briefing note and formatting saved.\");return true;}finally{if(button)setLoading(button,false);}\n  }\n  function setVendorEmailHtmlEditV420(editing){const editor=$(\"vendorEmailHtmlEditor\"),frame=$(\"vendorEmailPreviewFrame\"),dialog=$(\"vendorEmailPreviewDialog\");if(!editor||!frame)return;editor.hidden=!editing;frame.hidden=editing;if(dialog)dialog.classList.toggle(\"is-html-editing\",editing);if($(\"vendorEmailEditHtml\"))$(\"vendorEmailEditHtml\").hidden=editing;if($(\"vendorEmailSaveHtml\"))$(\"vendorEmailSaveHtml\").hidden=!editing;if($(\"vendorEmailCancelHtml\"))$(\"vendorEmailCancelHtml\").hidden=!editing;}\n  function editVendorEmailHtmlV420(){const editor=$(\"vendorEmailHtmlEditor\"),frame=$(\"vendorEmailPreviewFrame\");if(!editor||!frame)return;editor.value=state.currentVendorEvent?.vendorEmailHtmlOverride||frame.srcdoc||\"\";setVendorEmailHtmlEditV420(true);}\n  async function saveVendorEmailHtmlV420(button){const event=state.currentVendorEvent,editor=$(\"vendorEmailHtmlEditor\");if(!event||!editor)return;setLoading(button,true);try{const html=editor.value.trim();await api(\"/api/admin/vendors/events/config\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,vendorEmailHtmlOverride:html})});event.vendorEmailHtmlOverride=html||null;setVendorEmailHtmlEditV420(false);setNotice(html?\"Custom vendor email HTML saved for this event.\":\"Custom vendor email HTML cleared; Orbit template restored.\");await previewVendorEventDetailsV398(null);}finally{setLoading(button,false);}}\n  function renderVendorEmailPreviewV429(result,openDialog=true){\n    const event=state.currentVendorEvent,sample=result?.renderedSample;if(!sample)return;const summary=$(\"vendorRenderedEmailPreview\");if(summary){summary.hidden=false;summary.innerHTML=\"<strong>Rendered preview ready</strong><span>Previewing: \"+esc(sample.vendorName||\"vendor\")+\" \u00B7 Tables \"+esc((sample.assignedTables||[]).join(\", \")||\"none\")+\" \u00B7 \"+Number(sample.displayCases||0)+\" display case\"+(Number(sample.displayCases||0)===1?\"\":\"s\")+\"</span>\";}\n    const picker=$(\"vendorEmailPreviewVendor\");if(picker){const selected=sample.customerKey||\"\";picker.innerHTML=(result.vendors||[]).map(v=>\"<option value='\"+esc(v.customerKey)+\"'\"+(v.customerKey===selected?\" selected\":\"\")+\">\"+esc(v.customer?.name||v.customer?.businessName||\"Vendor\")+\" \u00B7 Tables \"+esc((v.assignedTables||[]).join(\", \")||\"none\")+\" \u00B7 \"+Number(v.displayCases||0)+\" case\"+(Number(v.displayCases||0)===1?\"\":\"s\")+\"</option>\").join(\"\");}\n    if($(\"vendorEmailPreviewMeta\"))$(\"vendorEmailPreviewMeta\").innerHTML=\"<strong>\"+esc(sample.vendorName||\"Vendor\")+\"</strong><span>To: \"+esc(sample.to||\"No email\")+\"</span><span>Tables: \"+esc((sample.assignedTables||[]).join(\", \")||\"None\")+\" \u00B7 Display cases: \"+Number(sample.displayCases||0)+\"</span><span>Subject: \"+esc(sample.subject||\"\")+\"</span><span>Attachments: \"+esc((result.attachmentNames||[]).join(\" \u00B7 \")||\"None\")+\"</span>\";const frame=$(\"vendorEmailPreviewFrame\");if(frame)frame.srcdoc=sample.html||\"\";if($(\"vendorEmailHtmlEditor\"))$(\"vendorEmailHtmlEditor\").value=event?.vendorEmailHtmlOverride||sample.html||\"\";setVendorEmailHtmlEditV420(false);if(openDialog)$(\"vendorEmailPreviewDialog\")?.showModal();\n  }\n  async function selectVendorEmailPreviewV429(customerKey){const event=state.currentVendorEvent;if(!event||!customerKey)return;const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/communication-preview?customerKey=\"+encodeURIComponent(customerKey));state.vendorCommunicationPreview=result;renderVendorEmailPreviewV429(result,false);}\n  async function previewVendorEventDetailsV398(button){\n    const event=state.currentVendorEvent;if(!event)return;setLoading(button,true);try{await saveVendorEventEmailCustomV414(null,{quiet:true});const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/communication-preview\");state.vendorCommunicationPreview=result;const target=$(\"vendorEventCommunicationStatus\");target.className=\"orbit-info-banner \"+(result.ready?\"success\":\"warning\");target.innerHTML=\"<strong>\"+(result.ready?\"Ready to send\":\"Needs attention before sending\")+\"</strong><span>\"+Number(result.totalVendors||0)+\" vendors \u00B7 \"+Number(result.missingEmail||0)+\" missing email \u00B7 \"+Number(result.missingAssignments||0)+\" unallocated table(s)</span>\";renderVendorEmailPreviewV429(result,true);return result;}finally{setLoading(button,false);}}\n  function vendorBriefingStatusLabelV487(status){\n    return ({queued:\"Queued\",running:\"Sending\",completed:\"Completed\",completed_with_failures:\"Completed with failures\",interrupted:\"Interrupted\",needs_review:\"Needs review\"})[String(status||\"\")]||humanStatus(status||\"Unknown\");\n  }\n  function clearVendorBriefingBatchPollV487(){\n    if(state.vendorBriefingBatchPollTimerV487){clearTimeout(state.vendorBriefingBatchPollTimerV487);state.vendorBriefingBatchPollTimerV487=null;}\n  }\n  function renderVendorBriefingBatchV487(job){\n    const box=$(\"vendorBriefingBatchProgressV487\");if(!box)return;\n    state.vendorBriefingBatchJobV487=job||null;\n    if(!job){box.hidden=true;box.innerHTML=\"\";return;}\n    const c=job.counts||{},total=Math.max(0,Number(c.total||0)),sent=Math.max(0,Number(c.sent||0)),failed=Math.max(0,Number(c.failed||0)),pending=Math.max(0,Number(c.pending||0));\n    const pct=total?Math.max(0,Math.min(100,Math.round(sent/total*100))):0;\n    const rows=(job.recipients||[]),failedRows=rows.filter(r=>r.status===\"failed\"),pendingRows=rows.filter(r=>[\"not_attempted\",\"sending\"].includes(r.status));\n    const detailRows=rows.map(r=>\"<tr><td>\"+esc(r.vendorName||\"Vendor\")+\"</td><td>\"+esc(r.email||\"\")+\"</td><td>\"+esc((r.tables||[]).join(\", \")||\"\u2014\")+\"</td><td><span class='orbit-vendor-batch-status-v487 \"+esc(r.status||\"\")+\"'>\"+esc(humanStatus(r.status||\"not_attempted\"))+\"</span></td><td>\"+(r.error?esc(r.error):\"\")+\"</td></tr>\").join(\"\");\n    const retryable=[\"completed_with_failures\",\"interrupted\"].includes(job.status)&&(failedRows.length||pendingRows.length);\n    box.hidden=false;\n    box.innerHTML=\"<div class='orbit-vendor-batch-head-v487'><div><strong>Vendor email batch \u00B7 \"+esc(vendorBriefingStatusLabelV487(job.status))+\"</strong><span>\"+sent+\" / \"+total+\" sent\"+(failed?\" \u00B7 \"+failed+\" failed\":\"\")+(pending?\" \u00B7 \"+pending+\" pending\":\"\")+\"</span></div><strong>\"+pct+\"%</strong></div>\"+\n      \"<div class='orbit-vendor-batch-progress-track-v487'><span style='width:\"+pct+\"%'></span></div>\"+\n      (job.lastError?\"<div class='orbit-info-banner \"+(job.status===\"needs_review\"?\"warning\":\"danger\")+\"'><strong>\"+esc(job.status===\"needs_review\"?\"Review required\":\"Batch needs attention\")+\"</strong><span>\"+esc(job.lastError)+\"</span></div>\":\"\")+\n      (retryable?\"<div class='orbit-action-row'><button type='button' class='secondary' data-vendor-briefing-retry-v487='\"+esc(job.id)+\"'>Retry failed / unsent only</button><small>Already-sent vendors are locked and will not be sent again.</small></div>\":\"\")+\n      (job.legacySummary?\"<div class='orbit-info-banner info'><strong>Pre-V487 batch summary</strong><span>This successful batch predates per-recipient job tracking. Orbit still blocks accidental whole-event duplicates from its persisted sent count.</span></div>\":\n      \"<details class='orbit-vendor-batch-detail-v487'><summary>Recipient delivery audit \u00B7 \"+total+\" vendors</summary><div class='orbit-table-wrap'><table><thead><tr><th>Vendor</th><th>Email</th><th>Tables</th><th>Status</th><th>Error</th></tr></thead><tbody>\"+detailRows+\"</tbody></table></div></details>\");\n  }\n  function scheduleVendorBriefingBatchPollV487(job){\n    clearVendorBriefingBatchPollV487();\n    if(!job||![\"queued\",\"running\"].includes(job.status))return;\n    const eventKey=state.currentVendorEvent?.key||\"\";\n    state.vendorBriefingBatchPollTimerV487=setTimeout(async()=>{\n      try{\n        const result=await api(\"/api/admin/vendors/send-details/batches/\"+encodeURIComponent(job.id),{timeoutMs:15000,cacheMs:0});\n        if(!state.currentVendorEvent||state.currentVendorEvent.key!==eventKey)return;\n        renderVendorBriefingBatchV487(result.job);\n        if(result.job&&[\"queued\",\"running\"].includes(result.job.status))scheduleVendorBriefingBatchPollV487(result.job);\n        else if(result.job){\n          const c=result.job.counts||{};\n          if(result.job.status===\"completed\")setNotice(\"Vendor batch complete \u00B7 \"+Number(c.sent||0)+\" / \"+Number(c.total||0)+\" sent.\");\n          else setNotice(\"Vendor batch finished with \"+Number(c.failed||0)+\" failed. Use Retry failed / unsent only.\",true);\n          await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");\n          const refreshed=vendorEventByKeyV399(eventKey);if(refreshed)renderVendorEventDetailV398(refreshed);\n        }\n      }catch(err){setNotice(\"Vendor batch status check failed: \"+(err.message||err)+\". The server-side job is still persisted; reopen the event to resume tracking.\",true);}\n    },1500);\n  }\n  async function loadVendorBriefingBatchStatusV487(eventKey){\n    const key=String(eventKey||\"\");if(!key)return null;\n    const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(key)+\"/send-details/batches/latest\",{timeoutMs:15000,cacheMs:0});\n    if(!state.currentVendorEvent||state.currentVendorEvent.key!==key)return result?.job||null;\n    renderVendorBriefingBatchV487(result?.job||null);\n    if(result?.job&&[\"queued\",\"running\"].includes(result.job.status))scheduleVendorBriefingBatchPollV487(result.job);\n    return result?.job||null;\n  }\n  async function retryVendorBriefingBatchV487(jobId,button){\n    if(!jobId)return;\n    if(!confirm(\"Retry only the failed or not-yet-attempted vendors?\\n\\nOrbit will preserve every recipient already marked Sent and reuse the same provider idempotency keys.\"))return;\n    setLoading(button,true);\n    try{\n      const result=await api(\"/api/admin/vendors/send-details/batches/\"+encodeURIComponent(jobId)+\"/retry\",{method:\"POST\",body:\"{}\",timeoutMs:30000,cacheMs:0});\n      renderVendorBriefingBatchV487(result.job);scheduleVendorBriefingBatchPollV487(result.job);setNotice(\"Retry started for failed / unsent vendors only.\");\n    }finally{setLoading(button,false);}\n  }\n  async function sendVendorEventDetailsV398(button){\n    const preview=await previewVendorEventDetailsV398(button);if(!preview)return;\n    const missingEmail=Number(preview.missingEmail||0),missingAssignments=Number(preview.missingAssignments||0);\n    if(missingEmail>0){setNotice(\"Vendor details cannot be sent yet. Add the \"+missingEmail+\" missing email address\"+(missingEmail===1?\"\":\"es\")+\" first.\",true);return;}\n    if(!preview.hasTablePlan){setNotice(\"Vendor details cannot be sent until a floor plan has been saved for the event.\",true);return;}\n    let allowUnallocatedTables=false;\n    if(missingAssignments>0){\n      const warning=\"There \"+(missingAssignments===1?\"is\":\"are\")+\" \"+missingAssignments+\" unallocated table\"+(missingAssignments===1?\"\":\"s\")+\". Some vendor briefing emails may therefore show incomplete table information.\\n\\nAre you sure you want to start the batch anyway?\";\n      if(!confirm(warning))return;\n      allowUnallocatedTables=true;\n    }else if(!confirm(\"Start a protected background batch for all \"+preview.totalVendors+\" vendors?\\n\\nYou can close this screen after it starts. Orbit will track every recipient and will not resend to anyone already marked Sent.\"))return;\n    setLoading(button,true);\n    try{\n      const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(state.currentVendorEvent.key)+\"/send-details/batches\",{method:\"POST\",body:JSON.stringify({allowUnallocatedTables}),timeoutMs:30000,cacheMs:0});\n      renderVendorBriefingBatchV487(result.job);\n      if(result.requiresResume){\n        setNotice(\"A partial Vendor batch already exists. Review the delivery audit and use Retry failed / unsent only.\",true);\n      }else{\n        setNotice(result.reused?\"Existing Vendor batch resumed.\":\"Vendor batch started safely in the background.\");\n        scheduleVendorBriefingBatchPollV487(result.job);\n      }\n    }catch(err){\n      if(err?.data?.job){renderVendorBriefingBatchV487(err.data.job);}\n      if(err?.data?.code===\"VENDOR_BRIEFING_BATCH_ALREADY_COMPLETED\"){\n        setNotice(\"Duplicate batch blocked: this exact briefing has already been sent to every vendor. Use individual Send info if one vendor needs a resend.\",true);return;\n      }\n      if(err?.data?.code===\"VENDOR_BRIEFING_PARTIAL_SOURCE_CHANGED\"){\n        setNotice(\"Safe recovery blocked: some vendors were already sent, but the briefing/floor-plan source has changed. Orbit will not risk a duplicate whole-event resend. Review the delivery audit before any manual recovery.\",true);return;\n      }\n      if(err?.data?.code===\"VENDOR_BRIEFING_REPEAT_CONFIRM_REQUIRED\"){\n        const prior=err.data.job?.counts||{};\n        const ok=confirm(\"A previous batch already sent \"+Number(prior.sent||0)+\" vendor\"+(Number(prior.sent||0)===1?\"\":\"s\")+\".\\n\\nThe current briefing source has changed. Start a NEW whole-event batch anyway?\\n\\nThis will intentionally send the current briefing again to vendors who received the previous completed batch.\");\n        if(!ok){setNotice(\"New Vendor batch cancelled. No emails were sent.\");return;}\n        const repeat=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(state.currentVendorEvent.key)+\"/send-details/batches\",{method:\"POST\",body:JSON.stringify({allowUnallocatedTables,allowRepeat:true}),timeoutMs:30000,cacheMs:0});\n        renderVendorBriefingBatchV487(repeat.job);scheduleVendorBriefingBatchPollV487(repeat.job);setNotice(\"New Vendor batch started after explicit repeat confirmation.\");return;\n      }\n      throw err;\n    }finally{setLoading(button,false);}\n  }\n  async function sendSingleVendorInfoV456(button){\n    const event=state.currentVendorEvent,customerKey=button.dataset.vendorSendInfo;if(!event||!customerKey)return;\n    if(!confirm(\"Send the current saved show information to this vendor only?\"))return;\n    setLoading(button,true);try{\n      await saveVendorEventEmailCustomV414(null,{quiet:true});\n      const preview=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/communication-preview\",{cacheMs:0});\n      if(!preview.hasTablePlan)throw new Error(\"Save the floor plan before sending vendor information.\");\n      const vendor=(preview.vendors||[]).find(v=>String(v.customerKey)===String(customerKey));if(!vendor)throw new Error(\"Vendor is no longer in this event.\");\n      if(!vendor.email)throw new Error(\"This vendor does not have an email address saved.\");\n      const allow=Number(vendor.missingTables||0)>0||!(vendor.assignedTables||[]).length?confirm(\"This vendor has no complete table allocation. Send the briefing anyway?\"):false;\n      if((Number(vendor.missingTables||0)>0||!(vendor.assignedTables||[]).length)&&!allow)return;\n      const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/send-details\",{method:\"POST\",body:JSON.stringify({customerKey,allowUnallocatedTables:allow})});\n      if(!Number(result.sent||0)&&Number(result.failed||0))throw new Error(result.results?.find(x=>x.error)?.error||\"Vendor email failed.\");\n      setNotice(\"Show information sent to \"+(vendor.customer?.businessName||vendor.customer?.name||vendor.email)+\" only.\");\n    }finally{setLoading(button,false);}\n  }\n  async function sendVendorEventTestEmailV415(button){const event=state.currentVendorEvent;if(!event)return;const input=$(\"vendorEventTestEmail\"),to=String(input?.value||\"\").trim();if(!/^\\S+@\\S+\\.\\S+$/.test(to))throw new Error(\"Enter the email address you want the test briefing sent to.\");try{localStorage.setItem(\"orbitVendorTestEmail\",to);}catch(_){}setLoading(button,true);try{await saveVendorEventEmailCustomV414(null,{quiet:true});const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(event.key)+\"/send-details-test\",{method:\"POST\",body:JSON.stringify({to,customerKey:$(\"vendorEmailPreviewVendor\")?.value||state.vendorCommunicationPreview?.renderedSample?.customerKey||\"\"})});if(!result.sent&&!result.testMode)throw new Error(result.error||\"The test email was not sent.\");setNotice((result.testMode?\"Test mode prepared\":\"Test vendor briefing sent\")+\" for \"+result.vendorName+\" to \"+to+\" with \"+Number(result.attachmentCount||0)+\" attachment\"+(Number(result.attachmentCount||0)===1?\"\":\"s\")+\" (Getting Here & Parking + personalised Floor Plan).\");}finally{setLoading(button,false);}}\n\n  async function cancelVendorBookingV398(button){\n    const adjustmentId=button.dataset.adjustmentId||\"\",reason=prompt(\"Why is this vendor booking being cancelled?\",\"Vendor unable to attend\");if(reason===null)return;\n    if(adjustmentId){if(!confirm(\"Cancel this manual vendor booking?\"))return;await api(\"/api/admin/vendors/bookings/complimentary-action\",{method:\"POST\",body:JSON.stringify({adjustmentId,action:\"cancel\",reason})});await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setNotice(\"Manual vendor booking cancelled.\");return;}\n    const refunded=prompt(\"Refund status: refunded, not_refunded, pending or unknown\",\"unknown\");if(refunded===null)return;\n    if(!confirm(\"Cancel this booking operationally? The original Shopify order will remain unchanged.\"))return;\n    setLoading(button,true);try{await api(\"/api/admin/vendors/bookings/cancel\",{method:\"POST\",body:JSON.stringify({shopifyOrderId:button.dataset.orderId,lineItemId:button.dataset.lineId,reason,refundStatus:refunded})});await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setNotice(\"Vendor booking cancelled in Orbit. Shopify source history was preserved.\");}finally{setLoading(button,false);}\n  }\n  async function substituteVendorBookingV398(button){\n    const attendingName=prompt(\"Business/vendor that will actually attend:\",\"\");if(!attendingName)return;\n    const attendingEmail=prompt(\"Attending vendor email (optional):\",\"\");if(attendingEmail===null)return;\n    const reason=prompt(\"Reason / note (optional):\",\"Table reassigned by original purchaser\");if(reason===null)return;\n    const adjustmentId=button.dataset.adjustmentId||\"\";\n    setLoading(button,true);try{\n      if(adjustmentId)await api(\"/api/admin/vendors/bookings/complimentary-action\",{method:\"POST\",body:JSON.stringify({adjustmentId,action:\"substitute\",attendingName,attendingEmail,reason})});\n      else await api(\"/api/admin/vendors/bookings/substitute\",{method:\"POST\",body:JSON.stringify({shopifyOrderId:button.dataset.orderId,lineItemId:button.dataset.lineId,attendingName,attendingEmail,reason})});\n      await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setNotice(adjustmentId?\"Complimentary attending vendor changed.\":\"Attending vendor changed. The original purchaser/order remains in the audit history.\");\n    }finally{setLoading(button,false);}\n  }\n\n  async function editVendorComplimentaryEmailV425(button){\n    const adjustmentId=button.dataset.adjustmentId||\"\",current=button.dataset.currentEmail||\"\",email=prompt(\"Complimentary vendor email address:\",current);if(email===null)return;if(!String(email).trim())throw new Error(\"Enter an email address.\");\n    setLoading(button,true);try{await api(\"/api/admin/vendors/bookings/complimentary-action\",{method:\"POST\",body:JSON.stringify({adjustmentId,action:\"update-email\",email:String(email).trim()})});await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setNotice(\"Manual vendor email saved.\");}finally{setLoading(button,false);}\n  }\n\n  async function saveVendorReconciliationV398(id,button){\n    const row=(state.vendorReconciliation||[]).find(x=>x.id===id),card=button.closest(\"[data-reconcile-id]\"),select=card?.querySelector(\"[data-reconcile-event]\"),option=select?.selectedOptions?.[0];if(!row||!select?.value)throw new Error(\"Choose the correct event first.\");\n    setLoading(button,true);try{await api(\"/api/admin/vendors/reconciliation\",{method:\"POST\",body:JSON.stringify({shopifyOrderId:row.shopifyOrderId,lineItemId:row.lineItemId,eventKey:select.value,eventLabel:option?.dataset?.label||option?.textContent,eventDate:option?.dataset?.date||null})});await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");setNotice(\"Order line reconciled to the event.\");}finally{setLoading(button,false);}\n  }\n\n  function resetVendorVenueDialogV398(v={}){\n    $(\"vendorVenueId\").value=v.id||\"\";$(\"vendorVenueName\").value=v.name||\"\";$(\"vendorVenuePostcode\").value=v.postcode||\"\";$(\"vendorVenueAddress\").value=v.address||\"\";setVendorRichEditorV421(\"vendorVenueEntrance\",v.vendorEntranceHtml,v.vendorEntrance);setVendorRichEditorV421(\"vendorVenueDirections\",v.directionsHtml,v.directions);setVendorRichEditorV421(\"vendorVenueParking\",v.parkingNotesHtml,v.parkingNotes);$(\"vendorVenueSetupTime\").value=v.defaultSetupTime||\"\";$(\"vendorVenueHireCost\").value=Number(v.defaultHireCost||0)||\"\";setVendorRichEditorV421(\"vendorVenueInstructions\",v.vendorInstructionsHtml,v.vendorInstructions);setVendorRichEditorV421(\"vendorVenueRules\",v.rulesHtml,v.rules);$(\"vendorVenueDialogTitle\").textContent=v.id?\"Edit \"+v.name:\"Add venue\";$(\"vendorVenueResult\").hidden=true;\n    const source=$(\"vendorVenueImportSource\");if(source){const imported=v.source===\"eventbrite\";source.hidden=!imported;if(imported){const details=[Number((v.eventbriteEventIds||[]).length)+\" Eventbrite event\"+(Number((v.eventbriteEventIds||[]).length)===1?\"\":\"s\")+\" linked\",v.eventbriteAccessNotes?\"Imported access notes available\":\"\",v.manualEditedAt?\"Manual venue edits protected\":\"Eventbrite data will continue filling this record until you edit it\"].filter(Boolean);source.innerHTML=\"<strong>Imported from Eventbrite</strong><span>\"+esc(details.join(\" \u00B7 \"))+\"</span>\"+(v.eventbriteAccessNotes?\"<small>\"+esc(v.eventbriteAccessNotes)+\"</small>\":\"\");}}\n    const deleteVenueButton=$(\"deleteVendorVenueV527\");if(deleteVenueButton)deleteVenueButton.hidden=!v.id;\n    renderVendorVenueFloorPlansV401(v.id||\"\");renderVendorVenueHistoryV456(v.id||\"\");\n  }\n  function renderVendorVenueHistoryV456(venueId){\n    const target=$(\"vendorVenueHistoryV456\");if(!target)return;\n    if(!venueId){target.innerHTML=\"<p class='orbit-muted'>Save the venue first to build its event history.</p>\";return;}\n    const rows=(state.vendorWorkspace?.allEvents||[]).filter(e=>String(e.venueId||e.venue?.id||\"\")===String(venueId)).sort((a,b)=>String(b.eventDate||\"\").localeCompare(String(a.eventDate||\"\")));\n    if(!rows.length){target.innerHTML=\"<p class='orbit-muted'>No Orbit events are currently linked to this venue.</p>\";return;}\n    target.innerHTML=\"<div class='orbit-table-wrap'><table><thead><tr><th>Event</th><th>Date</th><th>Vendors</th><th>Income</th><th>Costs</th><th>Profit / loss</th></tr></thead><tbody>\"+rows.map(e=>{const f=e.finance||{};return \"<tr><td><strong>\"+esc(e.displayName||e.label||\"Orbit event\")+\"</strong></td><td>\"+esc(vendorDateV385(e.eventDate))+(e.eventEndDate?\" \u2013 \"+esc(vendorDateV385(e.eventEndDate)):\"\")+\"</td><td>\"+Number(e.customers||0)+\"</td><td>\"+esc(vendorMoneyV384(f.totalIncome||e.sales||0))+\"</td><td>\"+esc(vendorMoneyV384(f.expenses?.total||0))+\"</td><td><strong>\"+esc(vendorMoneyV384(f.profit||0))+\"</strong></td></tr>\";}).join(\"\")+\"</tbody></table></div>\";\n  }\n  function renderVendorVenueFloorPlansV401(venueId){const target=$(\"vendorVenueFloorPlans\");if(!target)return;if(!venueId){target.innerHTML=\"<p class='orbit-muted'>Save the venue first, then add its floor plans.</p>\";return;}const plans=(state.vendorFloorPlans||[]).filter(x=>x.venueId===venueId);target.innerHTML=plans.length?\"<div class='orbit-vendor-floor-plan-list'>\"+plans.map(p=>\"<div class='orbit-vendor-floor-plan-card'><div><strong>\"+esc(p.name)+\"</strong><small>\"+esc(p.roomName||\"Room / area not named\")+\" \u00B7 \"+Number((p.tables||[]).length)+\" table positions\"+(p.sourceMimeType===\"application/pdf\"?\" \u00B7 PDF page \"+Number(p.pageNumber||1):\"\")+\"</small></div><button type='button' class='secondary' data-vendor-floor-plan-edit='\"+esc(p.id)+\"'>Edit</button><button type='button' class='secondary' data-vendor-floor-plan-delete='\"+esc(p.id)+\"'>Remove</button></div>\").join(\"\")+\"</div>\":\"<p class='orbit-muted'>No floor plans saved for this venue yet.</p>\";}\n  async function openVendorVenueV398(id=null){const v=(state.vendorVenues||[]).find(x=>x.id===id)||{};resetVendorVenueDialogV398(v);$(\"vendorVenueDialog\")?.showModal();if(v.id){try{await loadVendorFloorPlansV401();renderVendorVenueFloorPlansV401(v.id);renderVendorVenueHistoryV456(v.id);}catch(_){}}}\n  async function saveVendorVenueV398(button){setLoading(button,true);try{const payload={id:$(\"vendorVenueId\").value,name:$(\"vendorVenueName\").value,postcode:$(\"vendorVenuePostcode\").value,address:$(\"vendorVenueAddress\").value,vendorEntrance:vendorRichEditorTextV421(\"vendorVenueEntrance\"),vendorEntranceHtml:vendorRichEditorHtmlV421(\"vendorVenueEntrance\"),directions:vendorRichEditorTextV421(\"vendorVenueDirections\"),directionsHtml:vendorRichEditorHtmlV421(\"vendorVenueDirections\"),parkingNotes:vendorRichEditorTextV421(\"vendorVenueParking\"),parkingNotesHtml:vendorRichEditorHtmlV421(\"vendorVenueParking\"),defaultSetupTime:$(\"vendorVenueSetupTime\").value,defaultHireCost:Number($(\"vendorVenueHireCost\").value||0),vendorInstructions:vendorRichEditorTextV421(\"vendorVenueInstructions\"),vendorInstructionsHtml:vendorRichEditorHtmlV421(\"vendorVenueInstructions\"),rules:vendorRichEditorTextV421(\"vendorVenueRules\"),rulesHtml:vendorRichEditorHtmlV421(\"vendorVenueRules\")};const result=await api(\"/api/admin/vendors/venues\",{method:\"POST\",body:JSON.stringify(payload)});$(\"vendorVenueId\").value=result.venue?.id||payload.id;$(\"vendorVenueResult\").hidden=false;$(\"vendorVenueResult\").textContent=\"Venue saved. You can now add or manage its floor plans below.\";await loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||\"customers\");renderVendorVenueFloorPlansV401($(\"vendorVenueId\").value);return result;}finally{setLoading(button,false);}}\n  function floorPlanDraftV401(){return state.vendorFloorPlanDraft||(state.vendorFloorPlanDraft={tables:[],rotation:0,flipX:false,flipY:false,pageNumber:1});}\nfunction vendorFloorPlanEditorZoomV412(){const z=Number(state.vendorFloorPlanEditorZoom||1);return Math.max(.5,Math.min(3,z));}\n  function vendorFloorPlanTableTemplateV413(){\n    const d=floorPlanDraftV401(),saved=d.tableTemplate||{};\n    return {widthPct:Math.max(.4,Math.min(20,Number(saved.widthPct||4.5))),heightPct:Math.max(.4,Math.min(20,Number(saved.heightPct||2.5))),angleDeg:Math.max(-180,Math.min(180,Number(saved.angleDeg||0)))};\n  }\n  function saveVendorFloorPlanTableTemplateV413(){\n    const d=floorPlanDraftV401(),t=selectedVendorFloorTableV411();if(!t){setNotice(\"Select a table first, set its size, then lock that size.\",true);return;}\n    d.tableTemplate={widthPct:Number(t.widthPct||4.5),heightPct:Number(t.heightPct||2.5),angleDeg:Number(t.angleDeg||0)};\n    const label=$(\"vendorFloorPlanTemplateStatus\");if(label)label.textContent=\"Locked size: \"+Number(d.tableTemplate.widthPct).toFixed(2)+\"% \u00D7 \"+Number(d.tableTemplate.heightPct).toFixed(2)+\"% \u00B7 \"+Number(d.tableTemplate.angleDeg||0)+\"\u00B0\";\n    setNotice(\"Table size locked for this floor plan. New table positions will use it.\");\n  }\n  function setVendorFloorPlanEditorZoomV412(value){state.vendorFloorPlanEditorZoom=Math.max(.5,Math.min(3,Number(value||1)));const label=$(\"vendorFloorPlanZoomLabel\");if(label)label.textContent=Math.round(state.vendorFloorPlanEditorZoom*100)+\"%\";renderVendorFloorPlanPreviewV401();}\n  async function loadOrbitPdfJsV401(){if(window.orbitPdfJs)return window.orbitPdfJs;if(window.orbitPdfJsPromise)return window.orbitPdfJsPromise;window.orbitPdfJsPromise=import(\"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.10.38/pdf.min.mjs\").then(lib=>{lib.GlobalWorkerOptions.workerSrc=\"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.10.38/pdf.worker.min.mjs\";window.orbitPdfJs=lib;return lib;}).catch(error=>{window.orbitPdfJsPromise=null;throw new Error(\"Orbit could not load the PDF processing engine. Check the internet connection and retry, or upload an image floor plan instead. \"+(error?.message||error));});return window.orbitPdfJsPromise;}\n  function tableLabelSortV401(a,b){return Number(String(a.label).replace(/\\D/g,\"\"))-Number(String(b.label).replace(/\\D/g,\"\"))||String(a.label).localeCompare(String(b.label));}\n  async function processVendorFloorPlanFileV401(file,pageNumber=1){const sourceDataUrl=await fileToDataUrlV398(file);if(file.type===\"application/pdf\"||/\\.pdf$/i.test(file.name)){const pdfjs=await loadOrbitPdfJsV401(),buffer=await file.arrayBuffer(),pdf=await pdfjs.getDocument({data:new Uint8Array(buffer)}).promise,pageNo=Math.max(1,Math.min(Number(pageNumber||1),pdf.numPages)),page=await pdf.getPage(pageNo),base=page.getViewport({scale:1}),scale=Math.max(1,Math.min(2.5,1800/Math.max(base.width,base.height))),viewport=page.getViewport({scale}),canvas=document.createElement(\"canvas\");canvas.width=Math.round(viewport.width);canvas.height=Math.round(viewport.height);await page.render({canvasContext:canvas.getContext(\"2d\"),viewport}).promise;const text=await page.getTextContent(),found=new Map();for(const item of text.items||[]){const label=String(item.str||\"\").trim();if(!/^\\d{1,2}$/.test(label))continue;const tx=pdfjs.Util.transform(viewport.transform,item.transform),fontH=Math.max(8,Math.hypot(tx[2],tx[3])),textW=Math.max(fontH*.8,Number(item.width||0)*scale),angle=Math.atan2(tx[1],tx[0]),orientation=Math.abs(Math.sin(angle))>Math.abs(Math.cos(angle))?\"vertical\":\"horizontal\",rawW=orientation===\"vertical\"?fontH:textW,rawH=orientation===\"vertical\"?textW:fontH,x=Math.max(0,Math.min(100,((tx[4]+rawW/2)/viewport.width)*100)),y=Math.max(0,Math.min(100,((tx[5]-rawH/2)/viewport.height)*100)),textWidthPct=rawW/viewport.width*100,textHeightPct=rawH/viewport.height*100,widthPct=Math.max(1.5,Math.min(7.5,textWidthPct*(orientation===\"vertical\"?2.2:1.8))),heightPct=Math.max(1.5,Math.min(7.5,textHeightPct*(orientation===\"vertical\"?1.8:2.2)));if(!found.has(label)){found.set(label,{id:\"table-\"+String(Number(label)||label),label,x,y,orientation,widthPct,heightPct});}}const detectedTables=inferVendorPdfTableGeometryV410([...found.values()].sort(tableLabelSortV401),viewport.width,viewport.height).tables;return {sourceDataUrl,sourceMimeType:\"application/pdf\",sourceFileName:file.name,pageNumber:pageNo,totalPages:pdf.numPages,backgroundDataUrl:canvas.toDataURL(\"image/jpeg\",.9),width:canvas.width,height:canvas.height,tables:detectedTables,detectedCount:found.size};}\n    const dims=await imageDimensionsV401(sourceDataUrl);return {sourceDataUrl:null,sourceMimeType:file.type||\"image/*\",sourceFileName:file.name,sourceBytes:Number(file.size||0),pageNumber:1,totalPages:1,backgroundDataUrl:sourceDataUrl,width:dims.width,height:dims.height,tables:[],detectedCount:0};}\n  function selectedVendorFloorTableV411(){const d=floorPlanDraftV401();return (d.tables||[]).find(x=>x.id===state.vendorFloorPlanSelectedTableId)||null;}\n  function syncVendorFloorTableInspectorV411(){const box=$(\"vendorFloorTableInspector\"),t=selectedVendorFloorTableV411();if(!box)return;box.hidden=!t;if(!t)return;$(\"vendorFloorTableInspectorTitle\").textContent=\"Table \"+t.label;$(\"vendorFloorTableX\").value=Number(t.x||0).toFixed(3);$(\"vendorFloorTableY\").value=Number(t.y||0).toFixed(3);$(\"vendorFloorTableWidth\").value=Number(t.widthPct||0).toFixed(3);$(\"vendorFloorTableHeight\").value=Number(t.heightPct||0).toFixed(3);$(\"vendorFloorTableAngle\").value=Number(t.angleDeg||0).toFixed(1);}\n  function updateSelectedVendorFloorTableV411(field,value){const t=selectedVendorFloorTableV411();if(!t)return;const n=Number(value);if(!Number.isFinite(n))return;if(field===\"x\"||field===\"y\")t[field]=Math.max(0,Math.min(100,n));else if(field===\"widthPct\"||field===\"heightPct\")t[field]=Math.max(.4,Math.min(20,n));else if(field===\"angleDeg\")t[field]=Math.max(-180,Math.min(180,n));t.manualGeometry=true;t.geometryVersion=412;renderVendorFloorPlanPreviewV401();}\n  function nudgeSelectedVendorFloorTableV411(dxPx,dyPx){const canvas=$(\"vendorFloorPlanPreview\"),t=selectedVendorFloorTableV411();if(!canvas||!t)return;const rect=canvas.getBoundingClientRect(),display=transformVendorPointV401(t.x,t.y,floorPlanDraftV401()),next={x:display.x+dxPx/rect.width*100,y:display.y+dyPx/rect.height*100},base=inverseVendorPointV401(next.x,next.y,floorPlanDraftV401());t.x=Math.max(0,Math.min(100,base.x));t.y=Math.max(0,Math.min(100,base.y));t.manualGeometry=true;t.geometryVersion=412;renderVendorFloorPlanPreviewV401();}\n  async function renderVendorFloorPlanPreviewV401(){\n    const canvas=$(\"vendorFloorPlanPreview\"),draft=floorPlanDraftV401();if(!canvas)return;\n    if(!draft.backgroundDataUrl){canvas.innerHTML=\"<div class='orbit-vendor-plan-empty'>Floor plan preview</div>\";canvas.style.backgroundImage=\"none\";syncVendorFloorTableInspectorV411();return;}\n    if(draft.sourceMimeType===\"application/pdf\"||draft.tables?.some(t=>t.geometryVersion)){draft.tables=inferVendorPdfTableGeometryV410(draft.tables||[],draft.width||0,draft.height||0).tables;}\n    const bg=await orientedVendorBackgroundV401(draft).catch(()=>draft.backgroundDataUrl),zoom=vendorFloorPlanEditorZoomV412();\n    canvas.innerHTML=\"\";canvas.style.backgroundImage=\"url(\"+JSON.stringify(bg)+\")\";canvas.style.aspectRatio=(draft._displayWidth&&draft._displayHeight)?draft._displayWidth+\" / \"+draft._displayHeight:\"4 / 3\";\n    canvas.style.transform=\"scale(\"+zoom+\")\";canvas.style.transformOrigin=\"top left\";canvas.style.width=(100/zoom)+\"%\";\n    const label=$(\"vendorFloorPlanZoomLabel\");if(label)label.textContent=Math.round(zoom*100)+\"%\";\n    for(const table of draft.tables||[]){\n      const el=document.createElement(\"button\");el.type=\"button\";el.className=\"orbit-vendor-table-marker detected\"+(state.vendorFloorPlanSelectedTableId===table.id?\" selected\":\"\");el.dataset.floorTableId=table.id;applyVendorTableGeometryV404(el,table,draft);el.innerHTML=\"<strong>\"+esc(table.label)+\"</strong>\";el.title=\"Click to edit \u00B7 drag precisely \u00B7 double-click to remove\";\n      el.addEventListener(\"click\",e=>{e.stopPropagation();if(state.vendorFloorPlanSelectedTableId!==table.id){state.vendorFloorPlanSelectedTableId=table.id;syncVendorFloorTableInspectorV411();canvas.querySelectorAll(\".orbit-vendor-table-marker.selected\").forEach(x=>x.classList.remove(\"selected\"));el.classList.add(\"selected\");}});\n      el.addEventListener(\"pointerdown\",e=>{\n        if(e.button!==0)return;e.preventDefault();e.stopPropagation();state.vendorFloorPlanSelectedTableId=table.id;syncVendorFloorTableInspectorV411();canvas.querySelectorAll(\".orbit-vendor-table-marker.selected\").forEach(x=>x.classList.remove(\"selected\"));el.classList.add(\"selected\");\n        const pointerId=e.pointerId,rect=canvas.getBoundingClientRect(),startPointer={x:e.clientX,y:e.clientY},startDisplay=transformVendorPointV401(table.x,table.y,draft);\n        el.setPointerCapture?.(pointerId);\n        const move=ev=>{\n          const dx=(ev.clientX-startPointer.x)/rect.width*100,dy=(ev.clientY-startPointer.y)/rect.height*100,next={x:startDisplay.x+dx,y:startDisplay.y+dy},base=inverseVendorPointV401(next.x,next.y,draft);\n          table.x=Math.max(0,Math.min(100,base.x));table.y=Math.max(0,Math.min(100,base.y));table.manualGeometry=true;table.geometryVersion=412;applyVendorTableGeometryV404(el,table,draft);syncVendorFloorTableInspectorV411();\n        };\n        const up=()=>{el.removeEventListener(\"pointermove\",move);el.removeEventListener(\"pointerup\",up);};\n        el.addEventListener(\"pointermove\",move);el.addEventListener(\"pointerup\",up,{once:true});\n      });\n      el.addEventListener(\"dblclick\",e=>{e.stopPropagation();draft.tables=draft.tables.filter(x=>x.id!==table.id);if(state.vendorFloorPlanSelectedTableId===table.id)state.vendorFloorPlanSelectedTableId=null;renderVendorFloorPlanPreviewV401();updateVendorFloorPlanDetectionV401();});\n      canvas.appendChild(el);\n    }\n    canvas.onclick=e=>{if(!state.vendorFloorPlanAddMode)return;const rect=canvas.getBoundingClientRect(),display={x:(e.clientX-rect.left)/rect.width*100,y:(e.clientY-rect.top)/rect.height*100},base=inverseVendorPointV401(display.x,display.y,draft),tableLabel=prompt(\"Table number / label:\",String((draft.tables||[]).length+1));if(tableLabel){const template=vendorFloorPlanTableTemplateV413(),t={id:\"table-\"+Date.now().toString(36),label:String(tableLabel).trim(),x:base.x,y:base.y,orientation:\"horizontal\",widthPct:template.widthPct,heightPct:template.heightPct,angleDeg:template.angleDeg,manualGeometry:true,geometryVersion:413};draft.tables.push(t);draft.tables.sort(tableLabelSortV401);state.vendorFloorPlanSelectedTableId=t.id;state.vendorFloorPlanAddMode=false;$(\"vendorFloorPlanAddTable\")?.classList.remove(\"active\");renderVendorFloorPlanPreviewV401();updateVendorFloorPlanDetectionV401();}};\n    syncVendorFloorTableInspectorV411();\n  }\n  function updateVendorFloorPlanDetectionV401(){const target=$(\"vendorFloorPlanDetectionStatus\"),draft=floorPlanDraftV401();if(!target)return;const count=(draft.tables||[]).length;target.className=\"orbit-info-banner \"+(count?\"success\":\"info\");target.innerHTML=\"<strong>\"+(count?count+\" table positions ready\":\"No table positions detected yet\")+\"</strong><span>\"+(draft.sourceMimeType===\"application/pdf\"?\"PDF page \"+Number(draft.pageNumber||1)+(draft.totalPages>1?\" of \"+draft.totalPages:\"\")+\" \u00B7 drag a number to correct its position, double-click to remove, or add a missing table manually.\":\"Image plan \u00B7 add table positions manually by clicking Add table position, then clicking the map.\")+\"</span>\";}\n  function vendorFloorPlanTrimSnapshotV694(draft){return {backgroundDataUrl:draft.backgroundDataUrl,width:Number(draft.width||0),height:Number(draft.height||0),tables:JSON.parse(JSON.stringify(draft.tables||[])),tableTemplate:draft.tableTemplate?{...draft.tableTemplate}:null,trimMeta:draft.trimMeta?{...draft.trimMeta}:null};}\n  function vendorFloorPlanTrimTableBoundsV694(draft,width,height){\n    const rows=Array.isArray(draft.tables)?draft.tables:[];if(!rows.length)return null;let left=width,top=height,right=0,bottom=0;\n    for(const table of rows){const x=Number(table.x||0)/100*width,y=Number(table.y||0)/100*height,w=Math.max(1,Number(table.widthPct||0)/100*width),h=Math.max(1,Number(table.heightPct||0)/100*height);left=Math.min(left,x-w/2);top=Math.min(top,y-h/2);right=Math.max(right,x+w/2);bottom=Math.max(bottom,y+h/2);}\n    return {left:Math.max(0,left),top:Math.max(0,top),right:Math.min(width,right),bottom:Math.min(height,bottom)};\n  }\n  function vendorFloorPlanRemapForCropV694(draft,bounds,width,height){\n    const cropW=bounds.right-bounds.left,cropH=bounds.bottom-bounds.top;if(cropW<=0||cropH<=0)throw new Error(\"The floor plan crop area is invalid.\");\n    const remap=table=>({...table,x:Math.max(0,Math.min(100,((Number(table.x||0)/100*width-bounds.left)/cropW)*100)),y:Math.max(0,Math.min(100,((Number(table.y||0)/100*height-bounds.top)/cropH)*100)),widthPct:Math.max(.4,Math.min(20,Number(table.widthPct||0)*width/cropW)),heightPct:Math.max(.4,Math.min(20,Number(table.heightPct||0)*height/cropH)),manualGeometry:true,geometryVersion:694});\n    draft.tables=(draft.tables||[]).map(remap);\n    if(draft.tableTemplate)draft.tableTemplate={...draft.tableTemplate,widthPct:Math.max(.4,Math.min(20,Number(draft.tableTemplate.widthPct||4.5)*width/cropW)),heightPct:Math.max(.4,Math.min(20,Number(draft.tableTemplate.heightPct||2.5)*height/cropH))};\n    return {cropW,cropH};\n  }\n  async function trimVendorFloorPlanWhitespaceV694(button){\n    const draft=floorPlanDraftV401();if(!draft.backgroundDataUrl)throw new Error(\"Upload or open a floor plan before trimming it.\");setLoading(button,true);\n    try{\n      const {img,width,height}=await imageDimensionsV401(draft.backgroundDataUrl),scan=document.createElement(\"canvas\");scan.width=width;scan.height=height;const ctx=scan.getContext(\"2d\",{willReadFrequently:true});ctx.drawImage(img,0,0,width,height);const pixels=ctx.getImageData(0,0,width,height).data;\n      let left=width,top=height,right=-1,bottom=-1;const threshold=246;\n      for(let y=0;y<height;y++){for(let x=0;x<width;x++){const i=(y*width+x)*4,a=pixels[i+3];if(a<20)continue;const r=pixels[i],g=pixels[i+1],b=pixels[i+2];if(r>=threshold&&g>=threshold&&b>=threshold)continue;if(x<left)left=x;if(x>right)right=x;if(y<top)top=y;if(y>bottom)bottom=y;}}\n      if(right<left||bottom<top){setNotice(\"No non-white floor plan content was found to trim.\",true);return;}\n      const tableBounds=vendorFloorPlanTrimTableBoundsV694(draft,width,height);if(tableBounds){left=Math.min(left,Math.floor(tableBounds.left));top=Math.min(top,Math.floor(tableBounds.top));right=Math.max(right,Math.ceil(tableBounds.right));bottom=Math.max(bottom,Math.ceil(tableBounds.bottom));}\n      const padding=Math.max(10,Math.round(Math.min(width,height)*.012));left=Math.max(0,left-padding);top=Math.max(0,top-padding);right=Math.min(width-1,right+padding);bottom=Math.min(height-1,bottom+padding);\n      const cropW=right-left+1,cropH=bottom-top+1,savedArea=(1-(cropW*cropH)/(width*height))*100;\n      if(savedArea<2){setNotice(\"This floor plan is already tightly framed; no meaningful outer white space was removed.\");return;}\n      if(!confirm(\"Trim the empty outer white space from this floor plan?\\n\\nOrbit will preserve every table position by recalculating its coordinates. This changes only the editor draft until you press Save floor plan.\"))return;\n      state.vendorFloorPlanTrimBackupV694=vendorFloorPlanTrimSnapshotV694(draft);\n      if(!draft.sourceDataUrl&&/^image\\//i.test(String(draft.sourceMimeType||\"\")))draft.sourceDataUrl=draft.backgroundDataUrl;\n      const crop=document.createElement(\"canvas\");crop.width=cropW;crop.height=cropH;crop.getContext(\"2d\").drawImage(img,left,top,cropW,cropH,0,0,cropW,cropH);\n      const remapped=vendorFloorPlanRemapForCropV694(draft,{left,top,right:right+1,bottom:bottom+1},width,height);draft.backgroundDataUrl=crop.toDataURL(\"image/png\");draft.width=remapped.cropW;draft.height=remapped.cropH;draft._orientedKey=null;draft._orientedDataUrl=null;draft.trimMeta={trimmedAt:new Date().toISOString(),sourceWidth:width,sourceHeight:height,left,top,right,bottom,width:cropW,height:cropH};\n      const undo=$(\"vendorFloorPlanUndoTrimV694\");if(undo)undo.disabled=false;await renderVendorFloorPlanPreviewV401();updateVendorFloorPlanDetectionV401();setNotice(\"White space trimmed from the draft. Table positions were preserved. Press Save floor plan to keep it, or Undo trim to revert.\");\n    }finally{setLoading(button,false);}\n  }\n  async function undoVendorFloorPlanTrimV694(){const draft=floorPlanDraftV401(),backup=state.vendorFloorPlanTrimBackupV694;if(!backup){setNotice(\"There is no unsaved trim to undo.\");return;}Object.assign(draft,backup,{_orientedKey:null,_orientedDataUrl:null});state.vendorFloorPlanTrimBackupV694=null;const undo=$(\"vendorFloorPlanUndoTrimV694\");if(undo)undo.disabled=true;await renderVendorFloorPlanPreviewV401();updateVendorFloorPlanDetectionV401();setNotice(\"Unsaved floor plan trim undone.\");}\n  async function openVendorFloorPlanEditorV401(id=null){const venueId=$(\"vendorVenueId\")?.value;if(!venueId)throw new Error(\"Save the venue before adding floor plans.\");state.vendorFloorPlanAddMode=false;state.vendorFloorPlanTrimBackupV694=null;const undoTrim=$(\"vendorFloorPlanUndoTrimV694\");if(undoTrim)undoTrim.disabled=true;let draft={id:\"\",venueId,name:\"\",roomName:\"\",pageNumber:1,tables:[],rotation:0,flipX:false,flipY:false};if(id){const result=await api(\"/api/admin/vendors/venue-floor-plans/\"+encodeURIComponent(id));draft={...result.floorPlan};}state.vendorFloorPlanDraft=draft;state.vendorFloorPlanEditorZoom=1;const templateStatus=$(\"vendorFloorPlanTemplateStatus\");if(templateStatus)templateStatus.textContent=draft.tableTemplate?(\"Locked size: \"+Number(draft.tableTemplate.widthPct).toFixed(2)+\"% \u00D7 \"+Number(draft.tableTemplate.heightPct).toFixed(2)+\"% \u00B7 \"+Number(draft.tableTemplate.angleDeg||0)+\"\u00B0\"):\"No table size locked yet.\";$(\"vendorFloorPlanId\").value=draft.id||\"\";$(\"vendorFloorPlanVenueId\").value=venueId;$(\"vendorFloorPlanName\").value=draft.name||\"\";$(\"vendorFloorPlanRoom\").value=draft.roomName||\"\";$(\"vendorFloorPlanPage\").value=Number(draft.pageNumber||1);$(\"vendorFloorPlanFile\").value=\"\";$(\"vendorFloorPlanDialogTitle\").textContent=id?\"Edit \"+(draft.name||\"floor plan\"):\"Add floor plan\";$(\"vendorFloorPlanResult\").hidden=true;$(\"vendorFloorPlanDialog\")?.showModal();await renderVendorFloorPlanPreviewV401();updateVendorFloorPlanDetectionV401();}\n  async function vendorFloorPlanFileChangedV401(file){if(!file)return;state.vendorFloorPlanTrimBackupV694=null;const undoTrim=$(\"vendorFloorPlanUndoTrimV694\");if(undoTrim)undoTrim.disabled=true;const status=$(\"vendorFloorPlanDetectionStatus\");if(status){status.className=\"orbit-info-banner info\";status.innerHTML=\"<strong>Processing \"+esc(file.name)+\"\u2026</strong><span>Rendering the map and looking for numbered table positions.</span>\";}const imported=await processVendorFloorPlanFileV401(file,Number($(\"vendorFloorPlanPage\")?.value||1)),draft=floorPlanDraftV401();Object.assign(draft,imported,{rotation:0,flipX:false,flipY:false,_orientedKey:null});if(!$(\"vendorFloorPlanName\").value)$(\"vendorFloorPlanName\").value=file.name.replace(/\\.pdf$/i,\"\").replace(/\\.[a-z0-9]+$/i,\"\");await renderVendorFloorPlanPreviewV401();updateVendorFloorPlanDetectionV401();}\n  function transformFloorPlanDraftV401(action){const d=floorPlanDraftV401();if(action===\"rotate-left\")d.rotation=(Number(d.rotation||0)+270)%360;else if(action===\"rotate-right\")d.rotation=(Number(d.rotation||0)+90)%360;else if(action===\"flip-x\")d.flipX=!d.flipX;else if(action===\"flip-y\")d.flipY=!d.flipY;else if(action===\"reset\"){d.rotation=0;d.flipX=false;d.flipY=false;}d._orientedKey=null;renderVendorFloorPlanPreviewV401();}\n  async function saveVendorFloorPlanV401(button){const draft=floorPlanDraftV401(),venueId=$(\"vendorFloorPlanVenueId\").value,name=$(\"vendorFloorPlanName\").value.trim();if(!draft.backgroundDataUrl)throw new Error(\"Upload a PDF or image floor plan first.\");if(!name)throw new Error(\"Give this floor plan a name.\");setLoading(button,true);try{const payload={id:$(\"vendorFloorPlanId\").value,venueId,name,roomName:$(\"vendorFloorPlanRoom\").value,pageNumber:Number(draft.pageNumber||1),sourceFileName:draft.sourceFileName,sourceMimeType:draft.sourceMimeType,sourceDataUrl:draft.sourceDataUrl,backgroundDataUrl:draft.backgroundDataUrl,width:draft.width,height:draft.height,rotation:Number(draft.rotation||0),flipX:Boolean(draft.flipX),flipY:Boolean(draft.flipY),tableTemplate:draft.tableTemplate||null,tables:draft.tables||[],detectedCount:Number(draft.detectedCount||draft.tables?.length||0),trimMeta:draft.trimMeta||null};const result=await api(\"/api/admin/vendors/venue-floor-plans\",{method:\"POST\",body:JSON.stringify(payload),timeoutMs:45000});$(\"vendorFloorPlanResult\").hidden=false;$(\"vendorFloorPlanResult\").textContent=\"Floor plan saved with \"+Number(result.floorPlan?.tables?.length||0)+\" table positions.\";await loadVendorFloorPlansV401();populateVendorFloorPlanSelectV401();renderVendorVenueFloorPlansV401(venueId);setTimeout(()=>$(\"vendorFloorPlanDialog\")?.close(),500);return result;}finally{setLoading(button,false);}}\n  async function deleteVendorFloorPlanV401(id){if(!confirm(\"Remove this saved venue floor plan? Existing event allocations already copied into events are preserved.\"))return;await api(\"/api/admin/vendors/venue-floor-plans/\"+encodeURIComponent(id),{method:\"DELETE\"});await loadVendorFloorPlansV401();populateVendorFloorPlanSelectV401();renderVendorVenueFloorPlansV401($(\"vendorVenueId\")?.value||\"\");setNotice(\"Venue floor plan removed.\");}\n\n  // V639_ADMIN_BOOKING_BEGIN: actual production controls shared by main booking\n  // rows, the points panel and Account Credit. Saved requests survive a reload.\n  let vendorActionBusyV639=false;\n  function vendorRequestIdV639(){return globalThis.crypto?.randomUUID?.()||('v639-'+Date.now()+'-'+Math.random().toString(36).slice(2));}\n  function vendorSavedActionV639(key,value){try{const k='orbit-v639-admin-action:'+key;if(arguments.length===1)return JSON.parse(sessionStorage.getItem(k)||'null');if(value===null){sessionStorage.removeItem(k);return true;}const encoded=JSON.stringify(value);sessionStorage.setItem(k,encoded);return sessionStorage.getItem(k)===encoded;}catch(_){return arguments.length===1?null:false;}}\n  function vendorManagedButtonsV639(b){const id=b.vendorClubBookingId||b.id;if(!id)return '';return '<div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-vendor-booking-action-v639=\"cancel\" data-booking-id=\"'+esc(id)+'\">Cancel / return</button><button type=\"button\" class=\"secondary\" data-vendor-booking-action-v639=\"transfer\" data-booking-id=\"'+esc(id)+'\">Transfer</button><button type=\"button\" class=\"secondary\" data-vendor-booking-action-v639=\"details\" data-booking-id=\"'+esc(id)+'\">History &amp; status</button></div>';}\n  function vendorCreditPanelV639(key,balance,rows,clubData){\n    const reserved=(rows||[]).reduce((n,r)=>n+Number(r.reservedAmount||0),0),history=clubData?.creditHistory||[];\n    return '<section class=\"orbit-vendor-credit-panel-v493\"><p class=\"orbit-kicker\">Vendor Account Credit</p><h4>'+esc(vendorMoneyV384(balance))+' available</h4><p class=\"orbit-muted\">'+(reserved>0?esc(vendorMoneyV384(reserved))+' is reserved for pending checkout. ':'')+'Credit can pay for Vendor Club tables. Admin adjustments are audited; adding credit does not take a payment or change table stock.</p><div class=\"orbit-action-row\"><button type=\"button\" data-vendor-credit-action-v639=\"add\" data-customer-key=\"'+esc(key)+'\">Add Account Credit</button><button type=\"button\" class=\"secondary\" data-vendor-credit-action-v639=\"deduct\" data-customer-key=\"'+esc(key)+'\">Deduct Account Credit</button><button type=\"button\" class=\"secondary\" data-vendor-credit-action-v639=\"history\" data-customer-key=\"'+esc(key)+'\">Credit history &amp; adjustments</button></div><details class=\"orbit-vendor-credit-history-v639\"><summary>Booking credit activity ('+history.length+')</summary>'+(history.length?'<div class=\"orbit-table-wrap\"><table><thead><tr><th>When</th><th>Amount</th><th>Activity</th></tr></thead><tbody>'+history.slice(0,100).map(x=>'<tr><td>'+esc(prettyDate(x.createdAt))+'</td><td>'+esc(vendorMoneyV384(x.amount))+'</td><td>'+esc(x.reason||x.activity)+'</td></tr>').join('')+'</tbody></table></div>':'<p>No credit activity yet.</p>')+'</details></section>';\n  }\n  function vendorActionDialogV639(title){\n    if(vendorActionBusyV639)return null;\n    const old=$('vendorActionDialogV639');if(old){old.close();old.remove();}\n    const d=document.createElement('dialog');d.id='vendorActionDialogV639';d.className='orbit-vendor-action-dialog-v639';d.setAttribute('aria-labelledby','vendorActionTitleV639');d.innerHTML='<div class=\"orbit-vendor-action-header-v639\"><div><p class=\"orbit-kicker\">Vendor booking management</p><h2 id=\"vendorActionTitleV639\" tabindex=\"-1\">'+esc(title)+'</h2></div><button type=\"button\" class=\"secondary\" data-close-v639 aria-label=\"Close booking management\">\u00D7</button></div><div id=\"vendorActionBodyV639\"><p role=\"status\">Loading the current account\u2026</p></div><div id=\"vendorActionStatusV639\" class=\"orbit-vendor-action-status-v639\" role=\"status\" aria-live=\"polite\" hidden></div>';\n    document.body.appendChild(d);d.querySelector('[data-close-v639]').addEventListener('click',()=>{if(!vendorActionBusyV639)d.close();});d.addEventListener('cancel',e=>{if(vendorActionBusyV639)e.preventDefault();});d.showModal();return d;\n  }\n  function vendorActionStatusV639(message,kind='info'){const box=$('vendorActionStatusV639');if(!box)return;box.hidden=false;box.dataset.kind=kind;box.textContent=message;box.scrollIntoView({block:'nearest',behavior:'instant'});}\n  function vendorActionBusyStateV639(busy){vendorActionBusyV639=busy;const d=$('vendorActionDialogV639');if(d){d.setAttribute('aria-busy',busy?'true':'false');d.querySelectorAll('button,input,textarea,select').forEach(e=>{if(busy){e.dataset.wasDisabledV639=e.disabled?'1':'0';e.disabled=true;}else if(e.dataset.wasDisabledV639!=null){e.disabled=e.dataset.wasDisabledV639==='1';delete e.dataset.wasDisabledV639;}});}}\n  async function vendorRefreshAfterActionV639(key){try{if(key&&state.currentVendorCustomerKey===key)await viewVendorCustomerV398(key);}catch(_){/* saved result remains visible even when the parent refresh fails */}}\n  async function openVendorCreditV639(key,direction='add'){\n    const d=vendorActionDialogV639(direction==='history'?'Account Credit history':direction==='deduct'?'Deduct Account Credit':'Add Account Credit');if(!d)return;\n    try{\n      const snapshot=await api('/api/admin/vendors/club/vendors/'+encodeURIComponent(key)+'/account-credit',{cacheMs:0});if(!d.isConnected)return;\n      const savedKey='credit:'+key;let saved=vendorSavedActionV639(savedKey);if(saved&&direction!=='history')direction=saved.direction;\n      const ledger=snapshot.ledger||[];const box=$('vendorActionBodyV639');\n      box.innerHTML='<div class=\"orbit-vendor-action-summary-v639\"><span><small>Available</small><strong>'+esc(vendorMoneyV384(snapshot.availableBalance))+'</strong></span><span><small>Reserved for checkout</small><strong>'+esc(vendorMoneyV384(snapshot.reservedBalance))+'</strong></span></div>'+ (direction==='history'?'<p>This immutable journal records manual adjustments and booking-credit returns. Booking usage remains visible in the account activity.</p><div class=\"orbit-table-wrap\"><table><thead><tr><th>When</th><th>Change</th><th>Available after</th><th>Reason / reference / operator</th></tr></thead><tbody>'+ledger.map(x=>'<tr><td>'+esc(prettyDate(x.createdAt))+'</td><td>'+esc(vendorMoneyV384(x.deltaAmount))+'</td><td>'+esc(vendorMoneyV384(x.availableAfter))+'</td><td>'+esc(x.reason)+'<small>'+esc(x.reference||'')+' \u00B7 '+esc(x.actorId||'System')+'</small></td></tr>').join('')+'</tbody></table></div>' : '<p><strong>This changes real spendable Account Credit.</strong> It is not a bank payment, a cash refund or a table booking. Reserved credit cannot be deducted.</p><form id=\"vendorCreditFormV639\"><label>Amount in \u00A3<input id=\"vendorCreditAmountV639\" name=\"amount\" type=\"text\" inputmode=\"decimal\" required maxlength=\"10\" placeholder=\"30.00\"></label><label>Reason (required)<textarea id=\"vendorCreditReasonV639\" name=\"reason\" required maxlength=\"1000\" rows=\"3\"></textarea></label><label>Reference (optional)<input id=\"vendorCreditReferenceV639\" name=\"reference\" maxlength=\"250\" placeholder=\"For example: approved test credit\"></label><label class=\"orbit-vendor-confirm-v639\"><input type=\"checkbox\" id=\"vendorCreditConfirmV639\" required> I confirm this '+(direction==='deduct'?'deduction from':'addition to')+' the vendor\u2019s real Account Credit.</label><button type=\"submit\" id=\"vendorCreditSaveV639\">'+(saved?'Check / retry original adjustment':direction==='deduct'?'Confirm credit deduction':'Confirm credit addition')+'</button></form>');\n      if(direction==='history'){if(!ledger.length)box.insertAdjacentHTML('beforeend','<p>No manual adjustments or booking returns yet.</p>');return;}\n      if(saved){$('vendorCreditAmountV639').value=saved.amount;$('vendorCreditReasonV639').value=saved.reason;$('vendorCreditReferenceV639').value=saved.reference||'';for(const id of ['vendorCreditAmountV639','vendorCreditReasonV639','vendorCreditReferenceV639'])$(id).readOnly=true;vendorActionStatusV639('An earlier adjustment has a saved request. Checking it will recover that exact change, not create a second one.');}\n      $('vendorCreditFormV639').addEventListener('submit',async e=>{\n        e.preventDefault();if(vendorActionBusyV639||!e.target.reportValidity())return;\n        const payload=saved||{direction,amount:$('vendorCreditAmountV639').value.trim(),reason:$('vendorCreditReasonV639').value.trim(),reference:$('vendorCreditReferenceV639').value.trim(),requestId:vendorRequestIdV639(),confirmed:true};payload.confirmed=true;\n        if(!vendorSavedActionV639(savedKey,payload)){vendorActionStatusV639('Enable browser session storage before changing real funds or bookings. No request was sent.','error');return;}saved=payload;vendorActionBusyStateV639(true);vendorActionStatusV639('Saving the confirmed adjustment\u2026');\n        try{const r=await api('/api/admin/vendors/club/vendors/'+encodeURIComponent(key)+'/account-credit/adjust',{method:'POST',body:JSON.stringify(payload),cacheMs:0});vendorSavedActionV639(savedKey,null);box.innerHTML='<div class=\"orbit-vendor-action-success-v639\"><h3>Account Credit updated</h3><p>'+esc(r.message)+'</p><p><strong>'+esc(vendorMoneyV384(r.entry.availableAfter))+' available after this adjustment</strong></p><p>Reference: '+esc(r.entry.requestId)+'</p><button type=\"button\" data-credit-done-v639>Done</button></div>';box.querySelector('[data-credit-done-v639]').onclick=()=>d.close();vendorActionStatusV639('Saved once with the operator, reason and reference.', 'success');await vendorRefreshAfterActionV639(key);}\n        catch(error){const terminal=error.data?.terminal===true;if(terminal){vendorSavedActionV639(savedKey,null);saved=null;for(const id of ['vendorCreditAmountV639','vendorCreditReasonV639','vendorCreditReferenceV639'])$(id).readOnly=false;}else{for(const id of ['vendorCreditAmountV639','vendorCreditReasonV639','vendorCreditReferenceV639'])$(id).readOnly=true;$('vendorCreditSaveV639').textContent='Check / retry original adjustment';}vendorActionStatusV639((error.message||'The adjustment could not be confirmed.')+(terminal?'':' The original request is saved. Close and reopen this control to check it; do not create another adjustment.'),'error');}\n        finally{vendorActionBusyStateV639(false);}\n      });\n    }catch(error){vendorActionStatusV639(error.message,'error');}\n  }\n  async function openVendorBookingV639(bookingId,action='details'){\n    const d=vendorActionDialogV639(action==='transfer'?'Transfer Vendor Club booking':action==='cancel'?'Cancel booking / return funds':'Booking history & status');if(!d)return;\n    try{\n      const detail=await api('/api/admin/vendors/club/bookings/'+encodeURIComponent(bookingId)+(action==='transfer'?'?destinations=1':''),{cacheMs:0});if(!d.isConnected)return;\n      const b=detail.booking,key=b.canonicalVendorId,box=$('vendorActionBodyV639'),unit=b.funding==='points'?' Vendor Points':' Account Credit',funds=b.funding==='points'?String(b.fundedValue)+' points':vendorMoneyV384(b.fundedValue),savedKey='booking:'+bookingId;\n      const summary='<div class=\"orbit-vendor-action-booking-v639\"><strong>'+esc(b.eventName)+'</strong><span>'+esc(prettyDate(b.eventDate))+'</span><span>'+b.quantity+' table'+(b.quantity===1?'':'s')+' \u00B7 '+esc(funds)+'</span><small>Booking reference: '+esc(b.id)+'</small></div>';\n      box.innerHTML=summary;\n      const pendingOp=(detail.operations||[]).find(o=>o.retryable);\n      if(b.operationId||pendingOp){const op=b.operationId||pendingOp.id;box.insertAdjacentHTML('beforeend','<p>A saved transfer is still being reconciled. Do not cancel or start another transfer until it has finished.</p><button type=\"button\" id=\"vendorResumeTransferV639\">Check original transfer</button>');$('vendorResumeTransferV639').onclick=async()=>{if(vendorActionBusyV639)return;vendorActionBusyStateV639(true);try{const r=await api('/api/admin/vendors/club/booking-operations/'+encodeURIComponent(op)+'/resume',{method:'POST',body:'{}',cacheMs:0});vendorActionStatusV639(r.message,r.completed?'success':'info');if(r.completed||r.operation?.status==='aborted'){vendorSavedActionV639(savedKey,null);box.querySelector('#vendorResumeTransferV639')?.remove();await vendorRefreshAfterActionV639(key);}}catch(error){vendorActionStatusV639(error.message,'error');}finally{vendorActionBusyStateV639(false);}};return;}\n      if(action==='details'){\n        box.insertAdjacentHTML('beforeend','<p><strong>Status: '+(b.active?'Active':b.stockRestored?'Cancelled; stock returned':'Cancelled; stock return pending')+'</strong></p><p>Available: '+Number(detail.pointsBalance)+' points \u00B7 '+esc(vendorMoneyV384(detail.credit.availableBalance))+' Account Credit</p><h3>Transfer history</h3>'+((b.transferHistory||[]).length?'<ul>'+b.transferHistory.map(x=>'<li>'+esc(x.fromEventName)+' \u2192 '+esc(x.toEventName)+'<br>'+esc(prettyDate(x.at))+' \u00B7 '+esc(x.reason)+' \u00B7 '+esc(x.actorId)+'</li>').join('')+'</ul>':'<p>No transfers recorded.</p>')+'<div class=\"orbit-action-row\"><button type=\"button\" data-open-cancel-v639>Cancel / return</button></div>');box.querySelector('[data-open-cancel-v639]').onclick=()=>openVendorBookingV639(bookingId,'cancel');return;\n      }\n      if(action==='transfer'&&!b.active){vendorActionStatusV639('Cancelled bookings cannot be transferred.','error');return;}\n      let saved=vendorSavedActionV639(savedKey);if(saved&&saved.action!==action){vendorActionStatusV639('A different action is saved for this booking. Reopen its '+saved.action+' control to check the original request.','error');return;}\n      let quote=null;\n      box.insertAdjacentHTML('beforeend','<form id=\"vendorBookingFormV639\">'+(action==='transfer'?'<label>Destination show<select id=\"vendorTransferTargetV639\" required><option value=\"\">Choose the destination</option>'+(detail.destinations||[]).map(e=>'<option value=\"'+esc(e.eventKey)+'\">'+esc(e.eventName)+' \u00B7 '+esc(prettyDate(e.eventDate))+'</option>').join('')+'</select></label><button type=\"button\" class=\"secondary\" id=\"vendorTransferPreviewV639\">Preview stock &amp; funding difference</button><div id=\"vendorTransferQuoteV639\" hidden></div>':'<p>This cancels the booking and returns its Shopify table stock. Choose separately whether its '+esc(unit.trim())+' should be returned.</p><label class=\"orbit-vendor-confirm-v639\"><input id=\"vendorReturnFundsV639\" type=\"checkbox\" checked> Return '+esc(funds)+' to this vendor</label>')+'<label>Reason (required)<textarea id=\"vendorBookingReasonV639\" required maxlength=\"1000\" rows=\"3\"></textarea></label><label class=\"orbit-vendor-confirm-v639\"><input id=\"vendorBookingConfirmV639\" type=\"checkbox\" required> I approve this change to the real booking, stock and the funding shown above.</label><button id=\"vendorBookingSaveV639\" type=\"submit\" '+(action==='transfer'?'disabled':'')+'>'+ (action==='transfer'?'Confirm transfer':'Confirm cancellation')+'</button></form>');\n      async function preview(){if(vendorActionBusyV639)return;vendorActionBusyStateV639(true);try{const r=await api('/api/admin/vendors/club/bookings/'+encodeURIComponent(bookingId)+'/transfer-preview',{method:'POST',body:JSON.stringify({targetEventKey:$('vendorTransferTargetV639').value}),cacheMs:0});quote=r.quote;const q=$('vendorTransferQuoteV639');q.hidden=false;const diff=Number(quote.difference),label=b.funding==='points'?Math.abs(diff)+' points':vendorMoneyV384(Math.abs(diff));q.innerHTML='<strong>'+esc(quote.eventName)+'</strong><p>'+Number(quote.quantity)+' table'+(quote.quantity===1?'':'s')+' \u00B7 '+(b.funding==='points'?Number(quote.total)+' points':esc(vendorMoneyV384(quote.total)))+'</p><p>'+esc(diff>0?label+' extra will be deducted from the available balance.':diff<0?label+' will be returned to the same funding balance.':'No points or credit difference.')+'</p><p>The destination stock is checked again before the move. The original booking remains protected until the destination is reserved.</p>';$('vendorBookingSaveV639').dataset.wasDisabledV639='0';vendorActionStatusV639('Review the destination and funding, then confirm.');}catch(error){quote=null;vendorActionStatusV639(error.message,'error');}finally{vendorActionBusyStateV639(false);}}\n      if(action==='transfer'){$('vendorTransferPreviewV639').onclick=preview;$('vendorTransferTargetV639').onchange=()=>{quote=null;$('vendorTransferQuoteV639').hidden=true;$('vendorBookingConfirmV639').checked=false;$('vendorBookingSaveV639').disabled=true;};}\n      if(saved){$('vendorBookingReasonV639').value=saved.reason;$('vendorBookingReasonV639').readOnly=true;if(action==='cancel'){$('vendorReturnFundsV639').checked=saved.returnValue;$('vendorReturnFundsV639').disabled=true;}else{$('vendorTransferTargetV639').value=saved.targetEventKey;$('vendorTransferTargetV639').disabled=true;$('vendorTransferPreviewV639').disabled=true;quote={quoteFingerprint:saved.quoteFingerprint};$('vendorBookingSaveV639').disabled=false;}$('vendorBookingSaveV639').textContent='Check / retry original '+action;vendorActionStatusV639('An earlier request is saved. This checks the same change without duplicating it.');}\n      $('vendorBookingFormV639').addEventListener('submit',async e=>{\n        e.preventDefault();if(vendorActionBusyV639||!e.target.reportValidity()||action==='transfer'&&!quote)return;\n        const payload=saved||{action,requestId:vendorRequestIdV639(),reason:$('vendorBookingReasonV639').value.trim(),confirmed:true,...(action==='cancel'?{returnValue:$('vendorReturnFundsV639').checked}:{targetEventKey:$('vendorTransferTargetV639').value,quoteFingerprint:quote.quoteFingerprint})};payload.confirmed=true;if(!vendorSavedActionV639(savedKey,payload)){vendorActionStatusV639('Enable browser session storage before changing real funds or bookings. No request was sent.','error');return;}saved=payload;vendorActionBusyStateV639(true);vendorActionStatusV639(action==='transfer'?'Reserving the destination and reconciling the original booking\u2026':'Cancelling the booking and verifying the stock return\u2026');\n        try{const r=await api('/api/admin/vendors/club/bookings/'+encodeURIComponent(bookingId)+'/'+action,{method:'POST',body:JSON.stringify(payload),cacheMs:0,timeoutMs:90000});\n          if(r.completed){vendorSavedActionV639(savedKey,null);box.innerHTML=summary+'<div class=\"orbit-vendor-action-success-v639\"><h3>'+ (action==='transfer'?'Booking transferred':'Booking cancelled')+'</h3><p>'+esc(r.message)+'</p>'+(action==='cancel'?'<p>'+ (payload.returnValue?'Return of '+esc(funds)+' recorded once.':'No points or Account Credit returned.')+'</p>':'')+'<button type=\"button\" data-booking-done-v639>Done</button></div>';box.querySelector('[data-booking-done-v639]').onclick=()=>d.close();vendorActionStatusV639('Complete. The booking and stock are reconciled.','success');await vendorRefreshAfterActionV639(key);}\n          else{vendorActionStatusV639(r.message||'The original change is still being verified.','info');$('vendorBookingSaveV639').textContent='Check original '+action;}\n        }catch(error){if(error.data?.terminal===true){vendorSavedActionV639(savedKey,null);saved=null;}vendorActionStatusV639(error.message+(error.data?.terminal===true?'':' The request is saved; check the original change rather than starting another.'),'error');$('vendorBookingSaveV639').textContent=error.data?.terminal===true?'Review and try again':'Check original '+action;}\n        finally{vendorActionBusyStateV639(false);}\n      });\n    }catch(error){vendorActionStatusV639(error.message,'error');}\n  }\n  document.addEventListener('click',event=>{\n    const credit=event.target.closest('[data-vendor-credit-action-v639]'),booking=event.target.closest('[data-vendor-booking-action-v639]');\n    if(credit){event.preventDefault();void openVendorCreditV639(credit.dataset.customerKey,credit.dataset.vendorCreditActionV639);}\n    if(booking){event.preventDefault();void openVendorBookingV639(booking.dataset.bookingId,booking.dataset.vendorBookingActionV639);}\n  });\n  // V639_ADMIN_BOOKING_END\n\n  async function viewVendorCustomerV398(key){\n    const dialog=$(\"vendorCustomerDetailDialog\"),title=$(\"vendorCustomerDetailTitle\"),body=$(\"vendorCustomerDetailBody\");if(!dialog||!body)return;title.textContent=\"Loading vendor\u2026\";body.innerHTML=\"<p class='orbit-muted'>Loading complete customer history\u2026</p>\";if(!dialog.open)dialog.showModal();\n    try{\n      const [data,clubData]=await Promise.all([api(\"/api/admin/vendors/customers/\"+encodeURIComponent(key),{cacheMs:0}),api(\"/api/admin/vendors/club/vendors/\"+encodeURIComponent(key),{cacheMs:0}).catch(()=>null)]),c=data.customer||{},bookings=data.bookings||[],comms=data.communications||[],notes=data.notes||[],accountCredits=data.accountCredits||[],accountCreditBalance=Number(data.accountCreditBalance||0);\n      title.textContent=c.name||\"Unknown vendor\";state.currentVendorCustomerKey=key;state.currentVendorCustomerProfile={...c};state.currentVendorClubData=clubData;\n      const aliasEmails=[...new Set([...(c.emails||[]),c.email].filter(Boolean))];\n      const bookingRows=bookings.map(b=>\"<tr><td>\"+esc(b.event?.label||\"\u2014\")+\"</td><td>\"+esc(b.orderName||b.type||\"\u2014\")+\"</td><td>\"+esc(vendorLineLabel(b))+\"</td><td>\"+Number(b.quantity||b.displayCases||b.lineQuantity||0)+\"</td><td>\"+esc(vendorMoneyV384(b.sales))+\"</td><td>\"+vendorBookingActionButtonsV398(b)+\"</td></tr>\").join(\"\");\n      const commRows=comms.map(x=>{const resend=x.type===\"vendor_event_details\"&&x.meta?.vendorEventKey?\"<button type='button' class='secondary' data-vendor-resend-details='\"+esc(x.meta.vendorEventKey)+\"' data-customer-key='\"+esc(key)+\"'>Resend</button>\":\"\";return \"<tr><td>\"+esc(prettyDate(x.createdAt))+\"</td><td>\"+esc(x.subject||x.type||\"Email\")+\"</td><td>\"+esc(x.to||\"\")+\"</td><td><span class='orbit-status-pill \"+(x.status===\"sent\"?\"active\":\"waiting\")+\"'>\"+esc(x.status||\"\")+\"</span></td><td>\"+resend+\"</td></tr>\";}).join(\"\");\n      const creditPanel=vendorCreditPanelV639(key,accountCreditBalance,accountCredits,clubData);\n      body.innerHTML=\"<div class='orbit-vendor-customer-hero orbit-vendor-customer-hero-v417'><div class='orbit-vendor-customer-profile'><div class='orbit-vendor-customer-avatar'>\"+esc(String(c.name||c.businessName||\"V\").trim().charAt(0).toUpperCase()||\"V\")+\"</div><div class='orbit-vendor-customer-identity'><span class='orbit-vendor-customer-eyebrow'>Vendor profile</span><strong class='orbit-vendor-customer-name'>\"+esc(c.businessName||c.name||\"Unknown vendor\")+\"</strong>\"+(c.businessName&&c.name?\"<span class='orbit-vendor-business-name'>Booking name: \"+esc(c.name)+\"</span>\":\"<span class='orbit-vendor-business-name orbit-muted'>No business identifier \u00B7 showing booking name</span>\")+\"<div class='orbit-vendor-customer-contact'>\"+(c.email?\"<span>\"+esc(c.email)+\"</span>\":\"<span>No email</span>\")+(c.phone?\"<span>\"+esc(c.phone)+\"</span>\":\"\")+(c.instagram?\"<span>\"+esc(c.instagram)+\"</span>\":\"\")+(c.website?\"<span>\"+esc(c.website)+\"</span>\":\"\")+(aliasEmails.length>1?\"<span>\"+aliasEmails.length+\" known emails</span>\":\"\")+\"</div><div class='orbit-vendor-customer-actions'><button type='button' class='secondary' data-vendor-edit-business='\"+esc(c.businessName||\"\")+\"'>Edit business</button><button type='button' class='secondary' data-vendor-copy='\"+esc(c.name||\"\")+\"' data-copy-label='Vendor name'>Copy name</button>\"+(c.email?\"<button type='button' class='secondary' data-vendor-copy='\"+esc(c.email)+\"' data-copy-label='Email'>Copy email</button>\":\"\")+\"<button type='button' class='secondary orbit-danger-button' data-vendor-customer-delete='\"+esc(key)+\"'>Delete customer</button></div></div></div><div class='orbit-vendor-customer-stats'><span><strong>\"+Number(c.orders||0)+\"</strong><small>Orders</small></span><span><strong>\"+Number(c.events||0)+\"</strong><small>Shows</small></span><span><strong>\"+Number(c.tables||0)+\"</strong><small>Tables</small></span><span><strong>\"+Number(c.displayCases||0)+\"</strong><small>Cases</small></span><span class='wide'><strong>\"+esc(vendorMoneyV384(c.spend))+\"</strong><small>Lifetime spend</small></span></div></div>\"+vendorClubCustomerPanelV620(clubData,c)+creditPanel+\"<h4>Orders &amp; bookings</h4><div class='orbit-table-wrap'><table><thead><tr><th>Event</th><th>Order</th><th>Type</th><th>Qty</th><th>Spend</th><th>Action</th></tr></thead><tbody>\"+(bookingRows||\"<tr><td colspan='6'>No bookings found.</td></tr>\")+\"</tbody></table></div><h4>Notes</h4><div id='vendorCustomerNotesList' class='orbit-vendor-notes'>\"+(notes.map(n=>\"<div class='orbit-vendor-note-row'><strong>\"+esc(prettyDate(n.createdAt))+\"</strong><span>\"+esc(n.text)+\"</span><div class='orbit-action-row'><button type='button' class='secondary' data-vendor-note-edit='\"+esc(n.id)+\"' data-note-text='\"+esc(n.text)+\"'>Edit</button><button type='button' class='secondary' data-vendor-note-delete='\"+esc(n.id)+\"'>Delete</button></div></div>\").join(\"\")||\"<p class='orbit-muted'>No notes yet.</p>\")+\"</div><div class='orbit-action-row'><input id='vendorCustomerNewNote' placeholder='Add an internal note\u2026'><button type='button' id='saveVendorCustomerNote'>Add note</button></div><h4>Communications</h4><div class='orbit-table-wrap'><table><thead><tr><th>When</th><th>Email</th><th>To</th><th>Status</th><th></th></tr></thead><tbody>\"+(commRows||\"<tr><td colspan='5'>No Orbit emails recorded for this customer yet.</td></tr>\")+\"</tbody></table></div>\";\n    }catch(error){body.innerHTML=\"<div class='orbit-info-banner warning'><strong>Customer could not be loaded</strong><span>\"+esc(error.message||String(error))+\"</span></div>\";}\n  }\n  async function adjustVendorCreditFromCustomerV493(button,clear=false){const id=button.dataset.vendorCreditDeduct||button.dataset.vendorCreditClear||\"\",customerKey=state.currentVendorCustomerKey;if(!id||!customerKey)return;let bookingValue=null;if(!clear){const remaining=Number(button.dataset.creditRemaining||0),raw=prompt(\"What is the GBP value of the replacement booking? Orbit will use up to \"+vendorMoneyV384(remaining)+\" credit and tell you any difference to invoice.\",remaining>0?remaining.toFixed(2):\"\");if(raw===null)return;bookingValue=Number(raw);if(!Number.isFinite(bookingValue)||bookingValue<=0)throw new Error(\"Enter a positive GBP booking value.\");}const label=clear?\"Clear the full remaining Vendor Account Credit?\":\"Apply this credit against a \"+vendorMoneyV384(bookingValue)+\" replacement booking?\";if(!confirm(label+\" This only updates Orbit's credit ledger and does not move money.\"))return;setLoading(button,true);try{const requestId=(globalThis.crypto?.randomUUID?.()||(\"customer-credit-\"+Date.now()+\"-\"+Math.random().toString(36).slice(2))),result=await api(\"/api/admin/vendors/account-credits/\"+encodeURIComponent(id)+\"/adjust\",{method:\"POST\",body:JSON.stringify({bookingValue,clearRemaining:clear,reason:\"Credit used against manually assigned Vendor tables\",requestId}),timeoutMs:15000,cacheMs:0});setNotice(result.message||\"Vendor Account Credit updated.\");await viewVendorCustomerV398(customerKey);}finally{setLoading(button,false);}}\n\n  async function resendVendorDetailsV398(button){\n    const eventKey=button.dataset.vendorResendDetails,customerKey=button.dataset.customerKey;if(!eventKey||!customerKey)return;\n    if(!confirm(\"Resend the latest setup details to this vendor?\"))return;\n    setLoading(button,true);try{const result=await api(\"/api/admin/vendors/events/\"+encodeURIComponent(eventKey)+\"/send-details\",{method:\"POST\",body:JSON.stringify({customerKey,override:false})});setNotice(result.sent?\"Vendor details resent.\":\"Vendor details could not be sent.\");await viewVendorCustomerV398(customerKey);}finally{setLoading(button,false);}\n  }\n  async function saveVendorCustomerNoteV398(button){const text=$(\"vendorCustomerNewNote\")?.value?.trim();if(!state.currentVendorCustomerKey||!text)return;setLoading(button,true);try{await api(\"/api/admin/vendors/customers/\"+encodeURIComponent(state.currentVendorCustomerKey)+\"/notes\",{method:\"POST\",body:JSON.stringify({text})});await viewVendorCustomerV398(state.currentVendorCustomerKey);setNotice(\"Vendor note added.\");}finally{setLoading(button,false);}}\n  function openVendorCustomerProfileV434(){\n    const c=state.currentVendorCustomerProfile||{};if(!state.currentVendorCustomerKey)return;\n    $(\"vendorProfileBookingName\").value=c.name||\"\";$(\"vendorProfileBusinessIdentifier\").value=c.businessName||\"\";$(\"vendorProfileEmail\").value=c.email||\"\";$(\"vendorProfilePhone\").value=c.phone||\"\";$(\"vendorProfileInstagram\").value=c.instagram||\"\";$(\"vendorProfileSocialMedia\").value=c.socialMedia||\"\";$(\"vendorProfileWebsite\").value=c.website||\"\";\n    const result=$(\"vendorCustomerProfileResult\");if(result){result.hidden=true;result.textContent=\"\";}$(\"vendorCustomerProfileDialog\")?.showModal();\n  }\n  async function deleteVendorCustomerV527(key,button){\n    if(!key)return;setLoading(button,true);\n    try{\n      const preview=await api(\"/api/admin/vendors/customers/\"+encodeURIComponent(key)+\"/delete-preview\",{cacheMs:0});\n      const c=preview.customer||{},summary=[Number(preview.orders||0)+\" Shopify order(s)\",Number(preview.events||0)+\" show(s)\",Number(preview.tables||0)+\" table(s)\"].join(\" \u00B7 \");\n      const typed=prompt(\"Remove \"+(c.businessName||c.name||\"this vendor\")+\" from the Vendor CRM?\\n\\n\"+summary+\"\\n\\nShopify orders, bookings and financial history will NOT be deleted.\\n\\nType DELETE CUSTOMER to confirm:\",\"\");\n      if(typed===null)return;if(typed.trim()!==\"DELETE CUSTOMER\")throw new Error(\"Customer deletion cancelled because the confirmation text did not match.\");\n      await api(\"/api/admin/vendors/customers/\"+encodeURIComponent(key),{method:\"DELETE\",body:JSON.stringify({confirmation:\"DELETE CUSTOMER\",reason:\"Removed from Vendor CRM by operator\"}),cacheMs:0});\n      $(\"vendorCustomerDetailDialog\")?.close();await loadVendorWorkspaceV398(null,true,true,\"customers\");setNotice(\"Vendor customer removed from the CRM. Shopify source history was preserved.\");\n    }finally{setLoading(button,false);}\n  }\n  async function deleteVendorVenueV527(button){\n    const id=$(\"vendorVenueId\")?.value;if(!id)return;setLoading(button,true);\n    try{\n      const preview=await api(\"/api/admin/vendors/venues/\"+encodeURIComponent(id)+\"/delete-preview\",{cacheMs:0});\n      const refs=preview.references||{};if(!preview.canDelete)throw new Error(\"This venue is still linked to \"+Number(refs.events||0)+\" event(s) and \"+Number(refs.floorPlans||0)+\" floor plan(s). Remove or reassign those links first.\");\n      const typed=prompt(\"Delete \"+(preview.venue?.name||\"this venue\")+\" from Orbit?\\n\\nHistorical Eventbrite data is preserved and the venue will not be recreated automatically.\\n\\nType DELETE VENUE to confirm:\",\"\");\n      if(typed===null)return;if(typed.trim()!==\"DELETE VENUE\")throw new Error(\"Venue deletion cancelled because the confirmation text did not match.\");\n      await api(\"/api/admin/vendors/venues/\"+encodeURIComponent(id),{method:\"DELETE\",body:JSON.stringify({confirmation:\"DELETE VENUE\",reason:\"Deleted from Venue master by operator\"}),cacheMs:0});\n      $(\"vendorVenueDialog\")?.close();await loadVendorWorkspaceV398(null,true,true,\"venues\");setNotice(\"Venue removed safely. Historical source data was preserved.\");\n    }finally{setLoading(button,false);}\n  }\n\n  async function saveVendorCustomerProfileV434(button){\n    if(!state.currentVendorCustomerKey)return;setLoading(button,true);try{\n      const payload={bookingName:$(\"vendorProfileBookingName\").value.trim(),businessIdentifier:$(\"vendorProfileBusinessIdentifier\").value.trim(),email:$(\"vendorProfileEmail\").value.trim(),phone:$(\"vendorProfilePhone\").value.trim(),instagram:$(\"vendorProfileInstagram\").value.trim(),socialMedia:$(\"vendorProfileSocialMedia\").value.trim(),website:$(\"vendorProfileWebsite\").value.trim()};\n      await api(\"/api/admin/vendors/customers/\"+encodeURIComponent(state.currentVendorCustomerKey)+\"/profile\",{method:\"POST\",body:JSON.stringify(payload)});\n      const result=$(\"vendorCustomerProfileResult\");if(result){result.hidden=false;result.textContent=\"Vendor profile saved.\";}await loadVendorWorkspaceV398(null,true,true,state.currentVendorPane||\"customers\");await viewVendorCustomerV398(state.currentVendorCustomerKey);$(\"vendorCustomerProfileDialog\")?.close();setNotice(\"Vendor profile saved without changing Shopify history or the customer key.\");\n    }finally{setLoading(button,false);}\n  }\n  async function editVendorBusinessIdentifierV412(){openVendorCustomerProfileV434();}\n  async function fetchPerformanceData(period) {\n    const selected = period || $(\"performancePeriod\")?.value || \"this_month\";\n    const data = await Promise.race([\n      api(\"/api/admin/v6001/card-shows/performance?period=\" + encodeURIComponent(selected)),\n      new Promise((_, reject) => setTimeout(() => reject(new Error(\"Performance data timed out\")), 15000))\n    ]);\n    state.performance = data;\n    return data;\n  }\n\n  function renderAttributionTable(data) {\n    const target = $(\"attributionTable\");\n    if (!target) return;\n    const rows = data?.rows || [];\n    target.innerHTML = table([\"Source\", \"Visits\", \"Memberships\", \"Tickets\", \"Revenue\"], rows.map(row =>\n      \"<tr><td><strong>\" + esc(row.source || \"Direct\") + \"</strong></td><td>\" + esc(row.visits || 0) + \"</td><td>\" + esc(row.signups || 0) + \"</td><td>\" + esc(row.tickets || 0) + \"</td><td>\" + esc(performanceMoney(row.revenue)) + \"</td></tr>\"\n    ), \"No attribution records were found for this period.\");\n  }\n\n  async function loadAttribution(button) {\n    const token=siteReadV544(\"attribution\");clearSiteTargetsV544([\"attributionTable\"]);\n    try {\n      siteLoadingV544(button,token,true);\n      const period = $(\"performancePeriod\")?.value || \"last_30_days\";\n      const data = await api(\"/api/admin/v6001/card-shows/attribution?period=\" + encodeURIComponent(period),{cacheMs:0,timeoutMs:25000});\n      if(!token.current())return;\n      renderSiteAttributionV544(\"attributionTable\",data);\n    } catch(error){siteReadFailureV544(token,\"attributionTable\",error);}finally { siteLoadingV544(button,token,false); }\n  }\n\n  function activityCategory(item) {\n    const structured=[item.type,item.source,item.category,item.event_type].filter(Boolean).join(\" \").toLowerCase();\n    const text=[structured,item.title,item.message].join(\" \").toLowerCase();\n    if (/payment|charge|billing|recharge|paid|refund/.test(text)) return \"payments\";\n    if (/member[_\\s-]?ticket|event|attendance|scan|check.?in|ticket[_\\s-]?(issued|deleted|claimed|order|purchase)|card show/.test(text)) return \"events\";\n    // Support requires an explicit support-conversation semantic. A generic\n    // \"ticket\" is an event admission ticket and must never leak into Support.\n    if (/support[_\\s-]?(ticket|message|thread|case|conversation)|helpdesk|customer[_\\s-]?service|member[_\\s-]?message|customer[_\\s-]?message/.test(structured+\" \"+String(item.title||\"\").toLowerCase())) return \"support\";\n    if (/pack|parcel|ship|dispatch|label|fulfil/.test(text)) return \"fulfilment\";\n    return \"membership\";\n  }\n\n  function renderBusinessActivity(filter) {\n    const target = $(\"businessActivityFeed\");\n    if (!target) return;\n    const selected = filter || state.businessActivityFilter || \"all\";\n    state.businessActivityFilter = selected;\n    document.querySelectorAll(\"[data-activity-filter]\").forEach(button => {\n      const active=button.dataset.activityFilter === selected;\n      button.classList.toggle(\"active\",active);\n      button.setAttribute(\"aria-pressed\",active?\"true\":\"false\");\n      button.setAttribute(\"aria-selected\",active?\"true\":\"false\"); button.style.setProperty(\"color\",active?\"#fff\":\"#24364b\",\"important\"); button.style.setProperty(\"-webkit-text-fill-color\",active?\"#fff\":\"#24364b\",\"important\");\n    });\n    const rows = (state.performance?.activity || []).filter(item => selected === \"all\" || activityCategory(item) === selected);\n    target.innerHTML = rows.length ? rows.map(item => {\n      const identity=[item.member_number,item.memberNumber,item.email,item.subscription_id,item.subscriptionId].filter(Boolean).join(' \u00B7 ');\n      const meta=item.metadata&&typeof item.metadata==='object'?item.metadata:{};\n      const usefulMeta=[];\n      if(meta.deliverySyncStatus) usefulMeta.push('Recharge sync: '+meta.deliverySyncStatus);\n      if(meta.monthKey) usefulMeta.push('Cycle: '+meta.monthKey);\n      if(meta.packId) usefulMeta.push('Pack: '+meta.packId);\n      return \"<article class='orbit-activity-item'><div><strong>\" + esc(item.title || item.type || \"Orbit activity\") + \"</strong><span>\" + esc(item.message || item.source || \"Recorded by Orbit\") + \"</span>\"+(identity?\"<small>\"+esc(identity)+\"</small>\":\"\")+(usefulMeta.length?\"<small>\"+esc(usefulMeta.join(' \u00B7 '))+\"</small>\":\"\")+\"</div><time>\" + esc(performanceDate(item.created_at || item.createdAt)) + \"</time></article>\";\n    }).join(\"\") : \"<div class='orbit-empty-state'><strong>No activity in this view</strong><span>There is no recent activity in this category.</span></div>\";\n  }\n\n  async function loadBusinessActivity(button) {\n    try { setLoading(button, true); await fetchPerformanceData(\"last_30_days\"); renderBusinessActivity(state.businessActivityFilter || \"all\"); }\n    finally { setLoading(button, false); }\n  }\n\n  function reportMetric(label, value, note) { return \"<article class='orbit-report-metric'><span>\" + esc(label) + \"</span><strong>\" + esc(value) + \"</strong>\" + (note ? \"<small>\" + esc(note) + \"</small>\" : \"\") + \"</article>\"; }\n  async function openBusinessReport(kind, button) {\n    const target = $(\"reportResult\");\n    if (!target) return;\n    try {\n      setLoading(button, true);\n      target.innerHTML = \"<div class='orbit-empty-state'><strong>Loading report\u2026</strong><span>Reading live Orbit records.</span></div>\";\n      const data = await fetchPerformanceData($(\"reportsPeriod\")?.value || state.performancePeriod || \"this_month\");\n      const membership = data.membership || {}, tickets = data.tickets || {}, forecast = data.forecast || {}, operations = data.operations || {};\n      const periodLabel=performancePeriodLabelV346(data); const reportsPeriod=document.getElementById(\"reportsPeriod\"); if(reportsPeriod) reportsPeriod.value=data.period||state.performancePeriod||reportsPeriod.value;\n      const reportsPeriodControl=reportsPeriod?.closest(\"label\")||null;\n      if(reportsPeriodControl) reportsPeriodControl.hidden=(kind===\"attendance\");\n      let title = \"Business report\", metrics = [], detail = \"\";\n      if (kind === \"membership\") {\n        title = \"Membership growth\"; metrics = [reportMetric(\"Signups in period\", membership.total || 0, periodLabel), reportMetric(\"All-time operational members\", membership.allTimeOperational || 0, \"Current non-archived operational member records\"), reportMetric(\"\u00A31 route\", membership.onePound || 0, performanceMoney(membership.onePoundCash) + \" received in period\"), reportMetric(\"Immediate upgrades\", membership.upgrades || 0, performanceMoney(membership.upgradeCash) + \" received in period\"), reportMetric(\"Next rebill members\", forecast.total || 0)];\n      } else if (kind === \"revenue\") {\n        title = \"Revenue\"; metrics = [reportMetric(\"Tracked revenue\", performanceMoney(data.revenue)), reportMetric(\"Membership cash\", performanceMoney(membership.cash)), reportMetric(\"Ticket revenue\", performanceMoney(tickets.revenue)), reportMetric(\"Safer rebill forecast\", performanceMoney(forecast.safer), forecast.assumption || \"\")];\n      } else if (kind === \"tickets\") {\n        title = \"Ticket sales\"; metrics = [reportMetric(\"Orders\", tickets.orders || 0), reportMetric(\"Tickets\", tickets.tickets || 0), reportMetric(\"Revenue\", performanceMoney(tickets.revenue))];\n        const ticketEventRows=Array.isArray(tickets.events)?tickets.events:[]; const eventTicketTotal=ticketEventRows.reduce((sum,row)=>sum+Number(row.quantity||0),0); const reportedTickets=Number(tickets.tickets||0);\n        const reconciledEventRows=(ticketEventRows.length===1 && eventTicketTotal!==reportedTickets)?[{...ticketEventRows[0],quantity:reportedTickets}]:ticketEventRows;\n        detail = \"<p class='orbit-report-context-v377'><strong>Tickets by event</strong><span>These event totals use the same selected reporting period as the figures above.</span></p>\"+table([\"Event\", \"Tickets\"], reconciledEventRows.map(row => \"<tr><td><strong>\" + esc(row.name) + \"</strong></td><td>\" + esc(row.quantity || 0) + \"</td></tr>\"), \"No ticket sales were found for this period.\");\n      } else if (kind === \"referrals\") {\n        title = \"Referral performance\"; const attribution = await api(\"/api/admin/v6001/card-shows/attribution?period=last_30_days\"); metrics = [reportMetric(\"Tracked records\", attribution.totalRecords || 0), reportMetric(\"Sources\", (attribution.rows || []).length)]; detail = table([\"Source\", \"Visits\", \"Memberships\", \"Tickets\", \"Revenue\"], (attribution.rows || []).map(row => \"<tr><td><strong>\" + esc(row.source || \"Direct\") + \"</strong></td><td>\" + esc(row.visits || 0) + \"</td><td>\" + esc(row.signups || 0) + \"</td><td>\" + esc(row.tickets || 0) + \"</td><td>\" + esc(performanceMoney(row.revenue)) + \"</td></tr>\"), \"No referral or campaign records were found.\");\n      } else if (kind === \"shipping\") {\n        title = \"Shipping operations\";\n        const parcelRows=Array.isArray(operations.openParcelRecords)?operations.openParcelRecords:[];\n        metrics = [reportMetric(\"Current open parcel records\", operations.pendingParcels || 0, \"Current operational-member fulfilment records; this count is not filtered by the report period\")];\n        detail = \"<div class='orbit-info-banner info'><strong>Current shipping queue</strong><span>This is a live queue count, not a selected-period statistic. Only parcel records belonging to current operational members are included.</span></div>\" + table([\"Cycle\",\"Member\",\"Status\"],parcelRows.map(row=>\"<tr><td>\"+esc(row.monthKey||\"\u2014\")+\"</td><td><strong>\"+esc(row.member||\"\u2014\")+\"</strong></td><td>\"+esc(row.status||\"\u2014\")+\"</td></tr>\"),\"No current open parcel records.\");\n      } else if (kind === \"attendance\") {\n        title = \"Event attendance\";\n        const attendanceData=await api(\"/api/admin/attendance/events?limit=250&scope=all\",{cacheMs:15000});\n        const historical=(attendanceData.events||[]).filter(isPastAttendanceEventV367).sort((a,b)=>new Date(attendanceEventDateV367(b)||0)-new Date(attendanceEventDateV367(a)||0));\n        const totalClaimed=historical.reduce((sum,event)=>sum+Number(event.attendance?.claimed||0),0);\n        const totalCheckedIn=historical.reduce((sum,event)=>sum+Number(event.attendance?.checkedIn||0),0);\n        metrics = [reportMetric(\"Past events\",historical.length,\"Completed shows\"),reportMetric(\"Expected admissions\",totalClaimed,\"Historical member/event claims\"),reportMetric(\"Checked in\",totalCheckedIn,\"Recorded door scans\")];\n        detail = attendanceHistoryTableV367(historical)+\"<div id='reportAttendanceDetailV367' class='orbit-past-event-detail' hidden></div>\";\n      }\n      const reportContext = kind === \"attendance\"\n        ? \"<p><strong>All completed events</strong><br>Historical attendance is not limited by the reporting-period selector.</p>\"\n        : \"<p><strong>Period: \"+esc(periodLabel)+\"</strong><br>\"+esc(data.status === \"partial\" ? \"Some data sources were unavailable; available figures are shown.\" : \"Figures below use this exact reporting window.\") + \"</p>\";\n      target.innerHTML = \"<div class='orbit-report-heading'><div><p class='orbit-kicker'>Live report</p><h3>\" + esc(title) + \"</h3>\"+reportContext+\"</div></div><div class='orbit-report-metrics'>\" + metrics.join(\"\") + \"</div>\" + detail;\n      if(kind===\"attendance\"){\n        target.querySelectorAll(\"[data-report-attendance-event]\").forEach(function(reportButton){\n          reportButton.addEventListener(\"click\",async function(){\n            const detailTarget=$(\"reportAttendanceDetailV367\");setLoading(reportButton,true);\n            try{const full=await api(\"/api/admin/attendance/events/\"+encodeURIComponent(reportButton.dataset.reportAttendanceEvent),{cacheMs:0});if(detailTarget){const renderHistoricalDetail=async function(payload){detailTarget.innerHTML=attendanceDetailMarkup(payload);const eventId=payload?.event?.eventbriteEventId||reportButton.dataset.reportAttendanceEvent;wireHistoricalAddOnRecoveryV480(detailTarget,eventId,async()=>{const refreshed=await api(\"/api/admin/attendance/events/\"+encodeURIComponent(reportButton.dataset.reportAttendanceEvent),{cacheMs:0});await renderHistoricalDetail(refreshed);});wireDoorCorrectionsV489(detailTarget,eventId,async()=>{const refreshed=await api(\"/api/admin/attendance/events/\"+encodeURIComponent(reportButton.dataset.reportAttendanceEvent),{cacheMs:0});await renderHistoricalDetail(refreshed);});};await renderHistoricalDetail(full);detailTarget.hidden=false;detailTarget.scrollIntoView({behavior:\"smooth\",block:\"start\"});}setNotice(\"Historical event attendance loaded.\");}\n            catch(error){setNotice(error.message||String(error),true);}\n            finally{setLoading(reportButton,false);}\n          });\n        });\n      }\n      document.querySelectorAll(\"[data-report-kind]\").forEach(item => item.classList.toggle(\"active\", item.dataset.reportKind === kind));\n    } catch (err) { target.innerHTML = \"<div class='orbit-empty-state orbit-error-state'><strong>Report could not load</strong><span>\" + esc(err.message || err) + \"</span></div>\"; }\n    finally { setLoading(button, false); }\n  }\n\n  /** Load the Performance overview from the authoritative V79 analytics service. */\n  async function loadPerformanceOverview(button) {\n    const token=siteReadV544(\"overview\"),notice=$(\"performanceNotice\");showPerformanceSiteV544();\n    clearSiteTargetsV544([\"perfSignups\",\"perfOnePound\",\"perfOnePoundCash\",\"perfUpgrades\",\"perfUpgradeCash\",\"perfTickets\",\"perfTicketRevenue\",\"perfRevenue\",\"forecastGross\",\"forecastMembers\",\"forecastConfirmed\",\"forecastPending\",\"forecastRisk\",\"forecastExcluded\",\"forecastSafe\",\"forecastPerMember\"],\"\u2014\");\n    const loadingButton=button && String(button.tagName||\"\").toUpperCase()===\"BUTTON\" ? button : null;\n    const selectedPeriod=$(\"performancePeriod\")?.value || state.performancePeriod || \"this_month\";\n    state.performancePeriod=selectedPeriod;\n    if(notice) notice.innerHTML=\"<strong>Loading business performance\u2026</strong><span>Reading the selected product records.</span>\";\n    try {\n      siteLoadingV544(loadingButton,token,true);\n      const data=await api(\"/api/admin/v6001/card-shows/performance?period=\"+encodeURIComponent(selectedPeriod),{cacheMs:0,timeoutMs:25000});\n      if(!token.current())return;\n      const membership=data.membership||{}, tickets=data.tickets||{}, forecast=data.forecast||{};\n      text(\"perfSignups\", membership.total||0);\n      text(\"perfOnePound\", membership.onePound||0); text(\"perfOnePoundCash\", performanceMoney(membership.onePoundCash)+\" estimated signup receipts\");\n      text(\"perfUpgrades\", membership.upgrades||0); text(\"perfUpgradeCash\", performanceMoney(membership.upgradeCash)+\" estimated signup receipts\");\n      text(\"perfTickets\", tickets.tickets||0); text(\"perfTicketRevenue\", performanceMoney(tickets.revenue)+\" revenue\");\n      text(\"perfRevenue\",data.revenue==null?\"\u2014\":performanceMoney(data.revenue));\n      const forecastDate=forecast.date?new Date(forecast.date):null;\n      text(\"forecastTitle\", forecastDate&&!Number.isNaN(forecastDate.getTime()) ? \"Money due \" + forecastDate.toLocaleDateString(\"en-GB\",{day:\"numeric\",month:\"long\"}) : \"Next first-of-month billing\");\n      text(\"forecastGross\",performanceMoney(forecast.gross)); text(\"forecastMembers\",(forecast.total||0)+\" member payments expected\");\n      text(\"forecastConfirmed\",forecast.confirmed||0); text(\"forecastPending\",forecast.pending||0); text(\"forecastRisk\",forecast.atRisk||0); text(\"forecastExcluded\",forecast.excluded||0); text(\"forecastSafe\",performanceMoney(forecast.safer));\n      text(\"forecastPerMember\", forecast.total ? performanceMoney(forecast.safer/forecast.total)+\" per expected paid member\" : \"No expected payments\");\n      const confidence=$(\"forecastConfidence\"); if(confidence){confidence.textContent=data.status==='partial'?\"Partial data\":\"Live forecast\";confidence.className=\"orbit-status-pill \"+(data.status==='partial'?\"waiting\":\"success\");}\n      if(!data.membership)clearSiteTargetsV544([\"perfSignups\",\"perfOnePound\",\"perfOnePoundCash\",\"perfUpgrades\",\"perfUpgradeCash\",\"forecastGross\",\"forecastMembers\",\"forecastConfirmed\",\"forecastPending\",\"forecastRisk\",\"forecastExcluded\",\"forecastSafe\",\"forecastPerMember\"],\"\u2014\");\n      if(!data.tickets)clearSiteTargetsV544([\"perfTickets\",\"perfTicketRevenue\"],\"\u2014\");\n      await loadAttribution(null);if(!token.current())return;\n      if(notice)notice.innerHTML=\"<strong>\"+esc(performanceDomainV544())+\" \u00B7 \"+esc(performancePeriodLabelV346(data))+\"</strong><span>\"+esc(data.scope?.operationalBasis||\"\")+\" \"+esc(data.scope?.revenueBasis||\"\")+(data.status==='partial'?\" Some records are unavailable.\":\"\")+(data.coverage?.possiblyCapped?\" Record limit reached; totals may be incomplete.\":\"\")+\"</span>\";\n    } catch(err) { if(token.current()&&notice) notice.innerHTML=\"<strong>Performance could not be loaded</strong><span>\"+esc(err.message)+\". Use Refresh to try again.</span>\"; }\n    finally { siteLoadingV544(loadingButton,token,false); }\n  }\n\n  document.addEventListener(\"click\", async function(event){\n    const button=event.target.closest(\"[data-toggle-ticket-discount]\");\n    if(!button)return;\n    const code=button.dataset.toggleTicketDiscount;\n    const enabled=button.dataset.enabled===\"true\";\n    try{\n      setLoading(button,true);\n      await api(\"/api/admin/ticket-discount-codes/\"+encodeURIComponent(code)+\"/enabled\",{method:\"POST\",body:JSON.stringify({enabled}),cacheMs:0});\n      await loadTicketDiscountCodes();\n      setNotice(\"Ticket discount code \"+(enabled?\"reactivated: \":\"disabled: \")+code);\n    }catch(err){setNotice(err.message||String(err),true);}\n    finally{setLoading(button,false);}\n  });\n\n  // V679 Card Show store controls. Kept inside the existing Admin closure so\n  // requests use the established session/auth helper, never a browser API token.\n  const cardShowShopifyStateV678={pane:'overview',overview:null,products:[],inventory:[],collections:[],pages:[],menus:[],themes:[],drafts:[],files:[],prepared:[],eventLayoutsV684:null,referenceProducts:[],cursors:{},loaded:{},requests:{},audit:[],dialogVersion:0,draftOperations:{},draftWatchers:{},draftListRequest:0,batch:null};\n  const scV679=cardShowShopifyStateV678;\n  const scLabelsV679={overview:'Overview',products:'Products',inventory:'Inventory',collections:'Collections',drafts:'Drafts & Approvals',theme:'Website & Theme',pages:'Pages & Navigation',files:'Files & Media',integrations:'Integrations',history:'History & Diagnostics'};\n  // V681_PRESENTATION_CONTROLS_BEGIN\n  const scPresentationV681={photos:[],selectedPhotos:new Set(),photoCursor:null,photoMore:false,artworkRows:[],artworkReviews:[],artworkBusy:false};\n  async function scPhotoLibraryV681(more=false){\n    if(!more){const data=await scRequestV679('presentation-library');scPresentationV681.photos=[];scPresentationV681.selectedPhotos=new Set((data.album?.photos||[]).map(x=>x.id));scPresentationV681.photoCursor=null;}\n    const data=await scRequestV679('files?limit=25'+(more&&scPresentationV681.photoCursor?'&after='+encodeURIComponent(scPresentationV681.photoCursor):''));\n    scPresentationV681.photos=scMergeV679(scPresentationV681.photos,(data.nodes||[]).filter(x=>x.image?.url&&x.fileStatus==='READY'),true);scPresentationV681.photoCursor=data.pageInfo?.endCursor;scPresentationV681.photoMore=!!data.pageInfo?.hasNextPage;\n    scModalV679('Your original Orbit event photos',`<p>Choose up to four of <strong>your own crowd photographs from previous Orbit shows</strong>. The images below come only from the connected Card Show Shopify Files. Banners, stock photos and generated images must not be selected.</p><p>Selected photos are captioned as previous Orbit events, never as photographs of a future venue.</p><div class=\"sc-own-photo-grid\">${scPresentationV681.photos.map(f=>`<label><input type=\"checkbox\" data-sc-own-photo=\"${esc(f.id)}\" ${scPresentationV681.selectedPhotos.has(f.id)?'checked':''}><img loading=\"lazy\" src=\"${esc(scSafeUrlV679(f.image.url))}\" alt=\"${esc(f.alt||'Shopify image')}\"/><span>${esc(f.alt||f.id.split('/').pop())}</span></label>`).join('')||'<p>No ready images on this page.</p>'}</div>${scPresentationV681.photoMore?scButtonV679('photos-more','Load more Shopify images'):''}<p><strong id=\"scPhotoCountV681\">${scPresentationV681.selectedPhotos.size} selected</strong></p><label class=\"sc-checkbox-row\"><input id=\"scOwnPhotoConfirmV681\" type=\"checkbox\"><span>I confirm the selected images are my own original Orbit crowd photos.</span></label><p class=\"sc-note\">Save changes the shared photo selection in Orbit only. Use Update design & artwork on the private drafts to apply it. It never rewrites live product descriptions.</p>`,scButtonV679('photos-save','Save original-photo selection','',true));\n    $('scDialogV679').querySelectorAll('[data-sc-own-photo]').forEach(el=>el.addEventListener('change',()=>{if(el.checked&&scPresentationV681.selectedPhotos.size>=4){el.checked=false;scNoticeV679('Select no more than four photographs.',true);return;}if(el.checked)scPresentationV681.selectedPhotos.add(el.dataset.scOwnPhoto);else scPresentationV681.selectedPhotos.delete(el.dataset.scOwnPhoto);$('scPhotoCountV681').textContent=scPresentationV681.selectedPhotos.size+' selected';}));\n  }\n  async function scSavePhotosV681(b){await scBusyV679(b,async()=>{await scRequestV679('presentation-library/photos','POST',{photoIds:[...scPresentationV681.selectedPhotos],confirmOwnPhotos:$('scOwnPhotoConfirmV681').checked});delete $('scDialogV679').dataset.busy;scCloseV679();scNoticeV679('Original-photo selection saved. Update your private draft designs to include the gallery. No live product was edited.');});}\n  async function scVenueV681(id){const d=scV679.drafts.find(x=>x._id===id),r=await scRequestV679('drafts/'+encodeURIComponent(id)+'/venue'),v=r.venue||{};scV679.venueDraftV681=id;scModalV679('Venue details & map',`<h3>${esc(d?.title||'Event')}</h3><p>Use the <strong>exact event building and address</strong>. A university name alone is not a verified location. Leave this blank rather than guessing a pin.</p><label>Confirmed street address and postcode<textarea id=\"scVenueAddressV681\" maxlength=\"350\" rows=\"3\">${esc(v.address||'')}</textarea></label><label>Google Maps embed URL (optional)<textarea id=\"scVenueMapV681\" rows=\"3\" placeholder=\"In Google Maps: open the actual venue \u2192 Share \u2192 Embed a map \u2192 Copy HTML\">${esc(v.mapsEmbedUrl||'')}</textarea></label><p class=\"sc-note\">The safe map address is extracted from the embed code. The page shows a directions link and a click-to-load map; it does not contact Google before the visitor opens it.</p><label class=\"sc-checkbox-row\"><input type=\"checkbox\" id=\"scVenueConfirmV681\"><span>I checked the building, address and map pin against the booked venue.</span></label><p>Saving does not change Shopify. Apply this with <strong>Update design & artwork</strong> on the private draft, then review its new preview.</p>`,scButtonV679('venue-save','Save venue details','',true));}\n  async function scSaveVenueV681(b){await scBusyV679(b,async()=>{await scRequestV679('drafts/'+encodeURIComponent(scV679.venueDraftV681)+'/venue','POST',{address:$('scVenueAddressV681').value,mapsEmbedUrl:$('scVenueMapV681').value,confirmExactVenue:$('scVenueConfirmV681').checked});delete $('scDialogV679').dataset.busy;scCloseV679();await scDraftsV679();scNoticeV679('Venue saved. Apply the design update to include it; any earlier content approval has been cleared.');});}\n  function scGuessArtworkEventV681(p){const known=scV679.drafts.find(d=>d.shopifyProductId===p.id)?.plan?.eventPresentation;if(known)return {...known};const venue=String(p.title||'').split(/\\s+-\\s+(?:Reserve|Book)/i)[0];const match=String(p.title||'').match(/\\b(\\d{1,2})(?:st|nd|rd|th)?\\s+(January|February|March|April|May|June|July|August|September|October|November|December)\\s+(20\\d{2})\\b/i);const month=match?['january','february','march','april','may','june','july','august','september','october','november','december'].indexOf(match[2].toLowerCase())+1:0;return {city:'',venue,date:match?`${match[3]}-${String(month).padStart(2,'0')}-${match[1].padStart(2,'0')}`:'',autoArtwork:true};}\n  async function scArtworkManagerV681(more=false){if(!more){scPresentationV681.artworkReviews=[];const data=await scRequestV679('products?limit=25');scPresentationV681.artworkRows=(data.products||data.nodes||[]).map(p=>({p,event:scGuessArtworkEventV681(p)}));scPresentationV681.productCursor=data.pageInfo?.endCursor;scPresentationV681.productMore=!!data.pageInfo?.hasNextPage;}else{scRememberArtworkFieldsV681();const data=await scRequestV679('products?limit=25&after='+encodeURIComponent(scPresentationV681.productCursor||''));const known=new Set(scPresentationV681.artworkRows.map(x=>x.p.id));for(const p of data.products||data.nodes||[])if(!known.has(p.id))scPresentationV681.artworkRows.push({p,event:scGuessArtworkEventV681(p)});scPresentationV681.productCursor=data.pageInfo?.endCursor;scPresentationV681.productMore=!!data.pageInfo?.hasNextPage;}\n    scModalV679('Refresh existing event artwork',`<p>Give selected event products the same original-logo design. <strong>This updates the featured image only</strong> and keeps every existing gallery photo, variant, price and stock quantity.</p><div class=\"sc-callout sc-warning\">For already-live events, applying artwork changes the visible product image immediately. Preview and approve the selection first. No product is published and no announcement is sent.</div><p>Dates and venue names read from titles are suggestions only. Confirm every field. Select up to 20 events per batch.</p><div class=\"sc-artwork-event-list\">${scPresentationV681.artworkRows.map((r,i)=>`<article data-sc-art-row=\"${i}\"><label class=\"sc-checkbox-row\"><input data-art-select type=\"checkbox\" ${r.selected?'checked':''}><strong>${esc(r.p.title)}</strong></label><small>${esc(r.p.status||'')} \u00B7 ${esc(r.p.id.split('/').pop())}</small><div class=\"sc-form-grid\"><label>Town or city<input data-art-city value=\"${esc(r.event.city)}\" placeholder=\"Confirm location\"></label><label>Venue<input data-art-venue value=\"${esc(r.event.venue)}\"></label><label>Date<input data-art-date type=\"date\" value=\"${esc(r.event.date)}\"></label></div></article>`).join('')}</div>${scPresentationV681.productMore?scButtonV679('artwork-manager-more','Load more existing products'):''}<label class=\"sc-checkbox-row\"><input id=\"scArtworkFactsV681\" type=\"checkbox\"><span>I checked the town, venue and date for every selected event.</span></label>`,scButtonV679('artwork-review','Generate artwork previews','',true));}\n  function scRememberArtworkFieldsV681(){document.querySelectorAll('[data-sc-art-row]').forEach(el=>{const r=scPresentationV681.artworkRows[Number(el.dataset.scArtRow)];if(r){r.selected=el.querySelector('[data-art-select]').checked;r.event={city:el.querySelector('[data-art-city]').value,venue:el.querySelector('[data-art-venue]').value,date:el.querySelector('[data-art-date]').value,autoArtwork:true};}});}\n  async function scArtworkReviewV681(b){await scBusyV679(b,async()=>{scRememberArtworkFieldsV681();const rows=scPresentationV681.artworkRows.filter(x=>x.selected);if(!rows.length||rows.length>20)throw Error('Select between one and twenty events.');if(!$('scArtworkFactsV681').checked)throw Error('Confirm the event details before generating previews.');scPresentationV681.artworkReviews=[];for(const r of rows){const x=await scRequestV679('artwork/prepare','POST',{productId:r.p.id,event:r.event,confirmEventDetails:true});scPresentationV681.artworkReviews.push(x);}delete $('scDialogV679').dataset.busy;scArtworkApprovalV681();});}\n  function scArtworkApprovalV681(){scModalV679('Approve the new event artwork',`<p>These images are prepared, <strong>not yet applied</strong>. Review the dates and venue text. Original logos remain unchanged; the background symbol is an opacity-only copy.</p><div class=\"sc-artwork-review-grid\">${scPresentationV681.artworkReviews.map(r=>`<article><img src=\"${esc(r.dataUrl||r.operation.artwork?.url||'')}\" alt=\"${esc(r.operation.title)}\"><strong>${esc(r.operation.title)}</strong><p>${esc(r.operation.originalStatus)} \u00B7 ${esc(r.operation.status)}</p><p data-art-result=\"${esc(r.operation.id)}\" role=\"status\">${esc(r.operation.lastError||'Ready for your approval')}</p></article>`).join('')}</div><label>Type UPDATE EVENT ARTWORK<input id=\"scArtworkApplyConfirmV681\" autocomplete=\"off\"></label><p class=\"sc-note\">Existing live images will change. Products, descriptions, prices, stock, bookings and customer messages do not change.</p>`,scButtonV679('artwork-apply','Apply approved images','',true));}\n  async function scArtworkApplyV681(b){await scBusyV679(b,async()=>{if($('scArtworkApplyConfirmV681').value.trim()!=='UPDATE EVENT ARTWORK')throw Error('Type UPDATE EVENT ARTWORK to approve the visible image changes.');for(const row of scPresentationV681.artworkReviews){const el=[...document.querySelectorAll('[data-art-result]')].find(x=>x.dataset.artResult===row.operation.id);try{if(el)el.textContent='Checking and updating this image\u2026';const r=await scRequestV679('artwork/'+encodeURIComponent(row.operation.id)+'/apply','POST',{confirmation:'UPDATE EVENT ARTWORK'});row.operation=r.operation;if(el)el.textContent=r.pending?r.message||'Shopify is processing the image. Resume from Artwork update history.':'Featured image verified. Existing images and stock preserved.';}catch(e){if(el){el.textContent=e.message;el.className='sc-inline-error';}}}scNoticeV679('Artwork batch finished. Check each result; pending operations can be resumed from Artwork update history. No messages were sent.');});}\n  async function scArtworkHistoryV681(){const r=await scRequestV679('artwork/operations');scModalV679('Artwork update history',`<p>Resume an unfinished image operation without creating a new product or discarding its existing images.</p>${(r.operations||[]).map(o=>`<article class=\"sc-artwork-history-row\"><strong>${esc(o.title)}</strong><p>${esc(o.status)} \u00B7 ${esc(scDateV679(o.updatedAt))}</p>${o.lastError?`<p class=\"sc-inline-error\">${esc(o.lastError)}</p>`:''}${o.status!=='complete'?scButtonV679('artwork-resume','Resume approved image check',`data-id=\"${esc(o.id)}\"`):'<p>Featured artwork verified.</p>'}</article>`).join('')||'<p>No existing-product artwork updates yet.</p>'}`);}\n  async function scArtworkResumeV681(id,b){if(!confirm('Resume this approved artwork update? If Shopify has not finished, this may attach or feature the prepared image on the existing product. It does not publish or send messages.'))return;await scBusyV679(b,async()=>{const r=await scRequestV679('artwork/'+encodeURIComponent(id)+'/apply','POST',{confirmation:'UPDATE EVENT ARTWORK'});delete $('scDialogV679').dataset.busy;await scArtworkHistoryV681();scNoticeV679(r.pending?r.message||'Shopify image processing is still pending.':'Artwork verified.');});}\n  // V681_PRESENTATION_CONTROLS_END\n  function scEventLayoutStatusV684(value){return ({old_layout:'Old layout',current_live:'Current layout',draft_ready:'Draft ready',approved:'Approved',verified:'Published and verified',needs_attention:'Needs attention',published_needs_verification:'Published, verify again'})[value]||String(value||'Unknown').replaceAll('_',' ');}\n  function scEventLayoutPanelV684(){\n    const data=scV679.eventLayoutsV684;\n    if(!data)return '<article class=\"sc-panel\"><p class=\"sc-eyebrow\">LIVE EVENT LAYOUT UPGRADE</p><h3>Loading existing booking pages\u2026</h3></article>';\n    const rows=data.events||[];\n    const approved=rows.filter(x=>x.approved&&!x.attention).length,verified=rows.filter(x=>x.verified).length,ready=rows.filter(x=>x.previewReady).length,attention=rows.filter(x=>x.attention).length;\n    const tableRows=rows.map(e=>{\n      const preview=e.previewUrl?scLinkV679(e.previewUrl,'Open private preview',true):'<span>Prepare preview first</span>';\n      const actions=[];\n      if(e.status==='draft_ready')actions.push(scButtonV679('layout-approve','Approve',`data-id=\"${esc(e.id)}\"`,true));\n      if(e.status==='approved')actions.push(scButtonV679('layout-publish-one','Publish this event',`data-id=\"${esc(e.id)}\"`,true));\n      if(e.status==='verified')actions.push(scLinkV679(e.liveUrl,'View live',true));\n      if(e.attention&&e.publishedVersion==='V684.0.0')actions.push(scButtonV679('layout-recheck','Recheck live',`data-id=\"${esc(e.id)}\"`));\n      const warning=e.attention?`<small class=\"sc-inline-error\">${esc(e.attention)}</small>`:'';\n      const editor=e.themeEditorUrl?`<small>${scLinkV679(e.themeEditorUrl,'Open theme editor',true)}</small>`:'';\n      return `<tr><td><strong>${esc(e.title)}</strong><small>${esc(e.handle)}</small>${warning}</td><td>${esc(e.date||'Date needs checking')}</td><td>${scBadgeV679(scEventLayoutStatusV684(e.status))}</td><td>${preview}${editor}</td><td><div class=\"sc-actions\">${actions.join('')||'<span>Review preview</span>'}</div></td></tr>`;\n    });\n    const table=rows.length?scTableV679(['Event','Date','State','Preview','Actions'],tableRows):scEmptyV679('No live Reserve a Table products found','Orbit will only include ACTIVE, publicly available Card Show booking products.');\n    return `<article class=\"sc-panel sc-feature\"><p class=\"sc-eyebrow\">LIVE EVENT LAYOUT UPGRADE \u00B7 V684</p><h3>Preview every current vendor booking page before publishing</h3><p>Orbit found <strong>${rows.length}</strong> live Reserve a Table page${rows.length===1?'':'s'}. The private theme lets you review the new layout, Easify width fix and Vendor Club banner without changing the live product. Approving a preview does not publish anything.</p><div class=\"sc-metrics\"><article><span>Preview ready</span><strong>${ready}</strong><small>Private theme only</small></article><article><span>Approved</span><strong>${approved}</strong><small>Ready for your publish action</small></article><article><span>Verified live</span><strong>${verified}</strong><small>V684 confirmed</small></article><article><span>Needs attention</span><strong>${attention}</strong><small>Blocked until checked</small></article></div><div class=\"sc-actions\">${scButtonV679('layout-previews-prepare',data.theme?.ready?'Refresh private previews':'Prepare private previews','',true)}${scButtonV679('layout-publish-approved','Publish all approved',approved?'':'disabled',true)}</div><p class=\"sc-note\">The first publish may make the reviewed V684 theme live for event pages already using the current Orbit layout. Orbit blocks that step until those existing layout pages are approved. Older pages remain unchanged until you publish them individually. No email, SMS or launch campaign is sent.</p>${table}</article>`;\n  }\n  async function scRefreshEventLayoutsV684(){scV679.eventLayoutsV684=await scRequestV679('event-layout-migrations');scRenderDraftsV67902();return scV679.eventLayoutsV684;}\n  async function scPrepareEventLayoutsV684(button){await scBusyV679(button,async()=>{let r;for(let i=0;i<45;i++){r=await scRequestV679('event-layout-migrations/prepare','POST',{confirmation:'PREPARE EVENT LAYOUT PREVIEWS'});scV679.eventLayoutsV684=r.state||scV679.eventLayoutsV684;scRenderDraftsV67902();if(!r.pending&&r.state?.theme?.ready)break;await new Promise(resolve=>setTimeout(resolve,Math.min(2500,Number(r.retryAfterMs)||1500)));}await scRefreshEventLayoutsV684();if(!scV679.eventLayoutsV684?.theme?.ready)scNoticeV679('Shopify is still preparing the private theme. Retry Prepare private previews shortly. Nothing live was changed.');else scNoticeV679('Private previews are ready. Open each event and approve only the pages you checked.');});}\n  async function scApproveEventLayoutV684(id,button){if(!confirm('Approve this private event layout for publication? This approval alone does not change the live storefront.'))return;await scBusyV679(button,async()=>{scV679.eventLayoutsV684=await scRequestV679('event-layout-migrations/'+encodeURIComponent(id)+'/approve','POST',{confirmation:'APPROVE EVENT LAYOUT'});scRenderDraftsV67902();scNoticeV679('Event layout approved. It is still private until you publish it.');});}\n  async function scPublishEventLayoutV684(id,button){const row=scV679.eventLayoutsV684?.events?.find(x=>x.id===id);if(!confirm(`Publish the reviewed V684 layout for ${row?.title||'this event'}? The existing product, URL, variants, inventory and Easify setup are preserved. No customer message is sent.`))return;await scBusyV679(button,async()=>{await scRequestV679('event-layout-migrations/'+encodeURIComponent(id)+'/publish','POST',{confirmation:'PUBLISH EVENT LAYOUT'});await scRefreshEventLayoutsV684();scNoticeV679('Event layout publication finished. Check the live link shown in the table.');});}\n  async function scPublishApprovedLayoutsV684(button){const count=(scV679.eventLayoutsV684?.events||[]).filter(x=>x.approved&&!x.attention).length;if(!count)return;if(!confirm(`Publish ${count} approved event layout${count===1?'':'s'} now? Unapproved old-layout events stay unchanged. No email, SMS or launch campaign is sent.`))return;await scBusyV679(button,async()=>{const r=await scRequestV679('event-layout-migrations/publish-approved','POST',{confirmation:'PUBLISH APPROVED EVENT LAYOUTS'});scV679.eventLayoutsV684=r.state||await scRequestV679('event-layout-migrations');scRenderDraftsV67902();if(r.failures?.length){const f=r.failures[0]||{};scNoticeV679('Publication stopped safely: '+(f.title?f.title+': ':'')+(f.error||'Shopify refused one event. Review the Needs attention row before continuing.'),true);}else scNoticeV679('All approved event layouts were published and checked.');});}\n  async function scRecheckEventLayoutV684(id,button){await scBusyV679(button,async()=>{await scRequestV679('event-layout-migrations/'+encodeURIComponent(id)+'/recheck','POST',{confirmation:'RECHECK EVENT LAYOUT'});await scRefreshEventLayoutsV684();scNoticeV679('Live event layout rechecked.');});}\n\n  function scDesignPanelV680(){\n    const design=scV679.designV680||{},products=scV679.drafts.filter(d=>d.kind==='product'&&(d.preparedEventKey||d.plan?.eventPresentation));\n    const unpublished=products.filter(d=>d.shopifyProductId&&d.status!=='published'),published=products.filter(d=>d.shopifyProductId&&d.status==='published');\n    return `<article class=\"sc-design-studio\"><div><p class=\"sc-eyebrow\">EVENT DESIGN & PUBLISHING</p><h3>Preview the event. Publish when you are happy.</h3><p>Use <strong>Preview event page</strong> on an event below. Orbit prepares the private design, follows its progress and opens the correct full-width page. You do not need to prepare or check a theme separately.</p></div>\n    ${design.lastError?`<div class=\"sc-callout sc-warning\" role=\"alert\"><strong>Last preview check</strong><p>${esc(design.lastError)}</p><p>Click Preview event page to resume the same saved copy. No new product is created.</p></div>`:''}\n    ${published.length?`<div class=\"sc-callout sc-warning\"><strong>${published.length} managed event${published.length===1?' is':'s are'} already live.</strong><p>If the approved design, Reserve a Table menu or Vendor Tables collection did not go live with them, repair the whole launch in one action. This sends no SMS or email.</p>${scButtonV679('repair-live-launch','Repair live storefront','',true)}</div>`:''}\n    <div class=\"sc-actions\">${scButtonV679('polish-all','Update event copy & artwork',unpublished.length?'':'disabled')}${scButtonV679('photos','Choose original crowd photos')}${scButtonV679('artwork-manager','Refresh other event artwork')}${scButtonV679('launch-review','Open SMS campaigns')}</div>\n    <p class=\"sc-note\"><strong>Nothing goes live from a preview.</strong> Review & publish explicitly approves the event and its website design. Announcements remain manual-only.</p></article>`;\n  }\n  async function scRepairLiveLaunchV68304(button){\n    if(!confirm('Repair all six live 2027 events now? Orbit will prepare and publish the corrected Card Show event design if needed, keep the six live products in their existing collections/menu, and preserve chronological ordering. No SMS or email will be sent.'))return;\n    await scBusyV679(button,async()=>{\n      let r=null;\n      for(let pass=0;pass<55;pass++){\n        scNoticeV679(pass?'Finishing the corrected live event layout\u2026':'Repairing the live event layout\u2026');\n        r=await api('/api/admin/card-show-shopify/live-launch-repair',{method:'POST',body:JSON.stringify({confirmation:'REPAIR LIVE LAUNCH'}),cacheMs:0,timeoutMs:30000});\n        if(!r.pending)break;\n        const message=r.progress?.message||r.theme?.progress?.message||'Shopify is preparing the corrected event design\u2026';\n        scNoticeV679(message);\n        await new Promise(resolve=>setTimeout(resolve,Math.max(1200,Math.min(3000,Number(r.retryAfterMs||1500)))));\n      }\n      if(!r||r.pending)throw new Error('Shopify is still preparing the corrected event theme. Click Repair live storefront again to resume the same saved repair; no duplicate theme or product will be created.');\n      await scDraftsV679();\n      scNoticeV679(`Live storefront repaired: ${Number(r.events?.length||0)} events, ${Number(r.collections?.length||0)} collection${Number(r.collections?.length||0)===1?'':'s'}, Reserve a Table ordered by date, corrected event design live. No messages sent.`);\n    });\n  }\n  async function scDesignRefreshV680(){const results=await Promise.allSettled([scRequestV679('design'),scRequestV679('launches')]);if(results[0].status==='fulfilled')scV679.designV680=results[0].value;if(results[1].status==='fulfilled')scV679.launchesV680=results[1].value;scRenderDraftsV67902();}\n  function scPolishConfirmV680(){scModalV679('Polish the existing private event drafts',`<p>This updates the prepared event descriptions and uploads artwork using your unchanged original Orbit logo.</p><p><strong>No new products are created.</strong> Existing table variants, prices, inventory and app fields are not rewritten. Published products are excluded.</p><p>Previous event approvals are cleared so you can review the new presentation.</p>`,scButtonV679('polish-confirm','Update private drafts','',true));}\n  async function scPolishV680(id){let d=scV679.drafts.find(x=>x._id===id),r;for(let pass=0;pass<8;pass++){r=await scRunDraftActionV67902(id,'polish',{revision:d.revision});d=r.draft;if(!r.pending)break;await new Promise(resolve=>setTimeout(resolve,2200));}if(r.pending)scNoticeV679('Shopify is still processing the artwork. Resume its design update shortly; no duplicate product will be created.');return r;}\n  async function scPolishAllV680(button){await scBusyV679(button,async()=>{delete $('scDialogV679').dataset.busy;scCloseV679();const drafts=scV679.drafts.filter(d=>d.kind==='product'&&d.shopifyProductId&&d.status!=='published'&&(d.preparedEventKey||d.plan?.eventPresentation));scV679.batch={running:true,message:'Updating event presentation\u2026',failures:[]};for(let i=0;i<drafts.length;i++){scV679.batch.message=`Updating ${i+1} of ${drafts.length}: ${drafts[i].title}`;scRenderDraftsV67902();try{await scPolishV680(drafts[i]._id);}catch(e){scV679.batch.failures.push({title:drafts[i].title,error:e.message});}}scV679.batch.running=false;scV679.batch.message='Presentation pass finished. Open the artwork and design previews; nothing has been published.';scRenderDraftsV67902();});}\n  async function scArtworkV680(id){const r=await scRequestV679('drafts/'+encodeURIComponent(id)+'/artwork');scModalV679('Event artwork',`<img class=\"sc-artwork-preview\" src=\"${esc(r.dataUrl)}\" alt=\"${esc(r.alt)}\"><p>${esc(r.alt)}</p><p class=\"sc-note\">Original logo composited without redrawing or recolouring. ${r.width} \u00D7 ${r.height} pixels.</p>`);}\n  let scPreviewRunV68202=null;\n  function scPreviewProgressV68202(message,failed=false,title=''){\n    const run=scPreviewRunV68202,el=$('scEventPreviewProgressV68202');if(el){el.textContent=message;el.className=failed?'sc-inline-error':'sc-preview-progress';}\n    if(run?.popup&&!run.popup.closed){try{const doc=run.popup.document;const text=doc.getElementById('orbit-preview-progress');if(text)text.textContent=message;const heading=doc.getElementById('orbit-preview-title');if(heading&&title)heading.textContent=title;if(title)doc.title=title+' \u00B7 Orbit';if(failed)doc.body.dataset.state='attention';}catch(_){}}\n  }\n  function scPreviewPopupV68203(reuse){\n    let popup=reuse&&!reuse.closed?reuse:window.open('about:blank','_blank');\n    if(!popup)return null;\n    try{\n      const doc=popup.document;\n      // about:blank can inherit the opener's presentation. Set BOTH foreground\n      // and background explicitly, including an accessible terminal state.\n      doc.title='Preparing Orbit event preview';doc.documentElement.style.cssText='background:#f4f7fb!important;color:#173451!important;color-scheme:light!important';\n      doc.body.style.cssText='font:17px/1.6 system-ui!important;background:#ffffff!important;color:#173451!important;padding:32px!important;max-width:760px!important;margin:40px auto!important;border-radius:16px!important;box-sizing:border-box!important';\n      doc.body.replaceChildren();\n      const meta=doc.createElement('meta');meta.name='viewport';meta.content='width=device-width, initial-scale=1';doc.head.append(meta);\n      const h=doc.createElement('h1');h.id='orbit-preview-title';h.textContent='Preparing your event page';h.style.cssText='font-size:30px!important;line-height:1.2!important;color:#173451!important;margin:0 0 20px!important';\n      const text=doc.createElement('p');text.id='orbit-preview-progress';text.textContent='Checking the existing draft and its private website design\u2026';text.style.color='#173451';\n      const back=doc.createElement('button');back.type='button';back.id='orbit-preview-return';back.textContent='Return to Orbit Admin';back.style.cssText='background:#096d9b!important;color:#ffffff!important;border:0!important;border-radius:8px!important;padding:14px 18px!important;font:700 16px system-ui!important;margin:18px 12px 0 0!important;cursor:pointer!important';back.onclick=()=>window.focus();\n      const close=doc.createElement('button');close.type='button';close.textContent='Close this tab';close.style.cssText='background:#eef4f8!important;color:#173451!important;border:1px solid #c8d6e1!important;border-radius:8px!important;padding:14px 18px!important;font:700 16px system-ui!important;margin:18px 0 0!important;cursor:pointer!important';close.onclick=()=>popup.close();\n      const note=doc.createElement('p');note.textContent='This preview does not publish an event or send an announcement.';note.style.cssText='font-size:14px!important;color:#40566b!important;margin-top:24px!important';\n      doc.body.append(h,text,back,close,note);\n    }catch(_){return null;}\n    return popup;\n  }\n  function scThemeLinkRequiredV68203(result,id,popup){\n    scV679.previewLinkContextV68203={id,popup};\n    $('scDialogTitleV679').textContent='Connect the private design preview';\n    scPreviewProgressV68202(result.message,false,'One setup step in Orbit Admin');\n    let editor='';try{const u=new URL(result.themeEditorUrl);if(u.protocol==='https:'&&u.hostname==='admin.shopify.com'&&u.pathname.startsWith('/store/4b1z9j-2x/themes/')&&!u.username&&!u.password&&!u.port)editor=scLinkV679(u.href,'Open the prepared theme in Shopify');}catch(_){}\n    $('scEventPreviewReadyV68202').innerHTML=`<div class=\"sc-preview-connect-v68203\"><p><strong>${esc(result.themeName||'Prepared Orbit event theme')}</strong></p>${editor}<p>In Shopify, open this theme\u2019s preview and use <strong>Share preview</strong>. Paste that private link below. You may be asked to sign in to Shopify.</p><p class=\"sc-note\">This connects the same private design for all six events. Do not publish the theme to get a preview link.</p><label for=\"scThemePreviewLinkV68203\">Shopify Share preview link</label><input id=\"scThemePreviewLinkV68203\" type=\"url\" autocomplete=\"off\" spellcheck=\"false\" placeholder=\"https://\u2026shopifypreview.com/\" aria-describedby=\"scThemePreviewLinkHelpV68203\"><p id=\"scThemePreviewLinkHelpV68203\" class=\"sc-note\">Use the link from this prepared theme, not the product\u2019s ordinary preview. Orbit checks the event and design before saving it. Shopify\u2019s shared links expire, so a fresh link may occasionally be needed.</p></div>`;\n    $('scDialogV679').querySelector('.sc-dialog-actions').innerHTML=scButtonV679('close','Done')+scButtonV679('event-preview-connect','Connect & open preview',`data-id=\"${esc(id)}\"`,true);\n  }\n  async function scConnectThemePreviewV68203(id){\n    const value=$('scThemePreviewLinkV68203')?.value.trim();\n    if(!value){const e=$('scDialogErrorV679');e.hidden=false;e.textContent='Paste the private Share preview link from Shopify first.';$('scThemePreviewLinkV68203')?.focus();return;}\n    return scEventPreviewV68202(id,value);\n  }\n  async function scEventPreviewV68202(id,themePreviewUrl=''){\n    if(scPreviewRunV68202){scNoticeV679('A preview is already being prepared. Its progress is shown in the open dialog.');return;}\n    const d=scV679.drafts.find(x=>x._id===id);if(!d)return;\n    const saved=scV679.previewLinkContextV68203;\n    const popup=scPreviewPopupV68203(themePreviewUrl&&saved?.id===id?saved.popup:null);\n    const run={id,popup,cancelled:false};scPreviewRunV68202=run;\n    scModalV679('Preparing your event preview',`<h3>${esc(d.title)}</h3><p id=\"scEventPreviewProgressV68202\" class=\"sc-preview-progress\" role=\"status\" aria-live=\"polite\">Checking the existing draft and its private design\u2026</p><div id=\"scEventPreviewReadyV68202\"></div><p class=\"sc-note\">The same Shopify product and private theme are reused. No product or theme is published, and no SMS is sent.</p>`,scButtonV679('event-preview-cancel','Stop waiting'));\n    const started=Date.now();\n    try{\n      while(!run.cancelled&&$('scDialogV679')?.open){\n        if(Date.now()-started>5*60*1000)throw new Error('Shopify has not finished within five minutes. Your progress is saved. Resume Preview event page later; do not create another event.');\n        let r;\n        try{r=await scRequestV679('drafts/'+encodeURIComponent(id)+'/event-preview','POST',{confirmation:'PREPARE EVENT PREVIEW',...(themePreviewUrl?{themePreviewUrl}:{})});}\n        catch(error){throw error;}\n        if(run.cancelled||!$('scDialogV679')?.open)break;\n        if(r.design){scV679.designV680=r.design;scRenderDraftsV67902();}\n        if(r.draft)scApplyDraftV67902(r.draft);\n        if(r.connectionRequired){scThemeLinkRequiredV68203(r,id,popup);scNoticeV679('Connect the private Shopify theme link in the open dialog. No product or theme has been published.');return;}\n        if(r.url){\n          const safe=scSafeUrlV679(r.url,true);if(!safe)throw new Error('The preview address did not match the Card Show store.');\n          scPreviewProgressV68202('Opening the checked Shopify preview. No publication or announcements have occurred.',false,'Event preview ready');\n          $('scDialogTitleV679').textContent='Your event preview is ready';$('scDialogV679').querySelector('.sc-dialog-actions').innerHTML=scButtonV679('close','Done');\n          $('scEventPreviewReadyV68202').innerHTML=scLinkV679(safe,'Open event preview',true);\n          if(popup&&!popup.closed){popup.opener=null;popup.location.replace(safe);}\n          scV679.previewLinkContextV68203=null;\n          scNoticeV679('Preview opened. Check the single full-width image and booking form before approving publication.');return;\n        }\n        if(!r.pending)throw new Error(r.message||'Shopify has not returned the prepared event preview.');\n        const p=r.progress||r.design?.progress||{};\n        scPreviewProgressV68202((p.message||'Preparing the private design\u2026')+(p.filesChecked?' \u00B7 '+p.filesChecked+' theme files checked':'')+' \u00B7 '+Math.floor((Date.now()-started)/1000)+' seconds');\n        await new Promise(resolve=>setTimeout(resolve,Math.max(1000,Math.min(4000,r.retryAfterMs||1500))));\n      }\n      scPreviewProgressV68202('Stopped waiting. Progress is saved in Orbit Admin. No event has been published.',false,'Preview waiting stopped');\n    }catch(error){\n      // Update the popup BEFORE any further API call so a slow or failed status\n      // refresh cannot strand the other tab on \u201CPreparing\u201D.\n      scPreviewProgressV68202(error.message||String(error),true,'Preview could not open');\n      if($('scDialogTitleV679'))$('scDialogTitleV679').textContent='Preview needs attention';\n      if($('scDialogV679')?.open)$('scDialogV679').querySelector('.sc-dialog-actions').innerHTML=scButtonV679('close','Done')+scButtonV679('event-preview','Try again',`data-id=\"${esc(id)}\"`,true);\n      scNoticeV679(error.message||String(error),true);\n      const status=await api('/api/admin/card-show-shopify/drafts/'+encodeURIComponent(id),{method:'GET',cacheMs:0,timeoutMs:8000}).catch(()=>null);if(status?.draft)scApplyDraftV67902(status.draft);\n    }finally{if(scPreviewRunV68202===run)scPreviewRunV68202=null;}\n  }\n  async function scDesignPrepareV680(){const d=scV679.drafts.find(d=>d.kind==='product'&&d.shopifyProductId&&d.plan?.eventPresentation);if(d)return scEventPreviewV68202(d._id);scNoticeV679('Choose an existing event draft to preview.',true);}\n  async function scDesignPreviewV680(id){return scEventPreviewV68202(id);}\n  function scEventReviewV68202(id){\n    const d=scV679.drafts.find(x=>x._id===id);if(!d)return;scV679.eventPublishingV68202=d;\n    if(!d.eventPreview||d.eventPreview.version!=='V683.0.0'||d.eventPreview.revision!==d.revision){scNoticeV679('Open Preview event page first so you can check the current design.',true);return;}\n    const checks=[['contentConfirmed','The date, venue, artwork and full-width layout are correct.'],['tableOptionsConfirmed','Table sizes, rooms, prices and quantities are correct.'],['vendorFieldsConfirmed','Required vendor questions work correctly.'],['displayCaseConfirmed','Display-case options and the additional charge are correct.'],['orderPropertiesConfirmed','Vendor answers and display-case hire reach the order correctly.'],['venueDetailsConfirmed','The booked venue, event hours and booking terms are confirmed.']];\n    scModalV679('Review & publish this event',`<h3>${esc(d.title)}</h3><p>Check the page before going live. This approval publishes the <strong>reviewed Card Show design</strong> if it is not live yet, then publishes <strong>this event only</strong>. Other event drafts remain private. SMS announcements are never sent here.</p>${scLinkV679(d.eventPreview.url,'Reopen this event preview',true)}<div class=\"sc-checks\">${checks.map(([key,label])=>`<label><input type=\"checkbox\" data-sc-event-review=\"${key}\" ${d.review?.checks?.[key]?'checked':''}><span>${esc(label)}</span></label>`).join('')}</div><label>Notes from your booking checks<textarea id=\"scEventReviewEvidenceV68202\" rows=\"3\">${esc(d.review?.evidence||'')}</textarea></label><label>Type PUBLISH EVENT to confirm<input id=\"scEventPublishPhraseV68202\" autocomplete=\"off\" placeholder=\"PUBLISH EVENT\"></label><p class=\"sc-note\">Publishing a theme and a product are separate Shopify operations. If the second operation fails, Orbit will show the saved outcome rather than claim that everything was rolled back.</p>`,scButtonV679('event-publish-confirm','Publish event','',true));\n  }\n  async function scEventPublishV68202(button){await scBusyV679(button,async()=>{\n    if($('scEventPublishPhraseV68202').value.trim()!=='PUBLISH EVENT')throw new Error('Type PUBLISH EVENT to approve this live change.');\n    const d=scV679.eventPublishingV68202,review={evidence:$('scEventReviewEvidenceV68202').value};for(const c of document.querySelectorAll('[data-sc-event-review]'))review[c.dataset.scEventReview]=c.checked;\n    const r=await scRequestV679('drafts/'+encodeURIComponent(d._id)+'/event-publish','POST',{confirmation:'PUBLISH EVENT',revision:d.revision,review});\n    if(r.draft)scApplyDraftV67902(r.draft);\n    delete $('scDialogV679').dataset.busy;scCloseV679();\n    scNoticeV679('Shopify confirmed this event is live. No SMS announcement has been sent.');\n    await scDraftsV679().catch(()=>{scNoticeV679('Shopify confirmed this event is live. The wider list could not refresh yet; do not publish it again. No SMS announcement has been sent.');});\n  });}\n  async function scLaunchReviewV680(){activateModule('vendors','club-settings');await setVendorSettingsSectionV641('sms',{focus:true});}\n\n  function scRootV679(){return $('orbitCardShowShopifyV678');}\n  function scTargetV679(pane){return scRootV679()?.querySelector(`[data-sc-content=\"${pane}\"]`);}\n  function scMoneyV679(value){return value==null||!Number.isFinite(Number(value))?'Not available':new Intl.NumberFormat('en-GB',{style:'currency',currency:'GBP'}).format(Number(value));}\n  function scDateV679(value){if(!value)return 'Not recorded';const d=new Date(value);return Number.isNaN(d.getTime())?String(value):new Intl.DateTimeFormat('en-GB',{day:'numeric',month:'short',year:'numeric',timeZone:'Europe/London'}).format(d);}\n  function scBadgeV679(value){const k=String(value||'unknown').toLowerCase(),labels={draft:'Draft \u00B7 not live',preview_ready:'Preview ready',preview_pending:'Preview processing',needs_reconciliation:'Needs checking',reconciling:'Checking Shopify',building:'Building preview',publishing:'Publishing',published:'Published',active:'Live',unlisted:'Unlisted \u00B7 no announcement',archived:'Archived',passed:'Passed',failed:'Needs attention',attention:'Check required',ready:'Ready'};return `<span class=\"sc-badge sc-${esc(k)}\">${esc(labels[k]||k.replace(/_/g,' '))}</span>`;}\n  function scSafeUrlV679(value,storeOnly=false){try{const u=new URL(value);if(u.protocol!=='https:'||u.username||u.password)return '';if(storeOnly&&!['orbitcardshow.co.uk','www.orbitcardshow.co.uk','4b1z9j-2x.myshopify.com'].includes(u.hostname)&&!(/^[a-z0-9-]+\\.shopifypreview\\.com$/.test(u.hostname)&&((u.pathname==='/products_preview'&&u.searchParams.has('preview_key'))||/^\\/products\\/[a-zA-Z0-9_%.-]+\\/?$/.test(u.pathname))))return '';if(u.port)return '';return u.href;}catch(_){return '';}}\n  function scLinkV679(url,label,storeOnly=false){const safe=scSafeUrlV679(url,storeOnly);return safe?`<a class=\"sc-link-button\" href=\"${esc(safe)}\" target=\"_blank\" rel=\"noopener noreferrer\">${esc(label)} <span aria-hidden=\"true\">\u2197</span></a>`:'';}\n  function scButtonV679(action,label,attrs='',primary=false){return `<button type=\"button\" class=\"${primary?'sc-primary':'secondary'}\" data-sc-action=\"${action}\" ${attrs}>${label}</button>`;}\n  function scEmptyV679(title,copy=''){return `<div class=\"sc-empty\"><strong>${esc(title)}</strong><p>${esc(copy)}</p></div>`;}\n  function scNoticeV679(message,error=false){const el=$('scNoticeV679');if(!el)return;el.hidden=!message;el.className='sc-notice'+(error?' sc-error':'');el.textContent=String(message||'');}\n  function scErrorV679(pane,error){const el=scRootV679()?.querySelector(`[data-sc-error=\"${pane}\"]`);if(!el)return;el.hidden=!error;el.innerHTML=error?`<strong>This section needs attention</strong><p>${esc(error.message||error)}</p>${scButtonV679('retry','Retry this section',`data-pane=\"${pane}\"`)}`:'';}\n  function scLoadingV679(pane,on){const el=scRootV679()?.querySelector(`[data-sc-loading=\"${pane}\"]`);if(el){el.hidden=!on;el.textContent=on?'Reading Shopify\u2026':'';}scRootV679()?.querySelector(`[data-card-shopify-pane=\"${pane}\"]`)?.setAttribute('aria-busy',String(on));}\n  function setCardShowShopifyPaneV678(pane='overview'){\n    const wanted=Object.hasOwn(scLabelsV679,pane)?pane:'overview';scV679.pane=wanted;rememberOrbitSubtab('card-shopify',wanted);\n    document.querySelectorAll('[data-card-shopify-pane]').forEach(el=>{const active=el.dataset.cardShopifyPane===wanted;el.classList.toggle('active',active);el.hidden=!active;});\n    document.querySelectorAll('[data-workspace-group=\"card-shopify\"] [data-card-shopify-open]').forEach(el=>{const active=el.dataset.cardShopifyOpen===wanted;el.classList.toggle('active',active);el.setAttribute('aria-selected',String(active));el.setAttribute('aria-current',active?'page':'false');});\n    const subtitle=$('scSectionNameV679');if(subtitle)subtitle.textContent=scLabelsV679[wanted];\n  }\n  async function scRequestV679(path,method='GET',body=null){return api('/api/admin/card-show-shopify/'+path,{method,...(body===null?{}:{body:JSON.stringify(body)}),cacheMs:0,timeoutMs:60000});}\n  async function scBusyV679(button,work){if(button?.disabled)return;const label=button?.textContent,dialog=$('scDialogV679'),inDialog=button&&dialog?.contains(button);if(button){button.disabled=true;button.setAttribute('aria-busy','true');button.textContent='Working\u2026';}if(inDialog)dialog.dataset.busy='1';scNoticeV679('');try{return await work();}catch(error){if(inDialog&&dialog.open){const box=$('scDialogErrorV679');box.hidden=false;box.textContent=error.message||String(error);dialog.querySelector('.sc-dialog-body')?.scrollTo({top:0});box.focus({preventScroll:true});}else scNoticeV679(error.message||String(error),true);}finally{if(button){button.disabled=false;button.removeAttribute('aria-busy');button.textContent=label;}if(inDialog)delete dialog.dataset.busy;}}\n  function scTableV679(headers,rows){return `<div class=\"sc-table-wrap\" tabindex=\"0\" role=\"region\" aria-label=\"Scrollable results\"><table class=\"sc-table\"><thead><tr>${headers.map(h=>`<th>${esc(h)}</th>`).join('')}</tr></thead><tbody>${rows.join('')}</tbody></table></div>`;}\n  function scMoreV679(pane,info,count){scV679.cursors[pane]=info?.hasNextPage?info.endCursor:null;return `<div class=\"sc-pagination\"><span>${count} loaded${info?.hasNextPage?' \u00B7 more available':''}</span>${info?.hasNextPage?scButtonV679('more','Load more',`data-pane=\"${pane}\"`):'<span>End of results</span>'}</div>`;}\n  function scMergeV679(previous,rows,more){return more?[...new Map([...previous,...rows].map(r=>[r.id,r])).values()]:rows;}\n  function scWarningsV679(rows=[]){return rows.length?`<div class=\"sc-callout sc-warning\">${rows.map(r=>`<p>${esc(r.resource?r.resource+': ':'')}${esc(r.error||r)}</p>`).join('')}</div>`:'';}\n  async function scOverviewV679(){const data=await scRequestV679('overview');scV679.overview=data;scV679.loaded.overview=Date.now();const c=data.connection||{},counts=data.draftCounts||{},all=Object.values(counts).reduce((n,v)=>n+Number(v),0);const status=$('scStoreStatusV679');if(status){status.textContent=c.identityVerified?'Connected to Orbit Card Show':'Store check required';status.classList.toggle('sc-connected',c.identityVerified===true);}\n    scTargetV679('overview').innerHTML=`<div class=\"sc-metrics\"><article><span>Connected store</span><strong>Orbit Card Show</strong><small>${esc(c.shop?.primaryDomain?.host||'Not verified')}</small></article><article><span>Drafts & changes</span><strong>${all}</strong><small>Saved in Orbit</small></article><article><span>Previews ready</span><strong>${Number(counts.preview_ready||0)}</strong><small>Not yet approved for publication</small></article><article><span>Store identity</span><strong>${c.identityVerified?'Verified':'Check required'}</strong><small>Read-only Shopify connection</small></article></div>\n    <div class=\"sc-grid\"><article class=\"sc-panel sc-feature\"><p class=\"sc-eyebrow\">YOUR NEXT SIX SHOWS</p><h3>Prepare the table booking pages</h3><p>Choose a working event layout and stock location, then build the six private Shopify previews. You control every go-live.</p>${scButtonV679('open-drafts','Open event drafts','',true)}<small>Drafts do not trigger new-show messages.</small></article><article class=\"sc-panel\"><p class=\"sc-eyebrow\">STORE CHECK</p><h3>Check each section safely</h3><p>Check products, stock, collections, pages, files, themes, integrations and the API fields. These checks do not change Shopify.</p>${scButtonV679('audit','Run store checks')}<div id=\"scAuditSummaryV679\" class=\"sc-audit-summary\">No check has been run in this session.</div></article></div>\n    <article class=\"sc-panel\"><h3>Verified store & permissions</h3><dl class=\"sc-facts\"><div><dt>Expected store</dt><dd>4b1z9j-2x.myshopify.com</dd></div><div><dt>Connected store</dt><dd>${esc(c.actualStore||'Not verified')}</dd></div><div><dt>Store currency</dt><dd>${esc(c.shop?.currencyCode||'Not returned')}</dd></div><div><dt>Preview mode</dt><dd>Private Shopify draft \u00B7 no automatic unlisted products</dd></div></dl>${scWarningsV679(data.readErrors)}<details><summary>Store permissions</summary><div class=\"sc-permissions\">${Object.entries(data.features||{}).map(([name,row])=>`<div><strong>${esc(name.replace(/([A-Z])/g,' $1'))}</strong>${scBadgeV679(row.ready?'ready':'attention')}<small>${esc(row.scope)}</small></div>`).join('')}</div><p>Theme-file permission does not by itself confirm Shopify's additional theme-file entitlement.</p></details></article>`;\n    scRenderAuditV679();return data;\n  }\n  function scRenderAuditV679(){for(const id of ['scAuditSummaryV679','scAuditResultsV679']){const el=$(id);if(el&&scV679.audit.length)el.innerHTML=scV679.audit.map(r=>`<div class=\"sc-audit-row\"><strong>${esc(scLabelsV679[r.step]||r.step)}</strong>${scBadgeV679(r.status)}<small>${esc(r.error||((r.warnings||[]).map(w=>w.error).join('; '))||'Read-only check completed')}</small></div>`).join('');}}\n  async function scAuditV679(button){await scBusyV679(button,async()=>{scV679.audit=[];for(const step of ['schema','products','inventory','collections','pages','files','themes','integrations']){const row=await scRequestV679('audit/check','POST',{step});scV679.audit.push(row);scRenderAuditV679();}const failed=scV679.audit.filter(r=>r.status!=='passed').length;scNoticeV679(failed?`${failed} section${failed===1?' needs':'s need'} attention. The results are saved in History.`:'Store read checks completed. Results are saved in History.');});}\n  async function scProductsV679(more=false){const q=$('scProductSearchV679')?.value||'',status=$('scProductStatusV679')?.value||'',after=more?scV679.cursors.products:null;const data=await scRequestV679(`products?limit=25&q=${encodeURIComponent(q)}&status=${encodeURIComponent(status)}${after?'&after='+encodeURIComponent(after):''}`);scV679.products=scMergeV679(scV679.products,data.nodes||[],more);const rows=scV679.products;\n    scTargetV679('products').innerHTML=rows.length?scTableV679(['Product','Status','Options','Available','Actions'],rows.map(p=>`<tr><td><div class=\"sc-product-cell\">${p.featuredMedia?.image?.url?`<img src=\"${esc(scSafeUrlV679(p.featuredMedia.image.url))}\" alt=\"\" loading=\"lazy\">`:'<span class=\"sc-product-icon\" aria-hidden=\"true\">\u25A4</span>'}<div><strong>${esc(p.title)}</strong><small>${esc(p.handle)}</small></div></div></td><td>${scBadgeV679(p.status)}</td><td>${p.variantsCount?.count??'Not returned'}</td><td>${p.totalInventory??'Not returned'}</td><td><div class=\"sc-actions\">${scButtonV679('inspect','Inspect',`data-id=\"${esc(p.id)}\"`)}${scButtonV679('clone','Copy to draft',`data-id=\"${esc(p.id)}\"`)}${scLinkV679(p.onlineStoreUrl,'View live',true)}</div></td></tr>`))+scMoreV679('products',data.pageInfo,rows.length):scEmptyV679('No matching products','Try another name or status.');return data;\n  }\n  async function scInventoryV679(more=false){const q=$('scInventorySearchV679')?.value||'',after=more?scV679.cursors.inventory:null;const data=await scRequestV679(`inventory?limit=15&q=${encodeURIComponent(q)}${after?'&after='+encodeURIComponent(after):''}`);const variants=(data.products||[]).flatMap(p=>(p.variants?.nodes||[]).map(v=>({...v,product:{id:p.id,title:p.title,status:p.status}})));scV679.inventory=scMergeV679(scV679.inventory,variants,more);scV679.locations=data.locations||[];\n    scTargetV679('inventory').innerHTML=scV679.inventory.length?scTableV679(['Product & table option','Location','Available','On hand','Actions'],scV679.inventory.flatMap((v,i)=>{const levels=v.inventoryItem?.inventoryLevels?.nodes||[];return levels.length?levels.map((l,j)=>{const qty=n=>l.quantities?.find(q=>q.name===n)?.quantity;return `<tr><td><strong>${esc(v.product.title)}</strong><small>${esc(v.title)}${v.sku?' \u00B7 '+esc(v.sku):''}</small></td><td>${esc(l.location?.name||'Not returned')}<small>${l.location?.isActive?'Active location':'Inactive location'}</small></td><td><strong>${qty('available')??'Not returned'}</strong></td><td>${qty('on_hand')??'Not returned'}</td><td>${v.inventoryItem?.tracked===true&&l.location?.isActive===true&&Number.isInteger(qty('available'))?scButtonV679('adjust','Adjust stock',`data-index=\"${i}\" data-level=\"${j}\"`):'No adjustment available'}</td></tr>`;}):[`<tr><td><strong>${esc(v.product.title)}</strong><small>${esc(v.title)}</small></td><td colspan=\"4\">${v.inventoryItem?.tracked?'No location returned':'Inventory is not tracked'}</td></tr>`];}))+scMoreV679('inventory',data.pageInfo,scV679.inventory.length):scEmptyV679('No inventory matched','Try searching by product or SKU.');return data;\n  }\n  async function scCollectionsV679(more=false){const after=more?scV679.cursors.collections:null,data=await scRequestV679('collections?limit=15'+(after?'&after='+encodeURIComponent(after):''));scV679.collections=scMergeV679(scV679.collections,data.nodes||[],more);const rows=scV679.collections;scTargetV679('collections').innerHTML=rows.length?scTableV679(['Collection','Products','Publication','View'],rows.map(c=>`<tr><td><strong>${esc(c.title)}</strong><small>${esc(c.handle)}</small></td><td>${c.productsCount?.count??'Not returned'}</td><td>${scBadgeV679(c.publicationStatus)}</td><td>${scLinkV679(c.onlineStoreUrl,'View collection',true)||'Not publicly verified'}</td></tr>`))+scMoreV679('collections',data.pageInfo,rows.length):scEmptyV679('No collections returned');return data;}\n  function scSortDraftsV67902(rows){return rows.sort((a,b)=>a.preparedEventKey&&b.preparedEventKey?String(a.eventDate||'').localeCompare(String(b.eventDate||'')):String(b.updatedAt||'').localeCompare(String(a.updatedAt||'')));}\n  async function scDraftsV679(){\n    const request=++scV679.draftListRequest;\n    const [data,prepared,eventLayouts,menuInfo]=await Promise.all([scRequestV679('drafts?limit=250'+(scV679.draftHistoryV746?'&status=all':'')),scRequestV679('prepared-events'),scRequestV679('event-layout-migrations'),scRequestV679('navigation-viewport').catch(e=>({message:e.message}))]);\n    if(request!==scV679.draftListRequest)return data;\n    // A list request that started before a mutation must not overwrite its result.\n    scV679.savedPreparedKeysV746=data.savedPreparedEventKeys||[];scV679.drafts=scSortDraftsV67902(data.drafts||[]);scV679.prepared=prepared.events||[];scV679.eventLayoutsV684=eventLayouts;scV679.menuInfoV726=menuInfo;scRenderDraftsV67902();await scDesignRefreshV680();\n    for(const d of scV679.drafts)if(['building','reconciling'].includes(d.status)&&!scV679.draftWatchers[d._id])scWatchDraftV67902(d._id,true);\n    return data;\n  }\n  function scApplyDraftV67902(draft){\n    if(!draft?._id)return;\n    scV679.draftListRequest++;\n    const i=scV679.drafts.findIndex(d=>d._id===draft._id),old=scV679.drafts[i];\n    if(old&&Date.parse(old.updatedAt)>Date.parse(draft.updatedAt))return;\n    if(draft.preparedEventKey)scV679.savedPreparedKeysV746=[...new Set([...(scV679.savedPreparedKeysV746||[]),draft.preparedEventKey])];\n    if(!scV679.draftHistoryV746&&['published','archived','cancelled','superseded'].includes(draft.status))scV679.drafts=scV679.drafts.filter(d=>d._id!==draft._id);\n    else if(i<0)scV679.drafts.push(draft);else scV679.drafts[i]=draft;\n    scSortDraftsV67902(scV679.drafts);\n    if(JSON.stringify(old)!==JSON.stringify(draft))scRenderDraftsV67902();\n  }\n  function scRenderDraftsV67902(){\n    const target=scTargetV679('drafts');if(!target)return;\n    const layoutToolsOpen=target.querySelector('.sc-layout-tools-v746')?.open===true;\n    const openDetails=[...target.querySelectorAll('[data-sc-draft]')].flatMap(card=>[...card.querySelectorAll('details')].map((d,i)=>d.open?card.dataset.scDraft+':'+i:null).filter(Boolean));\n    const active=document.activeElement,focus=target.contains(active)?{action:active.dataset?.scAction,id:active.dataset?.id,href:active.getAttribute?.('href')}:null;\n    const preparedIds=new Set([...scV679.drafts.map(d=>d.preparedEventKey),...(scV679.savedPreparedKeysV746||[])]),pending=scV679.prepared.filter(e=>!preparedIds.has(e.key));\n    const completedPublished=scV679.drafts.filter(d=>['published','live','completed_published'].includes(String(d.status||'').toLowerCase()));\n    const activeDrafts=scV679.draftHistoryV746?scV679.drafts:scV679.drafts.filter(d=>!completedPublished.includes(d));\n    const recovery=activeDrafts.filter(d=>d.kind==='product'&&d.shopifyProductId&&['needs_reconciliation','preview_failed'].includes(d.status));\n    const running=scV679.batch?.running;\n    target.innerHTML=`<div class=\"sc-review-heading-v746\"><div><p class=\"sc-eyebrow\">YOUR STORE CHANGES</p><h3>${scV679.draftHistoryV746?'Saved draft history':'Pending approvals'}</h3><p>${scV679.draftHistoryV746?'Published and older records remain available here. Viewing history does not republish anything.':'Only changes awaiting your review appear here. Published pages and older layout tools are kept out of the way.'}</p></div>${scButtonV679('draft-history',scV679.draftHistoryV746?'Back to pending approvals':'View saved history')}</div><details class=\"sc-layout-tools-v746\"><summary>Store layout tools &amp; older previews</summary>${scMenuRepairPanelV685(scV679.menuInfoV726||{})}${scEventLayoutPanelV684()}${scDesignPanelV680()}</details>${pending.length?`<article class=\"sc-panel sc-brief\"><div><p class=\"sc-eyebrow\">YOUR 2027 EVENT BRIEF</p><h3>${pending.length} event${pending.length===1?'':'s'} ready to prepare</h3><p>The descriptions, dates and table choices are prepared. Select the working layout and stock location before creating the private Shopify pages.</p></div>${scButtonV679('prepare','Prepare the six event drafts','',true)}<div class=\"sc-brief-list\">${scV679.prepared.map(e=>`<div><strong>${esc(e.title)}</strong><span>${e.variants.map(v=>esc(v.title)+' \u00B7 '+scMoneyV679(v.price)).join(' / ')}</span></div>`).join('')}</div></article>`:''}\n      ${recovery.length?`<div class=\"sc-batch-bar sc-recovery-bar\"><div><strong>Your Shopify drafts already exist</strong><p>Recheck their preview links and saved details. This does not create another product, change Shopify or send announcements.</p></div>${scButtonV679('recheck-existing','Recheck existing Shopify previews',running?'disabled':'',true)}</div>`:''}\n      ${scV679.drafts.some(d=>d.preparedEventKey&&d.status==='draft')?`<div class=\"sc-batch-bar\"><div><strong>Build your private event previews</strong><p>Creates Shopify DRAFT products one at a time. Nothing is put on sale or announced. Shopify may use its secure preview domain for the real storefront layout.</p></div>${scButtonV679('build-six','Build prepared event previews',running?'disabled':'',true)}</div>`:''}\n      <div id=\"scBatchProgressV679\" class=\"sc-batch-progress\" role=\"status\" aria-live=\"polite\">${scBatchTextV67902()}</div>\n      ${!scV679.draftHistoryV746&&completedPublished.length?`<div class=\"sc-published-note-v726\">${completedPublished.length} previously published items hidden from active drafts. Their saved records remain available for auditing.</div>`:''}<div class=\"sc-draft-grid\">${activeDrafts.filter(d=>scV679.draftHistoryV746||!(d.kind==='theme'&&d.designVersion)).map(scDraftCardV679).join('')}</div>${!activeDrafts.length&&!pending.length?scEmptyV679(scV679.draftHistoryV746?'No saved draft history':'No pending approvals',scV679.draftHistoryV746?'Saved changes will appear here.':'New drafts will appear here when they are ready for your review.'):''}`;\n    if(layoutToolsOpen){const tools=target.querySelector('.sc-layout-tools-v746');if(tools)tools.open=true;}\n    for(const card of target.querySelectorAll('[data-sc-draft]'))[...card.querySelectorAll('details')].forEach((d,i)=>{if(openDetails.includes(card.dataset.scDraft+':'+i))d.open=true;});\n    if(focus)for(const el of target.querySelectorAll('button,a'))if((focus.href&&el.getAttribute('href')===focus.href)||(focus.action&&el.dataset.scAction===focus.action&&el.dataset.id===focus.id)){el.focus({preventScroll:true});break;}\n  }\n  function scBatchTextV67902(){const b=scV679.batch;if(!b)return '';return `<strong>${esc(b.message||'')}</strong>${b.failures?.length?scWarningsV679(b.failures.map(f=>f.title+': '+f.error)):''}`;}\n  function scDifferenceMarkupV67902(d){const rows=d.validationDifferences||[];if(!rows.length)return '';return `<details class=\"sc-readback-differences\" open><summary>What needs checking (${rows.length})</summary><p>Viewing this draft is safe. These differences block publication until resolved and checked again.</p>${scTableV679(['Detail','Saved in Orbit','Returned by Shopify'],rows.map(r=>`<tr><td><strong>${esc(r.label||r.field)}</strong></td><td><pre>${esc(r.expected)}</pre></td><td><pre>${esc(r.actual)}</pre></td></tr>`))}</details>`;}\n  function scDraftCardV679(d){\n    const product=d.kind==='product',op=scV679.draftOperations[d._id],busy=!!op||['building','publishing','reconciling','polishing'].includes(d.status);\n    const built=['preview_ready','preview_pending'].includes(d.status),canBuild=!busy&&['draft','preview_failed'].includes(d.status);\n    const needsCheck=['needs_reconciliation','preview_pending','building','reconciling'].includes(d.status);\n    const canReview=!busy&&product&&d.status==='preview_ready'&&d.verificationVersion==='V679';\n    const canPublish=!busy&&d.status==='preview_ready'&&(product?!(d.publicationBlockers||[]).length:(d.kind==='navigation'||d.verificationVersion==='V679'));\n    const editable=!busy&&product&&(d.canEdit===true||['draft','preview_ready','preview_failed'].includes(d.status));\n    const status=op?(op.action==='build'?'building':'reconciling'):d.status;\n    const progress=op?.message||((busy&&d.progress?.message)?d.progress.message:'');\n    const isEvent=product&&!!d.plan?.eventPresentation;\n    const readyEventPreview=isEvent&&d.eventPreview?.version==='V684.0.0'&&d.eventPreview.revision===d.revision&&d.eventPreview.targetHash===scV679.designV680?.targetHash&&Date.now()-new Date(d.eventPreview.checkedAt).getTime()<24*60*60*1000&&!d.eventPreviewError&&scSafeUrlV679(d.eventPreview.url,true);\n    const preview=readyEventPreview?`<div class=\"sc-preview-access\"><strong>Event preview</strong><p>The current private design. Nothing is live until you approve publication.</p>${scLinkV679(readyEventPreview,'Open event preview',true)}${scButtonV679('event-preview','Refresh preview link',`data-id=\"${esc(d._id)}\"`)}</div>`:isEvent&&d.shopifyProductId?`<div class=\"sc-preview-access\">${d.eventPreviewError?`<p class=\"sc-inline-error\" role=\"alert\">${esc(d.eventPreviewError.message)}</p>`:''}<strong>Full-width event preview</strong><p>Open the existing event with the current private design. Your saved Shopify preview connection is reused automatically.</p>${scButtonV679('event-preview','Preview event page',`data-id=\"${esc(d._id)}\"`,true)}</div>`:product&&d.previewUrl?`<div class=\"sc-preview-access\">${scLinkV679(d.previewUrl,'View Shopify website preview',true)}</div>`:'';\n\n    return `<article class=\"sc-draft-card\" data-sc-draft=\"${esc(d._id)}\" aria-busy=\"${busy}\"><div class=\"sc-card-meta\"><span>${esc(product?'TABLE BOOKING':d.kind)}</span>${scBadgeV679(status)}</div><h3>${esc(d.title)}</h3>\n      ${progress?`<p class=\"sc-progress-note\" role=\"status\">${esc(progress)}</p>`:''}${preview}\n      ${product?`<div class=\"sc-variant-summary\">${(d.plan?.variants||[]).map(v=>`<div><span>${esc(v.title)}<small>Planned stock: ${v.inventoryQuantity??'Not set'}</small></span><strong>${scMoneyV679(v.price)}</strong></div>`).join('')}</div>`:''}\n      ${(d.operatorQuestions||[]).length?`<details><summary>Details to confirm (${d.operatorQuestions.length})</summary><ul>${d.operatorQuestions.map(t=>`<li>${esc(t)}</li>`).join('')}</ul></details>`:''}\n      ${d.lastError?`<p class=\"sc-inline-error\" role=\"alert\">${esc(d.lastError)}</p>`:''}${scDifferenceMarkupV67902(d)}\n      ${product&&d.status==='preview_ready'?`<p class=\"sc-note\">${d.review?'Review saved. Publication still requires your approval.':'Check the real website preview, vendor questions and display-case hire before approval.'}</p>`:''}\n      ${product&&d.artwork?.url?`<img class=\"sc-event-thumb\" src=\"${esc(d.artwork.url)}\" alt=\"${esc(d.artwork.alt||'Event artwork')}\" loading=\"lazy\">`:''}\n      <div class=\"sc-card-actions\">${product&&(d.preparedEventKey||d.plan?.eventPresentation)?scButtonV679('venue','Venue & map',`data-id=\"${esc(d._id)}\" ${busy?'disabled':''}`):''}${product&&(d.preparedEventKey||d.plan?.eventPresentation)?scButtonV679('artwork','View artwork',`data-id=\"${esc(d._id)}\"`):''}${product&&d.shopifyProductId&&d.status!=='published'&&(d.preparedEventKey||d.plan?.eventPresentation)?scButtonV679('polish',d.artwork?.status==='attached'?'Update design & artwork':'Add design & artwork',`data-id=\"${esc(d._id)}\" ${busy?'disabled':''}`):''}${canBuild?scButtonV679('build','Build Shopify preview',`data-id=\"${esc(d._id)}\"`,true):''}${!product&&d.previewUrl?scLinkV679(d.previewUrl,'View Shopify website preview',true):''}${canReview?scButtonV679(isEvent?'event-review':'review',isEvent?'Review & publish':d.review?'Review details':'Review & approve',`data-id=\"${esc(d._id)}\"`):''}${editable?scButtonV679('edit','Edit draft',`data-id=\"${esc(d._id)}\"`):''}\n      ${((needsCheck||built)&&product||d.kind==='theme'&&needsCheck)?scButtonV679('recheck','Recheck Shopify',`data-id=\"${esc(d._id)}\" ${op?'disabled':''}`):''}${d.shopifyAdminUrl?scLinkV679(d.shopifyAdminUrl,'Open in Shopify admin',true):''}${canPublish&&!isEvent?scButtonV679('publish','Publish live',`data-id=\"${esc(d._id)}\"`):''}${!product?scButtonV679('local-preview','Inspect change',`data-id=\"${esc(d._id)}\"`):''}${product&&d.status==='preview_ready'&&d.shopifyProductId&&['thornbury-2027-09-11-reserve-a-table','uttoxeter-2027-09-25-reserve-a-table','cheltenham-2027-11-20-reserve-a-table','cambridge-2027-12-04-reserve-a-table','thornbury-2027-12-11-reserve-a-table'].includes(d.plan?.handle)?scButtonV679('reconcile-live','Link existing live Shopify event',`data-id=\"${esc(d._id)}\" ${busy?'disabled':''}`):''}</div>\n      \n      ${product&&d.shopifyProductId&&!d.previewUrl?'<p class=\"sc-note\">The product exists, but its native website preview link has not been returned or verified yet. Recheck Shopify, or open the product in Shopify admin and use Preview. Do not activate it to see it.</p>':''}\n      <div class=\"sc-card-status-footer\">${d.status==='published'?'Published to Shopify':d.shopifyProductId?'Shopify product created \u00B7 awaiting approval':'Saved in Orbit'} \u00B7 ${esc(scDateV679(d.updatedAt))}</div></article>`;\n  }\n  async function scRefreshDraftV67902(id){const data=await scRequestV679('drafts/'+encodeURIComponent(id));scApplyDraftV67902(data.draft);return data;}\n  function scWatchDraftV67902(id,passive=false){\n    scV679.draftWatchers[id]?.stop();\n    const start=Date.now(),watch={stopped:false,timer:null,stop(){this.stopped=true;clearTimeout(this.timer);if(scV679.draftWatchers[id]===this)delete scV679.draftWatchers[id];}};\n    scV679.draftWatchers[id]=watch;\n    const tick=async()=>{\n      if(watch.stopped||Date.now()-start>120000){watch.stop();return;}\n      try{\n        if(!document.hidden&&scV679.pane==='drafts'){\n          const data=await scRequestV679('drafts/'+encodeURIComponent(id));\n          if(watch.stopped)return;\n          scApplyDraftV67902(data.draft);\n          if(passive&&!['building','reconciling','polishing'].includes(data.draft?.status)){watch.stop();return;}\n        }\n      }catch(error){if(error.status===401||error.status===403||error.code==='ADMIN_SESSION_CHANGED'){watch.stop();return;}}\n      if(!watch.stopped)watch.timer=setTimeout(tick,2000);\n    };\n    watch.timer=setTimeout(tick,1200);return watch;\n  }\n  async function scRunDraftActionV67902(id,action,body={}){\n    if(scV679.draftOperations[id])throw new Error('This draft already has an action in progress.');\n    const previousUpdate=scV679.drafts.find(d=>d._id===id)?.updatedAt;\n    scV679.draftListRequest++;\n    scV679.draftOperations[id]={action,message:action==='polish'?'Updating this existing draft, its copy and brand-safe artwork. No duplicate product is created.':action==='build'?'Building the private Shopify preview. The result will appear here automatically.':'Checking the existing Shopify draft and its preview link. No product is being created.'};\n    scRenderDraftsV67902();const watch=scWatchDraftV67902(id);let result,error;\n    try{result=await scRequestV679(`drafts/${encodeURIComponent(id)}/${action}`,'POST',body);watch.stop();scApplyDraftV67902(result.draft);}\n    catch(e){error=e;watch.stop();if(e.data?.draft)scApplyDraftV67902(e.data.draft);}\n    finally{\n      watch.stop();delete scV679.draftOperations[id];scV679.draftListRequest++;\n      // Error responses may follow a successful provider create. Always read\n      // the saved result; never automatically replay a product mutation.\n      try{await scRefreshDraftV67902(id);}catch(refreshError){if(!error)scNoticeV679('The action returned, but its latest status could not be refreshed. Use Recheck Shopify; do not build it again.',true);}\n      scRenderDraftsV67902();\n      const d=scV679.drafts.find(x=>x._id===id);if(['building','reconciling','polishing'].includes(d?.status))scWatchDraftV67902(id,true);\n    }\n    const recovered=scV679.drafts.find(d=>d._id===id);\n    if(error&&!error.status&&recovered?.status==='preview_ready'&&!recovered.lastError&&recovered.updatedAt!==previousUpdate&&recovered.operationIntent===(action==='build'?'building':'reconciling')){\n      result={success:true,draft:recovered,recoveredFromReadback:true};error=null;\n    }\n    if(error)throw error;return result;\n  }\n  function scMenuRepairPanelV685(info){return `<article class=\"sc-panel\"><p class=\"sc-eyebrow\">LONG EVENT MENU</p><h3>Keep every event within reach</h3><p>Make the desktop Reserve a Table dropdown scroll inside the screen. This is a separately confirmed, backed-up repair of the current live Card Show layout only. It does not publish a different theme or change events, bookings, menus, prices or existing approvals.</p><p>${esc(info?.message||'Nothing changes until you click Apply and confirm.')}</p><div class=\"sc-actions\">${!info?.installed?scButtonV679('menu-scroll-apply','Apply menu scrolling fix','',true):scBadgeV679('verified')}${scButtonV679('menu-scroll-check','Recheck')}${info?.canUndo?scButtonV679('menu-scroll-undo','Undo menu repair'):''}</div><small>${esc(info?.themeName||'Verified Card Show live theme')} ${info?.status?' \u00B7 '+esc(String(info.status).replace(/_/g,' ')):''}</small></article>`;}\n  async function scThemesV679(){const data=await scRequestV679('themes');scV679.themes=data.themes||[];scTargetV679('theme').innerHTML=`<div class=\"sc-callout\">Other theme changes are staged on an unpublished Card Show theme. The Collectors Club theme is a separate store and is never used here.</div><div class=\"sc-live-theme-v726\">${scV679.themes.filter(t=>t.live).map(t=>`<article class=\"sc-panel sc-live-theme-card-v726\"><p class=\"sc-eyebrow\">CURRENT LIVE THEME</p><h3>${esc(t.name)}</h3>${scBadgeV679('active')}<div class=\"sc-actions\">${scLinkV679(t.previewUrl,'View live theme',true)}</div></article>`).join('')||'<article class=\"sc-panel\"><h3>Live theme not verified</h3><p>Check the Shopify store connection before making theme changes.</p></article>'}</div><h3 class=\"sc-preview-label-v726\">Preview and other themes</h3><div class=\"sc-draft-grid\">${scV679.themes.filter(t=>!t.live).map(t=>`<article class=\"sc-panel\"><p class=\"sc-eyebrow\">PREVIEW THEME</p><h3>${esc(t.name)}</h3>${scBadgeV679(t.processing?'preview_pending':t.processingFailed?'failed':t.live?'active':'ready')}<div class=\"sc-actions\">${scLinkV679(t.previewUrl,'View theme',true)}${!t.live&&!t.processing&&!t.processingFailed?scButtonV679('theme-edit','Stage a file change',`data-id=\"${esc(t.id)}\"`):''}</div></article>`).join('')}</div><p class=\"sc-note\">Theme-file writes need Shopify's additional entitlement. A green connection does not prove that entitlement. Orbit checks actual write results and reads the files back before offering publication.</p>`;return data;}\n  async function scPagesV679(more=false){const after=more?scV679.cursors.pages:null,data=await scRequestV679('pages-navigation?limit=25'+(after?'&after='+encodeURIComponent(after):''));scV679.pages=scMergeV679(scV679.pages,data.pages||[],more);scV679.menus=data.menus||[];scTargetV679('pages').innerHTML=scWarningsV679(data.readErrors)+`<article class=\"sc-panel\"><h3>Pages</h3>${scV679.pages.length?scTableV679(['Page','Status','Address'],scV679.pages.map(p=>`<tr><td><strong>${esc(p.title)}</strong></td><td>${scBadgeV679(p.isPublished?'published':'draft')}</td><td>${p.isPublished?scLinkV679('https://orbitcardshow.co.uk/pages/'+encodeURIComponent(p.handle),'View page',true):esc('/pages/'+p.handle)}</td></tr>`))+scMoreV679('pages',data.pageInfo,scV679.pages.length):scEmptyV679('No pages returned')}</article><article class=\"sc-panel\"><h3>Navigation menus</h3><div class=\"sc-menu-list\">${scV679.menus.map(m=>`<div><span><strong>${esc(m.title)}</strong><small>${m.items?.length||0} top-level links${m.isDefault?' \u00B7 default menu':''}</small></span>${scButtonV679('menu-edit','Edit a staged copy',`data-id=\"${esc(m.id)}\"`)}</div>`).join('')||'<p>No menus returned.</p>'}</div></article>`;return data;}\n  async function scFilesV679(more=false){const after=more?scV679.cursors.files:null,data=await scRequestV679('files?limit=25'+(after?'&after='+encodeURIComponent(after):''));scV679.files=scMergeV679(scV679.files,data.nodes||[],more);scTargetV679('files').innerHTML=`<div class=\"sc-actions\">${scButtonV679('photos','Choose original crowd photos')}${scButtonV679('artwork-manager','Refresh existing event artwork')}${scButtonV679('artwork-history','Artwork update history')}</div><div class=\"sc-media-grid\">${scV679.files.map(f=>`<article class=\"sc-panel\">${f.image?.url?`<img src=\"${esc(scSafeUrlV679(f.image.url))}\" loading=\"lazy\" alt=\"${esc(f.alt||'Store image')}\">`:'<div class=\"sc-file-icon\">FILE</div>'}<strong>${esc(f.alt||f.id.split('/').pop())}</strong>${scBadgeV679(f.fileStatus)}${scLinkV679(f.image?.url||f.url,'Open file')}</article>`).join('')}</div>`+scMoreV679('files',data.pageInfo,scV679.files.length);return data;}\n  async function scIntegrationsV679(){const data=await scRequestV679('integrations');scV679.integrations=data;scTargetV679('integrations').innerHTML=`<article class=\"sc-panel sc-feature\"><p class=\"sc-eyebrow\">EASIFY \u00B7 PRESERVED</p><h3>Prove the booking form, not just the connection</h3><p>Easify still handles the vendor questions and display-case add-on. Copying a page template is not proof that Easify has been assigned to the new product.</p><div class=\"sc-question-grid\">${(data.expectedVendorQuestions||[]).map(q=>`<div>${esc(q)}</div>`).join('')}</div><p>Inspect a working event, then check each new website preview. Record the exact display-case charge and how the answers reach the order before approving publication.</p></article>${scWarningsV679(data.readErrors)}<article class=\"sc-panel\"><h3>Existing event references</h3><div class=\"sc-menu-list\">${(data.productSignals||[]).map(p=>`<div><span><strong>${esc(p.title)}</strong><small>Layout: ${esc(p.templateSuffix||'Default')}</small></span>${scButtonV679('integration','Inspect Easify evidence',`data-id=\"${esc(p.id)}\"`)}</div>`).join('')}</div></article><details class=\"sc-panel\"><summary>Shopify field definitions</summary>${scTableV679(['Name','Field','Type'],(data.metafieldDefinitions||[]).map(f=>`<tr><td>${esc(f.name)}</td><td>${esc(f.namespace+'.'+f.key)}</td><td>${esc(f.type?.name)}</td></tr>`))}</details>`;return data;}\n  async function scHistoryV679(){const data=await scRequestV679('history?limit=150');scTargetV679('history').innerHTML=`<article class=\"sc-panel\"><h3>Read-only store checks</h3>${scButtonV679('audit','Run store checks')}<div id=\"scAuditResultsV679\">${scEmptyV679('No checks run in this session','Saved checks appear below.')}</div></article><article class=\"sc-panel\"><h3>Change & check history</h3>${(data.rows||[]).length?scTableV679(['Activity','When','Details'],data.rows.map(r=>`<tr><td><strong>${esc(String(r.action||'').replace(/_/g,' '))}</strong></td><td>${esc(scDateV679(r.at))}</td><td>${r.result?.status?scBadgeV679(r.result.status):''}${esc(r.step||r.title||r.draftId||r.shopifyProductId||r.store||'')}${r.result?.error?`<small>${esc(r.result.error)}</small>`:''}</td></tr>`)):scEmptyV679('No Shopify activity recorded')}</article><article class=\"sc-panel\"><h3>Vendor Club order archive</h3><p>The established order sync and booking history remain separate from store editing.</p>${scButtonV679('sync','Sync order archive')}</article>`;scRenderAuditV679();return data;}\n  async function loadCardShowShopifyPaneV678(pane=scV679.pane,force=false,more=false){setCardShowShopifyPaneV678(pane);const requested=scV679.pane;if(scV679.requests[requested])return scV679.requests[requested];if(!force&&!more&&Date.now()-(scV679.loaded[requested]||0)<15000)return;\n    const loaders={overview:scOverviewV679,products:scProductsV679,inventory:scInventoryV679,collections:scCollectionsV679,drafts:scDraftsV679,theme:scThemesV679,pages:scPagesV679,files:scFilesV679,integrations:scIntegrationsV679,history:scHistoryV679};scLoadingV679(requested,true);scErrorV679(requested,null);\n    const task=(async()=>{try{const result=await loaders[requested](more);scV679.loaded[requested]=Date.now();return result;}catch(error){scErrorV679(requested,error);return {success:false,error:error.message};}finally{scLoadingV679(requested,false);delete scV679.requests[requested];}})();scV679.requests[requested]=task;return task;\n  }\n  function scSanitizeHtmlV679(html){\n    const doc=new DOMParser().parseFromString(String(html||''),'text/html'),allowed=new Set(['P','BR','DIV','SPAN','SECTION','FIGURE','FIGCAPTION','IMG','BUTTON','H2','H3','H4','STRONG','B','EM','I','UL','OL','LI','A','TABLE','THEAD','TBODY','TR','TH','TD','BLOCKQUOTE']);\n    const styleKeys=new Set(['margin','margin-top','padding','padding-top','border','border-left','border-radius','background','background-color','color','font-family','font-size','font-weight','line-height','text-align','display','gap','grid-template-columns','align-items','justify-content','flex-wrap','width','height']);\n    for(const el of [...doc.body.querySelectorAll('*')].reverse()){\n      if(['SCRIPT','STYLE','IFRAME','OBJECT','EMBED','FORM','INPUT','SVG','LINK','META'].includes(el.tagName)){el.remove();continue;}\n      if(!allowed.has(el.tagName)){el.replaceWith(...el.childNodes);continue;}\n      const attrs={};const classes=[...el.classList].filter(c=>/^orbit-(event|map)-[a-z0-9-]+$/.test(c));if(classes.length)attrs.class=classes.join(' ');\n      for(const k of ['data-orbit-city','data-orbit-venue','data-orbit-date','data-map-title'])if(el.hasAttribute(k))attrs[k]=el.getAttribute(k);\n      const map=el.getAttribute('data-map-src');if(map){try{const u=new URL(map);if(u.protocol==='https:'&&u.hostname==='www.google.com'&&u.pathname==='/maps/embed'&&u.searchParams.has('pb'))attrs['data-map-src']=u.href;}catch(_){}}\n      const style=[];for(const k of el.style){const v=el.style.getPropertyValue(k);if(styleKeys.has(k)&&v&&!/url\\s*\\(|expression|javascript|[<>]/i.test(v))style.push(k+':'+v);}if(style.length)attrs.style=style.join(';');\n      if(el.tagName==='A'){const u=el.getAttribute('href');if(u&&(scSafeUrlV679(u)||/^\\/(?!\\/)/.test(u))){attrs.href=u;attrs.rel='noopener noreferrer';attrs.target='_blank';}}\n      if(el.tagName==='IMG'){try{const u=new URL(el.getAttribute('src'));if(u.protocol!=='https:'||u.hostname!=='cdn.shopify.com')throw 0;attrs.src=u.href;attrs.alt=el.getAttribute('alt')||'Previous Orbit event';attrs.loading='lazy';for(const k of ['width','height'])if(/^\\d{1,5}$/.test(el.getAttribute(k)||''))attrs[k]=el.getAttribute(k);}catch(_){el.remove();continue;}}\n      if(el.tagName==='BUTTON'){if(!classes.includes('orbit-map-load')){el.replaceWith(...el.childNodes);continue;}attrs.type='button';}\n      for(const a of [...el.attributes])el.removeAttribute(a.name);for(const [k,v]of Object.entries(attrs))el.setAttribute(k,v);\n    }return doc.body.innerHTML;\n  }\n\n  function scFrameV679(html){return `<iframe class=\"sc-html-preview\" sandbox=\"\" title=\"Product description preview\" srcdoc=\"${esc('<!doctype html><html><head><meta http-equiv=\"Content-Security-Policy\" content=\"default-src \\'none\\'; style-src \\'unsafe-inline\\'; img-src https: data:; form-action \\'none\\'\"><style>body{font:16px/1.6 system-ui;color:#17334a;padding:24px;max-width:780px;margin:auto}h2,h3{line-height:1.25}a{color:#086899}table{border-collapse:collapse;width:100%}th,td{padding:10px;border-bottom:1px solid #dce5eb;text-align:left}</style></head><body>'+String(html||'')+'</body></html>')}\"></iframe>`;}\n  // V679.0.1: Admin's legacy storefront cleanup hides semantic header/footer\n  // elements. Keep dialog chrome component-scoped without changing global rules.\n  function scModalV679(title,body,footer=''){\n    const dialog=$('scDialogV679');scV679.dialogVersion++;\n    dialog.setAttribute('aria-labelledby','scDialogTitleV679');\n    dialog.innerHTML=`<div class=\"sc-dialog-header\"><div><p class=\"sc-eyebrow\">ORBIT CARD SHOW \u00B7 SHOPIFY</p><h2 id=\"scDialogTitleV679\" tabindex=\"-1\">${esc(title)}</h2></div>${scButtonV679('close','Close')}</div><div class=\"sc-dialog-body\"><div id=\"scDialogErrorV679\" class=\"sc-callout sc-error\" hidden role=\"alert\" tabindex=\"-1\"></div>${body}</div><div class=\"sc-dialog-actions\">${footer?scButtonV679('close','Cancel')+footer:scButtonV679('close','Done')}</div>`;\n    if(!dialog.open)dialog.showModal();\n    $('scDialogTitleV679').focus({preventScroll:true});\n    return dialog;\n  }\n  function scCloseV679(){const dialog=$('scDialogV679');if(dialog&&!dialog.dataset.busy)dialog.close();}\n  async function scInspectV679(id){const data=await scRequestV679('product?id='+encodeURIComponent(id)),p=data.product;scV679.inspected=p;scModalV679(p.title,`<div class=\"sc-actions\">${scBadgeV679(p.status)}${scLinkV679(p.onlineStoreUrl,'View live page',true)}${scLinkV679(p.onlineStorePreviewUrl,'View Shopify preview',true)}</div><dl class=\"sc-facts\"><div><dt>Page layout</dt><dd>${esc(p.templateSuffix||'Default')}</dd></div><div><dt>Product type</dt><dd>${esc(p.productType)}</dd></div><div><dt>Table options</dt><dd>${p.variants?.nodes?.length||0}</dd></div><div><dt>Available stock</dt><dd>${p.totalInventory??'Not returned'}</dd></div></dl><h3>Prices & options</h3>${scTableV679(['Option','Price','Available','Stock tracking'],(p.variants?.nodes||[]).map(v=>`<tr><td>${esc(v.title)}</td><td>${scMoneyV679(v.price)}</td><td>${v.inventoryQuantity??'Not returned'}</td><td>${v.inventoryItem?.tracked?'Enabled':'Not enabled'}</td></tr>`))}<h3>Page description</h3>${scFrameV679(p.descriptionHtml)}<div class=\"sc-callout sc-warning\">Easify assignment and the additional display-case charge are not proved by these Shopify fields.</div><details><summary>Tags, fields & publication</summary><pre>${esc(JSON.stringify({tags:p.tags,metafields:p.metafields?.nodes,collections:p.collections?.nodes,publications:p.resourcePublicationsV2?.nodes},null,2))}</pre></details>`,scButtonV679('integration','Inspect Easify evidence',`data-id=\"${esc(id)}\"`)+scButtonV679('clone','Copy to draft',`data-id=\"${esc(id)}\"`,true));}\n  async function scIntegrationV679(id){const e=await scRequestV679('integration-evidence?productId='+encodeURIComponent(id));scModalV679('Easify & booking evidence',`<h3>${esc(e.title)}</h3><div class=\"sc-callout sc-warning\"><strong>New-product assignment is not yet proved</strong><p>No test order or payment was created by this check.</p></div><dl class=\"sc-facts\"><div><dt>Template</dt><dd>${esc(e.templateSuffix)}</dd></div><div><dt>Recent matching saved orders</dt><dd>${Number(e.orderEvidence?.matchingOrders||0)}</dd></div></dl><h3>Fields found on existing orders</h3>${(e.orderEvidence?.propertyKeys||[]).length?`<ul>${e.orderEvidence.propertyKeys.map(k=>`<li>${esc(k)}</li>`).join('')}</ul>`:'<p>No matching order-property evidence was returned. This does not prove the form is absent.</p>'}<h3>Theme signals</h3>${(e.themeSignals||[]).length?e.themeSignals.map(s=>`<p><strong>${esc(s.filename)}</strong><br>${esc(s.signal||s.appBlock)}${s.enabled===false?' \u00B7 disabled':''}</p>`).join(''):'<p>No app signal returned.</p>'}${scWarningsV679(e.warnings)}`);}\n  async function scSetupDataV679(){if(!scV679.overview||Date.now()-(scV679.loaded.overview||0)>60000)await scOverviewV679();if(!scV679.referenceProducts.length){const data=await scRequestV679('products?status=ACTIVE&limit=25');scV679.referenceProducts=data.nodes||[];scV679.referenceHasMore=data.pageInfo?.hasNextPage===true;scV679.referenceCursor=data.pageInfo?.endCursor||null;}}\n  async function scMoreReferencesV679(button){await scBusyV679(button,async()=>{if(!scV679.referenceHasMore||!scV679.referenceCursor)return;const data=await scRequestV679('products?status=ACTIVE&limit=25&after='+encodeURIComponent(scV679.referenceCursor)),select=$('scReferenceV679'),selected=select.value;scV679.referenceProducts=scMergeV679(scV679.referenceProducts,data.nodes||[],true);scV679.referenceHasMore=data.pageInfo?.hasNextPage===true;scV679.referenceCursor=data.pageInfo?.endCursor||null;select.innerHTML='<option value=\"\">Choose a working event</option>'+scV679.referenceProducts.map(p=>`<option value=\"${esc(p.id)}\">${esc(p.title)}</option>`).join('');select.value=selected;button.hidden=!scV679.referenceHasMore;});}\n  function scLocationsOptionsV679(selected){const locations=scV679.overview?.resources?.locations||scV679.locations||[];return '<option value=\"\">Choose a stock location</option>'+locations.filter(l=>l.isActive).map(l=>`<option value=\"${esc(l.id)}\" ${l.id===selected?'selected':''}>${esc(l.name)}${l.address?.city?' \u00B7 '+esc(l.address.city):''}</option>`).join('');}\n  async function scPrepareV679(){await scSetupDataV679();scModalV679('Prepare your six event drafts',`<p>Use an established event to carry over its real page layout and tax settings. Easify assignment is checked separately, not assumed.</p><label>Working event to use as a reference<select id=\"scReferenceV679\"><option value=\"\">Choose a working event</option>${scV679.referenceProducts.map(p=>`<option value=\"${esc(p.id)}\">${esc(p.title)}</option>`).join('')}</select></label>${scV679.referenceHasMore?scButtonV679('reference-more','Load more reference events'):''}<label>Stock location<select id=\"scLocationV679\">${scLocationsOptionsV679()}</select></label><div class=\"sc-callout\">This saves six drafts in Orbit. The next step creates private Shopify previews. No publication, SMS or email is triggered.</div><p class=\"sc-note\">Repeating this action keeps existing prepared drafts rather than overwriting your edits.</p>`,scButtonV679('save-prepared','Prepare drafts','',true));}\n  async function scPrepareSaveV679(button){await scBusyV679(button,async()=>{const locationId=$('scLocationV679').value,referenceProductId=$('scReferenceV679').value;if(!locationId||!referenceProductId)throw new Error('Choose the stock location and an existing event.');await scRequestV679('prepared-events','POST',{locationId,referenceProductId});delete $('scDialogV679').dataset.busy;scCloseV679();await scDraftsV679();scNoticeV679('Six event drafts prepared. Use Build prepared event previews to create their private Shopify pages.');});}\n  async function scBuildV679(id){const d=scV679.drafts.find(x=>x._id===id);let confirmation='';if(d?.kind==='theme'){confirmation=prompt('Type APPLY TO PREVIEW THEME to write the saved files only to the unpublished theme.');if(confirmation!=='APPLY TO PREVIEW THEME')return;}const data=await scRunDraftActionV67902(id,'build',{confirmation});scNoticeV679(data.pending?'Shopify is processing the preview. Use Recheck Shopify shortly.':'Private preview built. Nothing has been made live or announced.');return data;}\n  async function scRecheckV67902(id){const result=await scRunDraftActionV67902(id,'reconcile');scNoticeV679('Shopify read-back completed. Open the website preview on the draft card. No Shopify write was made.');return result;}\n  async function scBatchDraftsV67902(button,action){\n    if(scV679.batch?.running)return;\n    await scBusyV679(button,async()=>{\n      const work=scV679.drafts.filter(d=>!scV679.draftOperations[d._id]&&(action==='build'?d.preparedEventKey&&d.status==='draft':d.kind==='product'&&d.shopifyProductId&&['needs_reconciliation','preview_failed'].includes(d.status)));\n      const batch={running:true,action,total:work.length,completed:0,failures:[],message:''};scV679.batch=batch;\n      try{for(const [i,d] of work.entries()){\n        batch.message=`${action==='build'?'Building':'Checking'} ${i+1} of ${work.length}: ${d.title}`;scRenderDraftsV67902();\n        try{await scRunDraftActionV67902(d._id,action);batch.completed++;}catch(error){batch.failures.push({title:d.title,error:error.message});}\n      }}finally{batch.running=false;const links=scV679.drafts.filter(d=>work.some(w=>w._id===d._id)&&d.previewUrl).length;batch.message=`${batch.completed} ${action==='build'?'built':'checked'}; ${links} website preview link${links===1?'':'s'} available.${batch.failures.length?' '+batch.failures.length+' need attention; see each card.':' Nothing is live or announced.'}`;scRenderDraftsV67902();scNoticeV679(batch.message,batch.failures.length>0);}\n    });\n  }\n  async function scBuildSixV679(button){return scBatchDraftsV67902(button,'build');}\n  function scVariantFieldsV679(v={},index=0){return `<div class=\"sc-edit-variant\" data-sc-variant=\"${index}\"><label>Table choice<input data-v-field=\"title\" value=\"${esc(v.title||'6ft Table')}\" required></label><label>Price (\u00A3)<input data-v-field=\"price\" type=\"number\" min=\"0.01\" step=\"0.01\" value=\"${esc(v.price??'')}\" required></label><label>Inventory quantity<input data-v-field=\"inventoryQuantity\" type=\"number\" min=\"0\" max=\"100000\" step=\"1\" value=\"${esc(v.inventoryQuantity??'')}\" required></label><label>Stock location<select data-v-field=\"locationId\">${scLocationsOptionsV679(v.locationId)}</select></label><label>SKU<input data-v-field=\"sku\" value=\"${esc(v.sku||'')}\"></label><input type=\"hidden\" data-v-field=\"taxable\" value=\"${v.taxable===true?'true':'false'}\"><input type=\"hidden\" data-v-field=\"requiresShipping\" value=\"${v.requiresShipping===true?'true':'false'}\"><input type=\"hidden\" data-v-field=\"compareAtPrice\" value=\"${esc(v.compareAtPrice??'')}\"></div>`;}\n  async function scEditorV679(id=null){await scSetupDataV679();const d=id?scV679.drafts.find(x=>x._id===id):null;if(id&&!d)throw new Error('Reload the draft list first.');scV679.editing=d;const p=d?.plan||{title:'',optionName:'Table type',productType:'Event',vendor:'Orbit Card Show',variants:[{title:'6ft Table',price:'',inventoryQuantity:0,tracked:true}]};const eventPresentation=p.eventPresentation||scV679.prepared.find(e=>e.key===d?.preparedEventKey)?.eventPresentation||{};\n    scModalV679(d?'Edit event draft':'Create a product draft',`<label>Product title<input id=\"scEditTitleV679\" value=\"${esc(p.title)}\" required></label><div class=\"sc-form-grid\"><label>Page address<input id=\"scEditHandleV679\" value=\"${esc(p.handle||'')}\" placeholder=\"Created from the title\" ${d?.shopifyProductId?'readonly':''}></label><label>Page layout<input id=\"scEditTemplateV679\" value=\"${esc(p.templateSuffix||'')}\" placeholder=\"Default\"></label></div><fieldset class=\"sc-artwork-settings\"><legend>Automatic event artwork</legend><p class=\"sc-note\">The location, venue and date are printed with your original logo. No table capacities appear on the image.</p><div class=\"sc-form-grid\"><label>Town or city<input id=\"scEventCityV680\" value=\"${esc(eventPresentation.city||'')}\" placeholder=\"Uttoxeter\"></label><label>Venue<input id=\"scEventVenueV680\" value=\"${esc(eventPresentation.venue||'')}\" placeholder=\"Uttoxeter Racecourse\"></label><label>Event date<input id=\"scEventDateV680\" type=\"date\" value=\"${esc(eventPresentation.date||'')}\"></label></div><label class=\"sc-checkbox-row\"><input id=\"scEventArtworkV680\" type=\"checkbox\" ${eventPresentation.autoArtwork!==false?'checked':''}><span>Automatically create and attach original-logo artwork when building this event</span></label></fieldset><label id=\"scDescriptionLabelV679\">Page description</label><div class=\"sc-rich-toolbar\">${scButtonV679('format-bold','Bold')}${scButtonV679('format-list','Bullet list')}</div><div id=\"scEditDescriptionV679\" class=\"sc-rich-editor\" role=\"textbox\" aria-labelledby=\"scDescriptionLabelV679\" aria-multiline=\"true\" contenteditable=\"true\">${scSanitizeHtmlV679(p.descriptionHtml)}</div><h3>Table choices & stock</h3><p class=\"sc-note\">Stock quantities stay in Shopify inventory. They are not added to the description.</p><div id=\"scVariantRowsV679\">${(p.variants||[]).map(scVariantFieldsV679).join('')}</div>${!d?.shopifyProductId?scButtonV679('add-variant','Add table choice'):''}<details><summary>Images & search details</summary><label>Image URLs (one per line)<textarea id=\"scEditImagesV679\" rows=\"3\" placeholder=\"Verified HTTPS image URLs\">${esc((p.imageUrls||[]).join('\\n'))}</textarea></label><label>Search title<input id=\"scEditSeoTitleV679\" value=\"${esc(p.seo?.title||'')}\"></label><label>Search description<textarea id=\"scEditSeoDescriptionV679\" rows=\"2\">${esc(p.seo?.description||'')}</textarea></label><label>Tags (comma separated)<input id=\"scEditTagsV679\" value=\"${esc((p.tags||[]).join(', '))}\"></label></details><div class=\"sc-callout\">Saving changes cancels any previous approval. Rebuild the preview before reviewing it again. Existing Shopify variant identities are preserved.</div>`,scButtonV679('save-product','Save draft','',true));\n    $('scEditDescriptionV679').addEventListener('paste',event=>{event.preventDefault();const text=event.clipboardData?.getData('text/html')||esc(event.clipboardData?.getData('text/plain')||'').replace(/\\n/g,'<br>');document.execCommand('insertHTML',false,scSanitizeHtmlV679(text));});\n  }\n  async function scSaveProductV679(button){await scBusyV679(button,async()=>{const d=scV679.editing,old=d?.plan||{},variants=[...$('scVariantRowsV679').querySelectorAll('[data-sc-variant]')].map(row=>{const val=k=>row.querySelector(`[data-v-field=\"${k}\"]`).value;return {title:val('title'),price:val('price'),inventoryQuantity:val('inventoryQuantity')===''?null:Number(val('inventoryQuantity')),locationId:val('locationId'),sku:val('sku'),tracked:true,taxable:val('taxable')==='true',requiresShipping:val('requiresShipping')==='true',compareAtPrice:val('compareAtPrice')===''?null:Number(val('compareAtPrice'))};});\n      if(variants.some(v=>!v.locationId||v.inventoryQuantity===null||!(Number(v.price)>0)))throw new Error('Set a positive price, inventory quantity and stock location for every table choice.');\n      const eventFields={city:$('scEventCityV680').value,venue:$('scEventVenueV680').value,date:$('scEventDateV680').value,autoArtwork:$('scEventArtworkV680').checked};if(eventFields.autoArtwork&&(!eventFields.city||!eventFields.venue||!eventFields.date))throw new Error('Enter the event location, venue and date for automatic artwork.');const input={...old,eventPresentation:eventFields.city&&eventFields.venue&&eventFields.date?eventFields:null,title:$('scEditTitleV679').value,handle:$('scEditHandleV679').value||null,templateSuffix:$('scEditTemplateV679').value||null,descriptionHtml:scSanitizeHtmlV679($('scEditDescriptionV679').innerHTML),optionName:old.optionName||'Table type',variants,imageUrls:$('scEditImagesV679').value.split('\\n').map(x=>x.trim()).filter(Boolean),tags:$('scEditTagsV679').value.split(',').map(x=>x.trim()).filter(Boolean),seo:{title:$('scEditSeoTitleV679').value,description:$('scEditSeoDescriptionV679').value},...(d?{revision:d.revision}:{})};\n      await scRequestV679(d?'drafts/'+encodeURIComponent(d._id):'drafts/products',d?'PATCH':'POST',input);delete $('scDialogV679').dataset.busy;scCloseV679();setCardShowShopifyPaneV678('drafts');await scDraftsV679();scNoticeV679('Draft saved. Rebuild the private preview to see these changes in Shopify.');});}\n  function scReviewV679(id){const d=scV679.drafts.find(x=>x._id===id);if(!d)return;scV679.reviewing=d;const checks=[['contentConfirmed','The title, date, description and artwork are correct.'],['tableOptionsConfirmed','The table sizes, rooms, prices and stock quantities are correct.'],['vendorFieldsConfirmed','The correct vendor questions appear and required answers are enforced.'],['displayCaseConfirmed','Display-case choices and the extra charge are correct.'],['orderPropertiesConfirmed','I have verified how the vendor answers and display-case hire reach the order.'],['venueDetailsConfirmed','The exact venue, hours and booking terms are confirmed.']];\n    scModalV679('Review this event before publication',`<h3>${esc(d.title)}</h3>${scLinkV679(d.previewUrl,'Open the real website preview',true)}<p>This records your checks. It does not publish the product or send announcements.</p><div class=\"sc-checks\">${checks.map(([key,label])=>`<label><input type=\"checkbox\" data-sc-review=\"${key}\" ${d.review?.checks?.[key]?'checked':''}><span>${esc(label)}</span></label>`).join('')}</div><label>How did you verify Easify and the order details?<textarea id=\"scReviewEvidenceV679\" rows=\"4\" placeholder=\"Record the preview checks and the authorised test or working order evidence you checked.\">${esc(d.review?.evidence||'')}</textarea></label><p class=\"sc-note\">These are your recorded checks, not an automated successful order test. Do not approve an unresolved booking dependency.</p>`,scButtonV679('save-review','Save completed review','',true));}\n  async function scSaveReviewV679(button){await scBusyV679(button,async()=>{const d=scV679.reviewing,input={revision:d.revision,evidence:$('scReviewEvidenceV679').value};for(const check of $('scDialogV679').querySelectorAll('[data-sc-review]'))input[check.dataset.scReview]=check.checked;await scRequestV679(`drafts/${encodeURIComponent(d._id)}/review`,'POST',input);delete $('scDialogV679').dataset.busy;scCloseV679();await scDraftsV679();scNoticeV679('Review saved. Nothing is live yet; publication is a separate action.');});}\n  function scPublishModalV679(id){const d=scV679.drafts.find(x=>x._id===id);if(!d)return;scV679.publishing=d;const phrase=d.kind==='theme'?'PUBLISH THEME':d.kind==='navigation'?'PUBLISH NAVIGATION':'PUBLISH';scModalV679('Publish to the live Card Show store',`<h3>${esc(d.title)}</h3><div class=\"sc-callout sc-warning\"><strong>This is the go-live step.</strong><p>The change will become customer-facing. Managed events stay silent after publication until you separately approve one combined launch announcement. No product is published by previewing or saving a review.</p></div><label>Type ${phrase} to confirm<input id=\"scPublishPhraseV679\" autocomplete=\"off\" placeholder=\"${phrase}\"></label>`,scButtonV679('confirm-publish','Publish live','data-phrase=\"'+phrase+'\"',true));}\n  async function scPublishV679(button){await scBusyV679(button,async()=>{const phrase=button.dataset.phrase;if($('scPublishPhraseV679').value!==phrase)throw new Error('Enter the exact confirmation phrase.');const d=scV679.publishing;await scRequestV679(`drafts/${encodeURIComponent(d._id)}/publish`,'POST',{confirmation:phrase,revision:d.revision});delete $('scDialogV679').dataset.busy;scCloseV679();await scDraftsV679();scNoticeV679('Shopify confirmed publication of this change.');});}\n  function scAdjustModalV679(i,j){const v=scV679.inventory[i],level=v?.inventoryItem?.inventoryLevels?.nodes[j];if(!level)return;const current=level.quantities.find(q=>q.name==='available')?.quantity;scV679.adjusting={variantId:v.id,inventoryItemId:v.inventoryItem.id,locationId:level.location.id,expectedQuantity:current,requestKey:crypto.randomUUID()};scModalV679('Adjust live stock',`<h3>${esc(v.product.title)}</h3><p>${esc(v.title)} \u00B7 ${esc(level.location.name)}</p><div class=\"sc-callout\">Available now: <strong>${current}</strong>. Shopify will reject the change if this quantity changes before you save.</div><div class=\"sc-form-grid\"><label>Change<select id=\"scAdjustDirectionV679\"><option value=\"1\">Add stock</option><option value=\"-1\">Remove stock</option></select></label><label>Quantity<input type=\"number\" min=\"1\" max=\"10000\" step=\"1\" id=\"scAdjustQuantityV679\" value=\"1\"></label></div><label>Reason<textarea id=\"scAdjustReasonV679\" rows=\"2\" placeholder=\"Why is the stock changing?\"></textarea></label><label>Type ADJUST INVENTORY to confirm<input id=\"scAdjustConfirmV679\" autocomplete=\"off\"></label>`,scButtonV679('save-stock','Apply stock change','',true));}\n  async function scAdjustSaveV679(button){await scBusyV679(button,async()=>{if($('scAdjustConfirmV679').value!=='ADJUST INVENTORY')throw new Error('Type ADJUST INVENTORY to confirm.');const delta=Number($('scAdjustDirectionV679').value)*Number($('scAdjustQuantityV679').value);await scRequestV679('inventory/adjust','POST',{...scV679.adjusting,delta,reason:$('scAdjustReasonV679').value,confirmation:'ADJUST INVENTORY'});delete $('scDialogV679').dataset.busy;scCloseV679();await scInventoryV679();scNoticeV679('Shopify confirmed the stock adjustment.');});}\n  function scSimpleModalV679(kind,id=null){scV679.simpleKind=kind;scV679.simpleId=id;let title='',body='',action='';\n    if(kind==='collection'){title='Create a collection draft';body='<label>Title<input id=\"scSimpleTitleV679\"></label><label>Page address (optional)<input id=\"scSimpleHandleV679\"></label><label>Description<textarea id=\"scSimpleBodyV679\" rows=\"5\"></textarea></label>';action='Save collection draft';}\n    if(kind==='page'){title='Create a page draft';body='<label>Title<input id=\"scSimpleTitleV679\"></label><label>Page address (optional)<input id=\"scSimpleHandleV679\"></label><label>Page content<textarea id=\"scSimpleBodyV679\" rows=\"8\"></textarea></label><p>Plain text is formatted into paragraphs. The page stays unpublished.</p>';action='Save page draft';}\n    if(kind==='file'){title='Import a file into Shopify';body='<label>Public HTTPS image or file URL<input id=\"scFileUrlV679\" type=\"url\" placeholder=\"https://\"></label><div class=\"sc-form-grid\"><label>Type<select id=\"scFileTypeV679\"><option value=\"IMAGE\">Image</option><option value=\"FILE\">File</option></select></label><label>Filename (optional)<input id=\"scFileNameV679\"></label></div><label>Alt text<input id=\"scFileAltV679\"></label><label>Type IMPORT FILE to confirm<input id=\"scFileConfirmV679\" autocomplete=\"off\"></label><p>This stores the file in the Card Show shop. It does not add it to a live page.</p>';action='Import file';}\n    if(kind==='theme'){const t=scV679.themes.find(x=>x.id===id);title='Stage a preview-theme change';body=`<p><strong>${esc(t?.name||'Preview theme')}</strong></p><div class=\"sc-callout\">The existing file is backed up before a staged write. The live theme is never edited directly.</div><label>File path<input id=\"scThemeFileV679\" placeholder=\"sections/example.liquid\"></label><label>New file contents<textarea id=\"scThemeBodyV679\" class=\"sc-code\" rows=\"13\" spellcheck=\"false\"></textarea></label>`;action='Save theme draft';}\n    scModalV679(title,body,scButtonV679('save-simple',action,'',true));}\n  async function scSimpleSaveV679(button){await scBusyV679(button,async()=>{const kind=scV679.simpleKind;let result;if(kind==='file'){if($('scFileConfirmV679').value!=='IMPORT FILE')throw new Error('Type IMPORT FILE to confirm.');result=await scRequestV679('files/import','POST',{originalSource:$('scFileUrlV679').value,contentType:$('scFileTypeV679').value,filename:$('scFileNameV679').value,alt:$('scFileAltV679').value,confirmation:'IMPORT FILE'});}else if(kind==='theme')result=await scRequestV679('drafts/themes','POST',{themeId:scV679.simpleId,files:[{filename:$('scThemeFileV679').value,body:$('scThemeBodyV679').value}]});else{const body=$('scSimpleBodyV679').value.split(/\\n\\s*\\n/).filter(Boolean).map(t=>'<p>'+esc(t).replace(/\\n/g,'<br>')+'</p>').join(''),input={title:$('scSimpleTitleV679').value,handle:$('scSimpleHandleV679').value||null,...(kind==='page'?{body}:{descriptionHtml:body})};result=await scRequestV679(kind==='page'?'drafts/pages':'drafts/collections','POST',input);}\n      delete $('scDialogV679').dataset.busy;scCloseV679();if(kind==='file'){await scFilesV679();scNoticeV679(result.pending?'File received by Shopify and processing. Refresh Files to see when it is ready.':'File received by Shopify.');}else{setCardShowShopifyPaneV678('drafts');await scDraftsV679();scNoticeV679('Draft saved. Nothing has been published.');}});}\n  function scMenuNodeV679(path){const indexes=String(path).split('.').map(Number);let parent=scV679.menuItems;for(let i=0;i<indexes.length-1;i++)parent=parent[indexes[i]].items;return {parent,index:indexes[indexes.length-1]};}\n  function scMenuRowsV679(items,path='',depth=0){return items.map((item,index)=>{const p=path?path+'.'+index:String(index);return `<div class=\"sc-menu-edit\" style=\"margin-left:${depth*16}px\"><label>Link title<input data-sc-menu-title=\"${p}\" value=\"${esc(item.title)}\"></label><label>Link address<input data-sc-menu-url=\"${p}\" value=\"${esc(item.url||'')}\"></label><div class=\"sc-actions\">${depth<2?scButtonV679('menu-child','Add child link',`data-path=\"${p}\"`):''}${scButtonV679('menu-remove','Remove from draft',`data-path=\"${p}\"`)}</div></div>${scMenuRowsV679(item.items||[],p,depth+1)}`;}).join('');}\n  function scMenuRenderV679(){const el=$('scMenuRowsV679');if(el)el.innerHTML=scMenuRowsV679(scV679.menuItems);}\n  function scMenuModalV679(id){const m=scV679.menus.find(x=>x.id===id);if(!m)return;scV679.editingMenu=m;scV679.menuItems=JSON.parse(JSON.stringify(m.items||[]));scModalV679('Edit a staged copy of '+m.title,`<div class=\"sc-callout\">Changes remain local until you approve publication. Orbit checks that the live menu has not changed in the meantime.</div><label>Menu title<input id=\"scMenuTitleV679\" value=\"${esc(m.title)}\"></label><div id=\"scMenuRowsV679\"></div>${scButtonV679('menu-add','Add top-level link')}`,scButtonV679('save-menu','Save navigation draft','',true));scMenuRenderV679();}\n  async function scMenuSaveV679(button){await scBusyV679(button,async()=>{await scRequestV679('drafts/navigation','POST',{menuId:scV679.editingMenu.id,title:$('scMenuTitleV679').value,items:scV679.menuItems});delete $('scDialogV679').dataset.busy;scCloseV679();setCardShowShopifyPaneV678('drafts');await scDraftsV679();scNoticeV679('Navigation draft saved. The live menu is unchanged.');});}\n  function bindCardShowShopifyV678(){const root=scRootV679();if(!root||root.dataset.boundV679)return;root.dataset.boundV679='1';const dialog=$('scDialogV679');dialog.addEventListener('cancel',event=>{if(dialog.dataset.busy)event.preventDefault();});\n    root.addEventListener('keydown',event=>{if(event.key==='Enter'&&event.target.matches('#scProductSearchV679,#scInventorySearchV679')){event.preventDefault();loadCardShowShopifyPaneV678(event.target.id==='scProductSearchV679'?'products':'inventory',true);}});\n    root.addEventListener('change',event=>{if(event.target.id==='scProductStatusV679')loadCardShowShopifyPaneV678('products',true);});\n    root.addEventListener('input',event=>{const field=event.target;if(field.dataset.scMenuTitle!==undefined){const {parent,index}=scMenuNodeV679(field.dataset.scMenuTitle);parent[index].title=field.value;}if(field.dataset.scMenuUrl!==undefined){const {parent,index}=scMenuNodeV679(field.dataset.scMenuUrl);parent[index].url=field.value;parent[index].type='HTTP';delete parent[index].resourceId;delete parent[index].tags;}});\n    root.addEventListener('mousedown',event=>{if(event.target.closest('[data-sc-action^=\"format-\"]'))event.preventDefault();});\n    root.addEventListener('click',event=>{const b=event.target.closest('[data-sc-action]');if(!b||b.disabled)return;const action=b.dataset.scAction,id=b.dataset.id;\n      if(action==='photos'){scBusyV679(b,()=>scPhotoLibraryV681(false));return;}if(action==='photos-more'){scBusyV679(b,()=>scPhotoLibraryV681(true));return;}if(action==='photos-save'){scSavePhotosV681(b);return;}\n      if(action==='venue'){scBusyV679(b,()=>scVenueV681(id));return;}if(action==='venue-save'){scSaveVenueV681(b);return;}\n      if(action==='artwork-manager'){scBusyV679(b,()=>scArtworkManagerV681(false));return;}if(action==='artwork-manager-more'){scBusyV679(b,()=>scArtworkManagerV681(true));return;}if(action==='artwork-review'){scArtworkReviewV681(b);return;}if(action==='artwork-apply'){scArtworkApplyV681(b);return;}if(action==='artwork-history'){scBusyV679(b,scArtworkHistoryV681);return;}if(action==='artwork-resume'){scArtworkResumeV681(id,b);return;}\n      if(['menu-scroll-apply','menu-scroll-check','menu-scroll-undo'].includes(action)){const verb=action.replace('menu-scroll-','');if(verb!=='check'&&!confirm(verb==='apply'?'Apply the backed-up menu scrolling repair to the CURRENT LIVE Orbit Card Show theme? No events or other themes will change.':'Undo only the exact menu repair, preserving the original backed-up layout?'))return;scBusyV679(b,async()=>{const result=await scRequestV679('navigation-viewport/'+verb,'POST',{confirmation:verb==='apply'?'APPLY CARD SHOW MENU SCROLL FIX':'UNDO CARD SHOW MENU SCROLL FIX'});await scThemesV679();scNoticeV679(result.message||'Navigation read-back completed. Check the public dropdown.');});return;}\n      if(action==='event-preview-connect'){scConnectThemePreviewV68203(id);return;}\n      if(action==='event-preview'||action==='design-preview'){scEventPreviewV68202(id);return;}\n      if(action==='event-preview-cancel'){if(scPreviewRunV68202)scPreviewRunV68202.cancelled=true;scCloseV679();return;}\n      if(action==='event-review'){scEventReviewV68202(id);return;}\n      if(action==='event-publish-confirm'){scEventPublishV68202(b);return;}\n      if(action==='layout-previews-prepare'){scPrepareEventLayoutsV684(b);return;}\n      if(action==='layout-approve'){scApproveEventLayoutV684(id,b);return;}\n      if(action==='layout-publish-one'){scPublishEventLayoutV684(id,b);return;}\n      if(action==='layout-publish-approved'){scPublishApprovedLayoutsV684(b);return;}\n      if(action==='layout-recheck'){scRecheckEventLayoutV684(id,b);return;}\n      if(action==='repair-live-launch'){scRepairLiveLaunchV68304(b);return;}\n      if(action==='polish-all'){scPolishConfirmV680();return;}if(action==='polish-confirm'){scPolishAllV680(b);return;}if(action==='polish'){scBusyV679(b,()=>scPolishV680(id));return;}if(action==='artwork'){scBusyV679(b,()=>scArtworkV680(id));return;}if(action==='design-prepare'){scDesignPrepareV680(b);return;}if(action==='design-preview'){scBusyV679(b,()=>scDesignPreviewV680(id));return;}if(action==='launch-review'){scBusyV679(b,scLaunchReviewV680);return;}\n      if(action==='close'){scCloseV679();return;}if(action==='format-bold'||action==='format-list'){document.execCommand(action==='format-bold'?'bold':'insertUnorderedList');return;}\n      if(action==='draft-history'){scV679.draftHistoryV746=!scV679.draftHistoryV746;scDraftsV679().catch(e=>scNoticeV679(e.message||'Drafts could not be loaded.',true));return;}if(action==='open-drafts'){loadCardShowShopifyPaneV678('drafts',true);return;}if(action==='retry'||action==='more'){loadCardShowShopifyPaneV678(b.dataset.pane,true,action==='more');return;}if(action==='refresh'){scBusyV679(b,()=>loadCardShowShopifyPaneV678(scV679.pane,true));return;}if(action==='search-products'){loadCardShowShopifyPaneV678('products',true);return;}if(action==='search-inventory'){loadCardShowShopifyPaneV678('inventory',true);return;}\n      if(action==='audit'){scAuditV679(b);return;}if(action==='prepare'){scBusyV679(b,scPrepareV679);return;}if(action==='reference-more'){scMoreReferencesV679(b);return;}if(action==='save-prepared'){scPrepareSaveV679(b);return;}if(action==='build-six'){scBuildSixV679(b);return;}if(action==='recheck-existing'){scBatchDraftsV67902(b,'reconcile');return;}if(action==='build'){scBusyV679(b,()=>scBuildV679(id));return;}if(action==='edit'||action==='new-product'){scBusyV679(b,()=>scEditorV679(action==='edit'?id:null));return;}if(action==='save-product'){scSaveProductV679(b);return;}\n      if(action==='add-variant'){$('scVariantRowsV679').insertAdjacentHTML('beforeend',scVariantFieldsV679({},$('scVariantRowsV679').children.length));return;}\n      if(action==='inspect'){scBusyV679(b,()=>scInspectV679(id));return;}if(action==='integration'){scBusyV679(b,()=>scIntegrationV679(id));return;}if(action==='review'){scReviewV679(id);return;}if(action==='save-review'){scSaveReviewV679(b);return;}if(action==='publish'){scPublishModalV679(id);return;}if(action==='confirm-publish'){scPublishV679(b);return;}\n      if(action==='adjust'){scAdjustModalV679(Number(b.dataset.index),Number(b.dataset.level));return;}if(action==='save-stock'){scAdjustSaveV679(b);return;}if(action==='new-collection'||action==='new-page'||action==='new-file'){scSimpleModalV679(action.slice(4));return;}if(action==='theme-edit'){scSimpleModalV679('theme',id);return;}if(action==='save-simple'){scSimpleSaveV679(b);return;}\n      if(action==='menu-edit'){scMenuModalV679(id);return;}if(action==='menu-add'){scV679.menuItems.push({title:'New link',type:'HTTP',url:'/',items:[]});scMenuRenderV679();return;}if(action==='menu-child'){const {parent,index}=scMenuNodeV679(b.dataset.path);(parent[index].items||(parent[index].items=[])).push({title:'New link',type:'HTTP',url:'/',items:[]});scMenuRenderV679();return;}if(action==='menu-remove'){const {parent,index}=scMenuNodeV679(b.dataset.path);parent.splice(index,1);scMenuRenderV679();return;}if(action==='save-menu'){scMenuSaveV679(b);return;}\n      if(action==='local-preview'){const d=scV679.drafts.find(x=>x._id===id);if(d)scModalV679(d.title,d.kind==='page'?scFrameV679(d.plan.body):d.kind==='collection'?scFrameV679(d.plan.descriptionHtml):`<pre>${esc(JSON.stringify(d.plan,null,2))}</pre>`);return;}\n      if(action==='clone'){scBusyV679(b,async()=>{await scRequestV679('drafts/products/clone','POST',{productId:id});if(dialog.open){delete dialog.dataset.busy;scCloseV679();}setCardShowShopifyPaneV678('drafts');await scDraftsV679();scNoticeV679('Local draft created. Edit the date, copy and stock location before building it.');});return;}\n      if(action==='reconcile-live'){scBusyV679(b,async()=>{const d=scV679.drafts.find(x=>x._id===id);if(!d||!confirm('Link the already-live Shopify product for '+(d.title||'this event')+' to the Orbit event register? This verifies Shopify Online Store publication and table prices, removes only the obsolete preview-only tag, and does not create products, change prices, alter stock or send emails.'))return;const out=await scRunDraftActionV67902(id,'reconcile-live',{confirmation:'LINK EXISTING LIVE EVENT'});scNoticeV679('Verified live Shopify event linked to Orbit. Existing product, table variants, stock and pricing preserved.');});return;}\n      if(action==='recheck'){scBusyV679(b,()=>scRecheckV67902(id));return;}\n      if(action==='sync'){scBusyV679(b,async()=>{await api('/api/admin/vendors/shopify/sync',{method:'POST',body:JSON.stringify({full:false}),cacheMs:0,timeoutMs:30000});scNoticeV679('The existing Vendor Club order sync was requested.');});}\n    });\n  }\n\n  function bind() {\n    bindCardShowShopifyV678();\n    showPerformanceSiteV544();\n    $(\"performanceSiteV544\")?.addEventListener(\"change\",function(){changePerformanceSiteV544(this.value).catch(err=>setNotice(err.message||err,true));});\n    ensureGoldenTicketManager();\n    ensureMemberMessageModal();\n    document.querySelectorAll(\"[data-prize-area]\").forEach(button => button.addEventListener(\"click\", function(){ setPrizeArea(this.dataset.prizeArea); }));\n    document.addEventListener(\"keydown\", function(event){ if(event.key === \"Escape\" && !$(\"memberMessageModal\")?.hidden) closeMemberMessageModal(); });\n\n    if ($(\"monthKeyInput\")) $(\"monthKeyInput\").value = currentMonthKey();\n\n    $(\"refreshAllButton\")?.addEventListener(\"click\", function () { refreshHomeV542(this).catch(err=>setNotice(err.message,true)); });\n    $(\"performancePeriod\")?.addEventListener(\"change\", function(){ state.performancePeriod=this.value; const reportsPeriod=ensureReportsPeriodV348(); if(reportsPeriod) reportsPeriod.value=this.value; loadPerformanceOverview(null); });\n    const reportsPeriodV348=ensureReportsPeriodV348();\n    if(reportsPeriodV348&&!reportsPeriodV348.dataset.orbitBoundV348){\n      reportsPeriodV348.dataset.orbitBoundV348=\"true\";\n      reportsPeriodV348.addEventListener(\"change\", function(){ state.performancePeriod=this.value; if($(\"performancePeriod\")) $(\"performancePeriod\").value=this.value; const active=document.querySelector(\"[data-report-kind].active\"); if(active) openBusinessReport(active.dataset.reportKind,active); });\n    }\n    $(\"seoFillMissingDefaultsV335\")?.addEventListener(\"click\",async function(){if(!confirm(\"Fill only missing Orbit event-page SEO titles/descriptions? Existing custom SEO will not be overwritten.\"))return;setLoading(this,true);try{const result=await api(\"/api/admin/seo/pages/defaults\",{method:\"POST\",body:\"{}\",cacheMs:0,timeoutMs:120000});await loadSeoPagesV332();setNotice(\"SEO defaults complete: \"+Number(result.changed?.length||0)+\" page(s) updated, \"+Number(result.skipped?.length||0)+\" already complete.\"+(result.failures?.length?\" \"+result.failures.length+\" failed.\":\"\"));}catch(err){setNotice(err.message||err,true);}finally{setLoading(this,false);}});\n    document.querySelectorAll(\"[data-seo-pane-v477]\").forEach(button=>button.addEventListener(\"click\",()=>setSeoPaneV477(button.dataset.seoPaneV477)));\n    $(\"seoRankingsRefreshV477\")?.addEventListener(\"click\",function(){loadSeoRankingsV477(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"seoRankingsPeriodV477\")?.addEventListener(\"change\",()=>loadSeoRankingsV477(null).catch(err=>setNotice(err.message||err,true)));\n    $(\"seoSiteV494\")?.addEventListener(\"change\",()=>loadSeoRankingsV477(null).catch(err=>setNotice(err.message||err,true)));\n    $(\"seoSitemapRefreshV494\")?.addEventListener(\"click\",function(){loadSeoSitemapV494(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"seoSitemapSubmitV494\")?.addEventListener(\"click\",function(){submitSeoSitemapV494(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"seoSitemapSiteV494\")?.addEventListener(\"change\",()=>loadSeoSitemapV494(null).catch(err=>setNotice(err.message||err,true)));\n    $(\"seoOpenSearchConsoleSetupV495\")?.addEventListener(\"click\",function(){activateModule(\"analytics-google\");setTimeout(()=>$(\"searchConsoleSetupV495\")?.scrollIntoView({behavior:\"smooth\",block:\"start\"}),120);});\n    $(\"seoReloadPagesV332\")?.addEventListener(\"click\",()=>Promise.allSettled([loadSeoKeyPagesV336(),loadSeoPagesV332()]).then(()=>setNotice(\"SEO data refreshed.\")));\n    $(\"seoPageSearchV332\")?.addEventListener(\"input\",renderSeoPageListV332);\n    $(\"seoKeyPageListV336\")?.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-seo-key-page-id]\");if(!button)return;const page=seoKeyPagesV336.find(row=>row.id===button.dataset.seoKeyPageId);if(page)openSeoKeyPageV336(page);});\n    $(\"seoPageListV332\")?.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-seo-page-id]\");if(!button)return;const page=seoPagesV332.find(row=>row.id===button.dataset.seoPageId);if(page)openSeoPageV332(page);});\n    $(\"seoTitleInputV332\")?.addEventListener(\"input\",updateSeoPreviewV332);\n    $(\"seoDescriptionInputV332\")?.addEventListener(\"input\",updateSeoPreviewV332);\n    $(\"seoIndexableInputV332\")?.addEventListener(\"change\",updateSeoPreviewV332);\n    $(\"seoSavePageV332\")?.addEventListener(\"click\",function(){saveSeoPageV332(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"seoProductSearchV333\")?.addEventListener(\"input\",renderSeoProductListV333);\n    $(\"seoProductListV333\")?.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-seo-product-id]\");if(!button)return;const product=seoProductsV333.find(row=>row.id===button.dataset.seoProductId);if(product)openSeoProductV333(product);});\n    $(\"seoProductTitleInputV333\")?.addEventListener(\"input\",updateSeoProductPreviewV333);\n    $(\"seoProductDescriptionInputV333\")?.addEventListener(\"input\",updateSeoProductPreviewV333);\n    $(\"seoSaveProductV333\")?.addEventListener(\"click\",function(){saveSeoProductV333(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"seoProductImagesV333\")?.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-seo-file-save]\");if(button)saveSeoFileAltV333(button).catch(err=>setNotice(err.message||err,true));});\n    $(\"seoCollectionSearchV333\")?.addEventListener(\"input\",renderSeoCollectionListV333);\n    $(\"seoCollectionListV333\")?.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-seo-collection-id]\");if(!button)return;const collection=seoCollectionsV333.find(row=>row.id===button.dataset.seoCollectionId);if(collection)openSeoCollectionV333(collection);});\n    $(\"seoCollectionTitleInputV333\")?.addEventListener(\"input\",updateSeoCollectionPreviewV333);\n    $(\"seoCollectionDescriptionInputV333\")?.addEventListener(\"input\",updateSeoCollectionPreviewV333);\n    $(\"seoSaveCollectionV333\")?.addEventListener(\"click\",function(){saveSeoCollectionV333(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceGaSaveButton\")?.addEventListener(\"click\",function(){savePerformanceTrackingV327(\"ga\",this).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceGaConnectV469\")?.addEventListener(\"click\",function(){connectGoogleAnalyticsV470(this).catch(err=>setNotice(err.message||err,true));});\n    document.addEventListener(\"click\",function(event){const button=event.target.closest(\"[data-ga-reconnect-v619]\");if(!button)return;connectGoogleAnalyticsV470(button).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceGaDisconnectV469\")?.addEventListener(\"click\",function(){disconnectGoogleAnalyticsV469(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceSearchConsoleConnectV494\")?.addEventListener(\"click\",function(){connectGoogleSearchConsoleV494(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceSearchConsoleDisconnectV494\")?.addEventListener(\"click\",function(){disconnectGoogleSearchConsoleV494(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceSearchConsoleWriteConnectV625\")?.addEventListener(\"click\",function(){connectGoogleSearchConsoleWriteV625(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceSearchConsoleWriteDisconnectV625\")?.addEventListener(\"click\",function(){disconnectGoogleSearchConsoleWriteV625(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"cardShowIndexSearchConsoleTestV625\")?.addEventListener(\"click\",function(){testCardShowIndexSearchConsoleV625(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"cardShowIndexSearchConsoleSyncV625\")?.addEventListener(\"click\",function(){syncCardShowIndexSearchConsoleV625(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"searchConsoleApplyDefaultsV495\")?.addEventListener(\"click\",function(){applyRecommendedSearchConsolePropertiesV495();});\n    $(\"searchConsoleCheckPropertiesV495\")?.addEventListener(\"click\",function(){loadSearchConsolePropertiesV495(this).catch(err=>setNotice(err.message||err,true));});\n    document.querySelectorAll(\"[data-search-console-copy-v495]\").forEach(button=>button.addEventListener(\"click\",function(){copySearchConsoleValueV495(this.dataset.searchConsoleCopyV495||\"\").catch(err=>setNotice(err.message||err,true));}));\n    $(\"performanceMetaSaveButton\")?.addEventListener(\"click\",function(){savePerformanceTrackingV327(\"meta\",this).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceGaReloadButton\")?.addEventListener(\"click\",function(){loadTrackingSettings().then(()=>setNotice(\"Google Analytics settings reloaded.\")).catch(err=>setNotice(err.message||err,true));});\n    $(\"analyticsRefreshV468\")?.addEventListener(\"click\",function(){Promise.all([loadAnalyticsOverviewV468(this),loadPerformanceRankingsV496(null)]).catch(err=>setNotice(err.message||err,true));});\n    $(\"performanceRankingsRefreshV496\")?.addEventListener(\"click\",function(){loadPerformanceRankingsV496(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"analyticsPeriodV468\")?.addEventListener(\"change\",()=>Promise.all([loadAnalyticsOverviewV468(null),loadPerformanceRankingsV496(null)]).catch(err=>setNotice(err.message||err,true)));\n    $(\"analyticsSiteV494\")?.addEventListener(\"change\",()=>Promise.all([loadAnalyticsOverviewV468(null),loadPerformanceRankingsV496(null)]).catch(err=>setNotice(err.message||err,true)));\n    $(\"analyticsSalesRefreshV471\")?.addEventListener(\"click\",function(){loadAnalyticsCommercialV471(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"analyticsSalesPeriodV471\")?.addEventListener(\"change\",()=>loadAnalyticsCommercialV471(null).catch(err=>setNotice(err.message||err,true)));\n    $(\"performanceMetaReloadButton\")?.addEventListener(\"click\",function(){Promise.all([loadTrackingSettings(),loadMetaIsolationHealthV4482(),loadMetaConversionDiagnosticsV4489(),loadMetaConversionDiagnosticsV4489(null,\"club\")]).then(()=>setNotice(\"Meta Pixel settings and live isolation health reloaded.\")).catch(err=>setNotice(err.message||err,true));});\n    document.querySelectorAll(\"[data-advertising-open]\").forEach(button=>button.addEventListener(\"click\",()=>openAdvertisingViewV451(button.dataset.advertisingOpen)));\n    try{openAdvertisingViewV451(sessionStorage.getItem(\"orbitAdvertisingView\")||\"overview\");}catch(_){openAdvertisingViewV451(\"overview\");}\n    $(\"metaAdsReloadV449\")?.addEventListener(\"click\",function(){loadMetaAdsSettingsV449().then(()=>setNotice(\"Meta Advertising connection reloaded.\")).catch(err=>setNotice(err.message||err,true));});\n    $(\"metaAdsSaveV449\")?.addEventListener(\"click\",function(){saveMetaAdsSettingsV449(false).catch(err=>setNotice(err.message||err,true));});\n    $(\"metaAdsClearTokenV449\")?.addEventListener(\"click\",function(){if(window.confirm(\"Clear the dedicated Meta Marketing API token from Orbit? Pixel/CAPI tokens are unaffected.\"))saveMetaAdsSettingsV449(true).catch(err=>setNotice(err.message||err,true));});\n    $(\"metaAdsLoadPerformanceV449\")?.addEventListener(\"click\",function(){loadMetaAdsDashboardV449(true).then(()=>setNotice(\"Meta performance refreshed and saved for future page loads.\")).catch(err=>{if($(\"metaAdsDiagnosticsV449\"))$(\"metaAdsDiagnosticsV449\").textContent=err.message||String(err);setNotice(err.message||err,true);});});\n    $(\"metaAdsLoadHistoryV450\")?.addEventListener(\"click\",function(){startMetaAdsHistoryImportV450().catch(err=>{if($(\"metaAdsHistoryDiagnosticsV450\"))$(\"metaAdsHistoryDiagnosticsV450\").textContent=err.message||String(err);setNotice(err.message||err,true);});});\n    $(\"metaAdsRefreshLiveCostsV490\")?.addEventListener(\"click\",function(){refreshMetaLiveCostsV490(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"refreshAttribution\")?.addEventListener(\"click\", function(){ loadAttribution(this).catch(err=>setNotice(err.message||err,true)); });\n    $(\"refreshBusinessActivity\")?.addEventListener(\"click\", function(){ loadBusinessActivity(this).catch(err=>setNotice(err.message||err,true)); });\n    document.querySelectorAll(\"[data-activity-filter]\").forEach(button => button.addEventListener(\"click\", function(){ renderBusinessActivity(this.dataset.activityFilter); }));\n    document.addEventListener(\"click\",function(event){\n      const openAttendance=event.target.closest(\"[data-report-open-attendance]\");\n      if(!openAttendance)return;\n      activateModule(\"events\",\"eventbrite\");\n      window.setTimeout(function(){document.querySelector(\"[data-tab='attendance']\")?.click();},80);\n    });\n    document.querySelectorAll(\"[data-report-kind]\").forEach(button => button.addEventListener(\"click\", function(){ openBusinessReport(this.dataset.reportKind, this); }));\n    $(\"orbitAdminQuickRefresh\")?.addEventListener(\"click\", function () { refreshHomeV542(this).catch(err=>setNotice(err.message,true)); });\n    $(\"orbitAdminMenuToggle\")?.addEventListener(\"click\", function () {\n      const app = document.querySelector(\".orbit-admin-app\");\n      const open = app?.classList.toggle(\"menu-open\") || false;\n      this.setAttribute(\"aria-expanded\", String(open));\n    });\n    $(\"orbitAdminSidebarOverlay\")?.addEventListener(\"click\", function () {\n      document.querySelector(\".orbit-admin-app\")?.classList.remove(\"menu-open\");\n      $(\"orbitAdminMenuToggle\")?.setAttribute(\"aria-expanded\", \"false\");\n    });\n    $(\"loadMonthlyContentButton\")?.addEventListener(\"click\", function () { loadMonthlyContent(this); });\n    $(\"saveMonthlyContentButton\")?.addEventListener(\"click\", function () { saveMonthlyContent(this); });\n    $(\"createTestMemberFactoryButton\")?.addEventListener(\"click\", async function () { try { await createTestMemberFactory(this); } catch (err) { setNotice(err.message, true); } });\n    $(\"loadActivityLogButton\")?.addEventListener(\"click\", async function () { try { await loadAdminActivityLog(this); } catch (err) { setNotice(err.message, true); } });\n    $(\"launchResetPreviewButton\")?.addEventListener(\"click\", async function () { try { await loadLaunchResetPreview(this); } catch (err) { setNotice(err.message, true); } });\n    $(\"launchResetButton\")?.addEventListener(\"click\", async function () { try { await runLaunchReset(this); } catch (err) { setNotice(err.message, true); } });\n    [\"monthlyContentCurrentDrawImageUrl\",\"monthlyContentNextMonthImageUrl\",\"monthlyContentGoldenTicketImageUrl\"].forEach(id => $(id)?.addEventListener(\"input\", renderMonthlyContentPreview));\n    $(\"loadSupportInboxButton\")?.addEventListener(\"click\", function () { loadSupportInbox(this); });\n    $(\"supportSearchInput\")?.addEventListener(\"input\", function(){ renderSupportInbox(state.supportInbox || { tickets: state.supportTickets || [] }); });\n    $(\"supportStatusFilter\")?.addEventListener(\"change\", function(){ renderSupportInbox(state.supportInbox || { tickets: state.supportTickets || [] }); });\n    $(\"dashboardPeriodSelect\")?.addEventListener(\"change\", async function(){ try { await loadSummary(this.value); updateCommandCentre(); setNotice(\"Dashboard snapshot updated for \" + dashboardPeriodLabel(this.value) + \".\"); } catch (err) { setNotice(err.message, true); } });\n    $(\"testingEnableTestLabelsButton\")?.addEventListener(\"click\", function(){ toggleTestLabelMode(this, true); });\n    $(\"testingDisableTestLabelsButton\")?.addEventListener(\"click\", function(){ toggleTestLabelMode(this, false); });\n    document.querySelectorAll(\"[data-workspace-nav]\").forEach(button => button.addEventListener(\"click\", () => {\n      activateWorkspace(button.dataset.workspaceNav);\n    }));\n    document.querySelectorAll(\"[data-v77-draw-tab]\").forEach(button => button.addEventListener(\"click\", () => { const pane=button.dataset.v77DrawTab; setDrawPane(pane); rememberOrbitSubtab(\"automation\", pane); }));\n    document.querySelectorAll(\"[data-module-nav]\").forEach(button => button.addEventListener(\"click\", () => {\n      const prizePane = button.dataset.prizeArea === \"golden\" ? \"golden-create\" : (button.dataset.prizeArea === \"monthly\" ? \"current\" : undefined);\n      if(button.dataset.gmailTopViewV737&&state.currentModule==='gmail-hub'){\n        commsSetViewV736(button.dataset.gmailTopViewV737);\n        rememberOrbitSubtab('gmail-hub',button.dataset.gmailTopViewV737);\n        updateAdminRouteLocationV5991(primaryRouteForModuleV5991('gmail-hub',button.dataset.gmailTopViewV737), 'gmail-hub',button.dataset.gmailTopViewV737,'push');\n        return;\n      }\n      activateModule(button.dataset.moduleNav, button.dataset.memberStoreView || button.dataset.engagementOpen || button.dataset.drawOpen || button.dataset.loyaltyOpen || button.dataset.ticketOpen || button.dataset.gmailTopViewV737 || button.dataset.commsOpen || button.dataset.shippingTab || button.dataset.vendorOpen || button.dataset.cardShopifyOpen || button.dataset.tab || button.dataset.intelligenceOpen || prizePane,{historyMode:\"push\"});\n      if(button.dataset.advertisingOpen && button.dataset.moduleNav === \"advertising\") openAdvertisingViewV451(button.dataset.advertisingOpen);\n      if (button.dataset.prizeArea && button.dataset.moduleNav === \"automation\") {\n        setPrizeArea(button.dataset.prizeArea);\n        rememberOrbitSubtab(\"automation\", button.dataset.prizeArea === \"golden\" ? \"golden-create\" : \"current\");\n      }\n      if (button.dataset.engagementOpen && button.dataset.moduleNav === \"engagement\") {\n        window.setTimeout(function(){\n          const tab = document.querySelector(\"[data-engagement-tab='\" + button.dataset.engagementOpen + \"']\");\n          if (tab) tab.click();\n        }, 30);\n      }\n      if (button.dataset.moduleTab && button.dataset.moduleNav === \"shipping\") {\n        window.setTimeout(function(){ const tab = document.querySelector(\"[data-shipping-tab='\" + canonicalOrbitSubtab(\"shipping\",button.dataset.moduleTab) + \"']\"); if (tab) tab.click(); }, 50);\n      }\n      if (button.dataset.settingsAnchor && button.dataset.moduleNav === \"settings\") {\n        window.setTimeout(function(){ document.getElementById(button.dataset.settingsAnchor)?.scrollIntoView({ behavior:\"smooth\", block:\"start\" }); }, 80);\n      }\n      if (button.dataset.moduleNav === \"support\") loadSupportInbox(null, true).catch(err => setNotice(err.message, true));\n      if (button.dataset.moduleNav === \"content\") loadMonthlyContent(null).catch(err => setNotice(err.message, true));\n      if (button.dataset.moduleNav === \"loyalty\") { if(button.dataset.loyaltyOpen) openLoyaltyPane(button.dataset.loyaltyOpen); loadLoyaltyOperationsV727().catch(err => setNotice(err.message, true)); }\n      if (button.dataset.moduleNav === \"website-images\") loadWebsiteImagesV728(button).catch(err => setNotice(err.message, true));\n      if (button.dataset.moduleNav === \"members\") loadMemberSummary().catch(err => setNotice(err.message, true));\n      // V540 activateModule owns the Vendor pane request; do not start a second stale load.\n      if (button.dataset.moduleNav === \"intelligence\" && button.dataset.intelligenceOpen) setOrbitIntelligenceTab(button.dataset.intelligenceOpen);\n      if (button.dataset.moduleNav === \"analytics-overview\") loadAnalyticsOverviewV468(null).catch(err=>setNotice(err.message||err,true));\n      if (button.dataset.moduleNav === \"analytics-sales\") loadAnalyticsCommercialV471(null).catch(err=>setNotice(err.message||err,true));\n      if (button.dataset.moduleNav === \"analytics-google\" || button.dataset.moduleNav === \"analytics-meta\") {\n        loadTrackingSettings().catch(err => setNotice(err.message, true));\n        if(button.dataset.moduleNav === \"analytics-meta\") Promise.all([loadMetaIsolationHealthV4482(),loadMetaConversionDiagnosticsV4489(),loadMetaConversionDiagnosticsV4489(null,\"club\")]).catch(err => setNotice(err.message, true));\n      }\n      if (button.dataset.moduleNav === \"settings\") loadShippingConfig().catch(err => setNotice(err.message, true));\n      if (button.dataset.moduleNav === \"shipping\") reloadSpecialShipments().catch(err => setNotice(err.message, true));\n    }));\n    $(\"commandNextButton\")?.addEventListener(\"click\", function () { activateModule(this.dataset.targetModule || \"dashboard\"); });\n\n    if (orbitCurrentModule && orbitCurrentModule() === 'website-images') loadWebsiteImagesV728().catch(err => setNotice(err.message, true));\n    $(\"refreshFulfilmentButton\")?.addEventListener(\"click\", function () { loadFulfilment(this); });\n    $(\"reconcileSafeStaleParcelsButton\")?.addEventListener(\"click\", async function(){\n      const count=Number(state.fulfilmentCentre?.queueBreakdown?.safeStale||0);\n      if(count<1)return;\n      if(typeof window.confirm===\"function\"&&!window.confirm(\"Retire \"+count+\" parcel row\"+(count===1?\"\":\"s\")+\" proven stale by canonical seat + funded-cycle history? Legitimate older entitlements and separate memberships will be kept.\"))return;\n      setLoading(this,true);\n      try{const result=await api(\"/api/admin/fulfilment/reconcile-safe-stale\",{method:\"POST\",body:JSON.stringify({actor:\"Orbit Admin\"}),timeoutMs:30000});setNotice(\"Reconciled \"+Number(result?.reconciled||0)+\" proven stale parcel row\"+(Number(result?.reconciled||0)===1?\"\":\"s\")+\".\");await loadFulfilment(null,true);}finally{setLoading(this,false);}\n    });\n    ensureRechargeEntitlementAuditV665();\n    $(\"rechargeEntitlementAuditButtonV665\")?.addEventListener(\"click\",function(){loadRechargeEntitlementAuditV665(this,false).catch(err=>setNotice(err.message||String(err),true));});\n    $(\"rechargeEntitlementReconcileButtonV665\")?.addEventListener(\"click\",function(){if(confirm(\"Reconcile Orbit from current Recharge truth? This will not force queued charges; it only updates local status and creates parcel entitlement after confirmed successful full payment.\"))loadRechargeEntitlementAuditV665(this,true).catch(err=>setNotice(err.message||String(err),true));});\n    $(\"parcelIntegrityPreviewButtonV669\")?.addEventListener(\"click\",function(){loadParcelIntegrityV669(this,false).catch(err=>setNotice(err.message||String(err),true));});\n    $(\"parcelIntegrityApplyButtonV669\")?.addEventListener(\"click\",function(){loadParcelIntegrityV669(this,true).catch(err=>setNotice(err.message||String(err),true));});\n    $(\"billingIntegrityCheckButton\")?.addEventListener(\"click\", function(){ checkBillingIntegrityV482(this).catch(err=>setNotice(err.message||String(err),true)); });\n    $(\"billingIncidentPreviewButton\")?.addEventListener(\"click\", function(){ previewBillingIncidentV482(this).catch(err=>setNotice(err.message||String(err),true)); });\n    $(\"postCutoffRetryPreviewV698\")?.addEventListener(\"click\", function(){ previewPostCutoffRetryV698(this).catch(err=>setNotice(err.message||String(err),true)); });\n    $(\"billingIntegrityResult\")?.addEventListener(\"click\", function(event){ const button=event.target.closest(\"[data-billing-repair]\"); if(button) repairBillingIntegrityV482(button.dataset.billingRepair,button).catch(err=>setNotice(err.message||String(err),true)); });\n    $(\"fulfilmentHistorySearch\")?.addEventListener(\"input\", function(){ renderFulfilmentHistory(state.fulfilmentCentre?.historyPacks || [], state.specialShipments?.shipments || []); });\n    $(\"fulfilmentHistoryStatus\")?.addEventListener(\"change\", function(){ renderFulfilmentHistory(state.fulfilmentCentre?.historyPacks || [], state.specialShipments?.shipments || []); });\n    $(\"fulfilmentHistoryMonth\")?.addEventListener(\"change\", function(){ renderFulfilmentHistory(state.fulfilmentCentre?.historyPacks || [], state.specialShipments?.shipments || []); });\n    $(\"refreshDeliveryStatusButton\")?.addEventListener(\"click\", function(){ reconcileDeliveryStatuses(this).catch(err=>setNotice(err.message||String(err),true)); });\n    $(\"previewLabelCostButton\")?.addEventListener(\"click\", function () { previewShippingCost(this).catch(err=>setNotice(err.message||String(err),true)); });\n\n    document.addEventListener(\"change\", function(event){\n      if (!event.target || !event.target.matches || !event.target.matches(\"[data-pack-select]\")) return;\n      state.shippingCostEstimate = null;\n      const generate = $(\"generateMonthlyDispatchButton\");\n      if (generate) generate.disabled = true;\n      syncMonthlyBatchButtons();\n      const target = $(\"shippingCostPreview\");\n      if (target) { target.hidden = true; target.textContent = \"\"; target.classList.remove(\"error\"); }\n    });\n    $(\"selectAllShippingButton\")?.addEventListener(\"click\", function () {\n      const boxes=Array.from(document.querySelectorAll('.orbit-pack-select[data-pack-stage=\"ready\"]'));\n      const all=boxes.length && boxes.every(box=>box.checked);\n      boxes.forEach(box=>box.checked=!all);\n      state.shippingCostEstimate=null;\n      syncMonthlyBatchButtons();\n      setNotice(all ? \"Ready parcel selection cleared.\" : \"All ready parcels selected across every funded cycle.\");\n    });\n    $(\"selectPackedShippingButton\")?.addEventListener(\"click\", function () {\n      const boxes=Array.from(document.querySelectorAll('.orbit-pack-select[data-pack-stage=\"packed\"]'));\n      const all=boxes.length && boxes.every(box=>box.checked);\n      boxes.forEach(box=>box.checked=!all);\n      syncMonthlyBatchButtons();\n      setNotice(all ? \"Packed parcel selection cleared.\" : \"All packed parcels selected across every funded cycle.\");\n    });\n    document.querySelectorAll(\"[data-shipping-tab]\").forEach(button => button.addEventListener(\"click\", function(){setShippingPaneV540(this.dataset.shippingTab);}));\n    $(\"selectAllSpecialShippingButton\")?.addEventListener(\"click\", function(){ const root=document.querySelector('[data-shipping-pane=\"prizes\"]'),boxes=Array.from(root?.querySelectorAll(\"[data-special-shipment-select]:not(:disabled)\")||[]); const all=boxes.length && boxes.every(box=>box.checked); boxes.forEach(box=>box.checked=!all); this.textContent=all?\"Select Ready\":\"Clear Selection\"; });\n    $(\"previewSpecialLabelCostButton\")?.addEventListener(\"click\", function(){ previewSpecialShippingCost(this,\"prizes\").catch(err=>setNotice(err.message,true)); });\n    $(\"generateSpecialLabelsButton\")?.addEventListener(\"click\", function(){ generateSpecialLabels(this,null,\"prizes\").catch(err=>setNotice(err.message,true)); });\n    $(\"markSpecialDispatchedButton\")?.addEventListener(\"click\", function(){ dispatchSpecialShipments(this,null,\"prizes\").catch(err=>setNotice(err.message,true)); });\n    $(\"selectAllShopShippingButton\")?.addEventListener(\"click\", function(){ const root=document.querySelector('[data-shipping-pane=\"shop\"]'),boxes=Array.from(root?.querySelectorAll(\"[data-special-shipment-select]:not(:disabled)\")||[]); const all=boxes.length && boxes.every(box=>box.checked); boxes.forEach(box=>box.checked=!all); this.textContent=all?\"Select Ready\":\"Clear Selection\"; });\n    $(\"previewShopLabelCostButton\")?.addEventListener(\"click\", function(){ previewSpecialShippingCost(this,\"shop\").catch(err=>setNotice(err.message,true)); });\n    $(\"generateShopLabelsButton\")?.addEventListener(\"click\", function(){ generateSpecialLabels(this,null,\"shop\").catch(err=>setNotice(err.message,true)); });\n    $(\"markShopDispatchedButton\")?.addEventListener(\"click\", function(){ dispatchSpecialShipments(this,null,\"shop\").catch(err=>setNotice(err.message,true)); });\n    $(\"generateMonthlyDispatchButton\")?.addEventListener(\"click\", function () { generateMonthlyDispatch(this).catch(err=>setNotice(err.message||String(err),true)); });\n    document.addEventListener(\"click\", function (event) {\n      const btn = event.target && event.target.closest ? event.target.closest(\"#generateMissingMonthlyPacksButton\") : null;\n      if (btn) generateMissingMonthlyPacks(btn);\n    });\n    document.addEventListener(\"click\", function (event) {\n      const ticketDetailsButton = event.target && event.target.closest ? event.target.closest(\"[data-ticket-details]\") : null;\n      if (ticketDetailsButton) { openTicketDetails(ticketDetailsButton.dataset.ticketDetails); return; }\n      const labelButton = event.target && event.target.closest ? event.target.closest(\"[data-special-label]\") : null;\n      if (labelButton) {\n        event.preventDefault();\n        generateSpecialLabels(labelButton, [labelButton.dataset.specialLabel]).catch(err => setNotice(err.message, true));\n        return;\n      }\n      const dispatchButton = event.target && event.target.closest ? event.target.closest(\"[data-special-dispatch]\") : null;\n      if (dispatchButton) {\n        event.preventDefault();\n        dispatchSpecialShipments(dispatchButton, [dispatchButton.dataset.specialDispatch]).catch(err => setNotice(err.message, true));\n      }\n    });\n    $(\"markBatchDispatchedButton\")?.addEventListener(\"click\", function () { markBatchDispatched(this).catch(err=>setNotice(err.message||String(err),true)); });\n    $(\"markBatchDeliveredButton\")?.addEventListener(\"click\", function () { markBatchDelivered(this).catch(err=>setNotice(err.message||String(err),true)); });\n    $(\"hydrateAddressesButton\")?.addEventListener(\"click\", function () { hydrateAddresses(this); });\n    $(\"downloadPackingListButton\")?.addEventListener(\"click\", downloadPackingList);\n    $(\"downloadLabelsButton\")?.addEventListener(\"click\", downloadLabelsPdf);\n    $(\"runMonthStartButton\")?.addEventListener(\"click\", (e) => runMonthStart(e.currentTarget));\n    $(\"runMidMonthDrawButton\")?.addEventListener(\"click\", (e) => runMidMonthDraw(e.currentTarget));\n    $(\"refreshSchedulerButton\")?.addEventListener(\"click\", async () => { await loadScheduler(); setNotice(\"Scheduler refreshed.\"); });\n    $(\"refreshDrawAutomationButton\")?.addEventListener(\"click\", async function(){\n      const button=this, original=button.textContent;\n      button.disabled=true; button.textContent=\"Refreshing\u2026\";\n      try{\n        await loadScheduler();\n        const stamp=new Date().toLocaleTimeString(\"en-GB\",{hour:\"2-digit\",minute:\"2-digit\"});\n        text(\"drawAutomationRefreshState\",\"Last refreshed \"+stamp);\n        setNotice(\"Draw automation refreshed successfully.\");\n      }catch(err){\n        text(\"drawAutomationRefreshState\",\"Refresh failed\");\n        setNotice(\"Draw automation could not be refreshed: \"+(err.message||err),true);\n      }finally{\n        button.disabled=false; button.textContent=original||\"Refresh Automation\";\n      }\n    });\n    $(\"refreshScheduledRunsButton\")?.addEventListener(\"click\", async (event) => { await refreshScheduledRuns(event.currentTarget); });\n    $(\"runDueAutomationButton\")?.addEventListener(\"click\", (e) => runDueAutomations(e.currentTarget));\n    $(\"memberSearchButton\")?.addEventListener(\"click\", (e) => searchMembers(e.currentTarget));\n    $(\"memberSearchResetButton\")?.addEventListener(\"click\", () => {\n      if ($(\"memberSearchInput\")) $(\"memberSearchInput\").value = \"\";\n      if ($(\"memberSearchStatus\")) $(\"memberSearchStatus\").value = \"all\";\n      renderMemberSearchEmpty();\n      setNotice(\"Member search cleared.\");\n    });\n    $(\"memberSearchInput\")?.addEventListener(\"keydown\", (event) => { if (event.key === \"Enter\") searchMembers($(\"memberSearchButton\")); });\n    $(\"rechargeSyncPreviewButton\")?.addEventListener(\"click\", async (e) => { try { await previewRechargeByEmailV473(e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"rechargeSyncEmailInput\")?.addEventListener(\"input\", () => resetRechargeMembershipPreviewV473(\"Email changed. Check Recharge again before reconciling.\"));\n    $(\"rechargeSyncEmailInput\")?.addEventListener(\"keydown\", (event) => { if (event.key === \"Enter\") { event.preventDefault(); $(\"rechargeSyncPreviewButton\")?.click(); } });\n    $(\"rechargeSyncEmailButton\")?.addEventListener(\"click\", async (e) => { try { await syncRechargeByEmail(e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"rechargeSyncCustomerButton\")?.addEventListener(\"click\", async (e) => { try { await syncRechargeByCustomer(e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"closeCommunicationsEditButton\")?.addEventListener(\"click\", function(){ const d=$(\"communicationsEditDialog\"); if(d?.open) d.close(); });\n    $(\"closeCommunicationsPreviewButton\")?.addEventListener(\"click\", function(){ const d=$(\"communicationsPreviewDialog\"); if(d?.open) d.close(); });\n    $(\"communicationsEditDialog\")?.addEventListener(\"cancel\", function(e){ e.preventDefault(); this.close(); });\n    $(\"communicationsPreviewDialog\")?.addEventListener(\"cancel\", function(e){ e.preventDefault(); this.close(); });\n    $(\"drawEligibleSearch\")?.addEventListener(\"input\", renderDrawEligibleMembers);\n    $(\"drawEligibleMembersTable\")?.addEventListener(\"click\", async function(event){\n      const button=event.target.closest(\"[data-draw-exclusion]\"); if(!button)return;\n      const lookup=button.dataset.drawExclusion, excluded=button.dataset.excluded===\"true\";\n      setLoading(button,true);\n      try{\n        const result=await api(\"/api/admin/members/\"+encodeURIComponent(lookup)+\"/draw-exclusion\",{method:\"POST\",body:JSON.stringify({excluded})});\n        if(result?.excluded!==excluded)throw new Error(\"Orbit did not confirm the requested draw eligibility state.\");\n        const row=button.closest(\"tr\");\n        if(row){\n          row.classList.toggle(\"orbit-draw-member-excluded\",excluded);\n          row.classList.toggle(\"orbit-draw-member-eligible\",!excluded);\n        }\n        await loadDrawEligibleMembers();\n        setNotice(excluded?\"Member excluded from monthly draws \u2014 the row is now highlighted and this member cannot be selected.\":\"Member restored to monthly draw eligibility.\");\n      }catch(err){setNotice(err.message||String(err),true);}\n      finally{setLoading(button,false);}\n    });\n    $(\"exportTicketPurchasersButton\")?.addEventListener(\"click\",e=>exportTicketPurchasersV48304(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n    $(\"ticketAdminSearch\")?.addEventListener(\"input\",()=>{clearTimeout(ticketAdminSearchTimerV457);ticketAdminSearchTimerV457=setTimeout(()=>loadTicketOrderPageV457(1).catch(err=>setNotice(err.message||err,true)),300);});\n    [$(\"ticketAdminEventFilter\"),$(\"ticketAdminStatusFilter\"),$(\"ticketAdminPeriod\")].forEach(el=>el?.addEventListener(\"change\",()=>loadTicketOrderPageV457(1).catch(err=>setNotice(err.message||err,true))));\n\n    $(\"closeTicketDetailsButton\")?.addEventListener(\"click\", function(){ $(\"ticketDetailsDialog\")?.close(); });\n    $(\"closeAddressRecoveryButton\")?.addEventListener(\"click\", function(){ $(\"addressRecoveryDialog\")?.close(); });\n    $(\"addressSyncRechargeButton\")?.addEventListener(\"click\", function(){ syncAddressSource(\"recharge\", this).catch(err=>setAddressRecoveryStatus(err.message,true)); });\n    $(\"addressSyncShopifyButton\")?.addEventListener(\"click\", function(){ syncAddressSource(\"shopify\", this).catch(err=>setAddressRecoveryStatus(err.message,true)); });\n    $(\"addressSyncAllButton\")?.addEventListener(\"click\", function(){ syncAddressSource(\"all\", this).catch(err=>setAddressRecoveryStatus(err.message,true)); });\n    $(\"addressRecoveryForm\")?.addEventListener(\"submit\", function(event){ event.preventDefault(); saveManualAddress($(\"saveAddressRecoveryButton\")).catch(err=>setAddressRecoveryStatus(err.message,true)); });\n\n    $(\"closeTicketActionButton\")?.addEventListener(\"click\", closeTicketActionDialog);\n    $(\"ticketActionDialog\")?.addEventListener(\"cancel\", function(event){event.preventDefault();closeTicketActionDialog();});\n    document.querySelectorAll(\"[data-v77-events-tab]\").forEach(function(button){\n      button.addEventListener(\"click\", async function(){\n        if(this.dataset.orbitSwitching === \"1\") return;\n        const tab=this.dataset.v77EventsTab;\n        const panel=tab===\"attendance\" ? \"attendance\" : \"eventbrite\";\n        this.dataset.orbitSwitching=\"1\";\n        try {\n          rememberOrbitSubtab(\"events\", panel);\n          activateModule(\"events\", panel);\n          if(panel===\"attendance\") await loadAttendance();\n          else await loadEventbrite();\n        } finally {\n          delete this.dataset.orbitSwitching;\n        }\n      });\n    });\n    $(\"attendanceEventSelect\")?.addEventListener(\"change\", async function(){const syncButton=$(\"attendanceSyncButton\");if(syncButton){syncButton.disabled=!this.value;syncButton.title=this.value?\"Sync the selected event's door data\":\"Choose an event first\";}if(this.value)await loadAttendanceDetail(this.value);});\n    async function prepareAttendanceEvent(button,eventIdOverride){\n      const id=eventIdOverride||$(\"attendanceEventSelect\")?.value;\n      if(!id)throw new Error(\"Choose an event first.\");\n      const resultPanel=$(\"attendancePrepareResult\");\n      if(button){\n        if(!button.dataset.originalHtml)button.dataset.originalHtml=button.innerHTML;\n        button.disabled=true;button.setAttribute(\"aria-busy\",\"true\");button.classList.add(\"orbit-door-sync-working\");\n        button.innerHTML=\"<span class='orbit-mini-spinner' aria-hidden='true'></span><span>SYNCING DOOR DATA\u2026</span>\";\n      }\n      if(resultPanel){\n        resultPanel.hidden=false;\n        resultPanel.classList.add(\"orbit-door-sync-status\");\n        resultPanel.textContent=\"SYNCING DOOR DATA \u00B7 Please keep this page open\";\n      }\n      await new Promise(function(resolve){ requestAnimationFrame(function(){ requestAnimationFrame(resolve); }); });\n      try{\n        // V489: start the expensive Eventbrite preparation as a durable server\n        // job, then poll lightweight local status. Closing/reloading Admin does\n        // not cancel the provider sync and the 45-second mutation timeout cannot\n        // make the outcome ambiguous.\n        const started=await api(\"/api/admin/attendance/events/\"+encodeURIComponent(id)+\"/prepare-jobs\",{method:\"POST\",body:\"{}\",timeoutMs:15000,cacheMs:0});\n        const jobId=started?.job?.id;if(!jobId)throw new Error(\"Orbit did not return an Attendance preparation job.\");\n        let job=started.job,waited=0;\n        while([\"queued\",\"running\"].includes(job?.status)&&waited<5*60*1000){\n          if(resultPanel)resultPanel.textContent=\"SYNCING DOOR DATA \u00B7 Background job running \u00B7 \"+Math.round(waited/1000)+\"s\";\n          await new Promise(resolve=>setTimeout(resolve,1500));waited+=1500;\n          const status=await api(\"/api/admin/attendance/prepare-jobs/\"+encodeURIComponent(jobId),{timeoutMs:15000,cacheMs:0});\n          job=status.job;\n        }\n        if(job?.status===\"failed\")throw new Error(job.error||\"Attendance preparation failed.\");\n        if(job?.status!==\"completed\")throw new Error(\"Attendance preparation is still running. You can leave this screen and return; the server job will continue.\");\n        const r=job.result||{};\n        await Promise.all([loadAttendance(),loadEventbrite()]);\n        await loadAttendanceDetail(id);\n        const n=$(\"attendancePrepareResult\");\n        if(n){n.hidden=false;n.classList.remove(\"orbit-door-sync-status\");n.textContent=r.ready?\"EVENT READY \u00B7 \"+r.totalSynced+\" QR codes synced\":\"SYNC REQUIRED \u00B7 \"+r.notSynced+\" tickets missing\";}\n        setNotice(r.ready?\"Event prepared and scanner verified.\":\"Event sync completed but reconciliation is still required.\",!r.ready);\n      } catch(error) {\n        const n=$(\"attendancePrepareResult\");\n        if(n){n.hidden=false;n.classList.remove(\"orbit-door-sync-status\");n.textContent=\"DOOR DATA SYNC FAILED \u00B7 \"+(error.message||String(error));}\n        throw error;\n      } finally {\n        if(button){button.classList.remove(\"orbit-door-sync-working\");button.disabled=!$(\"attendanceEventSelect\")?.value;button.setAttribute(\"aria-busy\",\"false\");button.innerHTML=button.dataset.originalHtml||\"Sync All Door Data\";}\n      }\n    }\n    $(\"prepareEventButton\")?.addEventListener(\"click\", function(){prepareAttendanceEvent(this).catch(err=>setNotice(err.message||String(err),true));});\n    $(\"attendanceSyncButton\")?.addEventListener(\"click\", function(){prepareAttendanceEvent(this).catch(err=>setNotice(err.message||String(err),true));});\n    $(\"closeTicketResendButton\")?.addEventListener(\"click\", function(){ $(\"ticketResendDialog\")?.close(); });\n    $(\"confirmTicketResendButton\")?.addEventListener(\"click\", function(){ confirmTicketResend(this).catch(err=>setNotice(err.message,true)); });\n    $(\"ticketDetailsDialog\")?.addEventListener(\"cancel\", function(event){ event.preventDefault(); this.close(); });\n    $(\"ticketResendDialog\")?.addEventListener(\"cancel\", function(event){ event.preventDefault(); this.close(); });\n    $(\"shippingQuoteWeightSelect\")?.addEventListener(\"change\", function(){ const btn=$(\"loadShippingRatesButton\"); if(btn) loadShippingServiceRates(btn); });\n\n    $(\"testMemberLookupButton\")?.addEventListener(\"click\", async (e) => { try { await lookupTestMember(e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"testMemberSearchInput\")?.addEventListener(\"keydown\", async (event) => { if (event.key === \"Enter\") { try { await lookupTestMember($(\"testMemberLookupButton\")); } catch (err) { setNotice(err.message, true); } } });\n    $(\"testMemberMakeActiveButton\")?.addEventListener(\"click\", async (e) => { try { await setTestMemberStatus(\"active\", e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"testMemberMakePendingButton\")?.addEventListener(\"click\", async (e) => { try { await setTestMemberStatus(\"pending\", e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"testMemberResetClaimsButton\")?.addEventListener(\"click\", async (e) => { try { await resetTestMemberTools(\"claims\", e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"testMemberResetAttendanceButton\")?.addEventListener(\"click\", async (e) => { try { await resetTestMemberTools(\"attendance\", e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"connectEventbriteButton\")?.addEventListener(\"click\", async (e) => { try { await connectEventbrite(e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"syncEventbriteButton\")?.addEventListener(\"click\", async (e) => { try { await syncEventbrite(e.currentTarget); } catch (err) { setNotice(err.message, true); } });\n    $(\"ensureStaticEventPagesButton\")?.addEventListener(\"click\", async function(){\n      const button=this;\n      const resultBox=$(\"staticEventPagesResult\");\n      const knownStatic=state.eventbrite?.staticPages||null;\n      const tokens=Array.isArray(knownStatic?.tokens)?knownStatic.tokens:[];\n      const hasPageAuthority=tokens.some(token=>token.pageRead===true&&token.pageWrite===true);\n\n      // V316: authorization must be launched synchronously from the operator's\n      // click. Opening it after an awaited API failure is commonly blocked by\n      // browser popup protection.\n      if((knownStatic?.reconnectRequired===true)||(tokens.length>0&&!hasPageAuthority)){\n        if(resultBox){\n          resultBox.hidden=false;\n          resultBox.className=\"orbit-action-result orbit-static-pages-result orbit-static-pages-result-v379 is-warning\";\n          resultBox.textContent=\"Shopify authorization required. Approve the Page/content permission in the window that just opened. Orbit will create the static URLs automatically after approval.\";\n        }\n        setNotice(\"Shopify Page permission is required. Approve the Shopify authorization window, then return here and press Refresh.\",true);\n        const authWindow=window.open(API_BASE+\"/shopify/install\",\"orbitShopifyReconnect\",\"popup=yes,width=820,height=900,scrollbars=yes,resizable=yes\");\n        if(!authWindow)window.location.href=API_BASE+\"/shopify/install\";\n        return;\n      }\n\n      setLoading(button,true);\n      if(resultBox){\n        resultBox.hidden=false;\n        resultBox.className=\"orbit-action-result orbit-static-pages-result orbit-static-pages-result-v379\";\n        resultBox.textContent=\"Creating and verifying real Shopify event pages\u2026\";\n      }\n      try{\n        const result=await api(\"/api/admin/eventbrite/static-pages/ensure\",{method:\"POST\",body:\"{}\",timeoutMs:120000,cacheMs:0});\n        if(resultBox){\n          resultBox.className=\"orbit-action-result orbit-static-pages-result orbit-static-pages-result-v379 is-success\";\n          resultBox.textContent=result.ready+\"/\"+result.total+\" static ticket URLs ready in Shopify.\";\n        }\n        setNotice(result.ready+\" verified static ticket URL\"+(result.ready===1?\"\":\"s\")+\" ready in Shopify.\");\n        await loadEventbrite();\n      }catch(err){\n        const payload=err.data||{};\n        const diagnostic=staticPageDiagnosticText(payload);\n        const scopeProblem=JSON.stringify(payload).match(/scope|permission|access denied|authori[sz]/i);\n        if(resultBox){\n          resultBox.className=\"orbit-action-result orbit-static-pages-result orbit-static-pages-result-v379 is-error\";\n          resultBox.textContent=scopeProblem\n            ?\"Shopify Page permission is still missing. Press Ensure Static Ticket URLs again to open authorization.\"\n            :(diagnostic||err.message||String(err));\n        }\n        if(scopeProblem){\n          setNotice(\"Shopify Page permission is still missing. Press Ensure Static Ticket URLs again; V316 will open authorization directly from your click.\",true);\n        }else{\n          setNotice(\"Static URL creation failed. The exact Shopify stage/error is shown under the buttons.\",true);\n        }\n      }finally{setLoading(button,false);}\n    });\n    $(\"metaIsolationScanButton\")?.addEventListener(\"click\",function(){loadMetaIsolationHealthV4482(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"metaConversionDiagnosticsReload\")?.addEventListener(\"click\",function(){loadMetaConversionDiagnosticsV4489(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"clubMetaConversionDiagnosticsReload\")?.addEventListener(\"click\",function(){loadMetaConversionDiagnosticsV4489(this,\"club\").catch(err=>setNotice(err.message||err,true));});\n    $(\"saveTrackingSettingsButton\")?.addEventListener(\"click\",function(){saveTrackingSettings(this).catch(err=>setNotice(err.message||err,true));});\n    $(\"reloadTrackingSettingsButton\")?.addEventListener(\"click\",function(){loadTrackingSettings().then(()=>setNotice(\"Tracking settings reloaded.\")).catch(err=>setNotice(err.message||err,true));});\n    // V381 NOTE-633E2378CF: Refresh Tickets uses the canonical delegated\n    // [data-refresh=\"shopify\"] controller below so the control still works after\n    // Tickets UI re-renders and cannot lose a one-time element listener.\n    $(\"refreshTicketDiscountCodes\")?.addEventListener(\"click\", async (e)=>{try{setLoading(e.currentTarget,true);await loadTicketDiscountCodes();setNotice(\"Ticket discount codes refreshed.\");}catch(err){setNotice(err.message,true);}finally{setLoading(e.currentTarget,false);}});\n    $(\"saveTicketDiscountCode\")?.addEventListener(\"click\", async (e)=>{try{await saveTicketDiscountCode(e.currentTarget);}catch(err){setNotice(err.message,true);}});\n    $(\"ticketDiscountCodeList\")?.addEventListener(\"click\", async function(event){\n      const button=event.target.closest(\"[data-delete-ticket-discount]\"); if(!button)return;\n      const code=button.dataset.deleteTicketDiscount;\n      if(!confirm(\"Permanently delete ticket discount code \"+code+\" from Promo Codes? Existing completed orders keep their historical discount record.\"))return;\n      try{setLoading(button,true);await api(\"/api/admin/ticket-discount-codes/\"+encodeURIComponent(code)+\"/delete\",{method:\"POST\",body:\"{}\",cacheMs:0});await loadTicketDiscountCodes();setNotice(\"Ticket discount code removed: \"+code);}catch(err){setNotice(err.message,true);}finally{setLoading(button,false);}\n    });\n\n    $(\"ensureShopifyWebhookButton\")?.addEventListener(\"click\", async (e) => { try { await ensureShopifyWebhook(e.currentTarget); } catch (err) { const target = $(\"shopifyWebhookResult\"); if (target) target.textContent = err.message; setNotice(err.message, true); } });\n\n    $(\"eventCalendarPreviousV485\")?.addEventListener(\"click\",()=>{const d=state.eventPlanningMonthV485;state.eventPlanningMonthV485=new Date(d.getFullYear(),d.getMonth()-1,1);state.eventPlanningDirectoryV618=[];renderEventCalendarV485();loadEventPlanningV485().catch(err=>setNotice(err.message,true));});\n    $(\"eventCalendarNextV485\")?.addEventListener(\"click\",()=>{const d=state.eventPlanningMonthV485;state.eventPlanningMonthV485=new Date(d.getFullYear(),d.getMonth()+1,1);state.eventPlanningDirectoryV618=[];renderEventCalendarV485();loadEventPlanningV485().catch(err=>setNotice(err.message,true));});\n    $(\"eventCalendarTodayV485\")?.addEventListener(\"click\",()=>{const d=new Date();state.eventPlanningMonthV485=new Date(d.getFullYear(),d.getMonth(),1);state.eventPlanningDirectoryV618=[];renderEventCalendarV485();loadEventPlanningV485().catch(err=>setNotice(err.message,true));});\n    $(\"eventCalendarMonthPickerV487\")?.addEventListener(\"change\",e=>{const m=String(e.currentTarget.value||\"\").match(/^(\\d{4})-(\\d{2})$/);if(!m)return;state.eventPlanningMonthV485=new Date(Number(m[1]),Number(m[2])-1,1);state.eventPlanningDirectoryV618=[];renderEventCalendarV485();loadEventPlanningV485().catch(err=>setNotice(err.message,true));});\n    $(\"eventPlanSaveV485\")?.addEventListener(\"click\",e=>saveEventPlanningEntryV485(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n    $(\"eventClashCheckV485\")?.addEventListener(\"click\",e=>checkEventClashesV485(e.currentTarget).catch(err=>{const target=$(\"eventClashResultV485\");if(target)target.innerHTML=\"<div class='orbit-notice error'><strong>Clash check failed.</strong><br>\"+esc(err.message||err)+\"</div>\";setNotice(err.message||err,true);}));\n    $(\"eventPlanSavedListV485\")?.addEventListener(\"click\",e=>{const button=e.target.closest(\"[data-event-plan-archive-v485]\");if(button)archiveEventPlanningEntryV485(button.dataset.eventPlanArchiveV485,button).catch(err=>setNotice(err.message||err,true));});\n    $(\"eventCalendarGridV485\")?.addEventListener(\"click\",e=>{const day=e.target.closest(\"[data-event-calendar-date-v485]\");if(!day)return;const date=day.dataset.eventCalendarDateV485;renderEventCalendarDayV618(date);invalidateEventCheckV618();if($(\"eventClashEndDateV618\"))$(\"eventClashEndDateV618\").value=\"\";if($(\"eventPlanDateV485\"))$(\"eventPlanDateV485\").value=date;if($(\"eventClashDateV485\"))$(\"eventClashDateV485\").value=date;});\n\n    document.querySelectorAll(\"[data-tab]\").forEach(button => {\n      button.addEventListener(\"click\", () => {\n        const panel = $(\"tab-\" + button.dataset.tab);\n        const module = panel?.dataset.module || state.currentModule;\n        activateModule(module, button.dataset.tab);\n      });\n    });\n\n    const supportDialog = $(\"supportConversationModal\");\n    supportDialog?.addEventListener(\"cancel\", (event) => {\n      event.preventDefault();\n      closeSupportModal();\n    });\n\n    document.addEventListener(\"click\", async (event) => {\n      const rawTarget = event.target;\n      if (!(rawTarget instanceof HTMLElement)) return;\n\n      const supportStartButton = rawTarget.closest(\"[data-member-action='start-support']\");\n      if (supportStartButton) {\n        event.preventDefault();\n        event.stopPropagation();\n        try { startSelectedMemberSupportConversation(); }\n        catch (err) { setNotice(err.message || String(err), true); }\n        return;\n      }\n\n      const target = rawTarget.closest(\"#saveTemplateButton, #previewTemplateButton, #testSendTemplateButton, #resetTemplateButton, [data-refresh], [data-pack-id], [data-pack-label], [data-pack-status], [data-pack-dispatch], [data-pack-reissue], [data-pack-undo-reissue], [data-pack-delete], [data-special-delete], [data-template-edit], [data-template-preview], [data-download-labels], [data-draw-id], [data-ticket-code], [data-golden-qr], [data-golden-copy], [data-member-lookup], [data-member-login-as], [data-member-back-search], [data-member-summary-filter], [data-dashboard-member-filter], [data-member-pane-tab], [data-member-action], [data-member-communication-resend], [data-copy-value], [data-member-qr], [data-loyalty-adjust], [data-loyalty-test], [data-loyalty-reverse], [data-sync-checkout], [data-force-fulfil], [data-resend-public-tickets], [data-ticket-quick-action], [data-issue-carer-ticket], [data-save-event-tag], [data-event-tag-select], [data-prepare-event], [data-attendance-event], [data-test-fulfil], [data-free-test-checkout], [data-support-open], [data-support-reply], [data-support-status], [data-support-close], #supportModalRefresh, #supportModalReply, #supportModalResolve, #supportModalReopen, [data-generate-missing-monthly-packs], [data-alert-module], [data-address-action], #createGoldenTicketButton\");\n      if (!target) return;\n\n      try {\n        if (target.id === \"createGoldenTicketButton\") { await createGoldenTicket(target); return; }\n        if (target.dataset.generateMissingMonthlyPacks !== undefined) { await generateMissingMonthlyPacks(target); return; }\n        if (target.dataset.templateEdit) { await editTemplate(target.dataset.templateEdit, target); return; }\n        if (target.dataset.templatePreview) { state.selectedTemplateKey = target.dataset.templatePreview; await previewTemplate(target); return; }\n        if (target.id === \"saveTemplateButton\") { await saveTemplate(target); return; }\n        if (target.id === \"previewTemplateButton\") { await previewTemplate(target); return; }\n        if (target.id === \"testSendTemplateButton\") { await testSendTemplate(target); return; }\n        if (target.id === \"resetTemplateButton\") { await resetTemplate(target); return; }\n        if (target.dataset.packReissue) {\n          const packId = target.dataset.packReissue;\n          const reason = window.prompt(\"Why are you reissuing this parcel?\", \"Returned to sender\");\n          if (reason === null) return;\n          const confirmText = window.prompt(\"Type REISSUE to create a replacement parcel. The original parcel and tracking history will be kept.\", \"\");\n          if (String(confirmText || \"\").trim().toUpperCase() !== \"REISSUE\") return;\n          setLoading(target, true);\n          try {\n            const result = await api(\"/api/admin/fulfilment/pack/\" + encodeURIComponent(packId) + \"/reissue\", { method:\"POST\", body:JSON.stringify({reason:reason,confirmation:\"REISSUE\"}) });\n            setNotice(\"Replacement parcel \" + (result.replacementPackId || \"created\") + \" is ready for a new label.\");\n            await loadFulfilment();\n          } finally { setLoading(target, false); }\n          return;\n        }\n        if (target.dataset.packUndoReissue) {\n          const packId = target.dataset.packUndoReissue;\n          const reason = window.prompt(\"Why are you cancelling this replacement parcel?\", \"Accidental reissue\");\n          if (reason === null) return;\n          const confirmText = window.prompt(\"Type UNDO to cancel this replacement and restore the original parcel and tracking.\", \"\");\n          if (String(confirmText || \"\").trim().toUpperCase() !== \"UNDO\") return;\n          setLoading(target, true);\n          try {\n            const result = await api(\"/api/admin/fulfilment/pack/\" + encodeURIComponent(packId) + \"/undo-reissue\", {method:\"POST\",body:JSON.stringify({reason:reason,confirmation:\"UNDO\"})});\n            setNotice(\"Replacement cancelled. Original parcel \" + (result.originalPackId || \"restored\") + \" is current again.\");\n            await loadFulfilment();\n            if (state.selectedMemberLookup) await openMemberWorkspace(state.selectedMemberLookup, { preservePane:true }).catch(()=>{});\n          } finally { setLoading(target, false); }\n          return;\n        }\n        if (target.dataset.packDelete) { await deletePackRow(target.dataset.packDelete, target); return; }\n        if (target.dataset.specialDelete) { await deleteSpecialShipment(target.dataset.specialDelete, target); return; }\n        if (target.dataset.packLabel) { await quickPackAction(target.dataset.packLabel, target.dataset.packId, target); return; }\n        if (target.dataset.packStatus) { await quickPackAction(target.dataset.packStatus, target.dataset.packId, target); return; }\n        if (target.dataset.packDispatch) { await quickPackAction(\"shipped\", target.dataset.packDispatch, target); return; }\n        if (target.dataset.downloadLabels !== undefined) { downloadLabelsPdf(); return; }\n        if (target.dataset.refresh === \"fulfilment\") { await loadFulfilment(target); }\n        if (target.dataset.refresh === \"draws\") { await loadDraws(); setNotice(\"Prize Draws refreshed.\"); }\n        if (target.dataset.refresh === \"golden\") { await loadGolden(); setNotice(\"Golden Tickets refreshed.\"); }\n        if (target.dataset.refresh === \"events\") { await loadEvents(); setNotice(\"Workflow Events refreshed.\"); }\n        if (target.dataset.refresh === \"scheduled-runs\") { await refreshScheduledRuns(target); }\n        if (target.dataset.refresh === \"communications\") { await loadCommunications(); if(canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599())==='card-shows')await loadVendorClubEmailsV621(); setNotice(\"Email templates refreshed.\"); }\n        if (target.dataset.alertModule) {\n          activateModule(target.dataset.alertModule, target.dataset.moduleTab || undefined);\n          if (target.dataset.alertModule === \"shipping\" && target.dataset.moduleTab) {\n            window.setTimeout(function(){\n              document.querySelector('[data-shipping-tab=\"' + canonicalOrbitSubtab(\"shipping\",target.dataset.moduleTab) + '\"]')?.click();\n            }, 80);\n          }\n          return;\n        }\n        if (target.dataset.supportClose !== undefined) { closeSupportModal(); return; }\n        if (target.id === \"supportModalRefresh\") { if (state.currentSupportTicketId) await openSupportConversation(state.currentSupportTicketId, target); return; }\n        if (target.id === \"supportModalReply\") { if (state.currentSupportTicketId) await replyToSupport(state.currentSupportTicketId, target); return; }\n        if (target.id === \"supportModalResolve\") { if (state.currentSupportTicketId) await updateSupportStatus(state.currentSupportTicketId, \"resolved\", target); return; }\n        if (target.id === \"supportModalReopen\") { if (state.currentSupportTicketId) await updateSupportStatus(state.currentSupportTicketId, \"open\", target); return; }\n        if (target.dataset.supportOpen) { await openSupportConversation(target.dataset.supportOpen, target); return; }\n        if (target.dataset.supportReply) await replyToSupport(target.dataset.supportReply, target);\n        if (target.dataset.supportStatus) await updateSupportStatus(target.dataset.supportStatus, target.dataset.status || \"open\", target);\n        if (target.dataset.refresh === \"attendance\") {\n          setLoading(target, true);\n          try {\n            await loadAttendance();\n            setNotice(\"Attendance Centre refreshed.\");\n          } finally {\n            setLoading(target, false);\n          }\n          return;\n        }\n        if (target.dataset.refresh === \"eventbrite\") {\n          setLoading(target, true);\n          try {\n            await loadEventbrite();\n            setNotice(\"Events Centre refreshed.\");\n          } finally {\n            setLoading(target, false);\n          }\n        }\n        if (target.dataset.refresh === \"shopify\") {\n          const originalHtml=target.innerHTML;\n          const statusTarget=$(\"ticketCheckoutsTable\");\n          target.disabled=true; target.dataset.refreshing=\"1\"; target.classList.add(\"orbit-ticket-refresh-working\"); target.setAttribute(\"aria-busy\",\"true\");\n          target.innerHTML=\"<span class='orbit-mini-spinner' aria-hidden='true'></span><span>Refreshing tickets\u2026</span>\";\n          if(statusTarget)statusTarget.setAttribute(\"aria-busy\",\"true\");\n          try {\n            await loadShopify();\n            setNotice(\"Tickets refreshed.\");\n          } finally {\n            target.disabled=false; target.dataset.refreshing=\"0\"; target.classList.remove(\"orbit-ticket-refresh-working\"); target.removeAttribute(\"aria-busy\"); target.innerHTML=originalHtml;\n            if(statusTarget)statusTarget.removeAttribute(\"aria-busy\");\n          }\n          return;\n        }\n        if (target.dataset.syncCheckout) await syncCheckoutOrder(target.dataset.syncCheckout, target);\n        if (target.dataset.forceFulfil) await forceFulfilCheckout(target.dataset.forceFulfil, target);\n        if (target.dataset.resendPublicTickets) { await resendPublicTickets(target.dataset.resendPublicTickets, target); return; }\n        if (target.dataset.ticketQuickAction) { openTicketAction(target.dataset.ticketQuickAction, target.dataset.checkoutId); return; }\n        if (target.dataset.issueCarerTicket) { openTicketAction(\"carer\", target.dataset.issueCarerTicket); return; }\n        if (target.dataset.prepareEvent) { await prepareAttendanceEvent(target,target.dataset.prepareEvent); return; }\n\n        if (target.dataset.attendanceEvent) { activateModule(\"events\",\"attendance\"); const sel=$(\"attendanceEventSelect\"); if(sel)sel.value=target.dataset.attendanceEvent; await loadAttendanceDetail(target.dataset.attendanceEvent); return; }\n        if (target.dataset.testFulfil) await testFulfilCheckout(target.dataset.testFulfil, target);\n        if (target.dataset.freeTestCheckout) await createFreeTestCheckout(target.dataset.freeTestCheckout, target);\n        if (target.dataset.downloadLabels) downloadLabelsPdf();\n        if (target.dataset.packId && target.dataset.packLabel === \"generate\") {\n          const wasChecked = target.closest(\"tr\")?.querySelector(\".orbit-pack-select\")?.checked;\n          document.querySelectorAll(\".orbit-pack-select\").forEach(input => input.checked = false);\n          const rowCheck = target.closest(\"tr\")?.querySelector(\".orbit-pack-select\");\n          if (rowCheck) rowCheck.checked = true;\n          await generateMonthlyDispatch(target);\n          if (rowCheck) rowCheck.checked = Boolean(wasChecked);\n        }\n        if (target.dataset.packId && target.dataset.packStatus) await updatePackStatus(target.dataset.packId, target.dataset.packStatus);\n        if (target.dataset.drawId && target.dataset.drawStatus) await updateDrawStatus(target.dataset.drawId, target.dataset.drawStatus);\n        if (target.dataset.goldenQr) { await downloadGoldenTicketQr(target.dataset.ticketCode, target.dataset.goldenQr, target); return; }\n        if (target.dataset.goldenCopy !== undefined) { await copyGoldenTicketClaimLink(target.dataset.goldenCopy, target); return; }\n        if (target.dataset.ticketCode && target.dataset.ticketStatus) await updateTicketStatus(target.dataset.ticketCode, target.dataset.ticketStatus);\n        if (target.dataset.addressAction) {\n          const lookup = target.dataset.addressLookup || selectedMemberLookup;\n          const packId = target.dataset.addressPack || null;\n          addressRecoveryContext = { lookup: lookup, packId: packId, delivery: null };\n          if (target.dataset.addressAction === \"edit\") { openAddressRecovery(lookup, packId); return; }\n          openAddressRecovery(lookup, packId);\n          await syncAddressSource(target.dataset.addressAction, target);\n          return;\n        }\n        if (target.dataset.memberBackSearch !== undefined) { returnToMemberSearch(); return; }\n        if (target.dataset.memberLoginAs) { await loginAsMember(target.dataset.memberLoginAs, target); return; }\n        if (target.dataset.memberLookup) { await loadMemberProfile(target.dataset.memberLookup, target); return; }\n        if (target.dataset.memberCommunicationResend) {\n          if (!selectedMemberLookup) throw new Error(\"Select a member first.\");\n          if (!window.confirm(\"Resend this exact communication to the member and record the manual resend?\")) return;\n          setLoading(target, true);\n          try {\n            const data = await api(\"/api/admin/members/\" + encodeURIComponent(selectedMemberLookup) + \"/communications/\" + encodeURIComponent(target.dataset.memberCommunicationResend) + \"/resend\", { method: \"POST\", body: JSON.stringify({}) });\n            await loadMemberProfile(selectedMemberLookup);\n            setNotice(data.message || \"Communication resent.\");\n          } finally { setLoading(target, false); }\n        }\n        if (target.dataset.memberSummaryFilter) {\n          const statusSelect = $(\"memberSearchStatus\");\n          const searchInput = $(\"memberSearchInput\");\n          if (statusSelect) statusSelect.value = target.dataset.memberSummaryFilter;\n          if (searchInput) searchInput.value = \"\";\n          await searchMembers(target);\n        }\n        if (target.dataset.dashboardMemberFilter) {\n          activateModule(\"members\");\n          const statusSelect = $(\"memberSearchStatus\");\n          const searchInput = $(\"memberSearchInput\");\n          if (statusSelect) statusSelect.value = target.dataset.dashboardMemberFilter;\n          if (searchInput) searchInput.value = \"\";\n          await searchMembers(null);\n          document.getElementById(\"module-members\")?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n          return;\n        }\n        if (target.dataset.memberPaneTab) { setActiveMemberPane(target.dataset.memberPaneTab); }\n        if (target.dataset.memberAction === \"refresh\") { await refreshSelectedMember(target); return; }\n        if (target.dataset.memberAction === \"archive\") { await archiveSelectedMember(target); return; }\n        if (target.dataset.memberAction === \"flag-support\") await flagSelectedMember();\n        if (target.dataset.memberAction === \"clear-support-flag\") await clearSelectedMemberFlag();\n        if (target.dataset.memberAction === \"set-stage\") await setSelectedMemberStage(false, target);\n        if (target.dataset.memberAction === \"set-stage-create-pack\") await setSelectedMemberStage(true, target);\n        if (target.dataset.memberAction === \"generate-pack\") await generatePackForSelectedMember(target);\n        if (target.dataset.memberQr) await downloadSelectedMemberQr(target.dataset.memberQr, target);\n        if (target.dataset.loyaltyTest !== undefined) await testSelectedMemberQr(target);\n        if (target.dataset.loyaltyAdjust !== undefined) await adjustSelectedMemberPoints(target);\n        if (target.dataset.loyaltyReverse) await reverseSelectedMemberPoints(target.dataset.loyaltyReverse, target);\n        if (target.dataset.copyValue !== undefined) await copyText(target.dataset.copyValue, target);\n      } catch (err) {\n        setNotice(err.message, true);\n      }\n    });\n  }\n\n  function enforceMonthlyDrawSummaryLayout() {\n    const summary = document.querySelector(\".orbit-monthly-draw-summary\");\n    if (!summary) return;\n\n    summary.style.setProperty(\"display\", \"grid\", \"important\");\n    summary.style.setProperty(\"grid-template-columns\", window.innerWidth <= 760 ? \"1fr\" : \"repeat(2, minmax(0, 1fr))\", \"important\");\n    summary.style.setProperty(\"gap\", \"14px\", \"important\");\n    summary.style.setProperty(\"align-items\", \"stretch\", \"important\");\n\n    const cards = Array.from(summary.children);\n    cards.forEach((card, index) => {\n      card.style.setProperty(\"min-width\", \"0\", \"important\");\n      card.style.setProperty(\"width\", \"auto\", \"important\");\n      card.style.setProperty(\"overflow\", \"hidden\", \"important\");\n      card.style.setProperty(\"grid-column\", index === cards.length - 1 ? \"1 / -1\" : \"auto\", \"important\");\n\n      card.querySelectorAll(\"span,strong,small\").forEach((node) => {\n        node.style.setProperty(\"display\", \"block\", \"important\");\n        node.style.setProperty(\"min-width\", \"0\", \"important\");\n        node.style.setProperty(\"max-width\", \"100%\", \"important\");\n        node.style.setProperty(\"white-space\", \"normal\", \"important\");\n        node.style.setProperty(\"overflow-wrap\", \"anywhere\", \"important\");\n        node.style.setProperty(\"word-break\", \"break-word\", \"important\");\n      });\n    });\n  }\n\n\n  /*\n   * Loyalty workspace controller.\n   * One source of truth owns reward navigation, editor state, stock controls and order history.\n   */\n  let loyaltyRewards = [];\n  let loyaltyOrders = [];\n  let loyaltyCategories = [];\n  let loyaltyEarningRules = {showCheckIn:5,membershipReferral:10,membershipRebill:2,ticketReferral:2};\n\n  function rewardState(reward){\n    if (reward.status) return reward.status;\n    if (reward.active === true) return \"active\";\n    if (reward.active === false && reward.retired === true) return \"retired\";\n    return \"draft\";\n  }\n\n  function ensureLoyaltyOperationsV727(){\n    const anchor=document.getElementById('loyaltyOperationsMountV728'); if(!anchor)return;\n    const panel=document.createElement('div'); panel.id='loyaltyOperationsPanel'; panel.className='orbit-loyalty-workspace';\n    panel.innerHTML=\"<div class='orbit-panel-header orbit-loyalty-admin-config-v376'><div><p class='orbit-kicker'>Loyalty Store</p><h2>Rewards & Stock Control</h2><p>Manage the complete reward catalogue, drafts, stock and member redemptions from one workspace.</p></div><div class='orbit-action-row'><button type='button' id='createLoyaltyReward'>Create Reward</button><button type='button' id='refreshLoyaltyOperationsV727' class='secondary'>Refresh</button></div></div>\"+\n      \"<div class='orbit-loyalty-summary orbit-loyalty-admin-config-v376'><article><span>Live rewards</span><strong id='loyaltyLiveCount'>\u2014</strong></article><article><span>Draft rewards</span><strong id='loyaltyDraftCount'>\u2014</strong></article><article><span>Low stock</span><strong id='loyaltyLowStockCount'>\u2014</strong></article><article><span>Orders</span><strong id='loyaltyOrderCount'>\u2014</strong></article></div>\"+\n      \"<div id='loyaltyOperationsStatusV727' class='orbit-result' hidden></div>\"+\n      \"<section class='orbit-loyalty-earning-manager orbit-loyalty-admin-config-v376'><div><h3>Points Earning Values</h3><p>Set how many points members earn for each qualifying action.</p></div><form id='loyaltyEarningRulesForm' class='orbit-form-grid'><label>Show check-in<input id='loyaltyRuleShowCheckIn' type='number' min='0'></label><label>Membership referral<input id='loyaltyRuleMembershipReferral' type='number' min='0'></label><label>Successful rebill<input id='loyaltyRuleMembershipRebill' type='number' min='0'></label><label>Ticket referral, per paid ticket<input id='loyaltyRuleTicketReferral' type='number' min='0'></label><button type='submit'>Save Point Values</button></form></section><section class='orbit-loyalty-category-manager orbit-loyalty-admin-config-v376'><div><h3>Reward Categories</h3><p>Create sections such as Slabs, Sealed and Other, then assign each reward in its editor.</p></div><form id='loyaltyCategoryForm'><input id='loyaltyCategoryName' maxlength='80' placeholder='New category name' required><button type='submit'>Add Category</button></form><div id='loyaltyCategoryList' class='orbit-loyalty-category-list'></div></section>\"+\n      \"<section class='orbit-loyalty-pane active' data-loyalty-pane='live'><div class='orbit-subpanel-heading'><div><h3>Live Rewards & Stock Control</h3><p>Rewards currently visible to active members.</p></div></div><div id='loyaltyLiveRewards' class='orbit-reward-grid'>Loading rewards\u2026</div></section>\"+\n      \"<section class='orbit-loyalty-pane' data-loyalty-pane='drafts'><div class='orbit-subpanel-heading'><div><h3>Draft Rewards</h3><p>Prepare and review rewards before publishing them.</p></div></div><div id='loyaltyDraftRewards' class='orbit-reward-grid'>Loading drafts\u2026</div></section>\"+\n      \"<section class='orbit-loyalty-pane' data-loyalty-pane='history'><div class='orbit-subpanel-heading'><div><h3>Reward History</h3><p>Retired and hidden rewards kept for operational history.</p></div></div><div id='loyaltyRewardHistory' class='orbit-reward-grid'>Loading history\u2026</div></section>\"+\n      \"<section class='orbit-loyalty-pane' data-loyalty-pane='orders'><div class='orbit-subpanel-heading'><div><h3>Loyalty Orders</h3><p>Member redemptions and fulfilment status.</p></div></div><div id='loyaltyOrdersTableV727' class='orbit-table-wrap'>Loading orders\u2026</div></section>\";\n    anchor.replaceWith(panel);\n    document.getElementById('refreshLoyaltyOperationsV727')?.addEventListener('click',function(){loadLoyaltyOperationsV727(this);});\n    document.getElementById('createLoyaltyReward')?.addEventListener('click',()=>openLoyaltyRewardDialog());\n    document.getElementById('loyaltyCategoryForm')?.addEventListener('submit',saveLoyaltyCategoryV205);\n    document.getElementById('loyaltyEarningRulesForm')?.addEventListener('submit',saveLoyaltyEarningRulesV207);\n    panel.addEventListener('click',function(event){\n      const edit=event.target.closest('[data-loyalty-edit]'); if(edit)openLoyaltyRewardDialog(edit.dataset.loyaltyEdit);\n      const status=event.target.closest('[data-loyalty-status]'); if(status)updateLoyaltyRewardStatus(status.dataset.loyaltyStatus,status.dataset.status,status);\n      const cancel=event.target.closest('[data-loyalty-order-cancel-v727]'); if(cancel)cancelLoyaltyOrderV727(cancel);\n      const deleteOrder=event.target.closest('[data-loyalty-order-delete-v350]'); if(deleteOrder)deleteCancelledLoyaltyOrderV350(deleteOrder);\n      const deleteDraft=event.target.closest('[data-loyalty-delete-draft]'); if(deleteDraft){event.preventDefault();event.stopPropagation();deleteDraftRewardV211(deleteDraft.dataset.loyaltyDeleteDraft,deleteDraft).catch(err=>setNotice(err.message||err,true));}\n    });\n    bindLoyaltyDialog();\n  }\n\n  function loyaltyRewardCard(r){\n    const status=rewardState(r), badge=status==='active'?'success':status==='draft'?'warning':'neutral';\n    const image=r.imageUrl?\"<img src='\"+esc(r.imageUrl)+\"' alt=''>\":\"<div class='orbit-reward-image-empty'>No image</div>\";\n    const draftDelete=status==='draft'?\"<button type='button' class='danger' data-loyalty-delete-draft='\"+esc(r.id)+\"'>Delete Draft</button>\":'';\n    const stateAction=status==='active'?\"<button type='button' class='secondary' data-loyalty-status='\"+esc(r.id)+\"' data-status='draft'>Unpublish</button>\":status==='draft'?\"<button type='button' class='secondary' data-loyalty-status='\"+esc(r.id)+\"' data-status='active'>Publish</button>\":\"<button type='button' class='secondary' data-loyalty-status='\"+esc(r.id)+\"' data-status='draft'>Restore to Draft</button>\";\n    return \"<article class='orbit-reward-card'><div class='orbit-reward-image'>\"+image+\"</div><div class='orbit-reward-card-body'><div class='orbit-reward-card-heading'><div><h3>\"+esc(r.name)+\"</h3><span class='orbit-pill \"+badge+\"'>\"+esc(status.charAt(0).toUpperCase()+status.slice(1))+\"</span></div><small class='orbit-reward-category'>\"+esc(r.categoryName||'Other')+\"</small><p>\"+esc(String(r.description||'No description added.').replace(/<[^>]+>/g,' '))+\"</p></div><dl><div><dt>Points</dt><dd>\"+esc(r.pointsPrice)+\"</dd></div><div><dt>Stock</dt><dd>\"+esc(r.stock)+\"</dd></div><div><dt>Type</dt><dd>\"+(r.shippingRequired?'Physical':'Digital')+\"</dd></div></dl><div class='orbit-action-row'><button type='button' data-loyalty-edit='\"+esc(r.id)+\"'>View & Edit</button>\"+draftDelete+stateAction+\"</div></div></article>\";\n  }\n\n  function renderLoyaltyWorkspace(){\n    const groups={live:[],drafts:[],history:[]};\n    loyaltyRewards.forEach(r=>{const st=rewardState(r);(st==='active'?groups.live:st==='draft'?groups.drafts:groups.history).push(r);});\n    const render=(id,items,empty)=>{const el=document.getElementById(id);if(el)el.innerHTML=items.length?items.map(loyaltyRewardCard).join(''):\"<div class='orbit-empty-state'><strong>\"+esc(empty)+\"</strong><span>Create or move a reward here when needed.</span></div>\";};\n    render('loyaltyLiveRewards',groups.live,'No live rewards'); render('loyaltyDraftRewards',groups.drafts,'No draft rewards'); render('loyaltyRewardHistory',groups.history,'No retired rewards');\n    text('loyaltyLiveCount',groups.live.length); text('loyaltyDraftCount',groups.drafts.length); text('loyaltyLowStockCount',groups.live.filter(r=>Number(r.stock)<=3).length); text('loyaltyOrderCount',loyaltyOrders.length);\n    const categoryList=document.getElementById('loyaltyCategoryList');if(categoryList)categoryList.innerHTML=loyaltyCategories.length?loyaltyCategories.map(c=>\"<span><strong>\"+esc(c.name)+\"</strong><button type='button' class='secondary' data-loyalty-category-edit='\"+esc(c.id)+\"'>Rename</button><button type='button' class='secondary' data-loyalty-category-delete='\"+esc(c.id)+\"' aria-label='Delete \"+esc(c.name)+\"'>Delete</button></span>\").join(''):\"<em>No custom categories yet. Uncategorised rewards appear under Other.</em>\";\n    categoryList?.querySelectorAll('[data-loyalty-category-edit]').forEach(btn=>btn.addEventListener('click',()=>renameLoyaltyCategoryV207(btn.dataset.loyaltyCategoryEdit,btn)));\n    categoryList?.querySelectorAll('[data-loyalty-category-delete]').forEach(btn=>btn.addEventListener('click',()=>deleteLoyaltyCategoryV205(btn.dataset.loyaltyCategoryDelete,btn)));\n    const ot=document.getElementById('loyaltyOrdersTableV727'); if(ot)ot.innerHTML=table(['Order','Member','Contents','Points','Status','Shipment','Action'],loyaltyOrders.map(function(o){const state=String(o.status||'').toLowerCase(),canCancel=!/cancel|refund|dispatch|deliver/i.test(state),canDelete=/cancel|refund/.test(state);const action=canCancel?\"<button type='button' class='secondary' data-loyalty-order-cancel-v727='\"+esc(o.id)+\"'>Cancel & Refund</button>\":canDelete?\"<button type='button' class='danger' data-loyalty-order-delete-v350='\"+esc(o.id)+\"'>Delete Cancelled Order</button>\":'\u2014';return \"<tr><td><strong>\"+esc(o.orderNumber||o.id)+\"</strong><br><small>\"+esc(prettyDate(o.createdAt))+\"</small></td><td>\"+esc(o.memberNumber||'\u2014')+\"<br><small>\"+esc(o.email||'\u2014')+\"</small></td><td>\"+esc((o.items||[]).map(i=>i.quantity+' \u00D7 '+i.name).join(', ')||'\u2014')+\"</td><td>\"+esc(o.pointsTotal)+\"</td><td>\"+esc(humanDrawStatus(o.status))+\"</td><td>\"+esc(o.shipmentId||'Digital')+\"</td><td>\"+action+\"</td></tr>\";}),'No loyalty orders yet.');\n    openLoyaltyPane(state.currentLoyaltyPane||'live');\n  }\n\n  function openLoyaltyPane(pane){\n    state.currentLoyaltyPane=pane||'live';\n    document.querySelectorAll('[data-loyalty-pane]').forEach(el=>el.classList.toggle('active',el.dataset.loyaltyPane===state.currentLoyaltyPane));\n    document.querySelectorAll('[data-workspace-group=\"loyalty\"] [data-loyalty-open]').forEach(el=>el.classList.toggle('active',el.dataset.loyaltyOpen===state.currentLoyaltyPane));\n    document.querySelectorAll('.orbit-loyalty-admin-config-v376').forEach(el=>el.hidden=state.currentLoyaltyPane!=='live');\n    const paneEl=document.querySelector('[data-loyalty-pane=\"'+CSS.escape(state.currentLoyaltyPane)+'\"]');\n    if(paneEl&&state.currentModule==='loyalty')requestAnimationFrame(()=>paneEl.scrollIntoView({behavior:'smooth',block:'start'}));\n  }\n\n  async function loadLoyaltyOperationsV727(button){\n    ensureLoyaltyOperationsV727(); if(button)setLoading(button,true);\n    try{const [rd,od,cd,er]=await Promise.all([api('/api/admin/loyalty-store/rewards'),api('/api/admin/loyalty-store/orders?limit=100'),api('/api/admin/loyalty-store/categories'),api('/api/admin/loyalty-store/earning-rules')]);loyaltyRewards=rd.rewards||[];loyaltyOrders=od.orders||[];loyaltyCategories=cd.categories||[];loyaltyEarningRules=er.rules||loyaltyEarningRules;renderLoyaltyWorkspace();[['loyaltyRuleShowCheckIn','showCheckIn'],['loyaltyRuleMembershipReferral','membershipReferral'],['loyaltyRuleMembershipRebill','membershipRebill'],['loyaltyRuleTicketReferral','ticketReferral']].forEach(([id,key])=>{const el=document.getElementById(id);if(el)el.value=loyaltyEarningRules[key]??0;});}\n    catch(err){const status=document.getElementById('loyaltyOperationsStatusV727');if(status){status.hidden=false;status.textContent=err.message||'Could not load Loyalty operations.';}}\n    finally{if(button)setLoading(button,false);}\n  }\n\n\n  async function saveLoyaltyEarningRulesV207(event){event.preventDefault();const button=event.currentTarget.querySelector('button');setLoading(button,true);try{const body={showCheckIn:Number(document.getElementById('loyaltyRuleShowCheckIn').value),membershipReferral:Number(document.getElementById('loyaltyRuleMembershipReferral').value),membershipRebill:Number(document.getElementById('loyaltyRuleMembershipRebill').value),ticketReferral:Number(document.getElementById('loyaltyRuleTicketReferral').value)};const data=await api('/api/admin/loyalty-store/earning-rules',{method:'POST',body:JSON.stringify(body)});loyaltyEarningRules=data.rules||body;setNotice('Loyalty point values saved.');}finally{setLoading(button,false);}}\n  async function renameLoyaltyCategoryV207(id,button){const category=loyaltyCategories.find(c=>String(c.id)===String(id));if(!category)return;const name=prompt('Rename this reward category:',category.name);if(!name||name.trim()===category.name)return;setLoading(button,true);try{await api('/api/admin/loyalty-store/categories',{method:'POST',body:JSON.stringify({id,name:name.trim(),sortOrder:category.sortOrder||0})});await loadLoyaltyOperationsV727();setNotice('Category renamed and assigned rewards preserved.');}finally{setLoading(button,false);}}\n\n  async function saveLoyaltyCategoryV205(event){\n    event.preventDefault(); const input=document.getElementById('loyaltyCategoryName'),button=event.currentTarget.querySelector('button'); const name=input?.value.trim(); if(!name)return;\n    setLoading(button,true); try{await api('/api/admin/loyalty-store/categories',{method:'POST',body:JSON.stringify({name,sortOrder:loyaltyCategories.length})});if(input)input.value='';await loadLoyaltyOperationsV727();setNotice('Reward category added.');}finally{setLoading(button,false);}\n  }\n  async function deleteLoyaltyCategoryV205(id,button){\n    if(!confirm('Delete this empty reward category? Rewards must be moved out of it first.'))return;setLoading(button,true);try{await api('/api/admin/loyalty-store/categories/'+encodeURIComponent(id),{method:'DELETE'});await loadLoyaltyOperationsV727();setNotice('Reward category deleted.');}finally{setLoading(button,false);}\n  }\n  function populateLoyaltyCategorySelectV205(selected){const select=document.getElementById('loyaltyRewardCategory');if(!select)return;select.innerHTML=\"<option value=''>Other</option>\"+loyaltyCategories.map(c=>\"<option value='\"+esc(c.id)+\"'>\"+esc(c.name)+\"</option>\").join('');select.value=selected||'';}\n\n  function bindLoyaltyDialog(){\n    const dialog=document.getElementById('loyaltyRewardDialog'); if(!dialog||dialog.dataset.bound)return; dialog.dataset.bound='true';\n    document.getElementById('closeLoyaltyRewardDialog')?.addEventListener('click',()=>dialog.close());\n    document.getElementById('loyaltyRewardForm')?.addEventListener('submit',saveLoyaltyRewardV727);\n    document.getElementById('deleteLoyaltyReward')?.addEventListener('click',deleteLoyaltyReward);\n    document.getElementById('loyaltyRewardImage')?.addEventListener('input',renderLoyaltyImagePreview);\n    document.querySelectorAll('[data-reward-format]').forEach(function(button){button.addEventListener('click',function(){document.getElementById('loyaltyRewardDescriptionEditor')?.focus();document.execCommand(button.dataset.rewardFormat,false,null);syncLoyaltyDescriptionV206();});});document.getElementById('loyaltyRewardDescriptionEditor')?.addEventListener('input',syncLoyaltyDescriptionV206);document.getElementById('loyaltyRewardHtmlToggleV207')?.addEventListener('click',toggleLoyaltyHtmlV207);\n  }\n\n  function toggleLoyaltyHtmlV207(){const editor=document.getElementById('loyaltyRewardDescriptionEditor'),source=document.getElementById('loyaltyRewardDescription'),button=document.getElementById('loyaltyRewardHtmlToggleV207');if(!editor||!source)return;const showing=!source.hidden;if(showing){editor.innerHTML=source.value;source.hidden=true;editor.hidden=false;if(button)button.textContent='HTML';}else{source.value=editor.innerHTML;editor.hidden=true;source.hidden=false;if(button)button.textContent='Visual';}}\n  function syncLoyaltyDescriptionV206(){const editor=document.getElementById('loyaltyRewardDescriptionEditor'),field=document.getElementById('loyaltyRewardDescription');if(editor&&field)field.value=editor.innerHTML;}\n  async function deleteDraftRewardV211(id,button){if(!id)throw new Error('Orbit could not identify this draft reward.');const reward=loyaltyRewards.find(r=>String(r.id)===String(id));if(reward&&rewardState(reward)!=='draft')throw new Error('Only draft rewards can be permanently deleted from this button.');if(!confirm('Permanently delete this draft reward? This cannot be undone.'))return;setLoading(button,true);try{const data=await api('/api/admin/loyalty-store/rewards/'+encodeURIComponent(id)+'/delete',{method:'POST',body:JSON.stringify({confirmPermanentDelete:true})});if(data?.deleted!==true)throw new Error(data?.error||'Orbit did not confirm that the draft was deleted.');await loadLoyaltyOperationsV727();if(loyaltyRewards.some(r=>String(r.id)===String(id)))throw new Error('The draft still exists after the server confirmed deletion.');setNotice('Draft reward permanently deleted.');}finally{setLoading(button,false);}}\n  function renderLoyaltyImagePreview(){const wrap=document.getElementById('loyaltyRewardImagePreview'),img=wrap?.querySelector('img'),url=document.getElementById('loyaltyRewardImage')?.value.trim();if(!wrap||!img)return;wrap.hidden=!url;if(url)img.src=url;}\n\n  function openLoyaltyRewardDialog(id){\n    const r=loyaltyRewards.find(x=>x.id===id)||null,dialog=document.getElementById('loyaltyRewardDialog');if(!dialog)return;\n    text('loyaltyRewardDialogTitle',r?'View & Edit Reward':'Create Reward');\n    document.getElementById('loyaltyRewardId').value=r?.id||''; document.getElementById('loyaltyRewardName').value=r?.name||''; document.getElementById('loyaltyRewardPoints').value=r?.pointsPrice||''; document.getElementById('loyaltyRewardStock').value=r?.stock??0; document.getElementById('loyaltyRewardImage').value=r?.imageUrl||''; document.getElementById('loyaltyRewardDescription').value=r?.description||''; const descriptionEditor=document.getElementById('loyaltyRewardDescriptionEditor');if(descriptionEditor)descriptionEditor.innerHTML=r?.description||''; document.getElementById('loyaltyRewardPhysical').checked=r?.shippingRequired!==false; populateLoyaltyCategorySelectV205(r?.categoryId||''); document.getElementById('loyaltyRewardStatus').value=r?rewardState(r):'draft'; document.getElementById('deleteLoyaltyReward').hidden=!r; document.getElementById('loyaltyRewardDialogResult').hidden=true; renderLoyaltyImagePreview(); dialog.showModal();\n  }\n\n  async function saveLoyaltyRewardV727(event){\n    event.preventDefault(); syncLoyaltyDescriptionV206(); const button=document.getElementById('saveLoyaltyReward'),result=document.getElementById('loyaltyRewardDialogResult');setLoading(button,true);\n    try{const status=document.getElementById('loyaltyRewardStatus').value,body={id:document.getElementById('loyaltyRewardId').value||undefined,name:document.getElementById('loyaltyRewardName').value,pointsPrice:Number(document.getElementById('loyaltyRewardPoints').value),stock:Number(document.getElementById('loyaltyRewardStock').value),imageUrl:document.getElementById('loyaltyRewardImage').value,description:document.getElementById('loyaltyRewardDescription').value,categoryId:document.getElementById('loyaltyRewardCategory').value,physical:document.getElementById('loyaltyRewardPhysical').checked,shippingRequired:document.getElementById('loyaltyRewardPhysical').checked,status,active:status==='active',retired:status==='retired'};await api('/api/admin/loyalty-store/rewards',{method:'POST',body:JSON.stringify(body)});await loadLoyaltyOperationsV727();document.getElementById('loyaltyRewardDialog').close();setNotice('Reward saved successfully.');}\n    catch(err){result.hidden=false;result.textContent=err.message;}finally{setLoading(button,false);}\n  }\n\n  async function updateLoyaltyRewardStatus(id,status,button){setLoading(button,true);try{await api('/api/admin/loyalty-store/rewards/'+encodeURIComponent(id)+'/status',{method:'POST',body:JSON.stringify({status,active:status==='active'})});await loadLoyaltyOperationsV727();}finally{setLoading(button,false);}}\n\n  async function deleteLoyaltyReward(){const id=document.getElementById('loyaltyRewardId').value;if(!id)return;if(!confirm('Delete this reward? Rewards with redemption history will be retired instead to preserve records.'))return;const button=document.getElementById('deleteLoyaltyReward');setLoading(button,true);try{const data=await api('/api/admin/loyalty-store/rewards/'+encodeURIComponent(id),{method:'DELETE'});await loadLoyaltyOperationsV727();document.getElementById('loyaltyRewardDialog').close();setNotice(data.retired?'Reward retired because it has order history.':'Reward deleted.');}finally{setLoading(button,false);}}\n\n  async function cancelLoyaltyOrderV727(button){if(!confirm('Cancel this loyalty order, restore stock and refund its points?'))return;const note=prompt('Optional internal cancellation note:')||'';setLoading(button,true);try{await api('/api/admin/loyalty-store/orders/'+encodeURIComponent(button.dataset.loyaltyOrderCancelV727)+'/cancel',{method:'POST',body:JSON.stringify({note})});await loadLoyaltyOperationsV727();await reloadSpecialShipments();setNotice('Loyalty order cancelled and points refunded.');}finally{setLoading(button,false);}}\n  async function deleteCancelledLoyaltyOrderV350(button){\n    const id=button.dataset.loyaltyOrderDeleteV350;\n    if(!id||!confirm('Permanently delete this CANCELLED loyalty order? The refunded points ledger is retained for audit.'))return;\n    setLoading(button,true);\n    try{\n      await api('/api/admin/loyalty-store/orders/'+encodeURIComponent(id),{method:'DELETE'});\n      await loadLoyaltyOperationsV727();\n      await reloadSpecialShipments();\n      setNotice('Cancelled loyalty order permanently deleted. Refund audit history was retained.');\n    }finally{setLoading(button,false);}\n  }\n\n  const websiteImageDraftsV728 = new Map();\n  function websiteImageUrlV367(slot){\n    const key=String(slot?.key||\"\"),revision=Number(slot?.revision||0);\n    if(slot?.hasManagedImage&&key&&revision>0){\n      return API_BASE+\"/api/public/website-images/\"+encodeURIComponent(key)+\"/revision/\"+encodeURIComponent(revision);\n    }\n    return \"\";\n  }\n  function formatBytesV728(bytes){const n=Number(bytes||0);if(!n)return \"\u2014\";if(n<1024)return n+\" B\";if(n<1024*1024)return (n/1024).toFixed(1)+\" KB\";return (n/(1024*1024)).toFixed(2)+\" MB\";}\n  function imageSlotCardV728(slot){\n    const fallback=(window.ORBIT_WEBSITE_IMAGE_FALLBACKS||{})[slot.key]||\"\";\n    const src=slot.hasManagedImage?(websiteImageUrlV367(slot)||fallback):fallback;\n    const exactSize=esc(slot.recommendedWidth)+\" \u00D7 \"+esc(slot.recommendedHeight)+\" px\";\n    const stateLabel=slot.hasManagedImage?\"Live managed image\":(fallback?\"Using theme fallback\":\"No image\");\n    const previewMedia=src?\"<img src='\"+esc(src)+\"' alt='\"+esc(slot.name)+\" preview' decoding='async' data-website-image-preview-img>\":\"<div class='orbit-website-image-empty' data-website-image-empty>No image will display until a replacement is published.</div>\";\n    return \"<article class='orbit-website-image-card' data-image-slot='\"+esc(slot.key)+\"'>\"+\n      \"<div class='orbit-website-image-heading'><div><span>\"+esc(slot.group)+\"</span><h3>\"+esc(slot.name)+\"</h3><p>\"+esc(slot.location)+\"</p></div><b class='orbit-pill \"+(slot.hasManagedImage?\"success\":\"warning\")+\"'>\"+stateLabel+\"</b></div>\"+\n      \"<div class='orbit-website-image-preview \"+(src?\"is-loading\":\"is-empty\")+\"' style='--orbit-image-ratio:\"+esc(slot.recommendedWidth)+\" / \"+esc(slot.recommendedHeight)+\"'>\"+previewMedia+\"<div class='orbit-image-draft-badge' hidden>Unsaved replacement</div></div>\"+\n      \"<div class='orbit-image-specs'><span><strong>Current live size</strong>\"+exactSize+\"</span><span><strong>Required ratio</strong>\"+esc(slot.aspectLabel)+\"</span><span><strong>Saved file</strong>\"+(slot.hasManagedImage?esc((slot.width||\"?\")+\" \u00D7 \"+(slot.height||\"?\")+\" \u00B7 \"+formatBytesV728(slot.sizeBytes)):\"None\")+\"</span></div>\"+\n      \"<small class='orbit-image-ratio-guidance'>Use \"+exactSize+\" for an exact replacement. A larger image with the same aspect ratio is also suitable and will preserve the current layout.</small>\"+\n      \"<label class='orbit-image-file-picker'>Choose replacement<input type='file' accept='image/jpeg,image/png,image/webp' data-website-image-file='\"+esc(slot.key)+\"'></label>\"+\n      \"<div class='orbit-image-upload-message' data-image-message='\"+esc(slot.key)+\"'>JPG, PNG or WebP. Maximum 8 MB.</div>\"+\n      \"<div class='orbit-action-row'><button type='button' data-save-website-image='\"+esc(slot.key)+\"' disabled>Publish to Live Site</button><button type='button' class='secondary' data-clear-website-image='\"+esc(slot.key)+\"' disabled>Clear Selection</button><button type='button' class='secondary' data-restore-website-image='\"+esc(slot.key)+\"' \"+(slot.hasPreviousImage?\"\":\"disabled\")+\">Restore Previous</button></div>\"+\n      \"<small class='orbit-image-saved-at'>\"+(slot.savedAt?\"Saved \"+esc(prettyDate(slot.savedAt))+\" \u00B7 revision \"+esc(slot.revision):\"No managed replacement saved yet.\")+\"</small></article>\";\n  }\n  async function loadWebsiteImagesV728(button,attempt=0){\n    if(button&&button.id==='refreshWebsiteImagesButton')setLoading(button,true);\n    try{\n      const data=await api('/api/admin/website-images',{timeoutMs:25000,cacheMs:15000});\n      const slots=data.slots||[];websiteImageDraftsV728.clear();\n      const grid=document.getElementById('websiteImagesGrid');if(grid){grid.innerHTML=slots.map(imageSlotCardV728).join('');grid.querySelectorAll('[data-website-image-preview-img]').forEach(function(img){const frame=img.closest('.orbit-website-image-preview');const finish=function(){frame?.classList.remove('is-loading');frame?.classList.add('is-loaded');};if(img.complete&&img.naturalWidth)finish();else{img.addEventListener('load',finish,{once:true});img.addEventListener('error',function(){frame?.classList.remove('is-loading');frame?.classList.add('is-error');},{once:true});}});}\n      const summary=document.getElementById('websiteImagesSummary');if(summary){const saved=slots.filter(s=>s.hasManagedImage).length;summary.innerHTML='<strong>'+saved+' of '+slots.length+' slots have managed previews</strong><span>Hero, final join and membership product images are independent slots even where the live theme currently reuses one file.</span>';}\n      const result=document.getElementById('websiteImagesResult');if(result){result.hidden=true;result.classList.remove('error');}\n      bindWebsiteImagesV728();return slots;\n    }catch(err){\n      if(attempt<2){await new Promise(resolve=>setTimeout(resolve,700*(attempt+1)));return loadWebsiteImagesV728(button,attempt+1);}\n      const result=document.getElementById('websiteImagesResult');if(result){result.hidden=false;result.classList.add('error');result.textContent=err.message||'Could not load website images.';}\n      const grid=document.getElementById('websiteImagesGrid');if(grid)grid.innerHTML=\"<div class='orbit-empty-state orbit-error-state'><strong>Website Images could not load</strong><span>\"+esc(err.message||err)+\"</span><button type='button' class='secondary' id='retryWebsiteImagesButton'>Try again</button></div>\";\n      document.getElementById('retryWebsiteImagesButton')?.addEventListener('click',()=>loadWebsiteImagesV728().catch(()=>{}));throw err;\n    }finally{if(button&&button.id==='refreshWebsiteImagesButton')setLoading(button,false);}\n  }\n  function bindWebsiteImagesV728(){\n    document.querySelectorAll('[data-website-image-file]').forEach(input=>input.addEventListener('change',event=>prepareWebsiteImageV728(event.currentTarget)));\n    document.querySelectorAll('[data-save-website-image]').forEach(btn=>btn.addEventListener('click',()=>saveWebsiteImageV728(btn)));\n    document.querySelectorAll('[data-clear-website-image]').forEach(btn=>btn.addEventListener('click',()=>clearWebsiteImageDraftV728(btn.dataset.clearWebsiteImage)));\n    document.querySelectorAll('[data-restore-website-image]').forEach(btn=>btn.addEventListener('click',()=>restoreWebsiteImageV728(btn)));\n  }\n  function prepareWebsiteImageV728(input){\n    const key=input.dataset.websiteImageFile,file=input.files&&input.files[0],card=input.closest('[data-image-slot]'),message=card?.querySelector('[data-image-message]');if(!file)return;\n    if(!/^image\\/(jpeg|png|webp)$/.test(file.type)){input.value='';if(message)message.textContent='Choose a JPG, PNG or WebP image.';return;}\n    if(file.size>8*1024*1024){input.value='';if(message)message.textContent='This image is larger than the 8 MB limit.';return;}\n    const reader=new FileReader();reader.onload=()=>{const img=new Image();img.onload=()=>{if(img.width<300||img.height<300){if(message)message.textContent='Image is too small. Minimum 300 \u00D7 300 px.';return;}websiteImageDraftsV728.set(key,{dataUrl:reader.result,fileName:file.name,width:img.width,height:img.height,sizeBytes:file.size});const preview=card?.querySelector('.orbit-website-image-preview img');if(preview)preview.src=reader.result;const badge=card?.querySelector('.orbit-image-draft-badge');if(badge)badge.hidden=false;card?.querySelector('[data-save-website-image]')?.removeAttribute('disabled');card?.querySelector('[data-clear-website-image]')?.removeAttribute('disabled');if(message)message.textContent='Ready to save: '+img.width+' \u00D7 '+img.height+' \u00B7 '+formatBytesV728(file.size)+'. This will publish to the live site after saving.';};img.onerror=()=>{if(message)message.textContent='The selected image could not be read.';};img.src=reader.result;};reader.readAsDataURL(file);\n  }\n  function clearWebsiteImageDraftV728(key){websiteImageDraftsV728.delete(key);loadWebsiteImagesV728().catch(err=>setNotice(err.message,true));}\n  async function saveWebsiteImageV728(button){\n    const key=button.dataset.saveWebsiteImage,draft=websiteImageDraftsV728.get(key),card=button.closest('[data-image-slot]'),message=card?.querySelector('[data-image-message]');\n    if(!draft)return;\n    setLoading(button,true);\n    if(message)message.textContent='Saving image and verifying database persistence\u2026';\n    try{\n      const saved=await api('/api/admin/website-images/'+encodeURIComponent(key),{method:'PUT',body:JSON.stringify(draft)});\n      if(!saved?.slot?.hasManagedImage||Number(saved.slot.width)!==Number(draft.width)||Number(saved.slot.height)!==Number(draft.height))throw new Error('Orbit could not verify the saved image. Please try again.');\n      const revision=Number(saved.slot.revision||0);\n      let publicResponse=null;\n      for(let attempt=0;attempt<3;attempt++){\n        if(attempt)await new Promise(resolve=>setTimeout(resolve,500*(attempt+1)));\n        publicResponse=await fetch(API_BASE+'/api/public/website-images/'+encodeURIComponent(key)+'/revision/'+encodeURIComponent(revision)+'?verify='+Date.now(),{method:'HEAD',cache:'no-store',credentials:'omit',mode:'cors'});\n        if(publicResponse.ok&&Number(publicResponse.headers.get('X-Orbit-Image-Revision')||0)===revision&&Number(publicResponse.headers.get('Content-Length')||1)>0)break;\n      }\n      if(!publicResponse?.ok)throw new Error('Image saved but anonymous public delivery returned HTTP '+(publicResponse?.status||'unknown')+'.');\n      if(Number(publicResponse.headers.get('X-Orbit-Image-Revision')||0)!==revision)throw new Error('Image saved but the public route returned the wrong revision.');\n      websiteImageDraftsV728.delete(key);\n      await loadWebsiteImagesV728();\n      const refreshed=document.querySelector('[data-image-slot=\"'+CSS.escape(key)+'\"]');\n      const refreshedMessage=refreshed?.querySelector('[data-image-message]');\n      if(refreshed){const preview=refreshed.querySelector('.orbit-website-image-preview img');if(preview){const refreshedSlot=Object.assign({},saved.slot,{key});preview.src=websiteImageUrlV367(refreshedSlot)||preview.src;}}if(refreshedMessage){refreshedMessage.textContent='\u2713 Saved successfully. Published and verified. Revision '+revision+' is now cached until this image changes again.';refreshedMessage.classList.add('success');}\n      const result=document.getElementById('websiteImagesResult');\n      if(result){result.hidden=false;result.classList.remove('error');result.classList.add('success');result.textContent=(saved.slot.name||'Website image')+' saved and verified successfully.';}\n      setNotice((saved.slot.name||'Website image')+' saved and verified.');\n    }catch(err){\n      if(message){message.textContent=err.message||'The image could not be saved.';message.classList.add('error');}\n      setNotice(err.message,true);\n    }finally{setLoading(button,false);}\n  }\n  async function restoreWebsiteImageV728(button){const key=button.dataset.restoreWebsiteImage;if(!confirm('Restore the previous managed image for this slot? The live website will use the restored image.'))return;setLoading(button,true);try{await api('/api/admin/website-images/'+encodeURIComponent(key)+'/restore',{method:'POST',body:'{}'});setNotice('Previous managed image restored.');await loadWebsiteImagesV728();}catch(err){setNotice(err.message,true);}finally{setLoading(button,false);}}\n\n  document.getElementById(\"refreshWebsiteImagesButton\")?.addEventListener(\"click\",function(){loadWebsiteImagesV728(this).catch(function(err){setNotice(err.message,true);});});\n\n\n  let currentBroadcastIdV73 = '';\n  let currentNewsletterIdV73 = '';\n  let engagementBroadcastsV731 = [];\n  let engagementNewslettersV731 = [];\n  function engagementDateV73(value){ return value ? prettyDate(value) : '\u2014'; }\n  function setEngagementPaneV73(name){\n    state.currentEngagementPane=name;\n    const newsletterMode=name==='newsletters'||name==='subscribers';\n    if(state.currentModule==='engagement'){const route=newsletterMode?'member-newsletters':'member-broadcasts';syncWorkspaceNavigation('engagement',name,route);updateAdminRouteLocationV5991(route,'engagement',name,'replace');}\n    document.querySelectorAll('[data-engagement-pane]').forEach(function(p){p.hidden=p.dataset.engagementPane!==name;});\n    document.querySelectorAll('[data-engagement-tab]').forEach(function(b){\n      const active=b.dataset.engagementTab===name;\n      b.classList.toggle('active',active);\n      b.setAttribute('aria-selected',active?'true':'false');\n    });\n    document.querySelectorAll('[data-newsletter-tabs]').forEach(function(t){t.hidden=!newsletterMode;});\n    const topPane=newsletterMode?'newsletters':'broadcasts';\n    document.querySelectorAll('[data-workspace-group=\"marketing\"] [data-engagement-open]').forEach(function(b){b.classList.toggle('active',b.dataset.engagementOpen===topPane);});\n    const heading=document.getElementById('engagementHeading');\n    const description=document.getElementById('engagementDescription');\n    if(heading)heading.textContent=newsletterMode?'Newsletters':'Broadcasts';\n    if(description)description.textContent=newsletterMode\n      ? 'Create, send and manage Orbit newsletters and subscriber preferences.'\n      : 'Send a clear announcement to members in their Orbit inbox, with optional email delivery.';\n    const sectionLabel=document.getElementById('orbitAdminSectionLabel');\n    if(sectionLabel)sectionLabel.textContent=newsletterMode?'Newsletters':'Broadcasts';\n    if(name==='subscribers')loadSubscribersV731().catch(function(err){setNotice(err.message,true);});\n  }\n  function valV731(id){return document.getElementById(id)?.value||'';}\n  function setValV731(id,value){const el=document.getElementById(id);if(el)el.value=value||'';}\n  function syncBroadcastAudienceV350(){\n    const specific=valV731('broadcastAudience')==='specific';\n    const field=document.getElementById('broadcastSpecificMemberFieldV350');\n    if(field)field.hidden=!specific;\n    const input=document.getElementById('broadcastMemberLookupV350');\n    if(input)input.required=specific;\n  }\n  function broadcastPayloadV731(){return{id:currentBroadcastIdV73,title:valV731('broadcastTitle'),message:valV731('broadcastMessage'),audience:valV731('broadcastAudience'),memberLookup:valV731('broadcastMemberLookupV350'),priority:valV731('broadcastPriority'),expiresAt:valV731('broadcastExpiresAt'),linkLabel:valV731('broadcastLinkLabel'),linkUrl:valV731('broadcastLinkUrl'),emailEnabled:document.getElementById('broadcastEmailEnabled')?.checked===true,status:'draft'};}\n  function newsletterPayloadV731(){return{id:currentNewsletterIdV73,campaignName:valV731('newsletterCampaignName')||'New newsletter',title:valV731('newsletterTitle'),subtitle:valV731('newsletterSubtitle'),heroImageUrl:valV731('newsletterHeroImageUrl'),bodyHtml:valV731('newsletterBodyHtml'),bodyText:valV731('newsletterBodyText'),audience:valV731('newsletterAudience'),scheduleAt:valV731('newsletterScheduleAt'),status:'draft'};}\n  function resetBroadcastV731(){currentBroadcastIdV73='';['broadcastTitle','broadcastMessage','broadcastExpiresAt','broadcastLinkLabel','broadcastLinkUrl','broadcastMemberLookupV350'].forEach(function(id){setValV731(id,'');});setValV731('broadcastAudience','active');syncBroadcastAudienceV350();setValV731('broadcastPriority','normal');const email=document.getElementById('broadcastEmailEnabled');if(email)email.checked=false;document.getElementById('broadcastEditorMode').textContent='New broadcast';document.getElementById('broadcastEditorId').textContent='Not saved';document.getElementById('deleteBroadcastButton').disabled=true;document.getElementById('broadcastResult').textContent='New broadcast ready.';}\n  function openBroadcastV731(id){const x=engagementBroadcastsV731.find(function(row){return row.id===id;});if(!x)return;currentBroadcastIdV73=x.id;setValV731('broadcastTitle',x.title);setValV731('broadcastMessage',x.message);setValV731('broadcastAudience',x.audience||'active');setValV731('broadcastMemberLookupV350',x.member_lookup||'');syncBroadcastAudienceV350();setValV731('broadcastPriority',x.priority||'normal');setValV731('broadcastExpiresAt',x.expires_at?String(x.expires_at).slice(0,10):'');setValV731('broadcastLinkLabel',x.link_label);setValV731('broadcastLinkUrl',x.link_url);const email=document.getElementById('broadcastEmailEnabled');if(email)email.checked=x.email_enabled===true;document.getElementById('broadcastEditorMode').textContent=x.status==='published'?'Published broadcast':'Editing draft';document.getElementById('broadcastEditorId').textContent=x.id;document.getElementById('deleteBroadcastButton').disabled=x.status==='published';document.getElementById('broadcastResult').textContent=x.status==='published'?'Published broadcasts are viewable for audit. Saving creates no duplicate notification until you explicitly publish a new draft.':'Draft opened. Edit any field, then save or publish.';window.scrollTo({top:document.querySelector('[data-engagement-pane=\"broadcasts\"]')?.offsetTop||0,behavior:'smooth'});}\n\n  const orbitNewsletterTemplatesV317 = {\n    \"new-show\": {\n      label:\"New Show Announcement\",\n      title:\"A new Orbit Card Show is coming\",\n      subtitle:\"Save the date. Tickets are now live.\",\n      html:\"<div style='text-align:center;padding:8px 0 18px'><p style='margin:0 0 8px;color:#1487b8;font-weight:800;letter-spacing:.12em;font-size:12px'>NEW SHOW ANNOUNCEMENT</p><h2 style='margin:0;font-size:28px;line-height:1.15;color:#13243d'>[VENUE] \u00B7 [DATE]</h2></div><p>We are excited to confirm the next <strong>Orbit Card Show</strong>.</p><div style='background:#f2f8fc;border-radius:14px;padding:18px 20px;margin:20px 0'><p style='margin:0 0 7px'><strong>\uD83D\uDCCD Where:</strong> [Venue]</p><p style='margin:0 0 7px'><strong>\uD83D\uDCC5 When:</strong> [Date]</p><p style='margin:0'><strong>\u2B50 What to expect:</strong> [Tables / headline features]</p></div><p>[One short, high-energy reason people should come.]</p><p style='text-align:center;margin:28px 0'><a href='[TICKET LINK]' style='display:inline-block;background:#087aa8;color:#fff;text-decoration:none;padding:14px 24px;border-radius:8px;font-weight:800'>VIEW TICKETS &amp; EVENT DETAILS</a></p><p style='color:#687385;font-size:13px'>We will share more vendors, prizes and show-day details as the event gets closer.</p>\",\n      text:\"A new Orbit Card Show is coming\\n\\n[VENUE] \u00B7 [DATE]\\n\\nWhere: [Venue]\\nWhen: [Date]\\nWhat to expect: [Tables / headline features]\\n\\n[One short, high-energy reason people should come.]\\n\\nTickets: [TICKET LINK]\"\n    },\n    \"event-reminder\": {\n      label:\"Show Reminder\",\n      title:\"Orbit Card Show is almost here\",\n      subtitle:\"Everything you need before show day.\",\n      html:\"<div style='text-align:center;padding:8px 0 18px'><p style='margin:0 0 8px;color:#b54708;font-weight:800;letter-spacing:.12em;font-size:12px'>THIS WEEKEND</p><h2 style='margin:0;font-size:28px;color:#13243d'>[VENUE] \u00B7 [DATE]</h2></div><p>Show day is nearly here. <strong>[Short FOMO / vendor / feature message]</strong></p><p style='text-align:center;margin:26px 0'><a href='[TICKET LINK]' style='display:inline-block;background:#087aa8;color:white;text-decoration:none;padding:14px 26px;border-radius:8px;font-weight:800'>GET YOUR TICKETS</a></p><div style='border-top:1px solid #dce5ed;border-bottom:1px solid #dce5ed;padding:18px 0;margin:22px 0'><p><strong>Doors:</strong> [Times]</p><p><strong>Travel / parking:</strong> [Useful information]</p></div><p>See you there.</p>\",\n      text:\"Orbit Card Show is almost here\\n\\nVenue: [Venue]\\nDate: [Date]\\nDoors: [Times]\\n\\n[Short FOMO / vendor / feature message]\\n\\nTickets: [TICKET LINK]\\nTravel / parking: [Useful information]\"\n    },\n    \"new-feature\": {\n      label:\"New Feature\",\n      title:\"Something new has landed at Orbit\",\n      subtitle:\"A new Collectors Club benefit is ready to use.\",\n      html:\"<p style='color:#087aa8;font-weight:800;letter-spacing:.12em;font-size:12px'>NEW MEMBER FEATURE</p><h2 style='font-size:28px;color:#13243d;margin-top:6px'>Meet [FEATURE NAME]</h2><p>We have added <strong>[FEATURE NAME]</strong> to Orbit Collectors Club.</p><p>[Explain the benefit in one clear paragraph focused on what the member gains.]</p><div style='background:#f2f8fc;border-radius:14px;padding:20px;margin:22px 0'><h3 style='margin-top:0;color:#13243d'>Why you\u2019ll use it</h3><ul><li>[Benefit 1]</li><li>[Benefit 2]</li><li>[Benefit 3]</li></ul></div><p style='text-align:center'><a href='[MEMBERS AREA LINK]' style='display:inline-block;background:#087aa8;color:#fff;text-decoration:none;padding:14px 24px;border-radius:8px;font-weight:800'>OPEN THE MEMBERS AREA</a></p>\",\n      text:\"Something new has landed at Orbit\\n\\nMeet [FEATURE NAME]\\n\\n[Explain the benefit.]\\n\\nWhy you'll use it:\\n\u2022 [Benefit 1]\\n\u2022 [Benefit 2]\\n\u2022 [Benefit 3]\\n\\n[MEMBERS AREA LINK]\"\n    },\n    \"prize\": {\n      label:\"Prize Announcement\",\n      title:\"A new Orbit prize has landed\",\n      subtitle:\"Here is what members can win next.\",\n      html:\"<div style='text-align:center'><p style='color:#9a6700;font-weight:900;letter-spacing:.12em;font-size:12px'>PRIZE REVEAL</p><h2 style='font-size:30px;color:#13243d;margin:6px 0 12px'>[PRIZE]</h2><p>[One exciting line explaining why this is a great chase.]</p></div><div style='background:#fff8df;border:1px solid #f1d98a;border-radius:14px;padding:20px;margin:24px 0'><p><strong>Eligibility:</strong> [Who is included and when]</p><p style='margin-bottom:0'><strong>Draw date:</strong> [Date]</p></div><p>[Value / rarity / prize detail]</p><p style='text-align:center'><a href='[PRIZE LINK]' style='display:inline-block;background:#13243d;color:#fff;text-decoration:none;padding:14px 24px;border-radius:8px;font-weight:800'>SEE THE PRIZE</a></p>\",\n      text:\"A new Orbit prize has landed\\n\\nPrize: [PRIZE]\\n[Why this prize is exciting]\\n\\nEligibility: [Who is included and when]\\nDraw date: [Date]\\n\\n[PRIZE LINK]\"\n    },\n    \"winner\": {\n      label:\"Winner News\",\n      title:\"We have an Orbit winner\",\n      subtitle:\"Congratulations to this month\u2019s winner.\",\n      html:\"<div style='text-align:center;padding:6px 0 18px'><p style='color:#087aa8;font-weight:900;letter-spacing:.12em;font-size:12px'>WINNER ANNOUNCEMENT</p><h2 style='font-size:30px;color:#13243d;margin:6px 0'>Congratulations!</h2><p><strong>[WINNER NAME / MEMBER NUMBER]</strong> has won <strong>[PRIZE]</strong>.</p></div><p>[Short winner / draw detail]</p><div style='background:#f2f8fc;border-radius:14px;padding:18px 20px;margin:22px 0;text-align:center'><strong>The next member prize is already on the way.</strong></div><p style='text-align:center'><a href='[PRIZES LINK]' style='display:inline-block;background:#087aa8;color:#fff;text-decoration:none;padding:14px 24px;border-radius:8px;font-weight:800'>SEE CURRENT PRIZES</a></p>\",\n      text:\"We have an Orbit winner\\n\\nCongratulations to [WINNER NAME / MEMBER NUMBER], winner of [PRIZE].\\n\\n[Short winner / draw detail]\\n\\nThe next member prize is already on the way.\\n\\n[PRIZES LINK]\"\n    },\n    \"club-update\": {\n      label:\"Collectors Club Update\",\n      title:\"Your Orbit Collectors Club update\",\n      subtitle:\"What is new, what is coming and what members should know.\",\n      html:\"<p style='color:#087aa8;font-weight:900;letter-spacing:.12em;font-size:12px'>MEMBER UPDATE</p><h2 style='font-size:28px;color:#13243d;margin-top:6px'>Here\u2019s what\u2019s happening at Orbit</h2><div style='border-left:4px solid #20b8e6;padding:2px 0 2px 18px;margin:24px 0'><h3 style='margin:0 0 6px;color:#13243d'>What\u2019s new</h3><p style='margin:0'>[Update 1]</p></div><div style='border-left:4px solid #d4a72c;padding:2px 0 2px 18px;margin:24px 0'><h3 style='margin:0 0 6px;color:#13243d'>Coming next</h3><p style='margin:0'>[Update 2]</p></div><div style='background:#f4f6f8;border-radius:14px;padding:18px 20px;margin:24px 0'><strong>Member reminder</strong><p style='margin-bottom:0'>[Useful reminder / event / prize / fulfilment note]</p></div><p style='text-align:center'><a href='[MEMBERS AREA LINK]' style='display:inline-block;background:#087aa8;color:#fff;text-decoration:none;padding:14px 24px;border-radius:8px;font-weight:800'>OPEN MEMBERS AREA</a></p>\",\n      text:\"Your Orbit Collectors Club update\\n\\nWHAT'S NEW\\n[Update 1]\\n\\nCOMING NEXT\\n[Update 2]\\n\\nMEMBER REMINDER\\n[Useful reminder]\\n\\n[MEMBERS AREA LINK]\"\n    }\n  };\n  const orbitNewsletterTemplateDefaultsV375=JSON.parse(JSON.stringify(orbitNewsletterTemplatesV317));\n  let orbitSelectedNewsletterTemplateV375=\"\", newsletterMasterEditingV542=false;\n  function applyNewsletterTemplateOverridesV375(rows){\n    Object.keys(orbitNewsletterTemplateDefaultsV375).forEach(function(key){orbitNewsletterTemplatesV317[key]=JSON.parse(JSON.stringify(orbitNewsletterTemplateDefaultsV375[key]));});\n    (rows||[]).forEach(function(row){const template=orbitNewsletterTemplatesV317[row.key];if(!template)return;if(row.title)template.title=row.title;if(row.subtitle!==undefined)template.subtitle=row.subtitle||\"\";if(row.html)template.html=row.html;if(row.text!==undefined)template.text=row.text||\"\";});\n  }\n  function syncNewsletterMasterControlsV375(){\n    const selected=Boolean(orbitSelectedNewsletterTemplateV375)&&newsletterMasterEditingV542;\n    const save=document.getElementById(\"saveNewsletterMasterTemplateV375\"),reset=document.getElementById(\"resetNewsletterMasterTemplateV375\");\n    if(save)save.disabled=!selected;if(reset)reset.disabled=!selected;\n  }\n  function newsletterPreviewEscapeV323(value){\n    return String(value===undefined||value===null?\"\":value).replace(/[&<>\"']/g,function(ch){return{\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"}[ch];});\n  }\n  function newsletterPreviewBodyV323(value){\n    return String(value||\"\").replace(/<script[\\s\\S]*?<\\/script>/gi,\"\");\n  }\n  function syncNewsletterReceivedCanvasV327(){\n    const editor=document.getElementById(\"newsletterWysiwyg\");\n    const source=document.getElementById(\"newsletterBodyHtml\");\n    if(editor&&source&&!editor.matches(\":focus\")) editor.innerHTML=source.value||\"\";\n    const title=document.getElementById(\"newsletterCanvasTitle\");\n    const subtitle=document.getElementById(\"newsletterCanvasSubtitle\");\n    const hero=document.getElementById(\"newsletterCanvasHero\");\n    if(title)title.textContent=String(valV731(\"newsletterTitle\")||\"\").trim()||\"Your newsletter subject\";\n    if(subtitle)subtitle.textContent=String(valV731(\"newsletterSubtitle\")||\"\").trim()||\"Preview text will appear here.\";\n    const heroUrl=String(valV731(\"newsletterHeroImageUrl\")||\"\").trim();\n    if(hero){hero.hidden=!heroUrl;if(heroUrl)hero.src=heroUrl;}\n  }\n  function persistNewsletterCanvasV327(){\n    const editor=document.getElementById(\"newsletterWysiwyg\");\n    const source=document.getElementById(\"newsletterBodyHtml\");\n    if(editor&&source&&!editor.hidden)source.value=editor.innerHTML;\n    updateNewsletterStudioV323();\n  }\n  window.orbitV75SyncNewsletterEditor=syncNewsletterReceivedCanvasV327;\n\n  function newsletterInsertHtmlV327(html){\n    const editor=document.getElementById(\"newsletterWysiwyg\");\n    if(!editor)return;\n    editor.focus();\n    document.execCommand(\"insertHTML\",false,html);\n    persistNewsletterCanvasV327();\n  }\n  function insertNewsletterBlockV327(type){\n    if(type===\"text\")return newsletterInsertHtmlV327(\"<p>Write your message here.</p>\");\n    if(type===\"heading\")return newsletterInsertHtmlV327(\"<h2 style='color:#13243d;font-size:26px;line-height:1.2'>Your heading</h2>\");\n    if(type===\"button\")return newsletterInsertHtmlV327(\"<p style='text-align:center;margin:26px 0'><a href='https://' style='display:inline-block;background:#087aa8;color:#fff;text-decoration:none;padding:14px 24px;border-radius:8px;font-weight:800'>BUTTON TEXT</a></p>\");\n    if(type===\"divider\")return newsletterInsertHtmlV327(\"<hr style='border:0;border-top:1px solid #dce5ed;margin:26px 0'>\");\n    if(type===\"spacer\")return newsletterInsertHtmlV327(\"<div style='height:28px;line-height:28px'>&nbsp;</div>\");\n    if(type===\"columns\")return newsletterInsertHtmlV327(\"<table role='presentation' width='100%' cellspacing='0' cellpadding='0' style='border-collapse:collapse;margin:20px 0'><tr><td width='50%' valign='top' style='padding:14px;background:#f2f8fc'><strong>Column one</strong><p>Add content here.</p></td><td width='4%'></td><td width='46%' valign='top' style='padding:14px;background:#f7f7f7'><strong>Column two</strong><p>Add content here.</p></td></tr></table>\");\n    if(type===\"image\"){\n      const url=prompt(\"Paste the public image URL to insert:\");\n      if(url&&/^https?:\\/\\//i.test(url.trim()))return newsletterInsertHtmlV327(\"<p style='text-align:center;margin:22px 0'><img src='\"+newsletterPreviewEscapeV323(url.trim())+\"' alt='' style='max-width:100%;height:auto;border-radius:12px'></p>\");\n    }\n  }\n  function setNewsletterEditorModeV327(mode){\n    const shell=document.querySelector(\"[data-newsletter-editor-shell]\");\n    if(shell)shell.classList.toggle(\"is-mobile\",mode===\"mobile\");\n    document.querySelectorAll(\"[data-newsletter-editor-mode]\").forEach(function(button){button.classList.toggle(\"active\",button.dataset.newsletterEditorMode===mode);});\n  }\n  function bindNewsletterDesignerV327(){\n    const editor=document.getElementById(\"newsletterWysiwyg\");\n    if(editor&&!editor.dataset.v327Bound){\n      editor.dataset.v327Bound=\"true\";\n      editor.addEventListener(\"input\",persistNewsletterCanvasV327);\n      editor.addEventListener(\"blur\",persistNewsletterCanvasV327);\n    }\n    document.querySelectorAll(\"[data-newsletter-insert]\").forEach(function(button){\n      if(button.dataset.v327Bound)return;button.dataset.v327Bound=\"true\";\n      button.addEventListener(\"click\",function(){insertNewsletterBlockV327(button.dataset.newsletterInsert);});\n    });\n    document.querySelectorAll(\"[data-newsletter-editor-mode]\").forEach(function(button){\n      if(button.dataset.v327Bound)return;button.dataset.v327Bound=\"true\";\n      button.addEventListener(\"click\",function(){setNewsletterEditorModeV327(button.dataset.newsletterEditorMode||\"desktop\");});\n    });\n    document.querySelectorAll(\"[data-wysiwyg-command]\").forEach(function(button){\n      if(button.dataset.v327Bound)return;button.dataset.v327Bound=\"true\";\n      button.addEventListener(\"click\",function(){editor?.focus();document.execCommand(button.dataset.wysiwygCommand,false,null);persistNewsletterCanvasV327();});\n    });\n    document.querySelectorAll(\"[data-wysiwyg-block]\").forEach(function(button){\n      if(button.dataset.v327Bound)return;button.dataset.v327Bound=\"true\";\n      button.addEventListener(\"click\",function(){editor?.focus();document.execCommand(\"formatBlock\",false,button.dataset.wysiwygBlock);persistNewsletterCanvasV327();});\n    });\n    document.querySelectorAll(\"[data-wysiwyg-link]\").forEach(function(button){\n      if(button.dataset.v327Bound)return;button.dataset.v327Bound=\"true\";\n      button.addEventListener(\"click\",function(){const url=prompt(\"Paste the link URL:\",\"https://\");if(url){editor?.focus();document.execCommand(\"createLink\",false,url);persistNewsletterCanvasV327();}});\n    });\n    const toggle=document.getElementById(\"toggleNewsletterHtml\");\n    if(toggle&&!toggle.dataset.v327Bound){\n      toggle.dataset.v327Bound=\"true\";\n      toggle.addEventListener(\"click\",function(){\n        const source=document.getElementById(\"newsletterBodyHtml\");\n        if(!editor||!source)return;\n        const showSource=source.hidden;\n        if(showSource){source.value=editor.innerHTML;editor.hidden=true;source.hidden=false;toggle.textContent=\"Visual\";}\n        else{editor.innerHTML=source.value;source.hidden=true;editor.hidden=false;toggle.textContent=\"HTML\";persistNewsletterCanvasV327();}\n      });\n    }\n    syncNewsletterReceivedCanvasV327();\n  }\n\n  function updateNewsletterStudioV323(){\n    const title=String(valV731(\"newsletterTitle\")||\"\").trim();\n    const subtitle=String(valV731(\"newsletterSubtitle\")||\"\").trim();\n    const hero=String(valV731(\"newsletterHeroImageUrl\")||\"\").trim();\n    const body=String(valV731(\"newsletterBodyHtml\")||\"\").trim();\n    const audience=String(valV731(\"newsletterAudience\")||\"active\");\n    const schedule=String(valV731(\"newsletterScheduleAt\")||\"\").trim();\n    const canvasTitle=document.getElementById(\"newsletterCanvasTitle\");\n    const canvasSubtitle=document.getElementById(\"newsletterCanvasSubtitle\");\n    const canvasHero=document.getElementById(\"newsletterCanvasHero\");\n    if(canvasTitle)canvasTitle.textContent=title||\"Your newsletter subject\";\n    if(canvasSubtitle)canvasSubtitle.textContent=subtitle||\"Preview text will appear here.\";\n    if(canvasHero){canvasHero.hidden=!hero;if(hero)canvasHero.src=hero;}\n\n    const statusMap={\n      audience: audience===\"all\"?\"All subscribed members\":\"Active subscribed members\",\n      from:\"Orbit\",\n      subject:title||\"Needs a subject\",\n      content:body?\"Content ready\":\"Needs content\",\n      send:schedule?(\"Scheduled \"+schedule.replace(\"T\",\" \")):\"Send manually\"\n    };\n    Object.keys(statusMap).forEach(function(key){\n      const status=document.querySelector('[data-newsletter-step-status=\"'+key+'\"]');\n      if(status)status.textContent=statusMap[key];\n    });\n\n    const readiness={\n      audience:Boolean(audience),\n      from:true,\n      subject:Boolean(title),\n      content:Boolean(body),\n      send:Boolean(schedule)\n    };\n    Object.keys(readiness).forEach(function(key){\n      const step=document.querySelector('[data-newsletter-step=\"'+key+'\"]');\n      if(step)step.classList.toggle(\"is-ready\",readiness[key]);\n    });\n    const ready=Object.values(readiness).filter(Boolean).length;\n    const progress=document.getElementById(\"newsletterSetupProgress\");\n    if(progress)progress.textContent=ready+\"/5 ready\";\n    const bar=document.getElementById(\"newsletterSetupProgressBar\");\n    if(bar)bar.style.width=(ready/5*100)+\"%\";\n\n    const iframe=document.getElementById(\"newsletterLivePreview\");\n    if(iframe){\n      const safeTitle=newsletterPreviewEscapeV323(title||\"Your newsletter subject\");\n      const safeSubtitle=newsletterPreviewEscapeV323(subtitle||\"Preview text will appear here.\");\n      const safeHero=hero?newsletterPreviewEscapeV323(hero):\"\";\n      const content=newsletterPreviewBodyV323(body||\"<p>Choose a template or start writing to see the campaign appear here.</p>\");\n      const logoUrl=newsletterPreviewEscapeV323(document.querySelector(\".orbit-newsletter-v327-logo\")?.src||\"\");\n      iframe.srcdoc='<!doctype html><html><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style>'+\n        'html,body{margin:0;background:#eef2f6;font-family:Arial,sans-serif;color:#142033}body{padding:18px}.email{max-width:700px;margin:0 auto;background:#fff;border:1px solid #dce2ea;border-radius:20px;overflow:hidden}.header{padding:28px 32px;background:#07172d;color:#fff}.logo{display:block;max-width:210px;max-height:76px;object-fit:contain;margin-bottom:18px}.eyebrow{font-size:11px;letter-spacing:.18em;color:#74e6ff;font-weight:800}.header h1{font-size:34px;line-height:1.1;margin:9px 0 0}.subtitle{font-size:17px;color:#d7e7f5;margin:10px 0 0}.hero{display:block;width:100%;height:auto}.content{padding:34px;font-size:16px;line-height:1.7}.content h1,.content h2,.content h3{color:#13243d}.content a{color:#087aa8}.footer{padding:20px 34px;border-top:1px solid #e8ebef;color:#687385;font-size:12px}'+\n        '</style></head><body><div class=\"email\"><div class=\"header\">'+\n        (logoUrl?'<img class=\"logo\" src=\"'+logoUrl+'\" alt=\"Orbit Card Show\">':'')+\n        '<div class=\"eyebrow\">ORBIT COLLECTORS CLUB</div><h1>'+safeTitle+'</h1><p class=\"subtitle\">'+safeSubtitle+'</p></div>'+\n        (safeHero?'<img class=\"hero\" src=\"'+safeHero+'\" alt=\"\">':'')+\n        '<div class=\"content\">'+content+'</div><div class=\"footer\">Orbit Collectors Club \u00B7 Subscriber footer and unsubscribe link are added automatically.</div></div></body></html>';\n    }\n  }\n  function setNewsletterTemplateActiveV323(key){\n    orbitSelectedNewsletterTemplateV375=key||\"\";\n    if(!key)newsletterMasterEditingV542=false;\n    document.querySelectorAll(\"[data-newsletter-master-card]\").forEach(card=>card.classList.toggle(\"is-selected\",card.dataset.newsletterMasterCard===key));\n    document.querySelectorAll(\"[data-newsletter-template]\").forEach(function(button){\n      button.classList.toggle(\"is-selected\",Boolean(key)&&button.dataset.newsletterTemplate===key);\n    });\n    syncNewsletterMasterControlsV375();\n  }\n  function setNewsletterPreviewModeV323(mode){\n    const wrap=document.querySelector(\"[data-newsletter-preview-wrap]\");\n    if(wrap)wrap.classList.toggle(\"is-mobile\",mode===\"mobile\");\n    document.querySelectorAll(\"[data-newsletter-preview-mode]\").forEach(function(button){\n      button.classList.toggle(\"active\",button.dataset.newsletterPreviewMode===mode);\n    });\n  }\n  window.orbitV323UpdateNewsletterStudio=updateNewsletterStudioV323;\n\n  document.addEventListener(\"input\",function(event){\n    if(event.target?.closest('[data-engagement-pane=\"newsletters\"]')){\n      setTimeout(updateNewsletterStudioV323,0);\n    }\n  });\n  document.addEventListener(\"change\",function(event){\n    if(event.target?.closest('[data-engagement-pane=\"newsletters\"]')){\n      setTimeout(updateNewsletterStudioV323,0);\n    }\n  });\n  document.querySelectorAll(\"[data-newsletter-preview-mode]\").forEach(function(button){\n    button.addEventListener(\"click\",function(){setNewsletterPreviewModeV323(button.dataset.newsletterPreviewMode||\"desktop\");});\n  });\n  setTimeout(function(){bindNewsletterDesignerV327();updateNewsletterStudioV323();},0);\n\n  function newsletterDraftHasContentV317(){\n    return [\"newsletterTitle\",\"newsletterSubtitle\",\"newsletterBodyHtml\",\"newsletterBodyText\"].some(function(id){return String(valV731(id)||\"\").trim().length>0;});\n  }\n  function applyNewsletterTemplateV317(key,editMaster=false){\n    const template=orbitNewsletterTemplatesV317[key];\n    if(!template)return;\n    if(currentNewsletterIdV73 || newsletterDraftHasContentV317()){\n      if(!confirm(\"Replace the current editor contents with the \u201C\"+template.label+\"\u201D template? A saved newsletter is never deleted, but unsaved edits in the editor will be replaced.\"))return;\n    }\n    currentNewsletterIdV73=\"\";\n    setNewsletterHeroV74(\"\");\n    setValV731(\"newsletterTitle\",template.title);\n    setValV731(\"newsletterSubtitle\",template.subtitle);\n    setValV731(\"newsletterBodyHtml\",template.html);\n    setValV731(\"newsletterBodyText\",template.text);\n    setValV731(\"newsletterAudience\",\"active\");\n    setValV731(\"newsletterScheduleAt\",\"\");\n    const editorId=document.getElementById(\"newsletterEditorId\");\n    const result=document.getElementById(\"newsletterResult\");\n    const status=document.getElementById(\"newsletterTemplateStatus\");\n    if(editorId)editorId.textContent=\"Not saved\";\n    [\"previewNewsletterButton\",\"downloadNewsletterPdfButton\",\"testNewsletterButton\",\"sendNewsletterButton\",\"scheduleNewsletterButton\",\"deleteNewsletterButton\"].forEach(function(id){const el=document.getElementById(id);if(el)el.disabled=true;});\n    const deleteButton=document.getElementById(\"deleteNewsletterButton\");if(deleteButton){deleteButton.textContent=\"Delete Draft\";deleteButton.dataset.newsletterStatus=\"draft\";}if(result)result.textContent=\"Template loaded. Edit it, save the draft, then use Preview or Send Test before scheduling/sending.\";\n    if(status)status.textContent=template.label+\" loaded into a new unsaved draft. The live preview is ready beside the editor.\";\n    newsletterMasterEditingV542=editMaster;\n    setNewsletterTemplateActiveV323(key);\n    if(editMaster){if(status)status.textContent=\"Editing the \u201C\"+template.label+\"\u201D master. Use Save editor as selected master when ready. No campaign has been saved or sent.\";if(editorId)editorId.textContent=\"Master template editing\";}\n    if(window.orbitV75SyncNewsletterEditor)setTimeout(window.orbitV75SyncNewsletterEditor,0);\n    setTimeout(updateNewsletterStudioV323,0);\n    document.getElementById(\"newsletterTitle\")?.focus();\n  }\n\n  function startNewNewsletterV382(){\n    const desiredName=valV731(\"newsletterCampaignName\")||\"New newsletter\";\n    resetNewsletterV731(desiredName);\n    const pane=document.querySelector('[data-engagement-pane=\"newsletters\"]'); if(pane)pane.hidden=false;\n    const result=document.getElementById('newsletterResult'); if(result)result.textContent='New campaign ready. Choose a template or start writing below.';\n    setNotice('New newsletter campaign ready.');\n    const target=document.getElementById('newsletterTitle')||document.querySelector('.orbit-newsletter-v323-builder');\n    if(target){setTimeout(function(){target.scrollIntoView({behavior:'smooth',block:'center'});target.focus?.();},0);}\n  }\n\n  function resetNewsletterV731(campaignName=\"New newsletter\"){\n    currentNewsletterIdV73='';\n    setNewsletterHeroV74('');\n    ['newsletterTitle','newsletterSubtitle','newsletterBodyHtml','newsletterBodyText','newsletterScheduleAt'].forEach(function(id){setValV731(id,'');});\n    setValV731('newsletterAudience','active');\n    setValV731('newsletterCampaignName',campaignName||'New newsletter');\n    document.getElementById('newsletterEditorId').textContent='Not saved';\n    ['previewNewsletterButton','downloadNewsletterPdfButton','testNewsletterButton','sendNewsletterButton','scheduleNewsletterButton','deleteNewsletterButton'].forEach(function(id){const el=document.getElementById(id);if(el)el.disabled=true;});\n    const deleteButton=document.getElementById('deleteNewsletterButton');if(deleteButton){deleteButton.textContent='Delete Draft';deleteButton.dataset.newsletterStatus='draft';}document.getElementById('newsletterResult').textContent='Choose a template or start a new campaign.';\n    const templateStatus=document.getElementById('newsletterTemplateStatus');\n    if(templateStatus)templateStatus.textContent='Preview and send-test remain separate safety steps. Choose a template to load a new unsaved campaign.';\n    setNewsletterTemplateActiveV323('');\n    if(window.orbitV75SyncNewsletterEditor)setTimeout(window.orbitV75SyncNewsletterEditor,0);\n    setTimeout(updateNewsletterStudioV323,0);\n  }\n  function openNewsletterV731(id){\n    const x=engagementNewslettersV731.find(function(row){return row.id===id;});\n    if(!x)return;\n    currentNewsletterIdV73=x.id;\n    setValV731('newsletterCampaignName',x.campaign_name||x.campaignName||x.title||'Newsletter campaign');\n    setValV731('newsletterTitle',x.title);\n    setValV731('newsletterSubtitle',x.subtitle);\n    setNewsletterHeroV74(x.hero_image_url||'');\n    setValV731('newsletterBodyHtml',x.body_html);\n    setValV731('newsletterBodyText',x.body_text);\n    setValV731('newsletterAudience',x.audience||'active');\n    setValV731('newsletterScheduleAt',x.schedule_at?String(x.schedule_at).slice(0,16):'');\n    document.getElementById('newsletterEditorId').textContent=x.id;\n    ['previewNewsletterButton','downloadNewsletterPdfButton','testNewsletterButton','sendNewsletterButton','scheduleNewsletterButton'].forEach(function(id){const el=document.getElementById(id);if(el)el.disabled=false;});\n    const deleteButton=document.getElementById('deleteNewsletterButton');if(deleteButton){deleteButton.disabled=false;deleteButton.textContent=x.status==='sent'?'Remove Sent':'Delete Draft';deleteButton.dataset.newsletterStatus=x.status||'draft';}\n    document.getElementById('newsletterResult').textContent='Campaign opened. Use the live preview, then send a private test before scheduling or sending.';\n    setNewsletterTemplateActiveV323('');\n    if(window.orbitV75SyncNewsletterEditor)setTimeout(window.orbitV75SyncNewsletterEditor,0);\n    setTimeout(updateNewsletterStudioV323,0);\n    window.scrollTo({top:document.querySelector('[data-engagement-pane=\"newsletters\"]')?.offsetTop||0,behavior:'smooth'});\n  }\n  async function loadEngagementV73(button){if(button)setLoading(button,true);try{const results=await Promise.all([api('/api/admin/broadcasts?limit=50'),api('/api/admin/newsletters?limit=50'),api('/api/admin/newsletter-templates')]);engagementBroadcastsV731=results[0].broadcasts||[];engagementNewslettersV731=results[1].newsletters||[];applyNewsletterTemplateOverridesV375(results[2].overrides||[]);const broadcastRow=function(x){return '<tr><td><strong>'+esc(x.title)+'</strong><br><small>'+esc((x.message||'').slice(0,120))+'</small></td><td>'+esc(x.audience||'active')+'</td><td><span class=\"orbit-priority-chip '+esc(x.priority||'normal')+'\">'+esc(x.priority||'normal')+'</span></td><td>'+esc(x.recipient_count||0)+'</td><td>'+esc(engagementDateV73(x.updated_at))+'</td><td><button type=\"button\" class=\"secondary\" data-open-broadcast-v731=\"'+esc(x.id)+'\">'+(x.status==='draft'?'Open / Edit':'View')+'</button></td></tr>';};const drafts=document.getElementById('broadcastDraftsTable');if(drafts)drafts.innerHTML=table(['Title','Audience','Priority','Recipients','Updated','Actions'],engagementBroadcastsV731.filter(x=>x.status==='draft').map(broadcastRow),'No broadcast drafts.');const published=document.getElementById('broadcastPublishedTable');if(published)published.innerHTML=table(['Title','Audience','Priority','Recipients','Published','Actions'],engagementBroadcastsV731.filter(x=>x.status!=='draft').map(broadcastRow),'No published broadcasts.');const nt=document.getElementById('newslettersTable');if(nt)nt.innerHTML=table(['Newsletter','Status','Recipients','Updated','Actions'],engagementNewslettersV731.map(function(x){return '<tr><td><strong>'+esc(x.campaign_name||x.title||'Newsletter campaign')+'</strong><br><small>Subject: '+esc(x.title||'\u2014')+(x.subtitle?' \u00B7 '+esc(x.subtitle):'')+'</small></td><td>'+esc(x.status||'draft')+(x.schedule_at?'<br><small>'+esc(engagementDateV73(x.schedule_at))+'</small>':'')+'</td><td>'+esc(x.recipient_count||0)+'</td><td>'+esc(engagementDateV73(x.updated_at))+'</td><td><button type=\"button\" class=\"secondary\" data-open-newsletter-v731=\"'+esc(x.id)+'\">Open / Edit</button> <a class=\"orbit-button-link\" target=\"_blank\" rel=\"noopener\" href=\"'+adminDownloadUrlV73('/api/admin/newsletters/'+encodeURIComponent(x.id)+'/preview')+'\">Preview</a> '+'<button type=\"button\" class=\"secondary orbit-newsletter-delete-draft-v385\" data-delete-newsletter-v382=\"'+esc(x.id)+'\">'+(x.status==='sent'?'Remove':'Delete')+'</button>'+'</td></tr>';}),'No newsletters yet.');}catch(err){setNotice(err.message,true);}finally{if(button)setLoading(button,false);}}\n  async function saveBroadcastV73(button,quiet){setLoading(button,true);const result=document.getElementById('broadcastResult');try{const data=await api('/api/admin/broadcasts',{method:'POST',body:JSON.stringify(broadcastPayloadV731())});currentBroadcastIdV73=data.broadcast.id;document.getElementById('broadcastEditorMode').textContent='Editing draft';document.getElementById('broadcastEditorId').textContent=data.broadcast.id;document.getElementById('deleteBroadcastButton').disabled=false;if(!quiet){const savedTitle=data.broadcast.title||'Broadcast';resetBroadcastV731();if(result)result.textContent='Draft saved: '+savedTitle+'. It is available in the list below.';}await loadEngagementV73();return data.broadcast;}catch(err){if(result)result.textContent=err.message;throw err;}finally{setLoading(button,false);}}\n  async function publishBroadcastV73(button){if(!(await resolveBroadcastLinkV74()))return;if(!confirm('Save these exact fields and publish this announcement now? In-app notifications are created immediately and optional emails will be sent.'))return;setLoading(button,true);const result=document.getElementById('broadcastResult');try{const saved=await api('/api/admin/broadcasts',{method:'POST',body:JSON.stringify(broadcastPayloadV731())});currentBroadcastIdV73=saved.broadcast.id;const data=await api('/api/admin/broadcasts/'+encodeURIComponent(currentBroadcastIdV73)+'/publish',{method:'POST',body:'{}'});const publishedMessage='Published to '+(data.broadcast.recipient_count||0)+' members. Emails sent: '+(data.broadcast.email_sent_count||0)+', skipped: '+(data.broadcast.email_skipped_count||0)+', failed: '+(data.broadcast.email_failed_count||0)+'.';resetBroadcastV731();if(result)result.textContent=publishedMessage;await Promise.all([loadEngagementV73(),loadCommunications(),loadOperationsV74()]);}catch(err){if(result)result.textContent=err.message;}finally{setLoading(button,false);}}\n  async function deleteBroadcastV731(button){if(!currentBroadcastIdV73||!confirm('Delete this saved draft?'))return;setLoading(button,true);try{await api('/api/admin/broadcasts/'+encodeURIComponent(currentBroadcastIdV73)+'/delete',{method:'POST',body:'{}'});resetBroadcastV731();await loadEngagementV73();}catch(err){setNotice(err.message,true);}finally{setLoading(button,false);}}\n  async function saveNewsletterV73(button,quiet){setLoading(button,true);const result=document.getElementById('newsletterResult');try{const data=await api('/api/admin/newsletters',{method:'POST',body:JSON.stringify(newsletterPayloadV731())});currentNewsletterIdV73=data.newsletter.id;setValV731('newsletterCampaignName',data.newsletter.campaign_name||valV731('newsletterCampaignName')||'Newsletter campaign');document.getElementById('newsletterEditorId').textContent=data.newsletter.id;['previewNewsletterButton','downloadNewsletterPdfButton','testNewsletterButton','sendNewsletterButton','scheduleNewsletterButton','deleteNewsletterButton'].forEach(function(id){const el=document.getElementById(id);if(el)el.disabled=false;});if(result&&!quiet)result.textContent='Newsletter draft saved. It can now be reopened, tested, scheduled or sent.';setTimeout(updateNewsletterStudioV323,0);await loadEngagementV73();return data.newsletter;}catch(err){if(result)result.textContent=err.message;throw err;}finally{setLoading(button,false);}}\n  function adminDownloadUrlV73(path){return API_BASE+path+(path.includes('?')?'&':'?')+'secret='+encodeURIComponent(secret)+adminSessionQueryV329();}\n  async function ensureNewsletterSavedV731(button){const saved=await api('/api/admin/newsletters',{method:'POST',body:JSON.stringify(newsletterPayloadV731())});currentNewsletterIdV73=saved.newsletter.id;return saved.newsletter;}\n  async function testNewsletterV73(button){const email=valV731('newsletterTestEmail');if(!email)return setNotice('Enter the exact test email address for this open newsletter.',true);setLoading(button,true);try{await ensureNewsletterSavedV731(button);const data=await api('/api/admin/newsletters/'+encodeURIComponent(currentNewsletterIdV73)+'/test-send',{method:'POST',body:JSON.stringify({email:email})});document.getElementById('newsletterResult').textContent='Test of \u201C'+valV731('newsletterTitle')+'\u201D sent only to '+email+'. Sent: '+data.result.sent+', failed: '+data.result.failed+'.';await Promise.all([loadEngagementV73(),loadCommunications()]);}catch(err){setNotice(err.message,true);}finally{setLoading(button,false);}}\n  async function sendNewsletterV73(button){if(!confirm('Save and send this open newsletter to the selected subscribed audience now?'))return;setLoading(button,true);try{await ensureNewsletterSavedV731(button);const data=await api('/api/admin/newsletters/'+encodeURIComponent(currentNewsletterIdV73)+'/send',{method:'POST',body:JSON.stringify({audience:valV731('newsletterAudience')||'active'})});document.getElementById('newsletterResult').textContent='Newsletter sent: '+data.result.sent+'. Unsubscribed skipped: '+data.result.skipped+'. Failed: '+data.result.failed+'.';await Promise.all([loadEngagementV73(),loadCommunications(),loadSubscribersV731()]);}catch(err){setNotice(err.message,true);}finally{setLoading(button,false);}}\n  async function scheduleNewsletterV731(button){const scheduleAt=valV731('newsletterScheduleAt');if(!scheduleAt)return setNotice('Choose a future schedule date and time.',true);if(!confirm('Save and schedule this open newsletter for '+scheduleAt+'?'))return;setLoading(button,true);try{await ensureNewsletterSavedV731(button);const data=await api('/api/admin/newsletters/'+encodeURIComponent(currentNewsletterIdV73)+'/schedule',{method:'POST',body:JSON.stringify({scheduleAt:scheduleAt,audience:valV731('newsletterAudience')||'active'})});document.getElementById('newsletterResult').textContent='Scheduled for '+engagementDateV73(data.newsletter.schedule_at)+'.';await loadEngagementV73();}catch(err){setNotice(err.message,true);}finally{setLoading(button,false);}}\n  async function deleteNewsletterV731(button){if(!currentNewsletterIdV73)return;const status=button?.dataset?.newsletterStatus||engagementNewslettersV731.find(x=>x.id===currentNewsletterIdV73)?.status||'draft';const sent=status==='sent';if(!confirm(sent?'Remove this sent newsletter from Campaign History? Delivery/audit evidence will be retained.':'Delete this newsletter draft permanently?'))return;setLoading(button,true);try{const result=await api('/api/admin/newsletters/'+encodeURIComponent(currentNewsletterIdV73)+'/delete',{method:'POST',body:'{}'});resetNewsletterV731();await loadEngagementV73();setNotice(sent?'Sent newsletter removed from Campaign History; audit evidence retained.':'Newsletter draft deleted.');}catch(err){setNotice(err.message,true);}finally{setLoading(button,false);}}\n  async function deleteNewsletterDraftFromListV382(id,button){\n    if(!id)return;const row=engagementNewslettersV731.find(x=>x.id===id);const sent=row?.status==='sent';\n    if(!confirm(sent?'Remove this sent newsletter from Campaign History? Delivery/audit evidence will be retained.':'Delete this newsletter draft permanently?'))return; setLoading(button,true);\n    try{await api('/api/admin/newsletters/'+encodeURIComponent(id)+'/delete',{method:'POST',body:'{}'}); if(currentNewsletterIdV73===id)resetNewsletterV731(); await loadEngagementV73(); setNotice(sent?'Sent newsletter removed from Campaign History; audit evidence retained.':'Newsletter draft deleted.');}\n    catch(err){setNotice(err.message||err,true);}finally{setLoading(button,false);}\n  }\n  async function loadSubscribersV731(button){if(button)setLoading(button,true);try{const data=await api('/api/admin/newsletter-preferences');const summary=document.getElementById('newsletterSubscriberSummary');if(summary)summary.innerHTML='<div class=\"orbit-communications-status-card configured\"><span>Subscribed</span><strong>'+esc(data.subscribed||0)+'</strong><small>Automatic default for members</small></div><div class=\"orbit-communications-status-card warning\"><span>Unsubscribed</span><strong>'+esc(data.unsubscribed||0)+'</strong><small>Marketing emails skipped</small></div>';const target=document.getElementById('newsletterSubscribersTable');if(target)target.innerHTML=table(['Email','Member','Status','Unsubscribed','Updated'],(data.items||[]).map(function(x){return '<tr><td>'+esc(x.email)+'</td><td>'+esc(x.member_number||'\u2014')+(x.member_status?'<small style=\"display:block\">'+esc(x.member_status)+'</small>':'')+'</td><td><strong>'+(x.marketing_unsubscribed?'Unsubscribed':'Subscribed')+'</strong></td><td>'+esc(engagementDateV73(x.unsubscribed_at))+'</td><td>'+esc(engagementDateV73(x.updated_at))+'</td></tr>';}),'No member email preferences found.');}finally{if(button)setLoading(button,false);}}\n  async function saveNewsletterMasterTemplateV375(button){\n    const key=orbitSelectedNewsletterTemplateV375;if(!key||!newsletterMasterEditingV542)return setNotice('Choose Edit master on a newsletter template first.',true);\n    if(window.orbitV75SyncNewsletterEditor)window.orbitV75SyncNewsletterEditor();\n    const payload={title:valV731('newsletterTitle'),subtitle:valV731('newsletterSubtitle'),html:valV731('newsletterBodyHtml'),text:valV731('newsletterBodyText')};\n    if(!payload.title.trim()||!payload.html.trim())return setNotice('The selected master template needs a subject/title and newsletter content before it can be saved.',true);\n    if(!confirm('Replace the \u201C'+orbitNewsletterTemplatesV317[key].label+'\u201D master template with the exact contents currently in the editor?'))return;\n    setLoading(button,true);try{const data=await api('/api/admin/newsletter-templates/'+encodeURIComponent(key),{method:'POST',body:JSON.stringify(payload),cacheMs:0});Object.assign(orbitNewsletterTemplatesV317[key],{title:data.template.title,subtitle:data.template.subtitle||'',html:data.template.html,text:data.template.text||''});const status=document.getElementById('newsletterTemplateStatus');if(status)status.textContent=orbitNewsletterTemplatesV317[key].label+' master template saved. New newsletters will load this version.';setNotice('Newsletter master template saved \u2713');}catch(err){setNotice(err.message||err,true);}finally{setLoading(button,false);}}\n  async function resetNewsletterMasterTemplateV375(button){\n    const key=orbitSelectedNewsletterTemplateV375;if(!key||!newsletterMasterEditingV542)return;const label=orbitNewsletterTemplatesV317[key].label;if(!confirm('Reset the \u201C'+label+'\u201D master template to the Orbit default?'))return;\n    setLoading(button,true);try{await api('/api/admin/newsletter-templates/'+encodeURIComponent(key)+'/reset',{method:'POST',body:'{}',cacheMs:0});orbitNewsletterTemplatesV317[key]=JSON.parse(JSON.stringify(orbitNewsletterTemplateDefaultsV375[key]));const template=orbitNewsletterTemplatesV317[key];currentNewsletterIdV73='';setNewsletterHeroV74('');setValV731('newsletterTitle',template.title);setValV731('newsletterSubtitle',template.subtitle);setValV731('newsletterBodyHtml',template.html);setValV731('newsletterBodyText',template.text);setNewsletterTemplateActiveV323(key);if(window.orbitV75SyncNewsletterEditor)setTimeout(window.orbitV75SyncNewsletterEditor,0);setTimeout(updateNewsletterStudioV323,0);const status=document.getElementById('newsletterTemplateStatus');if(status)status.textContent=label+' reset to the Orbit default and loaded into the editor.';setNotice('Newsletter master template reset \u2713');}catch(err){setNotice(err.message||err,true);}finally{setLoading(button,false);}}\n  document.getElementById('saveNewsletterMasterTemplateV375')?.addEventListener('click',function(){saveNewsletterMasterTemplateV375(this);});\n  document.getElementById('resetNewsletterMasterTemplateV375')?.addEventListener('click',function(){resetNewsletterMasterTemplateV375(this);});\n  document.querySelectorAll(\"[data-newsletter-template]\").forEach(function(btn){btn.addEventListener(\"click\",function(){applyNewsletterTemplateV317(btn.dataset.newsletterTemplate);});});\n  document.querySelectorAll(\"[data-newsletter-master-edit-v542]\").forEach(button=>button.addEventListener(\"click\",()=>applyNewsletterTemplateV317(button.dataset.newsletterMasterEditV542,true)));\n  let templatePreviewRequestV542=0;\n  async function previewNewsletterTemplateV542(key){\n    const template=orbitNewsletterTemplatesV317[key];if(!template)return;\n    const dialog=$(\"newsletterTemplatePreviewV542\"),frame=$(\"newsletterTemplatePreviewFrameV542\"),request=++templatePreviewRequestV542;\n    text(\"newsletterTemplatePreviewTitleV542\",template.label);text(\"newsletterTemplatePreviewStatusV542\",\"Loading preview\u2026\");frame.hidden=true;frame.removeAttribute(\"srcdoc\");\n    if(!dialog.open)dialog.showModal();\n    try{\n      const result=await api(\"/api/admin/newsletter-template-preview\",{method:\"POST\",body:JSON.stringify({key,title:template.title,subtitle:template.subtitle,html:template.html,text:template.text}),cacheMs:0});\n      if(request!==templatePreviewRequestV542||!dialog.open)return;\n      if(typeof result.html!==\"string\")throw new Error(\"The email preview was not returned.\");\n      // Unique opaque iframe origin, no scripts/forms/navigation. No auth data enters the frame.\n      const policy='<meta http-equiv=\"Content-Security-Policy\" content=\"default-src \\'none\\'; img-src https: data:; style-src \\'unsafe-inline\\'; script-src \\'none\\'; form-action \\'none\\'; base-uri \\'none\\'\">';\n      frame.srcdoc=result.html.replace(/<head[^>]*>/i,match=>match+policy);frame.hidden=false;text(\"newsletterTemplatePreviewStatusV542\",\"Preview of the saved master. No email has been sent.\");\n    }catch(error){if(request===templatePreviewRequestV542)text(\"newsletterTemplatePreviewStatusV542\",\"Preview could not load. Close and try again. \"+error.message);}\n  }\n  document.querySelectorAll(\"[data-newsletter-template-preview-v542]\").forEach(button=>button.addEventListener(\"click\",()=>previewNewsletterTemplateV542(button.dataset.newsletterTemplatePreviewV542)));\n  document.querySelector(\"[data-newsletter-preview-close-v542]\")?.addEventListener(\"click\",()=>{$(\"newsletterTemplatePreviewV542\").close();templatePreviewRequestV542++;});\n  document.querySelectorAll(\"[data-template-preview-width-v542]\").forEach(button=>button.addEventListener(\"click\",()=>{$(\"newsletterTemplatePreviewFrameV542\").style.maxWidth=button.dataset.templatePreviewWidthV542===\"mobile\"?\"375px\":\"760px\";}));\n  document.getElementById(\"newsletterBlankTemplateButton\")?.addEventListener(\"click\",function(){\n    if((currentNewsletterIdV73||newsletterDraftHasContentV317())&&!confirm(\"Clear the current editor and start a new blank newsletter? Saved newsletters remain in history.\"))return;\n    resetNewsletterV731();\n    const status=document.getElementById(\"newsletterTemplateStatus\");\n    if(status)status.textContent=\"Blank newsletter ready. Nothing has been saved or sent.\";\n  });\n  document.querySelectorAll('[data-engagement-tab]').forEach(function(btn){btn.addEventListener('click',function(){setEngagementPaneV73(btn.dataset.engagementTab);});});document.querySelectorAll('[data-broadcast-list-tab]').forEach(function(btn){btn.addEventListener('click',function(){const name=btn.dataset.broadcastListTab;document.querySelectorAll('[data-broadcast-list-tab]').forEach(b=>b.classList.toggle('active',b===btn));document.querySelectorAll('[data-broadcast-list-pane]').forEach(p=>p.hidden=p.dataset.broadcastListPane!==name);});});\n  document.getElementById('refreshEngagementButton')?.addEventListener('click',function(){loadEngagementV73(this);});\n  document.getElementById('refreshSubscribersButton')?.addEventListener('click',function(){loadSubscribersV731(this);});\n\n  // Legacy mission-control compatibility\n  let orbitServerClockBaseV74=0, orbitServerClockPerfV74=0, operationsItemsV74=[], mediaItemsV74=[];\n  function formatServerTimeV74(ms){try{return new Intl.DateTimeFormat('en-GB',{timeZone:'Europe/London',weekday:'short',day:'2-digit',month:'short',year:'numeric',hour:'2-digit',minute:'2-digit',second:'2-digit',hour12:false,timeZoneName:'short'}).format(new Date(ms));}catch(_){return new Date(ms).toLocaleString('en-GB');}}\n  function tickServerTimeV74(){const el=document.getElementById('orbitServerTime');if(!el||!orbitServerClockBaseV74)return;el.textContent='Server: '+formatServerTimeV74(orbitServerClockBaseV74+(performance.now()-orbitServerClockPerfV74));}\n  async function syncServerTimeV74(){const el=document.getElementById('orbitServerTime');try{const data=await api('/api/admin/v74/server-time');orbitServerClockBaseV74=Date.parse(data.iso);orbitServerClockPerfV74=performance.now();tickServerTimeV74();}catch(err){if(el)el.textContent='Server time unavailable';}}\n  function navigateV74(module,search){\n    if(module==='development'){activateModule('development');setDevelopmentTab('verification');window.setTimeout(()=>document.getElementById('orbitVerificationPanel')?.scrollIntoView({behavior:'smooth',block:'start'}),120);return;}activateModule(module);\n    if(module==='automation') setPrizeArea('golden');\n    if(search){setTimeout(function(){\n      const candidates={members:'memberSearchInput',shopify:'shopifyCheckoutSearch',support:'supportSearchInput',shipping:'fulfilmentSearchInput',loyalty:'loyaltyOrderSearch'};\n      const el=document.getElementById(candidates[module]||'');\n      if(el){el.value=search;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));el.focus();}\n    },140);}\n  }\n  let globalSearchTimerV74, globalSearchIndexV83=-1, globalSearchRequestV834=0;\n  const orbitSearchCommandsV834 = [\n    {title:'Home Dashboard',subtitle:'Home \u00B7 Command Centre',keywords:'home dashboard command centre today health',module:'dashboard'},\n    {title:'Task Centre',subtitle:'Home \u00B7 Outstanding operational actions',keywords:'tasks operations inbox urgent actions',module:'operations'},\n    {title:'Members',subtitle:'Customers \u00B7 Search and manage members',keywords:'customers members subscriptions active pending',module:'members'},\n    {title:'Messages',subtitle:'Customers \u00B7 Member support conversations',keywords:'support messages conversations inbox tickets',module:'support'},\n    {title:'Tickets',subtitle:'Sales \u00B7 Ticket administration',keywords:'sales tickets checkout order refund reissue',module:'shopify'},\n    {title:'Events',subtitle:'Sales \u00B7 Eventbrite events',keywords:'events eventbrite shows sales',module:'events'},\n    {title:'Fulfilment',subtitle:'Fulfilment \u00B7 Parcels, labels and dispatch',keywords:'shipping parcels labels dispatch monthly loyalty prizes',module:'shipping'},\n    {title:'Box Accounting',subtitle:'Members Club \u00B7 Inventory, costs and box profitability',keywords:'inventory stock packs slabs grading collector bonus accounting parcel cost',module:'box-inventory'},\n    {title:'Monthly Draw',subtitle:'Prizes \u00B7 Draw Automation',keywords:'monthly draw automatic prizes winners schedule',module:'automation',prizeArea:'monthly',drawPane:'automation'},\n    {title:'Golden Tickets',subtitle:'Prizes \u00B7 Golden Ticket administration',keywords:'golden tickets prize claims winners',module:'automation',prizeArea:'golden'},\n    {title:'Live Rewards',subtitle:'Loyalty \u00B7 Published rewards',keywords:'loyalty live rewards points store',module:'loyalty',loyaltyPane:'live'},\n    {title:'Draft Rewards',subtitle:'Loyalty \u00B7 Draft rewards',keywords:'loyalty draft rewards',module:'loyalty',loyaltyPane:'drafts'},\n    {title:'Reward History',subtitle:'Loyalty \u00B7 Reward history',keywords:'loyalty reward history points',module:'loyalty',loyaltyPane:'history'},\n    {title:'Loyalty Orders',subtitle:'Loyalty \u00B7 Reward fulfilment orders',keywords:'loyalty orders fulfilment rewards',module:'loyalty',loyaltyPane:'orders'},\n    {title:'Broadcasts',subtitle:'Marketing \u00B7 Member broadcasts',keywords:'marketing communications broadcasts notifications',module:'engagement',engagementPane:'broadcasts'},\n    {title:'Newsletters',subtitle:'Marketing \u00B7 Email newsletters',keywords:'marketing newsletter email campaigns',module:'engagement',engagementPane:'newsletters'},\n    {title:'Performance Overview',subtitle:'Performance \u00B7 Business overview',keywords:'performance metrics overview analytics',module:'performance'},\n    {title:'Activity',subtitle:'Performance \u00B7 Member and system activity',keywords:'activity audit timeline',module:'activity'},\n    {title:'Reports',subtitle:'Performance \u00B7 Reports',keywords:'reports performance export',module:'reports'},\n    {title:'Website Images',subtitle:'Content \u00B7 Public website images',keywords:'content website images homepage',module:'website-images'},\n    {title:'Monthly Content Images',subtitle:'Content \u00B7 Monthly pack images',keywords:'content monthly images packs',module:'content'},\n    {title:'Media Library',subtitle:'Content \u00B7 Managed images',keywords:'content media library uploads',module:'media'},\n    {title:'Backend Diagnostics',subtitle:'System \u00B7 Backend settings and diagnostics',keywords:'backend health api version diagnostics settings',module:'settings',anchor:'settingsBackendCard'},\n    {title:'MongoDB',subtitle:'System \u00B7 Database connection',keywords:'mongodb mongo database connection latency credentials settings',module:'settings',anchor:'settingsMongoCard'},\n    {title:'Recharge',subtitle:'System \u00B7 Membership billing connection',keywords:'recharge subscription billing settings',module:'settings',anchor:'settingsRechargeCard'},\n    {title:'Scheduler',subtitle:'System \u00B7 Scheduler status and controls',keywords:'scheduler automation jobs cron settings',module:'settings',anchor:'settingsSchedulerCard'},\n    {title:'Eventbrite Connection',subtitle:'System \u00B7 Eventbrite integration',keywords:'eventbrite connection events integration settings',module:'settings',anchor:'settingsEventbriteCard'},\n    {title:'Shopify Connection',subtitle:'System \u00B7 Shopify ticket connection',keywords:'shopify store checkout webhook settings',module:'settings',anchor:'settingsShopifyCard'},\n    {title:'Shipping and Labels',subtitle:'System \u00B7 ShipEngine and label settings',keywords:'shipengine shipping labels postage test mode settings',module:'settings',anchor:'shippingSettingsPanel'},\n    {title:'Email Delivery',subtitle:'System \u00B7 Resend and email settings',keywords:'resend email delivery communications settings',module:'settings',anchor:'settingsResendCard'},\n    {title:'Scanner',subtitle:'System \u00B7 Door-entry scanner diagnostics',keywords:'scanner entry qr diagnostics settings',module:'settings',anchor:'settingsScannerCard'},\n    {title:'Developer & Testing',subtitle:'System \u00B7 Recovery and simulation tools',keywords:'developer testing diagnostics simulation maintenance',module:'testing'}\n  ];\n  function closeGlobalSearchV83(){const input=document.getElementById('orbitGlobalSearch'),box=document.getElementById('orbitGlobalSearchResults');if(box){box.hidden=true;box.innerHTML='';}if(input)input.setAttribute('aria-expanded','false');globalSearchIndexV83=-1;}\n  function selectGlobalSearchResultV83(index){const items=Array.from(document.querySelectorAll('#orbitGlobalSearchResults .orbit-search-result'));if(!items.length)return;globalSearchIndexV83=Math.max(0,Math.min(index,items.length-1));items.forEach((item,i)=>{item.classList.toggle('keyboard-active',i===globalSearchIndexV83);item.setAttribute('aria-selected',i===globalSearchIndexV83?'true':'false');});items[globalSearchIndexV83].scrollIntoView({block:'nearest'});}\n  function commandMatchesV834(q){\n    const terms=q.toLowerCase().split(/\\s+/).filter(Boolean);\n    return orbitSearchCommandsV834.filter(function(item){const hay=(item.title+' '+item.subtitle+' '+item.keywords).toLowerCase();return terms.every(term=>hay.includes(term));}).slice(0,10);\n  }\n  function searchResultButtonV834(x){\n    return '<button type=\"button\" role=\"option\" aria-selected=\"false\" class=\"orbit-search-result\" data-v74-module=\"'+esc(x.module||'dashboard')+'\" data-v74-search=\"'+esc(x.search||x.id||'')+'\" data-v834-anchor=\"'+esc(x.anchor||'')+'\" data-v834-prize-area=\"'+esc(x.prizeArea||'')+'\" data-v834-draw-pane=\"'+esc(x.drawPane||'')+'\" data-v834-loyalty-pane=\"'+esc(x.loyaltyPane||'')+'\" data-v834-engagement-pane=\"'+esc(x.engagementPane||'')+'\"><span class=\"orbit-search-result-icon\" aria-hidden=\"true\">'+esc(x.icon||'\u2197')+'</span><span><strong>'+esc(x.title||'Result')+'</strong><small>'+esc(x.subtitle||'')+'</small></span></button>';\n  }\n  async function runGlobalSearchV74(){\n    const input=document.getElementById('orbitGlobalSearch'),box=document.getElementById('orbitGlobalSearchResults'),q=(input?.value||'').trim();\n    if(!box||!input)return;\n    if(q.length<2){closeGlobalSearchV83();return;}\n    const requestId=++globalSearchRequestV834;\n    const commands=commandMatchesV834(q);\n    box.hidden=false;input.setAttribute('aria-expanded','true');box.innerHTML='<div class=\"orbit-search-loading\"><span class=\"orbit-mini-spinner\" aria-hidden=\"true\"></span><span>Searching Orbit OS\u2026</span></div>';\n    let dataGroups=[], backendError='';\n    try{const data=await api('/api/admin/v74/search?q='+encodeURIComponent(q)+'&limit=10');dataGroups=Array.isArray(data.groups)?data.groups:[];}catch(err){backendError=err.message||'Live record search is unavailable.';}\n    if(requestId!==globalSearchRequestV834)return;\n    const groups=[];\n    if(commands.length)groups.push({label:'Pages & settings',items:commands});\n    dataGroups.forEach(function(group){if(Array.isArray(group.items)&&group.items.length)groups.push(group);});\n    if(groups.length){\n      box.innerHTML=groups.map(function(g){return '<section class=\"orbit-search-group\"><h4>'+esc(g.label||'Results')+'</h4>'+g.items.map(searchResultButtonV834).join('')+'</section>';}).join('')+(backendError?'<div class=\"orbit-search-warning\">Live records could not be searched: '+esc(backendError)+' <button type=\"button\" class=\"orbit-search-inline-retry\" data-retry-global-search>Retry</button></div>':'');\n    }else if(backendError){\n      box.innerHTML='<div class=\"orbit-empty\"><strong>Search could not load</strong><span>'+esc(backendError)+'</span><button type=\"button\" class=\"secondary\" data-retry-global-search>Retry</button></div>';\n    }else{\n      box.innerHTML='<div class=\"orbit-empty\"><strong>No results found</strong><span>No Orbit records or settings matched \u201C'+esc(q)+'\u201D.</span></div>';\n    }\n    globalSearchIndexV83=-1;\n  }\n  function navigateSearchResultV834(button){\n    const module=button.dataset.v74Module||'dashboard', search=button.dataset.v74Search||'';\n    activateModule(module);\n    if(module==='automation'){\n      setPrizeArea(button.dataset.v834PrizeArea||'monthly');\n      if(button.dataset.v834DrawPane)setDrawPane(button.dataset.v834DrawPane);\n    }\n    if(module==='loyalty'&&button.dataset.v834LoyaltyPane)openLoyaltyPane(button.dataset.v834LoyaltyPane);\n    if(module==='engagement'&&button.dataset.v834EngagementPane)setEngagementPaneV73(button.dataset.v834EngagementPane);\n    const anchor=button.dataset.v834Anchor||'';\n    if(anchor){window.setTimeout(function(){const node=document.getElementById(anchor);if(node){document.querySelectorAll('.orbit-settings-focus').forEach(n=>n.classList.remove('orbit-settings-focus'));node.classList.add('orbit-settings-focus');node.scrollIntoView({behavior:'smooth',block:'start'});}},180);}\n    if(search){window.setTimeout(function(){const candidates={members:'memberSearchInput',shopify:'shopifyCheckoutSearch',support:'supportSearchInput',shipping:'fulfilmentSearchInput',loyalty:'loyaltyOrderSearch'};const el=document.getElementById(candidates[module]||'');if(el){el.value=search;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));el.focus();}},180);}\n  }\n  function operationalTaskItemsV81(items){\n    const seen=new Set();\n    return (items||[]).filter(function(item){const type=String(item.type||'').toLowerCase(),key=[type,item.record||'',item.title||'',item.subtitle||''].join('|');if(seen.has(key))return false;seen.add(key);return true;});\n  }\n  function workspaceTaskItemsV6001(items){\n    const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599()),allowed={\n      'card-shows':new Set(['shopify','events','vendors','advertising','finance','performance','reports','seo']),\n      'members-club':new Set(['members','support','shipping','fulfilment','box-inventory','automation','loyalty','engagement','comms','content','media','website-images']),\n      directory:new Set(['directory']),\n      development:new Set(['development','settings','intelligence','testing','storage','activity'])\n    }[workspace]||new Set();\n    return operationalTaskItemsV81(items).filter(item=>allowed.has(String(item.module||'').toLowerCase()));\n  }\n  function syncOperationsCopyV6001(){\n    const section=document.querySelector('[data-module=\"operations\"]'),workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599()),label=businessWorkspaceConfigV599[workspace]?.label||'Orbit';if(!section)return;\n    const kicker=section.querySelector('.orbit-kicker'),title=section.querySelector('h2'),copy=section.querySelector('.orbit-panel-header p:not(.orbit-kicker)');if(kicker)kicker.textContent=label.toUpperCase()+' TASKS';if(title)title.textContent=label+' Tasks';if(copy)copy.textContent=workspace==='card-shows'?'Only event, ticket, vendor and show issues appear here.':workspace==='members-club'?'Only member, support, fulfilment, billing, prize, loyalty and Club communication issues appear here.':workspace==='directory'?'Only CardShowIndex and Directory issues appear here.':'Only engineering, system and Development work appears here.';\n  }\n  function renderOperationsV74(){\n    syncOperationsCopyV6001();\n    const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599()),type=document.getElementById('operationsTypeFilter')?.value||'',priority=document.getElementById('operationsPriorityFilter')?.value||'',q=(document.getElementById('operationsSearch')?.value||'').toLowerCase();\n    let taskRows=workspaceTaskItemsV6001(operationsItemsV74);\n    if(workspace==='development'&&Number(state.acceptanceReadyCount||0)>0)taskRows.unshift({id:'acceptance-testing',priority:'important',title:state.acceptanceReadyCount+' acceptance test'+(state.acceptanceReadyCount===1?'':'s')+' waiting',type:'acceptance testing',subtitle:'Verify the latest Orbit OS fixes in the built-in queue.',created_at:new Date().toISOString(),module:'development',record:''});\n    const rows=taskRows.filter(function(x){return(!type||x.type===type)&&(!priority||x.priority===priority)&&(!q||JSON.stringify(x).toLowerCase().includes(q));});\n    const target=document.getElementById('operationsInboxTable');\n    if(target)target.innerHTML=table(['Priority','Issue','Customer / detail','Age','Action'],rows.map(function(x){\n      const remove=x.type==='acceptance testing'?'':'<button type=\"button\" class=\"secondary\" data-dismiss-operation=\"'+esc(x.id||'')+'\">Remove</button>';\n      const memberLookup=x.memberLookup||x.record||'';\n      const open=x.type==='delivery'?'<button type=\"button\" class=\"secondary\" data-member-lookup=\"'+esc(memberLookup)+'\">Open Member</button><button type=\"button\" class=\"secondary\" data-delivery-task-repair=\"'+esc(memberLookup)+'\">Validate Address</button>':(x.type==='support'&&x.supportTicketId?'<button type=\"button\" class=\"secondary\" data-v518-task-support=\"'+esc(x.supportTicketId)+'\">Reply</button>':(x.module==='members'&&memberLookup?'<button type=\"button\" class=\"secondary\" data-v517-task-member=\"'+esc(memberLookup)+'\">Open Member</button>':'<button type=\"button\" class=\"secondary\" data-v74-module=\"'+esc(x.module)+'\" data-v74-search=\"'+esc(x.record||'')+'\">Open</button>'));return '<tr><td><span class=\"orbit-priority-chip '+esc(x.priority)+'\">'+esc(x.priority)+'</span></td><td><strong>'+esc(x.title)+'</strong><br><small>'+esc(x.type)+'</small></td><td>'+esc(x.subtitle||'\u2014')+'</td><td>'+esc(engagementDateV73(x.created_at))+'</td><td><div class=\"orbit-action-row\">'+open+remove+'</div></td></tr>';\n    }),rows.length?'No tasks match these filters.':'No unresolved '+(businessWorkspaceConfigV599[workspace]?.label||'workspace')+' tasks.');\n  }\n  async function dismissOperationV255(button){const taskId=button&&button.dataset&&button.dataset.dismissOperation;if(!taskId)return;if(!confirm('Remove this item from the task box? This only dismisses the Admin task; it does not delete the underlying customer or operational record.'))return;setLoading(button,true);try{await api('/api/admin/v74/operations-inbox/'+encodeURIComponent(taskId)+'/dismiss',{method:'POST',body:JSON.stringify({reason:'Dismissed from Admin task box'})});operationsItemsV74=operationsItemsV74.filter(function(x){return String(x.id||'')!==String(taskId);});await loadOperationsV74();setNotice('Task removed from the Admin task box.');}catch(err){setNotice(err.message||'Could not remove task.',true);}finally{setLoading(button,false);}}\n  let operationsRefreshPromiseV539=null;\n  function renderTaskCountV539(){\n    const development=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599())==='development',ready=state.operationsCountLoadedV539&&(!development||state.acceptanceCountLoadedV539);\n    const failed=state.operationsCountErrorV539||(development&&state.acceptanceCountErrorV539);\n    const value=ready?Number(state.operationsTaskCount||0)+(development?Number(state.acceptanceReadyCount||0):0):\"\u2014\";\n    text(\"opsCountTotal\",value);text(\"dashboardTaskTotal\",value);text(\"homeTasksBadgeV539\",value);\n    const label=failed?\"Task count unavailable. Open Tasks to retry.\":ready?(development?\"Development tasks and ready operator acceptance tests. Held tests are excluded.\":\"Tasks scoped to the current workspace.\"):\"Checking tasks\u2026\";\n    text(\"homeTasksStatusV539\",label);\n    const badge=$(\"homeTasksBadgeV539\");if(badge){badge.title=label;badge.setAttribute(\"aria-label\",ready?value+\" outstanding tasks\":label);}\n    return value;\n  }\n  let acceptanceCountReadV542=0;\n  async function refreshAcceptanceTaskCountV296(forceFresh=false){\n    const read=++acceptanceCountReadV542;\n    if(canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599())!=='development'){state.acceptanceReadyCount=0;state.acceptanceCountLoadedV539=true;state.acceptanceCountErrorV539=false;renderOperationsV74();return renderTaskCountV539();}\n    try{\n      const data=await api('/api/admin/development-notes?status='+encodeURIComponent('Ready for Testing')+(forceFresh?\"&refresh=\"+Date.now():\"\"),{cacheMs:0,timeoutMs:12000});\n      if(read!==acceptanceCountReadV542)return;\n      if(!Array.isArray(data.notes))throw new Error(\"Acceptance task count was not returned.\");\n      state.acceptanceReadyCount=data.notes.filter(n=>operatorAcceptanceItemV559(n)&&!acceptanceHeldV500(n)).length;\n      state.acceptanceCountLoadedV539=true;state.acceptanceCountErrorV539=false;\n      renderOperationsV74();return renderTaskCountV539();\n    }catch(error){if(read!==acceptanceCountReadV542)return;state.acceptanceCountLoadedV539=false;state.acceptanceCountErrorV539=true;renderTaskCountV539();throw error;}\n  }\n  async function refreshOperationsWorkspaceV296(button){\n    if(operationsRefreshPromiseV539&&!button)return operationsRefreshPromiseV539;\n    renderTaskCountV539();\n    const promise=Promise.all([loadOperationsV74(button),refreshAcceptanceTaskCountV296()]);\n    operationsRefreshPromiseV539=promise;\n    try{return await promise;}finally{if(operationsRefreshPromiseV539===promise)operationsRefreshPromiseV539=null;renderTaskCountV539();}\n  }\n  let operationsReadV542=0;\n  async function loadOperationsV74(button,forceFresh=false){const read=++operationsReadV542;if(button)setLoading(button,true);try{const data=await api('/api/admin/v74/operations-inbox'+(button?'?reconcile=1':forceFresh?'?refresh='+Date.now():''),{cacheMs:0,timeoutMs:12000});if(read!==operationsReadV542)return;if(!Array.isArray(data.items))throw new Error('Task inbox was not returned.');operationsItemsV74=data.items;state.operationsCountLoadedV539=true;state.operationsCountErrorV539=false;const visible=workspaceTaskItemsV6001(operationsItemsV74);state.operationsTaskCount=visible.length;renderTaskCountV539();document.getElementById('opsCountUrgent').textContent=visible.filter(x=>x.priority==='urgent').length;document.getElementById('opsCountImportant').textContent=visible.filter(x=>x.priority==='important').length;const select=document.getElementById('operationsTypeFilter');if(select){const current=select.value;select.innerHTML='<option value=\"\">All types</option>'+Array.from(new Set(visible.map(x=>x.type))).sort().map(x=>'<option value=\"'+esc(x)+'\">'+esc(x)+'</option>').join('');select.value=current;}renderOperationsV74();if(button&&data.directSignupReconciliation){const r=data.directSignupReconciliation;if(Number(r.verified||0)>0)setNotice('Refreshed tasks \u00B7 '+Number(r.verified||0)+' historical signup/rebill warning'+(Number(r.verified||0)===1?'':'s')+' reviewed and cleared.');else if(r.success===false&&Array.isArray(r.errors)&&r.errors.length)setNotice('Tasks refreshed. Some Shopify billing checks could not be re-read; unresolved warnings were kept.',true);}}catch(err){if(read!==operationsReadV542)return;state.operationsCountLoadedV539=false;state.operationsCountErrorV539=true;renderTaskCountV539();setNotice(err.message,true);}finally{if(button)setLoading(button,false);}}\n  /** Home uses the same read-only sources as Tasks; it never runs billing reconciliation. */\n  async function loadMissionControlV74(){try{return await refreshOperationsWorkspaceV296();}catch(_) {}}\n  function fileToDataUrlV74(file){return new Promise(function(resolve,reject){const reader=new FileReader();reader.onload=()=>resolve(reader.result);reader.onerror=()=>reject(new Error('Could not read the selected image.'));reader.readAsDataURL(file);});}\n  function mediaUrlV74(x){return x.url+(x.url.includes('?')?'&':'?')+'v='+encodeURIComponent(x.updated_at||x.id);}\n  function mediaScopeV6001(){return canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599())==='directory'?'directory':'members-club';}\n  function syncMediaScopeCopyV6001(){const directory=mediaScopeV6001()==='directory';text('mediaLibraryKickerV6001',directory?'CardShowIndex Assets':'Members Club Assets');text('mediaLibraryTitleV6001',directory?'Directory Media':'Media Library');text('mediaLibraryDescriptionV6001',directory?'Event artwork, fallback assets and CardShowIndex media only. Members Club images never appear here.':'Upload and manage Members Club images only. CardShowIndex and Directory media are kept in the Directory workspace.');}\n  function renderMediaV74(){syncMediaScopeCopyV6001();const target=document.getElementById('mediaLibraryGrid');if(!target)return;target.innerHTML=mediaItemsV74.length?mediaItemsV74.map(function(x){return '<article class=\"orbit-media-card\"><img src=\"'+esc(mediaUrlV74(x))+'\" alt=\"\"><div class=\"orbit-media-card-body\"><strong>'+esc(x.title||x.filename)+'</strong><small>'+esc(x.filename)+' \u00B7 '+Math.round(Number(x.size_bytes||0)/1024)+' KB</small><small>'+esc((x.tags||[]).join(', '))+'</small><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-use-media-v74=\"'+esc(x.id)+'\">Use</button><button type=\"button\" class=\"secondary\" data-copy-media-v74=\"'+esc(x.id)+'\">Copy URL</button><button type=\"button\" class=\"secondary\" data-delete-media-v74=\"'+esc(x.id)+'\">Delete</button></div></div></article>';}).join(''):'<div class=\"orbit-empty\">No managed images yet.</div>';}\n  async function loadMediaV74(button){if(button)setLoading(button,true);try{const q=document.getElementById('mediaSearchInput')?.value||'';const data=await api('/api/admin/media?scope='+encodeURIComponent(mediaScopeV6001())+'&q='+encodeURIComponent(q));mediaItemsV74=data.items||[];renderMediaV74();}catch(err){setNotice(err.message,true);}finally{if(button)setLoading(button,false);}}\n  async function uploadMediaV74(button,fileOverride){const input=document.getElementById('mediaUploadInput');const file=fileOverride||input?.files?.[0];if(!file)return setNotice('Choose an image first.',true);if(file.size>5*1024*1024)return setNotice('Images must be 5 MB or smaller.',true);setLoading(button,true);try{const dataUrl=await fileToDataUrlV74(file);const image=new Image();const dimensions=await new Promise(function(resolve){image.onload=()=>resolve({width:image.naturalWidth,height:image.naturalHeight});image.onerror=()=>resolve({});image.src=dataUrl;});const data=await api('/api/admin/media',{method:'POST',body:JSON.stringify({filename:file.name,title:document.getElementById('mediaUploadTitle')?.value||file.name,tags:document.getElementById('mediaUploadTags')?.value||'',scope:mediaScopeV6001(),dataUrl,width:dimensions.width,height:dimensions.height})});document.getElementById('mediaLibraryResult').textContent='Uploaded '+data.item.filename+'. It is now available for reuse.';if(input)input.value='';await loadMediaV74();return data.item;}catch(err){setNotice(err.message,true);throw err;}finally{setLoading(button,false);}}\n  function setNewsletterHeroV74(url){setValV731('newsletterHeroImageUrl',url||'');const img=document.getElementById('newsletterHeroPreview');if(img){img.src=url||'';img.hidden=!url;}}\n  async function resolveBroadcastLinkV74(){const input=document.getElementById('broadcastLinkUrl'),result=document.getElementById('broadcastResult');if(!input||!input.value.trim())return true;try{const data=await api('/api/admin/v74/action-url/resolve',{method:'POST',body:JSON.stringify({url:input.value})});input.value=data.resolved;if(result)result.textContent='Action link resolves to: '+data.resolved;return true;}catch(err){if(result)result.textContent=err.message;input.focus();return false;}}\n  async function applyTicketActionV74(button){const id=(document.getElementById('ticketAdminCheckoutId')?.value||'').trim(),action=document.getElementById('ticketAdminAction')?.value,reason=(document.getElementById('ticketAdminReason')?.value||'').trim();if(!id||!reason)return setNotice('Checkout ID and operator reason are required.',true);if(!confirm('Apply this '+action+' action to checkout '+id+'? This is recorded in the permanent audit history.'))return;setLoading(button,true);try{const payload={action,reason,email:document.getElementById('ticketAdminEmail')?.value||'',ticketType:document.getElementById('ticketAdminType')?.value||''};await api('/api/admin/ticket-checkouts/'+encodeURIComponent(id)+'/admin-action',{method:'POST',body:JSON.stringify(payload)});document.getElementById('ticketAdminResult').textContent='Controlled ticket action completed and recorded: '+action+'.';}catch(err){document.getElementById('ticketAdminResult').textContent=err.message;}finally{setLoading(button,false);}}\n\n  document.getElementById('broadcastAudience')?.addEventListener('change',syncBroadcastAudienceV350);\n  document.getElementById('newBroadcastButton')?.addEventListener('click',resetBroadcastV731);\n  document.getElementById('saveBroadcastButton')?.addEventListener('click',function(){saveBroadcastV73(this);});\n  document.getElementById('publishBroadcastButton')?.addEventListener('click',function(){publishBroadcastV73(this);});\n  document.getElementById('deleteBroadcastButton')?.addEventListener('click',function(){deleteBroadcastV731(this);});\n  document.getElementById('newNewsletterButton')?.addEventListener('click',startNewNewsletterV382);\n  document.getElementById('saveNewsletterButton')?.addEventListener('click',function(){saveNewsletterV73(this);});\n  document.getElementById('previewNewsletterButton')?.addEventListener('click',async function(){try{await ensureNewsletterSavedV731(this);window.open(adminDownloadUrlV73('/api/admin/newsletters/'+encodeURIComponent(currentNewsletterIdV73)+'/preview'),'_blank','noopener');}catch(err){setNotice(err.message,true);}});\n  document.getElementById('downloadNewsletterPdfButton')?.addEventListener('click',async function(){try{await ensureNewsletterSavedV731(this);window.open(adminDownloadUrlV73('/api/admin/newsletters/'+encodeURIComponent(currentNewsletterIdV73)+'/pdf'),'_blank','noopener');}catch(err){setNotice(err.message,true);}});\n  document.getElementById('testNewsletterButton')?.addEventListener('click',function(){testNewsletterV73(this);});\n  document.getElementById('scheduleNewsletterButton')?.addEventListener('click',function(){scheduleNewsletterV731(this);});\n  document.getElementById('sendNewsletterButton')?.addEventListener('click',function(){sendNewsletterV73(this);});\n  document.getElementById('deleteNewsletterButton')?.addEventListener('click',function(){deleteNewsletterV731(this);});\n  document.getElementById('broadcastsTable')?.addEventListener('click',function(e){const b=e.target.closest('[data-open-broadcast-v731]');if(b)openBroadcastV731(b.dataset.openBroadcastV731);});\n  document.getElementById('newslettersTable')?.addEventListener('click',function(e){const del=e.target.closest('[data-delete-newsletter-v382]');if(del){deleteNewsletterDraftFromListV382(del.dataset.deleteNewsletterV382,del);return;}const b=e.target.closest('[data-open-newsletter-v731]');if(b)openNewsletterV731(b.dataset.openNewsletterV731);});\n\n\n  document.getElementById('orbitGlobalSearch')?.addEventListener('input',function(){clearTimeout(globalSearchTimerV74);globalSearchTimerV74=setTimeout(runGlobalSearchV74,250);});\n  document.getElementById('orbitGlobalSearch')?.addEventListener('focus',function(){if((this.value||'').trim().length>=2)runGlobalSearchV74();});\n  document.getElementById('orbitGlobalSearch')?.addEventListener('keydown',function(e){const items=document.querySelectorAll('#orbitGlobalSearchResults .orbit-search-result');if(e.key==='ArrowDown'){e.preventDefault();selectGlobalSearchResultV83(globalSearchIndexV83+1);}else if(e.key==='ArrowUp'){e.preventDefault();selectGlobalSearchResultV83(globalSearchIndexV83-1);}else if(e.key==='Enter'&&items.length){e.preventDefault();items[Math.max(globalSearchIndexV83,0)]?.click();}else if(e.key==='Escape'){closeGlobalSearchV83();}});\n  document.getElementById('orbitGlobalSearchResults')?.addEventListener('click',function(e){const retry=e.target.closest('[data-retry-global-search]');if(retry){runGlobalSearchV74();return;}const b=e.target.closest('[data-v74-module]');if(b){navigateSearchResultV834(b);closeGlobalSearchV83();}});\n  document.addEventListener('keydown',function(e){\n    if((e.ctrlKey||e.metaKey)&&String(e.key).toLowerCase()==='k'){\n      e.preventDefault();\n      const input=document.getElementById('orbitGlobalSearch');\n      if(input){input.focus();input.select();if((input.value||'').trim().length>=2)runGlobalSearchV74();}\n    }\n  });\n\n  document.addEventListener('click',function(e){\n    const health=e.target.closest('[data-health-module]');\n    if(health){\n      activateModule(health.dataset.healthModule||'settings');\n      if(health.dataset.healthDrawPane){ setPrizeArea('monthly'); setDrawPane(health.dataset.healthDrawPane); }\n      window.setTimeout(function(){\n        document.querySelectorAll('.orbit-settings-focus').forEach(function(node){node.classList.remove('orbit-settings-focus');});\n        const anchor=document.getElementById(health.dataset.healthAnchor||'');\n        if(health.dataset.healthModule==='settings' && anchor){setSettingsPane(anchor.id,{scroll:false});}\n        if(anchor){anchor.classList.add('orbit-settings-focus');anchor.scrollIntoView({behavior:'smooth',block:'start'});}\n      },160);\n    }\n    const settingsOverview=e.target.closest('[data-settings-pane]');\n    if(settingsOverview){setSettingsPane('',{scroll:true});}\n    const settingsJump=e.target.closest('[data-settings-jump]');\n    if(settingsJump){\n      const anchor=document.getElementById(settingsJump.dataset.settingsJump||'');\n      document.querySelectorAll('.orbit-settings-focus').forEach(function(node){node.classList.remove('orbit-settings-focus');});\n      if(anchor){setSettingsPane(anchor.id,{scroll:true});}\n    }\n    const integrationRefresh=e.target.closest('[data-integration-refresh]');\n    if(integrationRefresh){\n      setLoading(integrationRefresh,true);\n      const kind=integrationRefresh.dataset.integrationRefresh;\n      let task;\n      if(kind==='shopify') task=loadShopify();\n      else if(kind==='eventbrite') task=loadEventbrite();\n      else if(kind==='resend') task=loadCommunications();\n      else if(kind==='scheduler') task=Promise.all([loadBackendHealth(),loadScheduler()]);\n      else if(kind==='labels') task=Promise.all([loadBackendHealth(),loadShippingConfig()]);\n      else task=loadBackendHealth();\n      Promise.resolve(task).then(function(){setNotice((kind.charAt(0).toUpperCase()+kind.slice(1))+' diagnostics refreshed.');}).catch(function(err){setNotice('Diagnostic failed: '+(err.message||err),true);}).finally(function(){setLoading(integrationRefresh,false);});\n    }\n    const repair=e.target.closest('[data-repair-module]');\n    if(repair){\n      activateModule(repair.dataset.repairModule);\n      if(repair.dataset.repairDrawPane){setPrizeArea('monthly');setDrawPane(repair.dataset.repairDrawPane);}\n      window.setTimeout(function(){\n        const anchor=document.getElementById(repair.dataset.repairAnchor||'');\n        if(anchor)anchor.scrollIntoView({behavior:'smooth',block:'start'});\n      },140);\n    }\n    const homeLink=e.target.closest('[data-home-link-module]');\n    if(homeLink){\n      const module=homeLink.dataset.homeLinkModule,tab=homeLink.dataset.homeLinkTab||\"\";\n      activateModule(module,tab||undefined,{historyMode:\"push\"});\n      window.setTimeout(function(){\n        if(module==='members' && homeLink.dataset.homeMemberStatus){\n          const status=document.getElementById('memberSearchStatus');\n          if(status)status.value=homeLink.dataset.homeMemberStatus;\n          searchMembers(null);\n        }\n        if(module==='shipping' && homeLink.dataset.homeShippingTab){\n          document.querySelector('[data-shipping-tab=\"'+canonicalOrbitSubtab('shipping',homeLink.dataset.homeShippingTab)+'\"]')?.click();\n        }\n        const destination=document.querySelector('.orbit-module.active');\n        destination?.scrollIntoView({behavior:'smooth',block:'start'});\n      },120);\n    }\n    if(!e.target.closest('.orbit-admin-global-search')){const b=document.getElementById('orbitGlobalSearchResults');if(b)b.hidden=true;}\n    const taskMember=e.target.closest('[data-v517-task-member]');if(taskMember){const lookup=taskMember.dataset.v517TaskMember;if(!lookup)return;activateModule('members');window.setTimeout(function(){loadMemberProfile(lookup,taskMember).catch(function(err){setNotice(err.message||String(err),true);});},120);return;}\n    const taskSupport=e.target.closest('[data-v518-task-support]');if(taskSupport){const ticketId=taskSupport.dataset.v518TaskSupport;if(!ticketId)return;activateModule('support');window.setTimeout(function(){loadSupportInbox(null,true).then(function(){return openSupportConversation(ticketId,taskSupport);}).catch(function(err){setNotice(err.message||String(err),true);});},120);return;}\n    const deliveryRepair=e.target.closest('[data-delivery-task-repair]');if(deliveryRepair){const lookup=deliveryRepair.dataset.deliveryTaskRepair;if(!lookup)return;setLoading(deliveryRepair,true);api('/api/admin/members/'+encodeURIComponent(lookup)+'/repair-address',{method:'POST',body:JSON.stringify({source:'all'})}).then(function(result){if(result.afterComplete){setNotice('Delivery address validated. The task will clear automatically.');}else{setNotice('No complete delivery address was found. Open the member profile to review or edit it.',true);}return refreshOperationsWorkspaceV296();}).catch(function(err){setNotice(err.message||String(err),true);}).finally(function(){setLoading(deliveryRepair,false);});return;}\n    const dismiss=e.target.closest('[data-dismiss-operation]');if(dismiss){dismissOperationV255(dismiss);return;}\n    const nav=e.target.closest('[data-v74-module]');if(nav)navigateV74(nav.dataset.v74Module,nav.dataset.v74Search);\n  });\n  document.getElementById('refreshOperationsInbox')?.addEventListener('click',function(){refreshOperationsWorkspaceV296(this);});\n  ['operationsTypeFilter','operationsPriorityFilter','operationsSearch'].forEach(id=>document.getElementById(id)?.addEventListener(id==='operationsSearch'?'input':'change',renderOperationsV74));\n  document.getElementById('refreshMediaLibrary')?.addEventListener('click',function(){loadMediaV74(this);});document.getElementById('searchMediaButton')?.addEventListener('click',function(){loadMediaV74(this);});document.getElementById('uploadMediaButton')?.addEventListener('click',function(){uploadMediaV74(this);});\n  document.getElementById('mediaLibraryGrid')?.addEventListener('click',async function(e){const use=e.target.closest('[data-use-media-v74]'),copy=e.target.closest('[data-copy-media-v74]'),del=e.target.closest('[data-delete-media-v74]');const id=(use||copy||del)?.dataset.useMediaV74||(use||copy||del)?.dataset.copyMediaV74||(use||copy||del)?.dataset.deleteMediaV74;const item=mediaItemsV74.find(x=>x.id===id);if(!item)return;if(use){setNewsletterHeroV74(item.url);activateModule('engagement');document.querySelector('[data-engagement-tab=\"newsletters\"]')?.click();document.getElementById('newsletterResult').textContent='Selected managed image: '+item.title;}if(copy){navigator.clipboard?.writeText(item.url);document.getElementById('mediaLibraryResult').textContent='Managed image URL copied.';}if(del){if(!confirm('Delete this unused managed image? Orbit will block deletion if it is referenced by a newsletter or website slot.'))return;try{await api('/api/admin/media/'+encodeURIComponent(id)+'/delete',{method:'POST',body:'{}'});await loadMediaV74();}catch(err){setNotice(err.message,true);}}});\n  document.getElementById('newsletterHeroUpload')?.addEventListener('change',async function(){const file=this.files?.[0];if(!file)return;try{const item=await uploadMediaV74(document.getElementById('chooseNewsletterMediaButton'),file);setNewsletterHeroV74(item.url);document.getElementById('newsletterResult').textContent='Hero uploaded and selected. Save the newsletter to keep it.';}catch(_){}});\n  document.getElementById('chooseNewsletterMediaButton')?.addEventListener('click',function(){activateModule('media');document.getElementById('mediaLibraryResult').textContent='Choose Use on an image to assign it to the newsletter hero.';loadMediaV74();});document.getElementById('clearNewsletterHeroButton')?.addEventListener('click',function(){setNewsletterHeroV74('');});document.getElementById('newsletterHeroImageUrl')?.addEventListener('input',function(){setNewsletterHeroV74(this.value.trim());});\n  document.getElementById('ticketAdminAction')?.addEventListener('change',function(){document.getElementById('ticketAdminEmailWrap').hidden=this.value!=='recipient';document.getElementById('ticketAdminTypeWrap').hidden=this.value!=='type';});document.getElementById('applyTicketAdminAction')?.addEventListener('click',function(){applyTicketActionV74(this);});\n\n\n  let orbitKnowledgePages = [];\n  let orbitKnowledgeCurrent = null;\n  let orbitKnowledgeLoaded = false;\n  const orbitKnowledgePageCache = new Map();\n  const ORBIT_KNOWLEDGE_INDEX_STORAGE_KEY = \"orbit-intelligence-index-v124\";\n\n  function readOrbitKnowledgeIndexCache(){\n    try{\n      const cached=JSON.parse(sessionStorage.getItem(ORBIT_KNOWLEDGE_INDEX_STORAGE_KEY)||\"null\");\n      if(!cached || !Array.isArray(cached.pages) || !cached.pages.length) return [];\n      return normaliseOrbitKnowledgePages(cached.pages);\n    }catch(_err){return [];}\n  }\n\n  function writeOrbitKnowledgeIndexCache(pages){\n    try{sessionStorage.setItem(ORBIT_KNOWLEDGE_INDEX_STORAGE_KEY,JSON.stringify({savedAt:Date.now(),pages:pages}));}catch(_err){}\n  }\n  let orbitKnowledgeSearchTimer = null;\n\n  function orbitMarkdown(markdown) {\n    const source = String(markdown || \"\").replace(/\\r\\n/g, \"\\n\");\n    const escaped = esc(source);\n    const lines = escaped.split(\"\\n\");\n    let html = \"\", inList = false, inCode = false;\n    function closeList(){ if(inList){ html += \"</ul>\"; inList=false; } }\n    function inline(value){\n      return value\n        .replace(/`([^`]+)`/g, \"<code>$1</code>\")\n        .replace(/\\*\\*([^*]+)\\*\\*/g, \"<strong>$1</strong>\")\n        .replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\" target=\"_blank\" rel=\"noopener\">$1</a>');\n    }\n    lines.forEach(function(line){\n      if(line.trim().startsWith(\"```\")){ closeList(); if(inCode){ html += \"</code></pre>\"; inCode=false; } else { html += \"<pre><code>\"; inCode=true; } return; }\n      if(inCode){ html += line + \"\\n\"; return; }\n      if(/^###\\s+/.test(line)){ closeList(); html += \"<h3>\"+inline(line.replace(/^###\\s+/,\"\"))+\"</h3>\"; return; }\n      if(/^##\\s+/.test(line)){ closeList(); html += \"<h2>\"+inline(line.replace(/^##\\s+/,\"\"))+\"</h2>\"; return; }\n      if(/^#\\s+/.test(line)){ closeList(); html += \"<h1>\"+inline(line.replace(/^#\\s+/,\"\"))+\"</h1>\"; return; }\n      if(/^[-*]\\s+/.test(line)){ if(!inList){ html += \"<ul>\"; inList=true; } html += \"<li>\"+inline(line.replace(/^[-*]\\s+/,\"\"))+\"</li>\"; return; }\n      if(/^\\d+\\.\\s+/.test(line)){ closeList(); html += \"<p class='orbit-numbered-line'>\"+inline(line)+\"</p>\"; return; }\n      if(!line.trim()){ closeList(); return; }\n      closeList(); html += \"<p>\"+inline(line)+\"</p>\";\n    });\n    closeList(); if(inCode) html += \"</code></pre>\";\n    return html;\n  }\n\n\n  // V702 operator-facing reference library. These views are deliberately read-only\n  // and expose only backend-whitelisted engineering documents / incident summaries.\n  const orbitReferenceCacheV702={engineeringManual:null,incidents:null,protectedSystems:null};\n  let orbitKnowledgeViewV702=\"handbook\";\n\n  function orbitReferenceDateV702(value){\n    if(!value)return \"Current release\";\n    const date=new Date(value);return Number.isFinite(date.getTime())?date.toLocaleString(\"en-GB\",{dateStyle:\"medium\",timeStyle:\"short\"}):String(value);\n  }\n  async function loadOrbitReferenceV702(section,force=false){\n    const key=section===\"engineering-manual\"?\"engineeringManual\":section===\"protected-systems\"?\"protectedSystems\":\"incidents\";\n    if(orbitReferenceCacheV702[key]&&!force)return orbitReferenceCacheV702[key];\n    const payload=await api(\"/api/admin/intelligence/reference/\"+encodeURIComponent(section),{cacheMs:0,timeoutMs:20000});\n    const reference=payload?.reference||null;if(!reference)throw new Error(\"Orbit returned no \"+section.replace(/-/g,\" \")+\" data.\");\n    orbitReferenceCacheV702[key]=reference;return reference;\n  }\n  function setKnowledgeViewV702(view){\n    const wanted=view===\"engineering-manual\"?\"engineering-manual\":\"handbook\";orbitKnowledgeViewV702=wanted;\n    document.querySelectorAll(\"[data-reference-knowledge-view-v702]\").forEach(node=>{node.hidden=node.dataset.referenceKnowledgeViewV702!==wanted;});\n    document.querySelectorAll(\"[data-reference-knowledge-open-v702]\").forEach(button=>{const active=button.dataset.referenceKnowledgeOpenV702===wanted;button.classList.toggle(\"active\",active);button.setAttribute(\"aria-selected\",String(active));});\n    try{sessionStorage.setItem(\"orbit-knowledge-view-v702\",wanted);}catch(_e){}\n    if(!state.adminAuthenticated)return;\n    if(wanted===\"engineering-manual\")loadEngineeringManualV702(false).catch(err=>renderReferenceErrorV702(\"orbitEngineeringManualArticleV702\",err));\n    else loadOrbitIntelligence().catch(renderOrbitIntelligenceError);\n  }\n  function renderReferenceErrorV702(id,error){const target=$(id);if(target)target.innerHTML=`<div class=\"orbit-reference-empty-v702 is-error\"><strong>Could not load this reference</strong><span>${esc(error?.message||String(error))}</span></div>`;}\n  function renderEngineeringManualV702(reference,query=\"\"){\n    const article=$(\"orbitEngineeringManualArticleV702\"),nav=$(\"orbitEngineeringManualNavV702\"),summary=$(\"orbitEngineeringManualSummaryV702\"),updated=$(\"orbitEngineeringManualUpdatedV702\"),title=$(\"orbitEngineeringManualTitleV702\");\n    if(title)title.textContent=reference.title||\"Engineering Manual\";if(summary)summary.textContent=`${reference.summary||\"Protected engineering reference.\"} ${Number(reference.sectionCount||0).toLocaleString(\"en-GB\")} sections \u00B7 ${Number(reference.wordCount||0).toLocaleString(\"en-GB\")} words.`;if(updated)updated.textContent=\"Updated \"+orbitReferenceDateV702(reference.updatedAt);\n    if(article){article.innerHTML=orbitMarkdown(reference.markdown||\"\");Array.from(article.querySelectorAll(\"h1,h2,h3\")).forEach((heading,index)=>{heading.id=\"orbit-engineering-heading-v702-\"+index;});}\n    if(nav){const q=String(query||\"\").trim().toLowerCase(),sections=(reference.sections||[]).map((section,index)=>({...section,index})).filter(section=>!q||(`${section.title} ${section.summary}`).toLowerCase().includes(q));nav.innerHTML=sections.length?sections.map(section=>`<button type=\"button\" data-engineering-heading-v702=\"${section.index}\" class=\"level-${Number(section.level||2)}\"><strong>${esc(section.title)}</strong>${section.summary?`<span>${esc(section.summary)}</span>`:\"\"}</button>`).join(\"\"):`<div class=\"orbit-reference-empty-v702\"><strong>No matching manual sections</strong><span>Try a different search term.</span></div>`;}\n  }\n  async function loadEngineeringManualV702(force=false){const reference=await loadOrbitReferenceV702(\"engineering-manual\",force);renderEngineeringManualV702(reference,$(\"orbitEngineeringManualSearchV702\")?.value||\"\");return reference;}\n\n  function incidentStateV702(status){const value=String(status||\"recorded\").toLowerCase();return [\"open\",\"monitoring\"].includes(value)?\"attention\":\"settled\";}\n  function renderIncidentMetricsV702(reference){const target=$(\"orbitIncidentMetricsV702\"),c=reference.counts||{};if(!target)return;target.innerHTML=`<article><small>Recorded incidents</small><strong>${Number(c.total||0).toLocaleString(\"en-GB\")}</strong><span>Across the retained engineering record</span></article><article><small>Open / monitoring</small><strong>${Number(c.openOrMonitoring||0).toLocaleString(\"en-GB\")}</strong><span>Worth checking again</span></article><article><small>Deployment incidents</small><strong>${Number(c.deployment||0).toLocaleString(\"en-GB\")}</strong><span>Captured by deployment forensics</span></article><article><small>Engineering log</small><strong>${Number(c.engineeringLog||0).toLocaleString(\"en-GB\")}</strong><span>Historical lessons and recoveries</span></article>`;}\n  function incidentDetailRowV702(label,value){return value?`<section><h4>${esc(label)}</h4><p>${esc(value)}</p></section>`:\"\";}\n  function renderIncidentsV702(){const reference=orbitReferenceCacheV702.incidents;if(!reference)return;renderIncidentMetricsV702(reference);const q=String($(\"orbitIncidentSearchV702\")?.value||\"\").trim().toLowerCase(),filter=$(\"orbitIncidentStatusV702\")?.value||\"all\";let rows=Array.isArray(reference.incidents)?reference.incidents:[];rows=rows.filter(row=>{const stateValue=incidentStateV702(row.status);if(filter===\"open\"&&stateValue!==\"attention\")return false;if(filter===\"recorded\"&&stateValue!==\"settled\")return false;if(!q)return true;return [row.title,row.version,row.affectedArea,row.symptom,row.rootCause,row.resolution,row.lessons,row.regressionProtection].join(\" \").toLowerCase().includes(q);});const count=$(\"orbitIncidentResultCountV702\");if(count)count.textContent=`${rows.length.toLocaleString(\"en-GB\")} shown`;const target=$(\"orbitIncidentListV702\");if(!target)return;if(!rows.length){target.innerHTML='<div class=\"orbit-reference-empty-v702\"><strong>No incidents match that filter</strong><span>Clear the search or show all statuses.</span></div>';return;}target.innerHTML=rows.map((row,index)=>{const stateValue=incidentStateV702(row.status),badge=stateValue===\"attention\"?\"Open / monitoring\":\"Recorded\",date=row.date?orbitReferenceDateV702(row.date):\"Date not recorded\";return `<details class=\"orbit-incident-card-v702\"${index===0&&stateValue===\"attention\"?\" open\":\"\"}><summary><div class=\"orbit-reference-card-icon-v702\">${stateValue===\"attention\"?\"!\":\"\u2713\"}</div><div class=\"orbit-reference-card-title-v702\"><div><span class=\"orbit-reference-status-v702 ${stateValue}\">${badge}</span>${row.version?`<span class=\"orbit-reference-version-v702\">${esc(row.version)}</span>`:\"\"}</div><strong>${esc(row.title||\"Recorded incident\")}</strong><small>${esc(date)} \u00B7 ${esc(row.affectedArea||row.source||\"Orbit OS\")}</small></div><span class=\"orbit-reference-chevron-v702\">\u2304</span></summary><div class=\"orbit-incident-detail-v702\">${incidentDetailRowV702(\"What happened\",row.symptom)}${incidentDetailRowV702(\"Root cause\",row.rootCause)}${incidentDetailRowV702(\"Recovery / resolution\",row.resolution)}${incidentDetailRowV702(\"Lessons learned\",row.lessons)}${incidentDetailRowV702(\"Regression protection\",row.regressionProtection)}<footer>${esc(row.source||\"Incident record\")}${row.deploymentId?` \u00B7 ${esc(row.deploymentId)}`:\"\"}</footer></div></details>`;}).join(\"\");}\n  async function loadOrbitIncidentsV702(force=false){const reference=await loadOrbitReferenceV702(\"incidents\",force);renderIncidentsV702();return reference;}\n\n  function protectionDocumentTitleV702(file){return String(file||\"\").replace(/^PROTECTED_/,\"\").replace(/\\.md$/i,\"\").replace(/_/g,\" \").replace(/\\b\\w/g,c=>c.toUpperCase());}\n  function renderProtectedSystemsV702(reference){const c=reference.counts||{},metrics=$(\"orbitProtectedMetricsV702\");if(metrics)metrics.innerHTML=`<article><small>Core protected systems</small><strong>${Number(c.registry||0)}</strong><span>Explicit mandatory proof rules</span></article><article><small>Protection manuals</small><strong>${Number(c.protectionDocuments||0)}</strong><span>Detailed guardrails available here</span></article><article><small>Specialist protections</small><strong>${Number(c.specialistProtections||0)}</strong><span>Domain-specific safety rules</span></article><article><small>Visible gaps</small><strong>${Number(c.visibleGaps||0)}</strong><span>${Number(c.visibleGaps||0)?\"Review these mappings\":\"No current mapping gaps\"}</span></article>`;const gaps=$(\"orbitProtectedGapsV702\"),gapRows=Array.isArray(reference.gaps)?reference.gaps:[];if(gaps){gaps.hidden=!gapRows.length;gaps.innerHTML=gapRows.length?`<strong>\u26A0 ${gapRows.length} protection documentation gap${gapRows.length===1?\"\":\"s\"}</strong>${gapRows.map(g=>`<span><b>${esc(g.title)}</b> \u2014 ${esc(g.detail)}</span>`).join(\"\")}`:\"\";}const systems=$(\"orbitProtectedSystemListV702\");if(systems)systems.innerHTML=(reference.systems||[]).map(system=>`<article class=\"orbit-protected-system-card-v702\"><header><span class=\"orbit-reference-status-v702 ${system.documented?\"settled\":\"attention\"}\">${system.documented?\"Protected\":\"Check mapping\"}</span><strong>${esc(system.name)}</strong></header><p>${esc(system.requiredProof||\"Protected proof rule not described.\")}</p><footer>${(system.documentation||[]).length?(system.documentation||[]).map(file=>`<span>\uD83D\uDCC4 ${esc(protectionDocumentTitleV702(file))}</span>`).join(\"\"):\"No dedicated manual mapped\"}</footer></article>`).join(\"\")||'<div class=\"orbit-reference-empty-v702\"><strong>No protected registry records found</strong></div>';const docs=$(\"orbitProtectedDocumentListV702\");if(docs)docs.innerHTML=(reference.documents||[]).map(doc=>`<details class=\"orbit-protected-doc-v702\"><summary><div class=\"orbit-reference-card-icon-v702\">\uD83D\uDEE1</div><div><strong>${esc(doc.title)}</strong><span>${esc(doc.summary||\"Protected system rules\")}</span><small>${esc(doc.file)} \u00B7 ${esc(orbitReferenceDateV702(doc.updatedAt))}</small></div><span class=\"orbit-reference-chevron-v702\">\u2304</span></summary><article class=\"orbit-markdown orbit-reference-markdown-v702\">${orbitMarkdown(doc.markdown||\"\")}</article></details>`).join(\"\");}\n  async function loadProtectedSystemsV702(force=false){const reference=await loadOrbitReferenceV702(\"protected-systems\",force);renderProtectedSystemsV702(reference);return reference;}\n\n  // V552: operational AI copy must read like calm body text across the full\n  // available command-card width. Models sometimes emit long bold spans or place\n  // Markdown headings mid-line; normalise both before rendering while preserving\n  // short labels and intentional emphasis.\n  function orbitIntelligenceBriefMarkdownV552(markdown) {\n    let readable=String(markdown || \"\").replace(/\\r\\n?/g, \"\\n\");\n    readable=readable.replace(/([^\\n])\\s+(#{2,3}\\s+)/g, \"$1\\n\\n$2\");\n    readable=readable.replace(/\\*\\*([^*\\n]{55,})\\*\\*/g,function(_,body){return body.trim();});\n    readable=readable.split(\"\\n\").map(function(line){\n      const trimmed=line.trim(),match=trimmed.match(/^\\*\\*(.+)\\*\\*$/);\n      if(!match || match[1].trim().length<36) return line;\n      const prefix=line.slice(0,line.indexOf(trimmed));\n      return prefix+match[1].trim();\n    }).join(\"\\n\");\n    return orbitMarkdown(readable);\n  }\n  const orbitIntelligenceBriefMarkdownV549=orbitIntelligenceBriefMarkdownV552;\n\n  const orbitKnowledgeCollapsed = new Set();\n  let orbitKnowledgeCollapseInitialised = false;\n\n  function initialiseOrbitKnowledgeCollapse(pages){\n    if(orbitKnowledgeCollapseInitialised) return;\n    orbitKnowledgeCollapsed.clear();\n    Object.keys(groupOrbitKnowledgePages(pages)).forEach(function(category){ orbitKnowledgeCollapsed.add(category); });\n    orbitKnowledgeCollapseInitialised = true;\n  }\n\n  function normaliseOrbitKnowledgePages(pages){\n    const seen=new Set(),clean=[];\n    (Array.isArray(pages)?pages:[]).forEach(function(source){\n      if(!source || typeof source!==\"object\") return;\n      const slug=String(source.slug||\"\").trim();\n      const title=String(source.title||\"\").trim();\n      if(!slug || !title || seen.has(slug)) return;\n      seen.add(slug);\n      const page={...source,slug:slug,title:title,category:String(source.category||\"Other\").trim()||\"Other\",summary:String(source.summary||\"\"),order:Number.isFinite(Number(source.order))?Number(source.order):9999};\n      if(Object.prototype.hasOwnProperty.call(source,\"content\")) page.content=String(source.content||\"\");\n      clean.push(page);\n    });\n    return clean;\n  }\n\n  function groupOrbitKnowledgePages(pages){\n    const groups = {};\n    normaliseOrbitKnowledgePages(pages).forEach(function(page){ (groups[page.category] ||= []).push(page); });\n    return groups;\n  }\n\n  function orbitCategoryIcon(category){\n    const icons={\"Start Here\":\"\u25CE\",\"White Paper\":\"\u25A4\",\"Architecture\":\"\u25C7\",\"Business Rules\":\"\u25A6\",\"Operations\":\"\u2197\",\"Platform Guides\":\"\u25A3\",\"Customer Experience\":\"\u2661\",\"Technical Reference\":\"\u2318\",\"Engineering\":\"\u2699\",\"Governance\":\"\u2713\",\"Release Operations\":\"\u21E7\",\"Orbit Intelligence\":\"\u2726\",\"Business Decisions\":\"\u25C6\",\"Admin Playbooks\":\"\u2611\"};\n    return icons[category]||\"\u2022\";\n  }\n\n  function renderOrbitKnowledgeNav(pages){\n    const target = document.getElementById(\"orbitKnowledgeNav\");\n    if(!target) return;\n    const count=document.getElementById(\"orbitKnowledgeCount\");\n    if(count) count.textContent=pages.length+\" approved page\"+(pages.length===1?\"\":\"s\");\n    if(!pages.length){ target.innerHTML = \"<p class='orbit-muted orbit-knowledge-empty'>No matching chapters.</p>\"; return; }\n    const groups = groupOrbitKnowledgePages(pages);\n    target.innerHTML = Object.keys(groups).map(function(category){\n      const categoryId=\"orbit-cat-\"+category.toLowerCase().replace(/[^a-z0-9]+/g,\"-\");\n      const collapsed=orbitKnowledgeCollapsed.has(category);\n      return \"<section class='orbit-knowledge-group \"+(collapsed?\"is-collapsed\":\"\")+\"' data-orbit-category='\"+esc(category)+\"'>\"+\n        \"<button type='button' class='orbit-knowledge-group-toggle' aria-expanded='\"+(!collapsed)+\"' aria-controls='\"+categoryId+\"'><span class='orbit-knowledge-group-icon'>\"+orbitCategoryIcon(category)+\"</span><strong>\"+esc(category)+\"</strong><span class='orbit-knowledge-group-count'>\"+groups[category].length+\"</span><span class='orbit-knowledge-chevron'>\u2304</span></button>\"+\n        \"<div class='orbit-knowledge-group-pages' id='\"+categoryId+\"'>\"+groups[category].map(function(page){ return \"<button type='button' class='orbit-knowledge-page \"+(orbitKnowledgeCurrent?.slug===page.slug?\"active\":\"\")+\"' data-orbit-page='\"+esc(page.slug)+\"'><span>\"+esc(page.title)+\"</span><small>\"+esc(page.summary||\"\")+\"</small></button>\"; }).join(\"\")+\"</div></section>\";\n    }).join(\"\");\n  }\n\n  function relatedOrbitKnowledgePages(page){\n    if(!page) return [];\n    const words=(page.title+\" \"+page.summary).toLowerCase().split(/[^a-z0-9\u00A3]+/).filter(word=>word.length>4);\n    return normaliseOrbitKnowledgePages(orbitKnowledgePages).filter(candidate=>candidate.slug!==page.slug).map(candidate=>{\n      let score=candidate.category===page.category?4:0;\n      const haystack=(candidate.title+\" \"+candidate.summary).toLowerCase();\n      words.forEach(word=>{if(haystack.includes(word))score+=1;});\n      return {candidate,score};\n    }).filter(item=>item.score>0).sort((a,b)=>b.score-a.score||a.candidate.order-b.candidate.order).slice(0,4).map(item=>item.candidate);\n  }\n\n  function renderOrbitRelatedPages(page){\n    const related=relatedOrbitKnowledgePages(page);\n    if(!related.length) return \"\";\n    return \"<nav class='orbit-related-pages' aria-label='Related handbook pages'><h2>Related pages</h2><div>\"+related.map(item=>\"<button type='button' data-orbit-page='\"+esc(item.slug)+\"'><strong>\"+esc(item.title)+\"</strong><span>\"+esc(item.summary||item.category)+\"</span></button>\").join(\"\")+\"</div></nav>\";\n  }\n\n  async function fetchOrbitKnowledgePage(slug){\n    const key=String(slug||\"\").trim();\n    if(!key) return null;\n    if(orbitKnowledgePageCache.has(key)) return orbitKnowledgePageCache.get(key);\n    const request=api(\"/api/admin/intelligence/pages/\"+encodeURIComponent(key)).then(data=>data.page).catch(err=>{orbitKnowledgePageCache.delete(key);throw err;});\n    orbitKnowledgePageCache.set(key,request);\n    const page=await request;\n    orbitKnowledgePageCache.set(key,page);\n    return page;\n  }\n\n  async function showOrbitKnowledgePage(page){\n    if(!page || typeof page!==\"object\" || !String(page.slug||\"\").trim()){\n      const fallback=normaliseOrbitKnowledgePages(orbitKnowledgePages)[0];\n      if(!fallback) return;\n      page=fallback;\n    }\n    const metadata=page;\n    orbitKnowledgeCurrent = metadata;\n    const category=document.getElementById(\"orbitKnowledgeCategory\"), title=document.getElementById(\"orbitKnowledgeTitle\"), summary=document.getElementById(\"orbitKnowledgeSummary\"), article=document.getElementById(\"orbitKnowledgeArticle\"), edit=document.getElementById(\"editOrbitKnowledgeButton\");\n    if(category) category.textContent=metadata.category||\"Knowledge Base\";\n    if(title) title.textContent=metadata.title||\"Untitled\";\n    if(summary) summary.textContent=metadata.summary||\"\";\n    const updated=document.getElementById(\"orbitKnowledgeUpdated\"); if(updated) updated.textContent=metadata.updatedAt ? \"Updated \"+new Date(metadata.updatedAt).toLocaleDateString(\"en-GB\",{day:\"numeric\",month:\"short\",year:\"numeric\"}) : \"Built-in reference\";\n    if(article) article.innerHTML=\"<div class='orbit-knowledge-loading' role='status'>Loading chapter\u2026</div>\";\n    if(edit) edit.hidden=true;\n    document.querySelectorAll(\"#orbitKnowledgeNav .orbit-knowledge-page\").forEach(function(button){\n      const active=button.dataset.orbitPage===metadata.slug;\n      button.classList.toggle(\"active\",active);\n      button.setAttribute(\"aria-current\",active?\"page\":\"false\");\n    });\n    try{\n      const fullPage=metadata.content!==undefined?metadata:await fetchOrbitKnowledgePage(metadata.slug);\n      if(!fullPage || orbitKnowledgeCurrent?.slug!==metadata.slug) return;\n      orbitKnowledgeCurrent=fullPage;\n      if(article) article.innerHTML=orbitMarkdown(fullPage.content||\"\")+renderOrbitRelatedPages(fullPage);\n      if(edit) edit.hidden=false;\n      const index=orbitKnowledgePages.findIndex(item=>item.slug===fullPage.slug);\n      if(index>=0) orbitKnowledgePages[index]={...orbitKnowledgePages[index],...fullPage};\n      const next=orbitKnowledgePages[index+1];\n      if(next && !orbitKnowledgePageCache.has(next.slug)){\n        const prefetch=()=>fetchOrbitKnowledgePage(next.slug).catch(()=>{});\n        if(\"requestIdleCallback\" in window) window.requestIdleCallback(prefetch,{timeout:1800});\n        else setTimeout(prefetch,900);\n      }\n    }catch(err){\n      if(article) article.innerHTML=\"<p class='error'>Could not load this handbook page: \"+esc(err.message||err)+\"</p>\";\n    }\n  }\n\n  function buildOrbitKnowledgeExport(pages, heading, instruction){\n    const sections=(pages||[]).map(function(page){\n      return \"# \"+page.title+\"\\n\\nCategory: \"+(page.category||\"Knowledge Base\")+\"\\nSummary: \"+(page.summary||\"\")+\"\\n\\n\"+(page.content||\"\");\n    });\n    return [\"# \"+heading,\"\",instruction||\"\",\"\"].concat(sections).join(\"\\n\\n---\\n\\n\");\n  }\n\n  async function copyOrbitText(text, successMessage){\n    await navigator.clipboard.writeText(text);\n    setNotice(successMessage||\"Copied to clipboard.\");\n  }\n\n  async function copyOrbitActivePage(){\n    if(!orbitKnowledgeCurrent) return;\n    await copyOrbitText(buildOrbitKnowledgeExport([orbitKnowledgeCurrent],\"ORBIT OS \u2014 ACTIVE HANDBOOK PAGE\",\"Use this approved page as reference. Verify implemented behaviour against current supplied source files.\"),\"Active handbook page copied.\");\n  }\n\n  async function copyOrbitCompleteHandbook(){\n    const button=document.getElementById(\"copyOrbitCompleteHandbookButton\");\n    const original=button?.textContent;\n    if(button){button.disabled=true;button.textContent=\"Loading handbook\u2026\";}\n    try{\n      const metadata=normaliseOrbitKnowledgePages(orbitKnowledgePages);\n      const fullPages=(await Promise.all(metadata.map(page=>fetchOrbitKnowledgePage(page.slug)))).filter(Boolean);\n      await copyOrbitText(buildOrbitKnowledgeExport(fullPages,\"ORBIT OS \u2014 COMPLETE APPROVED HANDBOOK\",\"Treat this export as operating context. Current supplied live source files remain authoritative for implemented behaviour. Do not guess unseen code.\"),\"Complete approved handbook copied.\");\n    }finally{if(button){button.disabled=false;button.textContent=original||\"Copy full handbook\";}}\n  }\n\n  async function loadOrbitIntelligence(force){\n    if(orbitKnowledgeLoaded && !force){\n      const existing=normaliseOrbitKnowledgePages(orbitKnowledgePages);\n      orbitKnowledgePages=existing;\n      if(!orbitKnowledgeCurrent && existing[0]) await showOrbitKnowledgePage(existing[0]);\n      return;\n    }\n\n    if(!force && !orbitKnowledgePages.length){\n      const cachedPages=normaliseOrbitKnowledgePages(readOrbitKnowledgeIndexCache()).sort(function(a,b){return a.order-b.order||a.title.localeCompare(b.title);});\n      if(cachedPages.length){\n        orbitKnowledgePages=cachedPages;\n        initialiseOrbitKnowledgeCollapse(orbitKnowledgePages);\n        renderOrbitKnowledgeNav(orbitKnowledgePages);\n        const cachedPreferred=cachedPages.find(function(page){return page.content!==undefined;})||cachedPages[0];\n        if(cachedPreferred) showOrbitKnowledgePage(cachedPreferred).catch(function(){});\n      }\n    }\n\n    const data=await api(\"/api/admin/intelligence/index\");\n    const freshPages=normaliseOrbitKnowledgePages(data&&data.pages).sort(function(a,b){return a.order-b.order||a.title.localeCompare(b.title);});\n    if(!freshPages.length) throw new Error(\"The Knowledge Base returned no valid chapters. Refresh again or check the backend handbook index.\");\n    orbitKnowledgePages=freshPages;\n    writeOrbitKnowledgeIndexCache(freshPages);\n    orbitKnowledgeLoaded=true;\n    initialiseOrbitKnowledgeCollapse(orbitKnowledgePages);\n    renderOrbitKnowledgeNav(orbitKnowledgePages);\n    const currentSlug=orbitKnowledgeCurrent&&orbitKnowledgeCurrent.slug?String(orbitKnowledgeCurrent.slug):\"\";\n    const preferred=(currentSlug&&orbitKnowledgePages.find(function(p){return p.slug===currentSlug;}))||orbitKnowledgePages[0]||null;\n    if(preferred && (!orbitKnowledgeCurrent || orbitKnowledgeCurrent.slug!==preferred.slug || force)) await showOrbitKnowledgePage(preferred);\n  }\n\n  function renderOrbitIntelligenceError(err){\n    const answer=document.getElementById(\"orbitIntelligenceAnswer\"), article=document.getElementById(\"orbitKnowledgeArticle\");\n    const message=esc(err?.message||String(err));\n    if(answer && !orbitIntelligenceConversation.length) answer.innerHTML=\"<p class='orbit-chat-warning-v543'>The handbook could not load. You can still ask a question; any unavailable sources will be identified.</p>\";\n    if(article) article.innerHTML=\"<p class='error'>Could not load the Knowledge Base: \"+message+\"</p>\";\n  }\n\n  // V543 conversation concurrency boundary. New conversation invalidates old\n  // responses; Enter/suggested buttons cannot submit a second overlapping turn.\n  let orbitIntelligenceConversation=[],orbitChatBusyV543=false,orbitChatGenerationV543=0,orbitChatProgressV548='';\n  function orbitSuggestedPrompts(){return ['How is website traffic looking?','How did we do at the last show?','How does Upgrade Now work in Orbit OS?','What outstanding development work is still open?'];}\n  function setOrbitChatBusyV543(value,progress){\n    orbitChatBusyV543=value;orbitChatProgressV548=value?String(progress||orbitChatProgressV548||'Checking Orbit\u2026'):'';\n    const button=$('askOrbitIntelligenceButton');if(button){button.disabled=value;button.textContent=value?'Checking Orbit\u2026':'Ask Orbit';}\n    $('orbitIntelligenceAnswer')?.setAttribute('aria-busy',String(value));\n    renderOrbitConversation();\n  }\n  function setOrbitChatProgressV548(message){if(!orbitChatBusyV543)return;orbitChatProgressV548=String(message||'');renderOrbitConversation();}\n  function orbitReplyModeV543(message){return message.mode==='ai'?'AI reply'+(message.model?' \u00B7 '+message.model:''):message.mode==='ai-partial'?'AI reply \u00B7 incomplete':message.mode==='error'?'Request failed':'Read-only fallback \u00B7 AI unavailable';}\n  function renderOrbitConversation(){\n    const answer=$('orbitIntelligenceAnswer');if(!answer)return;\n    if(!orbitIntelligenceConversation.length){answer.innerHTML=\"<p>Ask about Orbit OS, then follow up naturally. Live records are read only; unavailable information will be identified rather than guessed.</p><div class='orbit-chat-suggestions'>\"+orbitSuggestedPrompts().map(q=>\"<button type='button' data-orbit-question='\"+esc(q)+\"'>\"+esc(q)+\"</button>\").join('')+\"</div>\";return;}\n    answer.innerHTML=orbitIntelligenceConversation.map(message=>{\n      const assistant=message.role==='assistant',body=assistant?orbitMarkdown(message.content):'<p>'+esc(message.content)+'</p>';\n      const citations=(message.citations||[]).filter(c=>c&&c.slug&&c.title).slice(0,5).map(c=>\"<button type='button' data-orbit-page='\"+esc(c.slug)+\"'>\"+esc(c.title)+\"</button>\").join('');\n      const sources=(message.sourceStatus||[]).slice(0,12).map(source=>esc(source.label)+(source.status==='available'?'':' (unavailable)')).join(' \u00B7 ');\n      const timing=assistant&&message.timing&&typeof message.timing==='object'?message.timing:null;\n      const timingText=timing?(Number(timing.totalMs||0)/1000).toFixed(1)+'s total \u00B7 '+esc(timing.plannerMode||'planner')+(Number.isFinite(Number(timing.planningMs))?' \u00B7 plan '+(Number(timing.planningMs)/1000).toFixed(1)+'s':'')+(Number.isFinite(Number(timing.sourceReadMs))?' \u00B7 sources '+(Number(timing.sourceReadMs)/1000).toFixed(1)+'s':'')+(Number.isFinite(Number(timing.modelMs))?' \u00B7 answer '+(Number(timing.modelMs)/1000).toFixed(1)+'s':''):'';\n      return \"<article class='orbit-chat-message orbit-chat-\"+(assistant?'assistant':'user')+\"'><strong>\"+(assistant?'Orbit':'You')+\"</strong>\"+(assistant?\"<small class='orbit-chat-mode-v543'>\"+esc(orbitReplyModeV543(message))+\"</small>\":'')+(timingText?\"<small class='orbit-chat-timing-v548'>\"+timingText+\"</small>\":'')+(message.warning?\"<p class='orbit-chat-warning-v543' role='status'>\"+esc(message.warning)+\"</p>\":'')+'<div>'+body+'</div>'+(sources?\"<details class='orbit-chat-source-status-v543'><summary>Read-only sources supplied</summary><p>\"+sources+'</p></details>':'')+(citations?\"<div class='orbit-ai-sources'><strong>Reference pages</strong>\"+citations+'</div>':'')+'</article>';\n    }).join('')+(orbitChatBusyV543?\"<article class='orbit-chat-message orbit-chat-assistant orbit-chat-progress-v548' aria-live='polite'><strong>Orbit</strong><div><span class='orbit-chat-progress-dot-v548' aria-hidden='true'></span>\"+esc(orbitChatProgressV548||'Checking Orbit\u2026')+\"</div></article>\":'');answer.scrollTop=answer.scrollHeight;\n  }\n  async function askOrbitIntelligence(question){\n    const input=$('orbitIntelligenceQuestion'),mode=$('orbitIntelligenceMode'),status=$('orbitIntelligenceConnectionStateV543');\n    const value=String(question||input?.value||'').trim();if(!value||orbitChatBusyV543)return;\n    if(value.length>6000){setNotice('Please keep each question below 6,000 characters.',true);return;}\n    const generation=orbitChatGenerationV543,history=orbitIntelligenceConversation.filter(m=>m.role==='user'||['ai','ai-partial'].includes(m.mode)).slice(-40).map(m=>({role:m.role,content:m.content}));\n    orbitIntelligenceConversation.push({role:'user',content:value});renderOrbitConversation();if(input)input.value='';setOrbitChatBusyV543(true,'Checking what this question needs\u2026');\n    const progressTimers=[setTimeout(()=>{if(generation===orbitChatGenerationV543)setOrbitChatProgressV548('Reading the most relevant Orbit sources\u2026');},1200),setTimeout(()=>{if(generation===orbitChatGenerationV543)setOrbitChatProgressV548('Still working \u2014 this question needs a deeper Orbit check\u2026');},5000)];\n    try{\n      const activeWorkspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599()),workspaceLabel=businessWorkspaceConfigV599[activeWorkspace]?.label||'Orbit OS';\n      const contextualQuestion=`Active Admin workspace: ${workspaceLabel}. Use this only as navigation/business context; the operator's question is:\n\n${value}`;\n      const data=await api('/api/admin/intelligence/ask',{method:'POST',body:JSON.stringify({question:contextualQuestion,history}),timeoutMs:100000,cacheMs:0});\n      if(generation!==orbitChatGenerationV543)return;\n      if(typeof data.answer!=='string'||!data.answer.trim())throw new Error('No readable reply was returned. Please try again.');\n      orbitIntelligenceConversation.push({role:'assistant',content:data.answer,citations:Array.isArray(data.citations)?data.citations:[],mode:data.mode,model:data.model,warning:data.warning,sourceStatus:Array.isArray(data.sourceStatus)?data.sourceStatus:[],timing:data.timing&&typeof data.timing==='object'?data.timing:null});\n      // Local status responses started before this turn must never overwrite a model result.\n      orbitAiStatusGenerationV544++;\n      showOrbitAiConnectionV544({connected:data.mode==='ai',configured:data.connectionStatus!=='not_configured',status:data.connectionStatus||data.mode,\n        title:['ai','ai-partial'].includes(data.mode)?'AI responded':'AI unavailable',message:data.warning||orbitReplyModeV543(data),model:data.model});\n      renderOrbitConversation();\n    }catch(error){\n      if(generation!==orbitChatGenerationV543)return;\n      orbitIntelligenceConversation.push({role:'assistant',mode:'error',content:'That request did not complete. Your question has been restored below so you can try again.',warning:error.message||'Please try again.',citations:[]});\n      if(input&&!input.value)input.value=value;if(mode)mode.textContent='Request failed. No AI answer was returned.';if(status)status.textContent='AI connection not verified';renderOrbitConversation();\n    }finally{progressTimers.forEach(clearTimeout);if(generation===orbitChatGenerationV543)setOrbitChatBusyV543(false);}\n  }\n  function newOrbitConversationV543(){\n    orbitChatGenerationV543++;orbitIntelligenceConversation=[];setOrbitChatBusyV543(false);renderOrbitConversation();\n    const input=$('orbitIntelligenceQuestion');if(input){input.value='';input.focus();}setOrbitIntelligenceTab('assistant');\n  }\n  let orbitAiStatusGenerationV544=0;\n  function showOrbitAiConnectionV544(connection){\n    const panel=$('orbitAiConnectionPanelV544'),setup=$('orbitAiSetupV544'),status=$('orbitIntelligenceConnectionStateV543'),mode=$('orbitIntelligenceMode');\n    const missing=connection.status==='not_configured',verified=connection.connected===true;\n    if(panel)panel.dataset.state=verified?'verified':missing?'not_configured':connection.status||'not_checked';\n    if(status)status.textContent=connection.title||(verified?'AI connection verified':missing?'AI setup required':connection.status==='not_checked'?'AI configured \u00B7 not checked':'AI connection needs attention');\n    if(mode)mode.textContent=String(connection.message||'The connection has not been verified.')+(connection.model?' Model: '+connection.model+'.':'');\n    if(setup){setup.hidden=verified; if(missing)setup.open=true;}\n  }\n  async function loadOrbitAiConfigurationV544(){\n    const generation=++orbitAiStatusGenerationV544;\n    try{const data=await api('/api/admin/intelligence/connection-status',{cacheMs:0,timeoutMs:15000});\n      if(generation!==orbitAiStatusGenerationV544)return;\n      if(!data.connection)throw new Error('No configuration status returned.');\n      showOrbitAiConnectionV544(data.connection);\n    }catch(_){if(generation===orbitAiStatusGenerationV544)showOrbitAiConnectionV544({status:'status_unavailable',message:'Server configuration could not be read. Use Check AI connection to try again.'});}\n  }\n  $('checkOrbitAiConnectionV543')?.addEventListener('click',async function(){\n    const button=this;if(button.disabled)return;\n    const generation=++orbitAiStatusGenerationV544;\n    button.disabled=true;button.textContent='Checking AI\u2026';\n    showOrbitAiConnectionV544({title:'Checking AI connection\u2026',status:'checking',message:'Waiting for a small test reply from the configured model. No customer information is included.'});\n    try{const data=await api('/api/admin/intelligence/connection-check',{method:'POST',body:'{}',timeoutMs:35000,cacheMs:0});\n      if(generation!==orbitAiStatusGenerationV544)return;\n      if(!data.connection)throw new Error('No connection result was returned.');\n      showOrbitAiConnectionV544(data.connection);\n    }catch(_){if(generation===orbitAiStatusGenerationV544)showOrbitAiConnectionV544({status:'check_failed',message:'The connection check did not complete. Please try again.'});}\n    finally{button.disabled=false;button.textContent='Check AI connection';}\n  });\n\n  function openOrbitKnowledgeEditor(){\n    if(!orbitKnowledgeCurrent)return;\n    document.getElementById(\"orbitKnowledgeEditTitle\").value=orbitKnowledgeCurrent.title||\"\";\n    document.getElementById(\"orbitKnowledgeEditSummary\").value=orbitKnowledgeCurrent.summary||\"\";\n    document.getElementById(\"orbitKnowledgeEditContent\").value=orbitKnowledgeCurrent.content||\"\";\n    const result=document.getElementById(\"orbitKnowledgeEditResult\"); if(result)result.hidden=true;\n    document.getElementById(\"orbitKnowledgeEditDialog\")?.showModal();\n  }\n\n  async function saveOrbitKnowledgePage(){\n    if(!orbitKnowledgeCurrent)return;\n    const button=document.getElementById(\"saveOrbitKnowledgeButton\"), result=document.getElementById(\"orbitKnowledgeEditResult\");\n    if(button){button.disabled=true;button.textContent=\"Saving\u2026\";}\n    try{\n      const data=await api(\"/api/admin/intelligence/pages/\"+encodeURIComponent(String(orbitKnowledgeCurrent&&orbitKnowledgeCurrent.slug||\"\")),{method:\"PUT\",body:JSON.stringify({title:document.getElementById(\"orbitKnowledgeEditTitle\").value,summary:document.getElementById(\"orbitKnowledgeEditSummary\").value,content:document.getElementById(\"orbitKnowledgeEditContent\").value})});\n      orbitKnowledgeCurrent=data.page; orbitKnowledgePageCache.set(data.page.slug,data.page); orbitKnowledgePages=orbitKnowledgePages.map(p=>p.slug===data.page.slug?{...p,...data.page}:p); showOrbitKnowledgePage(data.page);\n      if(result){result.hidden=false;result.classList.remove(\"error\");result.textContent=\"Official page saved.\";}\n    }catch(err){if(result){result.hidden=false;result.classList.add(\"error\");result.textContent=err.message||err;}}\n    finally{if(button){button.disabled=false;button.textContent=\"Save approved page\";}}\n  }\n\n  async function copyOrbitThreadBootstrap(){\n    const button=document.getElementById(\"copyOrbitHandoverButton\");\n    const priority=[\"new-thread-bootstrap\",\"source-of-truth-and-release-workflow\",\"system-architecture\",\"membership-lifecycle\",\"customer-journeys\",\"admin-os\",\"acceptance-testing\",\"roadmap\",\"decision-log\",\"release-notes\"];\n    const metadata=normaliseOrbitKnowledgePages(orbitKnowledgePages).sort((a,b)=>{const ai=priority.indexOf(a.slug),bi=priority.indexOf(b.slug);return (ai<0?999:ai)-(bi<0?999:bi)||(a.order||0)-(b.order||0);});\n    if(button){button.disabled=true;button.textContent=\"Building bootstrap\u2026\";}\n    const ordered=await Promise.all(metadata.map(page=>fetchOrbitKnowledgePage(page.slug)));\n    const sections=ordered.map(function(p){return \"## \"+p.title+\"\\nCategory: \"+p.category+\"\\nSummary: \"+(p.summary||\"\")+\"\\n\\n\"+(p.content||\"\");});\n    const text=[\"# ORBIT OS \u2014 NEW THREAD BOOTSTRAP\",\"\",\"Treat this approved Orbit Intelligence export as the operating context. The currently supplied live backend, Shopify theme and Android scanner files remain the sole source of truth for implemented behaviour. Do not guess unseen code. Use replacement-files-only delivery and preserve unrelated functionality.\",\"\"].concat(sections).join(\"\\n\\n---\\n\\n\");\n    try{await navigator.clipboard.writeText(text);if(button){button.textContent=\"Bootstrap copied\";setTimeout(()=>{button.disabled=false;button.textContent=\"Copy thread bootstrap\";},1800);}}catch(err){if(button){button.disabled=false;button.textContent=\"Copy thread bootstrap\";}setNotice(\"Could not copy the bootstrap: \"+(err.message||err),true);}\n  }\n\n  document.getElementById(\"combineSpecialShipmentsButton\")?.addEventListener(\"click\",function(){combineSpecialShipments(this).catch(function(err){setNotice(err.message,true);});});\n  document.getElementById(\"orbitKnowledgeNav\")?.addEventListener(\"click\",function(event){\n    const toggle=event.target.closest(\".orbit-knowledge-group-toggle\");\n    if(toggle){\n      const group=toggle.closest(\"[data-orbit-category]\"),category=group?.dataset.orbitCategory;\n      if(category){\n        const wasCollapsed=orbitKnowledgeCollapsed.has(category);\n        Object.keys(groupOrbitKnowledgePages(orbitKnowledgePages)).forEach(function(name){orbitKnowledgeCollapsed.add(name);});\n        if(wasCollapsed) orbitKnowledgeCollapsed.delete(category);\n        renderOrbitKnowledgeNav(orbitKnowledgePages);\n      }\n      return;\n    }\n    const button=event.target.closest(\"[data-orbit-page]\");\n    if(!button)return;\n    const page=normaliseOrbitKnowledgePages(orbitKnowledgePages).find(function(p){return p.slug===button.dataset.orbitPage;});\n    if(page)showOrbitKnowledgePage(page);\n  });\n  document.getElementById(\"copyOrbitHandoverButton\")?.addEventListener(\"click\",copyOrbitThreadBootstrap);\n  document.getElementById(\"copyOrbitActivePageButton\")?.addEventListener(\"click\",copyOrbitActivePage);\n  document.getElementById(\"copyOrbitCompleteHandbookButton\")?.addEventListener(\"click\",copyOrbitCompleteHandbook);\n  document.getElementById(\"expandOrbitKnowledgeButton\")?.addEventListener(\"click\",function(){\n    const groups=Object.keys(groupOrbitKnowledgePages(orbitKnowledgePages));\n    if(orbitKnowledgeCollapsed.size){orbitKnowledgeCollapsed.clear();this.textContent=\"Collapse all\";}\n    else{groups.forEach(function(name){orbitKnowledgeCollapsed.add(name);});this.textContent=\"Expand all\";}\n    renderOrbitKnowledgeNav(orbitKnowledgePages);\n  });\n\n  // V546 Intelligence Command Centre. Engineering Review is read-only; its\n  // persisted recommendation actions record operator intent only and never\n  // execute code/provider/customer/production changes.\n  let orbitIntelligenceCommandV545=null,orbitIntelligenceCommandBusyV545=false,orbitIntelligenceFindingsV555=[],orbitIntelligenceInvestigationsV555=[];\n  function intelligenceDateV545(value){const time=Date.parse(value||'');return Number.isFinite(time)?new Date(time).toLocaleString('en-GB',{dateStyle:'medium',timeStyle:'short'}):'Not yet';}\n  function intelligencePermissionChipV545(value){const label=String(value||'Read only');return \"<span class='orbit-intelligence-chip-v545' data-permission='\"+esc(label)+\"'>\"+esc(label)+\"</span>\";}\n  function recommendationCardV545(row,compact){\n    if(!row)return '';\n    const status=String(row.status||'new').toLowerCase(),permission=row.permissionLabel||row.permission||'Read only',op=row.operator||{},management=row.management||{},needsOperator=management.operatorActionRequired===true,aiManaged=!needsOperator,disposition=String(management.developmentDisposition||'deferred_pending_evidence').toLowerCase();\n    const recommended=String(op.recommendedDecision||'investigate').toLowerCase();\n    const decisionLabel=aiManaged?({approved_for_development:'Approved for development',deferred_no_clear_benefit:'Do not develop yet',deferred_pending_evidence:'Keep investigating internally'}[disposition]||'Managed internally'):({approve:'Approve',investigate:'Investigate',hold:'Hold',dismiss:'Dismiss'}[recommended]||'Investigate');\n    const evidence=(row.evidence||[]).slice(0,compact?3:10).map(item=>\"<li><strong>\"+esc(item.label||'Evidence')+\":</strong> \"+esc(item.value||'')+\"</li>\").join('');\n    const security=row.securityDossier&&typeof row.securityDossier==='object'?row.securityDossier:null;\n    const securityTests=security&&Array.isArray(security.securityTests)?security.securityTests.slice(0,8):[];\n    const securityEvidence=security&&!compact?\"<div class='orbit-intelligence-security-evidence-v551'><p><strong>Security review:</strong> \"+esc([security.cwe,security.category].filter(Boolean).join(' \u00B7 ')||'Application security')+\"</p>\"+(security.exploitability?\"<p><strong>Exploitability:</strong> \"+esc(security.exploitability)+\"</p>\":'')+(security.falsePositiveConfidence?\"<p><strong>False-positive confidence:</strong> \"+esc(security.falsePositiveConfidence)+\"</p>\":'')+(security.file?\"<p><strong>Source:</strong> <code>\"+esc(security.file)+(security.line?':'+esc(security.line):'')+\"</code></p>\":'')+(securityTests.length?\"<p><strong>Security tests:</strong></p><ul>\"+securityTests.map(test=>\"<li>\"+esc(test)+\"</li>\").join('')+\"</ul>\":'')+\"</div>\":'';\n    const investigatedNotes=Array.isArray(row.investigation?.evidence?.relatedNotes)?row.investigation.evidence.relatedNotes:[];\n    const investigationNotes=investigatedNotes.length?\"<div class='orbit-intelligence-investigation-notes-v546'><strong>Development Notes checked</strong><ul>\"+investigatedNotes.slice(0,12).map(note=>\"<li><code>\"+esc(note.id||'')+\"</code> \"+esc(note.title||'Untitled note')+(note.status?\" <span>\u00B7 \"+esc(note.status)+\"</span>\":'')+\"</li>\").join('')+\"</ul></div>\":'';\n    const investigation=row.investigation&&row.investigation.state==='completed'?\"<section class='orbit-intelligence-investigation-v546'><div class='orbit-intelligence-investigation-head-v546'><strong>Investigation complete</strong><span>\"+esc(row.investigation.mode==='ai'?(row.investigation.model||'AI analysis'):'Evidence review')+\" \u00B7 read only</span></div><p>\"+esc(row.investigation.summary||'').replace(/\\n/g,'<br>')+\"</p>\"+investigationNotes+\"</section>\":'';\n    let actions='';\n    if(needsOperator){\n      if(status==='dismissed')actions=\"<button type='button' class='secondary' data-intelligence-rec-action-v545='reopen' data-intelligence-rec-id-v545='\"+esc(row._id||row.id)+\"'>Reopen</button>\";\n      else actions=[\n        status!=='approved'?\"<button type='button' class='orbit-intelligence-approve-v546' data-intelligence-rec-action-v545='approve' data-intelligence-rec-id-v545='\"+esc(row._id||row.id)+\"'>Approve for future development</button>\":'',\n        status!=='investigate'?\"<button type='button' class='secondary' data-intelligence-rec-action-v545='investigate' data-intelligence-rec-id-v545='\"+esc(row._id||row.id)+\"'>Investigate first</button>\":'',\n        status!=='held'?\"<button type='button' class='secondary' data-intelligence-rec-action-v545='hold' data-intelligence-rec-id-v545='\"+esc(row._id||row.id)+\"'>Hold</button>\":'',\n        \"<button type='button' class='secondary' data-intelligence-rec-action-v545='dismiss' data-intelligence-rec-id-v545='\"+esc(row._id||row.id)+\"'>Dismiss</button>\",\n        status!=='new'?\"<button type='button' class='secondary' data-intelligence-rec-action-v545='reopen' data-intelligence-rec-id-v545='\"+esc(row._id||row.id)+\"'>Return to needs decision</button>\":''\n      ].filter(Boolean).join('');\n    }\n    const plain=compact\n      ?\"<p class='orbit-intelligence-rec-summary-v545'>\"+esc(op.whatThisMeans||row.summary||'')+\"</p>\"\n      :\"<div class='orbit-intelligence-plain-v546'><section><strong>What this means</strong><p>\"+esc(op.whatThisMeans||row.summary||'')+\"</p></section><section><strong>Why it matters</strong><p>\"+esc(op.whyItMatters||'Worth reviewing before deciding whether anything should change.')+\"</p></section><section class='orbit-intelligence-recommended-v546'><strong>\"+esc(aiManaged?'Orbit decision: ':'Recommended action: ')+esc(decisionLabel)+\"</strong><p>\"+esc(aiManaged?(management.benefitAssessment||management.reason||'Orbit Intelligence will keep this technical finding internal unless the evidence shows a genuine system benefit.'):(op.recommendedAction||row.recommendation||'Review the evidence before deciding.'))+\"</p>\"+(!aiManaged&&op.decisionReason?\"<small>\"+esc(op.decisionReason)+\"</small>\":'')+\"</section></div>\";\n    return \"<article class='orbit-intelligence-recommendation-v545' data-severity='\"+esc(row.severity||'medium')+\"'>\"+\n      \"<div class='orbit-intelligence-rec-meta-v545'><span class='orbit-intelligence-chip-v545'>\"+esc(String(row.severity||'medium').toUpperCase())+\"</span><span class='orbit-intelligence-chip-v545'>\"+esc(String(row.confidence||'medium')+' confidence')+\"</span><span class='orbit-intelligence-chip-v545 orbit-intelligence-source-chip-v556'>Produced by: \"+esc(row.agentName||row.agentId||row.sourceAgent||'Orbit Intelligence')+\"</span>\"+intelligencePermissionChipV545(permission)+\"<span class='orbit-intelligence-chip-v545'>\"+esc(status)+\"</span>\"+(aiManaged?\"<span class='orbit-intelligence-chip-v545 orbit-intelligence-recommended-chip-v546'>Orbit decision \u00B7 \"+esc(decisionLabel)+\"</span>\":needsOperator?\"<span class='orbit-intelligence-chip-v545 orbit-intelligence-recommended-chip-v546'>Needs Mark</span>\":'')+\"</div>\"+\n      \"<h5>\"+esc(row.title||'Intelligence finding')+\"</h5>\"+plain+investigation+\n      ((!compact&&(evidence||row.summary||row.recommendation||securityEvidence))?\"<details class='orbit-intelligence-rec-evidence-v545'><summary>Technical evidence</summary>\"+(row.summary?\"<p><strong>Engineering summary:</strong> \"+esc(row.summary)+\"</p>\":'')+(row.recommendation?\"<p><strong>Engineering next step:</strong> \"+esc(row.recommendation)+\"</p>\":'')+securityEvidence+(evidence?\"<ul>\"+evidence+\"</ul>\":'')+\"</details>\":'')+\n      (!compact?\"<div class='orbit-intelligence-rec-actions-v545'><button type='button' class='secondary' data-intelligence-ask-rec-v545='\"+esc(row._id||row.id)+\"' data-intelligence-ask-title-v545='\"+esc(row.title||'Intelligence finding')+\"'>Ask Orbit about this</button>\"+(aiManaged?\"<span class='orbit-muted'>Orbit Intelligence owns this technical decision. Development is approved only when the evidence shows a genuine benefit; otherwise it is deferred or investigated internally. No operator approval is required.</span>\":actions)+\"</div>\":'')+\"</article>\";\n  }\n\n  function intelligenceExecutionLabelV555(value){\n    return {event_driven:'Continuous / event-driven',scheduled_lightweight:'Scheduled lightweight',batch_night_shift:'Batch / Night Shift',on_demand:'On demand'}[String(value||'')]||String(value||'Scheduled');\n  }\n  function intelligenceScheduleLabelV557(row){\n    if(!row)return 'Not scheduled';\n    if(row.scheduleType==='nightly')return row.label||'Night Shift';\n    if(row.scheduleType==='coordinator')return row.label||'Always on';\n    if(row.scheduleType==='interval')return row.label||('Every '+Number(row.intervalMinutes||0)+' min');\n    if(row.scheduleType==='blocked')return row.label||'Blocked';\n    return row.label||'On demand';\n  }\n  function intelligenceCadenceOptionsV557(agent){\n    const schedule=agent?.orchestration||{},min=Number(agent?.orchestrationDefault?.minIntervalMinutes||schedule.minIntervalMinutes||15),selected=Number(schedule.intervalMinutes||0),presets=[15,30,60,120,360,720,1440];\n    if(!['interval'].includes(schedule.scheduleType))return '';\n    return \"<select class='orbit-intelligence-cadence-v557' data-intelligence-cadence-v557='\"+esc(agent.id)+\"' aria-label='Cadence for \"+esc(agent.name||agent.id)+\"'>\"+presets.filter(x=>x>=min).map(x=>\"<option value='\"+x+\"' \"+(x===selected?'selected':'')+\">\"+(x<60?x+' min':x===60?'1 hour':x<1440?(x/60)+' hours':'Daily')+\"</option>\").join('')+\"</select>\";\n  }\n  function intelligenceAgentVisibleInWorkspaceV5991(agent){const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());return workspace===\"development\"||String(agent?.workspace||\"\")===workspace;}\n  function intelligenceAgentWorkspaceRankV644(agent){return ({directory:0,\"card-shows\":1,\"members-club\":2,development:3})[String(agent?.workspace||\"\")]??9;}\n  function intelligenceAgentWorkspaceLabelV644(agent){return ({directory:\"Directory\",\"card-shows\":\"Card Shows\",\"members-club\":\"Members Club\",development:\"Development\"})[String(agent?.workspace||\"\")]||\"Other\";}\n  function intelligenceAgentGroupHeaderV644(agent,previous){const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599());if(workspace!==\"development\"||String(previous?.workspace||\"\")===String(agent?.workspace||\"\"))return \"\";return \"<div class='orbit-intelligence-agent-workspace-v644'><strong>\"+esc(intelligenceAgentWorkspaceLabelV644(agent))+\"</strong><span>\"+esc(String(agent?.workspace||\"\"))+\" agents</span></div>\";}\n  function filteredIntelligenceAgentsV577(agents){\n    const all=Array.isArray(agents)?agents:[],automatic=all.filter(agent=>agent?.orchestration?.automatic===true&&intelligenceAgentVisibleInWorkspaceV5991(agent)),q=String($('intelligenceAgentSearchV555')?.value||'').trim().toLowerCase(),family=String($('intelligenceAgentFamilyV555')?.value||''),permission=String($('intelligenceAgentPermissionV555')?.value||''),execution=String($('intelligenceAgentExecutionV555')?.value||'');\n    return automatic.filter(agent=>{const profile=agent.permissionProfile||{},policy=agent.executionPolicy||{},schedule=agent.orchestration||{},hay=[agent.name,agent.id,agent.area,agent.description,policy.trigger,policy.cadence,schedule.label].filter(Boolean).join(' ').toLowerCase();return (!q||hay.includes(q))&&(!family||String(agent?.family?.id||'')===family)&&(!permission||String(profile.stage||'')===permission)&&(!execution||String(policy.executionClass||'')===execution);}).sort((a,b)=>intelligenceAgentWorkspaceRankV644(a)-intelligenceAgentWorkspaceRankV644(b)||String(a.name||a.id||'').localeCompare(String(b.name||b.id||'')));\n  }\n  function toggleIntelligenceDiagnosticsCustomV577(){const custom=String($('intelligenceDiagnosticsRangeV577')?.value||'168')==='custom';const fromWrap=$('intelligenceDiagnosticsFromWrapV577'),toWrap=$('intelligenceDiagnosticsToWrapV577');if(fromWrap)fromWrap.hidden=!custom;if(toWrap)toWrap.hidden=!custom;}\n  function intelligenceDiagnosticsIsoDateV577(value,end=false){if(!value)return '';return `${value}T${end?'23:59:59.999':'00:00:00.000'}Z`;}\n  function exportIntelligenceDiagnosticsV577(){\n    const button=$('exportIntelligenceDiagnosticsV577'),range=String($('intelligenceDiagnosticsRangeV577')?.value||'168'),format=String($('intelligenceDiagnosticsFormatV577')?.value||'zip'),params=new URLSearchParams({format});\n    if(range==='custom'){const from=intelligenceDiagnosticsIsoDateV577($('intelligenceDiagnosticsFromV577')?.value,false),to=intelligenceDiagnosticsIsoDateV577($('intelligenceDiagnosticsToV577')?.value,true);if(!from||!to){setNotice('Choose both From and To dates for a custom diagnostics export.',true);return;}params.set('from',from);params.set('to',to);}else params.set('hours',range);\n    const filtered=filteredIntelligenceAgentsV577(orbitIntelligenceCommandV545?.agents||[]).map(agent=>String(agent.id||'').trim()).filter(Boolean);const filtersActive=Boolean(String($('intelligenceAgentSearchV555')?.value||'').trim()||$('intelligenceAgentFamilyV555')?.value||$('intelligenceAgentPermissionV555')?.value||$('intelligenceAgentExecutionV555')?.value);if(filtersActive)params.set('agentIds',filtered.length?filtered.join(','):'__no_matching_agents__');\n    if(button){button.disabled=true;button.textContent='Preparing\u2026';}\n    const href=adminDownloadUrlV73('/api/admin/intelligence/diagnostics/export?'+params.toString()),a=document.createElement('a');a.href=href;a.download='';a.style.display='none';document.body.appendChild(a);a.click();a.remove();setNotice(`Diagnostics ${format.toUpperCase()} requested${filtersActive?' for the current agent filters':''}.`);setTimeout(()=>{if(button){button.disabled=false;button.textContent='Export diagnostics';}},900);\n  }\n  function renderIntelligenceAgentsV545(agents){\n    const target=$('intelligenceAgentGridV545');if(!target)return;\n    const all=(Array.isArray(agents)?agents:[]).filter(intelligenceAgentVisibleInWorkspaceV5991),automatic=all.filter(agent=>agent?.orchestration?.automatic===true),rows=filteredIntelligenceAgentsV577(all);\n    const count=$('intelligenceAgentCountV555');if(count)count.textContent=`Showing ${rows.length} of ${automatic.length} automatic agent${automatic.length===1?'':'s'} \u00B7 ${all.filter(a=>a?.orchestration?.scheduleType==='on_demand').length} on demand`;\n    if(!rows.length){target.innerHTML=\"<p class='orbit-muted'>No automatic agents match those filters.</p>\";return;}\n    target.innerHTML=\"<div class='orbit-intelligence-agent-table-head-v555 orbit-intelligence-agent-table-head-v557'><span>Agent</span><span>Area / permission</span><span>Schedule</span><span>Next run</span><span>Last run</span><span>Health</span><span>Controls</span></div>\"+rows.map((agent,index)=>{\n      const run=agent.lastRun||null,profile=agent.permissionProfile||{},policy=agent.executionPolicy||{},cost=agent.costGuardrail||{},schedule=agent.orchestration||{},health=String(run?.healthStatus||schedule.lastStatus||'waiting').toLowerCase(),paused=schedule.paused===true,blocked=agent.state!=='live'&&agent.id!=='roadmap-developer',docScore=(run&&Number.isFinite(Number(run.documentationHealthScore)))?` \u00B7 Docs ${Number(run.documentationHealthScore)}/100`:'';\n      const next=paused?'Paused':(schedule.nextRunAt?intelligenceDateV545(schedule.nextRunAt):(schedule.scheduleType==='nightly'?'Next Night Shift':'Waiting'));\n      const controls=(agent.pokeOperations?\"<div><button type='button' class='secondary' data-intelligence-agent-run-v552='\"+esc(agent.id)+\"'>Run now</button><button type='button' class='secondary' data-poke-settings-v618>Cadence &amp; cost settings</button></div>\":blocked?\"<span class='orbit-muted'>Planned</span>\":\"<div class='orbit-intelligence-agent-controls-v557'>\"+\n        (schedule.scheduleType==='interval'?intelligenceCadenceOptionsV557(agent):'')+\n        \"<button type='button' class='secondary' data-intelligence-schedule-action-v557='\"+esc(agent.id)+\"' data-action='\"+(paused?'resume':'pause')+\"'>\"+(paused?'Resume':'Pause')+\"</button>\"+\n        \"<button type='button' class='secondary' data-intelligence-auto-run-v557='\"+esc(agent.id)+\"'>Check now</button>\"+\n        (agent.id==='development-agent'?\"<button type='button' class='secondary' data-intelligence-agent-run-v552='development-agent'>Prepare with AI\u2026</button>\":\"\")+\"</div>\");\n      return intelligenceAgentGroupHeaderV644(agent,rows[index-1])+\"<article class='orbit-intelligence-agent-row-v555 orbit-intelligence-agent-row-v557' data-state='\"+esc(agent.state||'planned')+\"'>\"+\n        \"<div class='orbit-intelligence-agent-name-v555'><strong>\"+esc(agent.name||agent.id)+\"</strong><small>\"+esc(agent.id||'')+\"</small><details><summary>What it does</summary><p>\"+esc(agent.description||'')+\"</p>\"+(agent.pokeOperations?\"<p>\"+esc(agent.pokeOperations.trigger||'')+\" \u00B7 next \"+esc(paDateV614(agent.pokeOperations.nextRunAt))+\" \u00B7 30-day cost \"+esc(agent.pokeOperations.cost30DaysUsd==null?\"open Cadence & cost settings\":paMoneyV614(agent.pokeOperations.cost30DaysUsd))+\"</p><p>\"+esc(agent.pokeOperations.attentionReason||agent.pokeOperations.summary||'')+\"</p>\":\"\")+\"<small>Model lane: \"+esc(policy.modelLane||agent.modelLane||'routine')+\" \u00B7 \"+esc(intelligenceExecutionLabelV555(policy.executionClass))+\"</small></details></div>\"+\n        \"<span><strong>\"+esc(agent?.family?.label||agent.area||'Orbit')+\"</strong><small>\"+esc(agent.area||'Orbit')+\" \u00B7 \"+esc(profile.stageLabel||agent.permissionLabel||'Read only')+\"</small></span>\"+\n        \"<span><strong>\"+esc(paused?'Paused':intelligenceScheduleLabelV557(schedule))+\"</strong><small>\"+esc(policy.trigger||'')+(cost.sharedBudgetUsd?(' \u00B7 shared 24h $'+Number(cost.committedUsd||0).toFixed(2)+' / $'+Number(cost.sharedBudgetUsd).toFixed(2)+(cost.allowed===false?(cost.deterministicContinuesWhenCapped===true?' \u00B7 PAID AI DEFERRED \u00B7 DETERMINISTIC RUNNING':' \u00B7 BUDGET DEFERRED'):'')):'')+\"</small></span>\"+\n        \"<span>\"+esc(next)+\"</span>\"+\n        \"<span>\"+esc(run?intelligenceDateV545(run.completedAt):(schedule.lastRunAt?intelligenceDateV545(schedule.lastRunAt):'Not run yet'))+esc(docScore)+\"</span>\"+\n        \"<span class='orbit-intelligence-agent-health-v555' data-health='\"+esc(health)+\"'>\"+esc(health)+\"</span>\"+\n        \"<span>\"+controls+\"</span>\"+\n        (run?.summary?\"<details class='orbit-intelligence-agent-brief-row-v555'><summary>Latest brief</summary><div class='orbit-intelligence-agent-brief-v550'>\"+orbitIntelligenceBriefMarkdownV552(run.summary)+\"</div></details>\":'')+\n      \"</article>\";\n    }).join('');\n  }\n  function renderIntelligenceOnDemandV557(agents){\n    const target=$('intelligenceOnDemandGridV557');if(!target)return;const all=(Array.isArray(agents)?agents:[]).filter(intelligenceAgentVisibleInWorkspaceV5991),q=String($('intelligenceOnDemandSearchV557')?.value||'').trim().toLowerCase(),family=String($('intelligenceOnDemandFamilyV557')?.value||'');\n    const rows=all.filter(agent=>['on_demand','blocked'].includes(String(agent?.orchestration?.scheduleType||''))).filter(agent=>{const hay=[agent.name,agent.id,agent.area,agent.description,agent?.orchestration?.whenToUse].filter(Boolean).join(' ').toLowerCase();return(!q||hay.includes(q))&&(!family||String(agent?.family?.id||'')===family);}).sort((a,b)=>intelligenceAgentWorkspaceRankV644(a)-intelligenceAgentWorkspaceRankV644(b)||String(a.name||a.id||'').localeCompare(String(b.name||b.id||'')));\n    const count=$('intelligenceOnDemandCountV557');if(count)count.textContent=`${rows.length} on-demand/planned agent${rows.length===1?'':'s'} \u00B7 these never self-start`;\n    if(!rows.length){target.innerHTML=\"<p class='orbit-muted'>No on-demand agents match those filters.</p>\";return;}\n    target.innerHTML=\"<div class='orbit-intelligence-agent-table-head-v555 orbit-intelligence-ondemand-head-v557'><span>Agent</span><span>What it is for</span><span>Model / permission</span><span>Last run</span><span>Action</span></div>\"+rows.map((agent,index)=>{\n      const policy=agent.executionPolicy||{},schedule=agent.orchestration||{},profile=agent.permissionProfile||{},run=agent.lastRun||null;let action=\"<span class='orbit-muted'>Not connected yet</span>\";\n      if(agent.id==='ask-orbit')action=\"<button type='button' class='secondary' data-intelligence-on-demand-action-v557='assistant'>Open Ask Orbit</button>\";\n      else if(agent.id==='engineering-investigator')action=\"<button type='button' class='secondary' data-intelligence-on-demand-action-v557='recommendations'>Open Findings</button>\";\n      else if(agent.id==='creative-agent'&&agent.state==='live')action=\"<button type='button' class='secondary' data-intelligence-agent-run-v552='creative-agent'>Run Creative Agent</button>\";\n      return intelligenceAgentGroupHeaderV644(agent,rows[index-1])+\"<article class='orbit-intelligence-agent-row-v555 orbit-intelligence-ondemand-row-v557' data-state='\"+esc(agent.state||'planned')+\"'><div class='orbit-intelligence-agent-name-v555'><strong>\"+esc(agent.name||agent.id)+\"</strong><small>\"+esc(agent?.family?.label||agent.area||'Orbit')+\" \u00B7 \"+esc(agent.state||'planned')+\"</small></div><span>\"+esc(schedule.whenToUse||agent.description||'Run only when needed.')+\"</span><span><code>\"+esc(policy.modelLane||agent.modelLane||'routine')+\"</code><small>\"+esc(profile.stageLabel||agent.permissionLabel||'Read only')+\"</small></span><span>\"+esc(run?intelligenceDateV545(run.completedAt):'Not run yet')+\"</span><span>\"+action+\"</span></article>\";\n    }).join('');\n  }\n  function renderIntelligencePermissionsV545(policy){\n    const target=$('intelligencePermissionGridV545');if(!target)return;\n    const maturity=policy?.maturity||{},path=Array.isArray(maturity.maturityPath)?maturity.maturityPath:[];\n    const maturityHtml=path.length?\"<article class='orbit-intelligence-permission-v545 orbit-intelligence-permission-maturity-v552'><strong>Permission maturity \u00B7 current ceiling: \"+esc(maturity.ceilingLabel||maturity.ceiling||'Draft only')+\"</strong><div class='orbit-intelligence-maturity-path-v552'>\"+path.map(step=>\"<span data-active='\"+(Number(step.rank)<=3?'true':'false')+\"'><b>\"+esc(step.rank)+\"</b> \"+esc(step.label)+\"</span>\").join('')+\"</div><small>\"+esc(maturity.rule||'No production execution is available.')+\"</small></article>\":'';\n    const groups=[['Read / evidence',policy?.readOnly],['Future approval gates',policy?.approvalRequired],['Always protected',policy?.protected]];\n    target.innerHTML=maturityHtml+groups.map(([label,items])=>\"<article class='orbit-intelligence-permission-v545'><strong>\"+esc(label)+\"</strong><ul>\"+(Array.isArray(items)?items:[]).map(item=>\"<li>\"+esc(item)+\"</li>\").join('')+\"</ul></article>\").join('');\n  }\n  function renderAgentActionProposalsV552(rows){\n    const target=$('intelligenceActionProposalsV552');if(!target)return;const proposals=Array.isArray(rows)?rows:[];\n    target.innerHTML=proposals.length?proposals.slice(0,8).map(row=>\"<article class='orbit-intelligence-action-proposal-v552'><div><strong>\"+esc(row.noteTitle||row.noteId||'Development draft')+\"</strong><span>\"+esc(row.noteId||'')+\" \u00B7 draft only</span></div><p>\"+esc(row.summary||'Implementation packet prepared.')+\"</p><small>\"+esc(row.gate?.label||'No staging or execution available')+\" \u00B7 source writes 0 \u00B7 production writes 0</small></article>\").join(''):\"<p class='orbit-muted'>No Development Agent implementation packets yet. Run the Development Agent or let Night Shift prepare one from the current Development queue.</p>\";\n  }\n  function renderAgentHandoffsV553(rows,policy){\n    const target=$('intelligenceAgentHandoffsV553');if(!target)return;const handoffs=Array.isArray(rows)?rows:[];\n    const q=String($('intelligenceHandoffSearchV555')?.value||'').trim().toLowerCase(),severity=String($('intelligenceHandoffSeverityV555')?.value||'');\n    const open=handoffs.filter(row=>row&&row.active!==false&&String(row.status||'open').toLowerCase()==='open').filter(row=>{\n      const hay=[row.title,row.reason,row.requestedAction,row.sourceAgent,(row.targetAgents||[]).join(' '),row.subjectId,row.code].filter(Boolean).join(' ').toLowerCase();\n      return (!q||hay.includes(q))&&(!severity||String(row.severity||'').toLowerCase()===severity);\n    });\n    const count=$('intelligenceHandoffCountV555');if(count)count.textContent=`${open.length} open handoff${open.length===1?'':'s'} shown \u00B7 routine findings stay in Intelligence`;\n    target.innerHTML=open.length?open.map(row=>\"<article class='orbit-intelligence-handoff-row-v555'><div><strong>\"+esc(row.title||'Agent handoff')+\"</strong><span>\"+esc(row.sourceAgent||'agent')+\" \u2192 \"+esc((row.targetAgents||[]).join(', ')||'operator')+\"</span></div><p>\"+esc(row.reason||row.requestedAction||'Evidence requires review.')+\"</p><div class='orbit-intelligence-handoff-meta-v555'><span>\"+esc(String(row.severity||'medium').toUpperCase())+\"</span><span>\"+esc(row.requiredPermission||'recommend')+\" required</span><span>\"+(row.operatorActionRequired===true?'Human action required':'Intelligence only')+\"</span><span>No execution performed</span></div></article>\").join(''):\"<p class='orbit-muted'>No open handoffs match these filters.</p>\";\n    if(policy?.structuredOnly===false)target.insertAdjacentHTML('afterbegin',\"<p class='error'>Agent collaboration policy is not in structured-only mode.</p>\");\n  }\n  function renderIntelligenceModelRoutingV546(routes){\n    const target=$('intelligenceModelRoutingV546');if(!target)return;const rows=Array.isArray(routes)?routes:[];\n    target.innerHTML=rows.length?rows.map(row=>\"<article class='orbit-intelligence-model-lane-v546' data-live='\"+(row.live?'true':'false')+\"'><div><strong>\"+esc(row.label||row.lane)+\"</strong><span>\"+esc((row.costTier||'')?String(row.costTier).toUpperCase():(row.live?'Live':'Reserved'))+\"</span></div><p><code>\"+esc(row.model||'not configured')+\"</code>\"+(row.reasoningEffort?\" \u00B7 \"+esc(row.reasoningEffort)+\" reasoning\":'')+\"</p><small>\"+esc(row.description||'')+\"</small></article>\").join(''):\"<p class='orbit-muted'>No model-routing policy returned.</p>\";\n  }\n  function renderIntelligenceUsageV555(usage,executionPolicies,usageWindows,budget){\n    const target=$('intelligenceUsageV555');if(!target)return;const windows=usageWindows||{},u=usage||windows['24']||windows[24]||{},counts=executionPolicies?.counts||{};\n    function usd(v){return Number.isFinite(Number(v))?'$'+Number(v).toFixed(2):'\u2014';}\n    function windowCard(label,row){const x=row||{},tool=Number(x.estimatedToolUsd||0),token=Number(x.estimatedTokenStandardUsd||0),effective=Number(x.estimatedEffectiveUsd||0);return \"<article><span>\"+esc(label)+\"</span><strong>\"+usd(effective)+\"</strong><small>\"+Number(x.calls||0).toLocaleString('en-GB')+\" calls \u00B7 \"+Number(x.totalTokens||0).toLocaleString('en-GB')+\" tokens \u00B7 tools \"+usd(tool)+\"</small></article>\";}\n    const w24=windows['24']||windows[24]||u,w7=windows['168']||windows[168]||{},w30=windows['720']||windows[720]||{},top=Array.isArray(w24.byAgent)?w24.byAgent.slice(0,12):[],models=Array.isArray(w24.byModel)?w24.byModel:[],tiers=Array.isArray(w24.byServiceTier)?w24.byServiceTier:[],expensive=Array.isArray(w24.expensiveRuns)?w24.expensiveRuns.slice(0,10):[];\n    const standard=usd(w24.estimatedStandardUsd),effective=usd(w24.estimatedEffectiveUsd),projected=usd(w24.projected30DayEffectiveUsd),saved=usd(w24.estimatedSavingsUsd),toolCost=usd(w24.estimatedToolUsd);\n    target.innerHTML=\"<div class='orbit-intelligence-usage-metrics-v555'>\"+\n      windowCard('Last 24 hours',w24)+windowCard('Last 7 days',w7)+windowCard('Last 30 days',w30)+\n      \"<article><span>24h prompt cache</span><strong>\"+Math.round(Number(w24.cachedInputRate||0)*100)+\"%</strong><small>\"+Number(w24.cachedInputTokens||0).toLocaleString('en-GB')+\" cached input tokens</small></article>\"+\n      \"<article><span>24h built-in tool fees</span><strong>\"+toolCost+\"</strong><small>\"+Number(w24.webSearchCalls||0)+\" web \u00B7 \"+Number(w24.imageWebSearchCalls||0)+\" image web \u00B7 \"+Number(w24.fileSearchCalls||0)+\" file searches</small></article>\"+\n      \"<article><span>30-day projection</span><strong>\"+projected+\"</strong><small>At the latest 24h rate \u00B7 provider invoice remains authoritative</small></article>\"+\n      \"</div><div class='orbit-intelligence-cost-policy-v555'><strong>Cost-aware execution</strong><span>24h effective \"+effective+\" \u00B7 standard-equivalent \"+standard+\" \u00B7 estimated tier saving \"+saved+\"</span><small>Deterministic checks run first. Luna handles high-volume routine work. Terra/Sol are escalation lanes. Eligible non-urgent work may use Flex/Batch, while built-in search tool fees remain visible because they are not erased by cheaper token tiers.</small></div>\"+\n      (top.length?\"<details open><summary>Highest-cost agents in the last 24h</summary><div class='orbit-intelligence-usage-list-v555'>\"+top.map(row=>\"<span><strong>\"+esc(row.agentId)+\"</strong><b>\"+usd(row.estimatedEffectiveUsd)+\" \u00B7 tools \"+usd(row.estimatedToolUsd)+\" \u00B7 \"+Number(row.totalTokens||0).toLocaleString('en-GB')+\" tokens \u00B7 \"+Number(row.webSearchCalls||0)+\" web searches\"+(row.usefulOutcomes?\" \u00B7 \"+Number(row.usefulOutcomes)+\" useful \u00B7 \"+usd(row.costPerUsefulOutcome)+\"/outcome\":\"\")+\"</b></span>\").join('')+\"</div></details>\":'')+\n      (models.length?\"<details><summary>24h model cost</summary><div class='orbit-intelligence-usage-list-v555'>\"+models.map(row=>\"<span><strong>\"+esc(row.model)+\"</strong><b>\"+usd(row.estimatedEffectiveUsd)+\" \u00B7 \"+Number(row.calls||0)+\" calls \u00B7 \"+Math.round(Number(row.cachedInputRate||0)*100)+\"% cached</b></span>\").join('')+\"</div></details>\":'')+\n      (tiers.length?\"<details><summary>Execution tier breakdown</summary><div class='orbit-intelligence-usage-list-v555'>\"+tiers.map(row=>\"<span><strong>\"+esc(row.serviceTier)+\"</strong><b>\"+Number(row.totalTokens||0).toLocaleString('en-GB')+\" tokens \u00B7 \"+usd(row.estimatedEffectiveUsd)+\"</b></span>\").join('')+\"</div></details>\":'')+\n      (expensive.length?\"<details><summary>Most expensive individual runs \u00B7 24h</summary><div class='orbit-intelligence-usage-list-v555'>\"+expensive.map(row=>\"<span><strong>\"+esc(row.agentId)+\" \u00B7 \"+esc(row.model)+\" \u00B7 \"+esc(row.serviceTier)+\"</strong><b>\"+usd(row.estimatedEffectiveUsd)+\" \u00B7 tools \"+usd(row.estimatedToolUsd)+\" \u00B7 \"+Number(row.totalTokens||0).toLocaleString('en-GB')+\" tokens\"+(row.webSearchCalls?\" \u00B7 \"+Number(row.webSearchCalls)+\" web search\"+(Number(row.webSearchCalls)===1?'':'es'):'')+\"</b></span>\").join('')+\"</div></details>\":'')+\n      (()=>{const ordinary=budget?.ordinary||{},manual=Array.isArray(budget?.manual)?budget.manual:[],recent=Array.isArray(budget?.recentReceipts)?budget.recentReceipts:[];return \"<div class='orbit-intelligence-cost-policy-v555'><strong>Atomic AI budget authority</strong><span>Ordinary rolling 24h: \"+usd(ordinary.committedUsd)+\" committed / \"+usd(ordinary.budgetUsd)+\" \u00B7 \"+usd(ordinary.remainingUsd)+\" remaining\"+(ordinary.frozen?\" \u00B7 FROZEN\":\"\")+\"</span><small>Every paid Responses/Batch request reserves budget before provider dispatch. Dispatched or ambiguous requests stay held until reconciled; only definitely pre-dispatch reservations can expire safely.</small></div>\"+(manual.length?\"<details><summary>Manual Directory / Development budgets</summary><div class='orbit-intelligence-usage-list-v555'>\"+manual.slice(0,10).map(row=>\"<span><strong>\"+esc(row.kind||'manual')+\" \u00B7 \"+esc(row.runId||'')+\"</strong><b>\"+usd(row.committedUsd)+\" / \"+usd(row.budgetUsd)+\" \u00B7 \"+esc(row.status||'')+\"</b></span>\").join('')+\"</div></details>\":'')+(recent.length?\"<details><summary>Recent atomic reservations</summary><div class='orbit-intelligence-usage-list-v555'>\"+recent.slice(0,12).map(row=>\"<span><strong>\"+esc(row.usageTag||'AI')+\" \u00B7 \"+esc(row.status||'')+\"</strong><b>reserved \"+usd(row.reservedUsd)+(Number.isFinite(Number(row.actualUsd))?\" \u00B7 actual \"+usd(row.actualUsd):\"\")+\"</b></span>\").join('')+\"</div></details>\":'');})()+\n      \"<div class='orbit-intelligence-cost-policy-v555'><strong>Execution mix</strong><span>\"+Number(counts.event_driven||0)+\" event-driven \u00B7 \"+Number(counts.scheduled_lightweight||0)+\" scheduled \u00B7 \"+Number(counts.batch_night_shift||0)+\" Batch/Night Shift \u00B7 \"+Number(counts.on_demand||0)+\" on demand</span><small>V576 cost telemetry separately records model tokens, cached input, built-in web/file tool calls and useful outcomes so high-volume agents can be optimised by cost per result rather than raw activity.</small></div>\";\n  }\n  function renderIntelligenceBatchV556(batch){\n    const target=$('intelligenceBatchV556');if(!target)return;const b=batch||{},jobs=Array.isArray(b.recentJobs)?b.recentJobs:[];\n    target.innerHTML=\"<div class='orbit-intelligence-batch-status-v556' data-state='\"+esc(b.enabled?'ready':'off')+\"'><strong>\"+esc(b.enabled?'Batch ready':'Batch unavailable')+\"</strong><span>\"+Number(b.pendingJobs||0)+\" pending job(s) \u00B7 \"+esc(b.completionWindow||'24h')+\" window \u00B7 no standard-rate fallback</span></div>\"+(jobs.length?\"<details><summary>Recent Batch jobs</summary><div class='orbit-intelligence-usage-list-v555'>\"+jobs.map(job=>\"<span><strong>\"+esc(job.jobType||'Intelligence Batch')+\" \u00B7 \"+Number(job.itemCount||0)+\" items</strong><b>\"+esc(job.status||'unknown')+\"</b></span>\").join('')+\"</div></details>\":\"<p class='orbit-muted'>No Batch jobs recorded yet. Eligible dossier work will be coalesced when evidence changes.</p>\");\n  }\n  function renderRoadmapDeveloperV555(info){\n    const target=$('intelligenceRoadmapDeveloperV555');if(!target)return;const row=info||{},policy=row.executionPolicy||{};\n    const connected=row.codeWritingEnabled===true&&row.sandboxWrites===true,prep=row.preparationReady===true?'Source snapshot preparation ready':'Source snapshot preparation pending';\n    target.innerHTML=\"<article class='orbit-intelligence-roadmap-developer-card-v555'><div><strong>Roadmap Developer</strong><span>\"+esc(connected?'Sealed sandbox connected':'Sandbox '+String(row.state||'unavailable'))+\"</span></div><p>\"+esc(prep)+\". Approved roadmap work can now be built only inside the isolated sandbox under an explicit Development AI budget. Sandbox output cannot deploy or write production source and still requires review, regression certification and Acceptance.</p><small>\"+esc(intelligenceExecutionLabelV555(policy.executionClass))+\" \u00B7 \"+esc(policy.cadence||'manual paid build + Night Shift preparation')+\" \u00B7 \"+esc(policy.modelLane||'engineering')+\" lane \u00B7 production access disabled</small></article>\";\n  }\n  function renderSystemHealthV546(run){\n    const target=$('intelligenceSystemHealthV546');if(!target)return;\n    if(!run){target.dataset.state='';target.textContent='System Health has not been run yet. It makes no changes when it runs.';return;}\n    const snap=run.snapshot||{},warnings=Array.isArray(snap.warnings)?snap.warnings:[],unresolved=Number(snap.unresolvedScheduledFailures??snap.recentFailedScheduledRuns??0),recovered=Number(snap.recoveredScheduledFailures||0);target.dataset.state=warnings.length?'working':'success';\n    const failedRows=Array.isArray(snap.failedRuns)?snap.failedRuns:[],changes=Array.isArray(snap.changes)?snap.changes:[];\n    target.innerHTML=\"<strong>System Health \u00B7 \"+esc(warnings.length?'Needs attention':'No current warnings in bounded check')+\"</strong><span> \"+esc(intelligenceDateV545(run.completedAt))+\" \u00B7 \"+Number(snap.rssMb||0)+\" MB process memory \u00B7 \"+Number(snap.activeDevelopmentItems||0)+\" active Development item(s) \u00B7 \"+unresolved+\" unresolved scheduled failure(s)\"+(recovered?\" \u00B7 \"+recovered+\" recovered historical failure(s)\":\"\")+\"</span>\"+(warnings.length?\"<br><span>\"+warnings.map(esc).join(' \u00B7 ')+\"</span>\":'')+(failedRows.length?\"<details><summary>Current failed workflows</summary><ul>\"+failedRows.slice(0,8).map(row=>\"<li><strong>\"+esc(row.workflow||'Unknown workflow')+\"</strong> \u00B7 \"+esc(row.createdAt||'date unavailable')+(row.error?\" \u00B7 \"+esc(row.error):'')+\"</li>\").join('')+\"</ul></details>\":'')+(changes.length?\"<details><summary>What changed since the last check</summary><ul>\"+changes.map(x=>\"<li>\"+esc(x)+\"</li>\").join('')+\"</ul></details>\":'');\n  }\n  function renderDeploymentGuardianV54601(run){\n    const target=$('intelligenceDeploymentGuardianV54601');if(!target)return;\n    if(!run){target.dataset.state='';target.textContent='Deployment Guardian has not been run yet. It can recommend recovery but cannot deploy or roll back.';return;}\n    const warnings=Array.isArray(run.warnings)?run.warnings:[],evidence=run.evidence||{},reviewed=evidence.currentRelease||(Array.isArray(evidence.reviewedDeployments)?evidence.reviewedDeployments:[])[0]||{};\n    target.dataset.state=run.healthStatus==='attention'?'working':'success';\n    const headline=run.healthStatus==='attention'?'Current release needs attention':'Current release has no immediate deployment failure';\n    target.innerHTML=\"<strong>Deployment Guardian \u00B7 \"+esc(headline)+\"</strong><span> \"+esc(intelligenceDateV545(run.completedAt))+(reviewed.releaseVersion?\" \u00B7 \"+esc(reviewed.releaseVersion)+\" \u00B7 \"+esc(reviewed.statusLabel||reviewed.status||''):'')+\"</span>\"+(run.diagnosis?\"<br><span><strong>Current status:</strong> \"+esc(run.diagnosis)+\"</span>\":'')+(run.recommendedAction?\"<br><span><strong>Recommended action:</strong> \"+esc(run.recommendedAction)+\"</span>\":'')+(warnings.length?\"<br><span>\"+warnings.map(esc).join(' \u00B7 ')+\"</span>\":'')+(Array.isArray(evidence.historicalIncidents)&&evidence.historicalIncidents.length?\"<details><summary>Historical release incidents</summary><ul>\"+evidence.historicalIncidents.map(row=>\"<li>\"+esc(row.releaseVersion||row.id||'Release')+\" \u00B7 \"+esc(row.statusLabel||row.status||'')+\"</li>\").join('')+\"</ul></details>\":'')+(run.ownerSummary?\"<details><summary>AI explanation</summary><div class='orbit-intelligence-ai-explanation-v547'>\"+orbitIntelligenceBriefMarkdownV549(run.ownerSummary)+\"</div></details>\":'');\n  }\n  function renderNightShiftV547(run,watchers){\n    const target=$('intelligenceNightShiftV547');if(!target)return;\n    const watcher=watchers||{},running=watcher.running===true,inFlight=watcher.inFlight===true;\n    const cadence=watcher.cadence||'15-minute lightweight monitoring \u00B7 periodic Engineering Review \u00B7 daily morning Owner Brief';\n    const lastCheck=watcher.lastCheckAt?intelligenceDateV545(watcher.lastCheckAt):'waiting for first background check';\n    const monitor=\"<strong>Night Shift \u00B7 \"+esc(running?'Monitoring continuously':'Watcher not running')+\"</strong><span> \"+esc(cadence)+\" \u00B7 last check: \"+esc(lastCheck)+(inFlight?' \u00B7 check in progress':'')+\" \u00B7 0 production changes</span>\";\n    if(!run){target.dataset.state=running?'success':'';target.innerHTML=monitor+\"<br><span>The morning Owner Brief is created automatically after the overnight watch window. Use Run full review now only as a diagnostic/manual refresh.</span>\";return;}\n    const snap=run.snapshot||{};target.dataset.state=run.healthStatus==='attention'?'working':'success';\n    target.innerHTML=monitor+\"<br><span><strong>Latest Owner Brief:</strong> \"+esc(intelligenceDateV545(run.completedAt))+\" \u00B7 \"+Number(snap.newFindingCount||0)+\" internal finding(s) recorded</span>\"+(run.ownerSummary?\"<details><summary>Owner brief</summary><div class='orbit-intelligence-ai-explanation-v547'>\"+orbitIntelligenceBriefMarkdownV549(run.ownerSummary)+\"</div></details>\":'');\n  }\n  function renderIntelligenceActivityV545(items){\n    const target=$('intelligenceActivityV545');if(!target)return;const rows=Array.isArray(items)?items:[];\n    target.innerHTML=rows.length?rows.slice(0,12).map(row=>\"<article class='orbit-intelligence-activity-row-v545'><strong>\"+esc(row.summary||row.type||'Intelligence activity')+\"</strong><small>\"+esc(intelligenceDateV545(row.createdAt))+\"</small><span>\"+esc(row.actor||'Orbit Admin')+\"</span></article>\").join(''):\"<p class='orbit-muted'>No Intelligence activity recorded yet.</p>\";\n  }\n  function renderIntelligenceCommandV545(command){\n    orbitIntelligenceCommandV545=command||{};const counts=command?.recommendationCounts||{},agents=Array.isArray(command?.agents)?command.agents:[],recs=Array.isArray(command?.recommendations)?command.recommendations:[];\n    const conn=command?.connection||{};$('intelligenceConnectionMetricV545')&&($('intelligenceConnectionMetricV545').textContent=conn.configured?'Configured':'Setup needed');$('intelligenceConnectionDetailV545')&&($('intelligenceConnectionDetailV545').textContent=conn.configured?('Model '+(conn.model||'configured')+' \u00B7 use Ask Orbit to verify'):'OPENAI_API_KEY is not configured');\n    $('intelligenceLiveAgentsMetricV545')&&($('intelligenceLiveAgentsMetricV545').textContent=String(agents.filter(a=>a.state==='live').length));$('intelligenceNewFindingsMetricV545')&&($('intelligenceNewFindingsMetricV545').textContent=String(counts.needsOperator??0));$('intelligenceApprovedMetricV545')&&($('intelligenceApprovedMetricV545').textContent=String(counts.aiManaged??0));\n    const attention=Number(counts.needsOperator||0),badge=$('intelligenceFindingBadgeV545');if(badge){badge.hidden=attention<1;badge.textContent=String(attention);}\n    const status=$('intelligenceCommandStatusV545');if(status){status.dataset.state='success';status.textContent=command?.lastEngineeringReview?('Last Engineering Review: '+intelligenceDateV545(command.lastEngineeringReview.completedAt)+' \u00B7 '+Number(command.lastEngineeringReview.findingCount||0)+' finding(s) \u00B7 read only'):\"Engineering Review has not been run yet. Nothing has been changed.\";}\n    const top=$('intelligenceTopRecommendationsV545');if(top){const visible=recs.filter(r=>r?.management?.operatorActionRequired===true||(!r?.management?.aiManaged&&String(r.status||'new').toLowerCase()==='new')).slice(0,4);top.innerHTML=visible.length?visible.map(r=>recommendationCardV545(r,true)).join(''):\"<p class='orbit-muted'>No AI findings need you. Routine engineering findings are being triaged, investigated and routed automatically.</p>\";}\n    renderIntelligenceAgentsV545(agents);renderIntelligenceOnDemandV557(agents);renderRoadmapDeveloperV555(command?.roadmapDeveloper||null);renderIntelligenceUsageV555(command?.usage||{},command?.executionPolicies||{},command?.usageWindows||{},command?.budget||{});renderIntelligenceBatchV556(command?.batch||{});renderIntelligenceModelRoutingV546(command?.modelRouting||[]);renderSystemHealthV546(command?.lastSystemHealth||null);renderDeploymentGuardianV54601(command?.lastDeploymentGuardian||null);renderNightShiftV547(command?.lastNightShift||null,command?.watchers||null);renderIntelligencePermissionsV545(command?.permissions||{});renderAgentActionProposalsV552(command?.actionProposals||[]);renderAgentHandoffsV553(command?.agentHandoffs||[],command?.collaboration||null);renderIntelligenceActivityV545(command?.activity||[]);\n  }\n  const agentDirectoryCacheV618=new Map(),agentDirectoryReadsV618=new Map();\n  function renderAgentDirectoryErrorV618(error){\n    for(const id of ['intelligenceAgentGridV545','intelligenceOnDemandGridV557']){const node=$(id);if(node){node.innerHTML=\"<div class='orbit-empty-state' role='alert'><strong>Agents could not load</strong><span>\"+esc(error.message||error)+\"</span><button type='button' class='secondary' data-agent-retry-v618>Retry</button></div>\";node.querySelector('[data-agent-retry-v618]')?.addEventListener('click',()=>loadAgentDirectoryV618(true).catch(()=>{}));}}\n    const count=$('intelligenceAgentCountV555');if(count)count.textContent='Agent status unavailable. Retry to read the current status.';\n  }\n  async function loadAgentDirectoryV618(force=false){\n    if(!state.adminAuthenticated)return null;\n    const workspace=canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599()),cached=agentDirectoryCacheV618.get(workspace);\n    const display=data=>{if(workspace!==canonicalBusinessWorkspaceV599(state.businessWorkspaceV599||savedBusinessWorkspaceV599()))return data;orbitIntelligenceCommandV545={...(orbitIntelligenceCommandV545||{}),agents:data.agents,agentsWorkspaceV618:workspace};renderIntelligenceAgentsV545(data.agents);renderIntelligenceOnDemandV557(data.agents);return data;};\n    if(!force&&cached&&Date.now()-cached.at<30000)return display(cached.data);\n    let pending=agentDirectoryReadsV618.get(workspace);\n    if(!pending){const node=$('intelligenceAgentGridV545');if(node)node.innerHTML=\"<p role='status'>Loading workspace agents\u2026</p>\";pending=api('/api/admin/intelligence/agents?workspace='+encodeURIComponent(workspace),{timeoutMs:15000,cacheMs:0}).then(data=>{if(data.success===false||data.workspace!==workspace||!Array.isArray(data.agents))throw new Error('Orbit did not return this workspace\u2019s agent list.');agentDirectoryCacheV618.set(workspace,{at:Date.now(),data});return data;}).finally(()=>agentDirectoryReadsV618.delete(workspace));agentDirectoryReadsV618.set(workspace,pending);}\n    try{return display(await pending);}catch(error){if(workspace===state.businessWorkspaceV599)renderAgentDirectoryErrorV618(error);throw error;}\n  }\n  function renderIntelligenceCommandErrorV545(err){const status=$('intelligenceCommandStatusV545');if(status){status.dataset.state='error';status.textContent='Could not load Intelligence status: '+String(err?.message||err);}}\n  async function loadOrbitIntelligenceCommandCentreV545(force){if(state.currentModule===\"intelligence\"&&[\"agents\",\"ondemand\"].includes(state.currentIntelligencePaneV618))return loadAgentDirectoryV618(force);if(orbitIntelligenceCommandV545?.generatedAt&&!force){renderIntelligenceCommandV545(orbitIntelligenceCommandV545);return orbitIntelligenceCommandV545;}const data=await api('/api/admin/intelligence/command-centre',{timeoutMs:30000,cacheMs:0});renderIntelligenceCommandV545(data.commandCentre||{});return data.commandCentre||{};}\n  function renderIntelligenceFindingsV555(){\n    const target=$('intelligenceRecommendationsV545');if(!target)return;const q=String($('intelligenceFindingSearchV555')?.value||'').trim().toLowerCase(),severity=String($('intelligenceFindingSeverityV555')?.value||'');\n    const rows=orbitIntelligenceFindingsV555.filter(row=>{\n      const hay=[row.title,row.summary,row.recommendation,row.agentId,row.sourceAgent,...((row.evidence||[]).map(x=>`${x.label||''} ${x.value||''}`))].join(' ').toLowerCase();\n      return (!q||hay.includes(q))&&(!severity||String(row.severity||'').toLowerCase()===severity);\n    });\n    const count=$('intelligenceFindingCountV555');if(count)count.textContent=`Showing ${rows.length} of ${orbitIntelligenceFindingsV555.length} finding${orbitIntelligenceFindingsV555.length===1?'':'s'} \u00B7 AI-managed findings are audit history; only explicit escalations need you`;\n    target.innerHTML=rows.length?rows.map(row=>recommendationCardV545(row,false)).join(''):\"<p class='orbit-muted'>No findings match these filters.</p>\";\n  }\n  async function loadIntelligenceRecommendationsV545(){\n    const target=$('intelligenceRecommendationsV545');if(target)target.innerHTML=\"<p class='orbit-muted'>Loading findings\u2026</p>\";const filter=$('intelligenceRecommendationFilterV545')?.value||'all';\n    try{const data=await api('/api/admin/intelligence/recommendations?status='+encodeURIComponent(filter)+'&limit=200',{timeoutMs:30000,cacheMs:0});orbitIntelligenceFindingsV555=Array.isArray(data.recommendations)?data.recommendations:[];renderIntelligenceFindingsV555();}\n    catch(err){if(target)target.innerHTML=\"<p class='error'>Could not load findings: \"+esc(err.message||err)+\"</p>\";}\n  }\n  async function loadIntelligenceInvestigationsV555(){\n    const target=$('intelligenceInvestigatedFindingsV555');if(target)target.innerHTML=\"<p class='orbit-muted'>Loading investigations\u2026</p>\";\n    try{const data=await api('/api/admin/intelligence/recommendations?status=investigate&limit=120',{timeoutMs:30000,cacheMs:0});orbitIntelligenceInvestigationsV555=Array.isArray(data.recommendations)?data.recommendations:[];if(target)target.innerHTML=orbitIntelligenceInvestigationsV555.length?orbitIntelligenceInvestigationsV555.map(row=>recommendationCardV545(row,false)).join(''):\"<p class='orbit-muted'>No completed investigations yet.</p>\";}\n    catch(err){if(target)target.innerHTML=\"<p class='error'>Could not load investigations: \"+esc(err.message||err)+\"</p>\";}\n  }\n  async function runEngineeringReviewV545(){\n    if(orbitIntelligenceCommandBusyV545)return;orbitIntelligenceCommandBusyV545=true;const button=$('runEngineeringReviewV545'),status=$('intelligenceCommandStatusV545');if(button){button.disabled=true;button.textContent='Reviewing source\u2026';}if(status){status.dataset.state='working';status.textContent='Engineering Review is scanning approved source and Development state. It has no code, customer, provider or deployment write tools.';}\n    try{const data=await api('/api/admin/intelligence/engineering-review/run',{method:'POST',body:JSON.stringify({}),timeoutMs:120000,cacheMs:0});orbitIntelligenceCommandV545=null;await loadOrbitIntelligenceCommandCentreV545(true);await loadIntelligenceRecommendationsV545();setNotice('Engineering Review completed: '+Number(data.run?.findingCount||0)+' finding(s) automatically triaged. No routine operator decisions or production changes were required.');}\n    catch(err){renderIntelligenceCommandErrorV545(err);setNotice('Engineering Review could not complete: '+(err.message||err),true);}finally{orbitIntelligenceCommandBusyV545=false;if(button){button.disabled=false;button.textContent='Run Engineering Review';}}\n  }\n  async function runSystemHealthV546(){\n    if(orbitIntelligenceCommandBusyV545)return;orbitIntelligenceCommandBusyV545=true;const button=$('runSystemHealthV546'),status=$('intelligenceSystemHealthV546');if(button){button.disabled=true;button.textContent='Checking\u2026';}if(status){status.dataset.state='working';status.textContent='System Health is checking runtime and recent scheduled-job evidence. It cannot restart jobs, change settings or call providers.';}\n    try{await api('/api/admin/intelligence/system-health/run',{method:'POST',body:'{}',timeoutMs:45000,cacheMs:0});orbitIntelligenceCommandV545=null;await loadOrbitIntelligenceCommandCentreV545(true);setNotice('System Health completed. Read-only check only; nothing was restarted or changed.');}\n    catch(err){if(status){status.dataset.state='error';status.textContent='System Health could not complete: '+(err.message||err);}setNotice('System Health could not complete: '+(err.message||err),true);}finally{orbitIntelligenceCommandBusyV545=false;if(button){button.disabled=false;button.textContent='Run System Health';}}\n  }\n  async function runDeploymentGuardianV54601(){\n    if(orbitIntelligenceCommandBusyV545)return;orbitIntelligenceCommandBusyV545=true;const button=$('runDeploymentGuardianV54601'),status=$('intelligenceDeploymentGuardianV54601');if(button){button.disabled=true;button.textContent='Reviewing deploys\u2026';}if(status){status.dataset.state='working';status.textContent='Deployment Guardian is reading recent release, rollback and package evidence. It cannot deploy, roll back or contact Shopify.';}\n    try{await api('/api/admin/intelligence/deployment-guardian/run',{method:'POST',body:'{}',timeoutMs:70000,cacheMs:0});orbitIntelligenceCommandV545=null;await loadOrbitIntelligenceCommandCentreV545(true);setNotice('Deployment Guardian completed. Read-only review only; no deployment or rollback action was performed.');}\n    catch(err){if(status){status.dataset.state='error';status.textContent='Deployment Guardian could not complete: '+(err.message||err);}setNotice('Deployment Guardian could not complete: '+(err.message||err),true);}finally{orbitIntelligenceCommandBusyV545=false;if(button){button.disabled=false;button.textContent='Run Deployment Guardian';}}\n  }\n  async function runNightShiftV547(){\n    if(orbitIntelligenceCommandBusyV545)return;orbitIntelligenceCommandBusyV545=true;const button=$('runNightShiftV547'),status=$('intelligenceNightShiftV547');if(button){button.disabled=true;button.textContent='Running full review\u2026';}if(status){status.dataset.state='working';status.textContent='Running a manual full review now. Persistent Night Shift monitoring continues independently in the background; neither path can deploy, send, charge or alter providers.';}\n    try{await api('/api/admin/intelligence/night-shift/run',{method:'POST',body:'{}',timeoutMs:180000,cacheMs:0});orbitIntelligenceCommandV545=null;await Promise.all([loadOrbitIntelligenceCommandCentreV545(true),loadIntelligenceRecommendationsV545()]);setNotice('Full Intelligence review completed. Persistent Night Shift remains active; no production changes were performed.');}\n    catch(err){if(status){status.dataset.state='error';status.textContent='Night Shift could not complete: '+(err.message||err);}setNotice('Night Shift could not complete: '+(err.message||err),true);}finally{orbitIntelligenceCommandBusyV545=false;if(button){button.disabled=false;button.textContent='Run full review now';}}\n  }\n  async function runSpecialistAgentV552(agentId,button){\n    if(!agentId||orbitIntelligenceCommandBusyV545)return;\n    let budgetUsd=null;if(agentId==='development-agent'||agentId==='roadmap-developer'){const label=agentId==='roadmap-developer'?'Roadmap sandbox build':'Development build';const raw=window.prompt('Approve a paid-AI ceiling for this manual '+label+' ($10 to $20).','10');if(raw===null)return;budgetUsd=Number(raw);if(!Number.isFinite(budgetUsd)||budgetUsd<10||budgetUsd>20){setNotice('Choose a Development AI budget from $10 to $20.',true);return;}}\n    orbitIntelligenceCommandBusyV545=true;\n    const original=button?.textContent||'Run now';if(button){button.disabled=true;button.textContent='Running\u2026';}\n    try{\n      const data=await api('/api/admin/intelligence/agents/'+encodeURIComponent(agentId)+'/run',{method:'POST',body:JSON.stringify(budgetUsd==null?{}:{budgetUsd}),timeoutMs:180000,cacheMs:0});\n      orbitIntelligenceCommandV545=null;await loadOrbitIntelligenceCommandCentreV545(true);\n      const name=data.run?.title||agentId,sandboxWrites=Number(data.run?.sandboxWrites||data.run?.sandboxBuild?.ready||data.run?.built||0);setNotice(name+' completed. '+(sandboxWrites?'Sandbox implementation created; ':'')+'no production source, provider, customer or deployment change was performed.');\n    }catch(err){setNotice('Agent run could not complete: '+(err.message||err),true);}\n    finally{orbitIntelligenceCommandBusyV545=false;if(button){button.disabled=false;button.textContent=original;}}\n  }\n  async function intelligenceRecommendationActionV545(id,action){\n    if(!id||!action)return;const button=document.querySelector('[data-intelligence-rec-id-v545=\"'+CSS.escape(id)+'\"][data-intelligence-rec-action-v545=\"'+CSS.escape(action)+'\"]');if(button){button.disabled=true;button.textContent=action==='investigate'?'Investigating\u2026':'Saving\u2026';}\n    try{const data=await api('/api/admin/intelligence/recommendations/'+encodeURIComponent(id)+'/action',{method:'POST',body:JSON.stringify({action}),timeoutMs:action==='investigate'?70000:30000,cacheMs:0});orbitIntelligenceCommandV545=null;await Promise.all([loadOrbitIntelligenceCommandCentreV545(true),loadIntelligenceRecommendationsV545()]);const messages={approve:'Approved for future development. It has left the Needs decision queue; nothing was executed or deployed.',investigate:'Read-only investigation completed. It has left the Needs decision queue; open the Investigated filter to read the result.',hold:'Recommendation held and removed from the Needs decision queue.',dismiss:'Recommendation dismissed and removed from the Needs decision queue.',reopen:'Recommendation returned to the Needs decision queue.'};setNotice(messages[action]||'Recommendation updated. No production change was executed.');return data;}\n    catch(err){setNotice((action==='investigate'?'Investigation failed: ':'Could not update recommendation: ')+(err.message||err),true);}finally{if(button)button.disabled=false;}\n  }\n  async function updateAgentScheduleV557(agentId,action,intervalMinutes,button){\n    if(button)button.disabled=true;\n    try{await api('/api/admin/intelligence/orchestration/'+encodeURIComponent(agentId),{method:'POST',body:JSON.stringify({action,intervalMinutes}),timeoutMs:30000,cacheMs:0});orbitIntelligenceCommandV545=null;await loadOrbitIntelligenceCommandCentreV545(true);setNotice('Agent schedule updated. Permission authority was not changed.');}\n    catch(err){setNotice('Could not update agent schedule: '+(err.message||err),true);}finally{if(button)button.disabled=false;}\n  }\n  async function runAutomaticAgentV557UI(agentId,button){\n    if(button){button.disabled=true;button.textContent='Checking\u2026';}\n    try{await api('/api/admin/intelligence/orchestration/'+encodeURIComponent(agentId)+'/run-now',{method:'POST',body:'{}',timeoutMs:180000,cacheMs:0});orbitIntelligenceCommandV545=null;await loadOrbitIntelligenceCommandCentreV545(true);setNotice('Agent check completed. Scheduling and permission ceiling remain unchanged.');}\n    catch(err){setNotice('Agent check could not complete: '+(err.message||err),true);}finally{if(button){button.disabled=false;button.textContent='Check now';}}\n  }\n  document.getElementById('runEngineeringReviewV545')?.addEventListener('click',runEngineeringReviewV545);\n  document.getElementById('runSystemHealthV546')?.addEventListener('click',runSystemHealthV546);\n  document.getElementById('runDeploymentGuardianV54601')?.addEventListener('click',runDeploymentGuardianV54601);\n  document.getElementById('runNightShiftV547')?.addEventListener('click',runNightShiftV547);\n  document.getElementById('refreshIntelligenceCommandV545')?.addEventListener('click',()=>loadOrbitIntelligenceCommandCentreV545(true).catch(renderIntelligenceCommandErrorV545));\n  document.getElementById('refreshIntelligenceRecommendationsV545')?.addEventListener('click',loadIntelligenceRecommendationsV545);\n  document.getElementById('intelligenceRecommendationFilterV545')?.addEventListener('change',loadIntelligenceRecommendationsV545);\n  document.getElementById('intelligenceFindingSearchV555')?.addEventListener('input',renderIntelligenceFindingsV555);\n  document.getElementById('intelligenceFindingSeverityV555')?.addEventListener('change',renderIntelligenceFindingsV555);\n  ['intelligenceAgentSearchV555','intelligenceAgentFamilyV555','intelligenceAgentPermissionV555','intelligenceAgentExecutionV555'].forEach(id=>document.getElementById(id)?.addEventListener(id.includes('Search')?'input':'change',()=>renderIntelligenceAgentsV545(orbitIntelligenceCommandV545?.agents||[])));\n  document.getElementById('intelligenceDiagnosticsRangeV577')?.addEventListener('change',toggleIntelligenceDiagnosticsCustomV577);\n  document.getElementById('exportIntelligenceDiagnosticsV577')?.addEventListener('click',exportIntelligenceDiagnosticsV577);\n  toggleIntelligenceDiagnosticsCustomV577();\n  ['intelligenceOnDemandSearchV557','intelligenceOnDemandFamilyV557'].forEach(id=>document.getElementById(id)?.addEventListener(id.includes('Search')?'input':'change',()=>renderIntelligenceOnDemandV557(orbitIntelligenceCommandV545?.agents||[])));\n  ['intelligenceHandoffSearchV555','intelligenceHandoffSeverityV555'].forEach(id=>document.getElementById(id)?.addEventListener(id.includes('Search')?'input':'change',()=>renderAgentHandoffsV553(orbitIntelligenceCommandV545?.agentHandoffs||[],orbitIntelligenceCommandV545?.collaboration||null)));\n  document.getElementById('refreshIntelligenceAgentsV555')?.addEventListener('click',()=>loadOrbitIntelligenceCommandCentreV545(true).catch(renderIntelligenceCommandErrorV545));\n  document.getElementById('refreshIntelligenceOnDemandV557')?.addEventListener('click',()=>loadOrbitIntelligenceCommandCentreV545(true).catch(renderIntelligenceCommandErrorV545));\n  document.getElementById('refreshIntelligenceCostV556')?.addEventListener('click',()=>loadOrbitIntelligenceCommandCentreV545(true).catch(renderIntelligenceCommandErrorV545));\n  document.getElementById('refreshIntelligenceHandoffsV555')?.addEventListener('click',()=>loadOrbitIntelligenceCommandCentreV545(true).catch(renderIntelligenceCommandErrorV545));\n  document.getElementById('refreshIntelligenceInvestigationsV555')?.addEventListener('click',()=>Promise.all([loadOrbitIntelligenceCommandCentreV545(true),loadIntelligenceInvestigationsV555()]).catch(renderIntelligenceCommandErrorV545));\n  document.addEventListener('click',event=>{const jump=event.target.closest('[data-intelligence-jump-v545]');if(jump)setOrbitIntelligenceTab(jump.dataset.intelligenceJumpV545);const ask=event.target.closest('[data-intelligence-ask-rec-v545]');if(ask){setOrbitIntelligenceTab('assistant');const input=$('orbitIntelligenceQuestion');if(input){input.value='Explain this Engineering Review recommendation and help me decide whether to approve it: '+String(ask.dataset.intelligenceAskTitleV545||ask.dataset.intelligenceAskRecV545);input.focus();}}const runAgent=event.target.closest('[data-intelligence-agent-run-v552]');if(runAgent)runSpecialistAgentV552(runAgent.dataset.intelligenceAgentRunV552,runAgent);const scheduleAction=event.target.closest('[data-intelligence-schedule-action-v557]');if(scheduleAction)updateAgentScheduleV557(scheduleAction.dataset.intelligenceScheduleActionV557,scheduleAction.dataset.action,null,scheduleAction);const autoRun=event.target.closest('[data-intelligence-auto-run-v557]');if(autoRun)runAutomaticAgentV557UI(autoRun.dataset.intelligenceAutoRunV557,autoRun);const onDemand=event.target.closest('[data-intelligence-on-demand-action-v557]');if(onDemand)setOrbitIntelligenceTab(onDemand.dataset.intelligenceOnDemandActionV557);const action=event.target.closest('[data-intelligence-rec-action-v545]');if(action)intelligenceRecommendationActionV545(action.dataset.intelligenceRecIdV545,action.dataset.intelligenceRecActionV545);});\n  document.addEventListener('change',event=>{const cadence=event.target.closest('[data-intelligence-cadence-v557]');if(cadence)updateAgentScheduleV557(cadence.dataset.intelligenceCadenceV557,'cadence',Number(cadence.value),cadence);});\n\n  function setOrbitIntelligenceTab(tab){\n    const allowed=['overview','assistant','agents','ondemand','cost','recommendations','investigations','handoffs','knowledge','incidents','protected-systems'],value=allowed.includes(tab)?tab:'overview';\n    const panes={overview:document.getElementById('orbitIntelligenceOverviewPane'),assistant:document.getElementById('orbitIntelligenceAssistantPane'),agents:document.getElementById('orbitIntelligenceAgentsPane'),ondemand:document.getElementById('orbitIntelligenceOnDemandPane'),cost:document.getElementById('orbitIntelligenceCostPane'),recommendations:document.getElementById('orbitIntelligenceRecommendationsPane'),investigations:document.getElementById('orbitIntelligenceInvestigationsPane'),handoffs:document.getElementById('orbitIntelligenceHandoffsPane'),knowledge:document.getElementById('orbitIntelligenceKnowledgePane'),incidents:document.getElementById('orbitIntelligenceIncidentsPane'),'protected-systems':document.getElementById('orbitIntelligenceProtectedSystemsPane')};\n    Object.entries(panes).forEach(([key,pane])=>{if(pane)pane.hidden=key!==value;});\n    document.querySelectorAll(\"[data-orbit-intelligence-tab]\").forEach(button=>button.classList.toggle(\"active\",button.dataset.orbitIntelligenceTab===value));\n    document.querySelectorAll(\"[data-intelligence-open]\").forEach(button=>{const active=button.dataset.intelligenceOpen===value;button.classList.toggle(\"active\",active);button.setAttribute(\"aria-selected\",String(active));if(active)button.setAttribute(\"aria-current\",\"page\");else button.removeAttribute(\"aria-current\");});\n    try{sessionStorage.setItem(\"orbit-intelligence-tab\",value);}catch(_){}\n    state.currentIntelligencePaneV618=value;if(!state.adminAuthenticated)return;\n    if(['agents','ondemand'].includes(value))loadAgentDirectoryV618().catch(()=>{});\n    if(['overview','cost','handoffs','investigations'].includes(value))loadOrbitIntelligenceCommandCentreV545().then(()=>{if(value==='investigations')loadIntelligenceInvestigationsV555();}).catch(renderIntelligenceCommandErrorV545);\n    if(value==='recommendations')loadIntelligenceRecommendationsV545();\n    if(value==='knowledge'){loadOrbitIntelligence().catch(renderOrbitIntelligenceError);if(orbitKnowledgeViewV702==='engineering-manual')loadEngineeringManualV702(false).catch(err=>renderReferenceErrorV702('orbitEngineeringManualArticleV702',err));}\n    if(value==='incidents')loadOrbitIncidentsV702(false).catch(err=>renderReferenceErrorV702('orbitIncidentListV702',err));\n    if(value==='protected-systems')loadProtectedSystemsV702(false).catch(err=>renderReferenceErrorV702('orbitProtectedSystemListV702',err));\n    if(value===\"assistant\")document.getElementById(\"orbitIntelligenceQuestion\")?.focus();\n  }\n  document.querySelectorAll(\"[data-orbit-intelligence-tab]\").forEach(button=>button.addEventListener(\"click\",()=>setOrbitIntelligenceTab(button.dataset.orbitIntelligenceTab)));\n  document.querySelectorAll(\"[data-intelligence-open]\").forEach(button=>button.addEventListener(\"click\",()=>setOrbitIntelligenceTab(button.dataset.intelligenceOpen)));\n  try{orbitKnowledgeViewV702=sessionStorage.getItem(\"orbit-knowledge-view-v702\")===\"engineering-manual\"?\"engineering-manual\":\"handbook\";}catch(_e){orbitKnowledgeViewV702=\"handbook\";}\n  setKnowledgeViewV702(orbitKnowledgeViewV702);\n  try{setOrbitIntelligenceTab(sessionStorage.getItem(\"orbit-intelligence-tab\")||\"overview\");}catch(_){setOrbitIntelligenceTab(\"overview\");}\n\n  document.querySelectorAll(\"[data-reference-knowledge-open-v702]\").forEach(button=>button.addEventListener(\"click\",()=>setKnowledgeViewV702(button.dataset.referenceKnowledgeOpenV702)));\n  document.getElementById(\"refreshEngineeringManualV702\")?.addEventListener(\"click\",()=>loadEngineeringManualV702(true).catch(err=>renderReferenceErrorV702(\"orbitEngineeringManualArticleV702\",err)));\n  document.getElementById(\"orbitEngineeringManualSearchV702\")?.addEventListener(\"input\",function(){const reference=orbitReferenceCacheV702.engineeringManual;if(reference)renderEngineeringManualV702(reference,this.value);});\n  document.getElementById(\"orbitEngineeringManualNavV702\")?.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-engineering-heading-v702]\");if(!button)return;document.getElementById(\"orbit-engineering-heading-v702-\"+button.dataset.engineeringHeadingV702)?.scrollIntoView({behavior:\"smooth\",block:\"start\"});});\n  document.getElementById(\"refreshOrbitIncidentsV702\")?.addEventListener(\"click\",()=>loadOrbitIncidentsV702(true).catch(err=>renderReferenceErrorV702(\"orbitIncidentListV702\",err)));\n  document.getElementById(\"orbitIncidentSearchV702\")?.addEventListener(\"input\",renderIncidentsV702);\n  document.getElementById(\"orbitIncidentStatusV702\")?.addEventListener(\"change\",renderIncidentsV702);\n  document.getElementById(\"refreshProtectedSystemsV702\")?.addEventListener(\"click\",()=>loadProtectedSystemsV702(true).catch(err=>renderReferenceErrorV702(\"orbitProtectedSystemListV702\",err)));\n\n  document.getElementById('newOrbitConversationButton')?.addEventListener('click',newOrbitConversationV543);\n  document.getElementById(\"orbitIntelligenceAnswer\")?.addEventListener(\"click\",function(event){const button=event.target.closest(\"[data-orbit-page]\");if(!button)return;const page=normaliseOrbitKnowledgePages(orbitKnowledgePages).find(function(p){return p.slug===button.dataset.orbitPage;});if(page){setOrbitIntelligenceTab(\"knowledge\");showOrbitKnowledgePage(page);}});\n  document.getElementById(\"orbitKnowledgeSearch\")?.addEventListener(\"input\",function(){\n    const input=this, q=input.value.trim();\n    clearTimeout(orbitKnowledgeSearchTimer);\n    orbitKnowledgeSearchTimer=setTimeout(async function(){\n      if(!q){\n        Object.keys(groupOrbitKnowledgePages(orbitKnowledgePages)).forEach(function(name){orbitKnowledgeCollapsed.add(name);});\n        renderOrbitKnowledgeNav(orbitKnowledgePages);\n        return;\n      }\n      const terms=q.toLowerCase().split(/\\s+/).filter(Boolean);\n      const matches=orbitKnowledgePages.map(function(page){\n        const haystack=(page.title+\" \"+page.summary+\" \"+page.category).toLowerCase();\n        const score=terms.reduce(function(total,term){return total+(haystack.includes(term)?2:0);},0)\n          +(page.title.toLowerCase().includes(q.toLowerCase())?6:0)\n          +(page.category.toLowerCase().includes(q.toLowerCase())?2:0);\n        return {page:page,score:score};\n      }).filter(function(item){return item.score>0;}).sort(function(a,b){return b.score-a.score||a.page.order-b.page.order;}).slice(0,60).map(function(item){return item.page;});\n      if(input.value.trim()!==q) return;\n      orbitKnowledgeCollapsed.clear();\n      renderOrbitKnowledgeNav(matches);\n    },180);\n  });\n  document.getElementById(\"refreshOrbitIntelligenceButton\")?.addEventListener(\"click\",async function(){\n    const button=this;\n    const selectedSlug=orbitKnowledgeCurrent&&orbitKnowledgeCurrent.slug&&!String(orbitKnowledgeCurrent.slug).startsWith(\"__\")?orbitKnowledgeCurrent.slug:\"\";\n    const search=document.getElementById(\"orbitKnowledgeSearch\");\n    const searchValue=search?search.value:\"\";\n    const article=document.getElementById(\"orbitKnowledgeArticle\");\n    const articleTop=article?article.getBoundingClientRect().top:0;\n    const original=button.textContent;\n    button.disabled=true;button.textContent=\"Refreshing\u2026\";\n    try{\n      orbitKnowledgePageCache.clear();\n      orbitKnowledgeLoaded=false;\n      await loadOrbitIntelligence(true);\n      const selected=selectedSlug?orbitKnowledgePages.find(function(page){return page.slug===selectedSlug;}):null;\n      if(selected) await showOrbitKnowledgePage(selected);\n      if(search){search.value=searchValue;search.dispatchEvent(new Event(\"input\",{bubbles:true}));}\n      requestAnimationFrame(function(){\n        if(!article)return;\n        const delta=article.getBoundingClientRect().top-articleTop;\n        if(Math.abs(delta)>1) window.scrollBy({top:delta,behavior:\"auto\"});\n      });\n      setNotice(\"Orbit Intelligence refreshed. Current chapter preserved.\");\n    }catch(err){renderOrbitIntelligenceError(err);setNotice(\"Could not refresh Orbit Intelligence: \"+(err.message||err),true);}\n    finally{button.disabled=false;button.textContent=original||\"Refresh Intelligence\";}\n  });\n  document.getElementById(\"refreshOrbitIntelligenceTopButton\")?.addEventListener(\"click\",async function(){const top=this,hidden=document.getElementById(\"refreshOrbitIntelligenceButton\"),original=top.textContent;top.disabled=true;top.classList.add(\"is-working\");top.textContent=\"Refreshing Intelligence\u2026\";try{hidden?.click();let waited=0;while(hidden?.disabled&&waited<30000){await new Promise(r=>setTimeout(r,150));waited+=150;}top.textContent=\"Intelligence refreshed\";top.classList.remove(\"is-working\");top.classList.add(\"is-success\");setTimeout(()=>{top.classList.remove(\"is-success\");top.textContent=original||\"Refresh Intelligence\";top.disabled=false;},1400);}catch(err){top.classList.remove(\"is-working\");top.textContent=\"Refresh failed\";setTimeout(()=>{top.textContent=original||\"Refresh Intelligence\";top.disabled=false;},1800);}});\n  document.getElementById(\"orbitIntelligenceHealthButton\")?.addEventListener(\"click\",async function(){\n    const article=document.getElementById(\"orbitKnowledgeArticle\");\n    if(article) article.innerHTML=\"<div class='orbit-knowledge-loading' role='status'>Running Intelligence health check\u2026</div>\";\n    try{\n      const data=await api(\"/api/admin/intelligence/health\"), health=data.health||{};\n      orbitKnowledgeCurrent={slug:\"__health\",title:\"Intelligence Health\",summary:\"Live diagnostic status for the Orbit knowledge system.\",category:\"Orbit Intelligence\",content:\"\"};\n      document.getElementById(\"orbitKnowledgeCategory\").textContent=\"Orbit Intelligence\";\n      document.getElementById(\"orbitKnowledgeTitle\").textContent=\"Intelligence Health\";\n      document.getElementById(\"orbitKnowledgeSummary\").textContent=\"Live diagnostic status for the Orbit knowledge system.\";\n      document.getElementById(\"orbitKnowledgeUpdated\").textContent=\"Generated \"+new Date(health.generatedAt).toLocaleString(\"en-GB\");\n      document.getElementById(\"editOrbitKnowledgeButton\").hidden=true;\n      if(article) article.innerHTML=\"<div class='orbit-health-grid'>\"+[\n        [\"Version\",health.version],[\"Build\",health.build],[\"Handbook pages\",health.pageCount],[\"Duplicate slugs\",health.duplicateSlugStatus],[\"Documentation integrity\",health.documentationIntegrity],[\"Search index\",health.searchIndexStatus],\n        [\"Metadata cache\",health.cache&&health.cache.metadataWarm?\"Warm\":\"Cold\"],[\"Cached pages\",health.cache?health.cache.cachedPages:0],[\"Cache TTL\",health.cache?Math.round(health.cache.ttlMs/1000)+\" seconds\":\"Unknown\"]\n      ].map(item=>\"<section><span>\"+esc(item[0])+\"</span><strong>\"+esc(item[1])+\"</strong></section>\").join(\"\")+\"</div>\";\n    }catch(err){if(article)article.innerHTML=\"<p class='error'>\"+esc(err.message||err)+\"</p>\";}\n  });\n  document.getElementById(\"askOrbitIntelligenceButton\")?.addEventListener(\"click\",function(){askOrbitIntelligence();});\n  document.getElementById(\"orbitIntelligenceQuestion\")?.addEventListener(\"keydown\",function(event){\n    if(event.isComposing || event.key!==\"Enter\") return;\n    if(event.shiftKey) return;\n    event.preventDefault();\n    askOrbitIntelligence();\n  });\n  document.addEventListener('click',event=>{const button=event.target.closest('[data-orbit-question]');if(button)askOrbitIntelligence(button.dataset.orbitQuestion);});\n  document.getElementById(\"editOrbitKnowledgeButton\")?.addEventListener(\"click\",openOrbitKnowledgeEditor);\n  document.getElementById(\"closeOrbitKnowledgeEditor\")?.addEventListener(\"click\",function(){document.getElementById(\"orbitKnowledgeEditDialog\")?.close();});\n  document.getElementById(\"saveOrbitKnowledgeButton\")?.addEventListener(\"click\",saveOrbitKnowledgePage);\n\n\n  // Orbit OS V126 \u2014 persistent Development Hub and contextual Review Notes.\n  let orbitReviewScreenshots=[];\n  let orbitReviewAttachments=[];\n  let orbitDevelopmentNotes=[];\n  let orbitRoadmapItems=[];\n  let orbitDevelopmentCommentScreenshots=[];\n  const orbitVerificationDraftsV149=new Map();\n  const orbitVerificationEvidenceV149=new Map();\n  let orbitOpenVerificationNoteV149=null;\n  function acceptanceReadyAtV239(note){\n    const history=Array.isArray(note?.lifecycleHistory)?note.lifecycleHistory:[];\n    const transition=history.find(function(item){return String(item?.to||item?.status||'')==='Ready for Testing';});\n    const raw=transition?.changedAt||transition?.createdAt||note?.implementationEvidence?.recordedAt||note?.releaseReadyAt||note?.createdAt||'';\n    const time=Date.parse(raw);\n    return Number.isFinite(time)?time:Number.MAX_SAFE_INTEGER;\n  }\n  function stableAcceptanceRowsV239(notes){\n    const key='orbit-acceptance-order-v239';\n    let saved=[];\n    try{saved=JSON.parse(localStorage.getItem(key)||'[]');if(!Array.isArray(saved))saved=[];}catch(_){saved=[];}\n    const currentIds=new Set(notes.map(function(note){return String(note.id||'');}));\n    saved=saved.filter(function(id){return currentIds.has(String(id));});\n    notes.slice().sort(function(a,b){return acceptanceReadyAtV239(a)-acceptanceReadyAtV239(b)||String(a.id||'').localeCompare(String(b.id||''));}).forEach(function(note){const id=String(note.id||'');if(id&&!saved.includes(id))saved.push(id);});\n    try{localStorage.setItem(key,JSON.stringify(saved));}catch(_){}\n    const rank=new Map(saved.map(function(id,index){return [String(id),index];}));\n    return notes.slice().sort(function(a,b){return (rank.get(String(a.id||''))??Number.MAX_SAFE_INTEGER)-(rank.get(String(b.id||''))??Number.MAX_SAFE_INTEGER)||String(a.id||'').localeCompare(String(b.id||''));});\n  }\n  function saveVerificationDraftV149(noteId,value){orbitVerificationDraftsV149.set(noteId,String(value||''));try{sessionStorage.setItem('orbit-verification-draft-'+noteId,String(value||''));}catch(_){}}\n  function getVerificationDraftV149(noteId){if(orbitVerificationDraftsV149.has(noteId))return orbitVerificationDraftsV149.get(noteId);try{return sessionStorage.getItem('orbit-verification-draft-'+noteId)||'';}catch(_){return '';}}\n  function clearVerificationDraftV149(noteId){orbitVerificationDraftsV149.delete(noteId);try{sessionStorage.removeItem('orbit-verification-draft-'+noteId);}catch(_){}}\n  function orbitCurrentModule(){return document.querySelector('.orbit-module.active')?.dataset.module||state.currentModule||'';}\n  function orbitSelectedTab(){const active=document.querySelector('.orbit-module.active [role=\"tab\"].active,.orbit-module.active .active[data-tab],.orbit-module.active button.active[data-engagement-tab],.orbit-module.active button.active[data-settings-tab]');return active?.textContent?.trim()||active?.dataset?.tab||active?.dataset?.engagementTab||'';}\n  function orbitSelectedRecord(){const active=document.querySelector('.orbit-module.active');const selected=active?.querySelector('[aria-selected=\"true\"],[data-selected=\"true\"],tr.active,.selected');return selected?.dataset?.memberId||selected?.dataset?.id||selected?.textContent?.trim()?.slice(0,240)||'';}\n  function captureOrbitReviewContext(forceSurface=false){const mod=orbitCurrentModule();const active=document.querySelector('.orbit-module.active');const workspace=moduleWorkspaceMap[mod]||'home';const workspaceConfig=adminWorkspaceConfig[workspace]||adminWorkspaceConfig.home;const reviewActive=forceSurface&&mod==='development'&&!document.getElementById('orbitReviewSurfacePanel')?.hidden;const reviewUrl=String(document.getElementById('orbitReviewSurfaceUrl')?.value||'').trim();const reviewName=document.getElementById('orbitReviewSurfaceName')?.textContent?.trim()||'';const activeSurface=document.querySelector('[data-review-surface].active')?.dataset.reviewSurface||'';const persona=activeSurface==='members-pending'?'pending':activeSurface==='members-active'?'active':'';return {product:reviewActive?(activeSurface.startsWith('members')?'members-area':activeSurface):'admin-os',persona,reviewMode:reviewActive,page:reviewActive?(reviewName||'Orbit Studio Review'):workspaceConfig.title||document.title,module:reviewActive?'review-'+(document.querySelector('[data-review-surface].active')?.dataset.reviewSurface||'custom'):mod,url:reviewActive&&reviewUrl?reviewUrl:location.href,pageTitle:reviewActive?(reviewName||reviewUrl):active?.querySelector('h1,h2')?.textContent?.trim()||workspaceConfig.title||document.title,selectedTab:reviewActive?'Live Review Studio':orbitSelectedTab(),selectedRecord:orbitSelectedRecord(),orbitVersion:'V716.0.0',handbookVersion:'V716.0.0',viewport:innerWidth+' \u00D7 '+innerHeight,device:innerWidth<768?'Mobile':innerWidth<1100?'Tablet':'Desktop',browser:navigator.userAgent,visibleHeadings:[...(active?.querySelectorAll('h1,h2,h3')||[])].filter(el=>{const r=el.getBoundingClientRect();return r.bottom>0&&r.top<innerHeight;}).map(el=>el.textContent.trim()).filter(Boolean).slice(0,12),capturedAt:new Date().toISOString()};}\n  function openOrbitDialog(dialog){\n    if(!dialog) throw new Error('The requested Orbit OS panel is not available on this page.');\n    if(dialog.open) return;\n    if(typeof dialog.showModal==='function') dialog.showModal();\n    else { dialog.setAttribute('open',''); dialog.style.display='block'; }\n  }\n  function closeOrbitDialog(dialog){\n    if(!dialog) return;\n    if(typeof dialog.close==='function' && dialog.open) dialog.close();\n    else { dialog.removeAttribute('open'); dialog.style.display='none'; }\n  }\n  const ORBIT_QUICK_NOTE_DRAFT_KEY=\"orbitQuickNoteDraftV415\";\n  function quickNoteDraftV415(){try{return JSON.parse(localStorage.getItem(ORBIT_QUICK_NOTE_DRAFT_KEY)||\"null\");}catch(_){return null;}}\n  function saveQuickNoteDraftV415(){const dialog=document.getElementById('orbitReviewNoteDialog');if(!dialog)return;const payload={description:document.getElementById('reviewNoteDescription')?.value||'',title:document.getElementById('reviewNoteTitle')?.value||'',expected:document.getElementById('reviewNoteExpected')?.value||'',actual:document.getElementById('reviewNoteActual')?.value||'',type:document.getElementById('reviewNoteType')?.value||'Improvement',priority:document.getElementById('reviewNotePriority')?.value||'Normal',status:document.getElementById('reviewNoteStatus')?.value||'Open',context:dialog.dataset.context||'',screenshots:orbitReviewScreenshots,attachments:orbitReviewAttachments,updatedAt:new Date().toISOString()};try{localStorage.setItem(ORBIT_QUICK_NOTE_DRAFT_KEY,JSON.stringify(payload));document.getElementById('orbitReviewNotesFloatingButton')?.classList.add('has-draft');}catch(_){const safe={...payload,screenshots:[],attachments:[]};try{localStorage.setItem(ORBIT_QUICK_NOTE_DRAFT_KEY,JSON.stringify(safe));}catch(__){}}}\n  function clearQuickNoteDraftV415(){try{localStorage.removeItem(ORBIT_QUICK_NOTE_DRAFT_KEY);}catch(_){}document.getElementById('orbitReviewNotesFloatingButton')?.classList.remove('has-draft');}\n  function restoreQuickNoteDraftV415(draft){if(!draft)return false;const set=(id,value)=>{const el=document.getElementById(id);if(el)el.value=value||'';};set('reviewNoteDescription',draft.description);set('reviewNoteTitle',draft.title);set('reviewNoteExpected',draft.expected);set('reviewNoteActual',draft.actual);set('reviewNoteType',draft.type||'Improvement');set('reviewNotePriority',draft.priority||'Normal');set('reviewNoteStatus',draft.status||'Open');orbitReviewScreenshots=Array.isArray(draft.screenshots)?draft.screenshots:[];orbitReviewAttachments=Array.isArray(draft.attachments)?draft.attachments:[];renderReviewEvidenceV563();const dialog=document.getElementById('orbitReviewNoteDialog');if(dialog&&draft.context)dialog.dataset.context=draft.context;document.getElementById('orbitReviewNotesFloatingButton')?.classList.add('has-draft');return true;}\n  function openOrbitReviewNote(forceSurface=false){\n    const dialog=document.getElementById('orbitReviewNoteDialog');\n    try{\n      const context=captureOrbitReviewContext(forceSurface),draft=quickNoteDraftV415();\n      orbitReviewScreenshots=[];\n      orbitReviewAttachments=[];\n      const preview=document.getElementById('reviewScreenshotPreview'); if(preview) preview.innerHTML='';\n      const title=document.getElementById('reviewNoteTitle'); if(title) title.value='';\n      const status=document.getElementById('reviewNoteStatus'); if(status) status.value='Open'; const type=document.getElementById('reviewNoteType'); if(type) type.value='Improvement'; const priority=document.getElementById('reviewNotePriority'); if(priority) priority.value='Normal';\n      const description=document.getElementById('reviewNoteDescription'); if(description) description.value='';\n      const expected=document.getElementById('reviewNoteExpected'); if(expected) expected.value='';\n      const actual=document.getElementById('reviewNoteActual'); if(actual) actual.value='';\n      const summary=document.getElementById('reviewNoteContextSummary'); if(summary) summary.textContent=(context.pageTitle||context.module||'Admin OS')+' \u00B7 '+context.device+' \u00B7 '+new Date(context.capturedAt).toLocaleString('en-GB');\n      const details=document.getElementById('reviewNoteContextDetails'); if(details) details.textContent=JSON.stringify(context,null,2);\n      if(!dialog) throw new Error('The Report Issue panel could not be found. Refresh Admin OS and try again.');\n      dialog.dataset.context=JSON.stringify(context);\n      if(draft)restoreQuickNoteDraftV415(draft);\n      openOrbitDialog(dialog);\n      setTimeout(()=>description?.focus(),60);\n    }catch(err){ setNotice('Could not open Report Issue: '+(err.message||err),true); }\n  }\n  function formatEvidenceBytesV563(value){const bytes=Number(value||0);if(!bytes)return '';if(bytes>=1000000)return (bytes/1000000).toFixed(bytes>=10000000?0:1)+' MB';if(bytes>=1000)return Math.round(bytes/1000)+' KB';return bytes+' B';}\n  function renderReviewEvidenceV563(){\n    const box=document.getElementById('reviewScreenshotPreview');if(!box)return;\n    const images=orbitReviewScreenshots.map((img,i)=>\"<figure><img src='\"+img.dataUrl+\"' alt='Pasted screenshot'><figcaption><span>\"+esc(img.name)+\"</span><button type='button' data-remove-review-image='\"+i+\"'>Remove</button></figcaption></figure>\");\n    const files=orbitReviewAttachments.map((file,i)=>\"<article class='orbit-file-evidence-v563'><div><strong>\uD83D\uDCCE \"+esc(file.name)+\"</strong><small>\"+esc(file.mimeType||'Document')+(file.uploadBytes?' \u00B7 '+formatEvidenceBytesV563(file.uploadBytes):'')+\"</small></div><button type='button' class='secondary' data-remove-review-file='\"+i+\"'>Remove</button></article>\");\n    box.innerHTML=images.concat(files).join('');\n  }\n  function renderReviewScreenshots(){renderReviewEvidenceV563();}\n  async function optimiseDevelopmentScreenshotV341(file){\n    if(!/^image\\/(png|jpeg|webp)$/i.test(file.type))throw new Error('Only PNG, JPG and WebP screenshots are supported.');\n    if(file.size>8000000)throw new Error((file.name||'Screenshot')+' is larger than 8 MB.');\n    if(file.size<=450000)return file;\n    let bitmap=null;\n    try{\n      bitmap=await createImageBitmap(file);\n      const maxDimension=1600;\n      const scale=Math.min(1,maxDimension/Math.max(bitmap.width,bitmap.height));\n      const width=Math.max(1,Math.round(bitmap.width*scale)),height=Math.max(1,Math.round(bitmap.height*scale));\n      const canvas=document.createElement('canvas');canvas.width=width;canvas.height=height;\n      const ctx=canvas.getContext('2d',{alpha:false});ctx.drawImage(bitmap,0,0,width,height);\n      const blob=await new Promise(resolve=>canvas.toBlob(resolve,'image/webp',0.84));\n      if(!blob||blob.size>=file.size)return file;\n      return new File([blob],String(file.name||'screenshot').replace(/\\.[^.]+$/,'')+'.webp',{type:'image/webp',lastModified:Date.now()});\n    }catch(_){return file;}finally{try{bitmap?.close?.();}catch(_){} }\n  }\n  function fileAsOrbitEvidenceV341(file,prefix='IMG'){\n    return new Promise((resolve,reject)=>{\n      const reader=new FileReader();\n      reader.onload=()=>resolve({id:prefix+'-'+Date.now()+'-'+Math.random().toString(16).slice(2),name:file.name||(prefix==='FILE'?'Attachment':'Pasted screenshot'),mimeType:file.type,dataUrl:reader.result,uploadBytes:file.size});\n      reader.onerror=reject;reader.readAsDataURL(file);\n    });\n  }\n  async function addReviewImageFile(file){\n    const optimised=await optimiseDevelopmentScreenshotV341(file);\n    const image=await fileAsOrbitEvidenceV341(optimised,'IMG');\n    orbitReviewScreenshots.push(image);renderReviewEvidenceV563();saveQuickNoteDraftV415();\n  }\n  const ORBIT_NOTE_FILE_TYPES_V563=new Set(['application/pdf','text/csv','text/plain','application/json','application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/vnd.ms-excel','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']);\n  function noteFileMimeV563(file){const type=String(file?.type||'').toLowerCase();if(type)return type;const ext=String(file?.name||'').toLowerCase().split('.').pop();return ({pdf:'application/pdf',csv:'text/csv',txt:'text/plain',json:'application/json',doc:'application/msword',docx:'application/vnd.openxmlformats-officedocument.wordprocessingml.document',xls:'application/vnd.ms-excel',xlsx:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'})[ext]||'';}\n  async function addReviewAttachmentFileV563(file){\n    const mimeType=noteFileMimeV563(file);\n    if(!ORBIT_NOTE_FILE_TYPES_V563.has(mimeType))throw new Error((file.name||'File')+' is not a supported note attachment. Use PDF, CSV, TXT, JSON, Word or Excel.');\n    if(Number(file.size||0)>3000000)throw new Error((file.name||'File')+' is larger than 3 MB.');\n    const currentBytes=orbitReviewAttachments.reduce((sum,item)=>sum+Number(item.uploadBytes||0),0);\n    if(currentBytes+Number(file.size||0)>6000000)throw new Error('Quick Note attachments are limited to 6 MB total.');\n    const normalised=new File([file],file.name,{type:mimeType,lastModified:file.lastModified||Date.now()});\n    const evidence=await fileAsOrbitEvidenceV341(normalised,'FILE');\n    orbitReviewAttachments.push(evidence);renderReviewEvidenceV563();saveQuickNoteDraftV415();\n  }\n  async function addReviewFiles(files){\n    const remaining=Math.max(0,12-orbitReviewScreenshots.length-orbitReviewAttachments.length);\n    for(const file of [...files].slice(0,remaining)){\n      try{if(String(file.type||'').startsWith('image/'))await addReviewImageFile(file);else await addReviewAttachmentFileV563(file);}catch(err){setNotice(err.message,true);}\n    }\n  }\n  async function saveOrbitReviewNote(){const button=document.getElementById('saveReviewNoteButton'),result=document.getElementById('reviewNoteResult'),descriptionInput=document.getElementById('reviewNoteDescription');if(!button||!result||!descriptionInput){setNotice('Review Note form could not be opened correctly. Refresh Admin OS and try again.',true);return;}const description=descriptionInput.value.trim();if(!description){result.hidden=false;result.textContent='Add a description before saving.';return;}const original=button.textContent;button.disabled=true;button.textContent='Saving\u2026';try{const context=JSON.parse(document.getElementById('orbitReviewNoteDialog').dataset.context||'{}');const data=await api('/api/admin/development-notes',{method:'POST',body:JSON.stringify({source:'quick_note',type:document.getElementById('reviewNoteType').value,priority:document.getElementById('reviewNotePriority').value,status:document.getElementById('reviewNoteStatus').value,title:document.getElementById('reviewNoteTitle').value,description,expectedBehaviour:document.getElementById('reviewNoteExpected').value,actualBehaviour:document.getElementById('reviewNoteActual').value,context,screenshots:orbitReviewScreenshots,attachments:orbitReviewAttachments})});if(!data?.note?.id)throw new Error('Orbit did not return a saved note ID. The note has not been confirmed.');clearQuickNoteDraftV415();orbitReviewScreenshots=[];orbitReviewAttachments=[];result.hidden=false;result.textContent='Saved as '+data.note.id+'.';setNotice('Quick Note saved and verified.');setTimeout(()=>closeOrbitDialog(document.getElementById('orbitReviewNoteDialog')),650);loadOrbitDevelopmentHub().catch(err=>setNotice('Note saved. Development Hub will refresh when reopened: '+(err.message||err),true));}catch(err){result.hidden=false;result.textContent=err.message||err;}finally{button.disabled=false;button.textContent=original;}}\n  function developmentStatusOptions(current,roadmap){const values=roadmap?['Idea','Planned','Approved','In Development','Testing','Live','Cancelled']:['Open','In Development','Ready for Testing','Complete','Archived'];return values.map(v=>\"<option\"+(v===current?' selected':'')+\">\"+v+\"</option>\").join('');}\n  function aiDossierBadgeV548(dossier,label){\n    if(!dossier)return \"<span class='orbit-ai-dossier-badge-v548 is-pending'>AI research pending</span>\";\n    const status=dossier.viability?.status||'researched',when=dossier.researchedAt?new Date(dossier.researchedAt).toLocaleString('en-GB'):'researched';\n    return \"<span class='orbit-ai-dossier-badge-v548' title='\"+esc(when)+\"'>\"+esc(label||'AI research')+\" \u00B7 \"+esc(status.replace(/_/g,' '))+\"</span>\";\n  }\n  function renderAiDossierV548(dossier,type,id){\n    if(!dossier)return \"<section class='orbit-ai-dossier-v548 is-empty'><div><strong>AI \"+(type==='roadmap'?'Roadmap Research':'Engineering Dossier')+\"</strong><p>Orbit has not researched this record yet. The persistent read-only agent will pick it up automatically, or you can research it now.</p></div><button type='button' class='secondary' data-ai-dossier-refresh-v548='\"+esc(type)+\"' data-ai-dossier-id-v548='\"+esc(id)+\"'>Research now</button></section>\";\n    const roots=(dossier.likelyRootCauses||[]).slice(0,6).map(x=>\"<li>\"+esc(x)+\"</li>\").join('');\n    const files=(dossier.relatedFiles||[]).slice(0,10).map(x=>\"<li><code>\"+esc(x)+\"</code></li>\").join('');\n    const options=(dossier.implementationOptions||[]).slice(0,4).map(x=>\"<article><strong>\"+esc(x.name||'Option')+\"</strong><span class='orbit-ai-risk-v548'>\"+esc(x.risk||'')+\"</span><p>\"+esc(x.summary||'')+\"</p></article>\").join('');\n    const tests=(dossier.requiredRegressionTests||[]).slice(0,10).map(x=>\"<li>\"+esc(x)+\"</li>\").join('');\n    const deps=(dossier.dependencies||[]).slice(0,12).map(x=>\"<code>\"+esc(x)+\"</code>\").join(' ');\n    return \"<section class='orbit-ai-dossier-v548'><div class='orbit-ai-dossier-head-v548'><div><p class='orbit-kicker'>READ ONLY \u00B7 \"+esc(dossier.analysisMode==='ai'?(dossier.model||'AI researched'):'Evidence researched')+\"</p><h3>\"+(type==='roadmap'?'AI Roadmap Research':'AI Engineering Dossier')+\"</h3><small>Updated \"+esc(dossier.researchedAt?new Date(dossier.researchedAt).toLocaleString('en-GB'):'unknown')+\" \u00B7 no code or production changes</small></div><button type='button' class='secondary' data-ai-dossier-refresh-v548='\"+esc(type)+\"' data-ai-dossier-id-v548='\"+esc(id)+\"'>Refresh research</button></div><div class='orbit-ai-dossier-summary-v548'><strong>What Orbit thinks</strong><p>\"+esc(dossier.plainEnglishDiagnosis||'Research complete.')+\"</p></div>\"+(dossier.viability?\"<div class='orbit-ai-viability-v548' data-status='\"+esc(dossier.viability.status||'')+\"'><strong>Viability: \"+esc(String(dossier.viability.status||'unknown').replace(/_/g,' '))+\" \u00B7 \"+esc(dossier.viability.confidence||'')+\" confidence</strong><p>\"+esc(dossier.viability.reason||'')+\"</p></div>\":'')+(dossier.recommendedNextStep?\"<div class='orbit-ai-next-v548'><strong>Recommended next step</strong><p>\"+esc(dossier.recommendedNextStep)+\"</p></div>\":'')+\"<details open><summary>Implementation options</summary><div class='orbit-ai-options-v548'>\"+(options||\"<p class='orbit-muted'>No implementation option has been proven yet.</p>\")+\"</div></details>\"+(roots?\"<details><summary>Likely causes / hypotheses</summary><ul>\"+roots+\"</ul></details>\":'')+(files?\"<details><summary>Related source files</summary><ul>\"+files+\"</ul></details>\":'')+(tests?\"<details><summary>Regression tests required</summary><ol>\"+tests+\"</ol></details>\":'')+(deps?\"<details><summary>Related notes / dependencies</summary><p class='orbit-ai-deps-v548'>\"+deps+\"</p></details>\":'')+\"</section>\";\n  }\n  function renderDevelopmentPacketV558(packet){\n    if(!packet)return '';\n    const steps=(packet.implementationSteps||[]).slice(0,10).map(x=>\"<li>\"+esc(x)+\"</li>\").join('');\n    const files=(packet.filesToInspect||[]).slice(0,16).map(x=>\"<li><code>\"+esc(x)+\"</code></li>\").join('');\n    const tests=(packet.proposedTests||[]).slice(0,12).map(x=>\"<li>\"+esc(x)+\"</li>\").join('');\n    const acceptance=(packet.acceptanceChecklist||[]).slice(0,12).map(x=>\"<li>\"+esc(x)+\"</li>\").join('');\n    return \"<section class='orbit-ai-dossier-v548 orbit-development-packet-v558'><div class='orbit-ai-dossier-head-v548'><div><p class='orbit-kicker'>DEVELOPMENT AGENT \u00B7 DRAFT ONLY</p><h3>Implementation Packet</h3><small>Prepared \"+esc(packet.updatedAt?new Date(packet.updatedAt).toLocaleString('en-GB'):'')+\" \u00B7 \"+esc(packet.gate?.label||'No execution authority')+\"</small></div></div><div class='orbit-ai-dossier-summary-v548'><strong>Proposed approach</strong><p>\"+esc(packet.summary||'Implementation plan prepared.')+\"</p></div>\"+(steps?\"<details open><summary>Implementation steps</summary><ol>\"+steps+\"</ol></details>\":'')+(files?\"<details open><summary>Exact source targets</summary><ul>\"+files+\"</ul></details>\":'')+(tests?\"<details><summary>Regression tests to run</summary><ol>\"+tests+\"</ol></details>\":'')+(acceptance?\"<details><summary>Acceptance checklist</summary><ol>\"+acceptance+\"</ol></details>\":'')+\"<p class='orbit-muted'>Planning evidence only. Source writes 0 \u00B7 production writes 0 \u00B7 staging unavailable.</p></section>\";\n  }\n  function renderDevelopmentNotes(){const box=document.getElementById('orbitDevelopmentNotesList');if(!box)return;const filter=document.getElementById('developmentNoteStatusFilter')?.value||'All';const rows=orbitDevelopmentNotes.filter(n=>($('developmentAutoErrorsOnlyV71601')?.checked?n.source==='ui_error_sentinel':operatorDevelopmentItemV559(n))&&!['Complete','Archived'].includes(n.status)&&(filter==='All'||n.status===filter));box.innerHTML=rows.length?rows.map(n=>\"<article class='orbit-development-card' data-note-id='\"+esc(n.id)+\"'><div class='orbit-development-card-top'><div><span class='orbit-development-type'>\"+esc(n.type)+\"</span><h4>\"+esc(n.title)+\"</h4><p>\"+esc(n.description).slice(0,300)+\"</p></div><div class='orbit-development-card-side-v548'><span class='orbit-priority orbit-priority-\"+esc(n.priority).toLowerCase()+\"'>\"+esc(n.priority)+\"</span>\"+aiDossierBadgeV548(n.aiDossier,'AI dossier')+\"</div></div><div class='orbit-development-context'>\"+esc(n.context?.pageTitle||n.context?.module||'Admin OS')+\" \u00B7 \"+esc(n.context?.device||'')+\" \u00B7 \"+new Date(n.createdAt).toLocaleString('en-GB')+(Number(n.screenshotCount||0)?' \u00B7 '+Number(n.screenshotCount||0)+' screenshot'+(Number(n.screenshotCount||0)===1?'':'s'):'')+(Number(n.attachmentCount||0)?' \u00B7 '+Number(n.attachmentCount||0)+' file'+(Number(n.attachmentCount||0)===1?'':'s'):'')+\"</div><div class='orbit-development-actions'><select data-note-status='\"+esc(n.id)+\"'>\"+developmentStatusOptions(n.status,false)+\"</select><button type='button' class='secondary' data-view-note='\"+esc(n.id)+\"'>Open</button><button type='button' class='secondary' data-edit-note='\"+esc(n.id)+\"'>Edit</button><button type='button' class='secondary orbit-danger-button' data-delete-note='\"+esc(n.id)+\"'>Delete</button><button type='button' class='secondary' data-promote-note='\"+esc(n.id)+\"'>Promote to Roadmap</button></div></article>\").join(''):\"<div class='orbit-empty-state'><strong>No notes in this view</strong><p>Use the floating Review Notes button while reviewing Admin OS.</p></div>\";}\n\n  window.addEventListener('orbit:open-error-note',event=>{const noteId=String(event.detail?.noteId||'');if(/^AUTO-ERR-[A-F0-9]{20}$/.test(noteId))openDevelopmentNoteById(noteId).catch(error=>setNotice(error.message,true));});\n  async function openUiErrorDiagnosticsV71601(){\n    let modal=$('uiErrorDiagnosticsDialogV71601');if(!modal){modal=document.createElement('dialog');modal.id='uiErrorDiagnosticsDialogV71601';modal.className='orbit-dialog';modal.dataset.orbitSentinelIgnore='diagnostic-history';modal.setAttribute('aria-labelledby','uiErrorDiagnosticsTitleV71601');modal.style.cssText='width:min(960px,94vw);max-height:88dvh;overflow:auto;padding:24px;border:0;border-radius:18px';document.body.appendChild(modal);}\n    modal.innerHTML='<div class=\"orbit-dialog-heading\"><div><p class=\"orbit-kicker\">READ-ONLY ERROR CAPTURE</p><h2 id=\"uiErrorDiagnosticsTitleV71601\">Error Sentinel diagnostics</h2></div><button type=\"button\" class=\"secondary\" data-error-diagnostics-close>Close</button></div><p role=\"status\">Loading saved incidents\u2026</p>';if(!modal.open)modal.showModal();modal.querySelector('[data-error-diagnostics-close]').onclick=()=>modal.close();\n    try{const data=await api('/api/admin/ui-errors?limit=50',{cacheMs:0,timeoutMs:15000});if(!modal.isConnected)return;\n      const body=document.createElement('div');body.innerHTML='<p><strong>'+Number(data.pending||0)+' occurrence(s) awaiting note confirmation.</strong> Captured means recorded, not fixed. No deployment or account changes are permitted.</p><p class=\"orbit-muted\">'+esc(data.policy)+'</p>'+(data.rows||[]).map(row=>'<article class=\"orbit-development-card\"><div><strong>'+esc(row.evidence?.message||'Runtime error')+'</strong><p>'+esc(row.evidence?.method||'')+' '+esc(row.evidence?.endpoint||'')+' \u00B7 '+esc(row.evidence?.version||'')+'</p><p>'+Number(row.occurrenceCount||0)+' occurrence(s) \u00B7 '+Number(row.recurrences||0)+' recurrence(s) after a fix \u00B7 First '+esc(prettyDate(row.firstSeen))+' \u00B7 Last '+esc(prettyDate(row.lastSeen))+'</p></div><button type=\"button\" class=\"secondary\" data-error-diagnostics-note=\"'+esc(row.noteId)+'\">Open '+esc(row.noteId)+'</button></article>').join('');if(!(data.rows||[]).length)body.innerHTML+='<p>No captured incidents yet.</p>';modal.querySelector('[role=\"status\"]')?.remove();modal.appendChild(body);\n      body.querySelectorAll('[data-error-diagnostics-note]').forEach(button=>button.onclick=()=>{modal.close();openDevelopmentNoteById(button.dataset.errorDiagnosticsNote).catch(error=>setNotice(error.message,true));});\n    }catch(error){modal.querySelector('[role=\"status\"]').textContent='Diagnostics could not be loaded. Close and retry; existing records are unchanged.';setNotice(error.message,true);}\n  }\n  document.addEventListener('click',event=>{if(event.target.closest?.('#uiErrorDiagnosticsV71601'))openUiErrorDiagnosticsV71601();});\n  document.addEventListener('change',event=>{if(event.target?.id==='developmentAutoErrorsOnlyV71601')renderDevelopmentNotes();});\n  function renderVerificationEvidence(noteId){\n    const card=document.querySelector(\".orbit-verification-card[data-note-id='\"+CSS.escape(noteId)+\"']\");\n    if(!card)return;\n    const evidence=orbitVerificationEvidenceV149.get(noteId)||[];\n    const count=card.querySelector('[data-verification-evidence-count]');\n    const preview=card.querySelector('[data-verification-evidence-preview]');\n    if(count)count.textContent=evidence.length?evidence.length+' screenshot'+(evidence.length===1?'':'s')+' attached':'No screenshots attached';\n    if(preview)preview.innerHTML=evidence.map((x,i)=>\"<figure class='orbit-verification-evidence-item'><div class='orbit-verification-evidence-image'><img src='\"+x.dataUrl+\"' alt='Testing screenshot'><button type='button' class='orbit-verification-remove-image' data-remove-verification-image='\"+i+\"' aria-label='Remove screenshot \"+(i+1)+\"' title='Remove screenshot'>\u00D7</button></div><figcaption><span>\"+esc(x.name)+\"</span><button type='button' class='orbit-verification-remove-text' data-remove-verification-image='\"+i+\"'>Remove screenshot</button></figcaption></figure>\").join('');\n  }\n  function verificationClipboardImages(clipboardData){\n    if(!clipboardData)return [];\n    const itemFiles=[...(clipboardData.items||[])]\n      .filter(item=>item.kind===\"file\")\n      .map(item=>{try{return item.getAsFile();}catch(_){return null;}})\n      .filter(file=>file && (/^image\\//i.test(String(file.type||\"\")) || /\\.(png|jpe?g|webp)$/i.test(String(file.name||\"\"))));\n    const directFiles=[...(clipboardData.files||[])]\n      .filter(file=>file && (/^image\\//i.test(String(file.type||\"\")) || /\\.(png|jpe?g|webp)$/i.test(String(file.name||\"\"))));\n    return [...itemFiles,...directFiles].filter((file,index,all)=>all.findIndex(other=>\n      other===file || (other.name===file.name && other.size===file.size && other.type===file.type)\n    )===index);\n  }\n\n  async function addVerificationFiles(noteId,files){\n    const evidence=orbitVerificationEvidenceV149.get(noteId)||[];\n    for(const file of [...files].slice(0,6-evidence.length)){\n      try{\n        const optimised=await optimiseDevelopmentScreenshotV341(file);\n        const image=await fileAsOrbitEvidenceV341(optimised);\n        if(evidence.some(existing=>existing.dataUrl===image.dataUrl))continue;\n        evidence.push(image);\n      }catch(error){setNotice(error.message||String(error),true);continue;}\n    }\n    orbitVerificationEvidenceV149.set(noteId,evidence);\n    renderVerificationEvidence(noteId);\n  }\n  function verificationEditorIsActiveV257(){\n    const field=document.activeElement?.closest?.('[data-verification-feedback]');\n    if(field)return true;\n    if(!orbitOpenVerificationNoteV149)return false;\n    const form=document.querySelector(\"[data-verification-form='\"+CSS.escape(orbitOpenVerificationNoteV149)+\"']\");\n    return Boolean(form&&!form.hidden);\n  }\n  function acceptanceHeldV500(note){return note?.status==='Ready for Testing'&&note?.acceptanceHold?.held===true;}\n  // V559: Mark's working queues contain only operator-created Development Notes.\n  // Synthetic release/engineering Acceptance is verified by AI QA in the background.\n  function operatorDevelopmentItemV559(note){\n    if(!note)return false;\n    if(note?.acceptancePolicy?.operatorAcceptanceRequired===false)return false;\n    if(note?.source==='release_acceptance'||note?.source==='engineering_change'||note?.source==='ui_error_sentinel'||note?.intelligence?.internalTechnical===true)return false;\n    return true;\n  }\n  function operatorAcceptanceItemV559(note){return operatorDevelopmentItemV559(note)&&note?.status==='Ready for Testing';}\n  function developerCommandLikeAcceptanceV688(value){const text=String(value||'').trim();return /(?:^|\\s)(?:node|npm|npx|yarn|pnpm|python3?|pytest|bash|sh|curl|grep|rg)\\s|backend\\/scripts\\/|theme\\/assets\\/|\\.(?:js|py|sh)(?:\\s|$)/i.test(text);}\n  function operatorAcceptanceInstructionsV688(n){\n    const meta=n?.releaseAcceptance||{},steps=Array.isArray(meta.steps)?meta.steps:[];\n    const structured=steps.map(step=>({action:String(step?.action||'').trim(),expected:String(step?.expected||'').trim()})).filter(step=>step.action&&!developerCommandLikeAcceptanceV688(step.action));\n    if(structured.length)return structured;\n    const priority=(Array.isArray(meta.priority)?meta.priority:[]).map(x=>String(x||'').trim()).filter(x=>x&&!developerCommandLikeAcceptanceV688(x));\n    if(priority.length)return priority.map(action=>({action,expected:''}));\n    const adaptive=(Array.isArray(n?.adaptiveScope?.acceptanceTests)?n.adaptiveScope.acceptanceTests:[]).map(x=>String(x||'').trim()).filter(x=>x&&!developerCommandLikeAcceptanceV688(x));\n    if(adaptive.length)return adaptive.map(action=>({action,expected:''}));\n    const page=String(n?.context?.pageTitle||n?.context?.page||n?.context?.module||'the relevant Orbit screen').trim();\n    return [{action:`Open ${page} and repeat the action described in the original note.`,expected:String(n?.expectedBehaviour||n?.releaseAcceptance?.description||'The original problem no longer occurs and the screen behaves as described.').trim()}];\n  }\n  function operatorAcceptanceHtmlV688(n){const steps=operatorAcceptanceInstructionsV688(n);return `<details open class=\"orbit-operator-acceptance-v688\"><summary>What to test now</summary><ol>${steps.map(step=>`<li><strong>${esc(step.action)}</strong>${step.expected?`<span class=\"orbit-acceptance-expected-v688\">Expected: ${esc(step.expected)}</span>`:''}</li>`).join('')}</ol></details>`;}\n  function engineeringEvidenceHtmlV688(n){const tests=(n?.implementationEvidence?.tests||[]).map(x=>String(x||'').trim()).filter(Boolean);return tests.length?`<details class=\"orbit-engineering-evidence-v688\"><summary>Automated engineering evidence</summary><p class=\"orbit-muted\">These checks were run by Orbit engineering. You do not need to run them manually.</p><ul>${tests.map(t=>`<li><code>${esc(t)}</code></li>`).join('')}</ul></details>`:'';}\n  function verificationCardHtmlV500(n,held=false){\n    const engineering=n.source==='engineering_change'||n.type==='Engineering';\n    const releaseAcceptance=n.source==='release_acceptance'||Boolean(n.releaseAcceptance);\n    const parentIds=Array.isArray(n.releaseAcceptance?.parentNoteIds)?n.releaseAcceptance.parentNoteIds:[];\n    const holdMeta=held?\"<div class='orbit-acceptance-hold-meta-v500'><strong>Held for later testing</strong><span>\"+esc(n.acceptanceHold?.reason||'Waiting for a natural real-world result.')+(n.acceptanceHold?.heldAt?' \u00B7 '+new Date(n.acceptanceHold.heldAt).toLocaleString('en-GB'):'')+\"</span></div>\":'';\n    const actions=engineering\n      ?\"<button type='button' data-view-note='\"+esc(n.id)+\"' class='secondary'>Read details</button><button type='button' data-mark-engineering-read='\"+esc(n.id)+\"' class='orbit-fixed-button'>Mark Read</button>\"\n      :\"<button type='button' data-view-note='\"+esc(n.id)+\"' class='secondary'>View original note</button><button type='button' data-verify-fixed='\"+esc(n.id)+\"' class='orbit-fixed-button'>Fixed</button><button type='button' data-verify-failed='\"+esc(n.id)+\"' class='orbit-not-fixed-button'>Not Fixed</button>\"+(held?\"<button type='button' data-resume-verification='\"+esc(n.id)+\"' class='secondary orbit-return-testing-v500'>Return to Testing</button>\":\"<button type='button' data-hold-verification='\"+esc(n.id)+\"' class='secondary orbit-test-later-v500'>Test Later</button>\")+\"<button type='button' data-delete-verification='\"+esc(n.id)+\"' class='secondary orbit-delete-test-button'>Delete</button>\";\n    return \"<article class='orbit-development-card orbit-verification-card\"+(held?' is-held-v500':'')+\"' data-note-id='\"+esc(n.id)+\"'><div class='orbit-development-card-top'><div><span class='orbit-development-type'>\"+(engineering?'Engineering change':releaseAcceptance?'Release Acceptance \u00B7 '+esc(n.releaseVersion||n.releaseAcceptance?.releaseVersion||''):'Acceptance test \u00B7 '+esc(n.context?.product||'Orbit OS'))+\"</span><h4>\"+esc(n.title)+\"</h4><p>\"+esc(n.description).slice(0,420)+\"</p>\"+(parentIds.length?\"<small class='orbit-acceptance-parent-link'>Parent Development Note\"+(parentIds.length>1?'s':'')+\": \"+parentIds.map(esc).join(', ')+\"</small>\":'')+\"</div><div class='orbit-development-card-side-v548'><span class='orbit-priority orbit-priority-\"+esc(n.priority).toLowerCase()+\"'>\"+esc(n.priority)+\"</span>\"+aiDossierBadgeV548(n.aiDossier,'AI dossier')+\"</div></div><div class='orbit-development-context'>\"+esc(n.context?.pageTitle||n.context?.page||n.context?.module||'Orbit OS')+\" \u00B7 \"+esc(n.releaseVersion||'')+(Number(n.screenshotCount||0)?' \u00B7 '+Number(n.screenshotCount||0)+' original screenshot'+(Number(n.screenshotCount||0)===1?'':'s'):'')+\"</div>\"+holdMeta+(n.implementationEvidence?.summary?\"<aside class='orbit-ai-developer-note'><strong>Implementation summary</strong><p>\"+esc(n.implementationEvidence.summary)+\"</p>\"+(n.implementationEvidence.currentImplementationTarget?\"<section class='orbit-current-target'><strong>Current Implementation Target\"+(n.implementationEvidence.scopeRevision?' \u00B7 Revision '+esc(n.implementationEvidence.scopeRevision):'')+\"</strong><p>\"+esc(n.implementationEvidence.currentImplementationTarget).replace(/\\n/g,'<br>')+\"</p></section>\":'')+(n.implementationEvidence.currentScope?\"<details class='orbit-adaptive-scope'><summary>Full Current Scope</summary><p>\"+esc(n.implementationEvidence.currentScope).replace(/\\n/g,'<br>')+\"</p></details>\":'')+((n.implementationEvidence.changesSinceLastAttempt||[]).length?\"<section class='orbit-scope-delta'><strong>What changed since the last attempt</strong><ul>\"+n.implementationEvidence.changesSinceLastAttempt.map(x=>'<li>'+esc(x)+'</li>').join('')+\"</ul></section>\":'')+(n.implementationEvidence.developerBrief?\"<details class='orbit-adaptive-brief'><summary>Developer Brief</summary><p>\"+esc(n.implementationEvidence.developerBrief).replace(/\\n/g,'<br>')+\"</p></details>\":'')+engineeringEvidenceHtmlV688(n)+\"</aside>\":'')+(engineering?'':operatorAcceptanceHtmlV688(n))+\"<div class='orbit-development-actions'>\"+actions+\"</div>\"+(engineering?'':\"<section class='orbit-inline-verification' data-verification-form='\"+esc(n.id)+\"' hidden><h5>Tell Orbit what is still wrong</h5><textarea rows='4' data-verification-feedback='\"+esc(n.id)+\"' placeholder='Type what happened. You can paste a screenshot with Ctrl + V.'></textarea><div class='orbit-inline-verification-tools'><input class='orbit-verification-file-input' type='file' accept='image/png,image/jpeg,image/webp' multiple data-verification-file='\"+esc(n.id)+\"'><button type='button' class='secondary' data-choose-verification-file='\"+esc(n.id)+\"'>Add screenshots</button><span data-verification-evidence-count>No screenshots attached</span></div><div class='orbit-screenshot-preview' data-verification-evidence-preview></div><div class='orbit-inline-verification-actions'><button type='button' class='secondary' data-cancel-verification='\"+esc(n.id)+\"'>Cancel</button><button type='button' class='orbit-submit-not-fixed' data-submit-inline-verification='\"+esc(n.id)+\"'>Submit Not Fixed</button></div></section>\")+\"</article>\";\n  }\n  function renderVerificationRowsV500(box,rows,emptyTitle,emptyText){\n    if(!box)return;\n    box.innerHTML=rows.length?rows.map(n=>verificationCardHtmlV500(n,acceptanceHeldV500(n))).join(''):\"<div class='orbit-empty-state'><strong>\"+esc(emptyTitle)+\"</strong><p>\"+esc(emptyText)+\"</p></div>\";\n    rows.forEach(n=>{const form=box.querySelector(\"[data-verification-form='\"+CSS.escape(n.id)+\"']\");if(form&&orbitOpenVerificationNoteV149===n.id)form.hidden=false;const field=box.querySelector(\"[data-verification-feedback='\"+CSS.escape(n.id)+\"']\");const draft=getVerificationDraftV149(n.id);if(field&&draft)field.value=draft;});\n  }\n  function renderVerificationQueue(force=false){\n    const box=document.getElementById('orbitVerificationList');if(!box)return;\n    if(!force&&verificationEditorIsActiveV257())return;\n    const readyNotes=orbitDevelopmentNotes.filter(n=>operatorAcceptanceItemV559(n)&&!acceptanceHeldV500(n));\n    renderVerificationRowsV500(box,stableAcceptanceRowsV239(readyNotes),'Nothing waiting for your acceptance','Only Development Notes you created appear here. Orbit AI QA verifies internal engineering and agent work automatically in the background.');\n  }\n  function renderHeldVerificationQueue(force=false){\n    const box=document.getElementById('orbitHeldVerificationList');if(!box)return;\n    if(!force&&verificationEditorIsActiveV257())return;\n    const heldNotes=orbitDevelopmentNotes.filter(n=>operatorAcceptanceItemV559(n)&&acceptanceHeldV500(n));\n    renderVerificationRowsV500(box,stableAcceptanceRowsV239(heldNotes),'Nothing held for later','Use Test Later on an Acceptance Test when you need to wait for a natural payment, cancellation or other real-world result.');\n  }\n\n  let orbitDevelopmentDeferredRefreshTimerV337=null;\n  function refreshDevelopmentHubDeferredV337(delayMs=250){\n    window.clearTimeout(orbitDevelopmentDeferredRefreshTimerV337);\n    orbitDevelopmentDeferredRefreshTimerV337=window.setTimeout(()=>{\n      loadOrbitDevelopmentHub({background:true}).catch(err=>console.warn('Deferred Development Hub refresh failed:',err.message||err));\n    },Math.max(0,Number(delayMs||0)));\n  }\n\n  async function submitVerification(noteId,outcome){\n    const note=orbitDevelopmentNotes.find(x=>x.id===noteId);if(!note)return;\n    if(outcome==='read'){\n      const card=document.querySelector(\".orbit-verification-card[data-note-id='\"+CSS.escape(noteId)+\"']\");\n      if(card){card.classList.add('is-processing');card.setAttribute('aria-busy','true');}\n      try{await api('/api/admin/development-notes/'+encodeURIComponent(noteId)+'/verify',{method:'POST',body:JSON.stringify({outcome:'read'}),cacheMs:0});markDevelopmentMutationV340();note.status='Complete';orbitDevelopmentNotes=orbitDevelopmentNotes.filter(x=>x.id!==noteId);renderVerificationQueue(true);renderHeldVerificationQueue(true);renderDevelopmentNotes();syncDevelopmentCountersFromLocalV339();setNotice('Engineering change marked as read.');refreshDevelopmentHubDeferredV337(150);}catch(err){if(card){card.classList.remove('is-processing');card.removeAttribute('aria-busy');}setNotice(err.message||err,true);}return;\n    }\n    if(outcome==='delete'){\n      if(!confirm('Delete this Acceptance Test permanently?\\n\\n'+note.title+'\\n\\nChoose OK to delete or Cancel to keep it.'))return;\n      const card=document.querySelector(\".orbit-verification-card[data-note-id='\"+CSS.escape(noteId)+\"']\");\n      if(card){card.classList.add('is-processing');card.setAttribute('aria-busy','true');}\n      try{\n        await api('/api/admin/development-notes/'+encodeURIComponent(noteId),{method:'DELETE',body:JSON.stringify({confirmed:true}),cacheMs:0});\n        markDevelopmentMutationV340();\n        orbitDevelopmentNotes=orbitDevelopmentNotes.filter(x=>x.id!==noteId);renderVerificationQueue(true);renderHeldVerificationQueue(true);renderDevelopmentNotes();syncDevelopmentCountersFromLocalV339();setNotice('Acceptance Test permanently deleted.');\n        refreshDevelopmentHubDeferredV337(150);\n      }catch(err){if(card){card.classList.remove('is-processing');card.removeAttribute('aria-busy');}setNotice(err.message||err,true);}return;\n    }\n    if(outcome==='fixed'){\n      if(!confirm('Confirm this change is working correctly?'))return;\n      const card=document.querySelector(\".orbit-verification-card[data-note-id='\"+CSS.escape(noteId)+\"']\");\n      if(card){card.classList.add('is-processing');card.setAttribute('aria-busy','true');}\n      try{\n        await api('/api/admin/development-notes/'+encodeURIComponent(noteId)+'/verify',{method:'POST',body:JSON.stringify({outcome:'fixed'}),cacheMs:0});\n        markDevelopmentMutationV340();\n        orbitDevelopmentNotes=orbitDevelopmentNotes.filter(function(item){ return item.id!==noteId; });\n        clearVerificationDraftV149(noteId);\n        renderVerificationQueue(true);\n        renderHeldVerificationQueue(true);\n        renderDevelopmentNotes();\n        syncDevelopmentCountersFromLocalV339();\n        setNotice('Acceptance test passed. The original note is now complete.');\n        refreshDevelopmentHubDeferredV337(150);\n      }catch(err){\n        if(card){card.classList.remove('is-processing');card.removeAttribute('aria-busy');}\n        setNotice(err.message||err,true);\n      }\n      return;\n    }\n    orbitDevelopmentCommentScreenshots=[];\n    orbitOpenVerificationNoteV149=noteId;document.querySelectorAll('[data-verification-form]').forEach(x=>x.hidden=x.dataset.verificationForm!==noteId);\n    const form=document.querySelector(\"[data-verification-form='\"+CSS.escape(noteId)+\"']\");if(form){form.hidden=false;form.querySelector('textarea')?.focus();renderVerificationEvidence(noteId);form.scrollIntoView({behavior:'smooth',block:'nearest'});}\n  }\n  async function setAcceptanceHoldV500(noteId,held,button=null){\n    const note=orbitDevelopmentNotes.find(x=>x.id===noteId);if(!note)return;\n    if(note.status!=='Ready for Testing'){setNotice('This Acceptance Test is no longer waiting for testing. Refresh the queue.',true);return;}\n    if(button)setLoading(button,true);\n    try{\n      const data=await api('/api/admin/development-notes/'+encodeURIComponent(noteId)+'/acceptance-hold',{method:'POST',body:JSON.stringify({held:Boolean(held),reason:held?'Test later \u2014 waiting for a natural real-world result.':'Returned to Acceptance Testing.'}),timeoutMs:30000,cacheMs:0});\n      if(!data?.note?.id||data.note.id!==noteId||Boolean(data.note.acceptanceHold?.held)!==Boolean(held))throw new Error('Orbit could not verify the Acceptance hold state.');\n      markDevelopmentMutationV340();\n      const index=orbitDevelopmentNotes.findIndex(x=>x.id===noteId);if(index>=0)orbitDevelopmentNotes[index]={...orbitDevelopmentNotes[index],...data.note};\n      orbitOpenVerificationNoteV149=null;\n      renderVerificationQueue(true);renderHeldVerificationQueue(true);renderDevelopmentNotes();syncDevelopmentCountersFromLocalV339();\n      setNotice(held?'Acceptance Test moved to Held Acceptance. It will not clutter the live queue while you wait.':'Acceptance Test returned to the live testing queue.');\n      refreshGlobalDeploymentAlertV418().catch(()=>{});\n      refreshDevelopmentHubDeferredV337(150);\n    }catch(err){setNotice(err.message||err,true);}finally{if(button)setLoading(button,false);}\n  }\n  function renderRoadmap(){const box=document.getElementById('orbitRoadmapList');if(!box)return;box.innerHTML=orbitRoadmapItems.length?orbitRoadmapItems.map(n=>\"<article class='orbit-development-card' data-roadmap-id='\"+esc(n.id)+\"'><div class='orbit-development-card-top'><div><span class='orbit-development-type'>Roadmap</span><h4>\"+esc(n.title)+\"</h4><p>\"+esc(n.description||n.rationale).slice(0,300)+\"</p></div><div class='orbit-development-card-side-v548'><span class='orbit-priority orbit-priority-\"+esc(n.priority).toLowerCase()+\"'>\"+esc(n.priority)+\"</span>\"+aiDossierBadgeV548(n.aiResearchDossier,'AI research')+\"</div></div><div class='orbit-development-actions'><select data-roadmap-status='\"+esc(n.id)+\"'>\"+developmentStatusOptions(n.status,true)+\"</select><button type='button' class='secondary' data-roadmap-ai-v548='\"+esc(n.id)+\"'>AI research</button><button type='button' class='secondary' data-edit-roadmap='\"+esc(n.id)+\"'>Edit</button><button type='button' class='secondary orbit-danger-button' data-delete-roadmap='\"+esc(n.id)+\"'>Delete</button></div></article>\").join(''):\"<div class='orbit-empty-state'><strong>No roadmap items yet</strong><p>Promote a review note or add a roadmap item.</p></div>\";}\n  let orbitAiArtifactStateV701=null,orbitDevelopmentPipelineV600=null,orbitWorkbenchTimerV685=null,orbitWorkbenchBoundV685=false,orbitWorkbenchDownloadReadinessV68603=null;\n  let orbitHandoverTrafficV702={state:'red',safeToStartHandover:false,message:'Checking Development worker activity\u2026'};\n  function aiPackageHasNewerWorkerWorkV701(artifact=orbitAiArtifactStateV701){\n    const workbench=orbitDevelopmentPipelineV600?.workbench||{},readiness=orbitWorkbenchDownloadReadinessV68603||workbench.downloadReadiness||{};\n    if(Number(readiness.activeCount||0)>0||Number(readiness.pendingContinuationCount||0)>0)return true;\n    const artifactAt=Date.parse(artifact?.generatedAt||artifact?.readyAt||'');if(!Number.isFinite(artifactAt))return false;\n    return (Array.isArray(workbench.jobs)?workbench.jobs:[]).some(job=>{const updated=Date.parse(job.updatedAt||job.lastActivityAt||'');return Number.isFinite(updated)&&updated>artifactAt;});\n  }\n  function setHandoverTrafficV702(value){\n    const raw=value||{},state=['green','red','amber'].includes(String(raw.state||'').toLowerCase())?String(raw.state).toLowerCase():'red';\n    orbitHandoverTrafficV702={...raw,state,safeToStartHandover:state==='green'&&raw.safeToStartHandover!==false};renderAiArtifactReadinessV701();\n  }\n  function renderAiArtifactReadinessV701(){\n    const node=document.getElementById('orbitWorkDownloadReadiness');if(!node)return;\n    const button=document.getElementById('downloadOrbitBackendSourceButton'),traffic=orbitHandoverTrafficV702||{},state=['green','red','amber'].includes(traffic.state)?traffic.state:'red',artifact=orbitAiArtifactStateV701||{};\n    node.classList.remove('is-checking','is-green','is-red','is-amber');node.classList.add(state==='green'?'is-green':state==='amber'?'is-amber':'is-red');\n    if(button)button.disabled=state==='amber'||button.dataset.handoverBusy==='1';\n    if(state==='amber'){\n      const stage=traffic.lock?.stage||artifact.stage||'preparing',label=stage==='verify'?'VERIFYING ZIP':stage==='package'||stage==='archive'?'PACKAGING ZIP':stage==='downloading'?'DOWNLOADING ZIP':'PREPARING HANDOVER';\n      node.innerHTML=`<span class=\"orbit-download-light-v68603\" aria-hidden=\"true\"></span><span><strong>${label} \u2014 PLEASE WAIT</strong><small>Workers are paused by the exclusive handover lock. ${esc(traffic.message||'Orbit is preparing the exact snapshot you requested.')}</small><button type=\"button\" class=\"secondary\" data-orbit-recover-interrupted-zip style=\"margin-top:8px;display:block;max-width:300px\">Recover interrupted ZIP and resume workers</button><small>This only clears an expired or proven previous-release handover. A healthy active ZIP cannot be cancelled here.</small></span>`;\n      const recovery=node.querySelector('[data-orbit-recover-interrupted-zip]');if(recovery)recovery.addEventListener('click',async()=>{\n        if(recovery.disabled)return;recovery.disabled=true;recovery.textContent='Checking handover safety\u2026';\n        try{\n          const response=await api('/api/admin/development-workbench/control',{method:'POST',body:JSON.stringify({action:'recover-interrupted-zip'}),timeoutMs:30000,cacheMs:0});\n          if(!response?.result?.recovered)throw Error('No interrupted handover remains. Refresh the Development Home.');\n          setAiPackageProgressV436('Interrupted ZIP safely released.',{success:true,detail:'Prior verified ZIPs remain available. No Development budget or note status was reset.'});\n          setNotice('Interrupted ZIP released. Automatic Development work resumed safely.');\n          await loadOrbitBootstrapStatus();if(typeof loadDevelopmentPipelineV600==='function')await loadDevelopmentPipelineV600(true);\n        }catch(e){setNotice('Cannot clear a potentially active ZIP: '+(e.message||e),true);recovery.disabled=false;recovery.textContent='Recover interrupted ZIP and resume workers';}\n      });return;\n    }\n    if(state==='red'){\n      const active=Number(traffic.activeCount||0),queued=Number(traffic.queuedCount||0),pending=Number(traffic.pendingContinuationCount||0),counts=[active?active+' active':'',queued?queued+' queued':'',pending?pending+' continuing':''].filter(Boolean).join(' \u00B7 ');\n      node.innerHTML=`<span class=\"orbit-download-light-v68603\" aria-hidden=\"true\"></span><span><strong>WORKERS ACTIVE \u2014 DOWNLOAD ANYTIME</strong><small>${esc(traffic.message||'Press the button to stop Development workers and export immediately.')}${counts?' '+esc(counts)+'.':''}</small></span>`;return;\n    }\n    let detail=traffic.workersPaused?'Development workers are paused. Download another ZIP or use Resume automatic work to restart them.':'Press Prepare & Download ZIP whenever you need an export.';\n    if(artifact?.state==='failed')detail=`The previous ZIP attempt failed (${esc(artifact.message||artifact.error||'unknown error')}). It is safe to press once and retry.`;\n    else if(artifact?.safeToDownload===true&&artifact?.state==='verified')detail=`${artifact.filename?esc(artifact.filename)+' is the last verified snapshot. ':''}Press once to refresh and download the newest snapshot.`;\n    node.innerHTML=`<span class=\"orbit-download-light-v68603\" aria-hidden=\"true\"></span><span><strong>${traffic.workersPaused?'DEVELOPMENT WORKERS PAUSED \u2014 NO NOTES WILL PROGRESS':'ZIP AVAILABLE'}</strong><small>${detail}</small>${traffic.workersPaused?'<button type=\"button\" class=\"secondary\" data-orbit-resume-workers style=\"margin-top:8px;display:block;max-width:260px\">Resume automatic Development work</button>':''}</span>`;\n    const resume=node.querySelector('[data-orbit-resume-workers]');if(resume)resume.addEventListener('click',async()=>{\n      if(resume.disabled)return;\n      resume.disabled=true;resume.textContent='Resuming workers\u2026';\n      try{\n        const result=await api('/api/admin/development-workbench/control',{method:'POST',body:JSON.stringify({action:'resume'}),timeoutMs:20000,cacheMs:0});\n        const repaired=Number(result?.result?.verifiedCacheKeyRetries?.queued||0);\n        setNotice('Development workers resumed. Automatic note pickup is enabled.'+(repaired?' '+repaired+' verified cache-key retries queued.':''),false);\n        await loadOrbitBootstrapStatus();\n        if(typeof loadDevelopmentPipelineV600==='function')await loadDevelopmentPipelineV600(true);\n      }catch(e){setNotice('Could not resume Development workers: '+(e.message||e),true);resume.disabled=false;resume.textContent='Resume automatic Development work';}\n    });\n  }\n  async function loadOrbitBootstrapStatus(){\n    const target=document.getElementById('orbitBootstrapStatus'),missionTitle=document.getElementById('orbitCurrentMissionTitle'),missionStatement=document.getElementById('orbitCurrentMissionStatement');let timeoutHandle=null;\n    if(target){target.innerHTML=\"<strong>AI Handover \u00B7 Checking\u2026</strong><span>Reading the latest automatic handover state.</span>\";timeoutHandle=setTimeout(()=>{if(target&&target.textContent.includes('Checking'))target.innerHTML=\"<strong>AI Handover \u00B7 Background check still running</strong><span>Development Notes and Acceptance remain live independently. The last verified AI Project ZIP remains valid while this check completes.</span>\";},12500);}\n    try{\n      const data=await api('/api/admin/orbit-bootstrap/status',{timeoutMs:12000,cacheMs:0}),status=data.status||{},counts=status.counts||{};if(timeoutHandle)clearTimeout(timeoutHandle);\n      orbitAiArtifactStateV701=data.artifact||null;setHandoverTrafficV702(data.handoverTraffic||{state:'red',message:'Worker traffic state was not returned.'});\n      const mission=status.currentMission||data.currentMission||{};if(missionTitle)missionTitle.textContent=mission.title||mission.headline||'Current mission unavailable';if(missionStatement)missionStatement.textContent=mission.statement||mission.description||'Refresh Development Hub to retrieve the current release mission.';\n      if(target){if(status.synced&&status.validation?.ok){const generatedAt=status.generatedAt?new Date(status.generatedAt):null;target.innerHTML=\"<strong>AI Handover \u00B7 Synced</strong><span>\"+esc(String(counts.operatorOpenDevelopmentNotes??counts.openDevelopmentNotes??0))+\" open</span><span>\"+esc(String(counts.operatorInDevelopment??counts.inDevelopment??0))+\" in development</span><span>\"+esc(String(counts.operatorReadyForTesting??counts.readyForTesting??0))+\" ready for your testing</span><span>\"+esc(String(counts.completeDevelopmentNotes??0))+\" complete</span><span>\"+esc(String(counts.failedAcceptanceTests??0))+\" failed tests recorded</span><span>\"+esc(String(counts.roadmapItems??0))+\" roadmap items</span>\"+(generatedAt&&!Number.isNaN(generatedAt.getTime())?\"<span>Updated \"+esc(generatedAt.toLocaleString('en-GB'))+\"</span>\":'');}else{target.innerHTML=\"<strong>AI Handover \u00B7 Waiting to sync</strong><span>\"+esc(status.reason||'Save a Development Note to start automatic synchronisation.')+\"</span>\";}}\n      return status;\n    }catch(err){if(timeoutHandle)clearTimeout(timeoutHandle);if(target)target.innerHTML=\"<strong>AI Handover \u00B7 Check failed</strong><span>\"+esc(err.message||err)+\"</span><span>The last verified ZIP state is preserved; use Refresh Development Hub to retry this status read.</span>\";return null;}\n  }\n  const orbitWorkbenchOpenEvidenceV68603=new Map();\n  const wbStateV685=s=>({queued:'Queued',researching:'Investigating evidence',implementing:'Writing sandbox code',testing:'Running before/after tests',ready_for_zip_reconciliation:'Tested \u00B7 waiting for next ZIP',needs_stronger_tests:'Needs stronger tests',needs_evidence:'Legacy evidence hold \u00B7 auto-reinvestigate',blocked_external:'External blocker after full investigation',protected_review:'Protected engineering review',provider_wait:'Provider receipt / transport held',request_configuration:'Worker request configuration held',budget_capped:'Development budget limit reached',executor_unavailable:'Executor unavailable',interrupted:'Interrupted \u00B7 work preserved',cancelled:'Cancelled \u00B7 work preserved',stale:'New evidence \u00B7 old attempt held',failed:'Needs investigation',needs_reconciliation:'Partial work \u00B7 ready for ZIP review'})[s]||s;\n  function wbMoneyV685(n){return '$'+Number(n||0).toFixed(3);}\n  function wbAgeV68602(seconds){const n=Number(seconds);if(!Number.isFinite(n)||n<0)return 'unknown';if(n<60)return Math.floor(n)+'s ago';if(n<3600)return Math.floor(n/60)+'m '+Math.floor(n%60)+'s ago';return Math.floor(n/3600)+'h '+Math.floor((n%3600)/60)+'m ago';}\n  function wbSelectionInsideV68603(node){try{const selection=window.getSelection?.();if(!node||!selection||selection.isCollapsed||!selection.rangeCount)return false;const range=selection.getRangeAt(0);return node.contains(range.commonAncestorContainer);}catch(_){return false;}}\n  function wbRenderDownloadReadinessV68603(readiness){orbitWorkbenchDownloadReadinessV68603=readiness||null;renderAiArtifactReadinessV701();}\n  function wbRestoreOpenEvidenceV68603(controls){for(const [id,state] of orbitWorkbenchOpenEvidenceV68603.entries()){const box=controls?.querySelector('[data-wb-detail-box=\"'+CSS.escape(id)+'\"]');if(!box)continue;box.hidden=false;box.dataset.pinnedOpen='true';if(state?.html)box.innerHTML=state.html;}}\n  function wbReceiptRecoveryDetailV68502(recovery){\n    if(!recovery)return '';\n    const result=recovery.reconciliation||recovery,blocked=Array.isArray(result.blockingReceipts)?result.blockingReceipts:[];\n    const review=result.review,history=result.historicalReview;\n    if(review&&result.code==='HISTORICAL_AUDIT_REVIEW_REQUIRED')return `<div class=\"orbit-wb-historical-review-v68503\"><h4>Review historical receipt gaps</h4><p><strong>${Number(review.receiptCount)} old receipt mirrors, from ${esc(String(review.from||'').slice(0,10))} to ${esc(String(review.through||'').slice(0,10))}.</strong> These predate the Development Workbench. No matching final-cost records were found.</p><p>The current budget authority has no active or unknown requests and no current rolling-window charges. This is not permission to mark the old calls free or settled.</p><p>Historical reservation estimates: $${Number(review.historicReservedUsd||0).toFixed(6)}. Recorded overrun retained: $${Number(review.recordedOverrunUsd||0).toFixed(6)}. <strong>Actual historical receipt costs remain unverified.</strong></p><p>Acknowledging this gap keeps all original receipt rows and the audit warning. It resumes the existing pilot without resetting recorded spend. V686 Development work uses an independent <strong>$1 allowance per record</strong>, then the separately governed <strong>$10 rolling 24-hour Development overflow</strong> if needed. No spending, note history or budget cycle is reset.</p><label class=\"orbit-wb-historical-consent-v68503\" style=\"display:flex;align-items:flex-start;gap:10px;margin:12px 0\"><input type=\"checkbox\" data-wb-historical-check> I have reviewed the historical gap and want to resume the existing pilot while retaining these unverified records for audit.</label><label style=\"display:block\">Type <strong>ACKNOWLEDGE HISTORICAL GAPS</strong><input type=\"text\" data-wb-historical-confirm autocomplete=\"off\" style=\"display:block;width:100%;max-width:100%;box-sizing:border-box\" placeholder=\"ACKNOWLEDGE HISTORICAL GAPS\"></label><button type=\"button\" data-wb-action=\"acknowledge-historical-receipts\" data-wb-review-token=\"${esc(review.reviewToken)}\" disabled style=\"margin-top:12px;white-space:normal\">Acknowledge gap &amp; resume existing pilot</button><details style=\"margin-top:12px\"><summary>Historical receipt identities (${Number(review.receiptCount)})</summary><ul>${(review.receipts||[]).map(r=>`<li style=\"overflow-wrap:anywhere\">${esc(r.reservationId)} \u00B7 ${esc(r.dispatchedAt)} \u00B7 actual cost unverified</li>`).join('')}</ul></details></div>`;\n    if(history?.kind==='historical_mirror_audit_gap'&&history.actualCostsVerified===false)return `<p><strong>${Number(history.receiptCount)} historical receipt gaps retained for audit.</strong> No receipt was marked settled or free. Recorded overrun: $${Number(history.recordedOverrunUsd||0).toFixed(6)}. Actual individual historical costs remain unverified. The existing budget limits and note cycles are unchanged.</p>`;\n    const count=Number(result.receiptsRepaired||0),code=String(result.code||''),ineligible=history?.eligible===false?history.reason:null;\n    return `<p>${count} final receipt${count===1?'':'s'} repaired without resetting spending.${code?' Check: '+esc(code)+'.':''}</p>${ineligible?`<p>Historical review is unavailable: ${esc(ineligible)}</p>`:''}${blocked.length?`<details open><summary>Receipt evidence still needed (${Number(result.unresolvedCount||blocked.length)})</summary><ul>${blocked.slice(0,20).map(r=>`<li style=\"overflow-wrap:anywhere\"><strong>${esc(r.reservationId||'Unidentified receipt')}</strong> \u00B7 ${esc(r.status||'unknown')}<br>${esc(r.reason||r.code||'Unknown cost remains held.')}</li>`).join('')}</ul><p>These costs remain held. Download the Complete AI Project ZIP for the exact receipt and usage diagnostics. Do not start another pilot.</p></details>`:''}`;\n  }\n  async function wbActionV685(action,button,extra={}){setLoading(button,true);try{const r=await api('/api/admin/development-workbench/control',{method:'POST',body:JSON.stringify({action,...extra}),timeoutMs:20000,cacheMs:0});await loadDevelopmentPipelineV600(true);if(['recover-pilot','acknowledge-historical-receipts'].includes(action)){setNotice(r.result?.reason||'Pilot recovery checked. Review the result below.',r.result?.ok===false&&r.result?.code!=='HISTORICAL_AUDIT_REVIEW_REQUIRED');return;}setNotice(action==='self-check'?(r.result?.available?'The OS-sealed executor passed both positive and negative self-tests.':'Executor unavailable. Paid implementation remains blocked.'):action==='pause'?'Workbench paused. In-flight receipts are retained; no new jobs start.':'Workbench request saved. Follow the evidence and per-record budget below. Production is unchanged.');}catch(e){setNotice(e.message||e,true);}finally{setLoading(button,false);}}\n  function renderDevelopmentPipelineV600(pipeline){\n    orbitDevelopmentPipelineV600=pipeline||null;const row=pipeline||{},w=row.workbench||{},jobs=w.jobs||[],costs=w.budgets||[],stateNode=$('developmentPipelineStateV600'),countsNode=$('developmentPipelineCountsV600'),jobsNode=$('developmentPipelineJobsV600');\n    wbRenderDownloadReadinessV68603(w.downloadReadiness||null);if(w.handoverTraffic)setHandoverTrafficV702(w.handoverTraffic);\n    const ready=w.capability?.available===true,devOverflow=w.developmentOverflow||{},lastAppliedReconciliation=w.control?.lastAppliedZipReconciliation||null,throughput=w.throughput||{},ai24h=throughput.ai24h||{};\n    if(stateNode){stateNode.dataset.state=ready?'ready':'attention';stateNode.textContent=!ready?'Executor unavailable':w.control?.handoverPaused?'Executor verified \u00B7 handover paused':!w.control?.enabled?'Executor verified \u00B7 paused':w.control?.autoEnqueue===false?'Executor enabled \u00B7 auto backlog OFF':Number(throughput.working||0)>0?'Workers actively processing':Number(throughput.queued||0)>0?'Automatic work on \u00B7 jobs queued':'Automatic work on \u00B7 currently idle';}\n    const count=s=>jobs.filter(x=>s.includes(x.status)).length,workingNow=throughput.working??count(['researching','implementing','testing']),queuedNow=throughput.queued??count(['queued']),readyForZip=throughput.readyForZip??count(['ready_for_zip_reconciliation']),needsReconciliation=throughput.needsReconciliation??count(['needs_reconciliation']),aiActivity=ai24h.available===false?'Unavailable':`${Number(ai24h.calls||0)} calls \u00B7 ${wbMoneyV685(ai24h.estimatedEffectiveUsd||0)}`;\n    if(countsNode)countsNode.innerHTML=[['Worker AI \u00B7 24h',aiActivity],['Working now',workingNow],['Queued',queuedNow],['Tested \u00B7 next ZIP',readyForZip],['Needs ZIP reconciliation',needsReconciliation],['Rebased without AI',Number(throughput.deterministicRebasesCurrentRelease||0)],['Recovery pilot',String(throughput.recoveryPilot?.queued??0)+' retried \u00B7 '+String(throughput.recoveryPilot?.held??0)+' held'],['Own allowance per record','$1.00'],['Shared overflow',wbMoneyV685(devOverflow.remainingUsd)+' / $10 remaining']].map(([label,value])=>`<article><small>${esc(label)}</small><strong>${esc(String(value))}</strong></article>`).join('');\n    const controls=$('orbitDevelopmentPipelineV600');\n    if(controls&&!orbitWorkbenchBoundV685){orbitWorkbenchBoundV685=true;controls.addEventListener('click',async event=>{const b=event.target.closest('[data-wb-action],[data-wb-details]');if(!b)return;\n      if(b.dataset.wbDetails){const id=b.dataset.wbDetails,box=controls.querySelector('[data-wb-detail-box=\"'+CSS.escape(id)+'\"]');if(!box)return;\n        if(!box.hidden){box.hidden=true;delete box.dataset.pinnedOpen;orbitWorkbenchOpenEvidenceV68603.delete(id);return;}\n        box.hidden=false;box.dataset.pinnedOpen='true';const saved=orbitWorkbenchOpenEvidenceV68603.get(id);if(saved?.html){box.innerHTML=saved.html;return;}\n        box.innerHTML='<p class=\"orbit-muted\">Loading durable engineering evidence\u2026</p>';orbitWorkbenchOpenEvidenceV68603.set(id,{html:box.innerHTML});b.disabled=true;try{const result=await api('/api/admin/development-workbench/jobs/'+encodeURIComponent(id),{cacheMs:0,timeoutMs:20000}),j=result.job||{},a=result.artifact||{},brief=j.brief||a.brief||{};const html=`<h4>Engineering evidence</h4><p><strong>Intent:</strong> ${esc(brief.intent||'Not yet investigated')}</p><p><strong>Root cause:</strong> ${esc(brief.rootCause||'Not yet established')}</p><p><strong>Latest failed Acceptance:</strong> ${esc(j.latestAcceptance?.feedback||'None recorded for this attempt')}</p><p><strong>Re-investigation:</strong> ${esc(brief.latestFailureExplained||'Pending')}</p>${j.retryDiagnosis?.source==='zip_reconciliation_rejected'?`<p><strong>ZIP reconciliation retry:</strong> attempt ${Number(j.reconciliationRetryCount||1)} \u00B7 ${esc(j.retryDiagnosis.reason||j.reconciliationReason||'Previous attempt rejected')}</p>`:''}<p><strong>Plan:</strong> ${esc((brief.implementationPlan||[]).join(' \u00B7 '))}</p><p><strong>Roadmap ideas:</strong> ${esc((brief.ideas||[]).join(' \u00B7 ')||'Not applicable')}</p><p><strong>Evidence:</strong> ${(j.evidence||[]).map(x=>esc((x.name||x.id)+': '+(x.contentConsumed?(x.checkpointReused?'saved visual read reused':'visually read'):'not visually consumed')+(x.observation?' \u2014 '+x.observation:''))).join('<br>')||'No screenshot attached'}</p><p><strong>Code:</strong> ${esc((j.changedFiles||[]).map(x=>x.path).join(', ')||'No patch yet')}</p><p><strong>Tests:</strong> ${esc(j.proof?JSON.stringify({beforeFailed:j.proof.reproduced,afterPassed:j.proof.candidate?.ok,scope:j.proof.scope,fullApplicationTested:false}):'No executable proof yet')}</p><p><strong>Release boundary:</strong> Next ZIP reconciliation and complete application regression are still required. No live Acceptance was created.</p><details><summary>Test results and chronological worker receipts</summary><pre>${esc(JSON.stringify({blockerCode:j.blockerCode,lastRequest:j.lastRequest,checkpoints:Object.fromEntries(Object.entries(j.paidCheckpoints||{}).map(([stage,c])=>[stage,{at:c.at,model:c.model,receipt:c.receipt,complete:c.complete}])),tests:a.proof||j.proof,history:j.history,limitations:a.bundle?.limitations},null,2))}</pre></details>`;box.innerHTML=html;orbitWorkbenchOpenEvidenceV68603.set(id,{html});}catch(e){const html='<p class=\"orbit-error-state\">'+esc(e.message||String(e))+'</p>';box.innerHTML=html;orbitWorkbenchOpenEvidenceV68603.set(id,{html});}finally{b.disabled=false;}return;}\n      if(b.dataset.wbAction==='acknowledge-historical-receipts'){const checked=controls.querySelector('[data-wb-historical-check]')?.checked,confirmation=controls.querySelector('[data-wb-historical-confirm]')?.value;if(!checked||confirmation!=='ACKNOWLEDGE HISTORICAL GAPS')return;await wbActionV685(b.dataset.wbAction,b,{reviewToken:b.dataset.wbReviewToken,confirmation});return;}\n      if(b.dataset.wbAction==='enqueue-selected'){const sel=controls.querySelector('[data-wb-select]'),v=sel?.value||'';if(!v)return;const colon=v.indexOf(':');await wbActionV685('enqueue',b,{kind:v.slice(0,colon),id:v.slice(colon+1)});return;}\n      await wbActionV685(b.dataset.wbAction,b,b.dataset.wbJob?{jobId:b.dataset.wbJob}:{});\n    });\n      const updateHistoricalConfirm=()=>{const button=controls.querySelector('[data-wb-action=\"acknowledge-historical-receipts\"]');if(button)button.disabled=!(controls.querySelector('[data-wb-historical-check]')?.checked&&controls.querySelector('[data-wb-historical-confirm]')?.value==='ACKNOWLEDGE HISTORICAL GAPS');};\n      controls.addEventListener('input',updateHistoricalConfirm);controls.addEventListener('change',updateHistoricalConfirm);\n    }\n    const choiceNotes=(typeof orbitDevelopmentNotes!=='undefined'?orbitDevelopmentNotes:[]).filter(x=>['Open','In Development'].includes(x.status));\n    const choiceRoad=(typeof orbitRoadmapItems!=='undefined'?orbitRoadmapItems:[]).filter(x=>['Approved','Prioritised','Prioritized','In Development'].includes(x.status));\n    const options=[...choiceNotes.map(x=>({kind:'note',...x})),...choiceRoad.map(x=>({kind:'roadmap',...x}))];\n    const ordinary=w.globalBudget?.ordinary||{};\n    const preserveWorkbenchDomV68603=wbSelectionInsideV68603(jobsNode);\n    if(jobsNode&&!preserveWorkbenchDomV68603)jobsNode.innerHTML=`<div class=\"orbit-wb-controls-v685 orbit-wb-operator-controls-v688\"><button type=\"button\" data-wb-action=\"${w.control?.enabled?'pause':'resume'}\" class=\"secondary\">${w.control?.enabled?'Pause automatic work':'Resume automatic work'}</button><span class=\"orbit-wb-auto-state-v688\"><strong>${w.control?.enabled?'Automatic backlog processing is on':'Automatic backlog processing is paused'}</strong><small>Eligible Development Notes are picked up automatically. You normally do not need to start or retry workers.</small></span></div>${lastAppliedReconciliation&&Array.isArray(lastAppliedReconciliation.applied)&&lastAppliedReconciliation.applied.length?`<div class=\"orbit-wb-recovery-v68501\" role=\"status\"><strong>${lastAppliedReconciliation.applied.length} rejected worker attempt${lastAppliedReconciliation.applied.length===1?'':'s'} returned to the queue</strong><p>${esc(lastAppliedReconciliation.applied.map(x=>x.noteId+(x.retryAttempt?' \u00B7 retry '+x.retryAttempt:'')).join(' \u00B7 '))}</p><p class=\"orbit-muted\">Previous evidence was preserved and the workers received the ZIP-reconciliation rejection reason. ${lastAppliedReconciliation.checkedAt?'Last applied '+esc(new Date(lastAppliedReconciliation.checkedAt).toLocaleString('en-GB'))+'.':''}</p></div>`:''}<details class=\"orbit-wb-advanced-v688\"><summary>Advanced worker controls</summary><p class=\"orbit-muted\">Diagnostics and manual recovery controls. Ordinary Development work is automatic.</p><div class=\"orbit-wb-controls-v685\"><button type=\"button\" data-wb-action=\"self-check\" class=\"secondary\">Run executor diagnostic</button><button type=\"button\" data-wb-action=\"pilot\" ${jobs.length?'disabled title=\"Existing jobs already prove the pipeline; do not start another pilot unless engineering asks.\"':''}>Start diagnostic pilot</button><button type=\"button\" data-wb-action=\"recover-pilot\">Run recovery diagnostic</button></div>${ordinary.frozen?`<div class=\"orbit-wb-recovery-v68501\" role=\"alert\"><strong>Shared provider ledger is held, not necessarily your note\u2019s $1 budget.</strong><p>${esc(ordinary.freezeReason||'Final receipt reconciliation is required.')}</p><p>Recover blocked pilot checks final receipts and resumes the existing jobs only when safe. It does not reset spending, increase an allowance or select another batch.</p></div>`:''}${ordinary.historicalReceiptReview?`<div class=\"orbit-wb-recovery-v68501\" data-wb-historical-audit><strong>Historical AI accounting gap remains on record</strong><p>${Number(ordinary.historicalReceiptReview.receiptCount)} old receipt amounts remain unverified. They have not been marked free or settled. Current requests and their budgets remain separately enforced.</p></div>`:''}${w.control?.lastRecovery?`<div class=\"orbit-wb-recovery-v68501\" role=\"status\"><strong>Last recovery check</strong><p>${esc(w.control.lastRecovery.reason||'See receipt evidence')}</p>${wbReceiptRecoveryDetailV68502(w.control.lastRecovery)}<p>${Number(w.control.lastRecovery.queued||0)} jobs resumed. ${(w.control.lastRecovery.held||[]).map(x=>esc(x.id+': '+x.reason)).join('<br>')}</p></div>`:''}<p class=\"orbit-wb-policy-v685\">Each note has its own <strong>$1 Development allowance</strong>, including research, screenshots, code, retries and review. If that allowance cannot fund the next bounded action, the note may use the separately tracked <strong>$10 rolling 24-hour Development overflow</strong>. Neither allowance resets on retry, restart or failed Acceptance. Roadmap prototypes remain separate and cannot auto-release.</p><p class=\"orbit-muted\">Source: ${esc(w.source?.backendRelease||'checking')} backend \u00B7 ${w.source?.themeAvailable?'Admin theme available':'Admin theme will be captured read-only when work starts'}. Execution: Linux x64 sealed process, no host files, credentials, shell or network. Browser, full-app and provider regressions happen during ZIP reconciliation.</p><div class=\"orbit-wb-select-v685\"><label>Manually queue a specific note or approved roadmap item<select data-wb-select><option value=\"\">Choose a record\u2026</option>${options.map(x=>`<option value=\"${esc(x.kind+':'+x.id)}\">${x.kind==='roadmap'?'Roadmap':'Note'} \u00B7 ${esc(x.title||x.id)}</option>`).join('')}</select></label><button type=\"button\" class=\"secondary\" data-wb-action=\"enqueue-selected\">Queue selected</button></div></details>${w.coverage?.truncated?'<p>Showing the 100 most recently updated jobs. Older durable work is retained.</p>':''}${jobs.length?jobs.map(j=>{const b=costs.find(x=>x.subject?.kind===j.subject?.kind&&x.subject?.id===j.subject?.id)||j.budget||{},proof=j.proof||{},busy=['queued','researching','implementing','testing'].includes(j.status),testCount=proof.candidate?.tests?.length||0,activity=j.activity||{},live=activity.workerActive===true,activityText=esc(activity.stage||wbStateV685(j.status)),retryCount=Number(j.reconciliationRetryCount||0),retryReason=j.retryDiagnosis?.source==='zip_reconciliation_rejected'?String(j.retryDiagnosis.reason||j.reconciliationReason||'Previous ZIP attempt rejected'):'';return `<article class=\"orbit-wb-job-v685\" data-state=\"${esc(j.status)}\"><div class=\"orbit-wb-heading-v685\"><div><small>${j.subject?.kind==='roadmap'?'ROADMAP R&D \u00B7 SANDBOX ONLY':'DEVELOPMENT NOTE'} \u00B7 ${esc(j.subject?.id||'')}</small><h4>${esc(j.title||j.id)}</h4></div><strong>${live?'<span class=\"orbit-wb-spinner-v68602\" aria-hidden=\"true\"></span>':''}${esc(wbStateV685(j.status))}</strong></div><div class=\"orbit-wb-activity-v68602 ${live?'is-live':activity.stale?'is-stale':''}\"><span>${live?'<span class=\"orbit-wb-live-dot-v68602\" aria-hidden=\"true\"></span>':''}<strong>${activityText}</strong></span>${activity.heartbeatAgeSec!=null?`<span>Heartbeat ${esc(wbAgeV68602(activity.heartbeatAgeSec))}</span>`:''}${activity.lastActivityAt?`<span>Last stage update ${esc(new Date(activity.lastActivityAt).toLocaleTimeString('en-GB',{hour:'2-digit',minute:'2-digit',second:'2-digit'}))}</span>`:''}${activity.stale?'<span><strong>Heartbeat stale \u00B7 automatic recovery pending</strong></span>':''}${retryCount?`<span><strong>Reconciliation retry ${retryCount}</strong></span>`:''}</div>${retryReason?`<p><strong>Previous ZIP attempt rejected:</strong> ${esc(retryReason)}</p>`:''}<p>${j.error?esc(j.error):esc(j.brief?.intent||'Waiting for full-note investigation, source inspection and executable tests.')}</p><div class=\"orbit-wb-proof-v685\"><span>${(j.changedFiles||[]).length} changed files</span><span>${testCount} automated checks${testCount?' \u00B7 before '+(proof.reproduced?'fails':'unproven')+' / after '+(proof.candidate?.ok?'passes':'fails'):''}</span><span>Own $1: used ${esc(wbMoneyV685(b.usedUsd))} \u00B7 held ${esc(wbMoneyV685(b.reservedUsd))} \u00B7 remaining ${esc(wbMoneyV685(b.remainingUsd??1))}${Number(b.overflowUsedUsd||0)>0?' \u00B7 overflow used '+esc(wbMoneyV685(b.overflowUsedUsd)):''}</span></div><div class=\"orbit-wb-controls-v685\"><button type=\"button\" class=\"secondary\" data-wb-details=\"${esc(j.id)}\">Engineering details</button>${busy?`<button type=\"button\" class=\"secondary\" data-wb-action=\"cancel\" data-wb-job=\"${esc(j.id)}\">Stop this job</button>`:j.status!=='ready_for_zip_reconciliation'?`<button type=\"button\" class=\"secondary\" data-wb-action=\"retry\" data-wb-job=\"${esc(j.id)}\">Retry with remaining budget</button>`:''}</div><div class=\"orbit-wb-detail-v685\" data-wb-detail-box=\"${esc(j.id)}\" hidden></div></article>`;}).join(''):'<div class=\"orbit-empty-state\"><strong>No active Development work</strong><p>Orbit automatically picks up eligible Development Notes and approved Roadmap R&amp;D when work is available. No manual Start action is required.</p></div>'}`;\n    if(jobsNode&&!preserveWorkbenchDomV68603)wbRestoreOpenEvidenceV68603(controls);\n    clearTimeout(orbitWorkbenchTimerV685);if(count(['queued','researching','implementing','testing','interrupted','needs_stronger_tests','provider_wait','failed'])&&w.control?.enabled)orbitWorkbenchTimerV685=setTimeout(()=>{if(!document.hidden&&$('orbitDevelopmentHomePanel')&&!$('orbitDevelopmentHomePanel').hidden)loadDevelopmentPipelineV600(true).catch(()=>{});},5000);\n  }\n  document.addEventListener('visibilitychange',()=>{if(!document.hidden&&orbitDevelopmentPipelineV600?.workbench?.control?.enabled&&$('orbitDevelopmentHomePanel')&&!$('orbitDevelopmentHomePanel').hidden)loadDevelopmentPipelineV600(true).catch(()=>{});});\n  async function loadDevelopmentPipelineV600(force=false){if(orbitDevelopmentPipelineV600&&!force){renderDevelopmentPipelineV600(orbitDevelopmentPipelineV600);return orbitDevelopmentPipelineV600;}const data=await api('/api/admin/development-pipeline',{timeoutMs:20000,cacheMs:0});renderDevelopmentPipelineV600(data.pipeline||{});return data.pipeline||{};}\n  async function runDevelopmentBuilderV600(agentId,button){setLoading(button,true);try{const data=await api('/api/admin/intelligence/agents/'+encodeURIComponent(agentId)+'/run',{method:'POST',body:'{}',timeoutMs:20000,cacheMs:0});await loadDevelopmentPipelineV600(true);setNotice((data.run?.queued||0)+' record(s) queued for sandbox investigation. Each record has its own $1 allowance; the shared $10 Development overflow is used only when that record cannot cover another bounded request.');}catch(e){setNotice(e.message||e,true);}finally{setLoading(button,false);}}\n  async function applyDevelopmentSandboxV600(button){setLoading(button,true);try{await loadDevelopmentPipelineV600(true);setNotice('Workbench evidence refreshed. No untested legacy candidate was promoted.');}catch(e){setNotice(e.message||e,true);}finally{setLoading(button,false);}}\n\n  let orbitDevelopmentStateEpochV340=0;\n  function markDevelopmentMutationV340(){\n    orbitDevelopmentStateEpochV340+=1;\n    return orbitDevelopmentStateEpochV340;\n  }\n\n  function syncDevelopmentCountersFromLocalV339(){\n    const operatorNotes=orbitDevelopmentNotes.filter(operatorDevelopmentItemV559);\n    const counts={};operatorNotes.forEach(n=>counts[n.status]=(counts[n.status]||0)+1);\n    const activeWork=(counts.Open||0)+(counts['In Development']||0);\n    const readyNotes=operatorNotes.filter(n=>n.status==='Ready for Testing');\n    const held=readyNotes.filter(acceptanceHeldV500).length;\n    const ready=Math.max(0,readyNotes.length-held);\n    const outstanding=activeWork+readyNotes.length;\n    state.acceptanceReadyCount=ready;\n    state.acceptanceHeldCount=held;\n    const box=document.getElementById('orbitDevelopmentSummary');\n    if(box)box.innerHTML=\"<strong>\"+outstanding+\" outstanding</strong><span>\"+(held?held+\" held for later \u00B7 \":\"\")+\"Your Development Notes loaded. AI engineering verification runs separately in the background.</span>\";\n    [['developmentNotesTabCount',activeWork],['acceptanceTestingTabCount',ready],['heldAcceptanceTabCount',held]].forEach(([id,value])=>{\n      const node=document.getElementById(id);if(!node)return;node.textContent=String(value);node.hidden=value===0;\n    });\n    state.acceptanceCountLoadedV539=true;state.acceptanceCountErrorV539=false;renderTaskCountV539();\n    renderOperationsV74();updateCommandCentre();\n    return {activeWork,ready,held,outstanding};\n  }\n\n  async function loadOrbitDevelopmentHub(options={}){\n    const forceFresh=Boolean(options.forceFresh), background=Boolean(options.background);\n    const requestEpoch=orbitDevelopmentStateEpochV340;\n    const notesBox=document.getElementById('orbitDevelopmentNotesList');\n    if(notesBox&&!orbitDevelopmentNotes.length&&!background)notesBox.innerHTML=\"<p class='orbit-muted'>Loading notes\u2026</p>\";\n    if(forceFresh){orbitReadEpoch++;orbitGetCache.clear();}\n\n    // V337 latency rule: canonical Development Notes are the operator-critical\n    // path. Render them immediately; roadmap/bootstrap status are secondary and\n    // must never hold the Acceptance queue hostage.\n    let notes=null;\n    try{\n      notes=await api('/api/admin/development-notes?active=1',{timeoutMs:15000,cacheMs:0});\n      // V340 stale-response guard: a request started before Fixed/Not Fixed\n      // must never overwrite the newer mutation result when it eventually\n      // returns. This caused accepted cards to reappear briefly, then vanish.\n      if(requestEpoch!==orbitDevelopmentStateEpochV340){\n        return {ignoredStaleResponse:true,requestEpoch,currentEpoch:orbitDevelopmentStateEpochV340};\n      }\n      orbitDevelopmentNotes=notes.notes||[];\n      renderDevelopmentNotes();renderVerificationQueue();renderHeldVerificationQueue();\n      syncDevelopmentCountersFromLocalV339();\n    }catch(err){\n      if(notesBox&&!background){\n        notesBox.innerHTML=\"<div class='orbit-empty-state orbit-error-state'><strong>Development Notes could not load</strong><span>\"+esc(err.message||err)+\"</span><button type='button' class='secondary' id='retryDevelopmentNotesButton'>Try again</button></div>\";\n        document.getElementById('retryDevelopmentNotesButton')?.addEventListener('click',()=>loadOrbitDevelopmentHub().catch(error=>setNotice(error.message,true)));\n      }\n      throw err;\n    }\n\n    syncDevelopmentCountersFromLocalV339();\n\n    // Post-Acceptance confirmation is canonical-notes-only. Do not start\n    // unrelated roadmap/bootstrap work after every Pass/Fail.\n    if(background)return notes;\n\n    // Secondary data is intentionally non-blocking on normal Hub entry.\n    Promise.allSettled([\n      api('/api/admin/product-roadmap',{timeoutMs:10000,cacheMs:forceFresh?0:3000}),\n      loadOrbitBootstrapStatus(),\n      loadDevelopmentPipelineV600(forceFresh)\n    ]).then(results=>{\n      const roadmap=results[0].status==='fulfilled'?results[0].value:null;\n      if(roadmap){\n        orbitRoadmapItems=roadmap.items||[];renderRoadmap();if(orbitDevelopmentPipelineV600)renderDevelopmentPipelineV600(orbitDevelopmentPipelineV600);\n        const roadmapCount=orbitRoadmapItems.filter(x=>!['Live','Cancelled'].includes(x.status)).length;\n        const node=document.getElementById('roadmapTabCount');if(node){node.textContent=String(roadmapCount);node.hidden=roadmapCount===0;}\n      }\n      if(results[0].status==='rejected')console.warn('Roadmap background refresh failed:',results[0].reason?.message||results[0].reason);\n      if(results[1].status==='rejected')console.warn('Bootstrap background refresh failed:',results[1].reason?.message||results[1].reason);\n      if(results[2].status==='rejected')console.warn('Development pipeline background refresh failed:',results[2].reason?.message||results[2].reason);\n    });\n    return notes;\n  }\n  let orbitDeploymentFreshnessPoll=null;\n  async function confirmLiveDevelopmentState(){\n    window.clearTimeout(orbitDeploymentFreshnessPoll);\n    const started=Date.now(), deadline=started+90000;\n    const check=async function(){\n      try{\n        const notesPromise=loadOrbitDevelopmentHub({forceFresh:true});\n        const statusPromise=loadOrbitBootstrapStatus();\n        await notesPromise;\n        const status=await statusPromise;\n        const liveVersion=String(status?.version||status?.currentMission?.release||'');\n        const liveCounts=status?.counts||{};\n        const localReady=orbitDevelopmentNotes.filter(n=>operatorAcceptanceItemV559(n)).length;\n        const localOpen=orbitDevelopmentNotes.filter(n=>operatorDevelopmentItemV559(n)&&n.status==='Open').length;\n        const versionCurrent=liveVersion.includes(ORBIT_RELEASE);\n        const countsCurrent=Number(liveCounts.operatorReadyForTesting??liveCounts.readyForTesting??localReady)===localReady&&Number(liveCounts.operatorOpenDevelopmentNotes??liveCounts.openDevelopmentNotes??localOpen)===localOpen;\n        if(versionCurrent&&countsCurrent){\n          const node=document.getElementById('orbitDevelopmentSummary');\n          if(node)node.dataset.liveRelease=ORBIT_RELEASE;\n          return;\n        }\n      }catch(error){console.warn('Orbit deployment freshness check waiting:',error.message||error);}\n      if(Date.now()<deadline) orbitDeploymentFreshnessPoll=window.setTimeout(check,2500);\n    };\n    await check();\n  }\n  async function openDevelopmentNoteById(noteId){\n    const id=String(noteId||'').trim();\n    if(!id)return;\n    const local=orbitDevelopmentNotes.find(x=>x.id===id)||null;\n    try{\n      if(local) await openDevelopmentNoteDetail(local,{note:local});\n      const detail=await api('/api/admin/development-notes/'+encodeURIComponent(id),{timeoutMs:30000,cacheMs:0});\n      const note=detail?.note||local;\n      if(!note)throw new Error('The original Development Note could not be found.');\n      if(!local) await openDevelopmentNoteDetail(note,detail);\n      else {\n        const dialog=document.getElementById('orbitDevelopmentDetailDialog');\n        if(dialog?.open){ closeOrbitDialog(dialog); await openDevelopmentNoteDetail(note,detail); }\n      }\n    }catch(err){\n      setNotice('Could not open original note '+id+': '+(err.message||err),true);\n      if(!local) throw err;\n    }\n  }\n  function renderDevelopmentAttachmentsV563(items){return (Array.isArray(items)?items:[]).map(file=>\"<a class='orbit-note-file-link-v563' href='\"+file.dataUrl+\"' download='\"+esc(file.name||'attachment')+\"' target='_blank' rel='noopener'><span>\uD83D\uDCCE</span><span><strong>\"+esc(file.name||'Attachment')+\"</strong><small>\"+esc(file.mimeType||'Document')+\"</small></span></a>\").join('');}\n  async function openDevelopmentNoteDetail(note,prefetchedDetail=null){if(!note?.id)return;const detail=prefetchedDetail||await api('/api/admin/development-notes/'+encodeURIComponent(note.id),{timeoutMs:30000});note=detail.note||note;orbitDevelopmentCommentScreenshots=[];const dialog=document.getElementById('orbitDevelopmentDetailDialog'),box=document.getElementById('orbitDevelopmentDetail');box.innerHTML=\"<div class='orbit-dialog-heading'><div><p class='orbit-kicker'>\"+esc(note.id)+\" \u00B7 \"+esc(note.status)+\"</p><h2>\"+esc(note.title)+\"</h2></div><button type='button' class='secondary' data-close-development-detail>Close</button></div><div class='orbit-development-detail-body'><p>\"+esc(note.description).replace(/\\n/g,'<br>')+\"</p>\"+(note.expectedBehaviour?\"<section><strong>Expected behaviour</strong><p>\"+esc(note.expectedBehaviour).replace(/\\n/g,'<br>')+\"</p></section>\":'')+(note.actualBehaviour?\"<section><strong>What actually happened</strong><p>\"+esc(note.actualBehaviour).replace(/\\n/g,'<br>')+\"</p></section>\":'')+(note.adaptiveScope?.currentScope?\"<section class='orbit-current-target orbit-current-target-detail'><strong>Current Implementation Target \u00B7 Revision \"+esc(note.adaptiveScope.revision||1)+\"</strong><p>\"+esc(note.adaptiveScope.currentImplementationTarget||note.adaptiveScope.currentScope).replace(/\\n/g,'<br>')+\"</p>\"+(note.adaptiveScope.repeatedFailureWarning?\"<div class='orbit-repeat-warning'>\"+esc(note.adaptiveScope.repeatedFailureWarning)+\"</div>\":\"\")+\"</section><details class='orbit-adaptive-scope orbit-adaptive-scope-detail'><summary>Full Current Scope</summary><p>\"+esc(note.adaptiveScope.currentScope).replace(/\\n/g,'<br>')+\"</p></details>\"+((note.adaptiveScope.changesSinceLastAttempt||[]).length?\"<section class='orbit-scope-delta'><strong>What changed since the last attempt</strong><ul>\"+note.adaptiveScope.changesSinceLastAttempt.map(x=>\"<li>\"+esc(x)+\"</li>\").join(\"\")+\"</ul></section>\":\"\")+\"<section class='orbit-adaptive-brief'><strong>Developer Brief</strong><p>\"+esc(note.adaptiveScope.developerBrief||'').replace(/\\n/g,'<br>')+\"</p></section><section><strong>What to test now</strong><ol>\"+(note.adaptiveScope.acceptanceTests||[]).map(t=>\"<li>\"+esc(t)+\"</li>\").join('')+\"</ol></section>\":'')+((note.trancheAcceptanceHistory||[]).length?\"<section class='orbit-tranche-acceptance-history'><strong>Release tranche acceptance history</strong><ul>\"+note.trancheAcceptanceHistory.slice().reverse().map(item=>\"<li><b>\"+esc(item.outcome||'')+\"</b> \u00B7 \"+esc(item.releaseVersion||'')+\" \u00B7 \"+esc(item.acceptanceId||'')+(item.feedback?\"<br>\"+esc(item.feedback):\"\")+\"</li>\").join(\"\")+\"</ul></section>\":\"\")+renderAiDossierV548(note.aiEngineeringDossier||null,'note',note.id)+renderDevelopmentPacketV558(note.aiDevelopmentPacket||null)+\"<div class='orbit-detail-screenshots'>\"+(note.screenshots||[]).map(x=>\"<a href='\"+x.dataUrl+\"' target='_blank'><img src='\"+x.dataUrl+\"' alt='Issue screenshot'></a>\").join('')+\"</div>\"+((note.attachments||[]).length?\"<section><strong>Attached files</strong><div class='orbit-note-files-v563'>\"+renderDevelopmentAttachmentsV563(note.attachments)+\"</div></section>\":'')+\"<details open><summary>Captured context</summary><pre>\"+esc(JSON.stringify(note.context||{},null,2))+\"</pre></details><section><strong>Discussion</strong><div class='orbit-note-comments'>\"+(note.comments||[]).map(c=>\"<article><p>\"+esc(c.body).replace(/\\n/g,'<br>')+\"</p>\"+((c.screenshots||[]).length?\"<div class='orbit-comment-screenshots'>\"+(c.screenshots||[]).map(x=>\"<a href='\"+x.dataUrl+\"' target='_blank'><img src='\"+x.dataUrl+\"' alt='Comment screenshot'></a>\").join('')+\"</div>\":'')+\"<small>\"+esc(c.author)+\" \u00B7 \"+new Date(c.createdAt).toLocaleString('en-GB')+\"</small></article>\").join('')+\"</div><textarea id='developmentNoteComment' rows='4' placeholder='Add testing feedback or implementation notes'></textarea><div class='orbit-comment-evidence'><button type='button' class='secondary' data-choose-comment-screenshots>Add screenshots</button><span id='developmentCommentScreenshotCount'>No screenshots attached</span></div><div id='developmentCommentScreenshotPreview' class='orbit-screenshot-preview'></div><button type='button' data-add-note-comment='\"+esc(note.id)+\"'>Add comment</button></section></div>\";openOrbitDialog(dialog);}\n  function mountOrbitReviewLauncher(){\n    let button=document.getElementById('orbitReviewNotesFloatingButton');\n    if(!button){\n      button=document.createElement('button');\n      button.type='button';button.id='orbitReviewNotesFloatingButton';button.className='orbit-review-floating';button.setAttribute('aria-label','Open Orbit Studio development note');button.innerHTML='<span aria-hidden=\"true\">!</span><strong>Orbit Studio</strong>';button.title='Create development note';\n    }\n    if(button.parentElement!==document.body) document.body.appendChild(button);\n    button.hidden=false;\n    Object.assign(button.style,{position:'fixed',right:'24px',bottom:'72px',zIndex:'2147483000',display:'flex',visibility:'visible',opacity:'1',pointerEvents:'auto'});\n    return button;\n  }\n  mountOrbitReviewLauncher();\n  // Orbit OS V185: one deterministic attention-count reconciler.\n  // Previous releases accumulated overlapping observers with different selectors.\n  // This is the only count-badge observer permitted. It hides explicit zero/blank\n  // counters and restores positive numeric counters without affecting status pills.\n  function reconcileOrbitAttentionCountsV185(root=document){\n    const scope=root && root.querySelectorAll ? root : document;\n    scope.querySelectorAll('[data-notification-count],[data-count],.orbit-alert-count,.orbit-count-badge,.orbit-nav-badge,.orbit-shipping-tabs button span').forEach(function(el){\n      const raw=String(el.dataset.notificationCount ?? el.dataset.count ?? el.textContent ?? '').trim();\n      const numericText=raw.replace(/[^0-9.-]/g,'');\n      const numeric=numericText==='' ? NaN : Number(numericText);\n      const explicitCount=el.hasAttribute('data-notification-count') || el.hasAttribute('data-count') || el.matches('.orbit-alert-count,.orbit-count-badge,.orbit-nav-badge,.orbit-shipping-tabs button span');\n      if(!explicitCount) return;\n      const hide=raw==='' || (Number.isFinite(numeric) && numeric===0);\n      el.hidden=hide;\n      el.setAttribute('aria-hidden',hide?'true':'false');\n      if(hide) el.dataset.orbitZeroCount='true'; else delete el.dataset.orbitZeroCount;\n    });\n  }\n  let orbitAttentionCountFrameV185=0;\n  function scheduleOrbitAttentionCountReconcileV185(root=document){\n    if(orbitAttentionCountFrameV185) return;\n    orbitAttentionCountFrameV185=requestAnimationFrame(function(){\n      orbitAttentionCountFrameV185=0;\n      reconcileOrbitAttentionCountsV185(root);\n    });\n  }\n  const orbitAttentionCountObserverV185=new MutationObserver(function(records){\n    const root=records.find(record=>record.target)?.target?.closest?.('.orbit-admin-shell') || document;\n    scheduleOrbitAttentionCountReconcileV185(root);\n  });\n  reconcileOrbitAttentionCountsV185();\n  orbitAttentionCountObserverV185.observe(document.body,{subtree:true,childList:true,characterData:true,attributes:true,attributeFilter:['data-count','data-notification-count','hidden']});\n  document.addEventListener('click',function(e){\n    const trigger=e.target.closest('#orbitReviewNotesFloatingButton,#openReviewNoteFromHub,[data-open-review-note]');\n    if(!trigger) return;\n    e.preventDefault();\n    e.stopPropagation();\n    openOrbitReviewNote(trigger.id==='openReviewNoteFromStudio');\n  },true);\n  document.getElementById('minimiseReviewNoteDialog')?.addEventListener('click',()=>{saveQuickNoteDraftV415();closeOrbitDialog(document.getElementById('orbitReviewNoteDialog'));setNotice('Quick Note minimised. Your draft is preserved.');});document.getElementById('clearReviewNoteDraft')?.addEventListener('click',()=>{if(!confirm('Clear this unsaved Quick Note draft?'))return;clearQuickNoteDraftV415();orbitReviewScreenshots=[];orbitReviewAttachments=[];closeOrbitDialog(document.getElementById('orbitReviewNoteDialog'));setNotice('Quick Note draft cleared.');});document.getElementById('chooseReviewScreenshots')?.addEventListener('click',function(){const input=document.getElementById('reviewScreenshotInput');if(!input)return setNotice('Screenshot picker is unavailable. Refresh Admin OS and try again.',true);try{if(typeof input.showPicker==='function')input.showPicker();else input.click();}catch(_){input.click();}});document.getElementById('reviewScreenshotInput')?.addEventListener('change',function(){const selected=[...(this.files||[])];this.value='';if(selected.length)addReviewFiles(selected);});document.getElementById('reviewScreenshotPreview')?.addEventListener('click',e=>{const image=e.target.closest('[data-remove-review-image]'),file=e.target.closest('[data-remove-review-file]');if(image){orbitReviewScreenshots.splice(Number(image.dataset.removeReviewImage),1);renderReviewEvidenceV563();saveQuickNoteDraftV415();return;}if(file){orbitReviewAttachments.splice(Number(file.dataset.removeReviewFile),1);renderReviewEvidenceV563();saveQuickNoteDraftV415();}});document.getElementById('saveReviewNoteButton')?.addEventListener('click',saveOrbitReviewNote);\n  document.getElementById('orbitReviewNoteDialog')?.addEventListener('input',()=>saveQuickNoteDraftV415());document.getElementById('orbitReviewNoteDialog')?.addEventListener('change',()=>saveQuickNoteDraftV415());window.addEventListener('beforeunload',()=>{const dialog=document.getElementById('orbitReviewNoteDialog');if(dialog?.open)saveQuickNoteDraftV415();});if(quickNoteDraftV415())document.getElementById('orbitReviewNotesFloatingButton')?.classList.add('has-draft');\n  const drop=document.getElementById('reviewScreenshotDropzone');['dragenter','dragover'].forEach(name=>drop?.addEventListener(name,e=>{e.preventDefault();drop.classList.add('is-dragging');}));['dragleave','drop'].forEach(name=>drop?.addEventListener(name,e=>{e.preventDefault();drop.classList.remove('is-dragging');if(name==='drop')addReviewFiles(e.dataTransfer.files);}));document.addEventListener('paste',e=>{const dialog=document.getElementById('orbitReviewNoteDialog');const quickOpen=Boolean(dialog&&(dialog.open===true||dialog.hasAttribute('open')));if(!quickOpen)return;const itemFiles=[...(e.clipboardData?.items||[])].filter(i=>i.kind==='file'&&String(i.type||'').startsWith('image/')).map(i=>i.getAsFile()).filter(Boolean);const directFiles=[...(e.clipboardData?.files||[])].filter(f=>String(f.type||'').startsWith('image/'));const files=[...itemFiles,...directFiles].filter((file,index,all)=>all.findIndex(other=>other===file||(other.name===file.name&&other.size===file.size&&other.type===file.type))===index);if(files.length){e.preventDefault();e.stopImmediatePropagation();addReviewFiles(files);setNotice(files.length+' screenshot'+(files.length===1?'':'s')+' pasted into Quick Note.');}},true);document.addEventListener('keydown',e=>{if(e.ctrlKey&&e.shiftKey&&e.key.toLowerCase()==='n'&&!['INPUT','TEXTAREA'].includes(document.activeElement?.tagName)){e.preventDefault();openOrbitReviewNote();}});\n\n  let orbitDeploymentStateV343={configuration:null,deployments:[]};\n  const ORBIT_DEPLOYMENT_CACHE_KEY_V385=\"orbit:v385:deployment-status-cache\";\n  function cacheDeploymentStateV385(){try{sessionStorage.setItem(ORBIT_DEPLOYMENT_CACHE_KEY_V385,JSON.stringify({savedAt:Date.now(),state:orbitDeploymentStateV343}));}catch(_){}}\n  function hydrateDeploymentStateV385(){try{const cached=JSON.parse(sessionStorage.getItem(ORBIT_DEPLOYMENT_CACHE_KEY_V385)||\"null\");if(!cached?.state||Date.now()-Number(cached.savedAt||0)>30*60*1000)return false;orbitDeploymentStateV343=cached.state;renderDeployConfigurationV343();renderDeploymentHistoryV343();return true;}catch(_){return false;}}\n  let orbitDeploymentAutoRefreshV370=null;\n  function stopDeploymentAutoRefreshV370(){\n    if(orbitDeploymentAutoRefreshV370){clearInterval(orbitDeploymentAutoRefreshV370);orbitDeploymentAutoRefreshV370=null;}\n  }\n  function startDeploymentAutoRefreshV370(){\n    stopDeploymentAutoRefreshV370();\n    // NOTE-743489073E: while Deployments is actually visible, keep status live.\n    orbitDeploymentAutoRefreshV370=setInterval(()=>{\n      const panel=document.getElementById('orbitDeployPanel');\n      if(state.currentModule!=='development'||!panel||panel.hidden){stopDeploymentAutoRefreshV370();return;}\n      loadOrbitDeploymentsV343().catch(()=>{});\n    },5000);\n  }\n  function deploymentBadgeV343(status){\n    const labels={staging:'Verifying staged payload',stage_failed:'Staging blocked',validated:'Validated',preparing:'Preparing release',deploying:'Preparing release',backend_committed:'Deploy initiated',backend_deploy_triggered:'Deploy initiated',deploy_initiated:'Deploy initiated',render_deploying:'Deploying',awaiting_acceptance:'Release verification in progress',acceptance_failed:'Acceptance complete \u00B7 issues',accepted:'Certified',failed:'Failed',failed_after_backend:'Needs rollback',rolling_back:'Rollback initiated',rollback_backend_triggered:'Rollback deploying',rolled_back:'Rolled back',rollback_failed:'Rollback failed'};\n    return \"<span class='orbit-deploy-status status-\"+esc(String(status||'unknown').replace(/_/g,'-'))+\"'>\"+esc(labels[status]||status||'Unknown')+\"</span>\";\n  }\n  function renderDeployConfigurationV343(){\n    const box=document.getElementById('orbitDeployConfiguration'),c=orbitDeploymentStateV343.configuration;if(!box)return;\n    if(!c){box.innerHTML=\"<p class='orbit-muted'>Deployment configuration unavailable.</p>\";return;}\n    const cards=[\n      ['GitHub backend',c.github?.ready,c.github?.ready?(c.github.owner+'/'+c.github.repo+' \u00B7 '+c.github.branch):('Missing: '+(c.github?.missing||[]).join(', '))],\n      ['Render deploy',c.render?.ready,c.render?.ready?('Mode: '+(c.render.mode||'auto')+(c.render.apiMonitoring?' \u00B7 API truth enabled':' \u00B7 runtime truth only')+(c.render.healthUrl?' \u00B7 '+c.render.healthUrl:'')):('Missing: '+(c.render?.missing||[]).join(', '))],\n      ['Shopify live theme',c.shopify?.ready,c.shopify?.ready?(c.shopify.shop+(c.shopify.writeThemesKnown===null?' \u00B7 write scope verified on deploy':' \u00B7 write_themes ready')):('Missing: '+(c.shopify?.missing||[]).join(', '))]\n    ];\n    box.innerHTML=\"<div class='orbit-deploy-config-grid'>\"+cards.map(x=>\"<div class='orbit-deploy-config-card \"+(x[1]?'ready':'needs-setup')+\"'><span>\"+esc(x[0])+\"</span><strong>\"+(x[1]?'Ready':'Setup required')+\"</strong><small>\"+esc(x[2])+\"</small></div>\").join('')+\"</div>\"+((c.github?.ready&&c.render?.ready)?'':\"<div class='orbit-deploy-once'><strong>One-time setup</strong><span>Add the missing secret environment values in Render once. Orbit never displays or stores those secret values in the browser.</span></div>\");\n  }\n  function deploymentActionsV343(d){\n    const actions=[];\n    if(d.status==='validated')actions.push(\"<button type='button' data-orbit-deploy='\"+esc(d.id)+\"'>Deploy validated release</button><button type='button' class='secondary' data-orbit-discard-deploy='\"+esc(d.id)+\"'>Discard</button>\");\n    if(d.status==='stage_failed')actions.push(\"<button type='button' class='secondary' data-orbit-discard-deploy='\"+esc(d.id)+\"'>Discard failed staging</button>\");\n    if(['deploy_initiated','backend_deploy_triggered'].includes(d.status)){\n      const ready=Boolean(orbitDeploymentStateV343.configuration?.render?.manualDeployReady);\n      actions.push(\"<button type='button' class='secondary' data-orbit-render-manual='\"+esc(d.id)+\"' \"+(ready?'':\"disabled title='Add ORBIT_RENDER_API_KEY in Render to enable exact-commit manual recovery'\")+\">Manual deploy exact commit</button>\");\n    }\n    if(['backend_deploy_triggered','deploy_initiated','render_deploying','awaiting_acceptance','acceptance_failed','accepted','failed_after_backend','rollback_failed'].includes(d.status))actions.push(\"<button type='button' class='danger secondary' data-orbit-rollback='\"+esc(d.id)+\"'>Rollback \"+esc(d.manifest?.releaseVersion||'current')+\" \u2192 \"+esc(d.manifest?.baseVersion||'previous')+\"</button>\");\n    return actions.join('');\n  }\n  function deploymentAcceptanceOwnershipV560(d){\n    const ids=[...new Set((d.manifest?.acceptanceIds||[]).map(String))],items=Array.isArray(d.acceptanceSummary?.items)?d.acceptanceSummary.items:[],notes=new Map((orbitDevelopmentNotes||[]).map(n=>[String(n.id||n.noteId||\"\"),n]));\n    const itemMap=new Map(items.map(x=>[String(x.id||x.noteId||\"\"),x]));\n    const rows=ids.map(id=>{const note=notes.get(id),item=itemMap.get(id)||{},operator=note?operatorDevelopmentItemV559(note):!/^ACCEPT-/i.test(id),done=Boolean(item.passed||item.failed||item.resolved||item.held)||[\"Complete\",\"Archived\"].includes(String(item.status||\"\"));return {id,note,item,operator,pending:!done};});\n    return {rows,operator:rows.filter(x=>x.operator),ai:rows.filter(x=>!x.operator),operatorPending:rows.filter(x=>x.operator&&x.pending),aiPending:rows.filter(x=>!x.operator&&x.pending)};\n  }\n  function deploymentIncidentSummaryV56702(d){\n    const incident=d?.incident;if(!incident?.latestId)return \"\";\n    const confidence=String(incident.confidence||\"\").replace(/_/g,\" \");\n    const root=String(incident.rootCause||\"\").trim();\n    const recovery=String(incident.safestRecovery||\"\").trim();\n    const rollback=incident.rollbackCompleted===true?\"Rollback was required and is complete\":incident.rollbackRequired===true?\"Rollback required\":incident.rollbackRequired===false?\"Rollback not required\":\"Rollback decision depends on remaining evidence\";\n    return \"<details class='orbit-deploy-incident-v56702' open><summary>Deployment Incident Investigator \u00B7 \"+esc(confidence||\"forensics captured\")+\"</summary><div class='orbit-deploy-incident-body-v56702'>\"+\n      (root?\"<p><strong>Cause</strong><span>\"+esc(root)+\"</span></p>\":\"\")+\n      \"<p><strong>Recovery</strong><span>\"+esc(rollback+(recovery?\" \u00B7 \"+recovery:\"\"))+\"</span></p>\"+\n      \"<small>Incident \"+esc(incident.latestId)+\" \u00B7 read-only investigation \u00B7 no deployment or rollback authority</small></div></details>\";\n  }\n  function deploymentAcceptanceSummaryV349(d){\n    const own=deploymentAcceptanceOwnershipV560(d),a=d.acceptanceSummary||null,total=own.rows.length||Number(a?.total||0);if(!total)return \"\";\n    const passed=Number(a?.passed||0),failed=Number(a?.failed||0),resolved=Number(a?.resolved||0),held=Number(a?.held||0),opPending=own.operatorPending.length,aiPending=own.aiPending.length;\n    let state,line;if(opPending){state=\"Your Acceptance in progress\";line=opPending+\" waiting for you\"+(aiPending?\" \u00B7 \"+aiPending+\" AI verification running\":\"\");}\n    else if(aiPending){state=\"AI verification in progress\";line=\"Nothing waiting for you \u00B7 \"+aiPending+\" AI check\"+(aiPending===1?\"\":\"s\")+\" running\";}\n    else{state=failed>0?\"Release verification complete with issues\":\"Release verification complete\";line=\"Nothing waiting for you \u00B7 \"+own.operator.length+\" operator item\"+(own.operator.length===1?\"\":\"s\")+\" \u00B7 \"+own.ai.length+\" AI verification\"+(own.ai.length===1?\"\":\"s\")+\" \u00B7 \"+passed+\" passed\"+(resolved?\" \u00B7 \"+resolved+\" resolved\":\"\")+(held?\" \u00B7 \"+held+\" held\":\"\");}\n    const detail=own.rows.length?\"<details class='orbit-deploy-acceptance-detail'><summary>View verification results</summary><div>\"+own.rows.map(row=>{const item=row.item||{},kind=row.operator?\"Your Acceptance\":\"AI verification\";return \"<div class='orbit-deploy-acceptance-item \"+(item.failed?'failed':item.passed?'passed':item.resolved?'resolved':item.held?'held':'pending')+\"'><strong>\"+esc(kind+\" \u00B7 \"+row.id)+\"</strong><span>\"+esc(item.held?'Held for later':(item.outcome||'Pending'))+\" \u00B7 \"+esc(item.status||'Unknown')+\"</span>\"+(item.holdReason?\"<small>\"+esc(item.holdReason)+\"</small>\":item.feedback?\"<small>\"+esc(item.feedback)+\"</small>\":\"\")+\"</div>\";}).join(\"\")+\"</div></details>\":\"\";\n    return \"<div class='orbit-deploy-acceptance-summary'><strong>\"+esc(state)+\"</strong><span>\"+esc(line)+\"</span>\"+detail+\"</div>\";\n  }\n  function newestDeploymentV418(rows){\n    return [...(rows||[])].sort((a,b)=>new Date(b.updatedAt||b.createdAt||0)-new Date(a.updatedAt||a.createdAt||0))[0]||null;\n  }\n  function renderGlobalDeploymentAlertV418(data){\n    const button=$(\"orbitGlobalDeploymentAlert\"),title=$(\"orbitGlobalDeploymentAlertTitle\"),text=$(\"orbitGlobalDeploymentAlertText\");if(!button)return;\n    const rows=[...(data?.deployments||orbitDeploymentStateV343.deployments||[])];\n    // V501.0.6: global recovery truth follows the CURRENT live release only.\n    // Historical failed/rejected/staged attempts remain in Release History for audit\n    // but must never keep a healthy superseding release under a red warning banner.\n    const current=rows.filter(x=>String(x.manifest?.releaseVersion||\"\")===ORBIT_RELEASE)\n      .sort((a,b)=>new Date(b.updatedAt||b.createdAt||0)-new Date(a.updatedAt||a.createdAt||0))[0]||null;\n    const status=String(current?.status||\"\");\n    const bad=current&&[\"failed_after_backend\",\"rollback_failed\",\"rolling_back\",\"rollback_backend_triggered\"].includes(status);\n    if(!bad){button.hidden=true;button.classList.remove(\"visible\",\"critical\");return;}\n    button.hidden=false;button.classList.add(\"visible\",\"critical\");\n    if(title)title.textContent=\"Current release \"+ORBIT_RELEASE+\" needs recovery\";\n    if(text)text.textContent=status===\"failed_after_backend\"?\"Current deployment needs recovery \u00B7 open Deployments\":\"Current rollback needs recovery \u00B7 open Deployments\";\n  }\n    async function refreshGlobalDeploymentAlertV418(){\n    if(!state.adminAuthenticated)return;\n    try{const data=await api(\"/api/admin/deployments/status\",{cacheMs:0,timeoutMs:12000});renderGlobalDeploymentAlertV418(data);}catch(_){}\n  }\n  function renderDeploymentHistoryV343(){\n    const box=document.getElementById('orbitDeploymentHistory');if(!box)return;\n    const openAcceptance=new Set([...box.querySelectorAll(\"details.orbit-deploy-acceptance-detail[open]\")].map(x=>x.closest(\"[data-orbit-deployment-card]\")?.dataset.orbitDeploymentCard).filter(Boolean));\n    const rows=orbitDeploymentStateV343.deployments||[];\n    if(!rows.length){box.innerHTML=\"<p class='orbit-muted'>No release ZIPs have been staged yet.</p>\";return;}\n    box.innerHTML=rows.map(d=>{\n      const s=d.summary||{},events=d.events||[],last=events[events.length-1],release=d.manifest?.releaseVersion||'Unknown release',base=d.manifest?.baseVersion||'\u2014';\n      const title=(d.status==='rolled_back'||d.status==='rollback_backend_triggered'||d.status==='rolling_back')?release+\" \u2192 \"+base:release;\n      const subtitle=d.status==='rolled_back'?base+\" is live after rollback \u00B7 \"+new Date(d.createdAt).toLocaleString('en-GB'):\"from \"+base+\" \u00B7 \"+new Date(d.createdAt).toLocaleString('en-GB');\n      const lastMessage=String(last?.message||last?.type||'').trim(),errorMessage=String(d.lastError?.message||'').trim();\n      const healthyStatus=['awaiting_acceptance','accepted','rolled_back'].includes(d.status);\n      const showError=!healthyStatus&&errorMessage;\n      const showEvent=lastMessage&&(!showError||lastMessage!==errorMessage);\n      const payload=d.payloadIntegrity||null,payloadVerified=payload?.ok===true;\n      const impossibleThemeOnly=Number(s.backendFiles||0)>0&&/theme-only/i.test(lastMessage);\n      const payloadMetric=payloadVerified?\"<span>staged payload \u2713</span>\":\"\";\n      const integrityWarning=impossibleThemeOnly?\"<p class='orbit-deploy-error'><strong>Protected deployment inconsistency</strong> \u00B7 manifest declares backend files but this historical event was classified as theme-only. Do not treat this release as a coherent deployment.</p>\":\"\";\n      return \"<article class='orbit-deploy-release' data-orbit-deployment-card='\"+esc(d.id)+\"'><div class='orbit-deploy-release-head'><div><strong>\"+esc(title)+\"</strong><small>\"+esc(subtitle)+\"</small></div>\"+deploymentBadgeV343(d.status)+\"</div><div class='orbit-deploy-metrics'><span>\"+Number(s.backendFiles||0)+\" backend</span><span>\"+Number(s.themeFiles||0)+\" theme</span><span>\"+Number(s.totalBytes||0).toLocaleString()+\" bytes</span>\"+payloadMetric+(()=>{const own=deploymentAcceptanceOwnershipV560(d);return (own.operator.length?\"<span>\"+own.operator.length+\" Your Acceptance</span>\":\"\")+(own.ai.length?\"<span>\"+own.ai.length+\" AI verification</span>\":\"\");})()+\"</div>\"+integrityWarning+deploymentAcceptanceSummaryV349(d)+deploymentIncidentSummaryV56702(d)+(showEvent?\"<p class='orbit-deploy-event'>\"+esc(lastMessage)+\"</p>\":\"\")+(showError?\"<p class='orbit-deploy-error'>\"+esc(errorMessage)+\"</p>\":\"\")+\"<div class='orbit-action-row'>\"+deploymentActionsV343(d)+\"</div></article>\";\n    }).join('');\n    for(const id of openAcceptance){const card=box.querySelector(\"[data-orbit-deployment-card='\"+CSS.escape(id)+\"']\");const details=card?.querySelector(\"details.orbit-deploy-acceptance-detail\");if(details)details.open=true;}\n  }\n  async function loadOrbitDeploymentsV343(){\n    const data=await api('/api/admin/deployments/status',{cacheMs:0,timeoutMs:20000});\n    orbitDeploymentStateV343={configuration:data.configuration||null,deployments:data.deployments||[]};\n    cacheDeploymentStateV385();renderDeployConfigurationV343();renderDeploymentHistoryV343();renderGlobalDeploymentAlertV418(data);return data;\n  }\n  async function stageOrbitReleaseV343(file){\n    if(!file)return;\n    const name=document.getElementById('orbitReleaseZipName'),result=document.getElementById('orbitReleaseStageResult');\n    if(name)name.textContent=file.name+' \u00B7 '+Math.round(file.size/1024)+' KB';\n    if(result){result.hidden=false;result.className='orbit-deploy-stage-result';result.innerHTML='<strong>Validating\u2026</strong><span>Checking manifest, paths, hashes and release identity.</span>';}\n    try{\n      const data=await api('/api/admin/deployments/stage',{method:'POST',headers:{'Content-Type':'application/zip'},body:file,timeoutMs:90000,cacheMs:0});\n      const d=data.deployment,s=d.summary||{};\n      const payloadVerified=d.payloadIntegrity?.ok===true;\n      if(result)result.innerHTML=\"<strong>\"+esc(d.manifest.releaseVersion)+\" validated \u2713</strong><span>\"+Number(s.backendFiles||0)+\" backend files \u00B7 \"+Number(s.themeFiles||0)+\" Shopify theme files \u00B7 base \"+esc(d.manifest.baseVersion)+(payloadVerified?\" \u00B7 staged payload read-back verified\":\"\")+\"</span><small>Nothing has been deployed yet. Review the release below, then press Deploy validated release.</small>\";\n      await loadOrbitDeploymentsV343();\n    }catch(err){\n      if(result){result.classList.add('error');result.innerHTML=\"<strong>Package rejected</strong><span>\"+esc(err.message||err)+\"</span>\";}\n      throw err;\n    }\n  }\n  const ORBIT_PENDING_DEPLOYMENT_KEY_V366=\"orbitPendingDeploymentIdV366\";\n  function rememberPendingDeploymentV366(id){\n    try{if(id)localStorage.setItem(ORBIT_PENDING_DEPLOYMENT_KEY_V366,String(id));else localStorage.removeItem(ORBIT_PENDING_DEPLOYMENT_KEY_V366);}catch(_){}\n  }\n  function pendingDeploymentV366(){try{return localStorage.getItem(ORBIT_PENDING_DEPLOYMENT_KEY_V366)||\"\";}catch(_){return \"\";}}\n  function resumePendingDeploymentPollV366(){\n    const id=pendingDeploymentV366();\n    if(!id||state.currentModule!==\"development\")return;\n    pollDeploymentV343(id).catch(()=>{});\n  }\n\n  async function pollDeploymentV343(id,minutes=10){\n    const deadline=Date.now()+minutes*60000;\n    while(Date.now()<deadline){\n      await new Promise(r=>setTimeout(r,5000));\n      try{\n        const data=await api('/api/admin/deployments/'+encodeURIComponent(id),{cacheMs:0,timeoutMs:12000});\n        const d=data.deployment;\n        await loadOrbitDeploymentsV343();\n        if(['awaiting_acceptance','acceptance_failed','accepted','rolled_back','failed','failed_after_backend','rollback_failed'].includes(d.status)){\n          rememberPendingDeploymentV366('');\n          // V373: refresh canonical note state before stopping deployment polling.\n          if(['awaiting_acceptance','acceptance_failed','accepted'].includes(d.status)){\n            try{await loadOrbitDevelopmentHub({forceFresh:true,background:true});renderVerificationQueue(true);renderHeldVerificationQueue(true);}catch(error){console.warn('Post-deploy Acceptance refresh waiting:',error.message||error);}\n            // V376 NOTE-F65662A067: refresh the whole Admin exactly once when a\n            // newly deployed release reaches Acceptance so mission/version/cards\n            // all rebuild from the new backend without a manual hard refresh.\n            if(d.status==='awaiting_acceptance'){\n              try{const key='orbit:v376:acceptance-refresh:'+String(d.id||id);if(!sessionStorage.getItem(key)){sessionStorage.setItem(key,'1');window.location.reload();return d;}}catch(_){ }\n            }\n          }\n          return d;\n        }\n      }catch(_){}\n    }\n    return null;\n  }\n  async function recoverDeployStartV375(id,originalError){\n    const deadline=Date.now()+90000;\n    while(Date.now()<deadline){\n      try{\n        const data=await api('/api/admin/deployments/'+encodeURIComponent(id),{cacheMs:0,timeoutMs:12000});\n        const d=data.deployment||{};\n        await loadOrbitDeploymentsV343().catch(()=>{});\n        if(d.status&&d.status!=='validated'){\n          setNotice(['failed','failed_after_backend'].includes(d.status)?(d.lastError?.message||'Deployment failed.'):'Deploy accepted on the first press \u00B7 '+String(d.status).replace(/_/g,' ')+'.');\n          if(['preparing','deploying','backend_committed','backend_deploy_triggered','deploy_initiated','render_deploying'].includes(d.status))pollDeploymentV343(id).catch(()=>{});\n          return true;\n        }\n      }catch(_){ }\n      await new Promise(r=>setTimeout(r,3000));\n    }\n    rememberPendingDeploymentV366('');\n    setNotice(originalError?.message||originalError||'Orbit could not confirm that deployment started.',true);\n    return false;\n  }\n  function unresolvedPriorDeploymentV385(currentId){\n    // V501.0.6: only an operation that can still affect the CURRENT live release\n    // is a deploy blocker. A package that failed before changing production is\n    // historical audit evidence, not an unresolved production incident.\n    const unresolved=new Set(['failed_after_backend','rollback_failed','preparing','deploying','backend_committed','backend_deploy_triggered','deploy_initiated','render_deploying','rolling_back','rollback_backend_triggered']);\n    return (orbitDeploymentStateV343.deployments||[]).find(d=>{\n      if(!d||d.id===currentId||!unresolved.has(String(d.status||'')))return false;\n      const release=String(d.manifest?.releaseVersion||''),base=String(d.manifest?.baseVersion||'');\n      return release===ORBIT_RELEASE||base===ORBIT_RELEASE;\n    })||null;\n  }\n  async function deployReleaseV343(id,button){\n    const prior=unresolvedPriorDeploymentV385(id);\n    if(prior){const label=String(prior.manifest?.releaseVersion||'Previous release');if(!confirm('\u26A0\uFE0F PREVIOUS DEPLOYMENT UNRESOLVED\\n\\n'+label+' is still '+String(prior.status||'unresolved').replace(/_/g,' ')+'.\\n\\nContinuing may create version drift or complicate recovery.\\n\\nChoose Cancel to investigate. Press OK only if you deliberately want to continue.'))return;}\n    if(!confirm('Deploy this validated Orbit release to production?\\n\\nOrbit will snapshot the current backend/theme state first and keep rollback available.'))return;\n    const original=button?.textContent||'Deploy validated release';if(button){button.disabled=true;button.classList.add('is-working');button.setAttribute('aria-busy','true');button.textContent='Starting deployment\u2026';}\n    rememberPendingDeploymentV366(id);\n    try{\n      const data=await api('/api/admin/deployments/'+encodeURIComponent(id)+'/deploy',{method:'POST',body:'{}',timeoutMs:120000,cacheMs:0});\n      if(button&&document.contains(button))button.textContent=['backend_deploy_triggered','deploy_initiated'].includes(data.deployment?.status)?'Deploy initiated\u2026':data.deployment?.status==='render_deploying'?'Deploying\u2026':'Deployment accepted\u2026';\n      setNotice(['backend_deploy_triggered','deploy_initiated'].includes(data.deployment?.status)?'Deploy initiated. GitHub is complete; Orbit is waiting for positive Render confirmation.':data.deployment?.status==='render_deploying'?'Render confirmed the exact commit is deploying.':'Release deployed.');\n      await loadOrbitDeploymentsV343();\n      if(['backend_deploy_triggered','deploy_initiated','render_deploying'].includes(data.deployment?.status))pollDeploymentV343(id).catch(()=>{});else rememberPendingDeploymentV366('');\n    }catch(err){\n      if(button&&document.contains(button))button.textContent='Confirming deployment\u2026';\n      setNotice('Deploy request sent. Orbit is confirming the persisted deployment state\u2026');\n      const recovered=await recoverDeployStartV375(id,err);\n      if(!recovered&&button&&document.contains(button)){button.disabled=false;button.classList.remove('is-working');button.removeAttribute('aria-busy');button.textContent=original;}\n    }\n  }\n  async function manualRenderDeployV392(id,button){\n    if(!confirm('Manually trigger Render for the exact Git commit already attached to this Orbit release?\\n\\nThis does not create a new GitHub commit and will not deploy a different release.'))return;\n    setLoading(button,true);\n    try{\n      const data=await api('/api/admin/deployments/'+encodeURIComponent(id)+'/render-manual',{method:'POST',body:'{}',timeoutMs:60000,cacheMs:0});\n      setNotice('Render manual recovery requested for the exact release commit.');\n      await loadOrbitDeploymentsV343();pollDeploymentV343(id).catch(()=>{});\n    }catch(err){setNotice(err.message||err,true);}finally{setLoading(button,false);}\n  }\n  async function rollbackReleaseV343(id,button){\n    if(!confirm('ROLL BACK this release to its exact pre-deployment backend/theme snapshot?\\n\\nOrbit will create a verified forward recovery commit from the stored pre-release snapshot and refuse only if that deterministic recovery cannot be proven.'))return;\n    setLoading(button,true);\n    try{\n      const data=await api('/api/admin/deployments/'+encodeURIComponent(id)+'/rollback',{method:'POST',body:'{}',timeoutMs:120000,cacheMs:0});\n      setNotice(data.deployment?.status==='rollback_backend_triggered'?'Rollback deploy triggered. Orbit will restore the theme after the previous backend boots.':'Rollback completed.');\n      await loadOrbitDeploymentsV343();\n      if(data.deployment?.status==='rollback_backend_triggered')pollDeploymentV343(id).catch(()=>{});\n    }catch(err){setNotice(err.message||err,true);}finally{setLoading(button,false);}\n  }\n  function setDevelopmentTab(tab){\n    tab=tab||'home';rememberOrbitSubtab('development',tab);\n    document.querySelectorAll('[data-development-tab]').forEach(x=>x.classList.toggle('active',x.dataset.developmentTab===tab));\n    const home=document.getElementById('orbitDevelopmentHomePanel');if(home)home.hidden=tab!=='home';\n    const notes=document.getElementById('orbitDevelopmentNotesPanel');if(notes)notes.hidden=tab!=='notes';\n    const verification=document.getElementById('orbitVerificationPanel');if(verification)verification.hidden=tab!=='verification';\n    const heldVerification=document.getElementById('orbitHeldVerificationPanel');if(heldVerification)heldVerification.hidden=tab!=='held-verification';\n    const roadmap=document.getElementById('orbitRoadmapPanel');if(roadmap)roadmap.hidden=tab!=='roadmap';\n    const deployPanel=document.getElementById('orbitDeployPanel');if(deployPanel)deployPanel.hidden=tab!=='deploy';\n    const review=document.getElementById('orbitReviewSurfacePanel');if(review)review.hidden=tab!=='review';\n    stopDeploymentAutoRefreshV370();\n    if(tab==='deploy'){hydrateDeploymentStateV385();setTimeout(()=>{loadOrbitDeploymentsV343().catch(err=>setNotice(err.message||err,true));startDeploymentAutoRefreshV370();},20);}\n    if(tab==='review')setTimeout(()=>loadOrbitReviewSurface(false),40);\n    if(tab==='verification'){renderVerificationQueue();loadOrbitDevelopmentHub({forceFresh:true,background:true}).then(()=>renderVerificationQueue()).catch(err=>setNotice('Acceptance queue unavailable: '+(err.message||err),true));}\n    if(tab==='held-verification'){renderHeldVerificationQueue();loadOrbitDevelopmentHub({forceFresh:true,background:true}).then(()=>renderHeldVerificationQueue()).catch(err=>setNotice('Held Acceptance unavailable: '+(err.message||err),true));}\n  }\n  document.querySelectorAll('[data-development-tab]').forEach(b=>b.addEventListener('click',function(){setDevelopmentTab(this.dataset.developmentTab);}));\n  window.addEventListener('pageshow',function(){confirmLiveDevelopmentState().catch(function(error){console.warn('Development state freshness check failed:',error);});resumePendingDeploymentPollV366();},{once:true});document.querySelectorAll('[data-development-jump]').forEach(b=>b.addEventListener('click',function(){setDevelopmentTab(this.dataset.developmentJump);}));document.getElementById('developmentNoteStatusFilter')?.addEventListener('change',renderDevelopmentNotes);async function refreshDevelopmentHubFromButton(button){const original=button.textContent;button.disabled=true;button.classList.add('is-working');button.setAttribute('aria-busy','true');button.textContent='Refreshing\u2026';try{await loadOrbitDevelopmentHub();button.textContent='Updated';button.classList.remove('is-working');button.classList.add('is-success');setTimeout(()=>{button.classList.remove('is-success');button.textContent=original;button.disabled=false;button.removeAttribute('aria-busy');},900);}catch(err){button.classList.remove('is-working');button.textContent='Refresh failed';setNotice(err.message||err,true);setTimeout(()=>{button.textContent=original;button.disabled=false;button.removeAttribute('aria-busy');},1400);}}document.getElementById('refreshDevelopmentNotes')?.addEventListener('click',function(){refreshDevelopmentHubFromButton(this);});document.getElementById('refreshRoadmap')?.addEventListener('click',function(){refreshDevelopmentHubFromButton(this);});document.getElementById('refreshVerificationQueue')?.addEventListener('click',function(){refreshDevelopmentHubFromButton(this);});document.getElementById('refreshHeldVerificationQueue')?.addEventListener('click',function(){refreshDevelopmentHubFromButton(this);});document.getElementById('runDevelopmentPipelineV600')?.addEventListener('click',function(){runDevelopmentBuilderV600('development-agent',this);});document.getElementById('applyDevelopmentSandboxV600')?.addEventListener('click',function(){applyDevelopmentSandboxV600(this);});document.getElementById('runRoadmapDeveloperV600')?.addEventListener('click',function(){runDevelopmentBuilderV600('roadmap-developer',this);});\n  document.getElementById('refreshOrbitDeployments')?.addEventListener('click',function(){setLoading(this,true);loadOrbitDeploymentsV343().catch(err=>setNotice(err.message||err,true)).finally(()=>setLoading(this,false));});\n  document.addEventListener('click',e=>{const b=e.target.closest('[data-orbit-render-manual]');if(!b)return;manualRenderDeployV392(b.dataset.orbitRenderManual,b);});\n  // V540 module navigation exclusively owns Comms selection and loading.\n  $(\"refreshResendInboxV529\")?.addEventListener('click',()=>loadResendInboxV529().catch(err=>setNotice('Inbox refresh failed: '+(err.message||err),true)));\n  $(\"exportVendorCustomersV530\")?.addEventListener('click',e=>exportVendorCustomersV530(e.currentTarget).catch(err=>setNotice('Vendor CSV export failed: '+(err.message||err),true)));\n  $(\"reconcileShopifyTicketOrdersV530\")?.addEventListener('click',e=>reconcileShopifyTicketOrdersV530(e.currentTarget).catch(err=>setNotice('Shopify ticket order refresh failed: '+(err.message||err),true)));\n  document.getElementById('refreshCommunicationsHistory')?.addEventListener('click',()=>loadCommunicationsHistoryV462(communicationsHistoryPageV462).catch(err=>setNotice(err.message||err,true)));\n  document.getElementById('communicationsHistorySearch')?.addEventListener('keydown',e=>{if(e.key==='Enter'){e.preventDefault();loadCommunicationsHistoryV462(1).catch(err=>setNotice(err.message||err,true));}});\n  document.getElementById('communicationsHistoryStatus')?.addEventListener('change',()=>loadCommunicationsHistoryV462(1).catch(err=>setNotice(err.message||err,true)));\n  document.getElementById('communicationsHistoryPrev')?.addEventListener('click',()=>loadCommunicationsHistoryV462(Math.max(1,communicationsHistoryPageV462-1)).catch(err=>setNotice(err.message||err,true)));\n  document.getElementById('communicationsHistoryNext')?.addEventListener('click',()=>loadCommunicationsHistoryV462(communicationsHistoryPageV462+1).catch(err=>setNotice(err.message||err,true)));\n\n  document.getElementById('testOrbitDeploymentConnections')?.addEventListener('click',async function(){\n    const status=document.getElementById('orbitDeployPreflightStatus');setLoading(this,true);if(status)status.textContent='Testing GitHub, Render mode and Shopify MAIN theme\u2026';\n    try{\n      const data=await api('/api/admin/deployments/preflight',{method:'POST',body:'{}',timeoutMs:60000,cacheMs:0}),p=data.preflight||{};\n      if(status){status.textContent=p.ok?'All deployment connections passed \u2713':'Setup still required';status.classList.toggle('error',!p.ok);status.classList.toggle('success',!!p.ok);}\n      const parts=[\n        p.github?.verified?'GitHub \u2713':('GitHub: '+(p.github?.error||'not verified')),\n        p.render?.verified?('Render '+(p.render.mode||'')+' mode configured \u2713'):('Render: '+(p.render?.error||'not configured')),\n        p.shopify?.verified?('Shopify MAIN theme read verified '+(p.shopify.themeName||'')+' \u2713'):('Shopify: '+(p.shopify?.error||'not verified'))\n      ];\n      setNotice(parts.join(' \u00B7 '),!p.ok);\n      await loadOrbitDeploymentsV343();\n    }catch(err){if(status)status.textContent='Connection test failed';setNotice(err.message||err,true);}finally{setLoading(this,false);}\n  });\n  document.getElementById('chooseOrbitReleaseZip')?.addEventListener('click',()=>document.getElementById('orbitReleaseZipInput')?.click());\n  document.getElementById('orbitReleaseZipInput')?.addEventListener('change',async function(){const file=this.files?.[0];if(!file)return;try{await stageOrbitReleaseV343(file);}catch(err){setNotice(err.message||err,true);}finally{this.value='';}});\n  document.getElementById('orbitDeploymentHistory')?.addEventListener('click',async function(event){\n    const deploy=event.target.closest('[data-orbit-deploy]'),rollback=event.target.closest('[data-orbit-rollback]'),discard=event.target.closest('[data-orbit-discard-deploy]');\n    if(deploy)return deployReleaseV343(deploy.dataset.orbitDeploy,deploy);\n    if(rollback)return rollbackReleaseV343(rollback.dataset.orbitRollback,rollback);\n    if(discard&&confirm('Discard this staged release? Production has not been changed.')){setLoading(discard,true);try{await api('/api/admin/deployments/'+encodeURIComponent(discard.dataset.orbitDiscardDeploy),{method:'DELETE',cacheMs:0});await loadOrbitDeploymentsV343();setNotice('Staged release discarded.');}catch(err){setNotice(err.message||err,true);}finally{setLoading(discard,false);}}\n  });\n  function verificationListByNoteV500(noteId){\n    const selector=\"[data-verification-form='\"+CSS.escape(noteId)+\"']\";\n    return document.getElementById('orbitVerificationList')?.querySelector(selector)\n      || document.getElementById('orbitHeldVerificationList')?.querySelector(selector)\n      || null;\n  }\n  function bindVerificationListV500(listId){\n    const list=document.getElementById(listId);if(!list)return;\n    list.addEventListener('click',async e=>{\n      const view=e.target.closest('[data-view-note]'),fixed=e.target.closest('[data-verify-fixed]'),failed=e.target.closest('[data-verify-failed]'),markRead=e.target.closest('[data-mark-engineering-read]'),hold=e.target.closest('[data-hold-verification]'),resume=e.target.closest('[data-resume-verification]'),deleteTest=e.target.closest('[data-delete-verification]'),choose=e.target.closest('[data-choose-verification-file]'),cancel=e.target.closest('[data-cancel-verification]'),submit=e.target.closest('[data-submit-inline-verification]'),remove=e.target.closest('[data-remove-verification-image]');\n      if(view){e.preventDefault();e.stopPropagation();view.disabled=true;try{await openDevelopmentNoteById(view.dataset.viewNote);}finally{view.disabled=false;}return;}\n      if(hold){e.preventDefault();e.stopPropagation();await setAcceptanceHoldV500(hold.dataset.holdVerification,true,hold);return;}\n      if(resume){e.preventDefault();e.stopPropagation();await setAcceptanceHoldV500(resume.dataset.resumeVerification,false,resume);return;}\n      if(fixed){await submitVerification(fixed.dataset.verifyFixed,'fixed');return;}\n      if(failed){await submitVerification(failed.dataset.verifyFailed,'not_fixed');return;}\n      if(markRead){await submitVerification(markRead.dataset.markEngineeringRead,'read');return;}\n      if(deleteTest&&confirm('Delete this acceptance test and its Development Note permanently?\\n\\nChoose OK to delete or Cancel to keep it.')){\n        const noteId=deleteTest.dataset.deleteVerification;\n        await api('/api/admin/development-notes/'+encodeURIComponent(noteId)+'/delete',{method:'POST',body:'{}',cacheMs:0});\n        markDevelopmentMutationV340();orbitDevelopmentNotes=orbitDevelopmentNotes.filter(x=>x.id!==noteId);renderVerificationQueue(true);renderHeldVerificationQueue(true);renderDevelopmentNotes();syncDevelopmentCountersFromLocalV339();setNotice('Acceptance test and Development Note permanently deleted.');setDevelopmentTab(listId==='orbitHeldVerificationList'?'held-verification':'verification');refreshDevelopmentHubDeferredV337(150);return;\n      }\n      if(choose){const input=list.querySelector(\"[data-verification-file='\"+CSS.escape(choose.dataset.chooseVerificationFile)+\"']\");if(input){try{if(typeof input.showPicker==='function')input.showPicker();else input.click();}catch(_){input.click();}}return;}\n      if(cancel){const noteId=cancel.dataset.cancelVerification;const form=verificationListByNoteV500(noteId);if(form)form.hidden=true;orbitOpenVerificationNoteV149=null;orbitVerificationEvidenceV149.delete(noteId);renderVerificationQueue(true);renderHeldVerificationQueue(true);return;}\n      if(remove){e.preventDefault();e.stopPropagation();const card=remove.closest('.orbit-verification-card');const noteId=card?.dataset.noteId||'';const index=Number(remove.dataset.removeVerificationImage);const evidence=orbitVerificationEvidenceV149.get(noteId)||[];if(noteId&&Number.isInteger(index)&&index>=0&&index<evidence.length){evidence.splice(index,1);orbitVerificationEvidenceV149.set(noteId,evidence);renderVerificationEvidence(noteId);setNotice('Screenshot removed from Not Fixed.');}return;}\n      if(submit){\n        const noteId=submit.dataset.submitInlineVerification,form=verificationListByNoteV500(noteId),feedback=form?.querySelector('[data-verification-feedback]')?.value.trim()||'';const evidence=orbitVerificationEvidenceV149.get(noteId)||[];\n        if(!feedback&&!evidence.length){setNotice('Explain what is still wrong or attach a screenshot.',true);return;}\n        submit.disabled=true;submit.textContent='Submitting\u2026';const card=e.target.closest('.orbit-verification-card');if(card){card.classList.add('is-processing');card.setAttribute('aria-busy','true');}\n        try{\n          const result=await api('/api/admin/development-notes/'+encodeURIComponent(noteId)+'/verify',{method:'POST',body:JSON.stringify({outcome:'not_fixed',feedback,screenshots:evidence}),timeoutMs:30000,cacheMs:0});markDevelopmentMutationV340();const reopened=result.note||null;\n          if(!reopened?.id||reopened.id!==noteId||reopened.status!=='Open')throw new Error('Not Fixed could not be verified against the original Development Note. Your draft has been preserved.');\n          orbitDevelopmentNotes=orbitDevelopmentNotes.filter(x=>x.id!==noteId);orbitDevelopmentNotes.unshift(reopened);syncDevelopmentCountersFromLocalV339();orbitVerificationEvidenceV149.delete(noteId);orbitOpenVerificationNoteV149=null;clearVerificationDraftV149(noteId);renderVerificationQueue(true);renderHeldVerificationQueue(true);renderDevelopmentNotes();setNotice('Not Fixed saved. The same original note '+noteId+' has returned to Development Notes with your evidence preserved.');setDevelopmentTab('verification');refreshDevelopmentHubDeferredV337(150);\n        }catch(err){setNotice((err.message||err)+' Your explanation and screenshots remain here so you can retry safely.',true);}finally{if(card){card.classList.remove('is-processing');card.removeAttribute('aria-busy');}submit.disabled=false;submit.textContent='Submit Not Fixed';}\n      }\n    });\n    list.addEventListener('input',e=>{const field=e.target.closest('[data-verification-feedback]');if(field)saveVerificationDraftV149(field.dataset.verificationFeedback,field.value);});\n    list.addEventListener('change',async e=>{const input=e.target.closest('[data-verification-file]');if(!input)return;await addVerificationFiles(input.dataset.verificationFile,input.files);input.value='';});\n  }\n  bindVerificationListV500('orbitVerificationList');\n  bindVerificationListV500('orbitHeldVerificationList');\n  document.addEventListener('paste',async function(e){\n    const quickDialog=document.getElementById('orbitReviewNoteDialog');\n    if(quickDialog&&(quickDialog.open===true||quickDialog.hasAttribute('open')))return;\n    const activeForm=orbitOpenVerificationNoteV149?verificationListByNoteV500(orbitOpenVerificationNoteV149):e.target?.closest?.('[data-verification-form]');\n    if(!activeForm||activeForm.hidden)return;\n    const card=activeForm.closest('.orbit-verification-card');\n    const files=verificationClipboardImages(e.clipboardData);\n    if(!card||!files.length)return;\n    e.preventDefault();e.stopPropagation();\n    await addVerificationFiles(card.dataset.noteId,files);\n    const count=(orbitVerificationEvidenceV149.get(card.dataset.noteId)||[]).length;\n    setNotice(count+' screenshot'+(count===1?'':'s')+' attached to Not Fixed.');\n  },true);\n  function formatAiPackageDurationV219(ms){const n=Number(ms||0);if(!n)return '\u2014';return n<1000?n+' ms':(n/1000).toFixed(1)+' s';}\n  function setAiPackageProgressV436(message,{error=false,success=false,detail=\"\"}={}){const box=document.getElementById('orbitAiPackageProgress');if(!box)return;box.hidden=false;box.className='orbit-ai-package-progress'+(error?' error':success?' success':'');box.innerHTML='<strong>'+esc(message||'AI Project ZIP')+'</strong>'+(detail?'<span>'+esc(detail)+'</span>':'');}\n  function renderAiPackageFallbackV219(downloadUrl,job){const box=document.getElementById('orbitAiPackageDownloadFallback');if(!box)return;const timings=job?.timings||{};box.hidden=false;box.innerHTML=\"<strong>\"+esc(job?.filename||'AI Project ZIP')+\" ready</strong><span>Version: \"+esc(job?.version||'\u2014')+\" \u00B7 Size: \"+esc(job?.displayBytes||'\u2014')+\" \u00B7 Source: \"+esc(job?.source||'verified build')+\"</span><span>Total: \"+esc(formatAiPackageDurationV219(timings.totalMs))+\" \u00B7 Handover: \"+esc(formatAiPackageDurationV219(timings.handoverMs))+\" \u00B7 Theme: \"+esc(formatAiPackageDurationV219(timings.themeExportMs))+\" \u00B7 Archive: \"+esc(formatAiPackageDurationV219(timings.archiveMs))+\" \u00B7 Verify: \"+esc(formatAiPackageDurationV219(timings.verifyMs))+\"</span><span>Handover detail: Live DB \"+esc(formatAiPackageDurationV219(timings.handoverLiveStateMs))+\" \u00B7 Knowledge \"+esc(formatAiPackageDurationV219(timings.handoverIntelligenceMs))+\" \u00B7 Evidence \"+esc(formatAiPackageDurationV219(timings.handoverEvidenceMs))+\"</span>\"+(job?.sha256?\"<span>SHA-256: <code>\"+esc(job.sha256)+\"</code></span>\":'')+\"<a class='secondary' href='\"+esc(downloadUrl)+\"' download='\"+esc(job?.filename||'')+\"'>Download the verified AI Project ZIP again</a>\";}\n  function setAiPackageButtonStateV701(button,label){if(!button)return;button.innerHTML=`<span class=\"orbit-mini-spinner\" aria-hidden=\"true\"></span><span>${esc(label)}</span>`;}\n  function aiPackageNeedsRefreshV701(){return true;}\n  async function waitForHandoverUnlockV702(timeoutMs=120000){\n    const started=Date.now();while(Date.now()-started<timeoutMs){await new Promise(resolve=>setTimeout(resolve,700));try{const data=await api('/api/admin/orbit-bootstrap/status',{timeoutMs:10000,cacheMs:0}),traffic=data.handoverTraffic||{};orbitAiArtifactStateV701=data.artifact||orbitAiArtifactStateV701;setHandoverTrafficV702(traffic);if(traffic.state!=='amber')return traffic;}catch(_){/* retain amber while the server/download finishes */}}\n    return orbitHandoverTrafficV702;\n  }\n  function validAiProjectJobIdV70201(value){return /^[a-f0-9]{24}$/.test(String(value||''));}\n  async function recoverPreparedAiProjectJobV70201(prepared,timeoutMs=120000){\n    let job=prepared?.job&&typeof prepared.job==='object'?prepared.job:null;\n    let jobId=prepared?.jobId||job?.id||null;\n    if(validAiProjectJobIdV70201(jobId))return{jobId:String(jobId),job:job?.id===jobId?job:null,recovered:false};\n    const started=Date.now();let last=null;\n    while(Date.now()-started<timeoutMs){\n      await new Promise(resolve=>setTimeout(resolve,500));\n      last=await api('/api/admin/orbit-bootstrap/status',{timeoutMs:10000,cacheMs:0});\n      const traffic=last?.handoverTraffic||{},artifact=last?.artifact||{};\n      orbitAiArtifactStateV701=artifact||orbitAiArtifactStateV701;setHandoverTrafficV702(traffic);\n      const artifactJob=artifact?.job&&typeof artifact.job==='object'?artifact.job:null;\n      const candidates=[traffic?.lock?.jobId,artifactJob?.id].filter(validAiProjectJobIdV70201);\n      if(candidates.length){jobId=String(candidates[0]);return{jobId,job:artifactJob?.id===jobId?artifactJob:null,recovered:true};}\n      if(traffic.state!=='amber'&&artifact.state!=='preparing')break;\n    }\n    const state=last?.handoverTraffic?.state||'unknown',stage=last?.handoverTraffic?.lock?.stage||last?.artifact?.job?.stage||'unknown';\n    throw new Error('Orbit started Handover but the exact protected ZIP job ID could not be recovered (state '+state+', stage '+stage+'). No unverified ZIP will be downloaded.');\n  }\n  document.getElementById('downloadOrbitBackendSourceButton')?.addEventListener('click',async function(){\n    const button=this,fallback=document.getElementById('orbitAiPackageDownloadFallback');\n    if(orbitHandoverTrafficV702?.state==='amber'){setNotice('An existing ZIP download is still being protected. Please finish that operation first.',true);return;}\n    if(fallback){fallback.hidden=true;fallback.innerHTML='';}\n    button.dataset.handoverBusy='1';setLoading(button,true);setAiPackageButtonStateV701(button,'Preparing\u2026');\n    setHandoverTrafficV702({state:'amber',safeToStartHandover:false,workersPaused:true,lock:{stage:'preparing'},message:'Stopping Development workers on operator priority and freezing the snapshot.'});\n    setAiPackageProgressV436('Preparing the complete AI Project ZIP\u2026',{detail:'Stopping Development workers, retaining partial evidence, then freezing and verifying the ZIP. Other live business systems are unaffected.'});\n    try{\n      const prepared=await api('/api/admin/orbit-bootstrap/backend-source/prepare',{method:'POST',body:JSON.stringify({forceRefresh:true}),timeoutMs:120000,cacheMs:0});\n      const recovered=await recoverPreparedAiProjectJobV70201(prepared);const jobId=recovered.jobId;let job=recovered.job;\n      if(recovered.recovered)setAiPackageProgressV436('Protected ZIP job recovered.',{detail:'Orbit recovered the exact persisted Handover job after the prepare response omitted its job ID. Verification is continuing safely.'});\n      if(!job){const first=await pollOrbitProjectJobV597(jobId);job=first.job;}\n      const started=Date.now();\n      while(Date.now()-started<20*60*1000){\n        if(job?.status==='failed')throw new Error(job.error||job.message||'AI Project ZIP preparation failed.');\n        if(job?.status==='ready')break;\n        const verifying=job?.stage==='verify',packaging=['archive','package'].includes(job?.stage),progress=Number(job?.progress||0),label=verifying?'Verifying\u2026':packaging?'Packaging\u2026':'Preparing\u2026';setAiPackageButtonStateV701(button,label);\n        const stage=verifying?'verify':packaging?'package':'preparing',stageElapsed=Math.max(0,Math.round((Date.now()-new Date(job?.stageStartedAt||job?.updatedAt||Date.now()).getTime())/1000));\n        setHandoverTrafficV702({state:'amber',safeToStartHandover:false,workersPaused:true,lock:{stage,jobId},message:job?.message||'Protected handover is in progress.'});\n        setAiPackageProgressV436(job?.message||job?.stage||'Preparing AI Project ZIP\u2026',{detail:(progress?progress+'% \u00B7 ':'')+(stageElapsed?stageElapsed+'s in this stage':'Working\u2026')});\n        await new Promise(resolve=>setTimeout(resolve,1000));const polled=await pollOrbitProjectJobV597(jobId);job=polled.job;\n      }\n      if(job?.status!=='ready')throw new Error('The AI Project ZIP did not become ready within twenty minutes. Its last status has been retained; do not start repeated builds.');\n      if(!/^Orbit_OS_V\\d+\\.\\d+\\.\\d+_AI_PROJECT_PACKAGE\\.zip$/.test(String(job.filename||'')))throw new Error('The completed package filename failed the Orbit release identity check: '+String(job.filename||'missing filename'));\n      if(!/^[a-f0-9]{64}$/.test(String(job.sha256||'')))throw new Error('The completed package is missing its verified SHA-256. No download was started.');\n      if(!(Number(job.bytes)>0))throw new Error('The completed package is missing its verified byte count. No download was started.');\n      setAiPackageButtonStateV701(button,'Downloading\u2026');\n      orbitAiArtifactStateV701={state:'verified',safeToDownload:true,preparing:false,workspaceCurrent:true,workspaceHasNewerWork:false,filename:job.filename,displayBytes:job.displayBytes||'',generatedAt:job.readyAt||job.updatedAt||new Date().toISOString()};\n      setHandoverTrafficV702({state:'amber',safeToStartHandover:false,workersPaused:true,lock:{stage:'downloading',jobId},message:'The verified ZIP is downloading. Workers remain paused until the transfer finishes.'});\n      const downloadUrl=API_BASE+'/api/admin/orbit-bootstrap/backend-source/jobs/'+encodeURIComponent(jobId)+'/download?secret='+encodeURIComponent(secret)+adminSessionQueryV329()+'&sha256='+encodeURIComponent(job.sha256)+'&_='+Date.now();renderAiPackageFallbackV219(downloadUrl,job);\n      setAiPackageProgressV436(job.filename+' is verified.',{success:true,detail:'Downloading now. Workers stay paused until the protected transfer releases the handover lock.'});orbitLaunchZipDownloadV71615(downloadUrl);\n      const after=await waitForHandoverUnlockV702();if(after?.state==='green')setAiPackageProgressV436(job.filename+' downloaded.',{success:true,detail:'Handover complete. Development workers remain paused until you explicitly resume them.'});else if(after?.state==='red')setAiPackageProgressV436(job.filename+' downloaded.',{success:true,detail:'Verified ZIP downloaded. Check worker state before resuming Development.'});\n    }catch(err){setAiPackageProgressV436('AI Project ZIP failed',{error:true,detail:err.message||String(err)});try{await loadOrbitBootstrapStatus();}catch(_){setHandoverTrafficV702({state:'red',safeToStartHandover:false,message:'Handover state could not be re-read after the failure. Refresh before retrying.'});}}\n    finally{delete button.dataset.handoverBusy;setLoading(button,false);loadOrbitBootstrapStatus().catch(()=>{});}\n  });\n  // V717.0.4: keep Admin mounted while the browser starts an attachment.\n  // Navigating the top-level window can interrupt the operator's work and the\n  // handover-status checks, especially for slow Complete ZIP transfers.\n  function orbitLaunchZipDownloadV71615(url){\n    const frame=document.createElement('iframe');\n    frame.title='Orbit verified ZIP download';frame.setAttribute('aria-hidden','true');\n    frame.tabIndex=-1;frame.style.cssText='position:absolute;width:0;height:0;border:0;visibility:hidden';\n    frame.referrerPolicy='no-referrer';document.body.appendChild(frame);frame.src=url;\n    return frame;\n  }\n  // Optional fast engineering transfer; the protected Complete ZIP remains available.\n  const fastZipHostV71610=document.getElementById('downloadOrbitBackendSourceButton');\n  if(fastZipHostV71610){\n    const fast=document.createElement('button');fast.type='button';fast.id='downloadOrbitFastDevelopmentV71610';fast.className='secondary';fast.textContent='Fast development ZIP';\n    fast.title='Backend source and current Development Notes only. No live Shopify theme, screenshots or rollback data. Use Complete ZIP for theme edits and recovery.';\n    fastZipHostV71610.after(fast);\n    const fastStatus=document.createElement('span');fastStatus.id='orbitFastZipStatusV71610';fastStatus.setAttribute('role','status');fastStatus.setAttribute('aria-live','polite');fastStatus.style.cssText='flex:1 1 100%;font-size:12px;color:#37566d';fastStatus.textContent='Fast mode: backend code + note index only (no Shopify theme fetch).';fast.after(fastStatus);\n    fast.addEventListener('click',async()=>{\n      if(fast.dataset.busy)return;fast.dataset.busy='1';fast.disabled=true;\n      const base='/api/admin/orbit-bootstrap/fast-development';\n      try{\n        fast.textContent='Pausing workers\u2026';fastStatus.textContent='Requesting a bounded backend-only code snapshot\u2026';const response=await api(base+'/prepare',{method:'POST',body:'{}',timeoutMs:90000,cacheMs:0});\n        const id=response?.job?.id;if(!/^[a-f0-9]{24}$/.test(String(id||'')))throw Error('Fast ZIP job ID missing.');\n        let job=response.job;const deadline=Date.now()+6*60*1000;\n        while(job?.status==='working'&&Date.now()<deadline){fast.textContent=job.stage==='archiving'?'Compressing\u2026':job.stage==='verifying'?'Verifying\u2026':'Preparing\u2026';fastStatus.textContent='Stage: '+String(job.stage||'queued')+' \u00B7 '+Math.round((Date.now()-(deadline-6*60*1000))/1000)+' seconds elapsed';await new Promise(resolve=>setTimeout(resolve,1000));const poll=await api(base+'/jobs/'+encodeURIComponent(id),{timeoutMs:15000,cacheMs:0});job=poll.job;}\n        if(job?.status!=='ready'||!job.sha256)throw Error(job?.error||'The fast ZIP did not complete.');\n        fast.textContent='Downloading\u2026';const url=API_BASE+base+'/jobs/'+encodeURIComponent(id)+'/download?secret='+encodeURIComponent(secret)+adminSessionQueryV329()+'&sha256='+encodeURIComponent(job.sha256);\n        fastStatus.textContent='Verified '+(Number(job.bytes||0)/1048576).toFixed(1)+' MB source ZIP. Browser download starting. Workers restored.';\n        setAiPackageProgressV436('Fast development ZIP ready ('+(Number(job.bytes||0)/1048576).toFixed(1)+' MB).',{success:true,detail:'Backend code + current notes only. Shopify live theme requires full recovery ZIP.'});\n        orbitLaunchZipDownloadV71615(url);\n      }catch(e){fastStatus.textContent='Failed: '+String(e.message||e);setAiPackageProgressV436('Fast development ZIP failed',{error:true,detail:e.message||String(e)});}\n      finally{fast.disabled=false;delete fast.dataset.busy;fast.textContent='Fast development ZIP';}\n    });\n  }\n  const orbitReviewSurfaces={\n    public:{key:'public',name:'Collectors Club website',url:'https://orbitcollectorsclub.com',mode:'embedded'},\n    'members-pending':{key:'members-pending',name:'Members Area \u00B7 Pending',persona:'pending',url:'https://orbitcollectorsclub.com/pages/members-area',mode:'embedded'},\n    'members-active':{key:'members-active',name:'Members Area \u00B7 Active',persona:'active',url:'https://orbitcollectorsclub.com/pages/members-area',mode:'embedded'},\n    tickets:{key:'tickets',name:'Ticket website',url:'https://orbitcollectorsclub.com/pages/events',mode:'embedded'},\n    scanner:{key:'scanner',name:'Scanner',url:API_BASE+'/scanner?secret='+encodeURIComponent(secret),mode:'embedded'}\n  };\n  let orbitReviewLastLoaded='';\n  let orbitReviewPopup=null;\n  function orbitEmbeddedReviewUrlV149(url,surface){\n    if(!url)return '';\n    const key=surface?.key||document.querySelector('[data-review-surface].active')?.dataset.reviewSurface||'';\n    if(['public','members-pending','members-active','tickets'].includes(key)){\n      try{\n        const target=new URL(url,location.href);\n        const proxy=new URL(API_BASE+'/api/admin/orbit-studio/review-proxy');\n        proxy.searchParams.set('secret',secret);\n        if(adminSessionTokenV329)proxy.searchParams.set('admin_session',adminSessionTokenV329);\n        proxy.searchParams.set('target',target.toString());\n        /* Mirror the original query onto the proxy URL so storefront scripts\n           that read location.search (including protected review magic tokens)\n           continue to receive the expected values. */\n        target.searchParams.forEach((value,name)=>proxy.searchParams.set(name,value));\n        return proxy.toString();\n      }catch(_){return url;}\n    }\n    return url;\n  }\n  function updateOrbitReviewContext(name,url){const title=document.getElementById('orbitReviewSurfaceName'),drawer=document.getElementById('orbitReviewDrawerSurface'),drawerUrl=document.getElementById('orbitReviewDrawerUrl');if(title)title.textContent=name||'Custom surface';if(drawer)drawer.textContent=name||'Custom surface';if(drawerUrl)drawerUrl.textContent=url||'';}\n  function showOrbitReviewExternalState(name,url){\n    const frame=document.getElementById('orbitReviewSurfaceFrame'),status=document.getElementById('orbitReviewSurfaceStatus'),placeholder=document.getElementById('orbitReviewExternalPlaceholder');\n    if(frame){frame.hidden=true;frame.removeAttribute('src');orbitReviewLastLoaded='';}\n    if(placeholder){placeholder.hidden=false;placeholder.querySelector('[data-review-external-name]').textContent=name||'Review surface';placeholder.querySelector('[data-review-external-url]').textContent=url||'';placeholder.querySelector('[data-review-external-open]').dataset.url=url||'';}\n    if(status)status.textContent='Opened in review tab';\n  }\n  function showOrbitReviewEmbeddedState(){const frame=document.getElementById('orbitReviewSurfaceFrame'),placeholder=document.getElementById('orbitReviewExternalPlaceholder');if(placeholder)placeholder.hidden=true;if(frame)frame.hidden=false;}\n  function openOrbitReviewTab(url,name){\n    if(!url)return;\n    try{\n      if(!orbitReviewPopup||orbitReviewPopup.closed) orbitReviewPopup=window.open(url,'orbit-live-review');\n      else {orbitReviewPopup.location.href=url;orbitReviewPopup.focus();}\n      if(!orbitReviewPopup) throw new Error('Popup blocked');\n      setNotice((name||'Review surface')+' opened in the Orbit review tab. Keep Orbit Studio open to record Quick Notes.');\n    }catch(_){window.open(url,'_blank','noopener');}\n  }\n  function loadOrbitReviewSurface(notify=true){\n    const input=document.getElementById('orbitReviewSurfaceUrl'),frame=document.getElementById('orbitReviewSurfaceFrame'),status=document.getElementById('orbitReviewSurfaceStatus');let url=String(input?.value||'').trim();\n    if(!url)return notify&&setNotice('Enter a surface URL first.',true);if(!/^https?:\\/\\//i.test(url))url='https://'+url;if(input)input.value=url;\n    const active=document.querySelector('[data-review-surface].active'),surface=active?orbitReviewSurfaces[active.dataset.reviewSurface]:null,name=surface?.name||active?.textContent?.trim()||'Custom surface';\n    updateOrbitReviewContext(name,url);localStorage.setItem('orbitReviewSurfaceUrl',url);\n    const sameOrigin=(()=>{try{return new URL(url,location.href).origin===location.origin;}catch(_){return false;}})();\n    const embed=sameOrigin || surface?.key==='scanner';\n    if(!embed){\n      showOrbitReviewExternalState(name,url);\n      if(notify){openOrbitReviewTab(url,name);setNotice(name+' opened in the dedicated review tab. Orbit Studio remains open for Quick Notes.');}\n      return;\n    }\n    const frameUrl=orbitEmbeddedReviewUrlV149(url,surface);\n    showOrbitReviewEmbeddedState();\n    if(status)status.textContent='Loading '+name+'\u2026';\n    if(frame&&orbitReviewLastLoaded!==frameUrl){frame.src='about:blank';window.setTimeout(()=>{frame.src=frameUrl;},20);orbitReviewLastLoaded=frameUrl;}\n    if(notify)setNotice(name+' is loading inside Orbit Studio.');\n  }\n  async function activateOrbitReviewSurface(button){\n    if(!button||button.disabled)return;\n    const surface=orbitReviewSurfaces[button.dataset.reviewSurface],input=document.getElementById('orbitReviewSurfaceUrl'),status=document.getElementById('orbitReviewSurfaceStatus');\n    if(!surface||!input)return;\n    document.querySelectorAll('[data-review-surface]').forEach(x=>{x.classList.toggle('active',x===button);x.disabled=true;x.setAttribute('aria-busy',x===button?'true':'false');});\n    try{\n      let url=surface.url;\n      if(status)status.textContent='Preparing '+surface.name+'\u2026';\n      if(surface.persona){const data=await api('/api/admin/orbit-studio/review-personas/'+encodeURIComponent(surface.persona)+'/launch',{method:'POST',body:JSON.stringify({returnUrl:surface.url}),timeoutMs:25000});if(!data?.reviewUrl)throw new Error('Orbit did not return a protected review URL.');url=data.reviewUrl;}\n      input.value=url;updateOrbitReviewContext(surface.name,url);showOrbitReviewEmbeddedState();loadOrbitReviewSurface(false);setNotice(surface.name+' is loading inside Orbit Studio.');\n    }catch(err){if(status)status.textContent='Could not load '+surface.name;setNotice('Could not launch review surface: '+(err.message||err),true);}\n    finally{document.querySelectorAll('[data-review-surface]').forEach(x=>{x.disabled=false;x.removeAttribute('aria-busy');});}\n  }\n  document.getElementById('orbitReviewSurfacePanel')?.addEventListener('click',e=>{const button=e.target.closest('[data-review-surface]');if(button)activateOrbitReviewSurface(button);});\n  const reviewFrame=document.getElementById('orbitReviewSurfaceFrame');reviewFrame?.addEventListener('load',()=>{const status=document.getElementById('orbitReviewSurfaceStatus');if(status)status.textContent='Loaded inside Orbit Studio';});reviewFrame?.addEventListener('error',()=>{const status=document.getElementById('orbitReviewSurfaceStatus');if(status)status.textContent='Could not load this surface';setNotice('The selected review surface could not load.',true);});\n  document.getElementById('loadOrbitReviewSurfaceButton')?.addEventListener('click',()=>loadOrbitReviewSurface());\n  document.getElementById('orbitReviewSurfaceUrl')?.addEventListener('input',function(){document.querySelectorAll('[data-review-surface]').forEach(x=>x.classList.remove('active'));updateOrbitReviewContext('Custom surface',this.value);});\n  document.getElementById('orbitReviewSurfaceUrl')?.addEventListener('keydown',e=>{if(e.key==='Enter'){e.preventDefault();loadOrbitReviewSurface();}});\n  document.getElementById('openOrbitReviewSurfaceNewTab')?.addEventListener('click',()=>{let url=String(document.getElementById('orbitReviewSurfaceUrl')?.value||'').trim();if(url)openOrbitReviewTab(url,document.getElementById('orbitReviewSurfaceName')?.textContent||'Review surface');});\n  document.getElementById('orbitReviewExternalPlaceholder')?.addEventListener('click',e=>{const button=e.target.closest('[data-review-external-open]');if(button?.dataset.url)openOrbitReviewTab(button.dataset.url,document.querySelector('[data-review-external-name]')?.textContent||'Review surface');});\n  const savedReviewUrl=localStorage.getItem('orbitReviewSurfaceUrl');const reviewInput=document.getElementById('orbitReviewSurfaceUrl');if(reviewInput)reviewInput.value=savedReviewUrl||orbitReviewSurfaces.public.url;updateOrbitReviewContext('Collectors Club website',reviewInput?.value||orbitReviewSurfaces.public.url);showOrbitReviewEmbeddedState();\n  document.getElementById('openOrbitStudioTopButton')?.addEventListener('click',()=>{setDevelopmentTab('review');setTimeout(()=>document.getElementById('orbitReviewSurfacePanel')?.scrollIntoView({behavior:'smooth',block:'start'}),50);});\n  document.getElementById('orbitDevelopmentNotesList')?.addEventListener('change',async e=>{const s=e.target.closest('[data-note-status]');if(!s)return;const note=orbitDevelopmentNotes.find(x=>x.id===s.dataset.noteStatus);const previous=note?.status||'Open';if(['Complete','Archived'].includes(s.value)&&!confirm(s.value==='Complete'?'Confirm this issue has been tested and verified complete?':'Archive this completed historical note?')){s.value=previous;return;}await api('/api/admin/development-notes/'+encodeURIComponent(s.dataset.noteStatus),{method:'PATCH',body:JSON.stringify({status:s.value})});await loadOrbitDevelopmentHub();});document.getElementById('orbitDevelopmentNotesList')?.addEventListener('click',async e=>{const view=e.target.closest('[data-view-note]'),edit=e.target.closest('[data-edit-note]'),del=e.target.closest('[data-delete-note]'),promote=e.target.closest('[data-promote-note]');if(view)await openDevelopmentNoteById(view.dataset.viewNote);if(edit){const note=orbitDevelopmentNotes.find(x=>x.id===edit.dataset.editNote);await editDevelopmentNote(note);}if(del){const note=orbitDevelopmentNotes.find(x=>x.id===del.dataset.deleteNote);await deleteDevelopmentNote(note);}if(promote){await api('/api/admin/development-notes/'+encodeURIComponent(promote.dataset.promoteNote)+'/promote',{method:'POST',body:'{}'});setNotice('Note promoted to the Product Roadmap with its screenshots and context.');await loadOrbitDevelopmentHub();}});document.getElementById('orbitRoadmapList')?.addEventListener('change',async e=>{const s=e.target.closest('[data-roadmap-status]');if(!s)return;await api('/api/admin/product-roadmap/'+encodeURIComponent(s.dataset.roadmapStatus),{method:'PATCH',body:JSON.stringify({status:s.value})});await loadOrbitDevelopmentHub();});document.getElementById('orbitDevelopmentDetailDialog')?.addEventListener('click',async e=>{if(e.target.closest('[data-close-development-detail]'))document.getElementById('orbitDevelopmentDetailDialog').close();if(e.target.closest('[data-choose-comment-screenshots]'))document.getElementById('developmentCommentScreenshotInput')?.click();const dossier=e.target.closest('[data-ai-dossier-refresh-v548]');if(dossier){const id=dossier.dataset.aiDossierIdV548,type=dossier.dataset.aiDossierRefreshV548||'note';setLoading(dossier,true);try{const path=type==='roadmap'?'/api/admin/product-roadmap/':'/api/admin/development-notes/';const data=await api(path+encodeURIComponent(id)+'/ai-dossier/refresh',{method:'POST',body:'{}',timeoutMs:90000,cacheMs:0});setNotice('AI research refreshed. No code or production changes were performed.');if(type==='note'){const detail=await api('/api/admin/development-notes/'+encodeURIComponent(id),{timeoutMs:30000,cacheMs:0});const note=detail.note;if(note){const dialog=document.getElementById('orbitDevelopmentDetailDialog');if(dialog?.open)closeOrbitDialog(dialog);await openDevelopmentNoteDetail(note,detail);}}}catch(err){setNotice('AI research failed: '+(err.message||err),true);}finally{setLoading(dossier,false);}return;}const failed=e.target.closest('[data-submit-failed-verification]');if(failed){const feedback=document.getElementById('developmentNoteComment')?.value.trim()||'';if(!feedback&&!orbitDevelopmentCommentScreenshots.length){setNotice('Explain what is still wrong or attach a screenshot.',true);return;}await api('/api/admin/development-notes/'+encodeURIComponent(failed.dataset.submitFailedVerification)+'/verify',{method:'POST',body:JSON.stringify({outcome:'not_fixed',feedback,screenshots:orbitDevelopmentCommentScreenshots})});document.getElementById('orbitDevelopmentDetailDialog').close();setNotice('Test failed. The original note has been reopened with your evidence attached.');await loadOrbitDevelopmentHub();setDevelopmentTab('verification');return;}const b=e.target.closest('[data-add-note-comment]');if(b){const body=document.getElementById('developmentNoteComment').value.trim();if(!body)return;await api('/api/admin/development-notes/'+encodeURIComponent(b.dataset.addNoteComment)+'/comments',{method:'POST',body:JSON.stringify({body,screenshots:orbitDevelopmentCommentScreenshots})});await loadOrbitDevelopmentHub();const note=orbitDevelopmentNotes.find(x=>x.id===b.dataset.addNoteComment);if(note)await openDevelopmentNoteDetail(note);}});document.getElementById('developmentCommentScreenshotInput')?.addEventListener('change',async function(){orbitDevelopmentCommentScreenshots=[];for(const file of [...this.files].slice(0,6)){try{await new Promise((resolve,reject)=>{if(!/^image\\/(png|jpeg|webp)$/i.test(file.type))return reject(new Error('Only PNG, JPG and WebP screenshots are supported.'));if(file.size>2200000)return reject(new Error(file.name+' is larger than 2.2 MB.'));const reader=new FileReader();reader.onload=()=>{orbitDevelopmentCommentScreenshots.push({id:'IMG-'+Date.now()+'-'+Math.random().toString(16).slice(2),name:file.name,mimeType:file.type,dataUrl:reader.result});resolve();};reader.onerror=reject;reader.readAsDataURL(file);});}catch(err){setNotice(err.message,true);}}const count=document.getElementById('developmentCommentScreenshotCount'),preview=document.getElementById('developmentCommentScreenshotPreview');if(count)count.textContent=orbitDevelopmentCommentScreenshots.length+' screenshot'+(orbitDevelopmentCommentScreenshots.length===1?'':'s')+' attached';if(preview)preview.innerHTML=orbitDevelopmentCommentScreenshots.map(x=>\"<figure><img src='\"+x.dataUrl+\"' alt='Comment screenshot'><figcaption><span>\"+esc(x.name)+\"</span></figcaption></figure>\").join('');this.value='';});\n  function openRoadmapItemDialog(item){\n    const dialog=document.getElementById('orbitRoadmapItemDialog');\n    const form=document.getElementById('orbitRoadmapItemForm');form?.reset();\n    document.getElementById('roadmapItemEditingId').value=item?.id||'';\n    document.getElementById('roadmapItemDialogTitle').textContent=item?'Edit roadmap item':'Add roadmap item';\n    document.getElementById('roadmapItemDialogDescription').textContent=item?'Update this permanent roadmap record.':'Create a permanent roadmap record with a clear title and description.';\n    document.getElementById('roadmapItemTitle').value=item?.title||'';document.getElementById('roadmapItemDescription').value=item?.description||'';document.getElementById('roadmapItemPriority').value=item?.priority||'Normal';document.getElementById('roadmapItemStatus').value=item?.status||'Idea';\n    const result=document.getElementById('roadmapItemResult');if(result){result.hidden=true;result.textContent='';result.classList.remove('error');}\n    openOrbitDialog(dialog);setTimeout(()=>document.getElementById('roadmapItemTitle')?.focus(),60);\n  }\n  async function saveRoadmapItem(){\n    const button=document.getElementById('saveRoadmapItemButton'),result=document.getElementById('roadmapItemResult'),editingId=document.getElementById('roadmapItemEditingId')?.value||'';\n    const title=String(document.getElementById('roadmapItemTitle')?.value||'').trim(),description=String(document.getElementById('roadmapItemDescription')?.value||'').trim(),priority=String(document.getElementById('roadmapItemPriority')?.value||'Normal'),status=String(document.getElementById('roadmapItemStatus')?.value||'Idea');\n    if(!title){if(result){result.hidden=false;result.classList.add('error');result.textContent='Add a roadmap title before saving.';}return;}\n    const original=button?.textContent||'Save roadmap item';if(button){button.disabled=true;button.textContent='Saving\u2026';}\n    try{\n      const path=editingId?'/api/admin/product-roadmap/'+encodeURIComponent(editingId):'/api/admin/product-roadmap';\n      const data=await api(path,{method:editingId?'PATCH':'POST',body:JSON.stringify({title,description,priority,status,context:captureOrbitReviewContext()})});\n      const savedId=data.item?.id;if(!savedId)throw new Error('Orbit OS did not return a saved roadmap record.');\n      const verification=await api('/api/admin/product-roadmap');const saved=(verification.items||[]).find(item=>item.id===savedId);\n      if(!saved)throw new Error('The roadmap item was not found after saving.');orbitRoadmapItems=verification.items||[];renderRoadmap();\n      if(result){result.hidden=false;result.classList.remove('error');result.textContent=(editingId?'Updated and verified ':'Saved permanently as ')+saved.id+'.';}\n      setNotice((editingId?'Roadmap item updated: ':'Roadmap item saved: ')+saved.title);setTimeout(()=>closeOrbitDialog(document.getElementById('orbitRoadmapItemDialog')),650);\n    }catch(err){if(result){result.hidden=false;result.classList.add('error');result.textContent=err.message||String(err);}setNotice('Roadmap save failed: '+(err.message||err),true);}finally{if(button){button.disabled=false;button.textContent=original;}}\n  }\n  async function deleteRoadmapItem(item){\n    if(!item)return;if(!confirm('Delete this Roadmap Item permanently?\\n\\n'+item.title+'\\n\\nChoose OK to delete or Cancel to keep it.'))return;\n    await api('/api/admin/product-roadmap/'+encodeURIComponent(item.id)+'/delete?fresh='+Date.now(),{method:'POST',body:'{}',cacheMs:0});\n    orbitRoadmapItems=orbitRoadmapItems.filter(x=>x.id!==item.id);renderRoadmap();\n    const verification=await api('/api/admin/product-roadmap?fresh='+Date.now(),{timeoutMs:15000,cacheMs:0});if((verification.items||[]).some(x=>x.id===item.id))throw new Error('Deletion could not be verified.');orbitRoadmapItems=verification.items||[];renderRoadmap();setNotice('Roadmap item permanently deleted: '+item.title);\n  }\n  async function editDevelopmentNote(note){\n    if(!note)return;\n    let dialog=document.getElementById('orbitDevelopmentEditDialog');\n    if(!dialog){\n      dialog=document.createElement('dialog');dialog.id='orbitDevelopmentEditDialog';dialog.className='orbit-dialog orbit-development-edit-dialog';\n      dialog.innerHTML=\"<form method='dialog' class='orbit-development-edit-form'><div class='orbit-dialog-heading'><div><p class='orbit-kicker'>Development Note</p><h2>Edit note</h2><p>Update the note and add any extra screenshots or supporting files you found later.</p></div><button type='button' data-close-development-edit aria-label='Close'>\u00D7</button></div><label>Title<input id='developmentEditTitle' maxlength='240'></label><label>Description<textarea id='developmentEditDescription' rows='14'></textarea></label><section class='orbit-development-edit-evidence-v564'><div><strong>Add evidence</strong><p id='developmentEditExistingEvidence' class='orbit-muted'>Checking existing evidence\u2026</p></div><input id='developmentEditEvidenceInputV564' type='file' accept='image/png,image/jpeg,image/webp,application/pdf,text/csv,text/plain,application/json,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' multiple hidden><button type='button' class='secondary' id='developmentEditChooseEvidenceV564'>Add screenshots or files</button><div id='developmentEditEvidencePreviewV564' class='orbit-screenshot-preview'></div></section><div id='developmentEditResult' class='orbit-inline-result' hidden></div><div class='orbit-action-row'><button type='button' class='secondary' data-close-development-edit>Cancel</button><button type='button' id='saveDevelopmentEditButton'>Save changes</button></div></form>\";\n      document.body.appendChild(dialog);dialog.addEventListener('click',function(e){if(e.target.closest('[data-close-development-edit]'))closeOrbitDialog(dialog);});\n    }\n    let fullNote=note;\n    try{const detail=await api('/api/admin/development-notes/'+encodeURIComponent(note.id),{timeoutMs:30000,cacheMs:0});fullNote=detail.note||note;}catch(_){fullNote=note;}\n    let addScreenshots=[],addAttachments=[];\n    const existingScreenshots=Array.isArray(fullNote.screenshots)?fullNote.screenshots:[],existingAttachments=Array.isArray(fullNote.attachments)?fullNote.attachments:[];\n    document.getElementById('developmentEditTitle').value=fullNote.title||'';document.getElementById('developmentEditDescription').value=fullNote.description||'';\n    const result=document.getElementById('developmentEditResult'),input=document.getElementById('developmentEditEvidenceInputV564'),preview=document.getElementById('developmentEditEvidencePreviewV564'),existing=document.getElementById('developmentEditExistingEvidence');result.hidden=true;result.textContent='';result.classList.remove('error');\n    if(existing)existing.textContent=(existingScreenshots.length?existingScreenshots.length+' screenshot'+(existingScreenshots.length===1?'':'s'):'No screenshots')+' \u00B7 '+(existingAttachments.length?existingAttachments.length+' file'+(existingAttachments.length===1?'':'s'):'no files')+' already saved. New evidence will be added without replacing it.';\n    const renderAdded=()=>{if(!preview)return;const images=addScreenshots.map((img,i)=>\"<figure><img src='\"+img.dataUrl+\"' alt='New screenshot'><figcaption><span>\"+esc(img.name)+\"</span><button type='button' data-remove-development-edit-image-v564='\"+i+\"'>Remove</button></figcaption></figure>\");const files=addAttachments.map((file,i)=>\"<article class='orbit-file-evidence-v563'><div><strong>\uD83D\uDCCE \"+esc(file.name)+\"</strong><small>\"+esc(file.mimeType||'Document')+(file.uploadBytes?' \u00B7 '+formatEvidenceBytesV563(file.uploadBytes):'')+\"</small></div><button type='button' class='secondary' data-remove-development-edit-file-v564='\"+i+\"'>Remove</button></article>\");preview.innerHTML=images.concat(files).join('');};\n    const addFiles=async files=>{for(const file of [...files]){try{if(String(file.type||'').startsWith('image/')||/\\.(png|jpe?g|webp)$/i.test(String(file.name||''))){if(existingScreenshots.length+addScreenshots.length>=12)throw new Error('This note already has the maximum of 12 screenshots.');const optimised=await optimiseDevelopmentScreenshotV341(file);addScreenshots.push(await fileAsOrbitEvidenceV341(optimised,'IMG'));}else{if(existingAttachments.length+addAttachments.length>=8)throw new Error('This note already has the maximum of 8 files.');const mimeType=noteFileMimeV563(file);if(!ORBIT_NOTE_FILE_TYPES_V563.has(mimeType))throw new Error((file.name||'File')+' is not a supported note attachment. Use PDF, CSV, TXT, JSON, Word or Excel.');if(Number(file.size||0)>3000000)throw new Error((file.name||'File')+' is larger than 3 MB.');const addedBytes=addAttachments.reduce((sum,item)=>sum+Number(item.uploadBytes||0),0);if(addedBytes+Number(file.size||0)>6000000)throw new Error('New files added in one edit are limited to 6 MB total.');const normalised=new File([file],file.name,{type:mimeType,lastModified:file.lastModified||Date.now()});addAttachments.push(await fileAsOrbitEvidenceV341(normalised,'FILE'));}}catch(err){setNotice(err.message||String(err),true);}}renderAdded();};\n    if(input){input.value='';input.onchange=async()=>{await addFiles(input.files||[]);input.value='';};}\n    const choose=document.getElementById('developmentEditChooseEvidenceV564');if(choose)choose.onclick=()=>input?.click();\n    if(preview)preview.onclick=e=>{const image=e.target.closest('[data-remove-development-edit-image-v564]'),file=e.target.closest('[data-remove-development-edit-file-v564]');if(image){addScreenshots.splice(Number(image.dataset.removeDevelopmentEditImageV564),1);renderAdded();}if(file){addAttachments.splice(Number(file.dataset.removeDevelopmentEditFileV564),1);renderAdded();}};\n    renderAdded();\n    const save=document.getElementById('saveDevelopmentEditButton');\n    save.onclick=async function(){const title=document.getElementById('developmentEditTitle').value.trim(),description=document.getElementById('developmentEditDescription').value.trim();if(!title){result.hidden=false;result.classList.add('error');result.textContent='Add a title before saving.';return;}save.disabled=true;save.textContent='Saving\u2026';try{const data=await api('/api/admin/development-notes/'+encodeURIComponent(note.id),{method:'PATCH',body:JSON.stringify({title,description,addScreenshots,addAttachments})});if(!data.note?.id)throw new Error('Orbit OS did not return the edited development item.');await loadOrbitDevelopmentHub({forceFresh:true});const saved=orbitDevelopmentNotes.find(x=>x.id===note.id);if(!saved||saved.title!==title||saved.description!==description)throw new Error('The edited Development Note did not survive reload.');closeOrbitDialog(dialog);setNotice('Development item updated'+((addScreenshots.length||addAttachments.length)?' with new evidence':'')+': '+saved.title);}catch(err){result.hidden=false;result.classList.add('error');result.textContent=err.message||String(err);}finally{save.disabled=false;save.textContent='Save changes';}};\n    openOrbitDialog(dialog);setTimeout(()=>document.getElementById('developmentEditDescription')?.focus(),60);\n  }\n  async function deleteDevelopmentNote(note){\n    if(!note)return;if(!confirm('Delete this Development Note permanently?\\n\\n'+note.title+'\\n\\nComments and screenshots will also be removed. Choose OK to delete or Cancel to keep it.'))return;\n    await api('/api/admin/development-notes/'+encodeURIComponent(note.id)+'/delete',{method:'POST',body:'{}'});\n    orbitDevelopmentNotes=orbitDevelopmentNotes.filter(x=>x.id!==note.id);renderDevelopmentNotes();renderVerificationQueue();\n    const verification=await api('/api/admin/development-notes',{timeoutMs:15000,cacheMs:0});orbitDevelopmentNotes=verification.notes||[];if(orbitDevelopmentNotes.some(x=>x.id===note.id))throw new Error('Deletion could not be verified.');renderDevelopmentNotes();renderVerificationQueue();renderHeldVerificationQueue();setNotice('Development item permanently deleted: '+note.title);\n  }\n  document.getElementById('createRoadmapItemButton')?.addEventListener('click',()=>openRoadmapItemDialog(null));\n  document.getElementById('closeRoadmapItemDialog')?.addEventListener('click',()=>closeOrbitDialog(document.getElementById('orbitRoadmapItemDialog')));document.getElementById('cancelRoadmapItemButton')?.addEventListener('click',()=>closeOrbitDialog(document.getElementById('orbitRoadmapItemDialog')));document.getElementById('saveRoadmapItemButton')?.addEventListener('click',saveRoadmapItem);document.getElementById('orbitRoadmapItemForm')?.addEventListener('submit',e=>{e.preventDefault();saveRoadmapItem();});\n  document.getElementById('orbitRoadmapList')?.addEventListener('click',async e=>{const research=e.target.closest('[data-roadmap-ai-v548]'),edit=e.target.closest('[data-edit-roadmap]'),del=e.target.closest('[data-delete-roadmap]');if(research){const id=research.dataset.roadmapAiV548;setLoading(research,true);try{const data=await api('/api/admin/product-roadmap/'+encodeURIComponent(id)+'/ai-dossier/refresh',{method:'POST',body:'{}',timeoutMs:90000,cacheMs:0});const item=orbitRoadmapItems.find(x=>x.id===id);if(item&&data.dossier)item.aiResearchDossier={researchedAt:data.dossier.researchedAt,analysisMode:data.dossier.analysisMode,model:data.dossier.model,viability:data.dossier.viability,recommendedNextStep:data.dossier.recommendedNextStep,readOnly:true};renderRoadmap();setNotice('Roadmap AI research refreshed. It did not change the roadmap item or production.');}catch(err){setNotice('Roadmap research failed: '+(err.message||err),true);}finally{setLoading(research,false);}return;}if(edit){const item=orbitRoadmapItems.find(x=>x.id===edit.dataset.editRoadmap);openRoadmapItemDialog(item);}if(del){const item=orbitRoadmapItems.find(x=>x.id===del.dataset.deleteRoadmap);deleteRoadmapItem(item).catch(err=>setNotice(err.message,true));}});\n\n  document.addEventListener('click',function(event){\n    const button=event.target.closest('[data-development-tab],[data-v77-draw-tab],[data-engagement-tab],[data-shipping-tab],[data-v77-events-tab]');\n    if(!button) return;\n    const mapping=[['developmentTab','development'],['v77DrawTab','automation'],['engagementTab','engagement'],['shippingTab','shipping'],['v77EventsTab','events']];\n    for(const pair of mapping){ if(button.dataset[pair[0]]){ rememberOrbitSubtab(pair[1],button.dataset[pair[0]]); break; } }\n  },true);\n\n  bind();\n  $(\"orbitAdminAuthForm\")?.addEventListener(\"submit\",submitAdminAuthV329);\n  $(\"orbitAdminLogoutButton\")?.addEventListener(\"click\",logoutAdminV329);\n  $(\"adminChangePasswordButton\")?.addEventListener(\"click\",async function(){setLoading(this,true);try{await api(\"/api/admin/auth/password\",{method:\"POST\",body:JSON.stringify({currentPassword:$(\"adminCurrentPassword\")?.value||\"\",newPassword:$(\"adminNewPassword\")?.value||\"\"})});setNotice(\"Password changed. Please sign in again.\");setTimeout(logoutAdminV329,500);}catch(err){setNotice(err.message||err,true);}finally{setLoading(this,false);}});\n  $(\"adminCreateUserButton\")?.addEventListener(\"click\",async function(){setLoading(this,true);try{await api(\"/api/admin/auth/users\",{method:\"POST\",body:JSON.stringify({username:$(\"adminNewUsername\")?.value||\"\",password:$(\"adminNewUserPassword\")?.value||\"\",role:$(\"adminNewUserRole\")?.value||\"operator\"})});await loadAdminUsersV329();setNotice(\"Admin user created.\");}catch(err){setNotice(err.message||err,true);}finally{setLoading(this,false);}});\n  $(\"adminReloadUsersButton\")?.addEventListener(\"click\",()=>loadAdminUsersV329().catch(err=>setNotice(err.message||err,true)));\n  $(\"adminUsersTable\")?.addEventListener(\"click\",async function(event){const save=event.target.closest(\"[data-admin-user-save]\"),toggle=event.target.closest(\"[data-admin-user-toggle]\"),reset=event.target.closest(\"[data-admin-user-reset]\"),del=event.target.closest(\"[data-admin-user-delete]\");const button=save||toggle||reset||del;if(!button)return;setLoading(button,true);try{if(save){const row=button.closest(\"tr\"),role=row?.querySelector(\"[data-admin-user-role]\")?.value,username=row?.querySelector(\"[data-admin-user-name]\")?.value;await api(\"/api/admin/auth/users/\"+encodeURIComponent(save.dataset.adminUserSave),{method:\"PATCH\",body:JSON.stringify({role,username})});}else if(toggle){await api(\"/api/admin/auth/users/\"+encodeURIComponent(toggle.dataset.adminUserToggle),{method:\"PATCH\",body:JSON.stringify({active:toggle.dataset.active===\"true\"})});}else if(del){const label=del.dataset.adminUserLabel||\"this Admin user\";if(!confirm(\"Permanently delete \"+label+\"? Their active Admin sessions will be revoked.\"))return;await api(\"/api/admin/auth/users/\"+encodeURIComponent(del.dataset.adminUserDelete),{method:\"DELETE\"});}else{const password=prompt(\"New password (10+ characters with letters and numbers):\");if(!password)return;await api(\"/api/admin/auth/users/\"+encodeURIComponent(reset.dataset.adminUserReset)+\"/reset-password\",{method:\"POST\",body:JSON.stringify({newPassword:password})});}await loadAdminUsersV329();setNotice(\"Admin access updated.\");}catch(err){setNotice(err.message||err,true);}finally{setLoading(button,false);}});\n  /* V191 one-time-compatible repair: older releases stored `events`, which is\n   * a button label rather than a real panel id and therefore hid the entire\n   * Events module on refresh. Normalise it without deleting valid page memory. */\n  try {\n    const eventsMemoryKey=orbitSubtabStorageKey(\"events\");\n    if(localStorage.getItem(eventsMemoryKey)===\"events\") localStorage.setItem(eventsMemoryKey,\"eventbrite\");\n  } catch (_) {}\n\n  // V171: restore the last real Admin workspace after a hard refresh.\n  // V169 stored the value correctly, but the unconditional dashboard activation\n  // below overwrote it before the browser could use it.\n  const validStartupModules = new Set(Array.from(document.querySelectorAll(\".orbit-module[data-module]\")).map(function(section){ return section.dataset.module; }));\n  validStartupModules.add(\"golden-schedule\"); // V540 retained deep-link alias, no standalone page.\n  validStartupModules.add(\"content\"); // V543 obsolete Monthly editor bookmark redirects to Prizes.\n  validStartupModules.add(\"reports\"); // V543 obsolete Attendance bookmark redirects to Finance.\n  validStartupModules.add(\"directory\"); // V581 Directory is created dynamically after startup discovery.\n  let startupModule = \"dashboard\";\n  try {\n    const hashMatch = String(window.location.hash || \"\").match(/^#orbit-module-([a-z0-9-]+)$/i);\n    const hashModule = hashMatch ? hashMatch[1] : \"\";\n    const storedModule = String(localStorage.getItem(\"orbitAdminLastModule\") || \"\");\n    if (validStartupModules.has(hashModule)) startupModule = hashModule;\n    else if (validStartupModules.has(storedModule)) startupModule = storedModule;\n  } catch (_) {}\n  orbitStartupModuleV329 = startupModule;\n  enforceMonthlyDrawSummaryLayout();\n\n  // V123: keep first paint and early Intelligence navigation free from unrelated\n  // Loyalty, Engagement, Media and operations warm-up work. These modules still\n  // warm safely after the browser has become idle, preserving existing behaviour.\n  const warmOrbitAdminModules=function(){\n    ensureLoyaltyOperationsV727();\n    loadLoyaltyOperationsV727().catch(function(){});\n    loadEngagementV73().catch(function(){});\n    refreshOperationsWorkspaceV296().catch(function(){});\n    loadMediaV74().catch(function(){});\n    loadMissionControlV74().catch(function(){});\n  };\n  // V329: background warmers start only after authenticated Admin login.\n  requestAnimationFrame(enforceMonthlyDrawSummaryLayout);\n  setTimeout(enforceMonthlyDrawSummaryLayout, 250);\n  setTimeout(enforceMonthlyDrawSummaryLayout, 1000);\n  window.addEventListener(\"resize\", () => {\n    enforceMonthlyDrawSummaryLayout();\n    if (window.innerWidth > 760) {\n      document.querySelector(\".orbit-admin-app\")?.classList.remove(\"menu-open\");\n      document.getElementById(\"orbitAdminMenuToggle\")?.setAttribute(\"aria-expanded\", \"false\");\n    }\n  });\n  window.addEventListener(\"storage\", function(event){\n    if(event.key === \"orbitSpecialShipmentsChangedAt\") {\n      reloadSpecialShipments().catch(function(err){ setNotice(err.message, true); });\n    }\n  });\n  window.orbitAdminApi = api;\n  window.orbitActivateModule = activateModule;\n  window.orbitSetNotice = setNotice;\n  window.orbitLoadMemberProfile = loadMemberProfile;\n  window.orbitGetSelectedMember = function(){ return { lookup:selectedMemberLookup, profile:selectedMemberProfile }; };\n  // V164: load Development Notes first, then load the wider dashboard. This\n  // guarantees Home and Task Centre receive the current task state without a\n  // manual refresh or a race between the two initial requests.\n  initialiseAdminSessionV329().then(function(authenticated){if(authenticated)startAuthenticatedOrbitAdminV329();}).catch(function(err){showAdminConnectionUnavailableV596(err);});\n\n  document.addEventListener(\"change\", async function(event){\n    const select=event.target.closest(\"[data-event-tag-select]\");\n    if(!select)return;\n    const eventId=select.dataset.eventTagSelect, tag=select.value||\"On Sale\"; if(select.dataset.previousValue===undefined)select.dataset.previousValue=select.value;\n    const stateNode=document.querySelector(\"[data-event-tag-state=\\\"\"+CSS.escape(eventId)+\"\\\"]\"); const preview=document.querySelector(\"[data-event-tag-preview=\\\"\"+CSS.escape(eventId)+\"\\\"]\"); if(preview){preview.lastChild.textContent=tag;}\n    select.disabled=true;\n    if(stateNode)stateNode.textContent=\"Saving\u2026\";\n    try{\n      await api(\"/api/admin/eventbrite/events/\"+encodeURIComponent(eventId)+\"/public-config\",{method:\"POST\",body:JSON.stringify({publicTag:tag||\"On Sale\",publicTagEnabled:true,publicTagPlacement:\"event\"})});\n      select.dataset.previousValue=select.value; if(stateNode)stateNode.textContent=\"\u2713 Published: \"+(tag||\"On Sale\");\n      setNotice(\"Public sales status updated.\");\n    }catch(err){\n      if(stateNode)stateNode.textContent=\"Save failed: \"+(err.message||\"Unknown error\");\n      const previous=select.dataset.previousValue||\"\"; select.value=previous; setNotice(err.message,true);\n    }finally{select.disabled=false;}\n  });\n\n\n  document.addEventListener('click',async function(event){\n    const button=event.target.closest('[data-dismiss-pending-ticket-order]'); if(!button)return;\n    const checkoutId=button.dataset.dismissPendingTicketOrder;\n    if(!checkoutId||!confirm('Dismiss this unpaid pending Shopify checkout from Tickets Centre? The recovery record will be kept safely in case Shopify later reports payment.'))return;\n    setLoading(button,true);\n    try{\n      const result=await api('/api/admin/ticket-checkouts/'+encodeURIComponent(checkoutId)+'/dismiss-pending',{method:'POST',body:JSON.stringify({})});\n      if(result?.dismissed!==true)throw new Error(result?.error||'Orbit did not confirm the pending checkout was dismissed.');\n      await loadShopify();\n      setNotice('Pending checkout dismissed. It will reappear automatically if Shopify later reports a real paid order.');\n    }catch(err){setNotice(err.message||String(err),true);setLoading(button,false);}\n  });\n\n  document.addEventListener('click',async function(event){\n    const button=event.target.closest('[data-delete-fulfilled-ticket-order]'); if(!button)return;\n    const checkoutId=button.dataset.deleteFulfilledTicketOrder;\n    if(!checkoutId||!confirm('Permanently delete this fulfilled ticket order from Orbit? Issued customer tickets are not revoked. This cannot be undone.'))return;\n    setLoading(button,true);\n    try{\n      const result=await api('/api/admin/ticket-checkouts/'+encodeURIComponent(checkoutId)+'/delete',{method:'POST',body:JSON.stringify({confirmPermanentDelete:true})});\n      if(result?.deleted!==true)throw new Error(result?.error||'Orbit did not confirm deletion.');\n      const row=button.closest('tr');\n      if(row)row.remove();\n      if(Array.isArray(state.ticketCheckouts?.checkouts))state.ticketCheckouts.checkouts=state.ticketCheckouts.checkouts.filter(item=>String(item.checkoutId||'')!==String(checkoutId));\n      renderShopifyCentre(state.shopify||{},state.ticketCheckouts||{checkouts:[]});\n      await loadShopify();\n      setNotice('Fulfilled ticket order deleted from the Ticket Centre.');\n    }\n    catch(err){setNotice(err.message||String(err),true);setLoading(button,false);}\n  });\n\n  document.getElementById(\"drawAutomationSettingsForm\")?.addEventListener(\"submit\", async function(event){\n    event.preventDefault();\n    const button=document.getElementById(\"saveDrawAutomationSettingsButton\"), result=document.getElementById(\"drawAutomationSettingsResult\");\n    if(button){button.disabled=true;button.textContent=\"Saving\u2026\";}\n    try{\n      const data=await api(\"/api/admin/scheduler/config\",{method:\"POST\",body:JSON.stringify({automationEnabled:Boolean($(\"drawAutomationEnabled\")?.checked),monthStartEnabled:Boolean(state.scheduler?.monthStartEnabled),midMonthDrawEnabled:Boolean($(\"drawMonthlyEnabled\")?.checked),midMonthDrawHourLocal:Number($(\"drawMonthlyHour\")?.value||14),monthlyPrizeTitle:$(\"drawMonthlyPrizeTitle\")?.value||\"Orbit Collectors Club monthly prize\"})});\n      state.scheduler=data.status||state.scheduler; if(result){result.hidden=false;result.textContent=\"Draw settings saved. Automatic draws run on the 15th and winners remain pending until you notify them.\";}\n      await loadScheduler(); setNotice(\"Monthly Draw settings saved.\");\n    }catch(err){if(result){result.hidden=false;result.textContent=\"Save failed: \"+(err.message||err);}setNotice(err.message||String(err),true);}\n    finally{if(button){button.disabled=false;button.textContent=\"Save Draw Settings\";}}\n  });\n\n  document.addEventListener(\"click\",async function(event){\n    const button=event.target.closest(\"[data-ticket-delete]\"); if(!button)return;\n    const code=button.dataset.ticketDelete; if(!confirm(\"Permanently delete Golden Ticket \"+code+\"? This cannot be undone.\"))return;\n    button.disabled=true;\n    try{\n      const result=await api(\"/api/admin/golden-tickets/\"+encodeURIComponent(code)+\"/delete\",{method:\"POST\",body:JSON.stringify({confirmPermanentDelete:true})});\n      if(!result||result.deleted!==true) throw new Error(\"Orbit did not confirm the ticket was deleted.\");\n      await loadGolden();\n      setNotice(\"Golden Ticket \"+code+\" permanently deleted.\");\n    } catch(err){setNotice(err.message||String(err),true);button.disabled=false;}\n  });\n\n  // V185 owns the single count-badge observer.\n  /* V198: delegated draw refresh survives Prizes panel re-renders. */\n  document.addEventListener('click', async function(event){\n    const button=event.target?.closest?.('#refreshDrawAutomationButton');\n    if(!button || button.dataset.v198RefreshBound==='1') return;\n    event.preventDefault();\n    const original=button.textContent||'Refresh Automation';\n    button.dataset.v198RefreshBound='1'; button.disabled=true; button.textContent='Refreshing\u2026';\n    text('drawAutomationRefreshState','Checking the live scheduler now\u2026');\n    try{ await loadScheduler(); const stamp=new Date().toLocaleTimeString('en-GB',{hour:'2-digit',minute:'2-digit'}); text('drawAutomationRefreshState','Last refreshed '+stamp); setNotice('Draw automation refreshed successfully.'); }\n    catch(err){ text('drawAutomationRefreshState','Refresh failed \u00B7 '+(err.message||err)); setNotice('Draw automation could not be refreshed: '+(err.message||err),true); }\n    finally{ button.disabled=false; button.textContent=original; setTimeout(()=>{delete button.dataset.v198RefreshBound;},250); }\n  });\n\n\n  function setMemberViewV474(view){\n    const next=[\"active\",\"recharge\",\"archived\"].includes(String(view||\"\"))?String(view):\"active\";\n    state.currentMemberView=next;\n    const map={active:$(\"activeMembersWorkspace\"),recharge:$(\"rechargeReconciliationWorkspace\"),archived:$(\"archivedMembersWorkspace\")};\n    Object.entries(map).forEach(([key,node])=>{if(node)node.hidden=key!==next;});\n    [[\"showActiveMembersNav\",\"active\"],[\"openRechargeReconciliationNav\",\"recharge\"],[\"openArchivedMembersNav\",\"archived\"]].forEach(([id,key])=>{const button=$(id);if(!button)return;const selected=key===next;button.classList.toggle(\"active\",selected);button.setAttribute(\"aria-selected\",String(selected));if(selected)button.setAttribute(\"aria-current\",\"page\");else button.removeAttribute(\"aria-current\");});\n  }\n  function setArchivedMembersViewV296(showArchive){ setMemberViewV474(showArchive?\"archived\":\"active\"); }\n  $(\"showActiveMembersView\")?.addEventListener(\"click\", function(){ setArchivedMembersViewV296(false); });\n  $(\"openArchivedMembersButton\")?.addEventListener(\"click\", async function(){ setArchivedMembersViewV296(true); await loadArchivedMembers(this); });\n  $(\"showActiveMembersNav\")?.addEventListener(\"click\", function(){ setMemberViewV474(\"active\"); });\n  $(\"openRechargeReconciliationNav\")?.addEventListener(\"click\", function(){ setMemberViewV474(\"recharge\"); });\n  $(\"openArchivedMembersNav\")?.addEventListener(\"click\", async function(){ setMemberViewV474(\"archived\"); await loadArchivedMembers(this); });\n  $(\"closeArchivedMembersButton\")?.addEventListener(\"click\", function(){ setArchivedMembersViewV296(false); });\n  $(\"searchArchivedMembersButton\")?.addEventListener(\"click\", function(){ loadArchivedMembers(this).catch(err=>setNotice(err.message,true)); });\n  $(\"archivedMembersList\")?.addEventListener(\"click\", async function(event){\n    const restore=event.target.closest(\"[data-restore-member]\"); const del=event.target.closest(\"[data-delete-archived-member]\");\n    try { if(restore){ if(!confirm(\"Restore this archived member to active operational views?\"))return; await api(\"/api/admin/archived-members/\"+encodeURIComponent(restore.dataset.restoreMember)+\"/restore\",{method:\"POST\",body:\"{}\"}); await loadArchivedMembers(restore); await loadMemberSummary(); setNotice(\"Member restored exactly as archived.\"); } if(del) await openPermanentDeletePreview(del.dataset.deleteArchivedMember,del); } catch(err){ setNotice(err.message,true); }\n  });\n  $(\"closeMemberDeleteDialog\")?.addEventListener(\"click\",()=>$(\"memberDeleteDialog\").close());\n  $(\"memberDeleteConfirmInput\")?.addEventListener(\"input\",function(){ $(\"confirmPermanentMemberDelete\").disabled=this.value!==\"DELETE\"; });\n  $(\"confirmPermanentMemberDelete\")?.addEventListener(\"click\",async function(){\n    if(!pendingPermanentDeleteLookup||$(\"memberDeleteConfirmInput\").value!==\"DELETE\")return;\n    setLoading(this,true); $(\"memberDeleteResult\").textContent=\"Deleting in dependency order and verifying every collection\u2026\";\n    try { const result=await api(\"/api/admin/archived-members/\"+encodeURIComponent(pendingPermanentDeleteLookup)+\"/delete-permanently\",{method:\"POST\",body:JSON.stringify({confirmation:\"DELETE\"}),timeoutMs:120000,cacheMs:0}); if(!result.verified)throw new Error(\"Orbit did not verify deletion.\"); $(\"memberDeleteResult\").textContent=\"Verified complete. \"+Number(result.deletedTotal||0)+\" Orbit record(s) deleted; 0 references remain.\"; setTimeout(()=>$(\"memberDeleteDialog\").close(),900); await loadArchivedMembers(); await loadMemberSummary(); setNotice(\"Permanent deletion verified: zero Orbit database references remain.\"); } catch(err){ $(\"memberDeleteResult\").textContent=err.message; setNotice(err.message,true); } finally { setLoading(this,false); }\n  });\n\n  $(\"refreshStorageForensics\")?.addEventListener(\"click\",function(){ loadStorageForensicsV353().catch(err=>setNotice(err.message,true)); });\n  $(\"applyStorageRetentionV354\")?.addEventListener(\"click\",function(){ applyStorageRetentionV354(this).catch(err=>setNotice(err.message,true)); });\n  $(\"orbitLoadRetentionPreviewV71605\")?.addEventListener(\"click\",function(){loadStorageRetentionPreviewV71605(this).catch(err=>setNotice(err.message,true));});\n  $(\"orbitLoadStorageCollectionsV71605\")?.addEventListener(\"click\",function(){loadStorageCollectionPageV71605(this).catch(err=>setNotice(err.message,true));});\n  $(\"orbitCleanEphemeralBuildsV71604\")?.addEventListener(\"click\",function(){applyEphemeralBuildCleanupV71604(this).catch(err=>setNotice(err.message,true));});\n  $(\"orbitTelemetryPreviewV71619\")?.addEventListener(\"click\",function(){telemetryPreviewV71619(this).catch(err=>telemetryStatusV71619('Preview failed: '+err.message));});\n  $(\"orbitTelemetryStartV71619\")?.addEventListener(\"click\",function(){telemetryStartV71619(this).catch(err=>telemetryStatusV71619('Start held: '+err.message));});\n  $(\"orbitTelemetryStopV71619\")?.addEventListener(\"click\",function(){telemetryStopV71619(this).catch(err=>telemetryStatusV71619('Stop held: '+err.message));});\n\n\n  $(\"refreshVendorOverview\")?.addEventListener(\"click\",e=>loadVendorWorkspaceV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"refreshVendorHistory\")?.addEventListener(\"click\",e=>loadVendorWorkspaceV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"startVendorHistoricalSync\")?.addEventListener(\"click\",e=>startVendorHistoricalSyncV384(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"startVendorFullResync\")?.addEventListener(\"click\",e=>startVendorFullResyncV396(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  document.addEventListener(\"click\",e=>{const b=e.target.closest(\"[data-vendor-transfer]\");if(b)openVendorTransferV385(b);});\n  document.addEventListener(\"change\",e=>{if(e.target?.matches?.(\"[data-vendor-customer-select]\"))updateVendorMergeButtonV390();});\n  let vendorSearchTimerV453=null;\n  function vendorServerSearchV453(pane){if(vendorSearchTimerV453)clearTimeout(vendorSearchTimerV453);vendorSearchTimerV453=setTimeout(()=>loadVendorWorkspaceV398(null,false,false,pane,1).catch(err=>setNotice(err.message||err,true)),280);}\n  $(\"vendorCustomerSearch\")?.addEventListener(\"input\",()=>vendorServerSearchV453(\"customers\"));\n  $(\"vendorLiveEventSearch\")?.addEventListener(\"input\",()=>applyVendorEventSearchV398('vendorLiveEvents','vendorLiveEventSearch'));\n  $(\"vendorPastEventSearch\")?.addEventListener(\"input\",()=>applyVendorEventSearchV398('vendorPastEvents','vendorPastEventSearch'));\n  $(\"financePastEventSearchV463\")?.addEventListener(\"input\",()=>applyVendorEventSearchV398('financePastEventsV463','financePastEventSearchV463'));\n  $(\"refreshFinanceOverviewV463\")?.addEventListener(\"click\",e=>loadFinanceWorkspaceV464(e.currentTarget,true).then(data=>{const meta=data.diagnostics?.metaAccounting;setNotice(meta&&meta.status!==\"current\"?\"Event records loaded. Advertising is still updating; no refreshed advertising total is being claimed.\":\"Finance loaded from the complete persisted Vendor archive.\");}).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorOrderHistorySearch\")?.addEventListener(\"input\",()=>vendorServerSearchV453(\"shopify\"));\n  $(\"mergeVendorCustomers\")?.addEventListener(\"click\",()=>openVendorMergeV409());\n  $(\"saveVendorCustomerMerge\")?.addEventListener(\"click\",e=>saveVendorMergeV390(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"cancelVendorCustomerMerge\")?.addEventListener(\"click\",()=>$(\"vendorCustomerMergeDialog\")?.close());\n  $(\"closeVendorCustomerDetail\")?.addEventListener(\"click\",()=>$(\"vendorCustomerDetailDialog\")?.close());\n  $(\"vendorEventAddComplimentary\")?.addEventListener(\"click\",()=>openVendorComplimentaryV404(state.currentVendorEvent));\n  $(\"vendorEventPrintPackage\")?.addEventListener(\"click\",()=>printVendorEventShowPackageV404().catch(err=>setNotice(err.message||err,true)));\n  $(\"closeVendorEmailPreview\")?.addEventListener(\"click\",()=>$(\"vendorEmailPreviewDialog\")?.close());\n  $(\"vendorEmailPreviewVendor\")?.addEventListener(\"change\",e=>selectVendorEmailPreviewV429(e.target.value).catch(err=>setNotice(err.message,true)));\n  document.addEventListener(\"click\",e=>{const b=e.target.closest?.(\"[data-vendor-customer-view]\");if(b)viewVendorCustomerV398(b.dataset.vendorCustomerView);const primaryEmail=e.target.closest?.(\"[data-vendor-club-primary-email-v670]\");if(primaryEmail){changeVendorClubPrimaryEmailV670(primaryEmail).catch(err=>setNotice(err.message||err,true));return;}const deduct=e.target.closest?.(\"[data-vendor-credit-deduct]\");if(deduct)adjustVendorCreditFromCustomerV493(deduct,false).catch(err=>setNotice(err.message||err,true));const clear=e.target.closest?.(\"[data-vendor-credit-clear]\");if(clear)adjustVendorCreditFromCustomerV493(clear,true).catch(err=>setNotice(err.message||err,true));});\n\n  $(\"openComplimentaryVendorBooking\")?.addEventListener(\"click\",()=>openVendorComplimentaryV404());\n  $(\"closeVendorComplimentaryDialog\")?.addEventListener(\"click\",()=>$(\"vendorComplimentaryDialog\")?.close());\n  let vendorCompSearchTimerV509=null;$(\"vendorCompCustomerSearchV509\")?.addEventListener(\"input\",()=>{clearTimeout(vendorCompSearchTimerV509);vendorCompSearchTimerV509=setTimeout(()=>searchVendorCompCustomersV509().catch(err=>setNotice(err.message||err,true)),250);});\n  [\"vendorCompName\",\"vendorCompEmail\"].forEach(id=>$(id)?.addEventListener(\"input\",()=>{if(state.vendorCompSelectedCustomerV509)clearVendorCompCustomerSelectionV509();}));\n  $(\"saveVendorComplimentaryBooking\")?.addEventListener(\"click\",e=>saveVendorComplimentaryV385(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"refreshVendorClubV620\")?.addEventListener(\"click\",e=>loadVendorClubV620(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorSponsorshipRefreshV695\")?.addEventListener(\"click\",e=>loadVendorSponsorshipsV695(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorSponsorshipPersonaV695\")?.addEventListener(\"change\",async e=>{const select=e.currentTarget;select.disabled=true;try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/sandbox/persona',{personaId:select.value});await loadVendorSponsorshipsV695();setNotice('Sponsorship sandbox persona changed.');}catch(err){setNotice(err.message||err,true);}finally{select.disabled=false;}});\n  $(\"vendorSponsorshipOpenV695\")?.addEventListener(\"click\",async e=>{const button=e.currentTarget,popup=window.open('about:blank','_blank');setLoading(button,true);try{const data=await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/sandbox/open',{personaId:$(\"vendorSponsorshipPersonaV695\")?.value});if(!data?.url)throw new Error('Orbit did not return the Vendor Club Sandbox URL.');if(popup)popup.location.href=data.url;else window.open(data.url,'_blank','noopener');setNotice('Vendor Club sponsorship sandbox opened.');}catch(err){if(popup)popup.close();setNotice(err.message||err,true);}finally{setLoading(button,false);}});\n  // V751: sandbox panes may mount after Admin boot. Delegation keeps mobile QR\n  // functional across workspace navigation and after pane refresh.\n  document.addEventListener('click',async e=>{\n    const button=e.target?.closest?.('#vendorSponsorshipMobileV695');if(!button)return;\n    e.preventDefault();e.stopPropagation();if(button.disabled)return;\n    setLoading(button,true);\n    try{\n      if(!state.vendorSponsorshipSandboxV695?.runId)await loadVendorSponsorshipsV695();\n      const data=await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/sandbox/mobile',{personaId:$(\"vendorSponsorshipPersonaV695\")?.value});\n      if(!data?.qrDataUrl||!data.url)throw new Error('Orbit did not return a usable mobile sandbox QR and link.');\n      renderVendorSponsorshipMobileQrV695(data);\n      setNotice('Your single-use sandbox QR is ready. Scan it within five minutes.');\n    }catch(err){\n      const message='Mobile sandbox QR failed: '+(err.message||String(err));\n      setNotice(message,true);\n      // Do not fail invisibly if global toast is occluded by the Admin nav.\n      const result=$('vendorSponsorshipMetricsV695');if(result)result.insertAdjacentHTML('afterbegin','<p role=\"alert\" class=\"orbit-error\">'+esc(message)+'</p>');\n    }finally{setLoading(button,false);}\n  },true);\n  $(\"vendorSponsorshipResetV695\")?.addEventListener(\"click\",async e=>{if(!confirm('Reset the sponsorship TEST SANDBOX to its seeded state? This does not change live business data.'))return;const button=e.currentTarget;setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/sandbox/reset');await loadVendorSponsorshipsV695();setNotice('Sponsorship sandbox reset.');}catch(err){setNotice(err.message||err,true);}finally{setLoading(button,false);}});\n  $(\"vendorSponsorshipManualV695\")?.addEventListener(\"submit\",async e=>{e.preventDefault();const form=e.currentTarget,fd=new FormData(form),tier=String(fd.get('tier')||'headline'),expected=tier==='gold'?2:4,existing=Math.max(0,Number(fd.get('existingTableQty')||0)),added=Math.max(0,Number(fd.get('newTableQty')||0));if(existing+added!==expected){setNotice('Manual '+tier+' assignment must reconcile exactly '+expected+' included tables.',true);return;}const button=form.querySelector('button[type=submit]'),notice=$(\"vendorSponsorshipManualNoticeV695\");setLoading(button,true);try{await vendorSponsorshipPostV695('/api/admin/vendors/club/sponsorships/manual',{eventId:fd.get('eventId'),tier,vendorName:fd.get('vendorName'),considerationType:fd.get('considerationType'),commercialNotes:fd.get('commercialNotes'),existingTableQty:existing,newTableQty:added});form.reset();if(notice)notice.textContent='Sandbox sponsorship assigned.';await loadVendorSponsorshipsV695();}catch(err){if(notice)notice.textContent=err.message;setNotice(err.message||err,true);}finally{setLoading(button,false);}});\n  $(\"vendorClubSearchV620\")?.addEventListener(\"input\",()=>{clearTimeout(state.vendorClubSearchTimerV620);state.vendorClubSearchTimerV620=setTimeout(()=>loadVendorClubV620().catch(err=>setNotice(err.message||err,true)),250);});\n  $(\"saveVendorClubSettingsV620\")?.addEventListener(\"click\",e=>saveVendorClubSettingsV620(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"repairVendorClubPageV6202\")?.addEventListener(\"click\",e=>ensureVendorClubPageV6202(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  document.querySelectorAll(\"[data-vendor-club-preview-v6201]\").forEach(button=>button.addEventListener(\"click\",()=>openVendorClubPreviewV6201(button.dataset.vendorClubPreviewV6201,null,button).catch(err=>setNotice(err.message||err,true))));\n  $(\"vendorClubPreviewAsVendorV623\")?.addEventListener(\"click\",e=>previewSelectedVendorClubV623(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorClubOpenSandboxV624\")?.addEventListener(\"click\",e=>openVendorClubSandboxV624(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorClubResetSandboxV624\")?.addEventListener(\"click\",e=>resetVendorClubSandboxV624(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorClubEnableLaunchV6201\")?.addEventListener(\"click\",e=>setVendorClubLaunchStateV6201(true,e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorClubDisableLaunchV6201\")?.addEventListener(\"click\",e=>setVendorClubLaunchStateV6201(false,e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"dryRunVendorClub2027V620\")?.addEventListener(\"click\",e=>runVendorClubMigrationV620(e.currentTarget,false).catch(err=>setNotice(err.message||err,true)));\n  $(\"commitVendorClub2027V620\")?.addEventListener(\"click\",e=>runVendorClubMigrationV620(e.currentTarget,true).catch(err=>setNotice(err.message||err,true)));\n  $(\"reconcileVendorClubV620\")?.addEventListener(\"click\",e=>reconcileVendorClubV620(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"refreshVendorClubEmailsV621\")?.addEventListener(\"click\",e=>loadVendorClubEmailsV621(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"closeVendorClubEmailPreviewV621\")?.addEventListener(\"click\",()=>{const wrap=$(\"vendorClubEmailPreviewWrapV621\"),frame=$(\"vendorClubEmailPreviewFrameV621\");if(wrap)wrap.hidden=true;if(frame)frame.srcdoc=\"\";});\n  void refreshVendorSupportNavBadgeV670();\n  const vendorSupportBadgeTimerV670=setInterval(()=>{void refreshVendorSupportNavBadgeV670();},20000);\n  $(\"refreshVendorClubSupportV621\")?.addEventListener(\"click\",e=>loadVendorClubSupportV621(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorClubSupportModeV635\")?.addEventListener(\"change\",()=>{saveVendorSupportDraftV641();vendorSupportDetailEpochV641++;state.currentVendorSupportTicketV621=null;document.querySelector('[data-vendor-pane=\"club-support\"]')?.classList.remove(\"has-conversation-v641\");const detail=$(\"vendorClubSupportDetailV621\");if(detail)detail.innerHTML=\"<p>Select a request from this inbox.</p>\";loadVendorClubSupportV621().catch(err=>setNotice(err.message,true));});\n  document.querySelectorAll('[data-vendor-support-view-v642]').forEach(button=>button.addEventListener('click',()=>{$('vendorClubSupportStatusV621').value=button.dataset.vendorSupportViewV642;$('vendorClubSupportStatusV621').dispatchEvent(new Event('change'));}));\n  $(\"vendorClubSupportStatusV621\")?.addEventListener(\"change\",()=>loadVendorClubSupportV621().catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorClubSupportSearchV621\")?.addEventListener(\"input\",()=>{clearTimeout(state.vendorClubSupportSearchTimerV621);state.vendorClubSupportSearchTimerV621=setTimeout(()=>loadVendorClubSupportV621().catch(err=>setNotice(err.message||err,true)),250);});\n  $(\"saveVendorEventClubV620\")?.addEventListener(\"click\",e=>saveVendorEventClubV620(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"closeVendorTransferDialog\")?.addEventListener(\"click\",()=>$(\"vendorTransferDialog\")?.close());\n  $(\"saveVendorTransfer\")?.addEventListener(\"click\",e=>saveVendorTransferV385(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n\n  document.addEventListener(\"click\",e=>{\n    const eventComp=e.target.closest?.(\"[data-vendor-event-complimentary]\");if(eventComp){const ev=(state.vendorWorkspace?.allEvents||[]).find(x=>x.key===eventComp.dataset.vendorEventComplimentary)||state.currentVendorEvent;openVendorComplimentaryV404(ev);return;}\n    const compCustomer=e.target.closest?.(\"[data-vendor-comp-customer-v509]\");if(compCustomer){selectVendorCompCustomerV509((state.vendorCompSearchResultsV509||[])[Number(compCustomer.dataset.vendorCompCustomerV509)]);return;}\n    const financeAttendance=e.target.closest?.(\"[data-finance-attendance-v509]\");if(financeAttendance){renderFinanceAttendanceV509(financeAttendance.dataset.financeAttendanceV509,financeAttendance.dataset.eventName).catch(err=>setNotice(err.message||err,true));return;}\n    if(e.target.closest?.(\"[data-finance-attendance-close-v509]\")){ensureFinanceAttendanceDialogV509().close();return;}\n    const financeAttendanceRefresh=e.target.closest?.(\"[data-finance-attendance-refresh-v509]\");if(financeAttendanceRefresh){refreshFinanceAttendanceFromEventbriteV509(financeAttendanceRefresh).catch(err=>setNotice(err.message||err,true));return;}\n    const eventPrint=e.target.closest?.(\"[data-vendor-event-print]\");if(eventPrint){selectVendorToolEventV399(\"planner\",eventPrint.dataset.vendorEventPrint).then(()=>printVendorShowPackageV398()).catch(err=>setNotice(err.message||err,true));return;}\n    const historicFloor=e.target.closest?.('[data-vendor-archive-floorplan]');if(historicFloor){openFinanceArchivedFloorPlanV71705(historicFloor.dataset.vendorArchiveFloorplan).catch(err=>setNotice(err.message||err,true));return;}\n    const tool=e.target.closest?.(\"[data-vendor-event-tool]\");if(tool){selectVendorToolEventV399(tool.dataset.vendorEventTool,tool.dataset.eventKey).catch(err=>setNotice(err.message||err,true));return;}\n    const finance=e.target.closest?.(\"[data-vendor-event-finance]\");if(finance){try{openVendorFinancialDialogV440(finance.dataset.vendorEventFinance);}catch(err){setNotice(err.message||err,true);}return;}\n    const financeDelete=e.target.closest?.(\"[data-vendor-finance-expense-delete]\");if(financeDelete){deleteVendorFinancialPopupExpenseV441(financeDelete.dataset.vendorFinanceExpenseDelete).catch(err=>setNotice(err.message||err,true));return;}\n    if(e.target?.id===\"vendorPopupAddExpense\"){addVendorFinancialPopupExpenseV441(e.target).catch(err=>setNotice(err.message||err,true));return;}\n    if(e.target?.id===\"vendorPopupRefreshFinancials\"){refreshVendorFinancialPopupV441(e.target).catch(err=>setNotice(err.message||err,true));return;}\n    const popupOpen=e.target.closest?.(\"[data-vendor-popup-document-open]\");if(popupOpen){openVendorEventDocumentV398(popupOpen.dataset.vendorPopupDocumentOpen).catch(err=>setNotice(err.message||err,true));return;}\n    const popupDelete=e.target.closest?.(\"[data-vendor-popup-document-delete]\");if(popupDelete){deleteVendorEventDocumentV398(popupDelete.dataset.vendorPopupDocumentDelete).then(()=>{const refreshed=vendorEventByKeyV399(state.currentVendorEventKey);if(refreshed&&$(\"vendorPopupDocumentList\")){$(\"vendorPopupDocumentList\").innerHTML=vendorEventDocumentRowsV439(refreshed);state.currentVendorEvent=refreshed;}}).catch(err=>setNotice(err.message||err,true));return;}\n    const popupFormat=e.target.closest?.(\"[data-vendor-popup-format]\");if(popupFormat){$(\"vendorPopupBriefingEditor\")?.focus();document.execCommand(popupFormat.dataset.vendorPopupFormat,false,null);return;}\n    if(e.target?.id===\"vendorPopupDocumentUpload\"){uploadVendorPopupDocumentV439(e.target).catch(err=>setNotice(err.message||err,true));return;}\n    if(e.target?.id===\"vendorPopupBriefingSourceToggle\"){toggleVendorPopupBriefingSourceV440();return;}\n    if(e.target?.id===\"vendorPopupBriefingSelectAll\"){const source=$(\"vendorPopupBriefingSource\");if(source){source.focus();source.select();}return;}\n    if(e.target?.id===\"saveVendorPopupBriefing\"){saveVendorPopupBriefingV439(e.target).catch(err=>setNotice(err.message||err,true));return;}\n    const groupAction=e.target.closest?.(\"[data-vendor-group-action]\");if(groupAction){runVendorGroupActionV399(groupAction);return;}\n    const eventOpen=e.target.closest?.(\"[data-vendor-event-open]\");if(eventOpen){openVendorEventV398(eventOpen.dataset.vendorEventOpen).catch(err=>setNotice(err.message||err,true));return;}\n    const retryVendorBatch=e.target.closest?.(\"[data-vendor-briefing-retry-v487]\");if(retryVendorBatch){retryVendorBriefingBatchV487(retryVendorBatch.dataset.vendorBriefingRetryV487,retryVendorBatch).catch(err=>setNotice(err.message||err,true));return;}\n    const dismissDup=e.target.closest?.(\"[data-vendor-duplicate-dismiss]\");if(dismissDup){const row=(state.vendorDuplicateSuggestions||[]).find(x=>x.id===dismissDup.dataset.vendorDuplicateDismiss);if(row&&confirm(\"Keep these as separate Vendor customer records and remove this merge suggestion?\")){api(\"/api/admin/vendors/customers/merge-dismiss\",{method:\"POST\",body:JSON.stringify({memberKeys:(row.customers||[]).map(x=>x.key)})}).then(()=>loadVendorWorkspaceV398(null,false,true,state.currentVendorPane||'merge')).then(()=>setNotice(\"Merge suggestion dismissed. Both customer records remain separate.\")).catch(err=>setNotice(err.message||err,true));}return;}\n    const dup=e.target.closest?.(\"[data-vendor-duplicate-merge]\");if(dup){const row=(state.vendorDuplicateSuggestions||[]).find(x=>x.id===dup.dataset.vendorDuplicateMerge);if(row)openVendorMergeV409((row.customers||[]).map(x=>x.key),row.customers||[]);return;}\n    const venue=e.target.closest?.(\"[data-vendor-venue-edit]\");if(venue){openVendorVenueV398(venue.dataset.vendorVenueEdit).catch(err=>setNotice(err.message||err,true));return;}\n    const floorEdit=e.target.closest?.(\"[data-vendor-floor-plan-edit]\");if(floorEdit){openVendorFloorPlanEditorV401(floorEdit.dataset.vendorFloorPlanEdit).catch(err=>setNotice(err.message||err,true));return;}\n    const floorDelete=e.target.closest?.(\"[data-vendor-floor-plan-delete]\");if(floorDelete){deleteVendorFloorPlanV401(floorDelete.dataset.vendorFloorPlanDelete).catch(err=>setNotice(err.message||err,true));return;}\n    const roomRemove=e.target.closest?.(\"[data-vendor-room-remove]\");if(roomRemove&&state.vendorTablePlan){const id=roomRemove.dataset.vendorRoomRemove,room=(state.vendorTablePlan.rooms||[]).find(r=>r.id===id);if(room&&confirm(\"Remove \"+(room.name||\"this room\")+\" from this event? Vendor assignments on this map will be removed.\")){state.vendorTablePlan.rooms=state.vendorTablePlan.rooms.filter(r=>r.id!==id);state.vendorTablePlan.activeRoomId=state.vendorTablePlan.rooms[0]?.id||null;renderVendorTablePlanV398();scheduleVendorPlanAutosaveV403();}return;}\n    const roomTab=e.target.closest?.(\"[data-vendor-room-tab]\");if(roomTab&&state.vendorTablePlan){state.vendorTablePlan.activeRoomId=roomTab.dataset.vendorRoomTab;renderVendorTablePlanV398();return;}\n    const plannerTransform=e.target.closest?.(\"[data-vendor-map-transform]\");if(plannerTransform){transformActiveVendorRoomV401(plannerTransform.dataset.vendorMapTransform);return;}\n    const floorTransform=e.target.closest?.(\"[data-floor-plan-transform]\");if(floorTransform){transformFloorPlanDraftV401(floorTransform.dataset.floorPlanTransform);return;}\n    const cancelBooking=e.target.closest?.(\"[data-vendor-cancel-booking]\");if(cancelBooking){cancelVendorBookingV398(cancelBooking).catch(err=>setNotice(err.message||err,true));return;}\n    const addCase=e.target.closest?.(\"[data-vendor-add-display-case]\");if(addCase){addVendorDisplayCaseV404(addCase).catch(err=>setNotice(err.message||err,true));return;}\n    const compEmail=e.target.closest?.(\"[data-vendor-complimentary-email]\");if(compEmail){editVendorComplimentaryEmailV425(compEmail).catch(err=>setNotice(err.message||err,true));return;}\n    const substitute=e.target.closest?.(\"[data-vendor-substitute-booking]\");if(substitute){substituteVendorBookingV398(substitute).catch(err=>setNotice(err.message||err,true));return;}\n    const rec=e.target.closest?.(\"[data-vendor-reconcile-save]\");if(rec){saveVendorReconciliationV398(rec.dataset.vendorReconcileSave,rec).catch(err=>setNotice(err.message||err,true));return;}\n    const expense=e.target.closest?.(\"[data-vendor-expense-delete]\");if(expense){deleteVendorEventExpenseV398(expense.dataset.vendorExpenseDelete).catch(err=>setNotice(err.message||err,true));return;}\n    const clubOpen=e.target.closest?.(\"[data-vendor-club-open-v620]\");if(clubOpen){viewVendorCustomerV398(clubOpen.dataset.vendorClubOpenV620);return;}\n    const clubPreview=e.target.closest?.(\"[data-vendor-club-preview-vendor-v6201]\");if(clubPreview){openVendorClubPreviewV6201(\"vendor\",clubPreview.dataset.vendorClubPreviewVendorV6201,clubPreview).catch(err=>setNotice(err.message||err,true));return;}\n    const mobileQr=e.target.closest?.(\"[data-vendor-club-mobile-v675]\");if(mobileQr){openVendorMobileQrV675(mobileQr.dataset.vendorClubMobileV675,mobileQr).catch(err=>setNotice(err.message||err,true));return;}\n    const clubSuppression=e.target.closest?.(\"[data-vendor-club-suppression-v624]\");if(clubSuppression){setVendorCommunicationSuppressionV624(clubSuppression).catch(err=>setNotice(err.message||err,true));return;}\n    const clubAdjust=e.target.closest?.(\"[data-vendor-club-adjust-v620]\");if(clubAdjust){adjustVendorClubPointsV620(clubAdjust).catch(err=>setNotice(err.message||err,true));return;}\n    const clubCancel=e.target.closest?.(\"[data-vendor-club-cancel-v620]\");if(clubCancel){cancelVendorClubBookingV620(clubCancel).catch(err=>setNotice(err.message||err,true));return;}\n    const emailPreview=e.target.closest?.(\"[data-vendor-email-preview-v621]\");if(emailPreview){previewVendorClubEmailV621(emailPreview.dataset.vendorEmailPreviewV621,emailPreview).catch(err=>setNotice(err.message||err,true));return;}\n    const emailTest=e.target.closest?.(\"[data-vendor-email-test-v621]\");if(emailTest){testVendorClubEmailV621(emailTest.dataset.vendorEmailTestV621,emailTest).catch(err=>setNotice(err.message||err,true));return;}\n    const emailApprove=e.target.closest?.(\"[data-vendor-email-approve-v621]\");if(emailApprove){approveVendorClubEmailV621(emailApprove.dataset.vendorEmailApproveV621,emailApprove.dataset.approved===\"1\",emailApprove).catch(err=>setNotice(err.message||err,true));return;}\n    const supportOpen=e.target.closest?.(\"[data-vendor-support-open-v621]\");if(supportOpen){openVendorClubSupportV621(supportOpen.dataset.vendorSupportOpenV621).catch(err=>setNotice(err.message||err,true));return;}\n    const supportReply=e.target.closest?.(\"[data-vendor-support-reply-v621]\");if(supportReply){replyVendorClubSupportV621(supportReply.dataset.vendorSupportReplyV621,false,supportReply).catch(err=>setNotice(err.message||err,true));return;}\n    const supportClose=e.target.closest?.(\"[data-vendor-support-close-v621]\");if(supportClose){replyVendorClubSupportV621(supportClose.dataset.vendorSupportCloseV621,true,supportClose).catch(err=>setNotice(err.message||err,true));return;}\n    const supportStatus=e.target.closest?.(\"[data-vendor-support-status-v621]\");if(supportStatus){statusVendorClubSupportV621(supportStatus.dataset.vendorSupportStatusV621,supportStatus.dataset.status,supportStatus).catch(err=>setNotice(err.message||err,true));return;}\n    const docRelease=e.target.closest?.(\"[data-vendor-document-release-v620]\");if(docRelease){releaseVendorEventDocumentV620(docRelease).catch(err=>setNotice(err.message||err,true));return;}\n    const docOpen=e.target.closest?.(\"[data-vendor-document-open]\");if(docOpen){openVendorEventDocumentV398(docOpen.dataset.vendorDocumentOpen).catch(err=>setNotice(err.message||err,true));return;}\n    const docDelete=e.target.closest?.(\"[data-vendor-document-delete]\");if(docDelete){deleteVendorEventDocumentV398(docDelete.dataset.vendorDocumentDelete).catch(err=>setNotice(err.message||err,true));return;}\n    const sortCustomer=e.target.closest?.(\"[data-vendor-customer-sort]\");if(sortCustomer){const key=sortCustomer.dataset.vendorCustomerSort,current=state.vendorCustomerSortV414||{key:\"spend\",dir:\"desc\"};state.vendorCustomerSortV414={key,dir:current.key===key&&current.dir===\"asc\"?\"desc\":\"asc\"};loadVendorWorkspaceV398(null,false,false,'customers',1).catch(err=>setNotice(err.message||String(err),true));return;}\n    const editBusiness=e.target.closest?.(\"[data-vendor-edit-business]\");if(editBusiness){editVendorBusinessIdentifierV412().catch(err=>setNotice(err.message||err,true));return;}\n    const copy=e.target.closest?.(\"[data-vendor-copy]\");if(copy){navigator.clipboard?.writeText(copy.dataset.vendorCopy||\"\").then(()=>setNotice((copy.dataset.copyLabel||\"Value\")+\" copied.\")).catch(()=>setNotice(\"Could not copy automatically.\",true));return;}\n    const metaBreakdown=e.target.closest?.(\"[data-vendor-meta-breakdown-v457]\");if(metaBreakdown){openVendorMetaBreakdownV457(metaBreakdown.dataset.vendorMetaBreakdownV457).catch(err=>setNotice(err.message||err,true));return;}\n    const sendInfo=e.target.closest?.(\"[data-vendor-send-info]\");if(sendInfo){sendSingleVendorInfoV456(sendInfo).catch(err=>setNotice(err.message||err,true));return;}\n    const resend=e.target.closest?.(\"[data-vendor-resend-details]\");if(resend){resendVendorDetailsV398(resend).catch(err=>setNotice(err.message||err,true));return;}\n    const editNote=e.target.closest?.(\"[data-vendor-note-edit]\");if(editNote){const text=prompt(\"Edit Vendor note\",editNote.dataset.noteText||\"\");if(text!==null&&text.trim())api(\"/api/admin/vendors/customers/\"+encodeURIComponent(state.currentVendorCustomerKey)+\"/notes/\"+encodeURIComponent(editNote.dataset.vendorNoteEdit),{method:\"PUT\",body:JSON.stringify({text:text.trim()})}).then(()=>viewVendorCustomerV398(state.currentVendorCustomerKey)).then(()=>setNotice(\"Vendor note updated.\")).catch(err=>setNotice(err.message||err,true));return;}\n    const deleteNote=e.target.closest?.(\"[data-vendor-note-delete]\");if(deleteNote){if(confirm(\"Delete this Vendor note? This removes only the internal note, not the customer or Shopify history.\"))api(\"/api/admin/vendors/customers/\"+encodeURIComponent(state.currentVendorCustomerKey)+\"/notes/\"+encodeURIComponent(deleteNote.dataset.vendorNoteDelete),{method:\"DELETE\"}).then(()=>viewVendorCustomerV398(state.currentVendorCustomerKey)).then(()=>setNotice(\"Vendor note deleted.\")).catch(err=>setNotice(err.message||err,true));return;}\n    if(e.target?.id===\"saveVendorCustomerNote\"){saveVendorCustomerNoteV398(e.target).catch(err=>setNotice(err.message||err,true));}\n  });\n  document.querySelectorAll(\"[data-vendor-brief-format]\").forEach(btn=>btn.addEventListener(\"click\",e=>{e.preventDefault();formatVendorBriefingV419(btn.dataset.vendorBriefFormat);}));\n  document.querySelectorAll(\"[data-vendor-rich-command]\").forEach(btn=>btn.addEventListener(\"click\",e=>{e.preventDefault();const id=btn.closest(\"[data-vendor-rich-field]\")?.dataset.vendorRichField;if(id)formatVendorRichV421(id,btn.dataset.vendorRichCommand);}));\n  document.querySelectorAll(\"[data-vendor-rich-source]\").forEach(btn=>{ensureVendorRichSourceActionsV423(btn.dataset.vendorRichSource);btn.addEventListener(\"click\",e=>{e.preventDefault();toggleVendorRichSourceV421(btn.dataset.vendorRichSource);});});\n  document.addEventListener(\"click\",e=>{const select=e.target.closest?.(\"[data-vendor-rich-select-all]\");if(select){e.preventDefault();selectAllVendorRichSourceV423(select.dataset.vendorRichSelectAll);}});\n  ensureVendorRichSourceActionsV423(\"vendorEventEmailCustomMessage\");\n  $(\"vendorEventBriefSourceToggle\")?.addEventListener(\"click\",e=>{e.preventDefault();toggleVendorRichSourceV421(\"vendorEventEmailCustomMessage\");});\n  $(\"closeVendorEventDetail\")?.addEventListener(\"click\",()=>{clearVendorBriefingBatchPollV487();$(\"vendorEventDetailDialog\")?.close();state.currentVendorEventKey=null;state.vendorBriefingBatchJobV487=null;});\n  $(\"closeVendorEventToolDialog\")?.addEventListener(\"click\",()=>closeVendorEventToolV562(true));\n  $(\"vendorEventToolDialog\")?.addEventListener(\"close\",()=>{const d=$(\"vendorEventToolDialog\");if(d)d.classList.remove(\"orbit-show-broadcast-dialog-v561\");});\n  $(\"vendorEventOpenPlanner\")?.addEventListener(\"click\",()=>{const key=state.currentVendorEvent?.key;if(!key)return;$(\"vendorEventDetailDialog\")?.close();selectVendorToolEventV399(\"planner\",key).catch(err=>setNotice(err.message||err,true));});\n  $(\"vendorEventOpenDocuments\")?.addEventListener(\"click\",()=>{const key=state.currentVendorEvent?.key;if(!key)return;$(\"vendorEventDetailDialog\")?.close();selectVendorToolEventV399(\"documents\",key).catch(err=>setNotice(err.message||err,true));});\n  $(\"vendorEventBookingSearch\")?.addEventListener(\"input\",()=>{if(state.currentVendorEvent)renderVendorEventBookingsV398(state.currentVendorEvent);});\n  $(\"saveVendorEventSetup\")?.addEventListener(\"click\",e=>saveVendorEventSetupV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"addVendorEventExpense\")?.addEventListener(\"click\",e=>addVendorEventExpenseV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"uploadVendorEventDocument\")?.addEventListener(\"click\",e=>uploadVendorEventDocumentV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"refreshVendorEventFinancials\")?.addEventListener(\"click\",async e=>{const b=e.currentTarget;setLoading(b,true);try{let warnings=[];try{await api(\"/api/admin/vendors/eventbrite/history-sync\",{method:\"POST\",body:\"{}\",timeoutMs:120000});}catch(syncError){warnings.push(\"Eventbrite: \"+(syncError.message||syncError));}try{await api(\"/api/admin/meta-ads/live-overlay/refresh\",{method:\"POST\",body:JSON.stringify({skipRematch:true,days:45}),cacheMs:0,timeoutMs:120000});}catch(metaError){warnings.push(\"Meta: \"+(metaError.message||metaError));}orbitGetCache.clear();await loadVendorWorkspaceV398(null,true,true,state.currentVendorPane||\"customers\");setNotice(warnings.length?(\"Finance refreshed with warning \u00B7 \"+warnings.join(\" \u00B7 \")):(\"Income and current advertising refreshed from Eventbrite, Orbit ticket records and Meta.\"),Boolean(warnings.length));}catch(err){setNotice(err.message||err,true);}finally{setLoading(b,false);}});\n  $(\"vendorPlannerEventSelect\")?.addEventListener(\"change\",e=>{if(e.target.value)selectVendorToolEventV399(\"planner\",e.target.value).catch(err=>setNotice(err.message||err,true));});\n  $(\"vendorDocumentsEventSelect\")?.addEventListener(\"change\",e=>{if(e.target.value)selectVendorToolEventV399(\"documents\",e.target.value).catch(err=>setNotice(err.message||err,true));});\n  $(\"vendorBriefingEventSelect\")?.addEventListener(\"change\",e=>{if(e.target.value)selectVendorToolEventV399(\"briefings\",e.target.value).catch(err=>setNotice(err.message||err,true));else{setVendorRichEditorV421(\"vendorEventEmailCustomMessage\",\"\",\"\");const status=$(\"vendorBriefingEditorState\");if(status){status.className=\"orbit-info-banner info\";status.innerHTML=\"<strong>Select an event</strong><span>Choose the show whose briefing note you want to edit.</span>\";}}});\n  $(\"saveVendorGlobalRules\")?.addEventListener(\"click\",e=>saveVendorGlobalRulesV422(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"openVendorVenueEditor\")?.addEventListener(\"click\",()=>openVendorVenueV398());\n  $(\"closeVendorCustomerProfileDialog\")?.addEventListener(\"click\",()=>$(\"vendorCustomerProfileDialog\")?.close());\n  document.addEventListener(\"click\",e=>{const b=e.target.closest(\"[data-vendor-customer-delete]\");if(b)deleteVendorCustomerV527(b.dataset.vendorCustomerDelete,b).catch(err=>setNotice(err.message||err,true));});\n  $(\"deleteVendorVenueV527\")?.addEventListener(\"click\",e=>deleteVendorVenueV527(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"saveVendorCustomerProfile\")?.addEventListener(\"click\",e=>saveVendorCustomerProfileV434(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"closeVendorVenueDialog\")?.addEventListener(\"click\",()=>$(\"vendorVenueDialog\")?.close());\n  $(\"saveVendorVenue\")?.addEventListener(\"click\",e=>saveVendorVenueV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"openVendorFloorPlanEditor\")?.addEventListener(\"click\",()=>openVendorFloorPlanEditorV401().catch(err=>setNotice(err.message||err,true)));\n  $(\"closeVendorFloorPlanDialog\")?.addEventListener(\"click\",()=>$(\"vendorFloorPlanDialog\")?.close());\n  $(\"vendorFloorPlanFile\")?.addEventListener(\"change\",e=>vendorFloorPlanFileChangedV401(e.target.files?.[0]).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorFloorPlanAddTable\")?.addEventListener(\"click\",e=>{state.vendorFloorPlanAddMode=!state.vendorFloorPlanAddMode;e.currentTarget.classList.toggle(\"active\",state.vendorFloorPlanAddMode);setNotice(state.vendorFloorPlanAddMode?\"Click the floor plan where the missing table should be placed.\":\"Add-table mode cancelled.\");});\n  $(\"vendorFloorPlanTrimV694\")?.addEventListener(\"click\",e=>trimVendorFloorPlanWhitespaceV694(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorFloorPlanUndoTrimV694\")?.addEventListener(\"click\",()=>undoVendorFloorPlanTrimV694().catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorFloorPlanZoomOut\")?.addEventListener(\"click\",()=>setVendorFloorPlanEditorZoomV412(vendorFloorPlanEditorZoomV412()-.25));\n  $(\"vendorFloorPlanZoomIn\")?.addEventListener(\"click\",()=>setVendorFloorPlanEditorZoomV412(vendorFloorPlanEditorZoomV412()+.25));\n  $(\"vendorFloorPlanZoomReset\")?.addEventListener(\"click\",()=>setVendorFloorPlanEditorZoomV412(1));\n  [[\"vendorFloorTableX\",\"x\"],[\"vendorFloorTableY\",\"y\"],[\"vendorFloorTableWidth\",\"widthPct\"],[\"vendorFloorTableHeight\",\"heightPct\"],[\"vendorFloorTableAngle\",\"angleDeg\"]].forEach(([id,field])=>$(id)?.addEventListener(\"change\",e=>updateSelectedVendorFloorTableV411(field,e.target.value)));\n  function rotateSelectedVendorFloorTableV413(delta){const t=selectedVendorFloorTableV411(),canvas=$(\"vendorFloorPlanPreview\");if(!t||!canvas)return;t.angleDeg=((Number(t.angleDeg||0)+Number(delta||0)+540)%360)-180;t.manualGeometry=true;t.geometryVersion=413;const el=canvas.querySelector(\"[data-floor-table-id='\"+CSS.escape(t.id)+\"']\");if(el)applyVendorTableGeometryV404(el,t,floorPlanDraftV401());syncVendorFloorTableInspectorV411();}\n  $(\"vendorFloorTableRotate90\")?.addEventListener(\"click\",()=>rotateSelectedVendorFloorTableV413(90));\n  $(\"vendorFloorTableRotateMinus90\")?.addEventListener(\"click\",()=>rotateSelectedVendorFloorTableV413(-90));\n  $(\"vendorFloorPlanLockTableSize\")?.addEventListener(\"click\",saveVendorFloorPlanTableTemplateV413);\n  $(\"vendorFloorTableDelete\")?.addEventListener(\"click\",()=>{const d=floorPlanDraftV401(),t=selectedVendorFloorTableV411();if(!t)return;d.tables=d.tables.filter(x=>x.id!==t.id);state.vendorFloorPlanSelectedTableId=null;renderVendorFloorPlanPreviewV401();updateVendorFloorPlanDetectionV401();});\n  $(\"vendorFloorPlanPreview\")?.addEventListener(\"keydown\",e=>{if(!selectedVendorFloorTableV411()||![\"ArrowLeft\",\"ArrowRight\",\"ArrowUp\",\"ArrowDown\"].includes(e.key))return;e.preventDefault();const s=e.shiftKey?5:1;nudgeSelectedVendorFloorTableV411(e.key===\"ArrowLeft\"?-s:e.key===\"ArrowRight\"?s:0,e.key===\"ArrowUp\"?-s:e.key===\"ArrowDown\"?s:0);});\n  $(\"saveVendorFloorPlan\")?.addEventListener(\"click\",e=>saveVendorFloorPlanV401(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"addVendorPlannerRoom\")?.addEventListener(\"click\",()=>addVendorPlannerRoomV401().catch(err=>setNotice(err.message||err,true)));\n  $(\"saveVendorTablePlan\")?.addEventListener(\"click\",e=>saveVendorTablePlanV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorPlannerStatus\")?.addEventListener(\"change\",()=>updateVendorTablePlanStatusV467().catch(err=>setNotice(err.message||err,true)));\n  $(\"printVendorShowPackage\")?.addEventListener(\"click\",()=>printVendorShowPackageV398().catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorPlannerZoomIn\")?.addEventListener(\"click\",()=>{state.vendorPlannerZoom=Math.min(2,Number(state.vendorPlannerZoom||1)+.1);if($(\"vendorPlannerZoomLabel\"))$(\"vendorPlannerZoomLabel\").textContent=Math.round(state.vendorPlannerZoom*100)+\"%\";renderVendorTablePlanV398();});\n  $(\"vendorPlannerZoomOut\")?.addEventListener(\"click\",()=>{state.vendorPlannerZoom=Math.max(.5,Number(state.vendorPlannerZoom||1)-.1);if($(\"vendorPlannerZoomLabel\"))$(\"vendorPlannerZoomLabel\").textContent=Math.round(state.vendorPlannerZoom*100)+\"%\";renderVendorTablePlanV398();});\n  $(\"vendorPlannerFitMap\")?.addEventListener(\"click\",()=>{state.vendorPlannerZoom=1;if($(\"vendorPlannerZoomLabel\"))$(\"vendorPlannerZoomLabel\").textContent=\"100%\";renderVendorTablePlanV398();});\n  $(\"previewVendorEventDetails\")?.addEventListener(\"click\",e=>previewVendorEventDetailsV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorBookingChangesStateV542\")?.addEventListener(\"change\",()=>loadVendorBookingChangesV487().catch(err=>setNotice(err.message,true)));\n  $(\"vendorBookingChangesTableV487\")?.addEventListener(\"click\",async event=>{\n    const button=event.target.closest(\"[data-vendor-resolution-v542]\");if(!button)return;\n    const row=vendorBookingChangesRowsV488.find(r=>String(r.id)===button.dataset.vendorResolutionV542);if(!row)return;\n    if(!confirm(row.resolved?\"Return this booking change to Outstanding?\":\"Mark this booking change as resolved? This only clears the task. It does not issue a refund, change credit or alter a booking.\"))return;\n    setLoading(button,true);\n    try{await api(\"/api/admin/vendors/booking-changes/\"+encodeURIComponent(row.id)+\"/resolution\",{method:\"POST\",body:JSON.stringify({resolved:!row.resolved}),cacheMs:0});await loadVendorBookingChangesV487();setNotice(row.resolved?\"Booking change reopened.\":\"Booking change resolved. Find it under Resolved or All changes.\");}\n    catch(error){setNotice(error.message,true);}finally{setLoading(button,false);}\n  });\n  $(\"vendorBookingChangesSearchV487\")?.addEventListener(\"input\",scheduleVendorBookingChangesSearchV487);\n  $(\"refreshVendorBookingChangesV487\")?.addEventListener(\"click\",e=>loadVendorBookingChangesV487(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorBookingChangesTableV487\")?.addEventListener(\"click\",e=>{const button=e.target.closest(\"[data-vendor-booking-change-edit-v488]\");if(button)openVendorBookingChangeEditV488(button.dataset.vendorBookingChangeEditV488);});\n  $(\"vendorBookingChangeSaveV488\")?.addEventListener(\"click\",e=>saveVendorBookingChangeEditV488(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorBookingChangeCreateCreditV492\")?.addEventListener(\"click\",e=>createVendorAccountCreditV492(e.currentTarget).catch(err=>vendorBookingChangeResultV492(err.message||err,true)));\n  $(\"vendorBookingChangeUseCreditV492\")?.addEventListener(\"click\",e=>useVendorAccountCreditV492(e.currentTarget).catch(err=>vendorBookingChangeResultV492(err.message||err,true)));\n  $(\"vendorBookingChangeDeductCreditV493\")?.addEventListener(\"click\",e=>adjustVendorAccountCreditV493(e.currentTarget,{clear:false}).catch(err=>vendorBookingChangeResultV492(err.message||err,true)));\n  $(\"vendorBookingChangeClearCreditV493\")?.addEventListener(\"click\",e=>adjustVendorAccountCreditV493(e.currentTarget,{clear:true}).catch(err=>vendorBookingChangeResultV492(err.message||err,true)));\n  $(\"vendorBookingChangeConvertTransferV492\")?.addEventListener(\"click\",e=>convertVendorCancellationToTransferV492(e.currentTarget).catch(err=>vendorBookingChangeResultV492(err.message||err,true)));\n  $(\"vendorBookingChangeEditCloseV488\")?.addEventListener(\"click\",()=>$(\"vendorBookingChangeEditDialogV488\")?.close());\n  $(\"vendorBookingChangeCancelV488\")?.addEventListener(\"click\",()=>$(\"vendorBookingChangeEditDialogV488\")?.close());\n  $(\"vendorEmailEditHtml\")?.addEventListener(\"click\",editVendorEmailHtmlV420);\n  $(\"vendorEmailSaveHtml\")?.addEventListener(\"click\",e=>saveVendorEmailHtmlV420(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"vendorEmailCancelHtml\")?.addEventListener(\"click\",()=>setVendorEmailHtmlEditV420(false));\n  $(\"saveVendorEventEmailCustom\")?.addEventListener(\"click\",e=>saveVendorEventEmailCustomV414(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"sendVendorEventDetails\")?.addEventListener(\"click\",e=>sendVendorEventDetailsV398(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  $(\"sendVendorEventTestEmail\")?.addEventListener(\"click\",e=>sendVendorEventTestEmailV415(e.currentTarget).catch(err=>setNotice(err.message||err,true)));\n  if($(\"vendorEventTestEmail\")){try{$(\"vendorEventTestEmail\").value=localStorage.getItem(\"orbitVendorTestEmail\")||\"\";}catch(_){}}\n  $(\"vendorEventVenueTag\")?.addEventListener(\"change\",async e=>{const event=state.currentVendorEvent;if(!event)return;const venueId=e.target.value||null;try{await api(\"/api/admin/vendors/events/config\",{method:\"POST\",body:JSON.stringify({eventKey:event.key,venueId})});event.venueId=venueId;event.venue=(state.vendorVenues||[]).find(v=>v.id===venueId)||null;if($(\"vendorEventDetailSubtitle\"))$(\"vendorEventDetailSubtitle\").textContent=[vendorDateV385(event.eventDate),event.venue?.name].filter(Boolean).join(\" \u00B7 \");setNotice(venueId?\"Event venue linked.\":\"Event venue link cleared.\");}catch(err){setNotice(err.message||err,true);renderVendorEventDetailV398(event);}});\n  $(\"vendorEventVenue\")?.addEventListener(\"change\",e=>{const v=(state.vendorVenues||[]).find(x=>x.id===e.target.value);if(!v)return;if(!$(\"vendorEventSetupTime\").value)$(\"vendorEventSetupTime\").value=v.defaultSetupTime||\"\";if(!$(\"vendorEventInstructions\").value)$(\"vendorEventInstructions\").value=v.vendorInstructions||\"\";if(!$(\"vendorEventParking\").value)$(\"vendorEventParking\").value=v.parkingNotes||\"\";if(!$(\"vendorEventRules\").value)$(\"vendorEventRules\").value=v.rules||\"\";});\n  $(\"orbitGlobalDeploymentAlert\")?.addEventListener(\"click\",()=>{activateModule(\"development\");setDevelopmentTab(\"deploy\");});\n  window.setInterval(()=>refreshGlobalDeploymentAlertV418(),60000);\n  setTimeout(()=>refreshGlobalDeploymentAlertV418(),1500);\n\n  $(\"metaBridgeLoadButton\")?.addEventListener(\"click\",()=>loadMetaBridgeV4484().catch(()=>{}));\n  $(\"metaBridgeCopyButton\")?.addEventListener(\"click\",()=>copyMetaBridgeV4484());\n\n  // V537 Prize Schedules \u2014 keep scheduler functions inside the Admin OS IIFE so $, api, esc and setNotice are in scope.\n  function prizeMonthLabelV538(month){\n    return /^\\d{4}-(0[1-9]|1[0-2])$/.test(month||\"\")?new Date(month+\"-01T00:00:00Z\").toLocaleDateString(\"en-GB\",{month:\"long\",year:\"numeric\",timeZone:\"UTC\"}):\"\";\n  }\n  function prizePublishDateV538(month){\n    if(!prizeMonthLabelV538(month))return null;\n    const [year,m]=month.split(\"-\").map(Number);return new Date(Date.UTC(year,m-2,20));\n  }\n  function updatePrizePublishPreviewV538(id,previewId){\n    const month=$(id)?.value||\"\",date=prizePublishDateV538(month),preview=$(previewId);\n    if(preview)preview.textContent=date?prizeMonthLabelV538(month)+\" goes live on \"+date.toLocaleDateString(\"en-GB\",{day:\"numeric\",month:\"long\",year:\"numeric\",timeZone:\"UTC\"})+\" at 00:00 UTC.\":\"Choose a month to see when this prize goes live.\";\n  }\n  function initialisePrizeMonthsV538(){\n    const today=new Date(),months=[];\n    for(let offset=-1;offset<=36;offset++){const d=new Date(Date.UTC(today.getUTCFullYear(),today.getUTCMonth()+offset,1));months.push(d.toISOString().slice(0,7));}\n    for(const [id,preview] of [[\"goldenScheduleTargetMonth\",\"goldenSchedulePublishPreviewV538\"],[\"monthlyDrawScheduleTargetMonth\",\"monthlyDrawSchedulePublishPreviewV538\"]]){\n      const select=$(id);if(!select)continue;\n      const current=select.value;if(current&&!months.includes(current))months.push(current);\n      select.innerHTML='<option value=\"\">Choose a month</option>'+[...new Set(months)].sort().map(month=>'<option value=\"'+month+'\">'+esc(prizeMonthLabelV538(month))+'</option>').join('');select.value=current;\n      if(!select.dataset.orbitMonthBound){select.addEventListener(\"change\",()=>updatePrizePublishPreviewV538(id,preview));select.dataset.orbitMonthBound=\"1\";}\n      updatePrizePublishPreviewV538(id,preview);\n    }\n  }\n  function requirePrizeMonthV538(id){const month=$(id)?.value||\"\";if(!prizeMonthLabelV538(month))throw new Error(\"Choose the prize month from the dropdown before saving.\");return month;}\n  let prizeSchedulesV539={golden:[],draw:[]},prizeOverviewV539=null;\n  const prizeFieldIdsV539={golden:{prefix:\"goldenSchedule\",month:\"goldenScheduleTargetMonth\",extra:\"goldenScheduleValue\",extraKey:\"value\",status:\"goldenScheduleEditStatusV539\",cancel:\"cancelGoldenScheduleEditV539\",save:\"saveGoldenTicketScheduleButton\",result:\"goldenTicketScheduleResult\"},draw:{prefix:\"monthlyDrawSchedule\",month:\"monthlyDrawScheduleTargetMonth\",extra:\"monthlyDrawScheduleDate\",extraKey:\"drawDate\",status:\"drawScheduleEditStatusV539\",cancel:\"cancelDrawScheduleEditV539\",save:\"saveMonthlyDrawScheduleButton\",result:\"monthlyDrawScheduleResult\"}};\n  function prizeDateLabelV539(value){const d=new Date(value);return Number.isNaN(d.getTime())?\"Not scheduled\":d.toLocaleDateString(\"en-GB\",{day:\"numeric\",month:\"long\",year:\"numeric\",timeZone:\"UTC\"})+\" at 00:00 UTC\";}\n  function prizeScheduleCardsV536(rows=[],kind=\"golden\"){\n    return rows.length?rows.map(row=>`<div class=\"orbit-list-card orbit-prize-schedule-row-v539\"><strong>${esc(prizeMonthLabelV538(row.targetMonth)||row.targetMonth||\"\")}</strong><span>Publishes ${esc(prizeDateLabelV539(row.revealAt))}</span><p>${esc(row.title||\"Uses Monthly Content fallback\")}${kind===\"golden\"&&row.value?` \u00B7 ${esc(row.value)}`:\"\"}${kind===\"draw\"&&row.drawDate?` \u00B7 draw ${esc(row.drawDate)}`:\"\"}</p><div class=\"orbit-action-row\"><button type=\"button\" class=\"secondary\" data-prize-edit-v539=\"${kind}\" data-prize-month=\"${esc(row.targetMonth)}\">Edit</button><button type=\"button\" class=\"secondary\" data-prize-preview-v539=\"${kind}\" data-prize-month=\"${esc(row.targetMonth)}\">Preview</button></div></div>`).join(\"\"):`<p>No ${kind===\"golden\"?\"Golden Ticket prizes\":\"monthly draws\"} scheduled yet.</p>`;\n  }\n  async function loadGoldenTicketScheduleV536(){\n    const list=$(\"goldenTicketScheduleList\");\n    try{const result=await api(\"/api/admin/golden-ticket-schedule\",{cacheMs:0});prizeSchedulesV539.golden=Array.isArray(result.schedule)?result.schedule:[];if(list)list.innerHTML=prizeScheduleCardsV536(prizeSchedulesV539.golden,\"golden\");return result;}\n    catch(error){if(list)list.textContent=\"Golden Ticket schedules could not load. Use Refresh Schedules to retry.\";throw error;}\n  }\n  async function loadMonthlyDrawScheduleV536(){\n    const list=$(\"monthlyDrawScheduleList\");\n    try{const result=await api(\"/api/admin/monthly-draw-schedule\",{cacheMs:0});prizeSchedulesV539.draw=Array.isArray(result.schedule)?result.schedule:[];if(list)list.innerHTML=prizeScheduleCardsV536(prizeSchedulesV539.draw,\"draw\");return result;}\n    catch(error){if(list)list.textContent=\"Monthly Draw schedules could not load. Use Refresh Schedules to retry.\";throw error;}\n  }\n  function prizeOverviewImageV542(card,label){\n    const f=card.imageFrame||{x:50,y:50,zoom:1};\n    return '<div class=\"orbit-prize-mini-frame-v542\" style=\"--prize-x:'+Number(f.x)+'%;--prize-y:'+Number(f.y)+'%;--prize-zoom:'+Number(f.zoom)+'\"><img src=\"'+esc(card.imageUrl)+'\" alt=\"'+esc(card.title||label)+'\" loading=\"lazy\"></div>';\n  }\n  let prizeFrameEditV542=null;\n  function updatePrizeFrameEditorV542(){\n    if(!prizeFrameEditV542)return;\n    const frame={x:Number($(\"prizeFrameXv542\").value),y:Number($(\"prizeFrameYv542\").value),zoom:Number($(\"prizeFrameZoomV542\").value)};\n    prizeFrameEditV542.frame=frame;\n    const viewport=$(\"prizeFrameViewportV542\");viewport.style.setProperty(\"--prize-x\",frame.x+\"%\");viewport.style.setProperty(\"--prize-y\",frame.y+\"%\");viewport.style.setProperty(\"--prize-zoom\",frame.zoom);\n    text(\"prizeFrameValuesV542\",\"Horizontal \"+Math.round(frame.x)+\"% \u00B7 Vertical \"+Math.round(frame.y)+\"% \u00B7 Zoom \"+frame.zoom.toFixed(2)+\"\u00D7\");\n  }\n  function openPrizeFrameV542(key){\n    const card=prizeOverviewV539?.[key];if(!card?.imageFrameKey)return;\n    prizeFrameEditV542={key,card:JSON.parse(JSON.stringify(card)),frame:{...card.imageFrame}};\n    const dialog=$(\"prizeFrameDialogV542\"),image=$(\"prizeFrameImageV542\");\n    text(\"prizeFrameTitleV542\",\"Frame image: \"+(card.title||\"Prize\"));text(\"prizeFrameResultV542\",\"\");\n    $(\"prizeFrameXv542\").value=card.imageFrame.x;$(\"prizeFrameYv542\").value=card.imageFrame.y;$(\"prizeFrameZoomV542\").value=card.imageFrame.zoom;\n    image.src=card.imageUrl;image.alt=card.title||\"Prize\";updatePrizeFrameEditorV542();if(!dialog.open)dialog.showModal();\n  }\n  async function savePrizeFrameV542(button){\n    const edit=prizeFrameEditV542;if(!edit)return;setLoading(button,true);text(\"prizeFrameResultV542\",\"Saving\u2026\");\n    try{const saved=await api(\"/api/admin/prize-image-frame\",{method:\"POST\",body:JSON.stringify({key:edit.card.imageFrameKey,revision:edit.card.imageFrame.revision,...edit.frame}),cacheMs:0});\n      edit.card.imageFrame=saved.imageFrame;await loadPrizeSchedulesV536();$(\"prizeFrameDialogV542\").close();setNotice(\"Prize image frame saved. The original image and schedule are unchanged.\");\n    }catch(error){text(\"prizeFrameResultV542\",error.message);}finally{setLoading(button,false);}\n  }\n  document.addEventListener(\"click\",event=>{const button=event.target.closest(\"[data-prize-frame-v542]\");if(button)openPrizeFrameV542(button.dataset.prizeFrameV542);});\n  [\"prizeFrameXv542\",\"prizeFrameYv542\",\"prizeFrameZoomV542\"].forEach(id=>$(id)?.addEventListener(\"input\",updatePrizeFrameEditorV542));\n  $(\"prizeFrameSaveV542\")?.addEventListener(\"click\",event=>savePrizeFrameV542(event.currentTarget));\n  $(\"prizeFrameCancelV542\")?.addEventListener(\"click\",()=>{$(\"prizeFrameDialogV542\").close();prizeFrameEditV542=null;});\n  $(\"prizeFrameResetV542\")?.addEventListener(\"click\",()=>{$(\"prizeFrameXv542\").value=50;$(\"prizeFrameYv542\").value=50;$(\"prizeFrameZoomV542\").value=1;updatePrizeFrameEditorV542();});\n  $(\"prizeFramePreviewV542\")?.addEventListener(\"click\",()=>{const edit=prizeFrameEditV542;if(!edit)return;openPrizePreviewV539(edit.key.includes(\"Golden\")?\"golden\":[\"nextDraw\",\"followingDraw\"].includes(edit.key)?\"next\":\"draw\",{...edit.card,imageFrame:edit.frame},\"Unsaved image frame. Close this preview and save only when you are happy.\");});\n  const prizeDragViewportV542=$(\"prizeFrameViewportV542\");let prizeDragV542=null;\n  prizeDragViewportV542?.addEventListener(\"pointerdown\",event=>{if(event.button!==0||!prizeFrameEditV542)return;prizeDragV542={x:event.clientX,y:event.clientY,fx:prizeFrameEditV542.frame.x,fy:prizeFrameEditV542.frame.y};prizeDragViewportV542.setPointerCapture(event.pointerId);event.preventDefault();});\n  prizeDragViewportV542?.addEventListener(\"pointermove\",event=>{if(!prizeDragV542)return;const box=prizeDragViewportV542.getBoundingClientRect();$(\"prizeFrameXv542\").value=Math.max(0,Math.min(100,prizeDragV542.fx-(event.clientX-prizeDragV542.x)*100/box.width));$(\"prizeFrameYv542\").value=Math.max(0,Math.min(100,prizeDragV542.fy-(event.clientY-prizeDragV542.y)*100/box.height));updatePrizeFrameEditorV542();});\n  [\"pointerup\",\"pointercancel\",\"lostpointercapture\"].forEach(type=>prizeDragViewportV542?.addEventListener(type,()=>{prizeDragV542=null;}));\n  function prizeOverviewCardV539(key,label,card){\n    const month=card?.targetMonth,source=month?'Scheduled for '+prizeMonthLabelV538(month):'Saved prize content';\n    const publish=month?prizeDateLabelV539(prizePublishDateV538(month)):'';\n    const image=card?.imageUrl?prizeOverviewImageV542(card,label):'<div class=\"orbit-prize-empty-v539\">No image set</div>';\n    return '<article class=\"orbit-prize-overview-card-v539\"><small>'+esc(label)+'</small>'+(card?image+'<strong>'+esc(card.title||label)+'</strong><span>'+esc(source)+'</span>'+(publish?'<span class=\"orbit-prize-publish-date-v543\">Appears in Members Area: '+esc(publish)+'</span>':'')+(card.value?'<span>'+esc(card.value)+'</span>':'')+'<button type=\"button\" class=\"secondary\" data-prize-overview-preview-v539=\"'+key+'\">Preview member card</button>'+(card.imageFrameKey?'<button type=\"button\" class=\"secondary\" data-prize-frame-v542=\"'+key+'\">Frame image</button>':''):'<div class=\"orbit-prize-empty-v539\">No prize scheduled for this slot</div>')+'</article>';\n  }\n\n  async function loadPrizeOverviewV539(){\n    const target=$(\"prizeScheduleOverviewV539\"),monthly=$(\"monthlyPrizeOverviewV540\");\n    try{const data=await api(\"/api/admin/prize-schedule-overview\",{cacheMs:0});if(!data.overview)throw new Error(\"Prize overview was not returned.\");prizeOverviewV539=data.overview;\n      if(target)target.innerHTML=[[\"currentGolden\",\"Current Golden Ticket\"],[\"nextGolden\",\"Next Golden Ticket (Admin only)\"]].map(([key,label])=>prizeOverviewCardV539(key,label,prizeOverviewV539[key])).join(\"\");\n      if(monthly)monthly.innerHTML=[[\"currentDraw\",\"This member month\"],[\"nextDraw\",\"Coming next month\"],[\"followingDraw\",\"Following month (Admin only)\"]].map(([key,label])=>prizeOverviewCardV539(key,label,prizeOverviewV539[key])).join(\"\");return data;\n    }catch(error){prizeOverviewV539=null;for(const el of [target,monthly])if(el)el.textContent=\"Current/next/following prizes could not load. Use Refresh Schedules to retry; no schedules have been changed.\";throw error;}\n  }\n  async function loadPrizeSchedulesV536(){initialisePrizeMonthsV538();return Promise.all([loadGoldenTicketScheduleV536(),loadMonthlyDrawScheduleV536(),loadPrizeOverviewV539()]);}\n  function cancelPrizeEditV539(kind){\n    const fields=prizeFieldIdsV539[kind];if(!fields)return;const month=$(fields.month);if(month){month.disabled=false;month.value=\"\";}\n    for(const id of [fields.prefix+\"Title\",fields.prefix+\"Description\",fields.prefix+\"ImageUrl\",fields.extra])if($(id))$(id).value=\"\";\n    text(fields.status,\"\");if($(fields.cancel))$(fields.cancel).hidden=true;text(fields.save,kind===\"golden\"?\"Save Golden Ticket\":\"Save Monthly Draw\");initialisePrizeMonthsV538();\n  }\n  function editPrizeScheduleV539(kind,month){\n    const fields=prizeFieldIdsV539[kind],row=prizeSchedulesV539[kind]?.find(r=>r.targetMonth===month);if(!fields||!row)return;\n    const select=$(fields.month);if(![...select.options].some(o=>o.value===month))select.add(new Option(prizeMonthLabelV538(month),month));select.value=month;select.disabled=true;\n    $(fields.prefix+\"Title\").value=row.title||\"\";$(fields.prefix+\"Description\").value=row.description||\"\";$(fields.prefix+\"ImageUrl\").value=row.imageUrl||\"\";$(fields.extra).value=row[fields.extraKey]||\"\";\n    text(fields.status,\"Editing \"+prizeMonthLabelV538(month)+\". Saving replaces this month's content, not a second schedule.\");$(fields.cancel).hidden=false;text(fields.save,\"Save changes\");initialisePrizeMonthsV538();$(fields.status).scrollIntoView({block:\"center\",behavior:\"smooth\"});$(fields.prefix+\"Title\").focus({preventScroll:true});\n  }\n  async function savePrizeScheduleV539(kind){\n    const fields=prizeFieldIdsV539[kind],result=$(fields.result),button=$(fields.save);\n    if(button?.disabled)return;if(result){result.hidden=false;result.textContent=\"Saving\u2026\";}setLoading(button,true);\n    try{const payload={targetMonth:requirePrizeMonthV538(fields.month),title:$(fields.prefix+\"Title\")?.value,description:$(fields.prefix+\"Description\")?.value,imageUrl:$(fields.prefix+\"ImageUrl\")?.value,[fields.extraKey]:$(fields.extra)?.value};\n      await api(\"/api/admin/\"+(kind===\"golden\"?\"golden-ticket-schedule\":\"monthly-draw-schedule\"),{method:\"POST\",body:JSON.stringify(payload)});\n      if(result)result.textContent=\"Schedule saved. Loading the saved record and current/next/following member previews\u2026\";\n      try{await loadPrizeSchedulesV536();if(result)result.textContent=\"Schedule saved and reloaded. Publishes \"+prizeDateLabelV539(prizePublishDateV538(payload.targetMonth))+\".\";}\n      catch(error){if(result)result.textContent=\"Schedule was saved, but the preview could not refresh. Use Refresh Schedules; do not create a second month.\";}\n    }catch(error){if(result)result.textContent=error.message||\"Could not save schedule. Your form has been kept.\";}\n    finally{setLoading(button,false);}\n  }\n  async function saveGoldenTicketScheduleV536(){return savePrizeScheduleV539(\"golden\");}\n  async function saveMonthlyDrawScheduleV536(){return savePrizeScheduleV539(\"draw\");}\n  $(\"cancelGoldenScheduleEditV539\")?.addEventListener(\"click\",()=>cancelPrizeEditV539(\"golden\"));\n  $(\"cancelDrawScheduleEditV539\")?.addEventListener(\"click\",()=>cancelPrizeEditV539(\"draw\"));\n  $(\"closePrizePreviewV539\")?.addEventListener(\"click\",()=>$(\"prizePreviewDialogV539\")?.close());\n  document.addEventListener(\"click\",event=>{\n    if(!event.target.closest(\".orbit-prize-local-v540\"))return;\n    const edit=event.target.closest(\"[data-prize-edit-v539]\"),preview=event.target.closest(\"[data-prize-preview-v539]\"),overview=event.target.closest(\"[data-prize-overview-preview-v539]\");\n    if(edit)editPrizeScheduleV539(edit.dataset.prizeEditV539,edit.dataset.prizeMonth);\n    if(preview){const kind=preview.dataset.prizePreviewV539,row=prizeOverviewV539?.previews?.[kind]?.find(r=>r.targetMonth===preview.dataset.prizeMonth);if(row)openPrizePreviewV539(kind,row.preview,\"Saved \"+prizeMonthLabelV538(row.targetMonth)+\" schedule. Future Golden Tickets are previewed as unclaimed.\");else setNotice(\"Refresh Schedules before previewing this saved record.\",true);}\n    if(overview){const key=overview.dataset.prizeOverviewPreviewV539,card=prizeOverviewV539?.[key];if(card)openPrizePreviewV539(key.includes(\"Golden\")?\"golden\":[\"nextDraw\",\"followingDraw\"].includes(key)?\"next\":\"draw\",card,key===\"nextGolden\"?\"Next scheduled Golden Ticket. This future image is visible here to Admin only.\":key===\"followingDraw\"?\"Following-month draw. Admin-only preview of the exact card that will roll forward into Coming Next Month when its reveal date arrives.\":\"Resolved Members Area content. Active member view, without scan state.\");}\n  });\n  // V539 immutable member-card parity block. No member runtime or claim API runs here.\n  function memberPrizeMarkupV539(kind,card){\n    const escapeHtml=esc;\n  function imageBlockV50(url, alt, frame) {\n    if (!url) return \"<div class='orbit-v50-prize-placeholder'>Orbit</div>\";\n    const image = \"<img src='\" + escapeHtml(url) + \"' alt='\" + escapeHtml(alt || \"Orbit prize\") + \"' loading='lazy'>\";\n    if (!frame || ![frame.x,frame.y,frame.zoom].every(v=>typeof v===\"number\"&&Number.isFinite(v)) || frame.x<0 || frame.x>100 || frame.y<0 || frame.y>100 || frame.zoom<1 || frame.zoom>3) return image;\n    return \"<div class='orbit-prize-image-frame-v542' style='--prize-x:\"+frame.x+\"%;--prize-y:\"+frame.y+\"%;--prize-zoom:\"+frame.zoom+\"'>\"+image+\"</div>\";\n  }\n  function formatDate(value) {\n    if (!value) return \"Not available yet\";\n\n    const date = new Date(value);\n\n    if (Number.isNaN(date.getTime())) {\n      return value;\n    }\n\n    return date.toLocaleDateString(\"en-GB\", {\n      day: \"numeric\",\n      month: \"long\",\n      year: \"numeric\"\n    });\n  }\n  function getDrawDisplayV6810(content, active) {\n    const now = new Date();\n    const configured = String(content.currentDrawDate || \"\").trim();\n    const nextDraw = new Date(now.getFullYear(), now.getMonth() + (now.getDate() > 15 ? 1 : 0), 15);\n    const formatted = nextDraw.toLocaleDateString(\"en-GB\", { day: \"numeric\", month: \"long\", year: \"numeric\" });\n    if (!active) return { badge: \"ENTRY UNLOCKS WHEN ACTIVE\", line: \"Your first draw begins after membership activation.\" };\n    // V440 HIGH-RISK MEMBER SAFETY:\n    // Never infer a winner/result state merely because the calendar passed the 15th.\n    // Internal automation failures and incomplete runs are Admin-only operational truth.\n    // Until the explicit draw-lifecycle project proves a customer-facing completed state,\n    // active members always receive neutral current/next-draw messaging.\n    const timeLabel = String(content.currentDrawTimeLabel || content.drawTimeLabel || \"14:00\").trim();\n    if (configured && !/15th of/i.test(configured)) return { badge: \"\u2713 YOU ARE ENTERED\", line: \"Next draw: \" + configured + (timeLabel ? \" at \" + timeLabel : \"\") };\n    return { badge: \"\u2713 YOU ARE ENTERED\", line: \"Next draw: \" + formatted + (timeLabel ? \" at \" + timeLabel : \"\") };\n  }\n\n    const content={goldenTicketImageFrame:card.imageFrame,currentDrawImageFrame:card.imageFrame,nextMonthImageFrame:card.imageFrame,goldenTicketImageUrl:card.imageUrl,currentDrawImageUrl:card.imageUrl,nextMonthImageUrl:card.imageUrl,currentDrawDate:card.drawDate,currentDrawTimeLabel:card.drawTimeLabel||card.draw_time_label||\"14:00\",nextMonthDescription:card.description};\n    const goldenTitle=card.title||\"Golden Ticket prize\",goldenValue=card.value||\"Value announced soon\",goldenDescription=card.description||\"Find a Golden Ticket in your box and claim it inside Members Home.\",goldenClaimed=card.claimed||null,goldenNextAnnouncement=card.nextAnnouncement||null,scannedGoldenToken=\"\";\n    const currentDrawTitle=card.title||\"This month\u2019s member draw\",currentDrawDescription=card.description||\"Active members are automatically entered.\",drawDisplay=getDrawDisplayV6810(content,true),drawMessage=drawDisplay.badge,nextMonthTitle=card.title||\"Coming next month\";\n    if(kind===\"golden\")return \"<article class='orbit-v50-card orbit-v50-golden-card orbit-v689-card-golden'><span>Golden Ticket</span>\" + imageBlockV50(content.goldenTicketImageUrl, goldenTitle, content.goldenTicketImageFrame) + \"<h2>\" + escapeHtml(goldenTitle) + \"</h2><strong class='orbit-v50-value'>\" + escapeHtml(goldenValue) + \"</strong><p>\" + escapeHtml(goldenDescription) + \"</p>\" + (goldenClaimed?.claimed ? \"<div class='orbit-v50-result orbit-v50-result-success'><strong>CLAIMED</strong><p>This Golden Ticket has been claimed by member \" + escapeHtml(goldenClaimed.memberNumber || \"number unavailable\") + \".</p>\" + (goldenNextAnnouncement?.revealAt ? \"<p>The next Golden Ticket prize will be announced on \" + escapeHtml(formatDate(goldenNextAnnouncement.revealAt)) + \".</p>\" : \"\") + \"</div>\" : (scannedGoldenToken ? \"<div id='orbitGoldenAutoClaimV726' class='orbit-v50-result orbit-v50-result-success'><strong>YOU FOUND IT!</strong><p>Verifying and claiming your Golden Ticket\u2026</p></div><div id='orbitGoldenConfettiV726' class='orbit-golden-confetti-v726' aria-hidden='true'></div>\" : \"<form id='orbitGoldenTicketFormV50'><input id='orbitGoldenTicketCodeV50' placeholder='Enter Golden Ticket code'><button class='orbit-v50-button' type='submit'>Claim Golden Ticket</button></form><div id='orbitGoldenTicketResultV50' class='orbit-v50-result'></div>\")) + \"<div id='orbitGoldenPersistentStatusV726'></div></article>\";\n    if(kind===\"draw\")return \"<article class='orbit-v50-card orbit-v50-prize-card orbit-v689-card-draw'><div class='orbit-v68-entered-badge'>\" + escapeHtml(drawMessage) + \"</div><span>This Month\u2019s Member Draw</span>\" + imageBlockV50(content.currentDrawImageUrl, currentDrawTitle, content.currentDrawImageFrame) + \"<h2>\" + escapeHtml(currentDrawTitle) + \"</h2><p>\" + escapeHtml(currentDrawDescription) + \"</p><small class='orbit-v6810-draw-date'>\" + escapeHtml(drawDisplay.line) + \"</small><div class='orbit-v574-fairness-card'><strong>Provably fair draw</strong><p>Orbit cannot secretly pick the winner. Eligible entries are locked first, then an independent public random number published later selects the winning position automatically.</p><button class='orbit-v50-button secondary' type='button' data-orbit-draw-proof-v574>Verify this draw</button><div id='orbitDrawProofResultV574' class='orbit-v574-draw-proof-result' hidden></div></div></article>\";\n    return \"<article class='orbit-v50-card orbit-v687-next-card orbit-v689-card-next'><span>Coming Next Month</span>\" + imageBlockV50(content.nextMonthImageUrl, nextMonthTitle, content.nextMonthImageFrame) + \"<h3>\" + escapeHtml(nextMonthTitle) + \"</h3><p>\" + escapeHtml(content.nextMonthDescription || \"Your next active month unlocks entry.\") + \"</p><div class='orbit-v687-mini-facts orbit-v215-draw-assurance'><span>\u2713 You will be automatically entered into this draw while your membership remains active.</span></div></article>\";\n  }\n  let memberPreviewCssV539=null;\n  async function memberPreviewStylesV542(){\n    if(!memberPreviewCssV539){\n      const controller=new AbortController(),timer=setTimeout(()=>controller.abort(),10000);\n      memberPreviewCssV539=fetch($(\"prizePreviewFrameV539\")?.dataset.memberCss||\"\",{credentials:\"omit\",signal:controller.signal}).then(async response=>{\n        if(!response.ok)throw new Error(\"Member stylesheet is unavailable.\");\n        const css=await response.text();if(!css.includes(\".orbit-v50-card\"))throw new Error(\"Member stylesheet response is invalid.\");return css;\n      }).catch(error=>{memberPreviewCssV539=null;throw error;}).finally(()=>clearTimeout(timer));\n    }\n    return memberPreviewCssV539;\n  }\n  function prizePreviewDocumentV542(kind,card,css){\n    const markup=memberPrizeMarkupV539(kind,card);\n    return '<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><meta http-equiv=\"Content-Security-Policy\" content=\"default-src \\'none\\'; img-src https: data:; style-src https: \\'unsafe-inline\\'; font-src https: data:; form-action \\'none\\'; base-uri \\'none\\'; script-src \\'none\\'\"><style>'+css.replace(/<\\/style/gi,\"<\\\\/style\")+'</style><style>*,*:before,*:after{box-sizing:border-box}body{margin:0} .orbit-myorbit-shell-v50{padding-bottom:24px!important}input,button{pointer-events:none}</style></head><body><section class=\"orbit-members-dashboard-v3 orbit-myorbit-v50 orbit-members-premium-v6871 orbit-members-premium-v6872 orbit-members-premium-v688 orbit-members-premium-v6881 orbit-members-premium-v689 orbit-members-premium-v6810\"><div class=\"orbit-myorbit-shell-v50\"><div class=\"orbit-v50-grid orbit-v50-view active orbit-v6871-home\"><div class=\"'+(kind===\"next\"?'orbit-v6871-home-lower orbit-v207-home-lower':'orbit-v6871-home-top')+'\">'+(kind===\"next\"?'':'<div class=\"orbit-v6871-home-side\">')+markup+(kind===\"next\"?'':'</div>')+'</div></div></div></section></body></html>';\n  }\n  let prizeInlineReadV542=0;\n  async function populatePrizeInlineFramesV542(overview){\n    const read=++prizeInlineReadV542;\n    try{\n      const css=await memberPreviewStylesV542();if(read!==prizeInlineReadV542||overview!==prizeOverviewV539)return;\n      document.querySelectorAll(\"[data-prize-inline-v542]\").forEach(frame=>{\n        const key=frame.dataset.prizeInlineV542,card=overview[key];if(!card)return;\n        frame.srcdoc=prizePreviewDocumentV542(key.includes(\"Golden\")?\"golden\":[\"nextDraw\",\"followingDraw\"].includes(key)?\"next\":\"draw\",card,css);\n        const status=document.querySelector('[data-prize-inline-status-v542=\"'+key+'\"]');if(status)status.textContent=\"Read-only Members Area card at this width.\";\n      });\n    }catch(_){if(read!==prizeInlineReadV542)return;document.querySelectorAll(\"[data-prize-inline-status-v542]\").forEach(el=>el.textContent=\"Preview unavailable. Refresh Schedules to retry; saved prizes are unchanged.\");}\n  }\n  let prizePopupReadV542=0;\n  async function openPrizePreviewV539(kind,card,context){\n    const dialog=$(\"prizePreviewDialogV539\"),frame=$(\"prizePreviewFrameV539\");if(!dialog||!frame)return;\n    const read=++prizePopupReadV542;\n    text(\"prizePreviewTitleV539\",kind===\"golden\"?\"Golden Ticket member card\":kind===\"next\"?\"Coming next month member card\":\"Monthly Draw member card\");\n    text(\"prizePreviewContextV539\",context+\" Read-only preview at this card width. Claim and entry controls cannot perform any action.\");\n    if(!dialog.open)dialog.showModal();frame.hidden=true;\n    try{const css=await memberPreviewStylesV542();if(!dialog.open||read!==prizePopupReadV542)return;frame.srcdoc=prizePreviewDocumentV542(kind,card,css);frame.hidden=false;}\n    catch(_){if(read===prizePopupReadV542)text(\"prizePreviewContextV539\",\"The member preview stylesheet could not load. Close this preview and retry. Saved prize content is unchanged.\");}\n  }\n\n  let boxAccountingPayloadV663=null;\n  function boxMoneyV663(v){return \"\u00A3\"+Number(v||0).toFixed(2);}\n  function boxStatusV663(message,error=false){const el=$(\"boxAccountingStatusV663\");if(!el)return;el.hidden=!message;el.classList.toggle(\"error\",Boolean(error));el.textContent=message||\"\";}\n  function boxEntryKeyV664(prefix){try{return `${prefix}:${crypto.randomUUID()}`;}catch(_){return `${prefix}:${Date.now()}:${Math.random().toString(36).slice(2)}`;}}\n  function boxFormPayloadV663(form){const data=Object.fromEntries(new FormData(form).entries());form.querySelectorAll('input[type=\"checkbox\"]').forEach(x=>data[x.name]=x.checked);for(const key of ['quantity','totalCost','carryingValue','sponsorCredits','paidGradingCost','packQuantityPerParcel','slabQuantityPerParcel','packagingCost','packagingCostPerBox','boxCount','packCost','slabCost','collectorBonusCost','postageCost','revenue'])if(Object.prototype.hasOwnProperty.call(data,key)&&data[key]!==\"\")data[key]=Number(data[key]);return data;}\n  function movementCorrectableV664(row){return ['purchase','manual_withdrawal','damage_writeoff'].includes(String(row.movement_type||''))&&!row.metadata?.corrected_by_movement_id&&!row.metadata?.deleted_at;}\n  function movementDeletableV665(row){return ['purchase','manual_withdrawal','damage_writeoff','opening_stocktake','stocktake_adjustment'].includes(String(row.movement_type||''))&&!row.metadata?.corrected_by_movement_id&&!row.metadata?.deleted_at;}\n  function boxMonthLabelV666(month){try{const [y,m]=String(month||'').split('-').map(Number);return new Intl.DateTimeFormat('en-GB',{month:'long',year:'numeric'}).format(new Date(y,m-1,1));}catch(_){return String(month||'')}}\n  function currentBoxMonthV666(){const d=new Date();return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}`;}\n  function boxMonthlyHistoryHtmlV666(rows){return rows.length?`<table><thead><tr><th>Members Box</th><th>Sent</th><th>Revenue</th><th>Pack</th><th>Slab</th><th>Bonus</th><th>Packaging</th><th>Starter</th><th>Postage</th><th>Total cost</th><th>Contribution</th></tr></thead><tbody>${rows.map(r=>`<tr class=\"orbit-clickable-row\" data-box-month-detail-v666=\"${esc(r.monthKey)}\"><td><strong>${esc(boxMonthLabelV666(r.monthKey))}</strong><small>${Number(r.accountedShipments||0)} physical shipment(s)${Number(r.resends||0)?` \u00B7 ${Number(r.resends)} resend/return`:''}${r.recipe?.recipeVersion?` \u00B7 recipe v${Number(r.recipe.recipeVersion)}`:''}</small></td><td>${Number(r.totalSent||0)}</td><td>${boxMoneyV663(r.revenue)}</td><td>${boxMoneyV663(r.packCost)}</td><td>${boxMoneyV663(r.slabCost)}</td><td>${boxMoneyV663(r.bonusCost)}</td><td>${boxMoneyV663(r.packagingCost)}</td><td>${boxMoneyV663(r.starterCost)}</td><td>${boxMoneyV663(r.postageCost)}</td><td><strong>${boxMoneyV663(r.totalCost)}</strong></td><td><strong>${boxMoneyV663(r.contribution)}</strong>${r.marginPercent==null?'':`<small>${Number(r.marginPercent).toFixed(1)}%</small>`}</td></tr>`).join('')}</tbody></table>`:'<p>No monthly box history yet.</p>';}\n  function renderBoxFulfilmentV666(payload){\n    const settings=payload.settings||{},sf=$('boxSettingsFormV666');if(sf){sf.elements.packagingCost.value=Number(settings.packagingCost??1.60).toFixed(2);sf.elements.parcel1StarterCost.value=Number(settings.parcel1StarterCost??1.70).toFixed(2);}\n    const hist=$('boxMonthlyHistoryV666');if(hist)hist.innerHTML=boxMonthlyHistoryHtmlV666(payload.monthlyHistory||[]);\n    const rf=$('boxRecipeFormV666'),month=currentBoxMonthV666();if(rf){if(!rf.elements.monthKey.value)rf.elements.monthKey.value=month;const recipe=(payload.recipes||[]).find(x=>x.monthKey===rf.elements.monthKey.value)||(payload.recipes||[]).find(x=>x.monthKey===month);if(recipe){rf.elements.packsPerParcel.value=Number(recipe.packsPerParcel||0);rf.elements.slabsPerParcel.value=Number(recipe.slabsPerParcel||0);}}\n    const picker=$('boxRecipeBonusesV666');if(picker){const bonuses=(payload.items||[]).filter(x=>String(x.itemKey||'').startsWith('collector_bonus:'));const monthKey=rf?.elements.monthKey?.value||month,recipe=(payload.recipes||[]).find(x=>x.monthKey===monthKey),selected=new Map((recipe?.bonusItems||[]).map(x=>[String(x.sku||''),Number(x.quantity||1)]));picker.innerHTML=bonuses.length?bonuses.map(x=>{const sku=String(x.sku||String(x.itemKey).replace(/^collector_bonus:/,'')),qty=selected.get(sku)||1;return `<div class=\"orbit-box-bonus-row-v666\"><label><input type=\"checkbox\" data-box-recipe-bonus-v666=\"${esc(sku)}\" ${selected.has(sku)?'checked':''}> ${esc(x.name||sku)} <small>${Number(x.available||x.onHand||0)} available</small></label><input type=\"number\" min=\"1\" value=\"${qty}\" data-box-recipe-bonus-qty-v666=\"${esc(sku)}\" aria-label=\"${esc(x.name||sku)} quantity\"></div>`}).join(''):'<p class=\"orbit-muted\">No collector bonus items are in stock yet.</p>';}\n  }\n  async function loadSeptemberBackfillV666(){const el=$('boxSeptemberBackfillV666');if(!el)return;try{const p=await api('/api/admin/member-box-accounting/september-backfill/preview',{cacheMs:0,timeoutMs:20000});const already=Number(p.alreadyAccounted||0)>0,items=p.bonusItems||{},ok=Boolean(items.cardPreserver&&items.pinBadge);el.innerHTML=`<div class=\"orbit-v666-september\"><div><strong>September 2026 accounting</strong><small>${Number(p.physicalShipmentCount||0)} physical shipment(s) \u00B7 ${Number(p.revenueGeneratingEntitlements||0)} paid member entitlement(s)${already?' \u00B7 already backfilled':''}</small><small>Recipe: 1 slab, 1 pack, Card Preserver, Pin Badge, Parcel 1 starter. Historical rates: \u00A31.60 packaging \u00B7 \u00A31.70 starter \u00B7 expected revenue \u00A3664.05.</small></div>${already?(p.needsReconciliation?'<button type=\"button\" data-box-september-reconcile-v669>Reconcile September accounting</button>':'<span class=\"orbit-status-pill success\">Reconciled</span>'):`<button type=\"button\" data-box-september-backfill-v666 ${ok?'':'disabled'}>Backfill September</button>`}</div>`;}catch(err){el.innerHTML=`<div class=\"orbit-action-result error\">September preview failed: ${esc(err.message||String(err))}</div>`;}}\n  async function loadBoxMonthDetailV666(month){const el=$('boxMonthDetailV666');if(!el)return;el.dataset.month=month;el.innerHTML='<p>Loading month detail\u2026</p>';try{const p=await api('/api/admin/member-box-accounting/months/'+encodeURIComponent(month),{cacheMs:0,timeoutMs:20000}),s=p.summary||{},recipe=p.recipe||null;const recipeHtml=recipe?`<div class=\"orbit-action-result\"><strong>${esc(boxMonthLabelV666(month))} saved box recipe \u00B7 version ${Number(recipe.recipeVersion||1)}</strong><span>${Number(recipe.packsPerParcel||0)} pack(s) \u00B7 ${Number(recipe.slabsPerParcel||0)} slab(s)${(recipe.bonusItems||[]).length?' \u00B7 '+(recipe.bonusItems||[]).map(x=>`${esc(x.name||x.sku)} \u00D7 ${Number(x.quantity||1)}`).join(' \u00B7 '):''}${recipe.settingsSnapshot?` \u00B7 packaging ${boxMoneyV663(Number(recipe.settingsSnapshot.packaging_cost_pence||0)/100)} \u00B7 Parcel 1 starter ${boxMoneyV663(Number(recipe.settingsSnapshot.parcel1_starter_cost_pence||0)/100)}`:''}</span></div>`:'';el.innerHTML=`<div class=\"orbit-box-month-detail-v666\"><div class=\"orbit-panel-header compact\"><div><h3>${esc(boxMonthLabelV666(month))} detail</h3><p>${Number(s.accountedShipments||0)} physical shipment(s) \u00B7 total cost ${boxMoneyV663(s.totalCost)} \u00B7 revenue ${boxMoneyV663(s.revenue)} \u00B7 contribution ${boxMoneyV663(s.contribution)}</p></div><button type=\"button\" class=\"secondary\" data-box-close-month-v666>Close</button></div>${recipeHtml}<div class=\"orbit-table-wrap\"><table><thead><tr><th>Member</th><th>Parcel</th><th>Status</th><th>Contents</th><th>Packaging</th><th>Starter cost</th><th>Postage</th><th>Total</th><th>Revenue</th><th></th></tr></thead><tbody>${(p.shipments||[]).map(x=>`<tr><td><strong>${esc(x.memberName||x.memberNumber||x.subscriptionId||'Unlinked shipment')}</strong><small>${esc([x.memberNumber,x.email].filter(Boolean).join(' \u00B7 '))}</small>${x.reconciliationRequired?'<small class=\"orbit-warning-text\">Needs member reconciliation</small>':''}${x.replacementOfPackId?'<small>Replacement / resend</small>':''}</td><td>${x.parcelNumber?`Parcel ${Number(x.parcelNumber)}`:'\u2014'}<small>${esc(x.fundedMonth||month)}</small></td><td>${esc(x.returnedToOrbit?'Returned to Orbit':(x.status||'\u2014'))}${x.returnCondition?`<small>${esc(x.returnCondition)}</small>`:''}</td><td>${(x.contents||[]).map(c=>`${esc(c.name)} \u00D7 ${Number(c.quantity||0)} (${boxMoneyV663(c.cost)})${c.returned?' \u00B7 returned':''}`).join('<br>')||'\u2014'}</td><td>${boxMoneyV663(x.display?.packagingCost)}</td><td>${Number(x.display?.starterCost||0)?boxMoneyV663(x.display?.starterCost):'\u2014'}</td><td>${boxMoneyV663(x.display?.postageCost)}</td><td><strong>${boxMoneyV663(x.display?.totalDirectCost)}</strong></td><td>${boxMoneyV663(x.display?.revenue)}</td><td>${x.returnedToOrbit?'<span class=\"orbit-status-pill success\">Received back</span>':`<button type=\"button\" class=\"secondary\" data-box-mark-returned-v669=\"${esc(x.pack_id)}\">Mark received back</button>`}</td></tr>`).join('')||'<tr><td colspan=\"10\">No accounted shipments yet.</td></tr>'}</tbody></table></div></div>`;}catch(err){el.innerHTML=`<div class=\"orbit-action-result error\">${esc(err.message||String(err))}</div>`;}}\n  function renderBoxAccountingV663(payload){\n    boxAccountingPayloadV663=payload;\n    const items=payload.items||[],credits=payload.gradingCredits||payload.sponsorCredits||{},creditHistory=payload.gradingCreditHistory||[],runs=payload.runs||[],backfills=payload.backfills||[],ledger=payload.ledger||[],grading=payload.gradingBatches||[];\n    const totalValue=items.reduce((n,x)=>n+Number(x.carryingValue||0),0),reserved=items.reduce((n,x)=>n+Number(x.reserved||0),0),openRuns=runs.filter(x=>['planning','reserved'].includes(x.status)).length,summary=$(\"boxAccountingSummaryV663\");\n    if(summary)summary.innerHTML=`<article class=\"orbit-metric\"><span>Stock value</span><strong>${boxMoneyV663(totalValue)}</strong><small>Live carrying value</small></article><article class=\"orbit-metric\"><span>Reserved units</span><strong>${reserved}</strong><small>Committed to runs</small></article><article class=\"orbit-metric\"><span>Grading Credits</span><strong>${Number(credits.available||0)}</strong><small>${Number(credits.consumed||0)} used of ${Number(credits.granted||0)}</small></article><article class=\"orbit-metric\"><span>Open runs</span><strong>${openRuns}</strong><small>Planning / reserved</small></article>`;\n    const inv=$(\"boxInventoryTableV663\");if(inv)inv.innerHTML=items.length?`<table><thead><tr><th>Inventory</th><th>On hand</th><th>Reserved</th><th>Available</th><th>Avg cost</th><th>Carrying value</th></tr></thead><tbody>${items.map(x=>`<tr><td><strong>${esc(x.name||x.itemKey)}</strong>${x.sku?`<small>${esc(x.sku)}</small>`:''}</td><td>${Number(x.onHand||0)}</td><td>${Number(x.reserved||0)}</td><td>${Number(x.available||0)}</td><td>${boxMoneyV663(x.weightedAverageCost)}</td><td><strong>${boxMoneyV663(x.carryingValue)}</strong></td></tr>`).join(\"\")}</tbody></table>`:\"<p>No inventory yet.</p>\";\n    const rec=payload.openingReconciliation;if(rec?.applied)boxStatusV663('Opening stock values reconciled: Packs \u00A3980.00 and Raw Cards \u00A31,860.00.');\n    const c=$(\"boxSponsorCreditV663\");if(c)c.textContent=`Grading Credits: ${Number(credits.available||0)} available \u00B7 ${Number(credits.consumed||0)} used`;\n    const activeGr=$('boxGradingActiveV666'),gr=$('boxGradingBatchesV663');\n    const batchRow=b=>{const received=b.status==='received',cancelled=b.status==='cancelled';let result;if(received)result=`<span class=\"orbit-status-pill success\">Received ${Number((b.quantity_accepted??b.quantity_received)||0)} \u00B7 write-off ${Number(b.quantity_written_off||0)} \u00B7 box value ${boxMoneyV663(b.finishedValue)}</span>`;else if(cancelled)result=`<div class=\"orbit-row-actions\"><span class=\"orbit-status-pill\">Cancelled</span><button type=\"button\" class=\"secondary\" data-box-delete-grading-v665=\"${esc(b.batch_id)}\">Delete</button></div>`;else result=`<div class=\"orbit-row-actions\"><button type=\"button\" class=\"secondary\" data-box-cancel-grading-v664=\"${esc(b.batch_id)}\">Cancel / correct</button><button type=\"button\" class=\"secondary\" data-box-delete-grading-v665=\"${esc(b.batch_id)}\">Delete</button><button type=\"button\" data-box-receive-grading-v663=\"${esc(b.batch_id)}\">Receive slabs</button></div>`;return `<div class=\"orbit-mini-row\"><div><strong>${esc(b.batch_id)}</strong><small>${Number(b.quantity_sent||0)} cards \u00B7 raw ${boxMoneyV663(b.rawValue)} \u00B7 grading credits ${Number(b.sponsor_credits_used||0)} \u00B7 paid grading ${boxMoneyV663(b.paidGradingCost)}</small></div>${result}</div>`};\n    if(activeGr){const active=grading.filter(b=>!['received','cancelled','archived'].includes(String(b.status||'')));activeGr.innerHTML=active.length?`<h4>Open grading batches</h4>${active.map(batchRow).join('')}`:'<p class=\"orbit-muted\">No open grading batches.</p>';}\n    if(gr){const history=grading.filter(b=>['received','cancelled','archived'].includes(String(b.status||'')));const batches=history.length?history.slice(0,30).map(batchRow).join(''):'<p class=\"orbit-muted\">No completed or cancelled grading batches yet.</p>';const grants=creditHistory.length?`<h4>Grading Credit grants</h4>${creditHistory.slice(0,30).map(x=>`<div class=\"orbit-mini-row\"><div><strong>${Number(x.quantity||0)} credits</strong><small>${esc(x.reference||x.source||'Grading Credit grant')} \u00B7 ${esc(prettyDate(x.created_at))}</small></div><button type=\"button\" class=\"secondary\" data-box-delete-credit-v665=\"${esc(x.credit_id)}\">Delete</button></div>`).join('')}`:'<h4>Grading Credit grants</h4><p class=\"orbit-muted\">No Grading Credits added yet.</p>';gr.innerHTML=batches+grants;}\n    renderBoxFulfilmentV666(payload);loadSeptemberBackfillV666();\n    const withdrawalForm=$(\"boxWithdrawalFormV664\");if(withdrawalForm){let history=$(\"boxWithdrawalHistoryV665\");if(!history){history=document.createElement('div');history.id='boxWithdrawalHistoryV665';history.className='orbit-mini-list';withdrawalForm.closest('article')?.appendChild(history);}const rows=ledger.filter(x=>x.movement_type==='manual_withdrawal'&&!x.metadata?.deleted_at).slice(0,20);history.innerHTML=`<h4>Recent withdrawals</h4>`+(rows.length?rows.map(x=>`<div class=\"orbit-mini-row\"><div><strong>${Math.abs(Number(x.quantity_delta||0))} slabs \u00B7 ${boxMoneyV663(Math.abs(Number(x.valueDelta||0)))}</strong><small>${esc(x.reason||x.metadata?.use||'Business use')} \u00B7 ${esc(prettyDate(x.created_at))}</small></div><button type=\"button\" class=\"secondary\" data-box-delete-movement-v665=\"${esc(x.movement_id)}\">Delete</button></div>`).join(''):'<p class=\"orbit-muted\">No slab withdrawals yet.</p>');}\n    const rt=$(\"boxRunsTableV663\");if(rt)rt.innerHTML=runs.length?`<table><thead><tr><th>Run</th><th>Parcels</th><th>Sequence mix</th><th>Packaging</th><th>Status</th><th>Economics</th><th></th></tr></thead><tbody>${runs.map(r=>{const mix={};(r.parcels||[]).forEach(p=>mix[p.parcelNumber||'?']=(mix[p.parcelNumber||'?']||0)+1);const mixText=Object.entries(mix).map(([k,v])=>`P${k}: ${v}`).join(' \u00B7 '),f=r.financials?.display;return `<tr><td><strong>${esc(r.name)}</strong><small>${esc(r.monthKey||'Selected parcels')}</small></td><td>${Number(r.parcelCount||0)}</td><td>${esc(mixText||'History unavailable')}</td><td>${boxMoneyV663(r.packagingCost)}<small>${boxMoneyV663(r.packagingCostPerBox)} / box</small></td><td>${esc(r.status)}</td><td>${f?`Cost ${boxMoneyV663(f.totalDirectCost)} \u00B7 Revenue ${boxMoneyV663(f.revenue)} \u00B7 Contribution ${boxMoneyV663(f.contribution)}`:'\u2014'}</td><td><div class=\"orbit-row-actions\"><button type=\"button\" class=\"secondary\" data-box-bonus-v663=\"${esc(r.runId)}\" ${r.status!=='planning'?'disabled':''}>Allocate bonus</button>${r.status==='planning'?`<button type=\"button\" data-box-reserve-v663=\"${esc(r.runId)}\">Reserve</button>`:''}${r.status==='reserved'?`<button type=\"button\" class=\"secondary\" data-box-release-v663=\"${esc(r.runId)}\">Release</button><button type=\"button\" data-box-fulfil-v663=\"${esc(r.runId)}\">Fulfil</button>`:''}${!['fulfilled','closed'].includes(r.status)?`<button type=\"button\" class=\"secondary\" data-box-delete-run-v665=\"${esc(r.runId)}\">Delete</button>`:''}</div></td></tr>`}).join(\"\")}</tbody></table>`:\"<p>No fulfilment runs yet.</p>\";\n    const lg=$(\"boxLedgerTableV663\");if(lg){\n      const backfillBlock=backfills.length?`<div class=\"orbit-mini-list\"><h4>Historical backfills</h4>${backfills.map(b=>`<div class=\"orbit-mini-row\"><div><strong>${esc(b.name||b.backfill_id)}</strong><small>${Number(b.box_count||0)} boxes \u00B7 cost ${boxMoneyV663(b.totalDirectCost)} \u00B7 revenue ${boxMoneyV663(b.revenue)}</small></div><button type=\"button\" class=\"secondary\" data-box-delete-backfill-v665=\"${esc(b.backfill_id)}\">Delete</button></div>`).join('')}</div>`:'';\n      const rows=ledger.length?`<table><thead><tr><th>When</th><th>Movement</th><th>Inventory</th><th>Qty</th><th>Value</th><th>Reference</th><th></th></tr></thead><tbody>${ledger.map(x=>{const deleted=Boolean(x.metadata?.deleted_at),actions=deleted?'<small>Deleted / reversed</small>':`${movementCorrectableV664(x)?`<button type=\"button\" class=\"secondary\" data-box-correct-movement-v664=\"${esc(x.movement_id)}\">Correct</button>`:''}${movementDeletableV665(x)?` <button type=\"button\" class=\"secondary\" data-box-delete-movement-v665=\"${esc(x.movement_id)}\">Delete</button>`:''}`;return `<tr${deleted?' class=\"orbit-muted\"':''}><td>${esc(prettyDate(x.created_at||x.createdAt))}</td><td><strong>${esc(String(x.movement_type||'').replace(/_/g,' '))}</strong><small>${esc(x.reason||'')}</small></td><td>${esc(x.item_key||'\u2014')}</td><td>${Number(x.quantity_delta||0)}</td><td>${boxMoneyV663(x.valueDelta)}</td><td>${esc(x.reference_id||'\u2014')}</td><td>${actions}</td></tr>`}).join(\"\")}</tbody></table>`:\"<p>No ledger movements yet.</p>\";\n      lg.innerHTML=backfillBlock+rows;\n    }\n  }\n  async function loadBoxAccountingV663(force=false){boxStatusV663(force?\"Refreshing inventory\u2026\":\"\");const payload=await api('/api/admin/member-box-accounting/overview',{cacheMs:force?0:3000,timeoutMs:20000});renderBoxAccountingV663(payload);boxStatusV663(\"\");return payload;}\n  async function submitBoxFormV663(form,path,success,{reset=false,idempotencyPrefix=null}={}){const button=form.querySelector('button[type=\"submit\"]');setLoading(button,true);try{const payload=boxFormPayloadV663(form);if(idempotencyPrefix)payload.idempotencyKey=boxEntryKeyV664(idempotencyPrefix);await api(path,{method:'POST',body:JSON.stringify(payload),cacheMs:0,timeoutMs:20000});boxStatusV663(success);if(reset){const keepType=form.querySelector('[name=\"type\"]')?.value;form.reset();if(keepType&&form.querySelector('[name=\"type\"]'))form.querySelector('[name=\"type\"]').value=keepType;}await loadBoxAccountingV663(true);}catch(error){boxStatusV663(error.message||String(error),true);throw error;}finally{setLoading(button,false);}}\n  function setBoxTabV664(tab){document.querySelectorAll('[data-box-open-v665]').forEach(b=>b.classList.toggle('active',b.dataset.boxOpenV665===tab));document.querySelectorAll('[data-box-panel-v664]').forEach(p=>p.hidden=p.dataset.boxPanelV664!==tab);}\n  document.querySelectorAll('[data-box-open-v665]').forEach(b=>b.addEventListener('click',()=>setBoxTabV664(b.dataset.boxOpenV665)));\n  $(\"boxPurchaseTypeV663\")?.addEventListener('change',function(){const bonus=this.value==='collector_bonus';$(\"boxPurchaseSkuWrapV663\").hidden=!bonus;$(\"boxPurchaseNameWrapV663\").hidden=!bonus;});\n  $(\"boxPurchaseFormV663\")?.addEventListener('submit',e=>{e.preventDefault();submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/purchases','Purchase recorded. The stock quantity, carrying value and average cost have been updated.',{reset:true,idempotencyPrefix:'purchase'}).catch(()=>{});});\n  $(\"boxWithdrawalFormV664\")?.addEventListener('submit',e=>{e.preventDefault();submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/manual-withdrawal','Slabs withdrawn at the current weighted-average cost.',{reset:true,idempotencyPrefix:'withdrawal'}).catch(()=>{});});\n  $(\"boxStocktakeFormV663\")?.addEventListener('submit',e=>{e.preventDefault();submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/stocktake','Stocktake adjustment recorded.').catch(()=>{});});\n  $(\"boxGradingFormV663\")?.addEventListener('submit',e=>{e.preventDefault();submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/grading','Raw-card carrying value transferred into a grading batch.',{reset:true,idempotencyPrefix:'grading'}).catch(()=>{});});\n  $(\"boxCreditFormV663\")?.addEventListener('submit',e=>{e.preventDefault();submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/sponsor-credits','Grading credits added.',{reset:true,idempotencyPrefix:'credits'}).catch(()=>{});});\n  $(\"boxTransferFormV663\")?.addEventListener('submit',e=>{e.preventDefault();submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/pool-transfer','Stock transferred at carrying value.',{reset:true,idempotencyPrefix:'transfer'}).catch(()=>{});});\n  $(\"boxDamageFormV663\")?.addEventListener('submit',e=>{e.preventDefault();submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/damage','Stock write-off recorded with an audit trail.',{reset:true,idempotencyPrefix:'writeoff'}).catch(()=>{});});\n  $(\"boxBackfillFormV663\")?.addEventListener('submit',e=>{e.preventDefault();submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/historical-backfill','Historical run recorded without changing live stock.').catch(()=>{});});\n  $(\"boxRunFormV663\")?.addEventListener('submit',e=>{e.preventDefault();const total=e.currentTarget.querySelector('[name=\"packagingCost\"]'),per=e.currentTarget.querySelector('[name=\"packagingCostPerBox\"]');if(Number(total?.value||0)>0&&Number(per?.value||0)>0){boxStatusV663('Enter packaging as either a total OR a cost per box, not both.',true);return;}submitBoxFormV663(e.currentTarget,'/api/admin/member-box-accounting/runs','Fulfilment run created from canonical monthly parcels.').catch(()=>{});});\n  $('boxSettingsFormV666')?.addEventListener('submit',async e=>{e.preventDefault();const f=e.currentTarget,b=f.querySelector('button[type=\"submit\"]');setLoading(b,true);try{await api('/api/admin/member-box-accounting/settings',{method:'POST',body:JSON.stringify({packagingCost:Number(f.elements.packagingCost.value),parcel1StarterCost:Number(f.elements.parcel1StarterCost.value)}),cacheMs:0});boxStatusV663('Fixed parcel costs saved. Future dispatches will snapshot these values.');await loadBoxAccountingV663(true);}catch(err){boxStatusV663(err.message||String(err),true)}finally{setLoading(b,false)}});\n  $('boxRecipeFormV666')?.addEventListener('change',e=>{if(e.target.name==='monthKey')renderBoxFulfilmentV666(boxAccountingPayloadV663||{});});\n  $('boxRecipeFormV666')?.addEventListener('submit',async e=>{e.preventDefault();const f=e.currentTarget,b=f.querySelector('button[type=\"submit\"]'),bonusItems=[...document.querySelectorAll('[data-box-recipe-bonus-v666]:checked')].map(x=>({sku:x.dataset.boxRecipeBonusV666,quantity:Number(document.querySelector(`[data-box-recipe-bonus-qty-v666=\"${CSS.escape(x.dataset.boxRecipeBonusV666)}\"]`)?.value||1)}));setLoading(b,true);try{const p=await api('/api/admin/member-box-accounting/recipes/'+encodeURIComponent(f.elements.monthKey.value),{method:'POST',body:JSON.stringify({packsPerParcel:Number(f.elements.packsPerParcel.value||0),slabsPerParcel:Number(f.elements.slabsPerParcel.value||0),bonusItems}),cacheMs:0});const st=$('boxRecipeStatusV666');if(st){st.hidden=false;st.classList.remove('error');st.textContent=`${boxMonthLabelV666(f.elements.monthKey.value)} box set. Inventory will be consumed only as parcels are dispatched.`}await loadBoxAccountingV663(true);}catch(err){boxStatusV663(err.message||String(err),true)}finally{setLoading(b,false)}});\n  $(\"boxAccountingRefreshV663\")?.addEventListener('click',()=>loadBoxAccountingV663(true).catch(err=>boxStatusV663(err.message,true)));\n  document.addEventListener('click',async event=>{\n    const monthDetail=event.target.closest('[data-box-month-detail-v666]'),closeMonth=event.target.closest('[data-box-close-month-v666]'),septBackfill=event.target.closest('[data-box-september-backfill-v666]'),septReconcile=event.target.closest('[data-box-september-reconcile-v669]'),returned=event.target.closest('[data-box-mark-returned-v669]'),repairMoney=event.target.closest('[data-box-repair-v663-money]'),receive=event.target.closest('[data-box-receive-grading-v663]'),cancelGrade=event.target.closest('[data-box-cancel-grading-v664]'),deleteGrade=event.target.closest('[data-box-delete-grading-v665]'),deleteCredit=event.target.closest('[data-box-delete-credit-v665]'),deleteMovement=event.target.closest('[data-box-delete-movement-v665]'),deleteRun=event.target.closest('[data-box-delete-run-v665]'),deleteBackfill=event.target.closest('[data-box-delete-backfill-v665]'),correct=event.target.closest('[data-box-correct-movement-v664]'),reserve=event.target.closest('[data-box-reserve-v663]'),release=event.target.closest('[data-box-release-v663]'),fulfil=event.target.closest('[data-box-fulfil-v663]'),bonus=event.target.closest('[data-box-bonus-v663]');\n    try{\n      if(monthDetail){await loadBoxMonthDetailV666(monthDetail.dataset.boxMonthDetailV666);\n      }else if(closeMonth){const el=$('boxMonthDetailV666');if(el)el.innerHTML='';\n      }else if(septBackfill){const preview=await api('/api/admin/member-box-accounting/september-backfill/preview',{cacheMs:0,timeoutMs:20000});if(!confirm(`Backfill September 2026 now?\\n\\nCanonical parcel rows: ${Number(preview.canonicalParcelRows||0)}\\nPhysical shipments to account: ${Number(preview.physicalShipmentCount||0)}\\n\\nEach physical shipment will account for 1 slab, 1 pack, Card Preserver, Pin Badge, Member Card, fixed packaging and actual postage. A resend remains an extra physical cost but does not create a second entitlement.`))return;await api('/api/admin/member-box-accounting/september-backfill/apply',{method:'POST',body:'{}',cacheMs:0,timeoutMs:30000});boxStatusV663('September 2026 backfill completed. Review the monthly P&L and shipment detail below.');await loadBoxAccountingV663(true);await loadBoxMonthDetailV666('2026-09');\n      }else if(septReconcile){if(!confirm('Reconcile the existing September 2026 backfill to the confirmed 19 paid entitlements + 1 returned/resend shipment, \u00A3664.05 revenue, \u00A31.60 packaging and \u00A31.70 Parcel 1 starter cost?\\n\\nThis also credits returned reusable contents back into stock while keeping the failed outbound packaging and postage as sunk cost.'))return;await api('/api/admin/member-box-accounting/september-backfill/reconcile',{method:'POST',body:'{}',cacheMs:0,timeoutMs:30000});boxStatusV663('September 2026 accounting reconciled to the confirmed historical facts.');await loadBoxAccountingV663(true);await loadBoxMonthDetailV666('2026-09');\n      }else if(returned){const packId=returned.dataset.boxMarkReturnedV669;const condition=(prompt('Returned parcel condition: enter ALL if all reusable contents came back intact, PARTIAL if only some contents are reusable, or NONE if nothing is reusable.','ALL')||'').trim().toUpperCase();if(!['ALL','PARTIAL','NONE'].includes(condition)){boxStatusV663('Enter ALL, PARTIAL or NONE.',true);return;}let body={condition:condition==='ALL'?'all_intact':condition==='PARTIAL'?'partial':'not_reusable',notes:'Returned undelivered parcel received back by Orbit.'};if(condition==='ALL'){body={...body,recoverPack:true,recoverSlab:true,recoverStarter:true,recoverBonusItemKeys:null};}else if(condition==='NONE'){body={...body,recoverPack:false,recoverSlab:false,recoverStarter:false,recoverBonusItemKeys:[]};}else{body.recoverPack=confirm('Was the pack returned intact and reusable?');body.recoverSlab=confirm('Was the slab returned intact and reusable?');body.recoverStarter=confirm('Was the Parcel 1 Member Card/lanyard returned intact and reusable?');const bonus=prompt('Enter reusable bonus item codes separated by commas (leave blank if none).','');body.recoverBonusItemKeys=(bonus||'').split(',').map(x=>x.trim()).filter(Boolean);}if(!confirm('Mark this shipment received back? Reusable contents will be credited back to stock at their original allocated cost. Original packaging and postage remain a loss.'))return;await api('/api/admin/member-box-accounting/parcels/'+encodeURIComponent(packId)+'/returned',{method:'POST',body:JSON.stringify(body),cacheMs:0,timeoutMs:20000});boxStatusV663('Returned parcel recorded. Reusable contents were credited back; original packaging and postage remain historical cost.');await loadBoxAccountingV663(true);const detail=$('boxMonthDetailV666');if(detail?.dataset?.month)await loadBoxMonthDetailV666(detail.dataset.month);else await loadBoxMonthDetailV666('2026-09');\n      }else if(repairMoney){const repair=boxAccountingPayloadV663?.legacyMoneyRepair||{};if(!repair.safe){boxStatusV663(repair.message||'Automatic legacy repair is blocked.',true);return;}const items=(repair.affectedItems||[]).map(x=>`${x.name||x.itemKey}: ${boxMoneyV663(Number(x.currentValuePence||0)/100)} \u2192 ${boxMoneyV663(Number(x.repairedValuePence||0)/100)}`).join('\\n');if(!confirm(`Repair the known V663 \u00A3/pence bug now?\\n\\n${items}\\n\\nOpen/cancelled grading raw values will be repaired too. The original ledger entries remain and an audited repair movement is added.`))return;await api('/api/admin/member-box-accounting/repair-v663-money',{method:'POST',body:'{}',cacheMs:0,timeoutMs:25000});boxStatusV663('Legacy V663 money values repaired. Check Overview & Stock before continuing.');await loadBoxAccountingV663(true);\n      }else if(deleteGrade){const id=deleteGrade.dataset.boxDeleteGradingV665;if(!confirm('Delete this grading batch from the working list? If it is still open, Orbit will first return its Raw Cards and Grading Credits. Audit history is retained.'))return;await api('/api/admin/member-box-accounting/grading/'+encodeURIComponent(id)+'/delete',{method:'POST',body:JSON.stringify({reason:'Deleted by Orbit Admin'}),cacheMs:0});boxStatusV663('Grading batch deleted from the working list; stock and Grading Credits were reconciled.');await loadBoxAccountingV663(true);\n      }else if(deleteCredit){const id=deleteCredit.dataset.boxDeleteCreditV665;if(!confirm('Delete this Grading Credit grant? Orbit will only allow this when live grading batches do not depend on the credits.'))return;await api('/api/admin/member-box-accounting/grading-credits/'+encodeURIComponent(id)+'/delete',{method:'POST',body:JSON.stringify({reason:'Deleted by Orbit Admin'}),cacheMs:0});boxStatusV663('Grading Credit grant deleted and balance recalculated.');await loadBoxAccountingV663(true);\n      }else if(deleteMovement){const id=deleteMovement.dataset.boxDeleteMovementV665;if(!confirm('Delete this accounting entry? Orbit will create an audited reversal and recalculate the current inventory. Finalised downstream history will be protected.'))return;await api('/api/admin/member-box-accounting/movements/'+encodeURIComponent(id)+'/delete',{method:'POST',body:JSON.stringify({reason:'Deleted by Orbit Admin'}),cacheMs:0});boxStatusV663('Entry deleted from current accounting and inventory recalculated. Audit reversal retained.');await loadBoxAccountingV663(true);\n      }else if(deleteRun){const id=deleteRun.dataset.boxDeleteRunV665;if(!confirm('Delete this unfinalised fulfilment run? Reserved stock will be released first.'))return;await api('/api/admin/member-box-accounting/runs/'+encodeURIComponent(id)+'/delete',{method:'POST',body:JSON.stringify({reason:'Deleted by Orbit Admin'}),cacheMs:0});boxStatusV663('Fulfilment run deleted; any reservation was released.');await loadBoxAccountingV663(true);\n      }else if(deleteBackfill){const id=deleteBackfill.dataset.boxDeleteBackfillV665;if(!confirm('Delete this historical backfill from reporting? The audit record will be retained.'))return;await api('/api/admin/member-box-accounting/historical-backfill/'+encodeURIComponent(id)+'/delete',{method:'POST',body:JSON.stringify({reason:'Deleted by Orbit Admin'}),cacheMs:0});boxStatusV663('Historical backfill deleted from current reporting.');await loadBoxAccountingV663(true);\n      }else if(receive){const batch=(boxAccountingPayloadV663?.gradingBatches||[]).find(b=>b.batch_id===receive.dataset.boxReceiveGradingV663);const returned=Number(batch?.quantity_sent||0);const acceptedRaw=prompt(`This batch sent ${returned} cards. How many returned slabs are good enough for Members Club boxes?`,String(returned));if(acceptedRaw===null)return;const accepted=Number(acceptedRaw);if(!Number.isInteger(accepted)||accepted<0||accepted>returned){boxStatusV663('Accepted slabs must be a whole number between 0 and the total returned.',true);return;}const written=returned-accepted;let reason='';if(written){reason=prompt(`${written} slab(s) will be written off and will NOT enter the Members Club slab pool. Reason:`,`Grade 8 or below \u2013 giveaway/show stock`)||'';if(!reason.trim()){boxStatusV663('A write-off reason is required.',true);return;}}if(!confirm(`Receive ${returned} slabs?\\n\\nAccepted into Members Club pool: ${accepted}\\nWritten off: ${written}${written?`\\nReason: ${reason}`:''}`))return;await api('/api/admin/member-box-accounting/grading/'+encodeURIComponent(receive.dataset.boxReceiveGradingV663)+'/receive',{method:'POST',body:JSON.stringify({quantityReceived:returned,acceptedQuantity:accepted,writtenOffQuantity:written,writeOffReason:reason||null}),cacheMs:0});boxStatusV663(`Grading received: ${accepted} added to Box Slabs${written?`, ${written} written off with their allocated cost`:''}.`);await loadBoxAccountingV663(true);\n      }else if(cancelGrade){const why=prompt('Why are you cancelling/correcting this unreceived grading batch?','Correct incorrect grading entry');if(why===null)return;if(!confirm('Cancel this grading batch? Raw cards and Grading Credits will be returned so you can enter it again correctly.'))return;await api('/api/admin/member-box-accounting/grading/'+encodeURIComponent(cancelGrade.dataset.boxCancelGradingV664)+'/cancel',{method:'POST',body:JSON.stringify({reason:why}),cacheMs:0});boxStatusV663('Grading batch cancelled. Raw cards and Grading Credits were restored; you can enter the batch again correctly.');await loadBoxAccountingV663(true);\n      }else if(correct){const movement=(boxAccountingPayloadV663?.ledger||[]).find(x=>x.movement_id===correct.dataset.boxCorrectMovementV664);if(!movement)return;const oldQty=Math.abs(Number(movement.quantity_delta||0));const qtyRaw=prompt('Correct quantity:',String(oldQty));if(qtyRaw===null)return;const quantity=Number(qtyRaw);if(!Number.isInteger(quantity)||quantity<0){boxStatusV663('Correct quantity must be a non-negative whole number.',true);return;}const body={quantity,reason:''};if(movement.movement_type==='purchase'){const currentValue=Math.abs(Number(movement.valueDelta||0));const valueRaw=prompt('Correct TOTAL amount paid in pounds (\u00A3):',Number(currentValue).toFixed(2));if(valueRaw===null)return;body.totalValue=Number(valueRaw);if(!Number.isFinite(body.totalValue)||body.totalValue<0){boxStatusV663('Enter a valid total amount in pounds.',true);return;}}body.reason=prompt('Reason for correction:','Correct typing/input error')||'Correct typing/input error';await api('/api/admin/member-box-accounting/movements/'+encodeURIComponent(movement.movement_id)+'/correct',{method:'POST',body:JSON.stringify(body),cacheMs:0});boxStatusV663('Correction recorded. The original ledger entry remains visible and the current inventory has been adjusted.');await loadBoxAccountingV663(true);\n      }else if(reserve){await api('/api/admin/member-box-accounting/runs/'+encodeURIComponent(reserve.dataset.boxReserveV663)+'/reserve',{method:'POST',body:'{}',cacheMs:0});boxStatusV663('Expected stock reserved for the run.');await loadBoxAccountingV663(true);\n      }else if(release){await api('/api/admin/member-box-accounting/runs/'+encodeURIComponent(release.dataset.boxReleaseV663)+'/release',{method:'POST',body:JSON.stringify({reason:'Released by Orbit Admin'}),cacheMs:0});boxStatusV663('Reservation released without consumption.');await loadBoxAccountingV663(true);\n      }else if(fulfil){if(!confirm('Finalise this run and permanently consume the reserved inventory at its current historical cost basis?'))return;await api('/api/admin/member-box-accounting/runs/'+encodeURIComponent(fulfil.dataset.boxFulfilV663)+'/fulfil',{method:'POST',body:'{}',cacheMs:0,timeoutMs:25000});boxStatusV663('Run fulfilled. Historical costs, bonus receipt history, postage and canonical billing revenue were captured.');await loadBoxAccountingV663(true);\n      }else if(bonus){const runId=bonus.dataset.boxBonusV663,run=(boxAccountingPayloadV663?.runs||[]).find(r=>r.runId===runId);const sku=prompt('Collector bonus item code to allocate to this run:');if(!sku)return;const scope=prompt('Parcel sequence to receive this item (for example 1 for first-ever parcels). Leave blank for all parcels in this run:','');if(scope===null)return;const parcelNumber=scope.trim()?Number(scope):null;if(scope.trim()&&(!Number.isInteger(parcelNumber)||parcelNumber<1)){boxStatusV663('Parcel sequence must be a positive whole number.',true);return;}const scopePackIds=(run?.parcels||[]).filter(p=>parcelNumber==null||Number(p.parcelNumber)===parcelNumber).map(p=>p.packId);if(!scopePackIds.length){boxStatusV663('No parcels in this run match that parcel sequence.',true);return;}const warning=await api('/api/admin/member-box-accounting/runs/'+encodeURIComponent(runId)+'/bonus-warning?sku='+encodeURIComponent(sku),{cacheMs:0});const affected=(warning.affected||[]).filter(a=>scopePackIds.includes(a.packId));if(affected.length&&!confirm(`${affected.length} selected recipient(s) have already received ${sku}. Continue and automatically exclude those members?`))return;await api('/api/admin/member-box-accounting/runs/'+encodeURIComponent(runId)+'/bonus-allocation',{method:'POST',body:JSON.stringify({sku,packIds:scopePackIds,excludePriorRecipients:true}),cacheMs:0});let message=`${sku} allocated to ${scopePackIds.length-affected.length} parcel(s).`;if(affected.length){const alternate=prompt(`${affected.length} recipient(s) were excluded because they already had ${sku}. Enter an alternative collector bonus item code for just those members, or leave blank to decide later:`,'');if(alternate?.trim()){await api('/api/admin/member-box-accounting/runs/'+encodeURIComponent(runId)+'/bonus-allocation',{method:'POST',body:JSON.stringify({sku:alternate.trim(),packIds:affected.map(a=>a.packId),excludePriorRecipients:true}),cacheMs:0});message+=` Alternative ${alternate.trim()} was allocated to eligible excluded recipients.`;}else message+=` ${affected.length} excluded recipient(s) remain available for an alternative variant.`;}boxStatusV663(message);await loadBoxAccountingV663(true);}\n    }catch(error){boxStatusV663(error.message||String(error),true);}\n  });\n\n  document.querySelectorAll(\"[data-prize-refresh-v540]\").forEach(button=>button.addEventListener(\"click\",()=>loadPrizeSchedulesV536().catch(err=>setNotice(err.message||err,true))));\n  $(\"loadGoldenTicketScheduleButton\")?.addEventListener(\"click\",()=>loadPrizeSchedulesV536().catch(err=>setNotice(err.message||err,true)));\n  $(\"saveGoldenTicketScheduleButton\")?.addEventListener(\"click\",saveGoldenTicketScheduleV536);\n  $(\"saveMonthlyDrawScheduleButton\")?.addEventListener(\"click\",saveMonthlyDrawScheduleV536);\n})();\n\n/* Orbit Deploy V345 live certification marker: harmless theme file used to prove MAIN snapshot/write/read-back/rollback. */\n\n// V388 vendor event selector date binding\ndocument.addEventListener(\"change\",event=>{\n  if(event.target?.id===\"vendorCompEvent\"){const ev=selectedVendorEventV388(\"vendorCompEvent\");if($(\"vendorCompEventDate\"))$(\"vendorCompEventDate\").value=ev.date||\"\";}\n  if(event.target?.id===\"vendorTransferEvent\"){const ev=selectedVendorEventV388(\"vendorTransferEvent\");if($(\"vendorTransferEventDate\"))$(\"vendorTransferEventDate\").value=ev.date||\"\";loadVendorTransferPricingV485().catch(err=>setNotice(err.message||err,true));}\n});\n\n/* Orbit OS V434.0.1 \u2014 aggressive safe backlog burn-down III runtime marker */\n"],
  "mappings": "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",
  "names": ["$", "setNotice", "button", "text", "actions", "performance", "confirm", "p", "launchCampaign", "launchBroadcast", "history", "table", "alert", "badge", "params", "money", "secret", "state", "status", "localResult", "result", "error", "selectedVendorEventV388", "loadVendorTransferPricingV485", "data", "d", "q", "id", "effective", "content", "bonus", "returned"]
}
