{
  "version": 3,
  "sources": ["/cdn/shop/t/134/assets/flavor-quiz.js?sk=1785317400"],
  "sourcesContent": ["/**\n * Sidekick flavor quiz \u2014 hybrid finder (3 Qs \u2192 match) + optional community vote + email.\n */\n(function () {\n  'use strict';\n\n  var KLAVIYO_REVISION = '2026-04-15';\n  var FLAVOUR_ORDER = ['pear', 'cherry', 'strawberry', 'mango', 'watermelon', 'variety'];\n\n  var SCORE_MAP = {\n    taste_mood: {\n      'Crisp orchard fruit': { pear: 3, strawberry: 1 },\n      'Bold dark fruit': { cherry: 3 },\n      'Soft berry': { strawberry: 3, cherry: 1 },\n      'Tropical sunshine': { mango: 3, watermelon: 2 },\n      'A bit of everything': { variety: 3, pear: 1, cherry: 1 }\n    },\n    drink_moment: {\n      'Everyday from the fridge': { pear: 2, cherry: 1 },\n      'Summer outdoors': { watermelon: 3, mango: 2 },\n      'With dinner or as a mixer': { pear: 2, cherry: 2 },\n      'As a treat': { strawberry: 2, mango: 1 },\n      'Sharing with mates': { variety: 3, watermelon: 1 }\n    },\n    sweetness_style: {\n      'Not too sweet': { pear: 3, cherry: 1 },\n      Balanced: { cherry: 2, strawberry: 1, pear: 1 },\n      'Juicy and fruit-forward': { mango: 2, watermelon: 2, strawberry: 1 },\n      'Keep surprising me': { variety: 2, watermelon: 1, mango: 1 }\n    }\n  };\n\n  function isValidEmail(value) {\n    return typeof value === 'string' && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value.trim());\n  }\n\n  function parseOtherToken(option) {\n    return (option || '').toLowerCase().indexOf('other') !== -1 ||\n      (option || '').toLowerCase().indexOf('tell us') !== -1;\n  }\n\n  function getCatalog(root) {\n    if (root._fqCatalog) return root._fqCatalog;\n    var el = root.querySelector('[data-fq-catalog]');\n    var catalog = {};\n    if (el) {\n      try {\n        catalog = JSON.parse(el.textContent || '{}');\n      } catch (e) {\n        catalog = {};\n      }\n    }\n    root._fqCatalog = catalog;\n    return catalog;\n  }\n\n  function getQuestionSteps(root) {\n    return Array.prototype.slice.call(\n      root.querySelectorAll('[data-fq-step=\"question\"]')\n    );\n  }\n\n  function getFinderSteps(root) {\n    return getQuestionSteps(root).filter(function (step) {\n      return (step.dataset.fqPhase || 'finder') !== 'vote';\n    });\n  }\n\n  function getVoteSteps(root) {\n    return getQuestionSteps(root).filter(function (step) {\n      return step.dataset.fqPhase === 'vote';\n    });\n  }\n\n  function getFlowSteps(root) {\n    var finder = getFinderSteps(root);\n    var result = root.querySelector('[data-fq-step=\"result\"]');\n    var vote = getVoteSteps(root);\n    var email = root.querySelector('[data-fq-step=\"email\"]');\n    var flow = finder.slice();\n    if (result) flow.push(result);\n    flow = flow.concat(vote);\n    if (email) flow.push(email);\n    return flow;\n  }\n\n  function getStepIndex(root) {\n    return parseInt(root.dataset.fqCurrentStep || '0', 10);\n  }\n\n  function setStepIndex(root, index) {\n    root.dataset.fqCurrentStep = String(index);\n  }\n\n  function updateProgress(root, active, index) {\n    var fill = root.querySelector('[data-fq-progress-fill]');\n    var label = root.querySelector('[data-fq-progress-label]');\n    var progress = root.querySelector('[data-fq-progress]');\n    var finder = getFinderSteps(root);\n    var stepType = active ? active.getAttribute('data-fq-step') : '';\n    var phase = active ? (active.dataset.fqPhase || 'finder') : 'finder';\n\n    // Progress tracks the 3 finder questions only \u2014 result / vote / email are extras.\n    if (stepType === 'question' && phase !== 'vote') {\n      var finderIndex = finder.indexOf(active);\n      var total = finder.length || 1;\n      var current = finderIndex >= 0 ? finderIndex + 1 : index + 1;\n      var pct = Math.round((current / total) * 100);\n      if (progress) progress.hidden = false;\n      if (fill) fill.style.width = pct + '%';\n      if (label) label.textContent = 'Step ' + current + ' of ' + total;\n      return;\n    }\n\n    if (stepType === 'result') {\n      if (progress) progress.hidden = false;\n      if (fill) fill.style.width = '100%';\n      if (label) label.textContent = 'Your match';\n      return;\n    }\n\n    if (stepType === 'question' && phase === 'vote') {\n      if (progress) progress.hidden = false;\n      if (fill) fill.style.width = '100%';\n      if (label) label.textContent = 'Optional note';\n      return;\n    }\n\n    if (stepType === 'email') {\n      if (progress) progress.hidden = false;\n      if (fill) fill.style.width = '100%';\n      if (label) label.textContent = 'Almost done';\n      return;\n    }\n\n    if (progress) progress.hidden = true;\n  }\n\n  function hideAllFlow(root) {\n    var flow = getFlowSteps(root);\n    for (var i = 0; i < flow.length; i++) flow[i].hidden = true;\n    var complete = root.querySelector('[data-fq-step=\"complete\"]');\n    if (complete) complete.hidden = true;\n  }\n\n  function showStep(root, index) {\n    if (root._fqAdvanceTimer) {\n      clearTimeout(root._fqAdvanceTimer);\n      root._fqAdvanceTimer = null;\n    }\n\n    var flow = getFlowSteps(root);\n    if (!flow.length) return;\n    if (index < 0) index = 0;\n    if (index >= flow.length) index = flow.length - 1;\n\n    hideAllFlow(root);\n    var active = flow[index];\n    active.hidden = false;\n    setStepIndex(root, index);\n    updateProgress(root, active, index);\n\n    var announcer = root.querySelector('[data-fq-announcer]');\n    if (announcer) {\n      var q = active.querySelector('[data-fq-question]');\n      announcer.textContent = q ? q.textContent : '';\n    }\n\n    var stepType = active.getAttribute('data-fq-step');\n    var isResult = stepType === 'result';\n    var isEmail = stepType === 'email';\n    var isQuestion = stepType === 'question';\n    var questionActions = root.querySelector('[data-fq-question-actions]');\n    if (questionActions) {\n      questionActions.hidden = isResult || isEmail;\n    }\n\n    var backBtns = root.querySelectorAll('[data-fq-back]');\n    for (var b = 0; b < backBtns.length; b++) {\n      // Question-actions Back only; email/result have their own back buttons\n      if (backBtns[b].closest('[data-fq-question-actions]')) {\n        backBtns[b].hidden = !isQuestion || index === 0;\n      } else {\n        backBtns[b].hidden = index === 0;\n      }\n    }\n\n    var type = active.dataset.fqType || 'single';\n    var required = active.dataset.fqRequired === 'true';\n    var nextBtn = root.querySelector('[data-fq-next]');\n    var skipBtn = root.querySelector('[data-fq-skip-question]');\n\n    // Single-choice auto-advances \u2014 hide Next. Keep Next only for multi/text.\n    if (nextBtn) {\n      var needsManualNext = isQuestion && (type === 'multi' || type === 'text');\n      nextBtn.hidden = !needsManualNext;\n      if (needsManualNext) {\n        var nextStep = flow[index + 1];\n        var nextIsResult = nextStep && nextStep.getAttribute('data-fq-step') === 'result';\n        var nextIsEmail = nextStep && nextStep.getAttribute('data-fq-step') === 'email';\n        if (nextIsResult) {\n          nextBtn.textContent = 'See my match';\n        } else if (nextIsEmail) {\n          nextBtn.textContent = root.dataset.fqContinueLabel || 'Continue';\n        } else {\n          nextBtn.textContent = root.dataset.fqNextLabel || 'Next';\n        }\n      }\n    }\n\n    if (skipBtn) {\n      skipBtn.hidden = !(isQuestion && !required);\n    }\n\n    if (isResult) {\n      renderRecommendation(root);\n    }\n  }\n\n  function advanceFromQuestion(root, current) {\n    if (!current || current.getAttribute('data-fq-step') !== 'question') return;\n    if (!validateQuestionStep(current)) return;\n\n    var idx = getStepIndex(root);\n    var flow = getFlowSteps(root);\n\n    if (idx < flow.length - 1) {\n      var next = flow[idx + 1];\n      if (next && next.getAttribute('data-fq-step') === 'result') {\n        computeRecommendation(root);\n      }\n      showStep(root, idx + 1);\n      return;\n    }\n\n    finishWithoutEmail(root);\n  }\n\n  function scheduleAdvance(root, step) {\n    if (root._fqAdvanceTimer) clearTimeout(root._fqAdvanceTimer);\n    root._fqAdvanceTimer = setTimeout(function () {\n      root._fqAdvanceTimer = null;\n      // Only advance if still on this step\n      var flow = getFlowSteps(root);\n      var idx = getStepIndex(root);\n      if (flow[idx] !== step) return;\n      advanceFromQuestion(root, step);\n    }, 280);\n  }\n\n  function tryAutoAdvanceFromStep(root, step) {\n    if (!step || step.getAttribute('data-fq-step') !== 'question') return;\n    var type = step.dataset.fqType || 'single';\n    if (type !== 'single') return;\n\n    var selected = step.querySelector('[data-fq-option-input]:checked');\n    if (!selected) return;\n\n    if (parseOtherToken(selected.value)) {\n      var otherInput = step.querySelector('[data-fq-other-input]');\n      var otherVal = otherInput ? otherInput.value.trim() : '';\n      if (!otherVal) return; // wait until they type a custom answer\n    }\n\n    scheduleAdvance(root, step);\n  }\n\n  function clearError(step) {\n    var err = step.querySelector('[data-fq-step-error]');\n    if (err) err.hidden = true;\n    var limitMsg = step.querySelector('[data-fq-limit-msg]');\n    if (limitMsg) limitMsg.hidden = true;\n    var invalid = step.querySelectorAll('.is-invalid');\n    for (var i = 0; i < invalid.length; i++) {\n      invalid[i].classList.remove('is-invalid');\n      invalid[i].removeAttribute('aria-invalid');\n    }\n  }\n\n  function showLimitMessage(step, message) {\n    var limitMsg = step.querySelector('[data-fq-limit-msg]');\n    if (limitMsg) {\n      limitMsg.textContent = message || 'Choose up to 3.';\n      limitMsg.hidden = false;\n    }\n  }\n\n  function showError(step, message) {\n    var err = step.querySelector('[data-fq-step-error]');\n    if (err) {\n      err.textContent = message;\n      err.hidden = false;\n    }\n  }\n\n  function validateQuestionStep(step) {\n    clearError(step);\n    var required = step.dataset.fqRequired === 'true';\n    var type = step.dataset.fqType || 'single';\n\n    if (type === 'text') {\n      var input = step.querySelector('[data-fq-text-input]');\n      var val = input ? input.value.trim() : '';\n      if (required && !val) {\n        if (input) {\n          input.classList.add('is-invalid');\n          input.setAttribute('aria-invalid', 'true');\n          input.focus();\n        }\n        showError(step, 'Please enter your answer.');\n        return false;\n      }\n      return true;\n    }\n\n    var checked = step.querySelectorAll('[data-fq-option-input]:checked');\n    if (required && !checked.length) {\n      showError(step, 'Please choose an option to continue.');\n      return false;\n    }\n\n    if (type === 'single') {\n      var otherWrap = step.querySelector('[data-fq-other-wrap]');\n      var otherInput = step.querySelector('[data-fq-other-input]');\n      if (otherWrap && !otherWrap.hidden && otherInput) {\n        var otherVal = otherInput.value.trim();\n        if (!otherVal) {\n          otherInput.classList.add('is-invalid');\n          otherInput.setAttribute('aria-invalid', 'true');\n          otherInput.focus();\n          showError(step, 'Please tell us your answer.');\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  function validateEmailStep(step, root) {\n    clearError(step);\n    var emailInput = step.querySelector('[data-fq-email]');\n    var consent = step.querySelector('[data-fq-email-consent]');\n    var email = emailInput ? emailInput.value.trim() : '';\n\n    if (!email || !isValidEmail(email)) {\n      if (emailInput) {\n        emailInput.classList.add('is-invalid');\n        emailInput.setAttribute('aria-invalid', 'true');\n        emailInput.focus();\n      }\n      showError(step, 'Please enter a valid email address.');\n      return null;\n    }\n\n    if (!consent || !consent.checked) {\n      if (consent) {\n        consent.classList.add('is-invalid');\n        consent.setAttribute('aria-invalid', 'true');\n        consent.focus();\n      }\n      showError(step, root.dataset.fqConsentError || 'Please tick the box to join the list.');\n      return null;\n    }\n\n    return email;\n  }\n\n  function collectAnswers(root) {\n    var answers = {};\n    var steps = getQuestionSteps(root);\n\n    for (var i = 0; i < steps.length; i++) {\n      var step = steps[i];\n      var key = step.dataset.fqQuestionKey || ('q' + (i + 1));\n      var label = step.dataset.fqQuestionLabel || key;\n      var type = step.dataset.fqType || 'single';\n      var value = '';\n\n      if (type === 'text') {\n        var textInput = step.querySelector('[data-fq-text-input]');\n        value = textInput ? textInput.value.trim() : '';\n      } else if (type === 'multi') {\n        var multi = step.querySelectorAll('[data-fq-option-input]:checked');\n        var parts = [];\n        for (var m = 0; m < multi.length; m++) {\n          parts.push(multi[m].value);\n        }\n        value = parts.join(', ');\n      } else {\n        var selected = step.querySelector('[data-fq-option-input]:checked');\n        value = selected ? selected.value : '';\n        var otherInput = step.querySelector('[data-fq-other-input]');\n        if (otherInput && selected && parseOtherToken(selected.value)) {\n          var custom = otherInput.value.trim();\n          if (custom) value = value + ': ' + custom;\n        }\n      }\n\n      answers[key] = {\n        label: label,\n        value: value,\n        phase: step.dataset.fqPhase || 'finder'\n      };\n    }\n\n    return answers;\n  }\n\n  function computeRecommendation(root) {\n    var answers = collectAnswers(root);\n    var scores = {};\n    for (var i = 0; i < FLAVOUR_ORDER.length; i++) scores[FLAVOUR_ORDER[i]] = 0;\n\n    Object.keys(SCORE_MAP).forEach(function (key) {\n      var answer = answers[key];\n      if (!answer || !answer.value) return;\n      var map = SCORE_MAP[key][answer.value];\n      if (!map) return;\n      Object.keys(map).forEach(function (flavour) {\n        scores[flavour] = (scores[flavour] || 0) + map[flavour];\n      });\n    });\n\n    var best = 'pear';\n    var bestScore = -1;\n    for (var f = 0; f < FLAVOUR_ORDER.length; f++) {\n      var id = FLAVOUR_ORDER[f];\n      if (scores[id] > bestScore) {\n        bestScore = scores[id];\n        best = id;\n      }\n    }\n\n    var catalog = getCatalog(root);\n    var match = catalog[best] || {\n      id: best,\n      name: best.charAt(0).toUpperCase() + best.slice(1),\n      tagline: 'A Sidekick worth putting in the fridge.',\n      url: root.dataset.fqCollectionUrl || '/collections/sidekick-soda',\n      image: null\n    };\n\n    root._fqRecommendation = match;\n    return match;\n  }\n\n  function renderRecommendation(root) {\n    var match = root._fqRecommendation || computeRecommendation(root);\n    var word = root.dataset.fqWordFlavour || 'flavour';\n    var title = root.querySelector('[data-fq-result-title]');\n    var blurb = root.querySelector('[data-fq-result-blurb]');\n    var name = root.querySelector('[data-fq-result-name]');\n    var tagline = root.querySelector('[data-fq-result-tagline]');\n    var shop = root.querySelector('[data-fq-result-shop]');\n    var media = root.querySelector('[data-fq-result-media]');\n    var img = root.querySelector('[data-fq-result-image]');\n\n    if (title) title.textContent = 'Your Sidekick is ' + match.name + '.';\n    if (blurb) {\n      blurb.textContent = 'Based on your answers, this is the ' + word + ' we\u2019d put in your fridge first.';\n    }\n    root._fqRecommendation = match;\n    if (name) name.textContent = 'Sidekick ' + match.name;\n    if (tagline) tagline.textContent = match.tagline || '';\n    if (shop) {\n      var market = (root.dataset.fqMarket || 'NZ').toUpperCase();\n      var slug = String(match.id || match.name || '').toLowerCase().replace(/[^a-z]/g, '');\n      if (market === 'NZ' && slug && slug !== 'variety') {\n        var partner = slug === 'mango' ? 'pear' : 'mango';\n        shop.href = '/pages/fridge-fill?mix=' + encodeURIComponent(slug + ':2,' + partner + ':1');\n        shop.removeAttribute('data-fq-variant-id');\n        shop.removeAttribute('data-fq-qty');\n        shop.textContent = 'Build your Fridge Fill';\n      } else {\n        var canAdd = match.available && match.variant_id;\n        var qty = parseInt(match.quantity, 10) || 1;\n        shop.href = match.url || root.dataset.fqCollectionUrl || '/collections/sidekick-soda';\n        if (canAdd && market !== 'NZ') {\n          shop.setAttribute('data-fq-variant-id', String(match.variant_id));\n          shop.setAttribute('data-fq-qty', String(qty));\n          shop.textContent = root.dataset.fqResultCta || ('Shop this ' + word);\n        } else {\n          shop.removeAttribute('data-fq-variant-id');\n          shop.removeAttribute('data-fq-qty');\n          shop.textContent = root.dataset.fqResultCta || ('Shop this ' + word);\n        }\n      }\n    }\n    if (media && img) {\n      if (match.image) {\n        img.src = match.image;\n        img.alt = 'Sidekick ' + match.name;\n        media.hidden = false;\n      } else {\n        media.hidden = true;\n        img.removeAttribute('src');\n      }\n    }\n  }\n\n  function buildKlaviyoProperties(root, email, answers) {\n    var timestamp = new Date().toISOString();\n    var market = root.dataset.fqMarket || 'NZ';\n    var brand = root.dataset.fqBrand || 'Sidekick';\n    var sourcePage = root.dataset.fqSourcePage || 'flavor-quiz';\n    var match = root._fqRecommendation || computeRecommendation(root);\n    var props = {\n      'Flavor Quiz Responses': JSON.stringify(answers),\n      'Flavor Quiz Responses JSON': JSON.stringify(answers),\n      'Flavor Quiz Completed': 'true',\n      'Flavor Quiz Completed At': timestamp,\n      'Flavor Quiz Type': 'hybrid-finder-vote',\n      'Flavor Quiz Recommended Flavor': match.name || '',\n      'Flavor Quiz Recommended Flavor Id': match.id || '',\n      'Quiz Market': market,\n      'Quiz Brand': brand,\n      'Signup Market': market,\n      'Signup Offer': market === 'US' ? 'none' : 'WELCOME5',\n      'Quiz Submitted At': timestamp,\n      'Quiz Source Page': sourcePage,\n      'Campaign Name': root.dataset.fqCampaign || 'Sidekick flavor quiz hybrid',\n      'Last Consent Form': root.dataset.fqSource || 'Sidekick flavor quiz',\n      'Last Email Consent Form': root.dataset.fqSource || 'Sidekick flavor quiz',\n      'Last Consent Text Version': root.dataset.fqConsentVersion || '',\n      'Last Consent Page URL': typeof window !== 'undefined' && window.location ? window.location.href : '',\n      'Last Email Consent Timestamp': timestamp,\n      'Last Consent Timestamp': timestamp,\n      'Last Email Consent Text': root.dataset.fqEmailConsentText || '',\n      'Email Marketing Consent': 'SUBSCRIBED',\n      'SMS Marketing Consent': 'NOT_SUBSCRIBED',\n      'Push Marketing Consent': 'NOT_SUBSCRIBED'\n    };\n\n    var firstKey = root.dataset.fqPrimaryAnswerKey;\n    if (firstKey && answers[firstKey] && answers[firstKey].value) {\n      props['Flavor Quiz Next Flavor'] = answers[firstKey].value;\n      props['Desired Next Flavor'] = answers[firstKey].value;\n    }\n\n    Object.keys(answers).forEach(function (k) {\n      var a = answers[k];\n      if (!a || !a.value) return;\n      var friendlyLabel = a.label || k;\n      props['Flavor Quiz - ' + friendlyLabel] = a.value;\n      props[friendlyLabel] = a.value;\n    });\n\n    return props;\n  }\n\n  function klaviyoSubscribe(config, email, properties) {\n    var endpoint = 'https://a.klaviyo.com/client/subscriptions/?company_id=' +\n      encodeURIComponent(config.klaviyoCompanyId);\n\n    return fetch(endpoint, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        'Accept': 'application/json',\n        'revision': config.klaviyoRevision || KLAVIYO_REVISION\n      },\n      body: JSON.stringify({\n        data: {\n          type: 'subscription',\n          attributes: {\n            custom_source: config.source,\n            profile: {\n              data: {\n                type: 'profile',\n                attributes: {\n                  email: email,\n                  properties: properties,\n                  subscriptions: {\n                    email: { marketing: { consent: 'SUBSCRIBED' } }\n                  }\n                }\n              }\n            }\n          },\n          relationships: {\n            list: {\n              data: { type: 'list', id: config.klaviyoListId }\n            }\n          }\n        }\n      })\n    });\n  }\n\n  function wireMultiLimits(root) {\n    var steps = getQuestionSteps(root);\n    for (var i = 0; i < steps.length; i++) {\n      (function (step) {\n        var max = parseInt(step.dataset.fqMaxSelections || '0', 10);\n        if (!max) return;\n\n        var inputs = step.querySelectorAll('[data-fq-option-input]');\n        for (var j = 0; j < inputs.length; j++) {\n          inputs[j].addEventListener('change', function (e) {\n            var checkbox = e.target;\n            if (!checkbox || !checkbox.checked) return;\n            var checked = step.querySelectorAll('[data-fq-option-input]:checked');\n            if (checked.length > max) {\n              checkbox.checked = false;\n              showLimitMessage(step, 'Choose up to ' + max + '.');\n            }\n          });\n        }\n      })(steps[i]);\n    }\n  }\n\n  function wireOtherInputs(root) {\n    var steps = getQuestionSteps(root);\n    for (var i = 0; i < steps.length; i++) {\n      (function (step) {\n        var inputs = step.querySelectorAll('[data-fq-option-input]');\n        var otherWrap = step.querySelector('[data-fq-other-wrap]');\n        var otherInput = step.querySelector('[data-fq-other-input]');\n        if (!otherWrap) return;\n\n        function syncOther() {\n          var selected = step.querySelector('[data-fq-option-input]:checked');\n          var show = selected && parseOtherToken(selected.value);\n          otherWrap.hidden = !show;\n          if (!show) {\n            if (otherInput) otherInput.value = '';\n          } else if (otherInput) {\n            otherInput.focus();\n          }\n        }\n\n        for (var j = 0; j < inputs.length; j++) {\n          inputs[j].addEventListener('change', syncOther);\n        }\n        syncOther();\n\n        if (otherInput) {\n          var otherTimer = null;\n          otherInput.addEventListener('input', function () {\n            if (otherTimer) clearTimeout(otherTimer);\n            otherTimer = setTimeout(function () {\n              tryAutoAdvanceFromStep(root, step);\n            }, 450);\n          });\n          otherInput.addEventListener('keydown', function (e) {\n            if (e.key === 'Enter') {\n              e.preventDefault();\n              tryAutoAdvanceFromStep(root, step);\n            }\n          });\n        }\n      })(steps[i]);\n    }\n  }\n\n  function wireAutoAdvance(root) {\n    var steps = getQuestionSteps(root);\n    for (var i = 0; i < steps.length; i++) {\n      (function (step) {\n        if ((step.dataset.fqType || 'single') !== 'single') return;\n        var inputs = step.querySelectorAll('[data-fq-option-input]');\n        for (var j = 0; j < inputs.length; j++) {\n          inputs[j].addEventListener('change', function () {\n            tryAutoAdvanceFromStep(root, step);\n          });\n          // Re-tapping an already-selected answer (e.g. after Back) also advances\n          inputs[j].addEventListener('click', function () {\n            tryAutoAdvanceFromStep(root, step);\n          });\n        }\n      })(steps[i]);\n    }\n  }\n\n  function indexOfStep(root, el) {\n    var flow = getFlowSteps(root);\n    return flow.indexOf(el);\n  }\n\n  function goToEmailOrComplete(root) {\n    var emailStep = root.querySelector('[data-fq-step=\"email\"]');\n    if (emailStep) {\n      showStep(root, indexOfStep(root, emailStep));\n      return;\n    }\n    finishWithoutEmail(root);\n  }\n\n  function emitQuizIntent(rootEl) {\n    try {\n      var match = rootEl._fqRecommendation || {};\n      document.dispatchEvent(\n        new CustomEvent('sidekick:quiz-complete', {\n          detail: {\n            flavour: match.name || '',\n            flavourId: match.id || '',\n            source: rootEl.dataset.fqSourcePage || 'flavor-quiz'\n          }\n        })\n      );\n    } catch (e) {\n      // ignore\n    }\n  }\n\n  function showComplete(rootEl, hasEmail) {\n    hideAllFlow(rootEl);\n    var complete = rootEl.querySelector('[data-fq-step=\"complete\"]');\n    var questionActions = rootEl.querySelector('[data-fq-question-actions]');\n    var progress = rootEl.querySelector('[data-fq-progress]');\n    if (questionActions) questionActions.hidden = true;\n    if (progress) progress.hidden = true;\n    if (complete) complete.hidden = false;\n\n    var emailLine = rootEl.querySelector('[data-fq-success-email-line]');\n    var skipLine = rootEl.querySelector('[data-fq-success-skip-line]');\n    if (emailLine) emailLine.hidden = !hasEmail;\n    if (skipLine) skipLine.hidden = !!hasEmail;\n    emitQuizIntent(rootEl);\n  }\n\n  function storeAnonymousSubmission(rootEl, answers) {\n    try {\n      var match = rootEl._fqRecommendation || null;\n      var payload = {\n        submitted_at: new Date().toISOString(),\n        market: rootEl.dataset.fqMarket || 'NZ',\n        brand: rootEl.dataset.fqBrand || 'Sidekick',\n        source_page: rootEl.dataset.fqSourcePage || 'flavor-quiz',\n        recommended: match,\n        responses: answers\n      };\n      window.localStorage.setItem('skFlavorQuizLastSubmission', JSON.stringify(payload));\n    } catch (e) {\n      // localStorage may be blocked; ignore\n    }\n  }\n\n  function finishWithoutEmail(rootEl) {\n    var answers = collectAnswers(rootEl);\n    if (!rootEl._fqRecommendation) computeRecommendation(rootEl);\n    storeAnonymousSubmission(rootEl, answers);\n    showComplete(rootEl, false);\n  }\n\n  function addMatchToCart(shop) {\n    var variantId = Number(shop.getAttribute('data-fq-variant-id'));\n    var qty = parseInt(shop.getAttribute('data-fq-qty') || '3', 10) || 3;\n    if (!variantId) return Promise.resolve(false);\n    shop.setAttribute('aria-busy', 'true');\n    var original = shop.textContent;\n    shop.textContent = 'Adding\u2026';\n    return fetch('/cart/add.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n      body: JSON.stringify({ items: [{ id: variantId, quantity: qty }] })\n    })\n      .then(function (res) {\n        return res.json().then(function (data) {\n          if (!res.ok || data.status) {\n            throw new Error(data.description || data.message || 'Could not add to cart');\n          }\n          window.location.assign('/cart');\n          return true;\n        });\n      })\n      .catch(function () {\n        shop.textContent = original;\n        shop.removeAttribute('aria-busy');\n        window.location.assign(shop.getAttribute('href') || '/collections/sidekick-soda');\n        return false;\n      });\n  }\n\n  function init(root) {\n    if (root.dataset.fqInit === '1') return;\n    root.dataset.fqInit = '1';\n\n    if (!getQuestionSteps(root).length) return;\n\n    var config = {\n      klaviyoCompanyId: root.dataset.klaviyoKey,\n      klaviyoListId: root.dataset.klaviyoListId,\n      klaviyoRevision: root.dataset.klaviyoRevision || KLAVIYO_REVISION,\n      source: root.dataset.fqSource || 'Sidekick flavor quiz'\n    };\n\n    wireOtherInputs(root);\n    wireMultiLimits(root);\n    wireAutoAdvance(root);\n    showStep(root, 0);\n\n    var shop = root.querySelector('[data-fq-result-shop]');\n    if (shop) {\n      shop.addEventListener('click', function (e) {\n        if (!shop.getAttribute('data-fq-variant-id')) return;\n        e.preventDefault();\n        addMatchToCart(shop);\n      });\n    }\n\n    var backBtns = root.querySelectorAll('[data-fq-back]');\n    for (var b = 0; b < backBtns.length; b++) {\n      backBtns[b].addEventListener('click', function () {\n        if (root._fqAdvanceTimer) {\n          clearTimeout(root._fqAdvanceTimer);\n          root._fqAdvanceTimer = null;\n        }\n        var idx = getStepIndex(root);\n        if (idx > 0) showStep(root, idx - 1);\n      });\n    }\n\n    var nextBtn = root.querySelector('[data-fq-next]');\n    if (nextBtn) {\n      nextBtn.addEventListener('click', function () {\n        var idx = getStepIndex(root);\n        var flow = getFlowSteps(root);\n        var current = flow[idx];\n        if (!current) return;\n\n        var stepType = current.getAttribute('data-fq-step');\n        if (stepType === 'email' || stepType === 'result') return;\n\n        advanceFromQuestion(root, current);\n      });\n    }\n\n    var skipQuestion = root.querySelector('[data-fq-skip-question]');\n    if (skipQuestion) {\n      skipQuestion.addEventListener('click', function () {\n        var idx = getStepIndex(root);\n        var flow = getFlowSteps(root);\n        var current = flow[idx];\n        if (!current || current.getAttribute('data-fq-step') !== 'question') return;\n        if (current.dataset.fqRequired === 'true') return;\n        // Optional skip \u2014 clear validation and move on\n        clearError(current);\n        if (idx < flow.length - 1) {\n          showStep(root, idx + 1);\n          return;\n        }\n        finishWithoutEmail(root);\n      });\n    }\n\n    var continueVote = root.querySelector('[data-fq-continue-vote]');\n    if (continueVote) {\n      continueVote.addEventListener('click', function () {\n        var voteSteps = getVoteSteps(root);\n        if (voteSteps.length) {\n          showStep(root, indexOfStep(root, voteSteps[0]));\n          return;\n        }\n        goToEmailOrComplete(root);\n      });\n    }\n\n    var skipVote = root.querySelector('[data-fq-skip-vote]');\n    if (skipVote) {\n      skipVote.addEventListener('click', function () {\n        goToEmailOrComplete(root);\n      });\n    }\n\n    var form = root.querySelector('[data-fq-form]');\n    if (form) {\n      form.addEventListener('submit', function (e) {\n        e.preventDefault();\n        var emailStep = root.querySelector('[data-fq-step=\"email\"]');\n        if (!emailStep) return;\n\n        var email = validateEmailStep(emailStep, root);\n        if (!email) return;\n\n        var finder = getFinderSteps(root);\n        for (var i = 0; i < finder.length; i++) {\n          if (!validateQuestionStep(finder[i])) {\n            showStep(root, indexOfStep(root, finder[i]));\n            return;\n          }\n        }\n\n        var submitBtn = root.querySelector('[data-fq-submit]');\n        if (submitBtn) submitBtn.setAttribute('disabled', 'true');\n\n        if (!root._fqRecommendation) computeRecommendation(root);\n        var answers = collectAnswers(root);\n        var properties = buildKlaviyoProperties(root, email, answers);\n\n        klaviyoSubscribe(config, email, properties)\n          .then(function (res) {\n            if (res.status === 202 || res.status === 200) {\n              var announcer = root.querySelector('[data-fq-announcer]');\n              if (announcer) announcer.textContent = 'Quiz complete';\n              showComplete(root, true);\n              return;\n            }\n            return res.json().then(function (body) {\n              var detail = (body && body.errors && body.errors[0] && body.errors[0].detail) ||\n                'Something went wrong. Please try again.';\n              throw new Error(detail);\n            });\n          })\n          .catch(function (err) {\n            if (submitBtn) submitBtn.removeAttribute('disabled');\n            showError(emailStep, err && err.message ? err.message : 'Something went wrong. Please try again.');\n          });\n      });\n    }\n\n    var skipBtn = root.querySelector('[data-fq-skip]');\n    if (skipBtn) {\n      skipBtn.addEventListener('click', function () {\n        var emailStep = root.querySelector('[data-fq-step=\"email\"]');\n        if (emailStep) clearError(emailStep);\n\n        var finder = getFinderSteps(root);\n        for (var i = 0; i < finder.length; i++) {\n          if (!validateQuestionStep(finder[i])) {\n            showStep(root, indexOfStep(root, finder[i]));\n            return;\n          }\n        }\n\n        finishWithoutEmail(root);\n      });\n    }\n  }\n\n  function boot() {\n    var roots = document.querySelectorAll('[data-flavor-quiz]');\n    for (var i = 0; i < roots.length; i++) init(roots[i]);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', boot);\n  } else {\n    boot();\n  }\n\n  document.addEventListener('shopify:section:load', boot);\n\n  window.SidekickFlavorQuiz = { init: init };\n})();\n"],
  "mappings": "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",
  "names": []
}
