{
  "version": 3,
  "sources": ["/cdn/shop/t/57/assets/mom-quiz.js?x=10927"],
  "sourcesContent": ["/* Made of More skin quiz. Replaces the Octane AI quiz.\n   Reads window.MOM_QUIZ_DATA (assets/mom-quiz-data.js) and mounts into [data-mom-quiz].\n   Test mode: add ?quiztest=1 to the page URL. Nothing is sent to Klaviyo or Meta,\n   payloads go to window.MOM_QUIZ_LOG and the console instead. */\n(function () {\n  'use strict';\n\n  if (!window.MOM_QUIZ_DATA) return;\n  var ORIGINAL = JSON.stringify(window.MOM_QUIZ_DATA);\n  /* theme editor: what the preview was showing, so a redraw after each edit stays put */\n  var lastPreview = null;\n\n  /* ---------- theme editor: each step and result is a block in the Skin quiz section ---------- */\n\n  var STEP_BLOCKS = {\n    intro: 'Explainer', name: 'First name', skin_type: 'Skin Type', skin_dramas: 'Hormonal Skin Changes',\n    menopause: 'Menopause / Peri', proof_general: 'Social Proof - General', proof_reactive: 'Social Proof - Reactive',\n    routine: 'Routine length', retinol: 'Retinol', weak_spot: 'Not Pulling Weight', age: 'How old are you?',\n    calculating: 'Calculating', email: 'Email Opt-in'\n  };\n  function resultBlockValue(type) {\n    /* result_s1a -> \"S1a - ...\" */\n    var m = /^result_s(\\d+[ab]?)$/.exec(type);\n    return m ? 'S' + m[1] + ' -' : null;\n  }\n  function readEdits(root) {\n    var node = root.querySelector('[data-mom-quiz-edits]');\n    if (!node) return [];\n    try { return JSON.parse(node.textContent) || []; } catch (e) { return []; }\n  }\n  function applyEdits(D, edits) {\n    var nameToken = function (t) { return String(t).replace(/\\[name\\]/gi, '@[First name](' + D.nameQuestion + ')'); };\n    var set = function (v) { return v != null && String(v).replace(/<[^>]*>/g, '').trim() !== ''; };\n    edits.forEach(function (b) {\n      var pageName = STEP_BLOCKS[b.type];\n      if (pageName) {\n        var p = D.pages.filter(function (x) { return x.name === pageName; })[0];\n        if (!p) return;\n        var q = p.questions[0];\n        var email = q.type === 'email';\n        if (set(b.headline)) { if (email) p.title = nameToken(b.headline); else q.title = nameToken(b.headline); }\n        if (set(b.subheading)) { if (email) p.subtitle = nameToken(b.subheading); else q.subtitle = nameToken(b.subheading); }\n        if (set(b.body)) q.top = [{ t: 'html', html: nameToken(b.body) }].concat((q.top || []).filter(function (c) { return c.t === 'loader'; }));\n        if (set(b.button)) q.button = b.button;\n        if (set(b.placeholder)) q.placeholder = b.placeholder;\n        var pn = p.panel ? JSON.parse(JSON.stringify(p.panel)) : {};\n        if (b.photo) { pn.img = b.photo; pn.pos = b.focal || null; delete pn.fit; delete pn.bg; }\n        if (b.show_photo === false) delete pn.img;\n        pn.stat = b.stat || ''; pn.text = b.stat_text || ''; pn.quote = b.quote || ''; pn.source = b.source || '';\n        p.panel = pn.img || pn.stat || pn.text || pn.quote ? pn : null;\n        b.target = { page: pageName };\n        return;\n      }\n      var value = resultBlockValue(b.type);\n      var r = value && D.results.filter(function (x) { return x.value.indexOf(value) === 0; })[0];\n      if (!r) return;\n      var main = r.blocks[0] || {}, dr = r.blocks[1] || {}, up = r.blocks[2] || {};\n      var htmls = function (list) { return (list || []).filter(function (c) { return c.t === 'html'; }); };\n      var items = function (old, handles) {\n        return handles.map(function (h) { return (old || []).filter(function (i) { return i.handle === h; })[0] || { handle: h }; });\n      };\n      if (set(b.headline)) r.title = nameToken(b.headline);\n      if (set(b.code_line) && main.top && main.top[0]) main.top[0].text = b.code_line;\n      if (b.products && b.products.length) main.items = items(main.items, b.products);\n      (main.bottom || []).forEach(function (c) { if (c.t === 'video' && set(b.video)) c.id = b.video; });\n      var mh = htmls(main.bottom);\n      if (set(b.why) && mh[0]) mh[0].html = b.why;\n      if (set(b.founder_note) && mh[1]) mh[1].html = b.founder_note;\n      (dr.bottom || []).forEach(function (c) { if (c.t === 'text' && set(b.dr_heading)) c.text = b.dr_heading; });\n      if (set(b.dr_note) && htmls(dr.bottom)[0]) htmls(dr.bottom)[0].html = b.dr_note;\n      (up.top || []).forEach(function (c) { if (c.t === 'text' && set(b.upsell_heading)) c.text = b.upsell_heading; });\n      if (set(b.upsell_text) && htmls(up.top)[0]) htmls(up.top)[0].html = b.upsell_text;\n      if (b.upsell_products && b.upsell_products.length) up.items = items(up.items, b.upsell_products);\n      b.target = { result: r.value };\n    });\n    return D;\n  }\n\n  function boot() {\n    var root = document.querySelector('[data-mom-quiz]');\n    if (!root || root.__momQuiz) return;\n    root.__momQuiz = true;\n    var EDITS = readEdits(root);\n    var DATA = applyEdits(JSON.parse(ORIGINAL), EDITS);\n\n    var DESIGN = !!(window.Shopify && window.Shopify.designMode);\n    var TEST = DESIGN || /[?&]quiztest=1\\b/.test(location.search);\n    var COMPANY = root.getAttribute('data-klaviyo-company') || '';\n    var SOURCE = root.getAttribute('data-klaviyo-source') || 'Skin quiz';\n    var KL_REVISION = '2025-01-15';\n    /* results layout: \"v1\" = Octane-style long page, \"v2\" = hero layout, \"split\" = 50/50 test (kept per visitor) */\n    /* results layout: v1 Original, v2 Hero product first, v3 Skin report. Tests split visitors evenly and\n       each visitor keeps the layout they were given */\n    var LAYOUT = (location.search.match(/[?&]layout=(v1|v2|v3)\\b/) || [])[1] || root.getAttribute('data-results-layout') || 'v1';\n    /* in the theme editor, show the layout picked in \"Layout to preview in the editor\" */\n    if (window.Shopify && window.Shopify.designMode && /^v[123]$/.test(root.getAttribute('data-editor-layout') || '')) LAYOUT = root.getAttribute('data-editor-layout');\n    var ARMS = { split: ['v1', 'v2'], split23: ['v2', 'v3'], split123: ['v1', 'v2', 'v3'] }[LAYOUT];\n    if (ARMS) {\n      try {\n        var kept = localStorage.getItem('momq_layout');\n        LAYOUT = ARMS.indexOf(kept) > -1 ? kept : ARMS[Math.floor(Math.random() * ARMS.length)];\n        localStorage.setItem('momq_layout', LAYOUT);\n      } catch (e) { LAYOUT = ARMS[0]; }\n    }\n    /* anonymous quiz counters for the Made of More dashboard: no cookies, no IDs, no answers beyond the result */\n    var METRICS_URL = root.getAttribute('data-metrics-url') || 'https://madeofmore-dashboard.vercel.app/api/quiz';\n    var COUNTED = { quiz_view: 'view', quiz_start: 'start', quiz_step: 'step', quiz_complete: 'complete', quiz_add_to_cart: 'atc', quiz_copy_code: 'code', quiz_video_open: 'video', quiz_return: 'return' };\n    var REVIEWS_STORE = root.getAttribute('data-reviews-store') || 'madeofmore.co.uk';\n    var NAME_TOKEN = /@\\[[^\\]]*\\]\\(([0-9a-f]+)\\)/g;\n    window.MOM_QUIZ_LOG = [];\n\n    var pages = DATA.pages;\n    var pageIndex = {};\n    pages.forEach(function (p, i) { pageIndex[p.id] = i; });\n    var questionById = {};\n    pages.forEach(function (p) { p.questions.forEach(function (q) { questionById[q.id] = q; }); });\n\n    var state = { answers: {}, history: [], current: 0, started: false, email: '' };\n    var productCache = {};\n    var timer = null;\n\n    /* ---------- helpers ---------- */\n\n    function el(tag, cls, html) {\n      var e = document.createElement(tag);\n      if (cls) e.className = cls;\n      if (html != null) e.innerHTML = html;\n      return e;\n    }\n    function esc(s) {\n      return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) {\n        return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\n      });\n    }\n    function firstName() {\n      var v = state.answers[DATA.nameQuestion];\n      return (typeof v === 'string' ? v : '').trim();\n    }\n    function fillName(text) {\n      var s = String(text || '');\n      if (firstName()) return s.replace(NAME_TOKEN, function () { return esc(firstName()); });\n      /* no name (e.g. a shared results link): drop \"Name, \" and capitalise what follows */\n      return s.replace(/@\\[[^\\]]*\\]\\([0-9a-f]+\\)\\s*,?\\s*(\\S)?/g, function (m, c) { return c ? c.toUpperCase() : ''; });\n    }\n    function variantName(t) {\n      return String(t || '').replace(/\\s+[-\\u2013\\u2014]\\s+/g, ', ');\n    }\n    function money(cents) {\n      return '\u00A3' + (cents / 100).toFixed(2);\n    }\n    function log(kind, payload) {\n      window.MOM_QUIZ_LOG.push({ kind: kind, payload: payload });\n      if (TEST) console.log('[mom-quiz test]', kind, payload);\n    }\n    /* Meta pixel. The site's page views, carts and purchases go through Shopify's Facebook & Instagram app;\n       the quiz sends its own events from the page, so it loads the pixel itself when nothing else has\n       (no page view, so nothing is counted twice) and only when the visitor allows marketing cookies. */\n    function marketingAllowed() {\n      var cp = window.Shopify && window.Shopify.customerPrivacy;\n      try { return !cp || !cp.marketingAllowed || cp.marketingAllowed(); } catch (e) { return true; }\n    }\n    function metaPixel() {\n      if (TEST || !marketingAllowed()) return null;\n      var id = root.getAttribute('data-meta-pixel') || (DATA.pixel && DATA.pixel.id);\n      if (!window.fbq && id) {\n        /* Meta's standard base code, without the PageView */\n        var n = window.fbq = function () { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments); };\n        if (!window._fbq) window._fbq = n;\n        n.push = n; n.loaded = true; n.version = '2.0'; n.queue = [];\n        var t = document.createElement('script');\n        t.async = true; t.src = 'https://connect.facebook.net/en_US/fbevents.js';\n        document.head.appendChild(t);\n      }\n      if (window.fbq && id && !metaPixel.ready) {\n        var known = false;\n        try { known = window.fbq.getState && window.fbq.getState().pixels.some(function (p) { return p.id === id; }); } catch (e) {}\n        if (!known) window.fbq('init', id);\n        metaPixel.ready = true;\n      }\n      return window.fbq || null;\n    }\n    function pixel(name, params) {\n      if (!name) return;\n      log('pixel', { custom: name, params: params || {} });\n      var fbq = metaPixel();\n      try { if (fbq) fbq('trackCustom', name, params || {}); } catch (e) {}\n    }\n    /* Meta's standard Lead event when they give their email, so quiz ads can optimise for leads.\n       Giving the email is the last step, so it also sends CompleteRegistration: the quiz campaign\n       (\"Lead Completions\") optimises for that, and nothing else on the site sends it. */\n    function pixelLead(result) {\n      var params = { content_name: 'Skin quiz', content_category: result ? result.value : '' };\n      log('pixel', { standard: 'Lead', params: params });\n      log('pixel', { standard: 'CompleteRegistration', params: params });\n      var fbq = metaPixel();\n      try { if (fbq) fbq('track', 'Lead', params); } catch (e) {}\n      try { if (fbq) fbq('track', 'CompleteRegistration', { content_name: params.content_name, status: true }); } catch (e) {}\n    }\n    function track(name, params) {\n      log('analytics', { name: name, params: params });\n      if (TEST) return;\n      try { if (window.gtag) window.gtag('event', name, params || {}); } catch (e) {}\n      count(name, params || {});\n    }\n    function count(name, params) {\n      var ev = COUNTED[name];\n      if (!ev || !METRICS_URL) return;\n      var detail = ev === 'step' ? params.step + ':' + params.name : ev === 'complete' ? params.result : ev === 'atc' ? params.product : '';\n      var body = JSON.stringify({ e: ev, l: LAYOUT, d: detail || '' });\n      try {\n        if (navigator.sendBeacon) navigator.sendBeacon(METRICS_URL, new Blob([body], { type: 'text/plain' }));\n        else fetch(METRICS_URL, { method: 'POST', body: body, keepalive: true, mode: 'no-cors' });\n      } catch (e) {}\n    }\n\n    /* ---------- rules (same semantics as Octane targeting) ---------- */\n\n    function answerSet(qid) {\n      var v = state.answers[qid];\n      if (v == null) return [];\n      return Array.isArray(v) ? v : [v];\n    }\n    function test(rule) {\n      if (!rule) return true;\n      var op = rule[0];\n      if (op === 'all') return rule.slice(1).every(test);\n      if (op === 'any') return rule.slice(1).some(test);\n      var have = answerSet(rule[1]);\n      var vals = rule.slice(2);\n      var hasAny = vals.some(function (v) { return have.indexOf(v) > -1; });\n      if (op === 'value' || op === 'set_includes') return hasAny;\n      if (op === 'set_excludes') return !hasAny;\n      if (op === 'set_equals') {\n        return have.length === vals.length && vals.every(function (v) { return have.indexOf(v) > -1; });\n      }\n      return false;\n    }\n    /* Results blocks: a skipped optional question counts as its first answer\n       (e.g. \"No dryness\"), so people who skip still see the standard add-ons.\n       Only used for which blocks show; the answers sent to Klaviyo are untouched. */\n    function blockTest(rule) {\n      var saved = state.answers, filled = {};\n      Object.keys(saved).forEach(function (k) { filled[k] = saved[k]; });\n      pages.forEach(function (p) {\n        if (!p.skip) return;\n        p.questions.forEach(function (q) {\n          if (filled[q.id] == null && q.options && q.options.length) filled[q.id] = q.multi ? [q.options[0].id] : q.options[0].id;\n        });\n      });\n      state.answers = filled;\n      try { return test(rule); } finally { state.answers = saved; }\n    }\n    function pickResult() {\n      for (var i = 0; i < DATA.results.length; i++) {\n        var r = DATA.results[i];\n        if (r.rule && test(r.rule)) return r;\n      }\n      for (var j = 0; j < DATA.results.length; j++) if (!DATA.results[j].rule) return DATA.results[j];\n      return DATA.results[DATA.results.length - 1];\n    }\n    function nextPage(i) {\n      var p = pages[i];\n      if (p.next) {\n        for (var k = 0; k < p.next.length; k++) {\n          if (test(p.next[k].rule) && pageIndex[p.next[k].to] != null) return pageIndex[p.next[k].to];\n        }\n      }\n      if (p.goto && pageIndex[p.goto] != null) return pageIndex[p.goto];\n      return i + 1;\n    }\n\n    /* ---------- content blocks ---------- */\n\n    function renderContent(list, parent) {\n      (list || []).forEach(function (c) {\n        var node;\n        if (c.t === 'html') node = el('div', 'momq-rich', fillName(c.html));\n        else if (c.t === 'text') {\n          var tag = c.kind === 'heading' ? 'h3' : c.kind === 'subheading' ? 'p' : 'p';\n          node = el(tag, 'momq-text momq-text--' + (c.kind || 'body'), fillName(esc(c.text)));\n          node.style.textAlign = c.align || 'center';\n        } else if (c.t === 'img') {\n          node = el('div', 'momq-img');\n          var img = el('img');\n          img.src = c.url; img.alt = c.alt || ''; img.loading = 'lazy'; img.decoding = 'async';\n          if (c.max) img.style.maxWidth = c.max + 'px';\n          node.appendChild(img);\n        } else if (c.t === 'video') {\n          node = videoBlock(c.id);\n        } else if (c.t === 'loader') {\n          node = el('div', 'momq-loader');\n          node.setAttribute('role', 'status');\n          node.setAttribute('aria-label', 'Loading');\n        }\n        if (node) parent.appendChild(node);\n      });\n    }\n    function videoBlock(id) {\n      var wrap = el('div', 'momq-video');\n      var btn = el('button', 'momq-video__poster');\n      btn.type = 'button';\n      btn.setAttribute('aria-label', 'Play video');\n      btn.style.backgroundImage = 'url(https://i.ytimg.com/vi/' + id + '/hqdefault.jpg)';\n      btn.innerHTML = '<span class=\"momq-video__play\" aria-hidden=\"true\"></span>';\n      btn.addEventListener('click', function () {\n        var f = el('iframe');\n        f.src = 'https://www.youtube-nocookie.com/embed/' + id + '?autoplay=1&rel=0';\n        f.allow = 'autoplay; encrypted-media; picture-in-picture';\n        f.allowFullscreen = true;\n        f.title = 'Video';\n        wrap.innerHTML = '';\n        wrap.appendChild(f);\n      });\n      wrap.appendChild(btn);\n      return wrap;\n    }\n\n    /* ---------- question pages ---------- */\n\n    function progress(i) {\n      var total = pages.length;\n      var bar = el('div', 'momq-progress');\n      var fill = el('div', 'momq-progress__fill');\n      fill.style.width = Math.max(4, Math.round((i / (total - 1)) * 100)) + '%';\n      bar.appendChild(fill);\n      return bar;\n    }\n\n    /* side panel: brand photo (desktop, plus mobile on the intro) with a stat or quote card */\n    function cdnImg(u, w) { return u + (u.indexOf('?') < 0 ? '?' : '&') + 'width=' + w; }\n    function panel(c) {\n      var side = el('div', 'momq-side');\n      var u = c.img;\n      /* phones only get the card (except the intro), so don't download the photo there */\n      if (u && (c.mobileImg || !window.matchMedia || window.matchMedia('(min-width: 768px)').matches)) side.innerHTML = '<img class=\"momq-side__img\" src=\"' + esc(cdnImg(u, 900)) + '\" srcset=\"' +\n        [600, 900, 1200, 1600].map(function (w) { return esc(cdnImg(u, w)) + ' ' + w + 'w'; }).join(', ') +\n        '\" sizes=\"(min-width: 768px) 50vw, 100vw\" alt=\"\" decoding=\"async\"' + (c.pos || c.fit ? ' style=\"' + (c.pos ? 'object-position:' + esc(c.pos) + ';' : '') + (c.fit ? 'object-fit:' + esc(c.fit) : '') + '\"' : '') + '>';\n      if (c.bg && side.firstChild) side.style.background = c.bg;\n      var im = side.firstChild;\n      if (im) { if (im.complete) im.classList.add('is-in'); else im.onload = function () { im.classList.add('is-in'); }; }\n      return side;\n    }\n    /* award roundels (winners only) */\n    function awardsRow() {\n      if (!DATA.awards || !DATA.awards.length) return null;\n      var row = el('div', 'momq-awards');\n      row.setAttribute('aria-label', 'Award winning skincare');\n      row.innerHTML = '<span class=\"momq-awards__label\">Award winning skincare</span>' + DATA.awards.map(function (a) {\n        return '<img src=\"' + esc(cdnImg(a.img, 160)) + '\" alt=\"' + esc(a.alt) + '\" width=\"72\" height=\"72\" loading=\"lazy\" decoding=\"async\">';\n      }).join('');\n      return row;\n    }\n    /* the stat or quote card sits under the answers, on desktop and phones alike, so the photo stays clean */\n    function statCard(c) {\n      if (!c || !(c.stat || c.text || c.quote)) return null;\n      var card = el('div', 'momq-card' + (c.quote ? ' momq-card--quote' : ''));\n      card.innerHTML = (c.stat ? '<span class=\"momq-card__stat\">' + esc(c.stat) + '</span>' : '') +\n        (c.text ? '<span class=\"momq-card__text\">' + esc(c.text) + '</span>' : '') +\n        (c.quote ? '<span class=\"momq-card__quote\">&ldquo;' + esc(c.quote) + '&rdquo;</span>' : '') +\n        (c.source ? '<span class=\"momq-card__source\">' + esc(c.source) + '</span>' : '');\n      return card;\n    }\n\n    var stepsSeen = {};\n    function show(i, fromBack) {\n      if (DESIGN && pages[i]) lastPreview = { page: pages[i].name };\n      clearTimeout(timer);\n      if (!stepsSeen[i]) {\n        stepsSeen[i] = true;\n        if (i > 0) track('quiz_step', { step: i, name: pages[i] && pages[i].name });\n      }\n      state.current = i;\n      var p = pages[i];\n      if (!p) return finish();\n      root.innerHTML = '';\n      /* a panel with a photo sits beside the question; a stat card on its own goes underneath */\n      var photo = p.panel && p.panel.img;\n      var shell = el('div', 'momq-shell' + (photo ? ' momq-shell--split' + (p.panel.mobileImg ? ' momq-shell--mimg' : '') : ''));\n      if (photo) shell.appendChild(panel(p.panel));\n      if (pages[i + 1] && pages[i + 1].panel && pages[i + 1].panel.img) panel(pages[i + 1].panel); /* warm the next photo */\n      var main = el('div', 'momq-main');\n      if (i > 0) main.appendChild(progress(i));\n      var form = el('form', 'momq-page');\n      form.noValidate = true;\n      var ownTitles = p.questions.some(function (q) { return q.title && q.title !== p.title; });\n      if (p.title) form.appendChild(el(ownTitles ? 'p' : 'h2', ownTitles ? 'momq-kicker' : 'momq-heading', fillName(esc(p.title))));\n      if (p.subtitle) form.appendChild(el('p', 'momq-sub', fillName(esc(p.subtitle))));\n\n      var controls = [];\n      p.questions.forEach(function (q) { controls.push(renderQuestion(q, form, i)); });\n\n      var actions = el('div', 'momq-actions');\n      var autoOnly = p.questions.length === 1 && p.questions[0].type === 'explainer' && p.questions[0].showButton === false;\n      var singleChoice = p.questions.length === 1 && p.questions[0].options && !p.questions[0].multi;\n      var next = el('button', 'momq-btn momq-btn--primary', esc(p.questions[0].button || 'Continue'));\n      next.type = 'submit';\n      if (!autoOnly && !singleChoice) actions.appendChild(next);\n      var testSkip = TEST && !DESIGN && p.questions.some(function (q) { return q.type === 'email'; });\n      if (p.skip || testSkip) {\n        /* optional question: move on with no answer saved (the email step too, in test mode only) */\n        var skip = el('button', 'momq-back momq-skip', esc(p.skip || 'Skip (test mode)'));\n        skip.type = 'button';\n        skip.addEventListener('click', function () {\n          p.questions.forEach(function (q) { delete state.answers[q.id]; });\n          advance(i);\n        });\n        actions.appendChild(skip);\n      }\n      if (state.history.length) {\n        var back = el('button', 'momq-back', '&larr; Back');\n        back.type = 'button';\n        back.addEventListener('click', goBack);\n        actions.appendChild(back);\n      }\n      form.appendChild(actions);\n      var err = el('p', 'momq-error');\n      err.setAttribute('role', 'alert');\n      form.insertBefore(err, actions);\n\n      form.addEventListener('submit', function (e) {\n        e.preventDefault();\n        for (var k = 0; k < controls.length; k++) {\n          var msg = controls[k] && controls[k].validate();\n          if (msg) { err.textContent = msg; return; }\n        }\n        err.textContent = '';\n        controls.forEach(function (c) { if (c && c.commit) c.commit(); });\n        advance(i);\n      });\n      root.__submit = function () { form.requestSubmit ? form.requestSubmit() : form.dispatchEvent(new Event('submit', { cancelable: true })); };\n\n      main.appendChild(form);\n      shell.appendChild(main);\n      var awards = p.panel && p.panel.awards ? awardsRow() : null;\n      if (awards) main.appendChild(awards);\n      var card = statCard(p.panel);\n      if (card) main.appendChild(card);\n      root.appendChild(shell);\n\n      var t = p.questions[0].timer;\n      if (p.questions.length === 1 && p.questions[0].type === 'explainer' && t) {\n        timer = setTimeout(function () { if (state.current === i) root.__submit(); }, t * 1000);\n      }\n      var focusable = form.querySelector('input:not([type=hidden]), .momq-option');\n      if (fromBack !== 'initial') {\n        root.scrollIntoView({ block: 'start', behavior: 'smooth' });\n        if (focusable) setTimeout(function () { focusable.focus({ preventScroll: true }); }, 50);\n      }\n    }\n\n    function renderQuestion(q, form, pageI) {\n      var box = el('div', 'momq-q momq-q--' + q.type);\n      var multiPage = pages[pageI].questions.length > 1;\n      var heading = q.title && (q.title !== pages[pageI].title);\n      if (heading) box.appendChild(el(multiPage ? 'h3' : 'h2', 'momq-heading', fillName(esc(q.title))));\n      if (q.subtitle) box.appendChild(el('p', 'momq-sub', fillName(esc(q.subtitle))));\n      renderContent(q.top, box);\n      var ctl = null;\n\n      if (q.type === 'free_form_text' || q.type === 'email') {\n        var input = el('input', 'momq-input');\n        input.type = q.type === 'email' ? 'email' : 'text';\n        input.name = q.type === 'email' ? 'email' : 'q' + q.id;\n        input.autocomplete = q.type === 'email' ? 'email' : (q.id === DATA.nameQuestion ? 'given-name' : 'off');\n        input.placeholder = q.placeholder || (q.type === 'email' ? 'Enter your email' : '');\n        input.required = true;\n        input.value = q.type === 'email' ? state.email : (state.answers[q.id] || '');\n        input.setAttribute('aria-label', q.title || input.placeholder);\n        box.appendChild(input);\n        if (q.consent) box.appendChild(el('div', 'momq-consent', q.consent));\n        ctl = {\n          validate: function () {\n            var v = input.value.trim();\n            if (!v) return q.type === 'email' ? 'Please enter your email.' : 'Please fill this in to continue.';\n            if (q.type === 'email' && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/.test(v)) return 'Please check your email address.';\n            return '';\n          },\n          commit: function () {\n            var v = input.value.trim();\n            if (q.type === 'email') state.email = v; else state.answers[q.id] = v;\n          }\n        };\n      } else if (q.options) {\n        var list = el('div', 'momq-options' + (q.cols ? ' momq-options--grid' : ''));\n        if (q.cols) {\n          list.style.setProperty('--momq-cols', q.cols);\n          list.style.setProperty('--momq-cols-m', q.colsMobile || 2);\n        }\n        list.setAttribute('role', q.multi ? 'group' : 'radiogroup');\n        list.setAttribute('aria-label', q.title || 'Options');\n        var visible = q.options.filter(function (o) { return !o.rule || test(o.rule); });\n        var picked = answerSet(q.id).filter(function (id) {\n          return visible.some(function (o) { return o.id === id; });\n        });\n        q.options.forEach(function (o) {\n          if (visible.indexOf(o) < 0) return;\n          var b = el('button', 'momq-option' + (o.image ? ' momq-option--image' : ''));\n          b.type = 'button';\n          b.setAttribute(q.multi ? 'aria-pressed' : 'aria-checked', picked.indexOf(o.id) > -1 ? 'true' : 'false');\n          if (!q.multi) b.setAttribute('role', 'radio');\n          b.innerHTML = (o.image ? '<span class=\"momq-option__img\"><img src=\"' + esc(o.image) + '\" alt=\"\" loading=\"lazy\" decoding=\"async\"></span>' : '') +\n            '<span class=\"momq-option__text\">' + esc(o.text) + '</span>';\n          b.addEventListener('click', function () {\n            if (q.multi) {\n              var at = picked.indexOf(o.id);\n              if (at > -1) picked.splice(at, 1);\n              else {\n                /* \"None\" can't be combined with other answers */\n                var noneIds = q.options.filter(function (x) { return /^none$/i.test(x.text); }).map(function (x) { return x.id; });\n                if (noneIds.indexOf(o.id) > -1) picked = [];\n                else picked = picked.filter(function (id) { return noneIds.indexOf(id) < 0; });\n                if (picked.length >= (q.max || 99)) return;\n                picked.push(o.id);\n              }\n              list.querySelectorAll('.momq-option').forEach(function (x, xi) {\n                x.setAttribute('aria-pressed', picked.indexOf(visible[xi].id) > -1 ? 'true' : 'false');\n              });\n            } else {\n              picked = [o.id];\n              list.querySelectorAll('.momq-option').forEach(function (x) { x.setAttribute('aria-checked', 'false'); });\n              b.setAttribute('aria-checked', 'true');\n              if (pages[pageI].questions.length === 1) setTimeout(root.__submit, 180);\n            }\n          });\n          list.appendChild(b);\n        });\n        box.appendChild(list);\n        ctl = {\n          validate: function () {\n            if (!picked.length) return 'Please choose an option.';\n            if (q.multi && picked.length < (q.min || 1)) return 'Please choose at least ' + q.min + '.';\n            return '';\n          },\n          commit: function () {\n            state.answers[q.id] = q.multi ? picked.slice() : picked[0];\n            picked.forEach(function (id) {\n              var o = q.options.filter(function (x) { return x.id === id; })[0];\n              if (o && o.pixel) pixel(o.pixel);\n            });\n          }\n        };\n      } else if (q.type === 'explainer') {\n        ctl = { validate: function () { return ''; }, commit: function () {} };\n      }\n      renderContent(q.bottom, box);\n      form.appendChild(box);\n      return ctl;\n    }\n\n    function advance(i) {\n      if (!state.started) {\n        state.started = true;\n        pixel(DATA.pixel.start, { layout: LAYOUT });\n        track('quiz_start', { quiz: 'skin_quiz' });\n      }\n      var isEmail = pages[i].questions.some(function (q) { return q.type === 'email'; });\n      state.history.push(i);\n      if (isEmail) return finish();\n      var n = nextPage(i);\n      if (n >= pages.length) return finish();\n      show(n);\n    }\n    function goBack() {\n      if (!state.history.length) return;\n      show(state.history.pop(), 'back');\n    }\n\n    /* ---------- Klaviyo ---------- */\n\n    function propertyValue(q) {\n      var v = state.answers[q.id];\n      if (v == null) return null;\n      var byId = {};\n      (q.options || []).forEach(function (o) { byId[o.id] = o.value; });\n      if (Array.isArray(v)) return v.map(function (id) { return byId[id] || id; });\n      return byId[v] || v;\n    }\n    function resultUrl() {\n      /* answers only: the first name stays out of the link */\n      var a = {};\n      Object.keys(state.answers).forEach(function (k) { if (k !== DATA.nameQuestion) a[k] = state.answers[k]; });\n      var payload = { a: a, v: 1 };\n      var enc = btoa(unescape(encodeURIComponent(JSON.stringify(payload))));\n      return location.origin + location.pathname + '#r=' + encodeURIComponent(enc);\n    }\n    function klaviyoProperties(result) {\n      var props = {};\n      pages.forEach(function (p) {\n        p.questions.forEach(function (q) {\n          if (!q.key) return;\n          var v = propertyValue(q);\n          if (v != null) props[q.key] = v;\n        });\n      });\n      props[DATA.klaviyo.resultKey] = result.value;\n      props[DATA.klaviyo.urlKey] = resultUrl();\n      return props;\n    }\n    function klaviyoPost(path, body) {\n      var url = 'https://a.klaviyo.com/client/' + path + '/?company_id=' + encodeURIComponent(COMPANY);\n      log('klaviyo ' + path, body);\n      if (TEST || !COMPANY) return Promise.resolve({ test: true });\n      return fetch(url, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', revision: KL_REVISION },\n        body: JSON.stringify(body),\n        keepalive: true\n      }).then(function (r) {\n        if (!r.ok) throw new Error('Klaviyo ' + path + ' ' + r.status);\n        return r;\n      });\n    }\n    function sendToKlaviyo(result) {\n      var props = klaviyoProperties(result);\n      var profile = { email: state.email, properties: props };\n      if (firstName()) profile.first_name = firstName();\n      /* 1. profile properties first, so the welcome flow has them when the list add triggers it */\n      return klaviyoPost('profiles', { data: { type: 'profile', attributes: profile } })\n        .catch(function (e) { log('error', String(e)); })\n        .then(function () {\n          /* 2. marketing consent and list (same list Octane used, so the live flow keeps firing) */\n          return klaviyoPost('subscriptions', {\n            data: {\n              type: 'subscription',\n              attributes: {\n                custom_source: SOURCE,\n                profile: { data: { type: 'profile', attributes: { email: state.email } } }\n              },\n              relationships: { list: { data: { type: 'list', id: DATA.klaviyo.list } } }\n            }\n          });\n        })\n        .catch(function (e) { log('error', String(e)); })\n        .then(function () {\n          /* 3. completion event, same metric name as Octane used */\n          return klaviyoPost('events', {\n            data: {\n              type: 'event',\n              attributes: {\n                properties: props,\n                metric: { data: { type: 'metric', attributes: { name: DATA.klaviyo.event } } },\n                profile: { data: { type: 'profile', attributes: profile } }\n              }\n            }\n          });\n        })\n        .catch(function (e) { log('error', String(e)); });\n    }\n\n    /* ---------- results ---------- */\n\n    function finish() {\n      var result = pickResult();\n      state.result = result;\n      pixel(DATA.pixel.end, { result: result.value, layout: LAYOUT });\n      pixelLead(result);\n      track('quiz_complete', { quiz: 'skin_quiz', result: result.value, layout: LAYOUT });\n      try { if (window.klaviyo && window.klaviyo.identify && !TEST) window.klaviyo.identify({ email: state.email }); } catch (e) {}\n      sendToKlaviyo(result);\n      tagCart();\n      renderResult(result);\n    }\n\n    function loadProduct(handle) {\n      if (!productCache[handle]) {\n        productCache[handle] = fetch((window.Shopify && Shopify.routes && Shopify.routes.root || '/') + 'products/' + handle + '.js')\n          .then(function (r) { return r.ok ? r.json() : null; })\n          .catch(function () { return null; });\n      }\n      return productCache[handle];\n    }\n\n    function renderResult(result) {\n      if (DESIGN) lastPreview = { result: result.value };\n      if (LAYOUT === 'v3') return renderResultV3(result);\n      if (LAYOUT === 'v2') return renderResultV2(result);\n      return renderResultV1(result);\n    }\n\n    function renderResultV1(result) {\n      clearTimeout(timer);\n      root.innerHTML = '';\n      var wrap = el('div', 'momq-results');\n      wrap.appendChild(el('h2', 'momq-heading momq-heading--result', fillName(esc(result.title))));\n      var shown = {};\n      var routineShown = false;\n      result.blocks.forEach(function (b) {\n        if (b.rule && !blockTest(b.rule)) return;\n        var sec = el('section', 'momq-block');\n        renderContent(b.top, sec);\n        if (b.items) {\n          var grid = el('div', 'momq-products');\n          grid.style.setProperty('--momq-cols', b.cols || 3);\n          sec.appendChild(grid);\n          b.items.forEach(function (it) {\n            /* Octane listed some products in two blocks; show each once */\n            if (shown[it.handle]) return;\n            shown[it.handle] = 1;\n            var card = el('div', 'momq-product momq-product--loading');\n            grid.appendChild(card);\n            loadProduct(it.handle).then(function (p) { fillCard(card, p, it, b); });\n          });\n        }\n        if (b.items && !routineShown && !/upsell/i.test(b.name)) {\n          routineShown = true;\n          var rb = routineBox(b);\n          if (rb) sec.appendChild(rb);\n          else sec.appendChild(el('p', 'momq-trust-line', trustLine()));\n        }\n        renderContent(b.bottom, sec);\n        wrap.appendChild(sec);\n      });\n      var again = el('button', 'momq-back momq-restart', 'Retake the quiz');\n      again.type = 'button';\n      again.addEventListener('click', function () {\n        state = { answers: {}, history: [], current: 0, started: false, email: '' };\n        history.replaceState(null, '', location.pathname + location.search);\n        show(0);\n      });\n      wrap.appendChild(again);\n      root.appendChild(wrap);\n      root.scrollIntoView({ block: 'start', behavior: 'smooth' });\n      try { history.replaceState(null, '', location.pathname + location.search + resultUrl().slice(resultUrl().indexOf('#'))); } catch (e) {}\n    }\n\n    function fillCard(card, p, it, block) {\n      var variant = null;\n      if (p) {\n        if (it.variant) variant = p.variants.filter(function (v) { return v.id === it.variant; })[0];\n        if (!variant || !variant.available) variant = p.variants.filter(function (v) { return v.available; })[0] || variant;\n      }\n      if (!p || !variant || !variant.available) { card.remove(); return; }\n      card.classList.remove('momq-product--loading');\n      var url = (p.url || '/products/' + p.handle) + (it.variant ? '?variant=' + variant.id : '');\n      var img = variant.featured_image && variant.featured_image.src || p.featured_image;\n      var showVariant = p.variants.length > 1 && variant.title !== 'Default Title';\n      card.innerHTML =\n        '<a class=\"momq-product__img\" href=\"' + esc(url) + '\"><img src=\"' + esc(img) + (String(img).indexOf('?') > -1 ? '&' : '?') + 'width=400\" alt=\"' + esc(p.title) + '\" loading=\"lazy\" decoding=\"async\"></a>' +\n        '<a class=\"momq-product__title\" href=\"' + esc(url) + '\">' + esc(p.title) + '</a>' +\n        (showVariant ? '<p class=\"momq-product__variant\">' + esc(variantName(variant.title)) + '</p>' : '') +\n        '<p class=\"momq-product__price\">' +\n          (variant.compare_at_price > variant.price ? '<s>' + money(variant.compare_at_price) + '</s> ' : '') +\n          '<span>' + money(variant.price) + '</span></p>';\n      var btn = el('button', 'momq-btn momq-btn--cart', esc(block.button || 'Add to cart'));\n      btn.type = 'button';\n      btn.addEventListener('click', function () {\n        if (btn.getAttribute('data-added')) return openCart();\n        btn.disabled = true;\n        addToCart(variant.id).then(function () {\n          btn.disabled = false;\n          btn.setAttribute('data-added', '1');\n          btn.textContent = block.clicked || 'View cart';\n          track('quiz_add_to_cart', { result: state.result && state.result.value, product: p.handle, layout: LAYOUT });\n          openCart();\n        }).catch(function () {\n          btn.disabled = false;\n          btn.textContent = 'Try again';\n        });\n      });\n      card.appendChild(btn);\n    }\n\n    function tagCart(extra) {\n      /* order attributes, so the dashboard counts any order from this cart as a quiz order,\n         whatever code they use and wherever on the site they add products from */\n      if (TEST || !state.result) return Promise.resolve();\n      var attrs = { 'Quiz result': state.result.value, 'Quiz layout': LAYOUT };\n      if (extra) Object.keys(extra).forEach(function (k) { attrs[k] = extra[k]; });\n      return fetch((window.Shopify && Shopify.routes && Shopify.routes.root || '/') + 'cart/update.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ attributes: attrs })\n      }).catch(function () {});\n    }\n    function addToCart(id, skipCode) {\n      tagCart({ 'Quiz added from results': 'Yes' });\n      var added;\n      if (window.Carbon && window.Carbon.Cart && window.Carbon.Cart.addItemToCart) {\n        added = Promise.resolve(window.Carbon.Cart.addItemToCart(id, 1)).then(function (r) {\n          if (r === null) throw new Error('add failed');\n          return r;\n        });\n      } else {\n        added = fetch((window.Shopify && Shopify.routes && Shopify.routes.root || '/') + 'cart/add.js', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/json' },\n          body: JSON.stringify({ items: [{ id: id, quantity: 1 }] })\n        }).then(function (r) { if (!r.ok) throw new Error('add failed'); return r.json(); });\n      }\n      return skipCode ? added : added.then(function (r) { return applyQuizCode().then(function () { return r; }); });\n    }\n\n    /* the quiz code goes into the bag automatically when they add from their results.\n       Shopify uses whichever saves more per product, so it never costs them Bundle & Save */\n    var codeApplied = false;\n    function quizCode() {\n      var c = state.result && codeFrom(state.result.blocks);\n      return c ? c.code : '';\n    }\n    function applyQuizCode() {\n      var code = quizCode();\n      if (!code || codeApplied) return Promise.resolve();\n      var base = (window.Shopify && Shopify.routes && Shopify.routes.root || '/');\n      return fetch(base + 'cart.js').then(function (r) { return r.json(); }).then(function (cart) {\n        var codes = (cart.discount_codes || []).map(function (d) { return d.code; });\n        if (codes.some(function (c) { return c.toUpperCase() === code.toUpperCase(); })) { codeApplied = true; return; }\n        return fetch(base + 'cart/update.js', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/json' },\n          body: JSON.stringify({ discount: codes.concat(code).join(',') })\n        }).then(function () {\n          codeApplied = true;\n          try { if (window.Carbon && Carbon.Cart && Carbon.Cart.reRenderSections) Carbon.Cart.reRenderSections(); } catch (e) {}\n        });\n      }).catch(function () {});\n    }\n\n    /* ---------- \"add my routine\": the single products inside the recommendations, each once ---------- */\n\n    function routineHandles(block) {\n      var R = DATA.routine;\n      if (!R || !block || !block.items) return [];\n      var out = [];\n      block.items.forEach(function (it) {\n        if (R.skip.indexOf(it.handle) > -1) return;\n        (R.parts[it.handle] || (R.order.indexOf(it.handle) > -1 ? [it.handle] : [])).forEach(function (h) {\n          if (out.indexOf(h) < 0) out.push(h);\n        });\n      });\n      out.sort(function (a, b) { return R.order.indexOf(a) - R.order.indexOf(b); });\n      return out.length >= 2 ? out : [];\n    }\n    /* why this product is in their routine, from what they told us */\n    function answerTexts(suffix) {\n      var out = [];\n      Object.keys(questionById).forEach(function (id) {\n        var q = questionById[id];\n        if (q.key && q.key.slice(-suffix.length) === suffix) out = out.concat(optionText(id));\n      });\n      return out;\n    }\n    function routineWhy(handle) {\n      var R = DATA.routine, w = R && R.why && R.why[handle];\n      if (!w) return '';\n      var weak = answerTexts('routine_weakness');\n      var hit = Object.keys(w.weak || {}).filter(function (k) { return weak.some(function (t) { return t.indexOf(k) === 0; }); })[0];\n      if (hit) return w.weak[hit];\n      var mine = answerTexts('skin_concern').filter(function (t) { return (w.concerns || []).indexOf(t) > -1; })\n        .concat(answerTexts('skin_type').filter(function (t) { return (w.types || []).indexOf(t) > -1; }));\n      var nouns = [];\n      mine.forEach(function (t) { var n = R.nouns[t] || t.toLowerCase(); if (nouns.indexOf(n) < 0) nouns.push(n); });\n      nouns = nouns.slice(0, 3);\n      if (!nouns.length || !w.text) return w.base;\n      var list = nouns.length === 1 ? nouns[0] : nouns.slice(0, -1).join(', ') + ' and ' + nouns[nouns.length - 1];\n      return w.text.replace('{list}', list);\n    }\n    function freeDelivery() {\n      var v = parseFloat(root.getAttribute('data-free-delivery') || '');\n      if (!v) return '';\n      if (v >= 1000) v = v / 100;\n      return 'Free UK delivery over \u00A3' + (v % 1 ? v.toFixed(2) : v);\n    }\n    function trustLine() {\n      var bits = ['<a href=\"/pages/money-back-guarantee\">30 day money back guarantee</a>'];\n      if (freeDelivery()) bits.push(esc(freeDelivery()));\n      bits.push('Made in the UK, fragrance free');\n      return bits.join('<span aria-hidden=\"true\"> \u00B7 </span>');\n    }\n    function routineBox(block, steps, bare) {\n      var handles = routineHandles(block);\n      if (!handles.length) return null;\n      var box = el('section', 'momq-routine momq-routine--loading' + (steps ? ' momq-routine--steps' : ''));\n      Promise.all(handles.map(function (h) {\n        return loadProduct(h).then(function (p) { var v = p && pickVariant(p, { handle: h }); return v ? { p: p, v: v } : null; });\n      })).then(function (list) {\n        list = list.filter(Boolean);\n        if (list.length < 2) { box.remove(); return; }\n        var R = DATA.routine;\n        var total = list.reduce(function (t, x) { return t + x.v.price; }, 0);\n        var pct = list.length >= 3 ? R.bundle['3'] : R.bundle['2'];\n        box.classList.remove('momq-routine--loading');\n        box.innerHTML =\n          (steps ? '<span class=\"momq-routine__badge\">Best value</span>' : '') +\n          (bare ? '' : '<h3 class=\"momq-r2-title\">your routine</h3>' +\n          (steps ? '<p class=\"momq-routine__sub\">Everything you need, in the order you use it.</p>' : '')) +\n          '<ol class=\"momq-routine__list\">' + list.map(function (x, n) {\n            var img = x.v.featured_image && x.v.featured_image.src || x.p.featured_image;\n            return '<li class=\"momq-routine__item\"><img src=\"' + esc(imgUrl(img, steps ? 400 : 200)) + '\" alt=\"\" loading=\"lazy\" decoding=\"async\">' +\n              '<span><span class=\"momq-routine__step\">' + (steps ? 'Step ' + (n + 1) + ': ' : '') + esc(R.labels[x.p.handle] || '') + '</span>' +\n              '<a href=\"' + esc(x.p.url || '/products/' + x.p.handle) + '\">' + esc(x.p.title) + '</a>' +\n              (routineWhy(x.p.handle) ? '<span class=\"momq-routine__why\">' + esc(routineWhy(x.p.handle)) + '</span>' : '') + '</span>' +\n              '<span class=\"momq-routine__price\">' + money(x.v.price) + '</span></li>';\n          }).join('') + '</ol>' +\n          '<p class=\"momq-routine__total\"><s>' + money(total) + '</s> <strong>' + money(Math.round(total * (100 - pct) / 100)) + '</strong>' +\n          ' <em class=\"momq-save\">Save ' + pct + '% with Bundle &amp; Save</em></p>';\n        var btn = el('button', 'momq-btn momq-btn--cart momq-btn--hero', 'Add my routine' + (steps ? ', save ' + pct + '%' : ''));\n        btn.type = 'button';\n        btn.addEventListener('click', function () {\n          if (btn.getAttribute('data-added')) return openCart();\n          btn.disabled = true;\n          btn.textContent = 'Adding\u2026';\n          list.reduce(function (chain, x) { return chain.then(function () { return addToCart(x.v.id, true); }); }, Promise.resolve())\n            .then(applyQuizCode)\n            .then(function () {\n              btn.disabled = false;\n              btn.setAttribute('data-added', '1');\n              btn.textContent = 'View bag';\n              track('quiz_add_to_cart', { result: state.result && state.result.value, product: 'routine: ' + handles.join(' + '), layout: LAYOUT });\n              openCart();\n            })\n            .catch(function () { btn.disabled = false; btn.textContent = 'Try again'; });\n        });\n        box.appendChild(btn);\n        if (quizCode()) box.appendChild(el('p', 'momq-routine__note', 'Your ' + esc(quizCode()) + ' quiz discount goes in your bag too, and Shopify gives you whichever saves you more.'));\n        box.appendChild(el('p', 'momq-trust-line', trustLine()));\n      });\n      return box;\n    }\n    function openCart() {\n      var t = document.querySelector('.header-menu__cart-aside__trigger');\n      if (t) t.click(); else location.href = '/cart';\n    }\n\n    /* ---------- results layout v2: hero product first ---------- */\n\n    function pickVariant(p, it) {\n      var v = null;\n      if (it.variant) v = p.variants.filter(function (x) { return x.id === it.variant; })[0];\n      if (!v || !v.available) v = p.variants.filter(function (x) { return x.available; })[0] || v;\n      return v && v.available ? v : null;\n    }\n    function imgUrl(src, w) {\n      src = String(src || '');\n      if (src.indexOf('//') === 0) src = 'https:' + src;\n      return src + (src.indexOf('?') > -1 ? '&' : '?') + 'width=' + w;\n    }\n    var ratingCache = {};\n    function loadRating(p) {\n      var skus = p.variants.map(function (v) { return v.sku; }).filter(Boolean);\n      if (!skus.length) return Promise.resolve(null);\n      var key = skus.join(';');\n      if (!ratingCache[key]) {\n        ratingCache[key] = fetch('https://api.reviews.io/product/rating-batch?store=' + encodeURIComponent(REVIEWS_STORE) +\n          '&lang=en&sku=' + encodeURIComponent(key))\n          .then(function (r) { return r.ok ? r.json() : []; })\n          .then(function (rows) {\n            var n = 0, sum = 0;\n            (rows || []).forEach(function (r) { var c = +r.num_ratings || 0; n += c; sum += c * (+r.average_rating || 0); });\n            return n ? { avg: sum / n, count: n } : null;\n          })\n          .catch(function () { return null; });\n      }\n      return ratingCache[key];\n    }\n    function starsHtml(avg) {\n      var out = '<span class=\"momq-stars\" aria-hidden=\"true\">';\n      for (var i = 1; i <= 5; i++) {\n        var fill = Math.max(0, Math.min(1, avg - (i - 1)));\n        out += '<span class=\"momq-star\"><span style=\"width:' + Math.round(fill * 100) + '%\"></span></span>';\n      }\n      return out + '</span>';\n    }\n    function optionText(qid) {\n      var q = questionById[qid];\n      if (!q || !q.options) return [];\n      return answerSet(qid).map(function (id) {\n        var o = q.options.filter(function (x) { return x.id === id; })[0];\n        return o ? o.text : null;\n      }).filter(function (t) { return t && !/^none$/i.test(t) && !/prefer not/i.test(t); });\n    }\n    function profileChips() {\n      var order = ['menopause_cycle', 'skin_concern', 'skin_type', 'age'];\n      var chips = [];\n      order.forEach(function (suffix) {\n        Object.keys(questionById).forEach(function (id) {\n          var q = questionById[id];\n          if (q.key && q.key.slice(-suffix.length) === suffix) chips = chips.concat(optionText(id));\n        });\n      });\n      return chips.slice(0, 6);\n    }\n    function splitWhy(block) {\n      /* the \"why we chose X\" copy: intro line plus up to 4 bullet points */\n      var html = (block.bottom || []).concat(block.top || []).filter(function (c) { return c.t === 'html' && /<li/i.test(c.html); })[0];\n      if (!html) return null;\n      var tmp = document.createElement('div');\n      tmp.innerHTML = html.html;\n      var intro = tmp.querySelector('p');\n      var items = [].slice.call(tmp.querySelectorAll('li')).map(function (li) { return li.textContent.trim(); }).filter(Boolean);\n      return { intro: intro ? intro.textContent.trim() : '', items: items.slice(0, 4), source: html };\n    }\n    function cartButton(variant, p, label, done, cls) {\n      var btn = el('button', 'momq-btn ' + (cls || 'momq-btn--cart'), esc(label || 'Add to cart'));\n      btn.type = 'button';\n      btn.addEventListener('click', function () {\n        if (btn.getAttribute('data-added')) return openCart();\n        btn.disabled = true;\n        addToCart(variant.id).then(function () {\n          btn.disabled = false;\n          btn.setAttribute('data-added', '1');\n          btn.textContent = done || 'View cart';\n          track('quiz_add_to_cart', { result: state.result && state.result.value, product: p.handle, layout: LAYOUT });\n          openCart();\n        }).catch(function () { btn.disabled = false; btn.textContent = 'Try again'; });\n      });\n      return btn;\n    }\n    function codeFrom(blocks) {\n      var found = null;\n      blocks.forEach(function (b) {\n        (b.top || []).concat(b.bottom || []).forEach(function (c) {\n          var t = c.text || c.html || '';\n          var m = !found && t.match(/code\\s+([A-Z0-9]{4,})/);\n          if (m) found = { code: m[1], text: (c.text || '').trim(), item: c };\n        });\n      });\n      return found;\n    }\n\n    function renderResultV2(result) {\n      clearTimeout(timer);\n      root.innerHTML = '';\n      var blocks = result.blocks.filter(function (b) { return !b.rule || blockTest(b.rule); });\n      var heroBlock = blocks.filter(function (b) { return b.items && b.items.length && !/upsell/i.test(b.name); })[0] ||\n        blocks.filter(function (b) { return b.items && b.items.length; })[0];\n      var expertBlock = blocks.filter(function (b) { return !b.items && /dhesi/i.test(b.name); })[0];\n      var upsellBlocks = blocks.filter(function (b) { return b !== heroBlock && b.items && /upsell/i.test(b.name); });\n      var code = codeFrom(blocks);\n      var why = heroBlock ? splitWhy(heroBlock) : null;\n\n      var wrap = el('div', 'momq-results momq-results--v2');\n\n      /* 1. the skin report: headline, what they told us and their code, on a full width band */\n      var head = el('header', 'momq-r2-band');\n      var inner = el('div', 'momq-r2-band__inner');\n      inner.appendChild(el('p', 'momq-kicker', 'Your skin report'));\n      inner.appendChild(el('h2', 'momq-heading momq-heading--result', fillName(esc(result.title))));\n      var chips = profileChips();\n      if (chips.length) {\n        var prof = el('div', 'momq-r2-profile');\n        prof.innerHTML = chips.map(function (c) { return '<span class=\"momq-chip\">' + esc(c) + '</span>'; }).join('');\n        inner.appendChild(prof);\n      }\n      if (code) {\n        var codeBar = el('div', 'momq-r2-code');\n        codeBar.innerHTML = '<span class=\"momq-r2-code__text\">' + esc(code.text.replace(/use code\\s+[A-Z0-9]+\\s*/i, '').replace(/^for\\s+/i, '') || '15% off') +\n          '</span><span class=\"momq-r2-code__code\">' + esc(code.code) + '</span>';\n        var copy = el('button', 'momq-r2-code__copy', 'Copy');\n        copy.type = 'button';\n        copy.addEventListener('click', function () {\n          var ok = function () { copy.textContent = 'Copied'; setTimeout(function () { copy.textContent = 'Copy'; }, 2000); };\n          try { navigator.clipboard.writeText(code.code).then(ok, ok); } catch (e) { ok(); }\n          track('quiz_copy_code', { result: result.value, layout: LAYOUT });\n        });\n        codeBar.appendChild(copy);\n        codeBar.appendChild(el('span', 'momq-r2-code__auto', 'Added to your bag automatically when you add from here'));\n        inner.appendChild(codeBar);\n      }\n      head.appendChild(inner);\n      wrap.appendChild(head);\n\n      /* 2. hero product */\n      var hero = el('section', 'momq-r2-hero momq-r2-hero--loading');\n      wrap.appendChild(hero);\n\n      /* 3. the routine, as numbered steps, or the trust strip when the result is a single product */\n      var trust = el('ul', 'momq-r2-trust');\n      trust.innerHTML =\n        '<li data-trust=\"rating\"></li>' +\n        '<li><a href=\"/pages/money-back-guarantee\">30 day money back guarantee</a></li>' +\n        (freeDelivery() ? '<li>' + esc(freeDelivery()) + '</li>' : '') +\n        '<li>Made in the UK, fragrance free</li>';\n      var routineSec = heroBlock ? routineBox(heroBlock, true) : null;\n      wrap.appendChild(routineSec || trust);\n\n      /* 4. every other way to buy (duos, sets, extras) in one grid */\n      var sets = el('section', 'momq-r2-sets');\n      wrap.appendChild(sets);\n\n      /* 5. the experts, side by side on desktop */\n      var experts = el('section', 'momq-r2-experts');\n      if (expertBlock) experts.appendChild(expertSection(expertBlock));\n      if (heroBlock) {\n        var founder = founderSection(heroBlock, why);\n        if (founder.children.length) experts.appendChild(founder);\n      }\n      if (experts.children.length) wrap.appendChild(experts);\n\n      var again = el('button', 'momq-back momq-restart', 'Retake the quiz');\n      again.type = 'button';\n      again.addEventListener('click', function () {\n        state = { answers: {}, history: [], current: 0, started: false, email: '' };\n        history.replaceState(null, '', location.pathname + location.search);\n        show(0);\n      });\n      wrap.appendChild(again);\n      root.appendChild(wrap);\n      root.scrollIntoView({ block: 'start', behavior: 'smooth' });\n      try { history.replaceState(null, '', location.pathname + location.search + resultUrl().slice(resultUrl().indexOf('#'))); } catch (e) {}\n\n      if (!heroBlock) { hero.remove(); sets.remove(); return; }\n\n      /* the sets grid: the hero's alternatives first, then the extras, skipping anything already in the routine */\n      var taken = {};\n      routineHandles(heroBlock).forEach(function (h) { taken[h] = 1; });\n      var setItems = [];\n      var pool = heroBlock.items.slice(1);\n      upsellBlocks.forEach(function (b) { pool = pool.concat(b.items); });\n      pool.forEach(function (it) {\n        if (taken[it.handle] || it.handle === heroBlock.items[0].handle) return;\n        taken[it.handle] = 1;\n        setItems.push(it);\n      });\n      if (setItems.length) {\n        sets.appendChild(el('h3', 'momq-r2-title', routineSec ? 'or pick a set' : 'complete your routine'));\n        var grid = el('div', 'momq-r2-setgrid');\n        sets.appendChild(grid);\n        setItems.forEach(function (it) {\n          var slot = el('div', 'momq-r2-set momq-r2-set--loading');\n          grid.appendChild(slot);\n          loadProduct(it.handle).then(function (p) {\n            var v = p && pickVariant(p, it);\n            if (v) grid.replaceChild(setCard({ p: p, v: v, it: it }, heroBlock), slot); else slot.remove();\n            if (!grid.children.length) sets.remove();\n          });\n        });\n      } else sets.remove();\n\n      Promise.all(heroBlock.items.slice(0, 1).map(function (it) {\n        return loadProduct(it.handle).then(function (p) { var v = p && pickVariant(p, it); return v ? { p: p, v: v, it: it } : null; });\n      })).then(function (list) {\n        list = list.filter(Boolean);\n        if (!list.length) { hero.remove(); return; }\n        fillHero(hero, list[0], heroBlock, why, trust);\n      });\n    }\n    /* ---------- results layout v3: the skin report ---------- */\n\n    function sentence(list) {\n      return list.length < 2 ? (list[0] || '') : list.slice(0, -1).join(', ') + ' and ' + list[list.length - 1];\n    }\n    function lower(t) { return String(t).replace(/\\s*\\/.*$/, '').replace(/!$/, '').toLowerCase(); }\n    function drPoints(b) {\n      var html = ((b && (b.top || []).concat(b.bottom || [])) || []).filter(function (c) { return c.t === 'html'; })[0];\n      if (!html) return { quote: '', points: [] };\n      var tmp = document.createElement('div');\n      tmp.innerHTML = html.html;\n      var strong = tmp.querySelector('strong');\n      return {\n        quote: strong ? strong.textContent.replace(/^[\\s\u201C\"]+|[\\s\u201D\"]+$/g, '') : '',\n        points: [].slice.call(tmp.querySelectorAll('li')).map(function (li) { return li.textContent.trim(); }).filter(Boolean).slice(0, 3)\n      };\n    }\n    function renderResultV3(result) {\n      clearTimeout(timer);\n      root.innerHTML = '';\n      var RP = DATA.report || {};\n      var blocks = result.blocks.filter(function (b) { return !b.rule || blockTest(b.rule); });\n      var heroBlock = blocks.filter(function (b) { return b.items && b.items.length && !/upsell/i.test(b.name); })[0] ||\n        blocks.filter(function (b) { return b.items && b.items.length; })[0];\n      var expertBlock = blocks.filter(function (b) { return !b.items && /dhesi/i.test(b.name); })[0];\n      var upsellBlocks = blocks.filter(function (b) { return b !== heroBlock && b.items && /upsell/i.test(b.name); });\n      var code = codeFrom(blocks);\n      var why = heroBlock ? splitWhy(heroBlock) : null;\n      var stage = answerTexts('menopause_cycle')[0] || '';\n      var skin = answerTexts('skin_type').filter(function (t) { return !/not sure/i.test(t); });\n      var concerns = answerTexts('skin_concern');\n      var weak = answerTexts('routine_weakness')[0] || '';\n      var steps = heroBlock ? routineHandles(heroBlock) : [];\n      var name = firstName();\n      var wrap = el('div', 'momq-results momq-results--v3');\n\n      /* 1. the reveal */\n      var reveal = el('section', 'momq-r3-reveal');\n      var rin = el('div', 'momq-r3-reveal__inner');\n      var left = el('div', 'momq-r3-reveal__text');\n      left.appendChild(el('p', 'momq-r3-kick', esc(name ? name + \"'s skin report\" : 'Your skin report')));\n      left.appendChild(el('h2', 'momq-r3-title', fillName(esc(result.title))));\n      var plan = el('div', 'momq-r3-plan');\n      var row = function (k, v) { return v ? '<div class=\"momq-r3-plan__row\"><span>' + esc(k) + '</span><strong>' + esc(v) + '</strong></div>' : ''; };\n      plan.innerHTML =\n        row('Your stage', stage ? stage.replace(/!$/, '') : '') +\n        row('Your skin', skin.length ? sentence(skin.map(lower)).replace(/^./, function (c) { return c.toUpperCase(); }) : '') +\n        row('Bothering you', concerns.length ? sentence(concerns.slice(0, 3).map(lower)).replace(/^./, function (c) { return c.toUpperCase(); }) : '') +\n        row('Your plan', steps.length ? 'A ' + steps.length + ' step routine, guided by Dr Dhesi' : 'Your hero product, guided by Dr Dhesi');\n      var jump = el('a', 'momq-btn momq-btn--primary momq-r3-plan__btn', steps.length ? 'See my routine' : 'See my product');\n      jump.href = '#momq-r3-routine';\n      jump.addEventListener('click', function (e) {\n        e.preventDefault();\n        var t = root.querySelector(steps.length ? '#momq-r3-routine' : '.momq-r2-hero');\n        if (t) t.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      });\n      plan.appendChild(jump);\n      left.appendChild(plan);\n      rin.appendChild(left);\n      if (RP.photo) {\n        var ph = el('div', 'momq-r3-photo');\n        ph.innerHTML = '<img src=\"' + esc(imgUrl(RP.photo, 900)) + '\" alt=\"\" decoding=\"async\">' +\n          (RP.badge ? '<div class=\"momq-r3-photo__badge\"><b>' + esc(RP.badge.stat) + '</b><span>' + esc(RP.badge.text) + '</span></div>' : '');\n        rin.appendChild(ph);\n      }\n      reveal.appendChild(rin);\n      wrap.appendChild(reveal);\n\n      /* 2. what's going on, from Dr Dhesi's points for this result */\n      var dr = drPoints(expertBlock);\n      if (dr.points.length) {\n        var ins = el('section', 'momq-r3-sec');\n        ins.innerHTML = '<div class=\"momq-r3-head\"><h3 class=\"momq-r2-title\">what\\'s going on with your skin</h3>' +\n          '<p>Based on what you told us. It isn\\'t you, and it isn\\'t your products. It\\'s your hormones.</p></div>';\n        var tags = [stage && 'You said: ' + lower(stage), concerns.length && 'You said: ' + sentence(concerns.slice(0, 2).map(lower)), weak && 'You said: ' + (weak.indexOf(':') > -1 ? weak.split(':').slice(1).join(':').trim() : weak).replace(/\\.+$/, '')];\n        var grid = el('div', 'momq-r3-insights');\n        dr.points.forEach(function (p, n) {\n          grid.insertAdjacentHTML('beforeend', '<div class=\"momq-r3-insight\"><span class=\"momq-r3-insight__n\">' + (n + 1) + '</span><p>' + esc(p) + '</p>' +\n            (tags[n] ? '<span class=\"momq-r3-insight__you\">' + esc(tags[n]) + '</span>' : '') + '</div>');\n        });\n        ins.appendChild(grid);\n        if (RP.drPhoto) ins.insertAdjacentHTML('beforeend', '<p class=\"momq-r3-guided\"><img src=\"' + esc(imgUrl(RP.drPhoto, 120)) + '\" alt=\"\">Guided by Dr Sunny Dhesi, clinical lead</p>');\n        wrap.appendChild(ins);\n      }\n\n      /* 3. start here */\n      var start = el('section', 'momq-r3-sec');\n      start.innerHTML = '<div class=\"momq-r3-head\"><h3 class=\"momq-r2-title\">start here</h3><p>If you only change one thing, make it this.</p></div>';\n      var hero = el('section', 'momq-r2-hero momq-r2-hero--loading');\n      start.appendChild(hero);\n      wrap.appendChild(start);\n      var trust = el('ul', 'momq-r2-trust');\n      trust.innerHTML = '<li data-trust=\"rating\"></li><li><a href=\"/pages/money-back-guarantee\">30 day money back guarantee</a></li>' +\n        (freeDelivery() ? '<li>' + esc(freeDelivery()) + '</li>' : '') + '<li>Made in the UK, fragrance free</li>';\n\n      /* 4. morning and night */\n      if (steps.length) {\n        var rt = el('section', 'momq-r3-routine');\n        rt.id = 'momq-r3-routine';\n        rt.innerHTML = '<div class=\"momq-r3-head\"><h3 class=\"momq-r2-title\">your routine, morning and night</h3><p>' +\n          (steps.length === 3 ? 'Three' : 'Two') + ' products, used in the right order, so they work together.</p></div>';\n        var rgrid = el('div', 'momq-r3-routine__grid');\n        var times = el('div', 'momq-r3-times');\n        var W = RP.when || {};\n        [['am', 'Morning', '\u2600'], ['pm', 'Night', '\u263E']].forEach(function (t) {\n          var list = (W[t[0]] || []).filter(function (x) { return steps.indexOf(x[0]) > -1; });\n          if (!list.length) return;\n          times.insertAdjacentHTML('beforeend', '<div class=\"momq-r3-when\"><h4><span aria-hidden=\"true\">' + t[2] + '</span> ' + t[1] + '</h4><ol>' +\n            list.map(function (x) { return '<li><span><strong>' + esc(x[1]) + '</strong> with ' + esc(x[0] === 'cleansing-balm' ? 'CLARITY' : x[0] === 'brightening-day-shield' ? 'BRILLIANCE' : x[0] === 'rescue-balm' ? 'SALVATION' : 'RESILIENCE') + '<small>' + esc(x[2]) + '</small></span></li>'; }).join('') +\n            '</ol></div>');\n        });\n        rgrid.appendChild(times);\n        var box = routineBox(heroBlock, true, true);\n        if (box) rgrid.appendChild(box);\n        rt.appendChild(rgrid);\n        wrap.appendChild(rt);\n      }\n\n      /* 5. proof */\n      var proof = el('section', 'momq-r3-sec');\n      proof.innerHTML = '<div class=\"momq-r3-head\"><h3 class=\"momq-r2-title\">it works, and here\\'s the proof</h3></div>' +\n        (RP.stats ? '<div class=\"momq-r3-stats\">' + RP.stats.map(function (x) { return '<div><b>' + esc(x.stat) + '</b><span>' + esc(x.text) + '</span></div>'; }).join('') + '</div>' : '') +\n        (RP.source ? '<p class=\"momq-r3-source\">' + esc(RP.source) + '</p>' : '');\n      var aw = awardsRow();\n      if (aw) { aw.classList.add('momq-awards--proof'); proof.appendChild(aw); }\n      var prow = el('div', 'momq-r3-proof');\n      if (RP.beforeAfter) prow.insertAdjacentHTML('beforeend', '<div class=\"momq-r3-ba\"><img src=\"' + esc(imgUrl(RP.beforeAfter, 900)) + '\" alt=\"A customer before and after\" loading=\"lazy\" decoding=\"async\"></div>');\n      var qcol = el('div', 'momq-r3-quotes');\n      (RP.reviews || []).forEach(function (q) {\n        qcol.insertAdjacentHTML('beforeend', '<figure class=\"momq-r3-quote\"><span class=\"momq-r3-stars\" aria-label=\"5 stars\">\u2605\u2605\u2605\u2605\u2605</span><blockquote>\u201C' + esc(q.text) + '\u201D</blockquote><figcaption>' + esc(q.name) + '</figcaption></figure>');\n      });\n      if (code) {\n        var codeBar = el('div', 'momq-r2-code');\n        codeBar.innerHTML = '<span class=\"momq-r2-code__text\">' + esc(code.text.replace(/use code\\s+[A-Z0-9]+\\s*/i, '').replace(/^for\\s+/i, '') || '15% off') +\n          '</span><span class=\"momq-r2-code__code\">' + esc(code.code) + '</span>';\n        var copy = el('button', 'momq-r2-code__copy', 'Copy');\n        copy.type = 'button';\n        copy.addEventListener('click', function () {\n          var ok = function () { copy.textContent = 'Copied'; setTimeout(function () { copy.textContent = 'Copy'; }, 2000); };\n          try { navigator.clipboard.writeText(code.code).then(ok, ok); } catch (e) { ok(); }\n          track('quiz_copy_code', { result: result.value, layout: LAYOUT });\n        });\n        codeBar.appendChild(copy);\n        codeBar.appendChild(el('span', 'momq-r2-code__auto', 'Added to your bag automatically when you add from here'));\n        qcol.appendChild(codeBar);\n      }\n      prow.appendChild(qcol);\n      proof.appendChild(prow);\n      proof.appendChild(trust);\n      wrap.appendChild(proof);\n\n      /* 6. sets, 7. experts */\n      var sets = setsSection(heroBlock, upsellBlocks, steps.length > 0);\n      if (sets) wrap.appendChild(sets);\n      var experts = el('section', 'momq-r2-experts');\n      if (expertBlock) experts.appendChild(expertSection(expertBlock));\n      if (heroBlock) {\n        var founder = founderSection(heroBlock, why);\n        if (founder.children.length) experts.appendChild(founder);\n      }\n      if (experts.children.length) wrap.appendChild(experts);\n\n      var again = el('button', 'momq-back momq-restart', 'Retake the quiz');\n      again.type = 'button';\n      again.addEventListener('click', function () {\n        state = { answers: {}, history: [], current: 0, started: false, email: '' };\n        history.replaceState(null, '', location.pathname + location.search);\n        show(0);\n      });\n      wrap.appendChild(again);\n      root.appendChild(wrap);\n      root.scrollIntoView({ block: 'start', behavior: 'smooth' });\n      try { history.replaceState(null, '', location.pathname + location.search + resultUrl().slice(resultUrl().indexOf('#'))); } catch (e) {}\n\n      if (!heroBlock) { start.remove(); return; }\n      var first = heroBlock.items[0];\n      loadProduct(first.handle).then(function (p) {\n        var v = p && pickVariant(p, first);\n        if (!v) { start.remove(); return; }\n        fillHero(hero, { p: p, v: v, it: first }, heroBlock, why, trust);\n      });\n    }\n\n    /* every other way to buy: the hero's alternatives, then the extras, skipping anything in the routine */\n    function setsSection(heroBlock, upsellBlocks, hasRoutine) {\n      if (!heroBlock) return null;\n      var taken = {};\n      routineHandles(heroBlock).forEach(function (h) { taken[h] = 1; });\n      taken[heroBlock.items[0].handle] = 1;\n      var pool = heroBlock.items.slice(1);\n      upsellBlocks.forEach(function (b) { pool = pool.concat(b.items); });\n      var items = pool.filter(function (it) { if (taken[it.handle]) return false; taken[it.handle] = 1; return true; });\n      if (!items.length) return null;\n      var sets = el('section', 'momq-r2-sets');\n      sets.appendChild(el('h3', 'momq-r2-title', hasRoutine ? 'or pick a set' : 'complete your routine'));\n      var grid = el('div', 'momq-r2-setgrid');\n      sets.appendChild(grid);\n      items.forEach(function (it) {\n        var slot = el('div', 'momq-r2-set momq-r2-set--loading');\n        grid.appendChild(slot);\n        loadProduct(it.handle).then(function (p) {\n          var v = p && pickVariant(p, it);\n          if (v) grid.replaceChild(setCard({ p: p, v: v, it: it }, heroBlock), slot); else slot.remove();\n          if (!grid.children.length) sets.remove();\n        });\n      });\n      return sets;\n    }\n    function setCard(x, block) {\n      var p = x.p, v = x.v;\n      var url = (p.url || '/products/' + p.handle) + (x.it.variant ? '?variant=' + v.id : '');\n      var img = v.featured_image && v.featured_image.src || p.featured_image;\n      var card = el('div', 'momq-r2-set');\n      card.innerHTML = '<a class=\"momq-r2-set__img\" href=\"' + esc(url) + '\"><img src=\"' + esc(imgUrl(img, 500)) + '\" alt=\"\" loading=\"lazy\" decoding=\"async\"></a>' +\n        '<a class=\"momq-r2-set__title\" href=\"' + esc(url) + '\">' + esc(p.title) + '</a>' +\n        '<p class=\"momq-r2-set__price\">' + priceHtml(v) + '</p>';\n      card.appendChild(cartButton(v, p, 'Add to cart', block.clicked, 'momq-btn--cart momq-btn--small'));\n      return card;\n    }\n    function list2(items) { return items.map(function (it) { return it.handle; }); }\n\n    function priceHtml(v) {\n      var save = v.compare_at_price > v.price ? v.compare_at_price - v.price : 0;\n      return '<span class=\"momq-r2-price\">' + (save ? '<s>' + money(v.compare_at_price) + '</s> ' : '') +\n        '<strong>' + money(v.price) + '</strong>' + (save ? ' <em class=\"momq-save\">Save ' + money(save) + '</em>' : '') + '</span>';\n    }\n\n    function fillHero(hero, x, block, why, trust) {\n      var p = x.p, v = x.v;\n      var url = (p.url || '/products/' + p.handle) + (x.it.variant ? '?variant=' + v.id : '');\n      var img = v.featured_image && v.featured_image.src || p.featured_image;\n      hero.classList.remove('momq-r2-hero--loading');\n      hero.innerHTML =\n        '<a class=\"momq-r2-hero__img\" href=\"' + esc(url) + '\"><img src=\"' + esc(imgUrl(img, 700)) + '\" alt=\"' + esc(p.title) + '\" decoding=\"async\"></a>' +\n        '<div class=\"momq-r2-hero__body\">' +\n          '<p class=\"momq-kicker momq-kicker--left\">Your hero product</p>' +\n          '<a class=\"momq-r2-hero__title\" href=\"' + esc(url) + '\">' + esc(p.title) + '</a>' +\n          '<p class=\"momq-r2-rating\" hidden></p>' +\n          (why && why.intro ? '<p class=\"momq-r2-hero__intro\">' + esc(why.intro) + '</p>' : '') +\n          (why && why.items.length ? '<ul class=\"momq-r2-why\">' + why.items.map(function (t) { return '<li>' + esc(t) + '</li>'; }).join('') + '</ul>' : '') +\n          '<p class=\"momq-r2-hero__meta\">' + (p.variants.length > 1 && v.title !== 'Default Title' ? esc(variantName(v.title)) + ' \u00B7 ' : '') + priceHtml(v) + '</p>' +\n        '</div>';\n      var body = hero.querySelector('.momq-r2-hero__body');\n      var btn = cartButton(v, p, 'Add to cart', block.clicked, 'momq-btn--cart momq-btn--hero');\n      body.appendChild(btn);\n      loadRating(p).then(function (r) {\n        if (!r) return;\n        var line = hero.querySelector('.momq-r2-rating');\n        line.innerHTML = starsHtml(r.avg) + '<span>' + r.avg.toFixed(1) + ' from ' + r.count + ' reviews</span>';\n        line.hidden = false;\n        var t = trust.querySelector('[data-trust=\"rating\"]');\n        if (t) t.innerHTML = starsHtml(r.avg) + ' ' + r.avg.toFixed(1) + ' / 5 from ' + r.count + ' reviews';\n      });\n      var t = trust.querySelector('[data-trust=\"rating\"]');\n      if (t && !t.innerHTML) t.textContent = 'Rated excellent by real customers';\n      stickyBar(btn, p, v, block, img);\n    }\n\n    function miniCard(x, block) {\n      var p = x.p, v = x.v;\n      var url = (p.url || '/products/' + p.handle) + (x.it.variant ? '?variant=' + v.id : '');\n      var img = v.featured_image && v.featured_image.src || p.featured_image;\n      var card = el('div', 'momq-r2-card');\n      card.innerHTML = '<a class=\"momq-r2-card__img\" href=\"' + esc(url) + '\"><img src=\"' + esc(imgUrl(img, 300)) + '\" alt=\"\" loading=\"lazy\" decoding=\"async\"></a>' +\n        '<div class=\"momq-r2-card__body\"><a class=\"momq-r2-card__title\" href=\"' + esc(url) + '\">' + esc(p.title) + '</a>' +\n        '<p class=\"momq-r2-card__price\">' + priceHtml(v) + '</p></div>';\n      card.querySelector('.momq-r2-card__body').appendChild(cartButton(v, p, 'Add', block.clicked, 'momq-btn--cart momq-btn--small'));\n      return card;\n    }\n    function addonRow(x, block) {\n      var p = x.p, v = x.v;\n      var url = (p.url || '/products/' + p.handle) + (x.it.variant ? '?variant=' + v.id : '');\n      var img = v.featured_image && v.featured_image.src || p.featured_image;\n      var row = el('div', 'momq-r2-addon');\n      row.innerHTML = '<a class=\"momq-r2-addon__img\" href=\"' + esc(url) + '\"><img src=\"' + esc(imgUrl(img, 160)) + '\" alt=\"\" loading=\"lazy\" decoding=\"async\"></a>' +\n        '<div class=\"momq-r2-addon__body\"><a href=\"' + esc(url) + '\">' + esc(p.title) + '</a>' + priceHtml(v) + '</div>';\n      row.appendChild(cartButton(v, p, 'Add', block.clicked, 'momq-btn--cart momq-btn--small'));\n      return row;\n    }\n\n    function expertSection(b) {\n      var sec = el('section', 'momq-r2-expert');\n      var items = (b.top || []).concat(b.bottom || []);\n      var heading = items.filter(function (c) { return c.t === 'text' && c.kind === 'heading'; })[0];\n      var photo = items.filter(function (c) { return c.t === 'img'; })[0];\n      var rich = items.filter(function (c) { return c.t === 'html'; });\n      sec.innerHTML = (photo ? '<img class=\"momq-r2-expert__photo\" src=\"' + esc(photo.url) + '\" alt=\"Dr Dhesi\" loading=\"lazy\" decoding=\"async\">' : '') +\n        '<div class=\"momq-r2-expert__body\"><p class=\"momq-kicker momq-kicker--left\">' + esc(heading ? heading.text.replace(/'s says/i, ' says') : 'Dr Dhesi says') + '</p></div>';\n      var body = sec.querySelector('.momq-r2-expert__body');\n      var text = el('div', 'momq-r2-expert__text momq-r2-clamp');\n      rich.forEach(function (c) { text.insertAdjacentHTML('beforeend', fillName(c.html)); });\n      body.appendChild(text);\n      var more = el('button', 'momq-r2-more', 'Read more');\n      more.type = 'button';\n      more.addEventListener('click', function () {\n        var open = text.classList.toggle('momq-r2-clamp');\n        more.textContent = open ? 'Read more' : 'Show less';\n      });\n      body.appendChild(more);\n      return sec;\n    }\n\n    function founderSection(b, why) {\n      var sec = el('section', 'momq-r2-founder');\n      var items = (b.top || []).concat(b.bottom || []);\n      var video = items.filter(function (c) { return c.t === 'video'; })[0];\n      var photo = items.filter(function (c) { return c.t === 'img'; })[0];\n      var quote = items.filter(function (c) { return c.t === 'html' && (!why || c !== why.source) && /jackie/i.test(c.html); })[0];\n      if (quote) {\n        var q = el('figure', 'momq-r2-quote');\n        q.innerHTML = (photo ? '<img src=\"' + esc(photo.url) + '\" alt=\"Jackie, founder\" loading=\"lazy\" decoding=\"async\">' : '') +\n          '<blockquote>' + fillName(quote.html) + '</blockquote>';\n        sec.appendChild(q);\n      }\n      if (video) {\n        var d = el('details', 'momq-r2-video');\n        d.innerHTML = '<summary>Watch Jackie explain</summary>';\n        d.addEventListener('toggle', function () {\n          if (d.open && !d.querySelector('.momq-video')) { d.appendChild(videoBlock(video.id)); track('quiz_video_open', { result: state.result && state.result.value }); }\n        });\n        sec.appendChild(d);\n      }\n      return sec;\n    }\n\n    function stickyBar(heroBtn, p, v, block, img) {\n      if (!('IntersectionObserver' in window)) return;\n      var bar = el('div', 'momq-r2-sticky');\n      bar.setAttribute('aria-hidden', 'true');\n      bar.innerHTML = '<img src=\"' + esc(imgUrl(img, 120)) + '\" alt=\"\"><div><strong>' + esc(p.title) + '</strong>' + priceHtml(v) + '</div>';\n      var b = cartButton(v, p, 'Add to cart', block.clicked, 'momq-btn--cart momq-btn--small');\n      b.tabIndex = -1;\n      bar.appendChild(b);\n      root.appendChild(bar);\n      var seen = false;\n      new IntersectionObserver(function (entries) {\n        var e = entries[0];\n        if (e.isIntersecting) seen = true;\n        bar.classList.toggle('is-visible', seen && !e.isIntersecting && e.boundingClientRect.top < 0);\n      }).observe(heroBtn);\n    }\n\n    /* ---------- start ---------- */\n\n    function restoreFromHash() {\n      var m = location.hash.match(/[#&]r=([^&]+)/);\n      if (!m) return false;\n      try {\n        var payload = JSON.parse(decodeURIComponent(escape(atob(decodeURIComponent(m[1])))));\n        if (!payload || typeof payload.a !== 'object') return false;\n        Object.keys(payload.a).forEach(function (k) {\n          if (questionById[k]) state.answers[k] = payload.a[k];\n        });\n        state.result = pickResult();\n        renderResult(state.result);\n        return true;\n      } catch (e) { return false; }\n    }\n\n    root.classList.add('momq-ready');\n    if (TEST && !DESIGN) root.classList.add('momq-test');\n    track('quiz_view', {});\n    if (DESIGN) {\n      /* theme editor only: clicking a step or result block in the sidebar jumps the preview to it */\n      var previewTarget = function (target, quiet) {\n        if (!target) return;\n        if (target.page) {\n          for (var k = 0; k < pages.length; k++) if (pages[k].name === target.page) return show(k, quiet ? 'initial' : undefined);\n        }\n        if (target.result) {\n          state.result = DATA.results.filter(function (x) { return x.value === target.result; })[0];\n          if (state.result) renderResult(state.result);\n        }\n      };\n      document.addEventListener('shopify:block:select', function (e) {\n        if (!root.isConnected) return;\n        /* match on the marker's block type first; block IDs can arrive with or without the template prefix */\n        var type = e.target && e.target.getAttribute && e.target.getAttribute('data-momq-type');\n        var id = String((e.detail && e.detail.blockId) || '');\n        var b = EDITS.filter(function (x) {\n          return (type && x.type === type) || x.id === id || id.slice(-(x.id.length + 2)) === '__' + x.id || x.id.slice(-(id.length + 2)) === '__' + id;\n        })[0];\n        if (b) previewTarget(b.target);\n      });\n      var oldBar = root.parentNode && root.parentNode.querySelector('.momq-editor-bar');\n      if (oldBar) oldBar.remove();\n    }\n    if (!DESIGN && restoreFromHash()) {\n      track('quiz_return', { result: state.result && state.result.value });\n      tagCart();\n    }\n    else if (DESIGN && lastPreview) previewTarget(lastPreview, true);\n    else show(0, 'initial');\n}\n  boot();\n  /* the theme editor re-renders the section after each change */\n  document.addEventListener('shopify:section:load', boot);\n})();\n"],
  "mappings": "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",
  "names": ["t"]
}
