{
  "version": 3,
  "sources": ["/cdn/shop/t/44/assets/spiral-codex-homepage.js?scv=fightedge-homepage-live-recovery-20260602b"],
  "sourcesContent": ["const shopifyConfig = {\n  discountCode: \"CODEX25\",\n  core: {\n    digital: { id: 43149542555684, label: \"Spiral Combat Codex - Digital\", price: 97 },\n    physical: { id: 43149542588452, label: \"Spiral Combat Codex - Print pre-order + Digital\", price: 197 }\n  },\n  rules: {\n    \"1\": { id: 43120708747300, label: \"Rule 01 - State Decides Sight\", price: 5 },\n    \"2\": { id: 43120721559588, label: \"Rule 02 - Breath Is the Steering Wheel\", price: 5 },\n    \"3\": { id: 43120721592356, label: \"Rule 03 - Permission Is the First Battle\", price: 5 },\n    \"4\": { id: 43120721625124, label: \"Rule 04 - Calm Is Not Softness\", price: 5 },\n    \"5\": { id: 43120721657892, label: \"Rule 05 - Tension Lies\", price: 5 },\n    \"6\": { id: 43120721690660, label: \"Rule 06 - Fear Is Data\", price: 5 }\n  },\n  applications: {\n    MMA: { id: 43552555532324, physicalId: 43552555565092, label: \"The MMA Codex\" },\n    Boxing: { id: 43552548618276, physicalId: 43552548651044, label: \"The Boxing Codex\" },\n    Wrestling: { id: 43552548847652, physicalId: 43552548880420, label: \"The Wrestling Codex\" },\n    \"Muay Thai\": { id: 43552549371940, physicalId: 43552549404708, label: \"The Muay Thai Codex\" },\n    \"Jiu-Jitsu\": { id: 43552550191140, physicalId: 43552550223908, label: \"The Jiu-Jitsu Codex\" },\n    Kickboxing: { id: 43552553762852, physicalId: 43552553795620, label: \"The Kickboxing Codex\" },\n    Judo: { id: 43552554811428, physicalId: 43552554844196, label: \"The Judo Codex\" },\n    \"Karate / Taekwondo\": { id: 43552555204644, physicalId: 43552555237412, label: \"The Karate & Taekwondo Codex\" },\n    \"Wing Chun\": { id: 44213346205732, physicalId: 44213346238500, label: \"The Wing Chun Codex\" },\n    \"Tai Chi\": { id: 44213353021476, physicalId: 44213353054244, label: \"The Tai Chi Codex\" }\n  },\n  doctrines: {\n    \"elemental-fire\": { id: 43879487045668, label: \"Elemental Series: The Fire Manual\", price: 29, group: \"elemental\" },\n    \"elemental-water\": { id: 43879488552996, label: \"Elemental Series: The Water Manual\", price: 29, group: \"elemental\" },\n    \"elemental-earth\": { id: 43879488815140, label: \"Elemental Series: The Earth Manual\", price: 29, group: \"elemental\" },\n    \"elemental-air\": { id: 43879488585764, label: \"Elemental Series: The Air Manual\", price: 29, group: \"elemental\" },\n    \"elemental-void\": { id: 43879488978980, label: \"Elemental Series: The Void Manual\", price: 29, group: \"elemental\" },\n    \"women-best-martial-arts\": { id: 43866661355556, label: \"Best Martial Arts for Women\", price: 50, group: \"women\" },\n    \"women-warrior-code\": { id: 43865385893924, label: \"The Woman Warrior Code\", price: 50, group: \"women\" },\n    \"women-hard-to-intimidate\": { id: 43865386352676, label: \"Hard to Intimidate\", price: 50, group: \"women\" },\n    \"women-undersized-fighter\": { id: 43865386221604, label: \"The Undersized Fighter\", price: 50, group: \"women\" },\n    \"martial-worldview\": { id: 43943151534116, label: \"The Martial Worldview\", price: 97, group: \"worldview\" }\n  },\n  doctrineBundles: {\n    elemental: [\"elemental-fire\", \"elemental-water\", \"elemental-earth\", \"elemental-air\", \"elemental-void\"],\n    women: [\"women-best-martial-arts\", \"women-warrior-code\", \"women-hard-to-intimidate\", \"women-undersized-fighter\"]\n  },\n  pass: { id: 42738463604772, sellingPlanId: 21563899940, label: \"Fight Intelligence Pass\", price: 99 }\n};\n\ndocument.body?.classList.add(\"sc-codex-homepage-active\");\nif (window.Shopify || window.location.hostname.includes(\"spiralcombat.com\")) {\n  document.querySelectorAll(\"[data-shopify-href]\").forEach((link) => {\n    link.setAttribute(\"href\", link.getAttribute(\"data-shopify-href\"));\n  });\n}\n\nconst applicationNames = Object.keys(shopifyConfig.applications);\nconst applicationBundleDiscount = 0.25;\nconst applicationBundleDiscountPercent = Math.round(applicationBundleDiscount * 100);\nconst applicationCount = applicationNames.length;\nconst calculateApplicationBundlePrice = (unitPrice) => Number((applicationCount * unitPrice * (1 - applicationBundleDiscount)).toFixed(2));\nconst state = {\n  core: null,\n  selectedRules: [],\n  appMode: \"none\",\n  applicationFormat: \"digital\",\n  discipline: \"MMA\",\n  selectedApplications: [],\n  selectedDoctrines: [],\n  pass: false\n};\nconst prices = {\n  digital: 97,\n  physical: 197,\n  appOne: 97,\n  appAll: calculateApplicationBundlePrice(97),\n  appPhysicalOne: 197,\n  appPhysicalAll: calculateApplicationBundlePrice(197),\n  pass: 99\n};\nconst summaryList = document.querySelector(\"#summary-list\");\nconst oneTimeTotal = document.querySelector(\"#one-time-total\");\nconst monthlyTotal = document.querySelector(\"#monthly-total\");\nconst stickySummary = document.querySelector(\".sticky-summary\");\nconst stickyLabel = document.querySelector(\"#sticky-label\");\nconst stickyTotal = document.querySelector(\"#sticky-total\");\nconst stickyBonusProgress = document.querySelector(\"#sticky-bonus-progress\");\nconst stickyCartItems = document.querySelector(\"#sticky-cart-items\");\nconst stickyCheckoutButton = document.querySelector(\"#sticky-checkout-button\");\nconst stickyCartToggle = document.querySelector(\"#sticky-cart-toggle\");\nconst stickyCartDrawer = document.querySelector(\"#sticky-cart-drawer\");\nconst stickyBonusToggle = document.querySelector(\"#sticky-bonus-toggle\");\nconst stickyBonusPanel = document.querySelector(\"#sticky-bonus-panel\");\nconst loadoutProgressLabel = document.querySelector(\"#loadout-progress-label\");\nconst loadoutMeterFill = document.querySelector(\"#loadout-meter-fill\");\nconst loadoutTierList = document.querySelector(\"#loadout-tier-list\");\nconst loadoutToast = document.querySelector(\"#loadout-toast\");\nconst loadoutDeliverySummary = document.querySelector(\"#loadout-delivery-summary\");\nconst successItems = document.querySelector(\"#success-items\");\nconst checkoutForm = document.querySelector(\"#checkout-form\");\nconst successScreen = document.querySelector(\"#success-screen\");\nconst formError = document.querySelector(\"#form-error\");\nconst disciplineSelect = document.querySelector(\"#discipline-select\");\nconst emailInput = document.querySelector(\"#email\");\nconst nameInput = document.querySelector(\"#full-name\");\nconst marketingConsentInput = document.querySelector(\"#marketing-consent\");\nconst submitButton = document.querySelector(\"#complete-order\");\nconst applicationUpsell = document.querySelector(\"[data-application-upsell]\");\nconst applicationCards = document.querySelectorAll(\".application-card[data-application]\");\nconst applicationAllButton = document.querySelector(\"[data-app-card-all]\");\nconst applicationFormatButtons = document.querySelectorAll(\"[data-app-format]\");\nconst applicationReviewButtons = document.querySelectorAll(\"[data-app-review]\");\nconst applicationClearButtons = document.querySelectorAll(\"[data-app-clear]\");\nconst applicationSelectionNote = document.querySelector(\"[data-application-selection-note]\");\nconst applicationSelectionPanel = document.querySelector(\"[data-application-selection-panel]\");\nconst applicationSelectionCount = document.querySelector(\"[data-application-selection-count]\");\nconst applicationSelectionMessage = document.querySelector(\"[data-application-selection-message]\");\nconst doctrineButtons = document.querySelectorAll(\"[data-doctrine]\");\nlet previousUnlockedTierIds = new Set();\nlet loadoutProgressInitialized = false;\nlet loadoutToastTimer = null;\nlet stickyCartExpanded = false;\nconst doctrineBundleButtons = document.querySelectorAll(\"[data-doctrine-bundle]\");\nconst doctrineSelectionNote = document.querySelector(\"[data-doctrine-selection-note]\");\nconst ruleCards = document.querySelectorAll(\".rule-card[data-rule]\");\nconst applicationToast = document.createElement(\"div\");\nlet applicationToastTimer;\nconst fallbackProductImages = {\n  codex: \"https://cdn.shopify.com/s/files/1/0746/7214/4420/files/Spiral_Combat_Codex_Book.png?v=1768098184&width=220\",\n  rules: \"https://cdn.shopify.com/s/files/1/0746/7214/4420/files/Rule1.png?v=1768101791&width=220\",\n  applications: \"https://cdn.shopify.com/s/files/1/0746/7214/4420/files/TheMMACodex.png?v=1770748497&width=220\",\n  pass: \"https://cdn.shopify.com/s/files/1/0746/7214/4420/files/Logo.png?width=220\",\n  bonus: \"https://cdn.shopify.com/s/files/1/0746/7214/4420/files/Logo.png?width=220\"\n};\nconst directCheckoutLead = Object.freeze({ email: \"\", name: \"\", marketingConsent: false });\n\napplicationToast.className = \"application-toast\";\napplicationToast.setAttribute(\"role\", \"status\");\napplicationToast.setAttribute(\"aria-live\", \"polite\");\ndocument.body.appendChild(applicationToast);\n\nfunction isShopifyStorefront() {\n  return Boolean(window.Shopify && window.Shopify.routes && window.location.hostname !== \"localhost\" && window.location.hostname !== \"127.0.0.1\");\n}\n\nfunction getRoutesRoot() {\n  return window.Shopify?.routes?.root || \"/\";\n}\n\nfunction money(value) {\n  const amount = Number(value);\n  const cents = Math.round(amount * 100) % 100;\n  return new Intl.NumberFormat(\"en-US\", {\n    style: \"currency\",\n    currency: \"USD\",\n    minimumFractionDigits: cents ? 2 : 0,\n    maximumFractionDigits: 2\n  }).format(amount);\n}\n\nfunction getAllApplicationsShortLabel() {\n  return `All ${applicationCount} Disciplines`;\n}\n\nfunction getAllApplicationsBundleLabel() {\n  return `All ${applicationCount} Discipline Codexes`;\n}\n\nfunction getAllApplicationsToggleLabel() {\n  return `${getAllApplicationsShortLabel()} - ${applicationBundleDiscountPercent}% off`;\n}\n\nfunction getAllApplicationsCtaLabel() {\n  return `Add all ${applicationCount} Disciplines - ${applicationBundleDiscountPercent}% off`;\n}\n\nfunction showToast(message) {\n  window.clearTimeout(applicationToastTimer);\n  applicationToast.textContent = message;\n  applicationToast.classList.add(\"visible\");\n  applicationToastTimer = window.setTimeout(() => applicationToast.classList.remove(\"visible\"), 2600);\n}\n\nfunction getLead() {\n  return {\n    email: emailInput?.value.trim() || \"\",\n    name: nameInput?.value.trim() || \"\",\n    marketingConsent: Boolean(marketingConsentInput?.checked)\n  };\n}\n\nfunction getSelectedRuleKeys() {\n  return Array.from(new Set(state.selectedRules)).filter((key) => shopifyConfig.rules[key]);\n}\n\nfunction setSelectedRules(keys, source = \"rule_select\") {\n  state.selectedRules = Array.from(new Set(keys.map(String))).filter((key) => shopifyConfig.rules[key]);\n  updateSummary();\n  publishEvent(\"sc_codex_rule_video_change\", { source, selectedRules: getSelectedRuleKeys() });\n}\n\nfunction toggleRule(key) {\n  const selected = new Set(getSelectedRuleKeys());\n  if (selected.has(key)) selected.delete(key);\n  else selected.add(key);\n  setSelectedRules(Array.from(selected), \"rule_card\");\n  showToast(selected.has(key) ? \"Rule Video added.\" : \"Rule Video removed.\");\n}\n\nfunction getSelectedApplications() {\n  if (state.appMode === \"all\") return [...applicationNames];\n  return Array.from(new Set(state.selectedApplications)).filter((name) => applicationNames.includes(name));\n}\n\nfunction setApplicationMode(mode, source = \"application_mode\") {\n  if (mode === \"all\") {\n    state.appMode = \"all\";\n    state.selectedApplications = [...applicationNames];\n  } else if (mode === \"none\") {\n    state.appMode = \"none\";\n    state.selectedApplications = [];\n  } else {\n    state.appMode = \"custom\";\n    if (!getSelectedApplications().length) {\n      state.selectedApplications = [state.discipline];\n    }\n  }\n  updateSummary();\n  publishEvent(\"sc_codex_application_change\", { source, appMode: state.appMode, applicationFormat: state.applicationFormat, selectedApplications: getSelectedApplications() });\n}\n\nfunction toggleApplication(name) {\n  const selected = new Set(getSelectedApplications());\n  if (selected.has(name)) selected.delete(name);\n  else selected.add(name);\n  state.discipline = name;\n  state.selectedApplications = Array.from(selected);\n  state.appMode = state.selectedApplications.length ? \"custom\" : \"none\";\n  updateSummary();\n  showToast(selected.has(name) ? `${name} Discipline Codex added.` : `${name} Discipline Codex removed.`);\n  publishEvent(\"sc_codex_application_card_click\", { application: name, appMode: state.appMode, applicationFormat: state.applicationFormat, selectedApplications: getSelectedApplications() });\n}\n\nfunction getApplicationUnitPrice() {\n  return state.applicationFormat === \"physical\" ? prices.appPhysicalOne : prices.appOne;\n}\n\nfunction getApplicationAllPrice() {\n  return state.applicationFormat === \"physical\" ? prices.appPhysicalAll : prices.appAll;\n}\n\nfunction getApplicationDisplayUnitPrice() {\n  if (state.appMode !== \"all\") return getApplicationUnitPrice();\n  return Number((getApplicationAllPrice() / applicationCount).toFixed(2));\n}\n\nfunction getApplicationFormatLabel() {\n  return state.applicationFormat === \"physical\" ? \"Print + Digital pre-order\" : \"Digital\";\n}\n\nfunction getImageFromCards(cards, dataKey, value, fallback) {\n  const match = Array.from(cards).find((card) => card.dataset[dataKey] === value);\n  return match?.querySelector(\"img\")?.currentSrc || match?.querySelector(\"img\")?.src || fallback;\n}\n\nfunction getRuleImage(ruleKeys = []) {\n  return getImageFromCards(ruleCards, \"rule\", ruleKeys[0], fallbackProductImages.rules);\n}\n\nfunction getApplicationImage(name) {\n  return getImageFromCards(applicationCards, \"application\", name, fallbackProductImages.applications);\n}\n\nfunction getDoctrineImage(key) {\n  return getImageFromCards(doctrineButtons, \"doctrine\", key, fallbackProductImages.bonus);\n}\n\nfunction getSelectedDoctrineKeys() {\n  return Array.from(new Set(state.selectedDoctrines)).filter((key) => shopifyConfig.doctrines[key]);\n}\n\nfunction toggleDoctrine(key) {\n  const selected = new Set(getSelectedDoctrineKeys());\n  if (selected.has(key)) selected.delete(key);\n  else selected.add(key);\n  state.selectedDoctrines = Array.from(selected);\n  updateSummary();\n  showToast(`${shopifyConfig.doctrines[key]?.label || \"Book\"} ${selected.has(key) ? \"added\" : \"removed\"}.`);\n  publishEvent(\"sc_codex_doctrine_toggle\", { doctrine: key, selectedDoctrines: getSelectedDoctrineKeys() });\n}\n\nfunction toggleDoctrineBundle(group) {\n  const bundleKeys = shopifyConfig.doctrineBundles[group] || [];\n  const selected = new Set(getSelectedDoctrineKeys());\n  const allSelected = bundleKeys.every((key) => selected.has(key));\n  bundleKeys.forEach((key) => allSelected ? selected.delete(key) : selected.add(key));\n  state.selectedDoctrines = Array.from(selected);\n  updateSummary();\n  showToast(`${allSelected ? \"Removed\" : \"Added\"} ${group === \"women\" ? \"Women's Series\" : \"Elemental Series\"}.`);\n  publishEvent(\"sc_codex_doctrine_toggle\", { doctrineGroup: group, selectedDoctrines: getSelectedDoctrineKeys() });\n}\n\nfunction getItems() {\n  const items = [];\n  if (state.core) {\n    items.push({\n      label: state.core === \"physical\" ? \"Spiral Combat Codex - Print pre-order + Digital\" : \"Spiral Combat Codex - Digital\",\n      shortLabel: state.core === \"physical\" ? \"Print + Digital Codex\" : \"Digital Codex\",\n      price: state.core === \"physical\" ? prices.physical : prices.digital,\n      cadence: \"today\",\n      image: fallbackProductImages.codex,\n      removeType: \"core\",\n      removeKey: state.core\n    });\n  }\n  const selectedRules = getSelectedRuleKeys();\n  selectedRules.forEach((key) => {\n    const rule = shopifyConfig.rules[key];\n    if (!rule) return;\n    items.push({\n      label: rule.label,\n      shortLabel: rule.label.replace(/^Rule 0?(\\d+) - /u, \"Rule $1: \"),\n      price: rule.price,\n      cadence: \"today\",\n      image: getRuleImage([key]),\n      removeType: \"rule\",\n      removeKey: key\n    });\n  });\n  const selectedApplications = getSelectedApplications();\n  selectedApplications.forEach((name) => {\n    items.push({\n      label: `${name} Discipline Codex${state.applicationFormat === \"physical\" ? \" - Print + Digital\" : \"\"}`,\n      shortLabel: `${name} Codex`,\n      price: getApplicationDisplayUnitPrice(),\n      cadence: \"today\",\n      image: getApplicationImage(name),\n      removeType: \"discipline\",\n      removeKey: name\n    });\n  });\n  getSelectedDoctrineKeys().forEach((key) => {\n    const product = shopifyConfig.doctrines[key];\n    if (!product) return;\n    items.push({\n      label: product.label,\n      shortLabel: product.label.replace(/^Elemental Series: /u, \"\"),\n      price: product.price,\n      cadence: \"today\",\n      image: getDoctrineImage(key),\n      removeType: \"doctrine\",\n      removeKey: key\n    });\n  });\n  if (state.pass) {\n    items.push({ label: \"Fight Intelligence Pass\", shortLabel: \"Fight IQ Pass\", price: prices.pass, cadence: \"monthly\", image: fallbackProductImages.pass, removeType: \"pass\", removeKey: \"pass\" });\n  }\n  return items;\n}\n\nfunction getTotals() {\n  return getItems().reduce((totals, item) => {\n    if (item.cadence === \"monthly\") totals.monthly += item.price;\n    else totals.oneTime += item.price;\n    return totals;\n  }, { oneTime: 0, monthly: 0 });\n}\n\nfunction renderRows(container, rows, rowClass = \"summary-row\") {\n  if (!container) return;\n  container.innerHTML = rows.map((item) => `<div class=\"${rowClass}\"><span>${item.label}</span><strong>${money(item.price)}${item.cadence === \"monthly\" ? \"/mo\" : \"\"}</strong></div>`).join(\"\");\n}\n\nfunction escapeHtml(value = \"\") {\n  return String(value).replace(/[&<>\"']/g, (character) => ({\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    '\"': \"&quot;\",\n    \"'\": \"&#39;\"\n  })[character]);\n}\n\nfunction renderSelectedOrderStack(items = []) {\n  if (!summaryList) return;\n  if (!items.length) {\n    summaryList.innerHTML = `\n      <div class=\"summary-row summary-row--empty\">\n        <span>Start with the Codex</span>\n        <strong>$97+</strong>\n      </div>\n    `;\n    return;\n  }\n  summaryList.innerHTML = items.map((item, index) => `\n    <div class=\"summary-row\">\n      <span><b>${index + 1}</b>${item.label}</span>\n      <strong>${money(item.price)}${item.cadence === \"monthly\" ? \"/mo\" : \"\"}</strong>\n    </div>\n  `).join(\"\");\n}\n\nfunction renderStickyCartStack(items = []) {\n  if (!stickyCartItems) return;\n  if (!items.length) {\n    stickyCartItems.innerHTML = `\n      <div class=\"sticky-cart-empty\">\n        <span>Cart is empty</span>\n        <strong>Add the Codex first</strong>\n      </div>\n    `;\n    return;\n  }\n  stickyCartItems.innerHTML = `\n    <div class=\"sticky-cart-stack\" aria-label=\"Selected products\">\n      ${items.map((item, index) => `\n        <article class=\"sticky-cart-item\" style=\"--stack-index: ${index}\">\n          <img src=\"${escapeHtml(item.image || fallbackProductImages.bonus)}\" alt=\"\" loading=\"lazy\" decoding=\"async\" />\n          <div>\n            <span>${escapeHtml(item.shortLabel || item.label)}</span>\n            <strong>${money(item.price)}${item.cadence === \"monthly\" ? \"/mo\" : \"\"}</strong>\n          </div>\n          <button\n            class=\"sticky-cart-remove\"\n            type=\"button\"\n            data-sticky-remove-type=\"${escapeHtml(item.removeType || \"\")}\"\n            data-sticky-remove-key=\"${escapeHtml(item.removeKey || \"\")}\"\n            aria-label=\"Remove ${escapeHtml(item.shortLabel || item.label)} from cart\"\n          >Remove</button>\n        </article>\n      `).join(\"\")}\n    </div>\n  `;\n}\n\nfunction removeStickyCartItem(type, key) {\n  if (type === \"core\") {\n    state.core = null;\n    showToast(\"Codex removed.\");\n  } else if (type === \"rule\") {\n    state.selectedRules = getSelectedRuleKeys().filter((ruleKey) => ruleKey !== key);\n    showToast(\"Rule Video removed.\");\n  } else if (type === \"discipline\") {\n    const nextApplications = getSelectedApplications().filter((name) => name !== key);\n    state.appMode = nextApplications.length ? \"custom\" : \"none\";\n    state.selectedApplications = nextApplications;\n    state.discipline = nextApplications[0] || state.discipline;\n    showToast(`${key} Codex removed.`);\n  } else if (type === \"doctrine\") {\n    state.selectedDoctrines = getSelectedDoctrineKeys().filter((doctrineKey) => doctrineKey !== key);\n    showToast(\"Book removed.\");\n  } else if (type === \"pass\") {\n    state.pass = false;\n    showToast(\"Fight Intelligence Pass removed.\");\n  }\n  updateSummary();\n}\n\nfunction renderStickyBonusPanel(tiers = getLoadoutTiers()) {\n  if (!stickyBonusPanel) return;\n  stickyBonusPanel.innerHTML = tiers.map((tier, index) => `\n    <article class=\"sticky-bonus-row ${tier.unlocked ? \"is-unlocked\" : \"is-locked\"}\">\n      <span class=\"sticky-bonus-row__mark\">${tier.unlocked ? \"\u2713\" : index + 1}</span>\n      <div>\n        <strong>${escapeHtml(tier.reward)}</strong>\n        <small>${escapeHtml(tier.unlocked ? tier.detail : tier.next)}</small>\n      </div>\n    </article>\n  `).join(\"\");\n}\n\nfunction getLoadoutTiers() {\n  const orderValue = getTotals().oneTime + getTotals().monthly;\n  const describeNext = (threshold) => `Add ${money(Math.max(0, threshold - orderValue))} more to unlock.`;\n  const tier = ({ threshold, ...item }) => ({\n    ...item,\n    threshold,\n    unlocked: orderValue >= threshold,\n    next: describeNext(threshold),\n    detail: `${money(threshold)} order value reached.`\n  });\n\n  return [\n    tier({\n      id: \"starter\",\n      title: \"$97 tier\",\n      reward: \"Fight IQ Starter Map\",\n      cover: \"starter\",\n      blurb: \"A one-page map for reading what is breaking first in a fight.\",\n      threshold: 97,\n      deliveryKind: \"digital\",\n      delivery: \"Digital bonus tied to the checkout email.\"\n    }),\n    tier({\n      id: \"decoder\",\n      title: \"$194 tier\",\n      reward: \"Style Decoder Worksheet\",\n      cover: \"decoder\",\n      blurb: \"A practical worksheet for translating Spiral Combat into your style.\",\n      threshold: 194,\n      deliveryKind: \"digital\",\n      delivery: \"Digital worksheet tied to the checkout email.\"\n    }),\n    tier({\n      id: \"training\",\n      title: \"$300 tier\",\n      reward: \"7-Day Spiral Training Plan\",\n      cover: \"training\",\n      blurb: \"A simple first week so the Codex becomes training instead of theory.\",\n      threshold: 300,\n      deliveryKind: \"digital\",\n      delivery: \"Digital plan tied to the checkout email.\"\n    }),\n    tier({\n      id: \"worldview\",\n      title: \"$500 tier\",\n      reward: \"Martial Worldview Bonus Book\",\n      cover: \"worldview\",\n      blurb: \"A deeper philosophy lens for violence, fear, ego, restraint, and mastery.\",\n      threshold: 500,\n      deliveryKind: \"digital\",\n      delivery: \"Digital bonus book tied to the checkout email.\"\n    }),\n    tier({\n      id: \"private\",\n      title: \"$1,000 tier\",\n      reward: \"Private Fight IQ Review\",\n      cover: \"founder\",\n      blurb: \"A private review from Mike on the next pressure problem to solve.\",\n      threshold: 1000,\n      deliveryKind: \"manual\",\n      delivery: \"Email follow-up after purchase to collect context and schedule the review.\"\n    }),\n    tier({\n      id: \"elite\",\n      title: \"$1,750 tier\",\n      reward: \"Elite Fight Breakdown\",\n      cover: \"elite\",\n      blurb: \"A top-level fight analysis bonus for serious athletes and coaches.\",\n      threshold: 1750,\n      deliveryKind: \"manual\",\n      delivery: \"Email follow-up after purchase to confirm the athlete, footage, and review path.\"\n    })\n  ];\n}\n\nfunction getUnlockedLoadoutTiers() {\n  return getLoadoutTiers().filter((tier) => tier.unlocked);\n}\n\nfunction getLoadoutAttributeSummary() {\n  const unlocked = getUnlockedLoadoutTiers();\n  const instant = unlocked.filter((tier) => tier.deliveryKind === \"digital\").map((tier) => tier.reward);\n  const manual = unlocked.filter((tier) => tier.deliveryKind === \"manual\").map((tier) => tier.reward);\n  const highest = unlocked[unlocked.length - 1];\n  return {\n    unlocked,\n    instant,\n    manual,\n    names: unlocked.map((tier) => tier.reward),\n    highest: highest ? `${highest.title}: ${highest.reward}` : \"None\",\n    deliveryNote: unlocked.length\n      ? \"Digital bonuses are tied to the checkout email; private review bonuses require email follow-up after purchase.\"\n      : \"No Fight IQ Loadout bonuses unlocked yet.\"\n  };\n}\n\nfunction showLoadoutToast(tier) {\n  if (!loadoutToast || !tier) return;\n  if (loadoutToastTimer) clearTimeout(loadoutToastTimer);\n  loadoutToast.textContent = `Bonus unlocked: ${tier.reward}`;\n  loadoutToast.hidden = false;\n  loadoutToast.classList.remove(\"show\");\n  window.requestAnimationFrame(() => loadoutToast.classList.add(\"show\"));\n  loadoutToastTimer = window.setTimeout(() => {\n    loadoutToast.classList.remove(\"show\");\n    loadoutToast.hidden = true;\n  }, 2400);\n}\n\nfunction renderLoadoutProgress() {\n  const tiers = getLoadoutTiers();\n  const unlockedCount = tiers.filter((tier) => tier.unlocked).length;\n  const fillPercent = Math.round((unlockedCount / tiers.length) * 100);\n  const unlockedTierIds = new Set(tiers.filter((tier) => tier.unlocked).map((tier) => tier.id));\n  const newlyUnlocked = tiers.filter((tier) => tier.unlocked && !previousUnlockedTierIds.has(tier.id));\n\n  if (loadoutProgressLabel) {\n    loadoutProgressLabel.textContent = `${unlockedCount} / ${tiers.length} bonus${unlockedCount === 1 ? \"\" : \"es\"} unlocked`;\n  }\n  if (loadoutMeterFill) loadoutMeterFill.style.width = `${fillPercent}%`;\n\n  document.querySelectorAll(\"[data-loadout-dot]\").forEach((dot) => {\n    const tier = tiers.find((item) => item.id === dot.dataset.loadoutDot);\n    dot.classList.toggle(\"active\", Boolean(tier?.unlocked));\n  });\n\n  if (loadoutProgressInitialized && newlyUnlocked.length > 0) {\n    showLoadoutToast(newlyUnlocked[newlyUnlocked.length - 1]);\n  }\n  previousUnlockedTierIds = unlockedTierIds;\n  loadoutProgressInitialized = true;\n\n  if (!loadoutTierList) return;\n  loadoutTierList.innerHTML = tiers.map((tier, index) => {\n    const status = tier.unlocked ? \"Unlocked\" : \"Next\";\n    return `\n      <div class=\"loadout-tier ${tier.unlocked ? \"is-unlocked\" : \"is-locked\"}\">\n        <span class=\"loadout-tier__mark\">${tier.unlocked ? \"\u2713\" : index + 1}</span>\n        <span class=\"loadout-tier__cover loadout-tier__cover--${tier.cover}\" aria-hidden=\"true\"></span>\n        <div>\n          <strong>${tier.title}: ${tier.reward}</strong>\n          <em>${tier.blurb}</em>\n          <small>${status}: ${tier.unlocked ? tier.detail : tier.next}</small>\n          ${tier.unlocked ? `<small class=\"loadout-tier__delivery\">Delivery: ${tier.delivery}</small>` : \"\"}\n        </div>\n      </div>\n    `;\n  }).join(\"\");\n  renderLoadoutDeliverySummary();\n}\n\nfunction renderLoadoutDeliverySummary() {\n  if (!loadoutDeliverySummary) return;\n  const summary = getLoadoutAttributeSummary();\n  if (!summary.unlocked.length) {\n    loadoutDeliverySummary.innerHTML = `\n      <strong>Bonus delivery</strong>\n      <span>Add items to unlock digital Fight IQ bonuses before checkout.</span>\n    `;\n    return;\n  }\n  const rows = [];\n  if (summary.instant.length) rows.push(`<span><b>Digital:</b> ${summary.instant.join(\", \")}</span>`);\n  if (summary.manual.length) rows.push(`<span><b>Email follow-up:</b> ${summary.manual.join(\", \")}</span>`);\n  loadoutDeliverySummary.innerHTML = `\n    <strong>Bonus delivery</strong>\n    ${rows.join(\"\")}\n  `;\n}\n\nfunction updateRuleUi() {\n  const selected = new Set(getSelectedRuleKeys());\n  ruleCards.forEach((card) => {\n    const isSelected = selected.has(card.dataset.rule);\n    card.classList.toggle(\"selected\", isSelected);\n    card.setAttribute(\"aria-pressed\", String(isSelected));\n    const button = card.querySelector(\".rule-footer .button\");\n    if (button) button.textContent = isSelected ? \"Added\" : \"Add rule\";\n  });\n  document.querySelectorAll(\"[data-rule-bundle='popular']\").forEach((button) => {\n    const isActive = [\"1\", \"2\", \"3\"].every((key) => selected.has(key));\n    button.classList.toggle(\"active\", isActive);\n    button.textContent = isActive ? \"Clear Popular 3\" : \"Add Popular 3\";\n  });\n  document.querySelectorAll(\"[data-rule-bundle='all']\").forEach((button) => {\n    const isActive = Object.keys(shopifyConfig.rules).every((key) => selected.has(key));\n    button.classList.toggle(\"active\", isActive);\n    button.textContent = isActive ? \"Clear all 6 Rule Videos\" : \"Add all 6 Rule Videos\";\n  });\n  document.querySelectorAll(\"[data-toggle='starter']\").forEach((button) => {\n    const isActive = [\"1\", \"2\", \"3\"].every((key) => selected.has(key));\n    button.classList.toggle(\"active\", isActive);\n    const span = button.querySelector(\"span\");\n    if (span) span.textContent = isActive ? \"Added\" : \"Add\";\n  });\n}\n\nfunction updateApplicationUi() {\n  const selectedApplications = getSelectedApplications();\n  const selectedSet = new Set(selectedApplications);\n  applicationCards.forEach((card) => {\n    const isSelected = state.appMode === \"all\" || selectedSet.has(card.dataset.application);\n    card.classList.toggle(\"selected\", isSelected);\n    card.setAttribute(\"aria-pressed\", String(isSelected));\n    const cta = card.querySelector(\".application-cta\");\n    if (cta) cta.textContent = isSelected ? \"Added\" : \"Add codex\";\n    const price = card.querySelector(\".application-price\");\n    if (price) price.textContent = money(getApplicationUnitPrice());\n  });\n  document.querySelectorAll(\"[data-app-mode]\").forEach((button) => button.classList.toggle(\"active\", button.dataset.appMode === state.appMode));\n  document.querySelectorAll(\"[data-app-mode='custom']\").forEach((button) => {\n    button.textContent = state.appMode === \"custom\" && selectedApplications.length\n      ? \"Clear selected discipline\"\n      : `Add ${state.discipline} +${money(getApplicationUnitPrice())}`;\n  });\n  document.querySelectorAll(\"[data-app-mode='all']\").forEach((button) => {\n    button.textContent = state.appMode === \"all\" ? `Clear all ${applicationCount} Disciplines` : getAllApplicationsToggleLabel();\n  });\n  applicationClearButtons.forEach((button) => {\n    const hasSelection = selectedApplications.length > 0;\n    button.hidden = !hasSelection;\n    button.textContent = hasSelection ? \"Clear selected\" : \"Nothing selected\";\n  });\n  applicationFormatButtons.forEach((button) => {\n    const active = button.dataset.appFormat === state.applicationFormat;\n    button.classList.toggle(\"active\", active);\n    button.setAttribute(\"aria-pressed\", String(active));\n  });\n  if (applicationAllButton) {\n    applicationAllButton.classList.toggle(\"active\", state.appMode === \"all\");\n    applicationAllButton.textContent = state.appMode === \"all\" ? `Clear all ${applicationCount} Disciplines` : `${getAllApplicationsCtaLabel()} (${money(getApplicationAllPrice())})`;\n  }\n  if (applicationSelectionNote) {\n    applicationSelectionNote.textContent = state.appMode === \"all\"\n      ? `Selected: all ${applicationCount} Discipline Codexes. Format: ${getApplicationFormatLabel()}.`\n      : selectedApplications.length\n        ? `Selected: ${selectedApplications.join(\", \")}. Format: ${getApplicationFormatLabel()}.`\n        : \"No Discipline Codex selected yet.\";\n  }\n  if (applicationSelectionPanel) applicationSelectionPanel.hidden = selectedApplications.length === 0;\n  if (applicationSelectionCount) applicationSelectionCount.textContent = state.appMode === \"all\" ? `All ${applicationCount} Disciplines selected` : `${selectedApplications.length} Discipline${selectedApplications.length === 1 ? \"\" : \"s\"} selected`;\n  if (applicationSelectionMessage) applicationSelectionMessage.textContent = selectedApplications.length\n    ? `Selected: ${selectedApplications.join(\", \")}. Format: ${getApplicationFormatLabel()}.`\n    : `Tap discipline cards below to add ${getApplicationFormatLabel()} Discipline Codexes.`;\n}\n\nfunction updateDoctrineUi() {\n  const selected = new Set(getSelectedDoctrineKeys());\n  doctrineButtons.forEach((button) => {\n    const isSelected = selected.has(button.dataset.doctrine);\n    button.classList.toggle(\"active\", isSelected);\n    button.classList.toggle(\"selected\", isSelected);\n    button.setAttribute(\"aria-pressed\", String(isSelected));\n    const cta = button.querySelector(\".doctrine-footer .button\");\n    if (cta) cta.textContent = isSelected ? \"Added\" : \"Add book\";\n  });\n  doctrineBundleButtons.forEach((button) => {\n    const keys = shopifyConfig.doctrineBundles[button.dataset.doctrineBundle] || [];\n    const isActive = keys.length > 0 && keys.every((key) => selected.has(key));\n    button.classList.toggle(\"active\", isActive);\n    button.textContent = button.dataset.doctrineBundle === \"women\"\n      ? (isActive ? \"Clear Women's Series\" : \"Add Women's Series - complete set ($200)\")\n      : (isActive ? \"Clear Elemental Series\" : \"Add Elemental Series - complete set ($145)\");\n  });\n  if (doctrineSelectionNote) {\n    doctrineSelectionNote.textContent = selected.size ? `${selected.size} specialized book${selected.size === 1 ? \"\" : \"s\"} selected.` : \"No specialized books selected.\";\n  }\n}\n\nfunction updateButtons() {\n  document.querySelectorAll(\"[data-core]\").forEach((button) => button.classList.toggle(\"active\", button.dataset.core === state.core));\n  document.querySelectorAll(\"[data-core]\").forEach((button) => {\n    const label = button.querySelector(\"span\");\n    if (!label) return;\n    const isActive = button.dataset.core === state.core;\n    if (button.dataset.core === \"physical\") label.textContent = isActive ? \"Added Print + Digital\" : \"Add Print + Digital\";\n    else label.textContent = isActive ? \"Added Digital Codex\" : \"Add Digital Codex\";\n  });\n  document.querySelectorAll(\".pass-section\").forEach((section) => section.classList.toggle(\"selected\", state.pass));\n  document.querySelectorAll(\"[data-toggle='pass']\").forEach((button) => {\n    button.classList.toggle(\"active\", state.pass);\n    const span = button.querySelector(\"span\");\n    if (span) span.textContent = state.pass ? \"Added\" : \"Add\";\n  });\n  updateRuleUi();\n  updateApplicationUi();\n  updateDoctrineUi();\n}\n\nfunction updateSummary() {\n  const items = getItems();\n  const totals = getTotals();\n  const loadout = getLoadoutAttributeSummary();\n  const loadoutTierCount = getLoadoutTiers().length;\n  const hasSelection = items.length > 0;\n  renderSelectedOrderStack(items);\n  renderStickyCartStack(items);\n  renderStickyBonusPanel();\n  if (oneTimeTotal) oneTimeTotal.textContent = money(totals.oneTime);\n  if (monthlyTotal) monthlyTotal.textContent = totals.monthly ? `${money(totals.monthly)}/mo` : \"$0/mo\";\n  if (stickySummary) {\n    const stickyProgress = hasSelection ? Math.round((loadout.unlocked.length / loadoutTierCount) * 100) : 0;\n    if (!hasSelection) stickyCartExpanded = false;\n    stickySummary.style.setProperty(\"--sticky-progress\", `${stickyProgress}%`);\n    stickySummary.classList.toggle(\"has-selection\", hasSelection);\n    stickySummary.classList.toggle(\"is-expanded\", hasSelection && stickyCartExpanded);\n  }\n  if (stickyCartToggle) {\n    stickyCartToggle.hidden = !hasSelection;\n    stickyCartToggle.textContent = stickyCartExpanded ? \"Hide cart\" : \"View cart\";\n    stickyCartToggle.setAttribute(\"aria-expanded\", String(hasSelection && stickyCartExpanded));\n  }\n  if (stickyCartDrawer) {\n    stickyCartDrawer.setAttribute(\"aria-hidden\", String(!(hasSelection && stickyCartExpanded)));\n  }\n  if (stickyLabel) stickyLabel.textContent = hasSelection ? \"Your cart\" : \"Start here\";\n  if (stickyTotal) stickyTotal.textContent = hasSelection\n    ? (totals.monthly ? `${money(totals.oneTime)} today + ${money(totals.monthly)}/mo` : `${money(totals.oneTime)} today`)\n    : \"Choose your Codex\";\n  if (stickyBonusProgress) {\n    stickyBonusProgress.textContent = hasSelection\n      ? `${loadout.unlocked.length} / ${loadoutTierCount} bonuses unlocked`\n      : \"Bonus bar starts after the book\";\n  }\n  if (stickyBonusToggle) {\n    stickyBonusToggle.setAttribute(\n      \"aria-label\",\n      hasSelection\n        ? `Show bonus unlock details. ${loadout.unlocked.length} of ${loadoutTierCount} bonuses unlocked.`\n        : \"Show bonus unlock details.\"\n    );\n  }\n  const stickyButton = stickyCheckoutButton || document.querySelector(\".sticky-summary .button\");\n  if (stickyButton) {\n    stickyButton.textContent = hasSelection ? \"Checkout\" : \"Choose Codex\";\n    stickyButton.setAttribute(\"href\", hasSelection ? \"#checkout\" : \"#codex\");\n  }\n  renderLoadoutProgress();\n  updateButtons();\n}\n\nfunction getShopifyLines() {\n  const selectedApplications = getSelectedApplications();\n  const selectedDoctrines = getSelectedDoctrineKeys().map((key) => shopifyConfig.doctrines[key]);\n  const loadout = getLoadoutAttributeSummary();\n  const properties = {\n    _sc_funnel: \"Codex conversion homepage\",\n    _sc_core_choice: state.core,\n    _sc_selected_rules: getSelectedRuleKeys().join(\", \"),\n    _sc_application_mode: state.appMode,\n    _sc_application_format: state.applicationFormat,\n    _sc_discipline: state.discipline,\n    _sc_selected_applications: selectedApplications.join(\", \"),\n    _sc_selected_doctrines: selectedDoctrines.map((product) => product.label).join(\", \"),\n    _sc_unlocked_bonuses: loadout.names.join(\", \"),\n    _sc_instant_bonuses: loadout.instant.join(\", \"),\n    _sc_manual_bonuses: loadout.manual.join(\", \"),\n    _sc_highest_bonus_tier: loadout.highest\n  };\n  const lines = [];\n  if (state.core && shopifyConfig.core[state.core]) {\n    lines.push({ id: shopifyConfig.core[state.core].id, quantity: 1, properties });\n  }\n  getSelectedRuleKeys().forEach((key) => {\n    lines.push({ id: shopifyConfig.rules[key].id, quantity: 1, properties });\n  });\n  if (state.appMode === \"all\") {\n    Object.values(shopifyConfig.applications).forEach((app) => lines.push({ id: state.applicationFormat === \"physical\" ? app.physicalId : app.id, quantity: 1, properties }));\n  } else {\n    selectedApplications.forEach((name) => {\n      const app = shopifyConfig.applications[name];\n      if (app) lines.push({ id: state.applicationFormat === \"physical\" ? app.physicalId : app.id, quantity: 1, properties });\n    });\n  }\n  selectedDoctrines.forEach((product) => lines.push({ id: product.id, quantity: 1, properties }));\n  if (state.pass) lines.push({ id: shopifyConfig.pass.id, quantity: 1, selling_plan: shopifyConfig.pass.sellingPlanId, properties });\n  return lines;\n}\n\nasync function postJson(path, body) {\n  const response = await fetch(`${getRoutesRoot()}${path}`, {\n    method: \"POST\",\n    credentials: \"same-origin\",\n    headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n    body: JSON.stringify(body)\n  });\n  if (!response.ok) {\n    const text = await response.text().catch(() => \"\");\n    throw new Error(text || `Shopify request failed (${response.status})`);\n  }\n  return response.json().catch(() => null);\n}\n\nfunction buildCheckoutUrl(lead = directCheckoutLead) {\n  const params = new URLSearchParams();\n  if (lead.email) params.set(\"checkout[email]\", lead.email);\n  const [firstName, ...rest] = lead.name.split(/\\s+/).filter(Boolean);\n  if (firstName) params.set(\"checkout[shipping_address][first_name]\", firstName);\n  if (rest.length) params.set(\"checkout[shipping_address][last_name]\", rest.join(\" \"));\n  const checkoutPath = `${getRoutesRoot()}checkout${params.toString() ? `?${params.toString()}` : \"\"}`;\n  return state.appMode === \"all\" && shopifyConfig.discountCode\n    ? `${getRoutesRoot()}discount/${encodeURIComponent(shopifyConfig.discountCode)}?redirect=${encodeURIComponent(checkoutPath)}`\n    : checkoutPath;\n}\n\nfunction buildCartPermalink(lead = directCheckoutLead) {\n  const lines = getShopifyLines().filter((line) => !line.selling_plan);\n  const loadout = getLoadoutAttributeSummary();\n  const cartPath = lines.map((line) => `${line.id}:${line.quantity || 1}`).join(\",\");\n  const params = new URLSearchParams();\n  if (lead.email) params.set(\"checkout[email]\", lead.email);\n  const [firstName, ...rest] = lead.name.split(/\\s+/).filter(Boolean);\n  if (firstName) params.set(\"checkout[shipping_address][first_name]\", firstName);\n  if (rest.length) params.set(\"checkout[shipping_address][last_name]\", rest.join(\" \"));\n  params.set(\"attributes[Spiral funnel]\", \"Codex conversion homepage\");\n  if (lead.name) params.set(\"attributes[Lead name]\", lead.name);\n  if (lead.email) params.set(\"attributes[Lead email]\", lead.email);\n  if (lead.email || lead.marketingConsent) params.set(\"attributes[Marketing consent]\", lead.marketingConsent ? \"yes\" : \"no\");\n  params.set(\"attributes[Selected rules]\", getSelectedRuleKeys().join(\", \"));\n  params.set(\"attributes[Selected discipline]\", state.discipline);\n  params.set(\"attributes[Discipline selection]\", state.appMode);\n  params.set(\"attributes[Discipline format]\", getApplicationFormatLabel());\n  params.set(\"attributes[Selected disciplines]\", getSelectedApplications().join(\", \"));\n  params.set(\"attributes[Pass selected]\", state.pass ? \"yes\" : \"no\");\n  params.set(\"attributes[Unlocked bonuses]\", loadout.names.join(\", \"));\n  params.set(\"attributes[Instant bonus delivery]\", loadout.instant.join(\", \"));\n  params.set(\"attributes[Manual bonus follow-up]\", loadout.manual.join(\", \"));\n  params.set(\"attributes[Highest bonus tier]\", loadout.highest);\n  params.set(\"attributes[Bonus delivery note]\", loadout.deliveryNote);\n  const path = `${getRoutesRoot()}cart/${cartPath}?${params.toString()}`;\n  return state.appMode === \"all\" && shopifyConfig.discountCode\n    ? `${getRoutesRoot()}discount/${encodeURIComponent(shopifyConfig.discountCode)}?redirect=${encodeURIComponent(path)}`\n    : path;\n}\n\nfunction redirectToCheckout(url) {\n  if (typeof window.__SPIRAL_CHECKOUT_REDIRECT_HOOK__ === \"function\") {\n    window.__SPIRAL_CHECKOUT_REDIRECT_HOOK__(url);\n    return;\n  }\n  window.location.href = url;\n}\n\nfunction getCheckoutMethod(lines = getShopifyLines()) {\n  return lines.some((line) => line.selling_plan) ? \"ajax_cart\" : \"cart_permalink\";\n}\n\nfunction getCheckoutErrorMessage(error) {\n  const raw = error instanceof Error ? error.message : String(error || \"\");\n  if (raw.includes(\"<!DOCTYPE html\") || raw.includes(\"Verifying your connection\") || raw.includes(\"__cf_chl_\")) {\n    return \"Shopify asked to verify the connection before checkout. Please try again in your browser, or message us and we will send a direct checkout link.\";\n  }\n  return raw || \"Checkout handoff failed. Please try again.\";\n}\n\nasync function updateShopifyCartAttributes(lead = directCheckoutLead) {\n  const loadout = getLoadoutAttributeSummary();\n  const attributes = {\n    \"Spiral funnel\": \"Codex conversion homepage\",\n    \"Selected rules\": getSelectedRuleKeys().join(\", \"),\n    \"Selected discipline\": state.discipline,\n    \"Discipline selection\": state.appMode,\n    \"Discipline format\": getApplicationFormatLabel(),\n    \"Selected disciplines\": getSelectedApplications().join(\", \"),\n    \"Pass selected\": state.pass ? \"yes\" : \"no\",\n    \"Unlocked bonuses\": loadout.names.join(\", \"),\n    \"Instant bonus delivery\": loadout.instant.join(\", \"),\n    \"Manual bonus follow-up\": loadout.manual.join(\", \"),\n    \"Highest bonus tier\": loadout.highest,\n    \"Bonus delivery note\": loadout.deliveryNote\n  };\n  if (lead.name) attributes[\"Lead name\"] = lead.name;\n  if (lead.email) attributes[\"Lead email\"] = lead.email;\n  if (lead.email || lead.marketingConsent) attributes[\"Marketing consent\"] = lead.marketingConsent ? \"yes\" : \"no\";\n  await postJson(\"cart/update.js\", { attributes, note: lead.email ? `Spiral Codex funnel lead: ${lead.name} <${lead.email}>` : \"Spiral Codex direct checkout\" });\n}\n\nfunction publishEvent(name, detail = {}) {\n  const payload = { ...detail, state: { ...state }, totals: getTotals(), loadout: getLoadoutAttributeSummary() };\n  window.Shopify?.analytics?.publish?.(name, payload);\n  window.dataLayer?.push?.({ event: name, ...payload });\n  if (typeof window.clarity === \"function\") {\n    try { window.clarity(\"event\", detail.croEvent || name); } catch {}\n  }\n}\n\nasync function continueToShopifyCheckout(lead = directCheckoutLead) {\n  const lines = getShopifyLines();\n  const method = getCheckoutMethod(lines);\n  if (method === \"cart_permalink\") {\n    publishEvent(\"sc_codex_checkout_handoff\", { leadEmail: lead.email, lineCount: lines.length, method: \"cart_permalink\" });\n    redirectToCheckout(buildCartPermalink(lead));\n    return;\n  }\n  await postJson(\"cart/clear.js\", {});\n  await postJson(\"cart/add.js\", { items: lines });\n  await updateShopifyCartAttributes(lead);\n  publishEvent(\"sc_codex_checkout_handoff\", { leadEmail: lead.email, lineCount: lines.length, method: \"ajax_cart\" });\n  await new Promise((resolve) => window.setTimeout(resolve, 250));\n  redirectToCheckout(buildCheckoutUrl(lead));\n}\n\nwindow.__spiralHomepageCheckoutDebug = {\n  buildCartPermalink,\n  getCheckoutLines: getShopifyLines,\n  getCheckoutMethod,\n  getCheckoutErrorMessage,\n  redirectToCheckout\n};\n\nfunction completeLocalPreview(lead) {\n  if (checkoutForm) checkoutForm.hidden = true;\n  if (successScreen) successScreen.hidden = false;\n  renderRows(successItems, getItems(), \"success-row\");\n  const loadout = getLoadoutAttributeSummary();\n  if (loadout.names.length) {\n    successItems?.insertAdjacentHTML(\"beforeend\", `<div class=\"success-row\"><span>Unlocked bonuses</span><strong>${loadout.names.length}</strong></div>`);\n    successItems?.insertAdjacentHTML(\"beforeend\", `<div class=\"success-row\"><span>Delivery note</span><strong>${loadout.deliveryNote}</strong></div>`);\n  }\n  successItems?.insertAdjacentHTML(\"afterbegin\", `<div class=\"success-row\"><span>Captured lead</span><strong>${lead.email}</strong></div>`);\n}\n\nasync function handleCheckoutSubmit(event) {\n  event.preventDefault();\n  const lead = getLead();\n  if (!getShopifyLines().length) {\n    if (formError) formError.textContent = \"Choose at least one item before continuing.\";\n    return;\n  }\n  if (!lead.email || !lead.name) {\n    if (formError) formError.textContent = \"Add your name and email before continuing.\";\n    return;\n  }\n  if (formError) formError.textContent = \"\";\n  if (submitButton) {\n    submitButton.disabled = true;\n    submitButton.textContent = isShopifyStorefront() ? \"Building Shopify checkout...\" : \"Saving preview...\";\n  }\n  try {\n    window.localStorage?.setItem(\"spiralCodexCheckoutLead\", JSON.stringify({ ...lead, capturedAt: new Date().toISOString(), state, totals: getTotals(), loadout: getLoadoutAttributeSummary() }));\n    publishEvent(\"sc_codex_lead_captured\", { leadEmail: lead.email, marketingConsent: lead.marketingConsent });\n    if (isShopifyStorefront()) {\n      await continueToShopifyCheckout(lead);\n      return;\n    }\n    completeLocalPreview(lead);\n  } catch (error) {\n    const message = getCheckoutErrorMessage(error);\n    publishEvent(\"sc_codex_checkout_handoff_error\", { message });\n    if (formError) formError.textContent = message;\n  } finally {\n    if (submitButton) {\n      submitButton.disabled = false;\n      submitButton.textContent = \"Continue to secure checkout\";\n    }\n  }\n}\n\nasync function handleStickyCheckoutClick(event) {\n  const lines = getShopifyLines();\n  if (!lines.length) {\n    document.querySelector(\"#codex\")?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n    return;\n  }\n  event.preventDefault();\n  if (stickyCheckoutButton) {\n    stickyCheckoutButton.setAttribute(\"aria-busy\", \"true\");\n    stickyCheckoutButton.textContent = isShopifyStorefront() ? \"Opening checkout...\" : \"Checkout ready\";\n  }\n  try {\n    window.localStorage?.setItem(\"spiralCodexCheckoutState\", JSON.stringify({ capturedAt: new Date().toISOString(), state, totals: getTotals(), loadout: getLoadoutAttributeSummary() }));\n    publishEvent(\"sc_codex_direct_checkout_click\", { lineCount: lines.length, method: getCheckoutMethod(lines) });\n    if (isShopifyStorefront()) {\n      await continueToShopifyCheckout();\n      return;\n    }\n    showToast(\"Local preview: this opens Shopify checkout on the live store.\");\n  } catch (error) {\n    showToast(getCheckoutErrorMessage(error));\n    publishEvent(\"sc_codex_checkout_handoff_error\", { message: getCheckoutErrorMessage(error), source: \"sticky_cart\" });\n  } finally {\n    if (stickyCheckoutButton) {\n      stickyCheckoutButton.removeAttribute(\"aria-busy\");\n      stickyCheckoutButton.textContent = \"Checkout\";\n    }\n  }\n}\n\ndocument.querySelectorAll(\"[data-core]\").forEach((button) => {\n  button.addEventListener(\"click\", () => {\n    const nextCore = button.dataset.core === \"physical\" ? \"physical\" : \"digital\";\n    state.core = state.core === nextCore ? null : nextCore;\n    updateSummary();\n    publishEvent(\"sc_codex_core_change\", { core: state.core });\n    button.blur();\n  });\n});\n\ndocument.querySelectorAll(\"[data-get-codex]\").forEach((button) => {\n  button.addEventListener(\"click\", () => {\n    state.core = \"digital\";\n    updateSummary();\n    showToast(\"Spiral Combat Codex added.\");\n    publishEvent(\"sc_codex_primary_cta_click\", { core: state.core });\n    document.querySelector(\"#codex\")?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n    button.blur();\n  });\n});\n\ndocument.querySelectorAll(\"[data-toggle='pass']\").forEach((button) => {\n  button.addEventListener(\"click\", () => {\n    state.pass = !state.pass;\n    updateSummary();\n    showToast(state.pass ? \"Fight Intelligence Pass added.\" : \"Fight Intelligence Pass removed.\");\n    publishEvent(\"sc_codex_upsell_toggle\", { upsell: \"pass\", active: state.pass });\n    button.blur();\n  });\n});\n\ndocument.querySelectorAll(\"[data-toggle='starter']\").forEach((button) => {\n  button.addEventListener(\"click\", () => {\n    const firstThreeSelected = [\"1\", \"2\", \"3\"].every((key) => getSelectedRuleKeys().includes(key));\n    setSelectedRules(firstThreeSelected ? [] : [\"1\", \"2\", \"3\"], \"starter_rule_videos\");\n    showToast(firstThreeSelected ? \"First 3 Rule Videos removed.\" : \"First 3 Rule Videos added.\");\n    button.blur();\n  });\n});\n\ndocument.querySelectorAll(\"[data-rule-bundle]\").forEach((button) => {\n  button.addEventListener(\"click\", () => {\n    const keys = button.dataset.ruleBundle === \"all\" ? [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"] : [\"1\", \"2\", \"3\"];\n    const selected = new Set(getSelectedRuleKeys());\n    const allSelected = keys.every((key) => selected.has(key));\n    setSelectedRules(allSelected ? getSelectedRuleKeys().filter((key) => !keys.includes(key)) : keys, button.dataset.ruleBundle === \"all\" ? \"all_rule_videos\" : \"popular_rule_videos\");\n    showToast(button.dataset.ruleBundle === \"all\"\n      ? (allSelected ? \"All 6 Rule Videos removed.\" : \"All 6 Rule Videos added.\")\n      : (allSelected ? \"First 3 Rule Videos removed.\" : \"First 3 Rule Videos added.\"));\n    button.blur();\n  });\n});\n\nruleCards.forEach((card) => {\n  const select = () => {\n    toggleRule(card.dataset.rule);\n    card.blur();\n  };\n  card.addEventListener(\"click\", select);\n  card.addEventListener(\"keydown\", (event) => {\n    if (event.key === \"Enter\" || event.key === \" \") {\n      event.preventDefault();\n      select();\n    }\n  });\n});\n\ndocument.querySelectorAll(\"[data-app-mode]\").forEach((button) => {\n  button.addEventListener(\"click\", () => {\n    const requestedMode = button.dataset.appMode;\n    const selectedApplications = getSelectedApplications();\n    let nextMode = requestedMode;\n    if (requestedMode === \"all\" && state.appMode === \"all\") nextMode = \"none\";\n    if (requestedMode === \"custom\" && state.appMode === \"custom\" && selectedApplications.length) nextMode = \"none\";\n    setApplicationMode(nextMode);\n    showToast(requestedMode === \"all\"\n      ? (nextMode === \"none\" ? `All ${applicationCount} Disciplines cleared.` : `All ${applicationCount} Disciplines added.`)\n      : nextMode === \"none\"\n        ? \"Disciplines cleared.\"\n        : `${state.discipline} Discipline Codex added.`);\n    button.blur();\n  });\n});\n\napplicationFormatButtons.forEach((button) => {\n  button.addEventListener(\"click\", () => {\n    state.applicationFormat = button.dataset.appFormat === \"physical\" ? \"physical\" : \"digital\";\n    updateSummary();\n    showToast(`Discipline format: ${getApplicationFormatLabel()}.`);\n    button.blur();\n  });\n});\n\napplicationCards.forEach((card) => {\n  const select = () => {\n    toggleApplication(card.dataset.application);\n    card.blur();\n  };\n  card.addEventListener(\"click\", select);\n  card.addEventListener(\"keydown\", (event) => {\n    if (event.key === \"Enter\" || event.key === \" \") {\n      event.preventDefault();\n      select();\n    }\n  });\n});\n\napplicationAllButton?.addEventListener(\"click\", () => {\n  setApplicationMode(state.appMode === \"all\" ? \"none\" : \"all\", \"application_section_all\");\n  applicationAllButton.blur();\n});\napplicationReviewButtons.forEach((button) => button.addEventListener(\"click\", () => {\n  document.querySelector(\"#apps\")?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n  publishEvent(\"sc_codex_application_review_click\", { selectedApplications: getSelectedApplications() });\n}));\napplicationClearButtons.forEach((button) => button.addEventListener(\"click\", () => {\n  setApplicationMode(\"none\", \"application_clear\");\n  button.blur();\n}));\n\ndisciplineSelect?.addEventListener(\"change\", (event) => {\n  state.discipline = event.target.value;\n  if (state.appMode !== \"all\" && !getSelectedApplications().includes(state.discipline)) {\n    state.selectedApplications = [...getSelectedApplications(), state.discipline];\n    state.appMode = \"custom\";\n  }\n  updateSummary();\n});\n\ndoctrineButtons.forEach((button) => button.addEventListener(\"click\", () => {\n  toggleDoctrine(button.dataset.doctrine);\n  button.blur();\n}));\ndoctrineBundleButtons.forEach((button) => button.addEventListener(\"click\", () => {\n  toggleDoctrineBundle(button.dataset.doctrineBundle);\n  button.blur();\n}));\n\ndocument.querySelectorAll(\"[data-recommended]\").forEach((button) => {\n  button.addEventListener(\"click\", () => {\n    publishEvent(\"sc_codex_step_one_cta_click\", { source: \"hero_secondary\" });\n    document.querySelector(\"#codex\")?.scrollIntoView({ behavior: \"smooth\" });\n    button.blur();\n  });\n});\n\ndocument.querySelectorAll(\"[data-cro-event]\").forEach((element) => {\n  element.addEventListener(\"click\", () => {\n    publishEvent(\"sc_codex_cro_navigation_click\", { croEvent: element.dataset.croEvent, label: element.textContent.trim(), href: element.getAttribute(\"href\") || \"\" });\n  });\n});\n\ncheckoutForm?.addEventListener(\"submit\", handleCheckoutSubmit);\nstickyCheckoutButton?.addEventListener(\"click\", handleStickyCheckoutClick);\nstickyCartItems?.addEventListener(\"click\", (event) => {\n  const removeButton = event.target.closest(\"[data-sticky-remove-type]\");\n  if (!removeButton) return;\n  event.preventDefault();\n  event.stopPropagation();\n  removeStickyCartItem(removeButton.dataset.stickyRemoveType, removeButton.dataset.stickyRemoveKey);\n});\nstickyCartToggle?.addEventListener(\"click\", () => {\n  stickyCartExpanded = !stickyCartExpanded;\n  if (!stickyCartExpanded && stickyBonusPanel && stickyBonusToggle) {\n    stickyBonusToggle.setAttribute(\"aria-expanded\", \"false\");\n    stickyBonusPanel.hidden = true;\n  }\n  updateSummary();\n});\nstickyBonusToggle?.addEventListener(\"click\", () => {\n  const isExpanded = stickyBonusToggle.getAttribute(\"aria-expanded\") === \"true\";\n  stickyBonusToggle.setAttribute(\"aria-expanded\", String(!isExpanded));\n  if (stickyBonusPanel) stickyBonusPanel.hidden = isExpanded;\n});\ndocument.querySelector(\"#edit-order\")?.addEventListener(\"click\", () => {\n  if (checkoutForm) checkoutForm.hidden = false;\n  if (successScreen) successScreen.hidden = true;\n  document.querySelector(\"#codex\")?.scrollIntoView({ behavior: \"smooth\" });\n});\n\nupdateSummary();\n"],
  "mappings": "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",
  "names": []
}
