{
  "version": 3,
  "sources": ["/cdn/shop/t/82/assets/fta-bioregulator-chooser.js?fta_email=20260921"],
  "sourcesContent": ["(() => {\n  const guidanceUrl = 'https://www.fortheageless.com/pages/contact-us';\n  let goalsNeedPreselection=true;\n  let renderedProgramme=null;\n  let privateDraftTimer;\n  const PRIVATE_DRAFT_IDLE_MS=30*60*1000;\n  let maxStepReached=1;\n  let currentStep=1;\n  let currentProgramme=null;\n  let includeWorthIncluding=true;\n  let preservedPrivateDraft=null;\n  let areasWerePreselected=false;\n  let serverSession=null;\n  let serverVersion=0;\n  let serverGoalsKey='';\n  let serverAreasKey='';\n  let sessionStartPromise=null;\n  let actionInFlight=false;\n  let busyButtonStates=[];\n  let turnstileWidgetId=null;\n  let turnstilePending=null;\n  const prefersReducedMotion=window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  const goals = [\n    ['healthy-ageing','Healthy ageing & longevity'],\n    ['energy','Energy & fitness'],\n    ['sleep','Sleep & calm'],\n    ['memory','Memory & focus'],\n    ['metabolic','Metabolic balance'],\n    ['immune','Immune support'],\n    ['mobility','Mobility & recovery'],\n    ['digestive','Digestive comfort'],\n    ['general','General wellbeing / I\u2019m not sure']\n  ];\n\n  const groups = [\n    ['Endocrine',['Pineal','Adrenal','Thyroid','Parathyroid']],\n    ['Immune & vision',['Thymus','Bone Marrow','Retina']],\n    ['Brain, nerves & movement',['Brain / CNS','Muscle','Cartilage']],\n    ['Heart, circulation & lungs',['Heart','Blood Vessel','Lungs']],\n    ['Digestion & metabolism',['Stomach','Liver','Pancreas']],\n    ['Urinary & reproductive',['Kidney','Bladder','Ovaries','Prostate','Testes']]\n  ];\n\n  const goalNames = Object.fromEntries(goals);\n  let selectedGoals = new Set();\n  let selectedAreas = new Set();\n  let areaUnsure = false;\n\n  const chooser = document.getElementById('chooser');\n  const closeBtn = document.getElementById('closeBtn');\n  const toStep2 = document.getElementById('toStep2');\n  const showResults = document.getElementById('showResults');\n\n  const areaIds = new Set(groups.flatMap(([,items])=>items));\n  const serviceStatus = document.getElementById('chooserServiceStatus');\n  const turnstileContainer = document.getElementById('ftaChooserTurnstile');\n  const apiRoot = chooser?.dataset.apiRoot || '/apps/fta-chooser/chooser';\n  const proxyRoot = apiRoot.replace(/\\/chooser\\/?$/,'');\n  const turnstileSitekey = chooser?.dataset.turnstileSitekey || '';\n\n  class ChooserRequestError extends Error {\n    constructor(status=0){ super('Chooser request failed'); this.status=status; }\n  }\n\n  function exactObject(value){ return !!value && typeof value==='object' && !Array.isArray(value); }\n  function boundedText(value,maximum){\n    if(typeof value!=='string'||value.length>maximum) throw new ChooserRequestError();\n    return value;\n  }\n  function requiredText(value,maximum){\n    const text=boundedText(value,maximum);\n    if(!text.trim()) throw new ChooserRequestError();\n    return text;\n  }\n  function naturalNumber(value,maximum=100){\n    if(!Number.isInteger(value)||value<0||value>maximum) throw new ChooserRequestError();\n    return value;\n  }\n  function validateVersion(value){ return naturalNumber(value,24); }\n  function validateType(value){\n    if(!exactObject(value)||!areaIds.has(value.key)) throw new ChooserRequestError();\n    return {key:value.key,name:requiredText(value.name,80)};\n  }\n  function validateCard(value){\n    if(!exactObject(value)||!areaIds.has(value.key)) throw new ChooserRequestError();\n    const image=boundedText(value.image,500);\n    let parsed;\n    try{ parsed=new URL(image); }catch{ throw new ChooserRequestError(); }\n    if(parsed.protocol!=='https:'||parsed.hostname!=='cdn.shopify.com') throw new ChooserRequestError();\n    return {\n      key:value.key,\n      name:requiredText(value.name,80),\n      relationship:requiredText(value.relationship,80),\n      rationale:requiredText(value.rationale,600),\n      image:parsed.href\n    };\n  }\n  function validateProgrammeResponse(value){\n    if(!exactObject(value)||!exactObject(value.recommendations)||!exactObject(value.programme)) throw new ChooserRequestError();\n    if(!Array.isArray(value.recommendations.primary)||!Array.isArray(value.recommendations.worthIncluding)) throw new ChooserRequestError();\n    const primary=value.recommendations.primary.map(validateCard);\n    const worthIncluding=value.recommendations.worthIncluding.map(validateCard);\n    const cardKeys=[...primary,...worthIncluding].map(card=>card.key);\n    if(cardKeys.length>21||new Set(cardKeys).size!==cardKeys.length) throw new ChooserRequestError();\n    const programme=value.programme;\n    if(!Array.isArray(programme.groups)||!programme.groups.length||programme.groups.length>11) throw new ChooserRequestError();\n    const groupTypeKeys=[];\n    const programmeGroups=programme.groups.map((group,index)=>{\n      if(!exactObject(group)||group.month!==index+1||!Array.isArray(group.types)||!group.types.length||group.types.length>6) throw new ChooserRequestError();\n      const types=group.types.map(validateType);\n      groupTypeKeys.push(...types.map(type=>type.key));\n      return {\n        month:group.month,\n        theme:boundedText(group.theme,120),\n        title:requiredText(group.title,180),\n        label:requiredText(group.label,220),\n        types\n      };\n    });\n    if(new Set(groupTypeKeys).size!==groupTypeKeys.length||groupTypeKeys.some(key=>!cardKeys.includes(key))) throw new ChooserRequestError();\n    if(typeof programme.isMultiMonth!=='boolean'||typeof programme.selectedProgrammeIsMultiMonth!=='boolean') throw new ChooserRequestError();\n    if(!exactObject(programme.month1)||!exactObject(programme.full)||!exactObject(programme.cycling)) throw new ChooserRequestError();\n    const month1={typeCount:naturalNumber(programme.month1.typeCount,6),packCount:naturalNumber(programme.month1.packCount,18)};\n    const full={typeCount:naturalNumber(programme.full.typeCount,21),packCount:naturalNumber(programme.full.packCount,63)};\n    if(month1.typeCount!==programmeGroups[0].types.length||month1.packCount!==month1.typeCount*3||full.typeCount!==groupTypeKeys.length||full.packCount!==full.typeCount*3) throw new ChooserRequestError();\n    const cycling={\n      starting:requiredText(programme.cycling.starting,400),\n      maintenance:requiredText(programme.cycling.maintenance,600),\n      when:requiredText(programme.cycling.when,600),\n      planner:requiredText(programme.cycling.planner,300)\n    };\n    return {\n      recommendations:{primary,worthIncluding},\n      insightHtml:requiredText(value.insightHtml,3000),\n      programme:{\n        isMultiMonth:programme.isMultiMonth,\n        selectedProgrammeIsMultiMonth:programme.selectedProgrammeIsMultiMonth,\n        groups:programmeGroups,\n        broadGuidance:boundedText(programme.broadGuidance,500),\n        month1,full,cycling\n      }\n    };\n  }\n  function validateResultEnvelope(value){\n    if(!exactObject(value)||!/^[-_A-Za-z0-9]{43}$/.test(value.programmeId||'')) throw new ChooserRequestError();\n    return {version:validateVersion(value.version),programmeId:value.programmeId,result:validateProgrammeResponse(value.result)};\n  }\n  function setServiceStatus(message=''){\n    if(!serviceStatus) return;\n    serviceStatus.textContent=message;\n    serviceStatus.hidden=!message;\n  }\n  function setRequestBusy(busy){\n    chooser.setAttribute('aria-busy',String(busy));\n    if(busy){\n      busyButtonStates=[...chooser.querySelectorAll('button')]\n        .filter(button=>button!==closeBtn)\n        .map(button=>[button,button.disabled]);\n      busyButtonStates.forEach(([button])=>{ button.disabled=true; });\n    }else{\n      busyButtonStates.forEach(([button,disabled])=>{ if(button.isConnected) button.disabled=disabled; });\n      busyButtonStates=[];\n      updateProgress(currentStep);\n      toStep2.disabled=selectedGoals.size===0;\n      updateResultButton();\n    }\n  }\n  async function runAction(action){\n    if(actionInFlight) return null;\n    actionInFlight=true;\n    setRequestBusy(true);\n    setServiceStatus();\n    try{ return await action(); }\n    finally{ actionInFlight=false; setRequestBusy(false); }\n  }\n  async function waitForTurnstile(){\n    const started=Date.now();\n    while(!window.turnstile){\n      if(Date.now()-started>10000) throw new ChooserRequestError();\n      await new Promise(resolve=>window.setTimeout(resolve,50));\n    }\n    return window.turnstile;\n  }\n  async function turnstileToken(){\n    const turnstile=await waitForTurnstile();\n    if(!turnstileContainer||!turnstileSitekey||turnstilePending) throw new ChooserRequestError();\n    return new Promise((resolve,reject)=>{\n      const timeout=window.setTimeout(()=>{\n        if(turnstilePending){ turnstilePending=null; reject(new ChooserRequestError()); }\n      },15000);\n      turnstilePending={\n        resolve:token=>{ window.clearTimeout(timeout); turnstilePending=null; resolve(token); },\n        reject:()=>{ window.clearTimeout(timeout); turnstilePending=null; reject(new ChooserRequestError()); }\n      };\n      const success=token=>turnstilePending?.resolve(token);\n      const failure=()=>turnstilePending?.reject();\n      if(turnstileWidgetId===null){\n        turnstileWidgetId=turnstile.render(turnstileContainer,{\n          sitekey:turnstileSitekey,\n          action:'fta-chooser-start',\n          execution:'execute',\n          callback:success,\n          'error-callback':failure,\n          'expired-callback':failure,\n          'timeout-callback':failure\n        });\n      }else{\n        turnstile.reset(turnstileWidgetId);\n      }\n      turnstile.execute(turnstileWidgetId);\n    });\n  }\n  async function postJson(path,body){\n    const controller=new AbortController();\n    const timeout=window.setTimeout(()=>controller.abort(),20000);\n    let response;\n    try{\n      response=await fetch(`${apiRoot}/${path}`,{\n        method:'POST',\n        credentials:'same-origin',\n        headers:{'content-type':'application/json','accept':'application/json'},\n        body:JSON.stringify(body),\n        signal:controller.signal\n      });\n    }catch{ throw new ChooserRequestError(); }\n    finally{ window.clearTimeout(timeout); }\n    let payload;\n    try{ payload=await response.json(); }catch{ throw new ChooserRequestError(response.status); }\n    if(!response.ok) throw new ChooserRequestError(response.status);\n    if(!exactObject(payload)) throw new ChooserRequestError();\n    return payload;\n  }\n  async function postEmailStart(body){\n    const controller=new AbortController();\n    const timeout=window.setTimeout(()=>controller.abort(),20000);\n    let response;\n    try{\n      response=await fetch(`${proxyRoot}/email/start`,{\n        method:'POST',\n        credentials:'same-origin',\n        headers:{'content-type':'application/json','accept':'application/json'},\n        body:JSON.stringify(body),\n        signal:controller.signal\n      });\n    }catch{ throw new ChooserRequestError(); }\n    finally{ window.clearTimeout(timeout); }\n    let payload;\n    try{ payload=await response.json(); }catch{ throw new ChooserRequestError(response.status); }\n    if(!response.ok) throw new ChooserRequestError(response.status);\n    if(!exactObject(payload)||Object.keys(payload).join(',')!=='status'||payload.status!=='verification_required') throw new ChooserRequestError();\n    return payload;\n  }\n  function clearServerSession(){\n    serverSession=null;\n    serverVersion=0;\n    serverGoalsKey='';\n    serverAreasKey='';\n  }\n  async function createServerSession(){\n    const token=await turnstileToken();\n    const payload=await postJson('start',{turnstileToken:token});\n    if(!/^[-_A-Za-z0-9]{43}$/.test(payload.sessionId||'')||payload.version!==0) throw new ChooserRequestError();\n    serverSession=payload.sessionId;\n    serverVersion=0;\n    serverGoalsKey='';\n    serverAreasKey='';\n    return serverSession;\n  }\n  async function ensureServerSession(){\n    if(serverSession) return serverSession;\n    if(!sessionStartPromise) sessionStartPromise=createServerSession().finally(()=>{ sessionStartPromise=null; });\n    return sessionStartPromise;\n  }\n  function goalsKey(){ return JSON.stringify([...selectedGoals]); }\n  function areasKey(){ return JSON.stringify({areas:[...selectedAreas],unsure:areaUnsure}); }\n  async function syncGoals(){\n    await ensureServerSession();\n    const key=goalsKey();\n    if(serverGoalsKey===key) return null;\n    const payload=await postJson('step',{action:'goals',sessionId:serverSession,version:serverVersion,goals:[...selectedGoals]});\n    if(!Array.isArray(payload.preselectedAreas)||payload.preselectedAreas.some(area=>!areaIds.has(area))||new Set(payload.preselectedAreas).size!==payload.preselectedAreas.length) throw new ChooserRequestError();\n    serverVersion=validateVersion(payload.version);\n    serverGoalsKey=key;\n    serverAreasKey='';\n    return payload.preselectedAreas;\n  }\n  async function syncAreas(){\n    await syncGoals();\n    const key=areasKey();\n    if(serverAreasKey===key) return;\n    const payload=await postJson('step',{action:'areas',sessionId:serverSession,version:serverVersion,areas:[...selectedAreas],unsure:areaUnsure});\n    serverVersion=validateVersion(payload.version);\n    serverAreasKey=key;\n  }\n  async function requestPreselection(){\n    try{ return await syncGoals(); }\n    catch(error){\n      if(error instanceof ChooserRequestError&&(error.status===0||error.status===401||error.status===409)){\n        clearServerSession();\n        return syncGoals();\n      }\n      throw error;\n    }\n  }\n  async function rebuildServerResult(includeWorth){\n    clearServerSession();\n    await ensureServerSession();\n    await syncAreas();\n    let envelope=validateResultEnvelope(await postJson('result',{sessionId:serverSession,version:serverVersion}));\n    serverVersion=envelope.version;\n    if(!includeWorth){\n      envelope=validateResultEnvelope(await postJson('step',{action:'worth',sessionId:serverSession,version:serverVersion,include:false}));\n      serverVersion=envelope.version;\n    }\n    return envelope;\n  }\n  async function requestServerResult(includeWorth,worthUpdate=false){\n    try{\n      await syncAreas();\n      const path=worthUpdate?'step':'result';\n      const body=worthUpdate\n        ? {action:'worth',sessionId:serverSession,version:serverVersion,include:includeWorth}\n        : {sessionId:serverSession,version:serverVersion};\n      const envelope=validateResultEnvelope(await postJson(path,body));\n      serverVersion=envelope.version;\n      return envelope;\n    }catch(error){\n      if(error instanceof ChooserRequestError&&(error.status===0||error.status===401||error.status===409)) return rebuildServerResult(includeWorth);\n      throw error;\n    }\n  }\n  function programmeFromEnvelope(envelope){\n    return {\n      programmeId:envelope.programmeId,\n      recommendations:envelope.result.recommendations,\n      insightHtml:envelope.result.insightHtml,\n      programme:envelope.result.programme,\n      programmeGroups:envelope.result.programme.groups,\n      selections:{goals:[...selectedGoals],areas:[...selectedAreas]}\n    };\n  }\n\n  function renderGoals(){\n    const grid=document.getElementById('goalGrid');\n    grid.innerHTML=goals.map(([id,label])=>`\n      <button type=\"button\" class=\"choice\" data-goal=\"${id}\" aria-pressed=\"false\">\n        <span class=\"choice-dot\" aria-hidden=\"true\"></span><span>${label}</span>\n      </button>`).join('');\n\n    grid.addEventListener('click',e=>{\n      const btn=e.target.closest('[data-goal]');\n      if(!btn) return;\n      const id=btn.dataset.goal;\n\n      if(id==='general'){\n        const turnOn=!selectedGoals.has('general');\n        selectedGoals.clear();\n        if(turnOn) selectedGoals.add('general');\n      }else{\n        selectedGoals.delete('general');\n        if(selectedGoals.has(id)) selectedGoals.delete(id); else selectedGoals.add(id);\n      }\n\n      grid.querySelectorAll('[data-goal]').forEach(goalBtn=>{\n        goalBtn.setAttribute('aria-pressed',selectedGoals.has(goalBtn.dataset.goal));\n      });\n      toStep2.disabled=selectedGoals.size===0;\n      goalsNeedPreselection=true;\n      invalidateAfter(1);\n    });\n  }\n\n\n  function displayType(type){\n    const name=exactObject(type)?type.name:type;\n    return name==='Brain / CNS' ? 'Brain/CNS' : name;\n  }\n\n  function typeKey(type){ return exactObject(type)?type.key:type; }\n\n  function groupItems(label){\n    const group=groups.find(g=>g[0]===label);\n    return group ? group[1] : [];\n  }\n\n  function syncGroupButtons(){\n    chooser.querySelectorAll('[data-group]').forEach(btn=>{\n      const items=groupItems(btn.dataset.group);\n      const allSelected=items.length && items.every(item=>selectedAreas.has(item));\n      const selectedCount=items.filter(item=>selectedAreas.has(item)).length;\n      btn.setAttribute('aria-pressed', allSelected?'true':selectedCount?'mixed':'false');\n      const action=btn.querySelector('.group-action');\n      if(action) action.textContent=allSelected ? 'Whole area selected' : selectedCount ? `${selectedCount} of ${items.length} selected` : `Select all ${items.length}`;\n      btn.title=allSelected?`Deselect every type in ${btn.dataset.group}`:`Select every type in ${btn.dataset.group}`;\n    });\n  }\n\n  function renderAreas(){\n    const root = document.getElementById('areaGroups');\n    root.innerHTML = groups.map(([label,items]) => `\n      <div class=\"area-row\">\n        <div class=\"area-label\">\n          <button class=\"group-choice\" type=\"button\" data-group=\"${label}\" aria-pressed=\"false\" title=\"Select every type in ${label}\">\n            <strong>${label}</strong><span class=\"group-action\">Select all ${items.length}</span>\n          </button>\n        </div>\n        <div class=\"chips\">${items.map(item => `<button class=\"chip\" type=\"button\" data-area=\"${item}\" aria-pressed=\"false\">${displayType(item)}</button>`).join('')}</div>\n      </div>`).join('');\n    root.addEventListener('click', e => {\n      const groupBtn=e.target.closest('[data-group]');\n      if(groupBtn){\n        const items=groupItems(groupBtn.dataset.group);\n        const allSelected=items.every(item=>selectedAreas.has(item));\n        items.forEach(item=>{\n          if(allSelected) selectedAreas.delete(item); else selectedAreas.add(item);\n          const chip=root.querySelector(`[data-area=\"${item}\"]`);\n          if(chip) chip.setAttribute('aria-pressed', !allSelected);\n        });\n        if(selectedAreas.size) areaUnsure=false;\n        syncGroupButtons();\n        updateResultButton();\n        invalidateAfter(2);\n        return;\n      }\n      const btn = e.target.closest('[data-area]'); if(!btn) return;\n      const item = btn.dataset.area;\n      if(selectedAreas.has(item)) selectedAreas.delete(item); else selectedAreas.add(item);\n      btn.setAttribute('aria-pressed', selectedAreas.has(item));\n      if(selectedAreas.size) areaUnsure=false;\n      syncGroupButtons();\n      updateResultButton();\n      invalidateAfter(2);\n    });\n  }\n\n  function updateResultButton(){ showResults.disabled = selectedAreas.size === 0 && !areaUnsure; }\n\n  function preselectAreasFromGoals(preselectedAreas){\n    selectedAreas=new Set(preselectedAreas);\n    areaUnsure=false;\n    areasWerePreselected=selectedAreas.size>0;\n    goalsNeedPreselection=false;\n    chooser.querySelectorAll('[data-area]').forEach(btn=>btn.setAttribute('aria-pressed',selectedAreas.has(btn.dataset.area)));\n    syncGroupButtons();\n    updateResultButton();\n    updateStep2Context();\n  }\n\n  function humanList(items){\n    const a=[...items];\n    if(a.length===0) return '';\n    if(a.length===1) return a[0];\n    if(a.length===2) return `${a[0]} and ${a[1]}`;\n    return `${a.slice(0,-1).join(', ')}, and ${a[a.length-1]}`;\n  }\n\n  function updateStep2Context(){\n    const goalLabels=[...selectedGoals].map(g=>goalNames[g]).filter(Boolean);\n    const context=document.getElementById('step2Context');\n    const title=document.getElementById('step2title');\n    const prompt=document.getElementById('step2BottomPrompt');\n    const done=document.getElementById('doneAreas');\n    if(!context||!title||!prompt||!done) return;\n\n    if(areasWerePreselected){\n      title.textContent='Which other areas would you like to focus on?';\n      context.textContent=`You chose ${humanList(goalLabels)}. We\u2019ve preselected the closest areas for you.`;\n      prompt.textContent='No other areas to add?';\n      done.textContent='That\u2019s it';\n    }else{\n      title.textContent='Which areas would you like to focus on?';\n      context.textContent=selectedGoals.has('general')\n        ? 'Choose an area if one feels relevant. We\u2019d rather not guess if you\u2019re unsure.'\n        : `You chose ${humanList(goalLabels)}. Choose any area that feels relevant.`;\n      prompt.textContent='Not sure which area fits?';\n      done.textContent='I\u2019m not sure';\n    }\n  }\n\n\n  function scrollBehaviour(){ return prefersReducedMotion?'auto':'smooth'; }\n\n  function focusStepHeading(n){\n    const section=stepElement(n);\n    if(!section) return;\n    const heading=section.querySelector('h2,h3,h4');\n    if(!heading) return;\n    if(!heading.hasAttribute('tabindex')) heading.setAttribute('tabindex','-1');\n    heading.focus({preventScroll:true});\n  }\n\n  function scrollToChooserAndFocus(n){\n    // Screen replacement is immediate: avoid delayed focus and moving click targets.\n    chooser.scrollIntoView({behavior:'instant',block:'start'});\n    focusStepHeading(n);\n  }\n\n  function openChooser(){\n    document.getElementById('compactView').hidden=true;\n    chooser.classList.add('open');\n    document.getElementById('startBtn').setAttribute('aria-expanded','true');\n    closeBtn.hidden=false;\n    maxStepReached=Math.max(maxStepReached,currentStep);\n    showScreen(currentStep,true);\n  }\n\n  function closeChooser(){\n    document.getElementById('compactView').hidden=false;\n    chooser.classList.remove('open');\n    document.getElementById('startBtn').setAttribute('aria-expanded','false');\n    closeBtn.hidden=true;\n    document.getElementById('startBtn')?.focus({preventScroll:true});\n  }\n\n  function stepElement(n){ return document.getElementById(n===1?'step1':n===2?'step2':n===3?'results':'programme'); }\n\n  function updateProgress(n){\n    chooser.querySelectorAll('.progress-item').forEach((p,i)=>{\n      const step=i+1,available=step<=maxStepReached;\n      p.disabled=!available;\n      p.classList.toggle('current',step===n);\n      p.classList.toggle('done',step<n&&available);\n      if(step===n) p.setAttribute('aria-current','step'); else p.removeAttribute('aria-current');\n    });\n  }\n\n  function showScreen(n,moveFocus=true){\n    if(n>maxStepReached) return;\n    currentStep=n;\n    chooser.querySelectorAll('.screen').forEach(s=>{s.classList.remove('active');s.hidden=true;});\n    stepElement(n).hidden=false;\n    stepElement(n).classList.add('active');\n    updateProgress(n);\n    if(moveFocus) scrollToChooserAndFocus(n);\n  }\n\n  function reachStep(n){ maxStepReached=Math.max(maxStepReached,n); showScreen(n,true); }\n\n  function invalidateAfter(step){\n    if(maxStepReached>step) maxStepReached=step;\n    if(currentStep>step) currentStep=step;\n    currentProgramme=null;\n    // Keep the optional contact draft in this tab when answers change; it is never stored.\n    // The programme view is refreshed before it can be visited again.\n    updateProgress(currentStep);\n  }\n\n  function jumpToFreeGuidance(){\n    const direct=document.querySelector('#free-guidance,#free_guidance,#free-programme-guidance,#free_programme_guidance,[id*=\"free-guidance\" i],[id*=\"free_guidance\" i],[id*=\"free-programme-guidance\" i],[id*=\"free_programme_guidance\" i]');\n    const heading=[...document.querySelectorAll('h2,h3,h4')].find(el=>!chooser.contains(el)&&/free(?:\\s+programme)?\\s+guidance/i.test(el.textContent||''));\n    const target=direct||heading;\n    if(target){\n      const focusTarget=target.matches('h2,h3,h4')?target:target.querySelector('h2,h3,h4,a,button')||target;\n      if(!focusTarget.hasAttribute('tabindex')) focusTarget.setAttribute('tabindex','-1');\n      target.scrollIntoView({behavior:scrollBehaviour(),block:'start'});\n      focusTarget.focus({preventScroll:true});\n      return;\n    }\n    // Real destination for the standalone file. Never include answers or notes in a URL.\n    const link=document.createElement('a');\n    link.href=guidanceUrl;\n    link.target='_blank';\n    link.rel='noopener noreferrer';\n    document.body.append(link);\n    link.click();\n    link.remove();\n  }\n\n  function programmeDisplayHeading(group){ return group?.title||''; }\n\n  function groupDisplayLabel(group){ return group?.label||`Month ${group?.month||1}`; }\n\n  function programmeBroadGuidance(programmeData){\n    return programmeData?.programme?.broadGuidance||'';\n  }\n\n  function sanitisedInsightHtml(value){\n    const template=document.createElement('template');\n    template.innerHTML=value;\n    const paragraphs=[...template.content.querySelectorAll('p')].map(paragraph=>paragraph.textContent.trim()).filter(Boolean);\n    return paragraphs.map(paragraph=>`<p>${escapeHtml(paragraph)}</p>`).join('');\n  }\n\n  function courseNoteHtml(programmeData=currentProgramme){\n    const cycling=programmeData?.programme?.cycling;\n    if(!cycling) return '';\n    return `<details class=\"course-note programme-cycle-note\">\n      <summary>How to take and cycle your programme</summary>\n      <div class=\"course-note-body\">\n        <p><strong>Starting each type:</strong> ${escapeHtml(cycling.starting)}</p>\n        <p><strong>Maintenance:</strong> ${escapeHtml(cycling.maintenance)}</p>\n        <p><strong>When to take them:</strong> ${escapeHtml(cycling.when)}</p>\n      </div>\n    </details>`;\n  }\n\n\n  function orderPanelHtml(programmeData){\n    const groupsData=programmeData?.programmeGroups||[];\n    if(!groupsData.length) return '';\n    const month1=programmeData.programme.month1;\n    const full=programmeData.programme.full;\n    const fullAvailable=groupsData.length>1;\n    return `<div class=\"shop-panel\">\n      <p class=\"shop-intro\">Each intensive course uses 3 packs of each bioregulator type; maintenance packs are separate.</p>\n      <div class=\"shop-options\" role=\"group\" aria-label=\"Choose what to add to your basket\">\n        <button class=\"order-action\" type=\"button\" data-order-option=\"month1\" aria-pressed=\"false\">\n          <strong>Month 1 intensive</strong><span>${month1.typeCount} ${month1.typeCount===1?'type':'types'} \u00B7 ${month1.packCount} packs</span>\n        </button>\n        ${fullAvailable?`<button class=\"order-action\" type=\"button\" data-order-option=\"all\" aria-pressed=\"false\">\n          <strong>Full intensive</strong><span>${full.typeCount} types \u00B7 ${full.packCount} packs</span>\n        </button>`:''}\n      </div>\n      <div class=\"basket-contents\" data-basket-contents hidden aria-live=\"polite\"></div>\n      <label class=\"planner-request\"><input type=\"checkbox\" data-planner-request><span>Receive an email copy of your programme with a free calendar for maintenance.</span></label>\n      <p class=\"shop-offer\"><strong>BIOREG-OFFER</strong> gives you 17% off three or more bioregulator packs and will be applied automatically.</p>\n      <button class=\"primary order-choice-confirm\" type=\"button\" data-add-selected disabled>Choose an option</button>\n      <div class=\"cart-status\" role=\"status\" aria-live=\"polite\"></div>\n    </div>`;\n  }\n\n  function programmeEntries(programmeData,selection){\n    const groupsData=programmeData?.programmeGroups||[];\n    const selectedGroups=selection==='month1'?groupsData.slice(0,1):groupsData;\n    return selectedGroups.flatMap(group=>group.types.map(type=>({\n      type:type.key,\n      name:displayType(type),\n      month:group.month,\n      theme:group.theme,\n      groupLabel:groupDisplayLabel(group)\n    })));\n  }\n\n  function renderBasketStatus(statusEl,message){\n    statusEl.textContent=message;\n  }\n\n  function validateCartPlan(value,selection,programmeData){\n    if(!exactObject(value)||value.selection!==selection||!Array.isArray(value.items)) throw new ChooserRequestError();\n    if(Object.keys(value).sort().join(',')!=='items,packCount,selection,typeCount') throw new ChooserRequestError();\n    const maximum=selection==='month1'?6:21;\n    if(value.items.length<1||value.items.length>maximum) throw new ChooserRequestError();\n    const items=value.items.map(item=>{\n      if(!exactObject(item)||Object.keys(item).sort().join(',')!=='id,quantity'||!Number.isSafeInteger(item.id)||item.id<1||item.quantity!==3) throw new ChooserRequestError();\n      return {id:item.id,quantity:3};\n    });\n    if(new Set(items.map(item=>item.id)).size!==items.length) throw new ChooserRequestError();\n    const expected=selection==='month1'?programmeData.programme.month1:programmeData.programme.full;\n    if(value.typeCount!==items.length||value.packCount!==items.length*3||value.typeCount!==expected.typeCount||value.packCount!==expected.packCount) throw new ChooserRequestError();\n    return {selection,items,typeCount:value.typeCount,packCount:value.packCount};\n  }\n\n  async function requestCartPlan(programmeData,selection){\n    const request=()=>postJson('cart',{sessionId:serverSession,programmeId:programmeData.programmeId,selection:selection==='month1'?'month1':'full'});\n    try{ return validateCartPlan(await request(),selection==='month1'?'month1':'full',programmeData); }\n    catch(error){\n      if(!(error instanceof ChooserRequestError)||(error.status!==0&&error.status!==401&&error.status!==409)) throw error;\n      const envelope=await rebuildServerResult(includeWorthIncluding);\n      programmeData.programmeId=envelope.programmeId;\n      return validateCartPlan(await request(),selection==='month1'?'month1':'full',programmeData);\n    }\n  }\n\n  function cartRoot(){\n    const root=window.Shopify?.routes?.root;\n    if(typeof root!=='string'||!root.startsWith('/')||!root.endsWith('/')) throw new ChooserRequestError();\n    return root;\n  }\n\n  async function cartJson(path,options={}){\n    const controller=new AbortController();\n    const timeout=window.setTimeout(()=>controller.abort(),20000);\n    let response;\n    try{\n      response=await fetch(`${cartRoot()}${path}`,{\n        method:options.method||'GET',\n        credentials:'same-origin',\n        headers:{'accept':'application/json',...(options.body?{'content-type':'application/json'}:{})},\n        body:options.body?JSON.stringify(options.body):undefined,\n        signal:controller.signal\n      });\n    }catch{ throw new ChooserRequestError(); }\n    finally{ window.clearTimeout(timeout); }\n    let payload;\n    try{ payload=await response.json(); }catch{ throw new ChooserRequestError(response.status); }\n    if(!response.ok) throw new ChooserRequestError(response.status);\n    return payload;\n  }\n\n  function validateCart(value){\n    if(!exactObject(value)||!Array.isArray(value.items)||!Number.isSafeInteger(value.item_count)||value.item_count<0) throw new ChooserRequestError();\n    const items=value.items.map(item=>{\n      if(!exactObject(item)||!Number.isSafeInteger(item.variant_id)||item.variant_id<1||!Number.isSafeInteger(item.quantity)||item.quantity<0) throw new ChooserRequestError();\n      return {variantId:item.variant_id,quantity:item.quantity};\n    });\n    return {raw:value,items,itemCount:value.item_count};\n  }\n\n  function cartQuantities(cart){\n    const quantities=new Map();\n    cart.items.forEach(item=>quantities.set(item.variantId,(quantities.get(item.variantId)||0)+item.quantity));\n    return quantities;\n  }\n\n  function cartSatisfies(plan,cart){\n    const quantities=cartQuantities(cart);\n    return plan.items.every(item=>(quantities.get(item.id)||0)>=item.quantity);\n  }\n\n  function announceCart(cart){\n    document.querySelectorAll('.cart_count').forEach(counter=>{\n      counter.textContent=String(cart.itemCount);\n      counter.classList.remove('hidden-count');\n    });\n    document.dispatchEvent(new CustomEvent('cart:update',{bubbles:true,detail:{resource:cart.raw,sourceId:'fta-bioregulator-chooser',data:{source:'fta-bioregulator-chooser',itemCount:cart.itemCount}}}));\n  }\n\n  async function reconcileCart(plan){\n    const before=validateCart(await cartJson('cart.js'));\n    const quantities=cartQuantities(before);\n    const additions=plan.items.map(item=>({id:item.id,quantity:Math.max(0,item.quantity-(quantities.get(item.id)||0))})).filter(item=>item.quantity>0);\n    if(!additions.length){ announceCart(before); return {cart:before,added:false}; }\n    let writeFailed=false;\n    try{ await cartJson('cart/add.js',{method:'POST',body:{items:additions}}); }\n    catch{ writeFailed=true; }\n    let confirmed;\n    try{ confirmed=validateCart(await cartJson('cart.js')); }\n    catch{ throw new ChooserRequestError(); }\n    if(!cartSatisfies(plan,confirmed)) throw new ChooserRequestError(writeFailed?0:422);\n    announceCart(confirmed);\n    return {cart:confirmed,added:true};\n  }\n\n  function wireOrderPanel(root,programmeData){\n    const panel=root.querySelector('.shop-panel');\n    if(!panel) return;\n    const status=panel.querySelector('.cart-status');\n    const planner=panel.querySelector('[data-planner-request]');\n    const addButton=panel.querySelector('[data-add-selected]');\n    const programmeCards=[...root.querySelectorAll('[data-programme-month]')];\n    const basketContents=panel.querySelector('[data-basket-contents]');\n    let selectedOption=null;\n    let cartRequestInFlight=false;\n\n    function setProgrammeHighlight(option){\n      programmeCards.forEach(card=>{\n        const month=Number(card.dataset.programmeMonth);\n        card.classList.toggle('is-shop-selected',option==='all'||(option==='month1'&&month===1));\n      });\n    }\n\n    function renderBasketContents(option){\n      if(!basketContents) return;\n      const shown=programmeEntries(programmeData,option);\n      const selectedGroups=programmeData.programmeGroups.map(group=>({\n        ...group,\n        types:group.types.filter(type=>shown.some(entry=>entry.type===type.key))\n      })).filter(group=>group.types.length);\n      const selectedPacksTotal=shown.length*3;\n      basketContents.classList.toggle('is-multi-month',selectedGroups.length>1);\n      basketContents.innerHTML=selectedGroups.map(group=>`<div class=\"basket-group\"><div class=\"basket-month\">Month ${group.month}</div>${group.types.map(type=>`<div class=\"basket-item\">3 \u00D7 ${escapeHtml(displayType(type))}</div>`).join('')}</div>`).join('')+\n        `<div class=\"basket-total\">${selectedPacksTotal} packs total</div>`;\n      basketContents.hidden=false;\n    }\n\n    function setSelection(option,preserveStatus=false){\n      selectedOption=option;\n      panel.querySelectorAll('[data-order-option]').forEach(button=>button.setAttribute('aria-pressed',String(button.dataset.orderOption===option)));\n      setProgrammeHighlight(option);\n      renderBasketContents(option);\n      addButton.textContent=option==='month1'?'Add month 1 intensive to basket':'Add full intensive to basket';\n      addButton.disabled=cartRequestInFlight;\n      if(!preserveStatus) status.replaceChildren();\n    }\n\n    panel.querySelectorAll('[data-order-option]').forEach(button=>button.addEventListener('click',()=>setSelection(button.dataset.orderOption)));\n\n    addButton.addEventListener('click',async()=>{\n      if(!selectedOption||cartRequestInFlight) return;\n      cartRequestInFlight=true;\n      const controls=[...panel.querySelectorAll('button,input')];\n      const disabled=controls.map(control=>[control,control.disabled]);\n      controls.forEach(control=>{ control.disabled=true; });\n      renderBasketStatus(status,'Adding to basket\u2026');\n      try{\n        const plan=await requestCartPlan(programmeData,selectedOption);\n        const outcome=await reconcileCart(plan);\n        addButton.textContent=outcome.added?'Added to basket':'Already in basket';\n        renderBasketStatus(status,outcome.added?'Added to basket':'Already in basket');\n      }catch{\n        renderBasketStatus(status,'We couldn\u2019t update your basket. Please try again, or ask us for help.');\n      }finally{\n        cartRequestInFlight=false;\n        disabled.forEach(([control,wasDisabled])=>{ if(control.isConnected) control.disabled=wasDisabled; });\n      }\n    });\n\n    planner.addEventListener('change',()=>status.replaceChildren());\n  }\n\n  function guidancePayload(programmeData=currentProgramme){\n    const selections=programmeData?.selections||{goals:[],areas:[]};\n    return {\n      goals:selections.goals.map(g=>goalNames[g]).join(', ')||'None selected',\n      areas:selections.areas.length?selections.areas.map(displayType).join(', '):'I\u2019m not sure which area fits'\n    };\n  }\n\n  function escapeHtml(value){\n    return String(value??'').replace(/[&<>\"']/g,char=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[char]));\n  }\n\n  function programmeEmailTakeawayHtml(programmeData=currentProgramme,question='',preview=true){\n    const takeaway=buildEmailTakeaway(programmeData,question);\n    const sectionStyle='padding:10px 17px 12px;vertical-align:top;';\n    const headingStyle='margin:0 0 8px;font-size:14px;line-height:1.4;color:#272426;font-weight:600;';\n    const bodyStyle='margin:0;font-size:14px;line-height:1.55;color:#554f51;';\n    return `<div class=\"email-takeaway\"${preview?' aria-label=\"Your bioregulator programme preview\"':''} style=\"margin:0 0 20px;border:1px solid #ded8da;background:#ffffff;\">\n      <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"width:100%;border-collapse:collapse;table-layout:fixed;font-family:Arial,Helvetica,sans-serif;word-wrap:break-word;\">\n        <tbody><tr><td class=\"email-takeaway-head\" style=\"padding:15px 17px 12px;\">\n          <p class=\"email-takeaway-kicker\" style=\"margin:0 0 5px;font-size:13px;line-height:1.4;color:#554f51;\"><a href=\"https://www.fortheageless.com/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:#bc2546;text-decoration:underline;\">For the Ageless</a><span style=\"color:#8a8385;\"> \u00B7 </span><a href=\"https://www.fortheageless.com/products/bioregulator-peptides-natures-marvels\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:#554f51;text-decoration:underline;\">Nature\u2019s Marvels</a></p>\n          <h4 style=\"margin:0;font-size:18px;line-height:1.35;color:#272426;font-weight:500;\">Your bioregulator programme</h4>\n        </td></tr>\n        <tr><td class=\"email-section\" style=\"${sectionStyle}\">\n          <h5 style=\"${headingStyle}\">Your selections</h5>\n          <div class=\"email-meta\" style=\"${bodyStyle}\"><p style=\"margin:0 0 8px;\"><strong>Goals</strong><br>${escapeHtml(takeaway.goals)}</p><p style=\"margin:0;\"><strong>Areas</strong><br>${escapeHtml(takeaway.areas)}</p></div>\n        </td></tr>\n        <tr><td class=\"email-section\" style=\"${sectionStyle}\">\n          <h5 style=\"${headingStyle}\">Programme</h5>\n          <table class=\"email-programme-frame\" role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"width:100%;border-collapse:collapse;table-layout:fixed;border:1px solid #ded8da;border-left:2px solid #f2b2be;background:#ffffff;\">\n            <tbody>${takeaway.programmeGroups.map((group,i)=>`<tr><td class=\"email-programme-group\" style=\"padding:12px;${i?'border-top:1px solid #eee9ea;':''}\">\n              <span style=\"display:block;font-size:12px;line-height:1.4;letter-spacing:.4px;color:#272426;\">MONTH ${group.month}</span>\n              ${programmeDisplayHeading(group)?`<span class=\"programme-group-title\" style=\"display:block;margin-top:3px;font-size:14px;line-height:1.5;color:#272426;font-weight:700;\">${escapeHtml(programmeDisplayHeading(group))}</span>`:''}\n              <p style=\"margin:4px 0 0;font-size:14px;line-height:1.55;color:#554f51;\">${group.types.map(type=>escapeHtml(displayType(type))).join(' \u00B7 ')}</p>\n            </td></tr>`).join('')}\n            ${takeaway.broaderGuidance?`<tr><td class=\"email-broad-note\" style=\"padding:10px 12px;border-top:1px solid #eee9ea;font-size:14px;line-height:1.5;color:#554f51;\">${escapeHtml(takeaway.broaderGuidance)}</td></tr>`:''}</tbody>\n          </table>\n        </td></tr>\n        <tr><td class=\"email-section\" style=\"${sectionStyle}\">\n          <h5 style=\"${headingStyle}\">How to take and cycle your programme</h5>\n          <div class=\"email-cycle\" style=\"${bodyStyle}\">\n            ${[['Starting a type','starting'],['Maintenance','maintenance'],['When to take them','when']].map(([label,key])=>`<p style=\"margin:0 0 10px;\"><strong>${label}</strong><br>${escapeHtml(takeaway.cycling[key])}</p>`).join('')}\n          </div>\n        </td></tr>\n        ${question||preview?`<tr data-email-note-section${!question?' hidden':''}><td class=\"email-section email-note-preview\" style=\"${sectionStyle}\"><h5 style=\"${headingStyle}\">Your note</h5><p data-email-note-text style=\"${bodyStyle}white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;\">${preview?escapeHtml(question):escapeHtml(question).replace(/\\r\\n?|\\n/g,'<br>')}</p></td></tr>`:''}\n        <tr><td class=\"email-footer\" style=\"padding:12px 17px 15px;border-top:1px solid #eee9ea;font-size:14px;line-height:1.5;color:#554f51;\">You can follow up on this email by replying to <a href=\"mailto:contact@fortheageless.com\" style=\"color:#bc2546;text-decoration:underline;\">contact@fortheageless.com</a></td></tr>\n      </tbody></table>\n    </div>`;\n  }\n\n  function programmeEmailHtml(programmeData=currentProgramme){\n    return `<div class=\"email-branch-inner\">\n      <p class=\"email-intro\">Send yourself a copy of this programme, instructions and notes:</p>\n      <form class=\"programme-email-form\" data-programme-email-form method=\"post\">\n        <div class=\"programme-contact-grid\">\n          <label class=\"programme-field\">Email address\n            <input type=\"email\" name=\"email\" autocomplete=\"email\" required inputmode=\"email\" maxlength=\"254\" autocapitalize=\"none\" spellcheck=\"false\" aria-describedby=\"notePrivacy\" placeholder=\"you@example.com\">\n          </label>\n          <label class=\"programme-field\">Name <span class=\"optional\">(optional)</span>\n            <input type=\"text\" name=\"name\" autocomplete=\"name\" maxlength=\"160\" placeholder=\"Your name\">\n          </label>\n        </div>\n        <div class=\"programme-question\">\n          <label for=\"programmeQuestion\">Comments or questions <span>(optional)</span></label>\n          <p>Add a comment or question, or mention any medicines or supplements you\u2019d like us to take into account.</p>\n          <textarea id=\"programmeQuestion\" name=\"question\" maxlength=\"8000\" aria-describedby=\"notePrivacy\" placeholder=\"Write your comment or question here...\"></textarea>\n        </div>\n        <p class=\"note-privacy\" id=\"notePrivacy\">We\u2019ll verify your email first. Your programme and any note above will then be sent to you and to For the Ageless.</p>\n        <div class=\"programme-send\"><button class=\"primary\" type=\"submit\">Email my programme</button></div>\n        <label class=\"programme-optin\"><input type=\"checkbox\" name=\"newsletter\" value=\"yes\" checked><span>Subscribe me to the monthly For the Ageless newsletter.</span></label>\n        <div class=\"email-status\" data-email-status role=\"status\" aria-live=\"polite\"></div>\n      </form>\n      <details class=\"email-preview-details\">\n        <summary>Preview this email</summary>\n        ${programmeEmailTakeawayHtml(programmeData)}\n      </details>\n    </div>`;\n  }\n\n  function buildEmailTakeaway(programmeData=currentProgramme,question=''){\n    const p=guidancePayload(programmeData);\n    return {\n      subject:'Your For the Ageless bioregulator programme',\n      goals:p.goals,\n      areas:p.areas,\n      programmeGroups:(programmeData?.programmeGroups||[]).map(group=>({month:group.month,theme:group.theme,types:[...group.types]})),\n      broaderGuidance:programmeBroadGuidance(programmeData),\n      cycling:{...programmeData.programme.cycling},\n      question\n    };\n  }\n\n  function clearPrivateDraft(){\n    window.clearTimeout(privateDraftTimer);\n    preservedPrivateDraft=null;\n    const form=chooser.querySelector('[data-programme-email-form]');\n    if(!form) return;\n    const hadDraft=!!(form.elements.email.value||form.elements.name.value||form.elements.question.value);\n    form.reset();\n    const section=chooser.querySelector('[data-email-note-section]');\n    const text=chooser.querySelector('[data-email-note-text]');\n    if(section) section.hidden=true;\n    if(text) text.textContent='';\n    form.querySelector('[data-email-status]').textContent=hadDraft?'Your unused contact details and note have been cleared. You can enter them again.':'';\n  }\n\n  function currentPrivateDraft(){\n    const form=chooser.querySelector('[data-programme-email-form]');\n    return form?{email:form.elements.email.value,name:form.elements.name.value,question:form.elements.question.value,newsletter:form.elements.newsletter.checked}:null;\n  }\n\n  function restorePrivateDraft(draft){\n    if(!draft) return;\n    const form=chooser.querySelector('[data-programme-email-form]');\n    form.elements.email.value=draft.email;\n    form.elements.name.value=draft.name;\n    form.elements.question.value=draft.question;\n    form.elements.newsletter.checked=draft.newsletter;\n    const text=chooser.querySelector('[data-email-note-text]');\n    text.textContent=draft.question.trim();\n    chooser.querySelector('[data-email-note-section]').hidden=!text.textContent;\n  }\n\n  function wireProgrammeEmail(root,programmeData=currentProgramme){\n    const form=root.querySelector('[data-programme-email-form]');\n    if(!form) return;\n    const status=form.querySelector('[data-email-status]');\n    const question=form.elements.question;\n    const noteSection=root.querySelector('[data-email-note-section]');\n    const noteText=root.querySelector('[data-email-note-text]');\n\n    form.addEventListener('input',()=>{\n      window.clearTimeout(privateDraftTimer);\n      privateDraftTimer=window.setTimeout(clearPrivateDraft,PRIVATE_DRAFT_IDLE_MS);\n      status.textContent='';\n    });\n\n    question.addEventListener('input',()=>{\n      const value=question.value.trim();\n      noteSection.hidden=!value;\n      noteText.textContent=value;\n    });\n\n    form.addEventListener('submit',async e=>{\n      e.preventDefault();\n      form.elements.email.value=form.elements.email.value.trim();\n      if(!form.reportValidity()) return;\n      const email=form.elements.email.value.trim();\n      const name=form.elements.name.value.trim();\n      const note=question.value.trim();\n      const newsletter=!!form.elements.newsletter.checked;\n      const submit=form.querySelector('button[type=\"submit\"]');\n      submit.disabled=true;\n      status.textContent='Sending verification email\u2026';\n      try{\n        await postEmailStart({programmeId:programmeData.programmeId,email,name,question:note,newsletter});\n        status.textContent='Check your email to verify your address. Your programme will be sent after verification.';\n      }catch{\n        status.textContent='We couldn\u2019t send the verification email. Please try again, or ask us for help.';\n      }finally{\n        submit.disabled=false;\n      }\n    });\n  }\n\n  function programmeNoteHtml(programmeData){\n    if(!programmeData?.programme?.isMultiMonth) return '';\n    return `<div class=\"programme-note\"><h4>Grouping bioregulators</h4><div class=\"insight-copy\"><p>If your results include more than six bioregulators, we can help you split them into groups that make sense. We normally introduce no more than six new types in any one month.</p></div></div>`;\n  }\n\n  function programmeSummaryHtml(programmeData=currentProgramme){\n    if(!programmeData) return '';\n    const broad=programmeBroadGuidance(programmeData);\n    return `<div class=\"programme-definitive\">\n      <h3 id=\"programmeTitle\">Your programme</h3>\n      <p>You can purchase now, request changes to the programme or keep a copy for later.</p>\n      <div class=\"programme-frame\">\n        <div class=\"programme-card-grid\">\n          ${programmeData.programmeGroups.map(group=>`<article class=\"programme-card\" data-programme-month=\"${group.month}\">\n            <span class=\"programme-month\">Month ${group.month}</span>\n            ${programmeDisplayHeading(group)?`<h4>${escapeHtml(programmeDisplayHeading(group))}</h4>`:''}\n            <p>${group.types.map(type=>escapeHtml(displayType(type))).join(' \u00B7 ')}</p>\n          </article>`).join('')}\n        </div>\n        ${broad?`<div class=\"programme-explain\">${escapeHtml(broad)}</div>`:''}\n      </div>\n    </div>`;\n  }\n\n  function resultCardHtml(card){\n    const image=new URL(card.image);\n    image.searchParams.set('width','300');\n    return `<article class=\"result-card\">\n      <div class=\"result-visual\"><span class=\"relation\">${escapeHtml(card.relationship)}</span><img class=\"product-image\" src=\"${escapeHtml(image.href)}\" referrerpolicy=\"no-referrer\" alt=\"Nature\u2019s Marvels ${escapeHtml(displayType(card.name))} bioregulator\" width=\"150\" height=\"150\" loading=\"lazy\" decoding=\"async\"></div>\n      <div class=\"result-body\"><h4>${escapeHtml(displayType(card.name))}</h4><p class=\"result-reason\">${escapeHtml(card.rationale)}</p></div>\n    </article>`;\n  }\n\n  function renderBroadResult(){\n    currentProgramme=null;\n    const root=document.getElementById('resultContent');\n    maxStepReached=Math.max(maxStepReached,3);\n    root.innerHTML=`<div class=\"empty-results\">\n      <h3 id=\"resultTitle\">Possibilities</h3>\n      <p>Your answers are still too broad for us to narrow the 21 types confidently. Choose an area in Step 2, or ask us and we\u2019ll help.</p>\n      <div class=\"results-next\" style=\"justify-content:flex-start;gap:10px;flex-wrap:wrap\">\n        <button class=\"secondary\" id=\"chooseArea\" type=\"button\">Choose an area</button>\n        <button class=\"text-button\" id=\"askBroad\" type=\"button\">Ask us</button>\n      </div>\n    </div>`;\n    showScreen(3,true);\n    root.querySelector('#chooseArea').onclick=()=>showScreen(2,true);\n    root.querySelector('#askBroad').onclick=jumpToFreeGuidance;\n  }\n\n  function renderServiceFailure(){\n    currentProgramme=null;\n    const root=document.getElementById('resultContent');\n    maxStepReached=Math.max(maxStepReached,3);\n    root.innerHTML=`<div class=\"empty-results\">\n      <h3 id=\"resultTitle\">We couldn\u2019t load your result</h3>\n      <p>Please try again. If it still doesn\u2019t work, ask us and we\u2019ll help you choose.</p>\n      <div class=\"results-next\" style=\"justify-content:flex-start;gap:10px;flex-wrap:wrap\">\n        <button class=\"secondary\" id=\"retryResult\" type=\"button\">Try again</button>\n        <button class=\"text-button\" id=\"askResult\" type=\"button\">Ask us</button>\n      </div>\n    </div>`;\n    showScreen(3,true);\n    root.querySelector('#retryResult').onclick=()=>{ void renderResults(); };\n    root.querySelector('#askResult').onclick=jumpToFreeGuidance;\n  }\n\n  async function renderResults(){\n    if(currentProgramme&&document.getElementById('resultContent').children.length){\n      maxStepReached=Math.max(maxStepReached,3);\n      showScreen(3,true);\n      return;\n    }\n    includeWorthIncluding=true;\n    if(areaUnsure&&selectedAreas.size===0){ renderBroadResult(); return; }\n\n    let envelope;\n    try{ envelope=await runAction(()=>requestServerResult(true)); }\n    catch{ renderServiceFailure(); return; }\n    if(!envelope) return;\n\n    currentProgramme=programmeFromEnvelope(envelope);\n    renderedProgramme=null;\n    const root=document.getElementById('resultContent');\n    const primary=currentProgramme.recommendations.primary;\n    const worth=currentProgramme.recommendations.worthIncluding;\n    const unsureSignal=selectedGoals.has('general')||areaUnsure;\n    const focused=primary.length+worth.length<=2&&!unsureSignal;\n\n    root.innerHTML=`\n      <div class=\"results-head\"><div><h3 id=\"resultTitle\">Possibilities</h3><p>Your strongest matches from the areas you chose and the combinations we use most often.</p></div></div>\n      <div class=\"result-grid\">${primary.map(resultCardHtml).join('')}</div>\n      <div class=\"insight\"><h4>An insight from us</h4><div class=\"insight-copy\">${sanitisedInsightHtml(currentProgramme.insightHtml)}</div></div>\n      ${worth.length?`<section class=\"also\"><h4 id=\"worthIncludingTitle\">Worth including</h4><div class=\"also-list\">${worth.map(card=>`<div class=\"also-item\"><strong>${escapeHtml(displayType(card.name))}: </strong>${escapeHtml(card.rationale)}</div>`).join('')}</div><div class=\"also-toggle-row\"><button class=\"support-toggle\" id=\"worthIncludingToggle\" type=\"button\" role=\"switch\" aria-checked=\"true\" aria-labelledby=\"worthIncludingTitle worthIncludingState\"><span class=\"support-toggle-track\" aria-hidden=\"true\"><span class=\"support-toggle-thumb\"></span></span><span class=\"support-toggle-label\" id=\"worthIncludingState\">Added</span></button></div></section>`:''}\n      ${focused?`<div class=\"focused-note\"><strong>A focused result</strong><p>Your answers point to a small group. There is no advantage in adding more simply to make the list longer.</p></div>`:''}\n      <div id=\"programmeNoteSlot\">${programmeNoteHtml(currentProgramme)}</div>\n      <div class=\"results-next\"><button class=\"primary\" id=\"toProgramme\" type=\"button\">See my programme</button></div>`;\n\n    maxStepReached=Math.max(maxStepReached,3);\n    showScreen(3,true);\n    root.querySelectorAll('.product-image').forEach(image=>{\n      image.addEventListener('error',()=>{ image.hidden=true; image.parentElement.classList.add('image-unavailable'); },{once:true});\n    });\n    const worthToggle=root.querySelector('#worthIncludingToggle');\n    if(worthToggle){\n      worthToggle.onclick=async()=>{\n        const next=!includeWorthIncluding;\n        let nextEnvelope;\n        try{ nextEnvelope=await runAction(()=>requestServerResult(next,true)); }\n        catch{\n          setServiceStatus('We couldn\u2019t update your programme. Please try again.');\n          return;\n        }\n        if(!nextEnvelope) return;\n        const draftBeforeProgrammeRefresh=currentPrivateDraft();\n        if(draftBeforeProgrammeRefresh) preservedPrivateDraft=draftBeforeProgrammeRefresh;\n        includeWorthIncluding=next;\n        currentProgramme=programmeFromEnvelope(nextEnvelope);\n        renderedProgramme=null;\n        document.getElementById('programmeContent').replaceChildren();\n        worthToggle.setAttribute('aria-checked',String(next));\n        worthToggle.querySelector('.support-toggle-label').textContent=next?'Added':'Not added';\n        const noteSlot=root.querySelector('#programmeNoteSlot');\n        if(noteSlot) noteSlot.innerHTML=programmeNoteHtml(currentProgramme);\n      };\n    }\n    root.querySelector('#toProgramme').onclick=renderProgramme;\n  }\n\n  function renderProgramme(){\n    if(!currentProgramme){ void renderResults(); return; }\n    const root=document.getElementById('programmeContent');\n    if(renderedProgramme===currentProgramme&&root.children.length){\n      reachStep(4);\n      return;\n    }\n    const privateDraft=currentPrivateDraft()||preservedPrivateDraft;\n    root.innerHTML=`\n      ${programmeSummaryHtml(currentProgramme)}\n      ${courseNoteHtml(currentProgramme)}\n\n      <h4 class=\"next-step-title\">What would you like to do next?</h4>\n      <div class=\"next-step-panel\">\n        <div class=\"route-grid\" role=\"group\" aria-label=\"Programme next steps\">\n          <button class=\"route-choice\" type=\"button\" id=\"shopRoute\" aria-expanded=\"false\" aria-controls=\"shopBranch\">\n            <strong>Order programme</strong>\n            <span>Choose month 1 intensive or the full intensive.</span>\n          </button>\n          <button class=\"route-choice\" type=\"button\" id=\"emailRoute\" aria-expanded=\"false\" aria-controls=\"emailBranch\">\n            <strong>I need help</strong>\n            <span>We can help tailor your plan.</span>\n          </button>\n        </div>\n        <div class=\"route-stage\">\n          <div class=\"route-branch shop-branch\" id=\"shopBranch\" role=\"region\" aria-label=\"Order your programme\" tabindex=\"-1\" hidden>${orderPanelHtml(currentProgramme)}</div>\n          <div class=\"route-branch email-branch\" id=\"emailBranch\" role=\"region\" aria-label=\"Help with your programme\" tabindex=\"-1\" hidden>${programmeEmailHtml(currentProgramme)}</div>\n        </div>\n      </div>\n\n      <p class=\"closing-safety\">For product guidance only. If you take medicines, are pregnant or breastfeeding, or have a medical condition, seek practitioner advice before use.</p>\n      <div class=\"programme-actions\"><button class=\"text-button\" id=\"restartProgramme\" type=\"button\">Start again</button></div>`;\n\n    maxStepReached=Math.max(maxStepReached,4);\n    showScreen(4,true);\n    wireOrderPanel(root,currentProgramme);\n    wireProgrammeEmail(root,currentProgramme);\n    restorePrivateDraft(privateDraft);\n    preservedPrivateDraft=null;\n    renderedProgramme=currentProgramme;\n\n    const shopRoute=root.querySelector('#shopRoute');\n    const emailRoute=root.querySelector('#emailRoute');\n    const shopBranch=root.querySelector('#shopBranch');\n    const emailBranch=root.querySelector('#emailBranch');\n\n    function openRoute(route){\n      const shopOpen=route==='shop';\n      shopRoute.setAttribute('aria-expanded',String(shopOpen));\n      emailRoute.setAttribute('aria-expanded',String(!shopOpen));\n      shopBranch.hidden=!shopOpen;\n      emailBranch.hidden=shopOpen;\n    }\n\n    shopRoute.onclick=()=>openRoute('shop');\n    emailRoute.onclick=()=>openRoute('email');\n    root.querySelector('#restartProgramme').onclick=resetAll;\n  }\n\n  function resetAll(){\n    window.clearTimeout(privateDraftTimer);\n    clearPrivateDraft();\n    clearServerSession();\n    setServiceStatus();\n    document.getElementById('programmeContent').replaceChildren();\n    document.getElementById('resultContent').replaceChildren();\n    renderedProgramme=null;\n    includeWorthIncluding=true;\n    goalsNeedPreselection=true;\n    selectedGoals.clear();\n    selectedAreas.clear();\n    areaUnsure=false;\n    chooser.querySelectorAll('[data-goal],[data-area],[data-group]').forEach(button=>button.setAttribute('aria-pressed','false'));\n    chooser.querySelectorAll('[data-group] .group-action').forEach(span=>{\n      const button=span.closest('[data-group]');\n      span.textContent=`Select all ${groupItems(button.dataset.group).length}`;\n    });\n    maxStepReached=1;\n    currentStep=1;\n    currentProgramme=null;\n    areasWerePreselected=false;\n    toStep2.disabled=true;\n    showResults.disabled=true;\n    showScreen(1,true);\n  }\n\n  async function beginChooser(){\n    openChooser();\n    try{ await runAction(()=>ensureServerSession()); }\n    catch{ setServiceStatus('We couldn\u2019t start the chooser just now. You can try again, or ask us for help.'); }\n  }\n\n  document.getElementById('startBtn').onclick=()=>{ void beginChooser(); };\n  document.getElementById('compactAsk').onclick=jumpToFreeGuidance;\n  closeBtn.onclick=closeChooser;\n  chooser.querySelector('.progress-strip').addEventListener('click',event=>{\n    const button=event.target.closest('[data-progress]');\n    if(!button||button.disabled) return;\n    const step=Number(button.dataset.progress);\n    if(step===4){\n      if(currentProgramme&&renderedProgramme===currentProgramme&&document.getElementById('programmeContent').children.length) showScreen(4,true);\n      else renderProgramme();\n    }else{\n      showScreen(step,true);\n    }\n  });\n  toStep2.onclick=async()=>{\n    if(goalsNeedPreselection){\n      let preselectedAreas;\n      try{ preselectedAreas=await runAction(requestPreselection); }\n      catch{\n        setServiceStatus('We couldn\u2019t continue just now. Please try again, or ask us for help.');\n        return;\n      }\n      if(!preselectedAreas) return;\n      preselectAreasFromGoals(preselectedAreas);\n    }\n    maxStepReached=Math.max(maxStepReached,2);\n    showScreen(2);\n  };\n  document.getElementById('doneAreas').onclick=()=>{\n    if(selectedAreas.size===0) areaUnsure=true;\n    void renderResults();\n  };\n  showResults.onclick=()=>{ void renderResults(); };\n\n  chooser.addEventListener('keydown',event=>{\n    if(event.key==='Escape'&&chooser.classList.contains('open')){\n      event.preventDefault();\n      closeChooser();\n    }\n  });\n  window.addEventListener('pagehide',clearPrivateDraft);\n  renderGoals();\n  renderAreas();\n  updateProgress(1);\n})();\n"],
  "mappings": "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",
  "names": ["item"]
}
