{
  "version": 3,
  "sources": ["/cdn/shop/t/173/assets/cg-skin-quiz.js?z=1790487845657"],
  "sourcesContent": ["/* CheekyGlo skin quiz. Markup and product data: sections/cg-skin-quiz.liquid */\n(function () {\n  'use strict';\n\n  var root = document.querySelector('[data-cgq]');\n  if (!root || root.__cgq) return;\n  root.__cgq = true;\n\n  var cfg = JSON.parse(root.querySelector('[data-cgq-config]').textContent);\n  var P = JSON.parse(root.querySelector('[data-cgq-products]').textContent);\n  var STORE = 'cgq-v1';\n\n  function $(s, el) { return (el || root).querySelector(s); }\n  function $$(s, el) { return Array.prototype.slice.call((el || root).querySelectorAll(s)); }\n  function has(list, v) { return Array.isArray(list) && list.indexOf(v) !== -1; }\n  function esc(s) { return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]; }); }\n  function track(name, data) {\n    try { (window.dataLayer = window.dataLayer || []).push(Object.assign({ event: name }, data || {})); } catch (e) {}\n  }\n\n  var fmt;\n  try { fmt = new Intl.NumberFormat('en-AU', { style: 'currency', currency: cfg.currency || 'AUD' }); } catch (e) { fmt = null; }\n  function money(cents) {\n    var n = Math.round(cents) / 100;\n    var s = fmt ? fmt.format(n) : '$' + n.toFixed(2);\n    return s.replace(/\\.00$/, '').replace(/^A\\$/, '$');\n  }\n\n  $$('[data-cgq-num]').forEach(function (el) { el.textContent = Number(el.textContent).toLocaleString('en-AU'); });\n\n  /* ------------------------------------------------------------------\n     QUESTIONS\n     ------------------------------------------------------------------ */\n  var CONCERNS = {\n    rough:    { label: 'Rough, dry or dull skin', desc: 'Flaky patches, rough texture or no glow', tag: 'Rough skin', phrase: 'rough, dry skin' },\n    kp:       { label: 'Bumps, KP or strawberry legs', desc: 'Little bumps on arms, thighs or bum', tag: 'KP and bumps', phrase: 'KP bumps' },\n    bodyacne: { label: 'Body breakouts', desc: 'Spots on your back, chest or shoulders', tag: 'Body breakouts', phrase: 'body breakouts' },\n    ingrown:  { label: 'Ingrown hairs and razor bumps', desc: 'After shaving or waxing', tag: 'Ingrown hairs', phrase: 'ingrown hairs' },\n    tan:      { label: 'Patchy fake tan', desc: 'Streaks, dark knees, old tan that won\\'t budge', tag: 'Fake tan', phrase: 'patchy tan' },\n    feet:     { label: 'Cracked heels and rough feet', desc: 'Hard skin, calluses, sandal panic', tag: 'Your feet', phrase: 'rough feet' },\n    face:     { label: 'Dull or congested face', desc: 'Texture, clogged pores, makeup sitting weird', tag: 'Your face', phrase: 'your face' },\n    hair:     { label: 'Dry hair or itchy scalp', desc: 'Frizz, straw ends, flakes or build-up', tag: 'Hair and scalp', phrase: 'your hair and scalp' },\n    lips:     { label: 'Dry or flat lips', desc: 'Chapped, peeling, or you want more pout', tag: 'Your lips', phrase: 'your lips' }\n  };\n\n  var INSIGHTS = {\n    rough: ['Rough skin is mostly build-up', 'Your skin sheds dead cells every day and plenty of them just sit there. Buffing them off twice a week, then locking moisture in, is usually all it takes to get the soft back.'],\n    kp: ['KP is really common, and it\\'s manageable', 'Those bumps are keratin plugging your hair follicles. Nothing cures KP, but gentle exfoliation plus moisture, done consistently, makes it feel way smoother. Think weeks, not overnight.'],\n    bodyacne: ['Body breakouts love sweat and build-up', 'Back and chest spots are often dead skin, sweat and product trapping oil in your pores. Keeping those spots properly cleaned and exfoliated makes a real difference. Just never scrub anything angry or open.'],\n    ingrown: ['Most ingrowns are hairs stuck under dead skin', 'When dead skin sits over a follicle, the hair curls back instead of breaking through. Exfoliating a day or two before you shave keeps the path clear.'],\n    tan: ['Patchy tan starts before you tan', 'Tan grabs onto dry, flaky spots. That\\'s why knees and ankles go dark and the rest fades unevenly. Smooth skin before, hydrated skin after.'],\n    feet: ['Your heels are working hard', 'Hard skin builds up as protection, then cracks when it dries out. The fix is taking the build-up off slowly and keeping it moisturised, not hacking at it.'],\n    face: ['Face skin needs a softer touch', 'The skin on your face is thinner than your body, so gentle and regular beats harsh and occasional. Two or three times a week is plenty.'],\n    hair: ['Your shower water could be part of it', 'Chlorine and minerals in tap water can leave hair dry and your scalp itchy, however good your shampoo is. That\\'s why we\\'ll ask about your shower in a sec.'],\n    lips: ['Lips have no oil glands', 'That\\'s why they dry out faster than the rest of your face. They need something that seals moisture in, not just a quick gloss.']\n  };\n\n  var STEPS = [\n    { id: 'who', eyebrow: 'About you', title: 'Who\\'s getting the glow-up?', sub: 'Shopping for someone? Answer for them and we\\'ll match it to their skin.', type: 'single',\n      options: [\n        { v: 'me', label: 'Me', desc: 'Treat yourself' },\n        { v: 'him', label: 'Him', desc: 'Boyfriend, husband, brother, dad' },\n        { v: 'gift', label: 'It\\'s a gift', desc: 'For someone who deserves a glow' }\n      ] },\n    { id: 'concerns', eyebrow: 'Your skin', title: 'What do you want to fix first?', sub: 'Pick up to 3, biggest one first. We\\'ll build your routine around it.', type: 'multi', max: 3, cols: 'wide',\n      options: Object.keys(CONCERNS).map(function (k) { return { v: k, label: CONCERNS[k].label, desc: CONCERNS[k].desc }; }),\n      why: 'Your first pick becomes the hero of your routine.' },\n    { id: 'insight', type: 'insight' },\n    { id: 'kpAreas', eyebrow: 'KP and bumps', title: 'Where do you want smooth skin?', sub: 'Pick every spot you want smoothed out.', type: 'multi', max: 4,\n      when: function (a) { return has(a.concerns, 'kp'); },\n      options: [\n        { v: 'arms', label: 'Upper arms' }, { v: 'legs', label: 'Thighs and legs' },\n        { v: 'bum', label: 'Bum' }, { v: 'back', label: 'Back' }\n      ] },\n    { id: 'acneAreas', eyebrow: 'Body breakouts', title: 'Where do you want clearer skin?', sub: 'Pick every spot that breaks out.', type: 'multi', max: 3,\n      when: function (a) { return has(a.concerns, 'bodyacne'); },\n      options: [\n        { v: 'back', label: 'Back' }, { v: 'shoulders', label: 'Shoulders' }, { v: 'chest', label: 'Chest' }\n      ] },\n    { id: 'feet', eyebrow: 'Your feet', title: 'How are your heels right now?', type: 'single',\n      when: function (a) { return has(a.concerns, 'feet'); },\n      options: [\n        { v: 'rough', label: 'A bit rough', desc: 'Dry, but nothing dramatic' },\n        { v: 'hard', label: 'Hard skin and calluses', desc: 'Thick, yellowy, catches on socks' },\n        { v: 'cracked', label: 'Cracked and sore', desc: 'Splits that hurt or bleed' }\n      ] },\n    { id: 'face', eyebrow: 'Your face', title: 'What do you want to change about your face?', sub: 'Pick up to 2.', type: 'multi', max: 2,\n      when: function (a) { return has(a.concerns, 'face'); },\n      options: [\n        { v: 'dull', label: 'Dull and rough', desc: 'No glow, uneven texture' },\n        { v: 'pores', label: 'Clogged pores', desc: 'Blackheads, little breakouts' },\n        { v: 'red', label: 'Red and reactive', desc: 'Flushes, stings, gets angry easily' },\n        { v: 'fuzz', label: 'Peach fuzz', desc: 'Makeup won\\'t sit smooth' },\n        { v: 'makeup', label: 'Makeup takes ages to remove', desc: 'Wipes, scrubbing, still panda eyes' }\n      ] },\n    { id: 'hair', eyebrow: 'Hair and scalp', title: 'What do you want to fix about your hair?', sub: 'Pick up to 2.', type: 'multi', max: 2,\n      when: function (a) { return has(a.concerns, 'hair'); },\n      options: [\n        { v: 'dry', label: 'Dry, frizzy, straw-like', desc: 'Especially the ends' },\n        { v: 'itchy', label: 'Itchy or flaky scalp', desc: 'Scratching, white flakes' },\n        { v: 'buildup', label: 'Oily roots and build-up', desc: 'Greasy by day two' },\n        { v: 'flat', label: 'Flat, no shine', desc: 'Looks dull even when clean' }\n      ] },\n    { id: 'lips', eyebrow: 'Your lips', title: 'What do you want your lips to do?', type: 'single',\n      when: function (a) { return has(a.concerns, 'lips'); },\n      options: [\n        { v: 'heal', label: 'Heal', desc: 'They\\'re cracked and peeling' },\n        { v: 'hydrate', label: 'Stay soft all day', desc: 'Glossy, no sticky feel' },\n        { v: 'tint', label: 'Tint', desc: 'A bit of colour that suits me' },\n        { v: 'plump', label: 'Plump', desc: 'Fuller-looking lips' }\n      ] },\n    { id: 'sens', eyebrow: 'Your skin', title: 'How does your skin react to a scrub?', type: 'single',\n      options: [\n        { v: 'tough', label: 'Tough as nails', desc: 'Never reacts to anything' },\n        { v: 'normal', label: 'Pretty normal', desc: 'Might go a bit pink, settles fast' },\n        { v: 'sensitive', label: 'Sensitive', desc: 'Goes red, stings or itches' },\n        { v: 'eczema', label: 'Eczema or psoriasis-prone', desc: 'Flares up easily' }\n      ],\n      why: 'This picks your glove. Sensitive skin gets our gentler weave, so you get the smooth without the sting.' },\n    { id: 'habit', eyebrow: 'Your routine', title: 'How often do you exfoliate now?', type: 'single',\n      options: [\n        { v: 'never', label: 'Never. Total newbie', desc: '' },\n        { v: 'sometimes', label: 'Now and then', desc: 'When I remember' },\n        { v: 'weekly', label: 'Every week', desc: 'It\\'s part of my routine' }\n      ],\n      why: 'This tells us what you\\'ll see on your first go, so there are no surprises.' },\n    { id: 'shower', eyebrow: 'Your shower', title: 'What\\'s your shower doing to your skin?', sub: 'Pick all that apply.', type: 'multi', max: 4,\n      options: [\n        { v: 'weak', label: 'The pressure is weak', desc: '' },\n        { v: 'hard', label: 'Water smells like chlorine', desc: 'Or leaves marks on the glass' },\n        { v: 'tight', label: 'Skin feels tight or itchy after', desc: '' },\n        { v: 'crunchy', label: 'Hair feels crunchy after washing', desc: '' },\n        { v: 'fine', label: 'Nope, it\\'s fine', desc: '', exclusive: true }\n      ] },\n    { id: 'size', eyebrow: 'Last one', title: 'How big do you want your routine?', type: 'single',\n      options: [\n        { v: 'simple', label: 'Just the essentials', desc: 'The 1 or 2 things that make the biggest difference' },\n        { v: 'proper', label: 'The full routine', desc: '3 or 4 steps that work together. Our pick for real results' },\n        { v: 'all', label: 'The total glow-up', desc: 'Everything your skin needs, all at once' }\n      ] }\n  ];\n\n  /* ------------------------------------------------------------------\n     RECOMMENDATION RULES\n     ------------------------------------------------------------------ */\n  var STEP_OF = {\n    'skinvita-vitamin-beauty-shower-filter': 0, 'helix-booster-shower-head': 0, 'beauty-shower-intro-set': 0,\n    'exfoliating-glove': 1, 'loofah-glove': 1, 'back-scrubber': 1, 'exfoliating-face-mitt': 1, 'dermablades': 1,\n    'scalp-scrubber': 1, 'glass-foot-file': 1, 'foot-peel-mask': 1, 'makeup-eraser': 1,\n    'glow-up-duo': 1, 'exfoliating-body-duo': 1, 'face-body-exfoliating-duo': 1, 'baby-smooth-set': 1, 'scrub-buff-set': 1, 'foot-reset-bundle': 1,\n    'hypochlorous-acid-spray': 2, 'cheekyglo-ice-slushy-soothing-mask': 2, 'pdrn-plus-advanced-collagen-peptide-cream': 2,\n    'peach-body-oil': 3, 'foot-balm': 3, 'lip-repair-essence': 3, 'lip-peptide-essence': 3, 'colour-changing-lip-oil': 3,\n    'plumping-lip-oil': 3, 'silk-scrunchies-3-pack': 3\n  };\n  var STEP_NAMES = ['Shower upgrade', 'Exfoliate', 'Calm and treat', 'Hydrate'];\n  var ROLE = { 'silk-scrunchies-3-pack': 'Protect', 'colour-changing-lip-oil': 'Tint', 'plumping-lip-oil': 'Plump', 'makeup-eraser': 'Cleanse', 'dermablades': 'Smooth' };\n  var AREA = { rough: 'Body', kp: 'Body', bodyacne: 'Body', ingrown: 'Body', tan: 'Body', feet: 'Feet', face: 'Face', hair: 'Hair', lips: 'Lips', shower: 'Shower' };\n\n  var BUNDLES = [\n    { h: 'baby-smooth-set', parts: ['back-scrubber', 'exfoliating-glove', 'peach-body-oil'], prefs: function (v) { return [v.scrubber, v.glove]; } },\n    { h: 'scrub-buff-set', parts: ['exfoliating-glove', 'glass-foot-file', 'peach-body-oil'], prefs: function (v) { return [v.glove, v.file]; } },\n    { h: 'foot-reset-bundle', parts: ['foot-peel-mask', 'glass-foot-file', 'foot-balm'], prefs: function (v) { return [v.file]; } },\n    { h: 'glow-up-duo', parts: ['exfoliating-glove', 'peach-body-oil'], prefs: function (v) { return [v.glove]; } },\n    { h: 'exfoliating-body-duo', parts: ['exfoliating-glove', 'back-scrubber'], prefs: function (v) { return [v.glove, v.scrubber]; } },\n    { h: 'face-body-exfoliating-duo', parts: ['exfoliating-glove', 'exfoliating-face-mitt'], prefs: function (v) { return [v.glove]; } },\n    { h: 'beauty-shower-intro-set', parts: ['skinvita-vitamin-beauty-shower-filter', 'helix-booster-shower-head'], prefs: function (v) { return [v.scent]; } }\n  ];\n\n  var TITLES = {\n    rough: 'Operation Soft Skin', kp: 'Operation Bye Bumps', bodyacne: 'Operation Clear Skin',\n    ingrown: 'Operation Razor Rescue', tan: 'Operation Flawless Tan', feet: 'Operation Sandal Ready',\n    face: 'Operation Face Card', hair: 'Operation Good Hair Day', lips: 'Operation Juicy Lips'\n  };\n\n  function variantPrefs(a) {\n    var sensitive = a.sens === 'sensitive' || a.sens === 'eczema';\n    var him = a.who === 'him';\n    return {\n      sensitive: sensitive,\n      glove: sensitive ? 'Sensitive' : (him ? 'Black' : 'Pink'),\n      scrubber: him ? 'Grey' : 'Pink',\n      file: (a.feet === 'hard') ? 'Coarse' : 'Sensitive',\n      scent: sensitive ? 'Original' : (him ? 'Ocean Breeze' : 'Rose Dew'),\n      loofah: him ? 'Grey' : 'Pink',\n      scalp: him ? 'Black' : 'Salmon',\n      spray: '100mL'\n    };\n  }\n\n  function prefsFor(h, v) {\n    switch (h) {\n      case 'exfoliating-glove': return [v.glove];\n      case 'back-scrubber': return [v.scrubber];\n      case 'glass-foot-file': return [v.file];\n      case 'skinvita-vitamin-beauty-shower-filter': return [v.scent];\n      case 'loofah-glove': return [v.loofah];\n      case 'scalp-scrubber': return [v.scalp];\n      case 'hypochlorous-acid-spray': return [v.spray];\n      default:\n        for (var i = 0; i < BUNDLES.length; i++) if (BUNDLES[i].h === h) return BUNDLES[i].prefs(v);\n        return [];\n    }\n  }\n\n  function pickVariant(h, prefs) {\n    var p = P[h];\n    if (!p) return null;\n    var vs = p.variants;\n    var match = vs.filter(function (x) {\n      var parts = x.title.split(' / ');\n      return prefs.every(function (tok, i) { return !tok || (parts[i] || '').indexOf(tok) !== -1; });\n    });\n    return match.filter(function (x) { return x.available; })[0] ||\n      vs.filter(function (x) { return x.available; })[0] || null;\n  }\n\n  function build(a) {\n    var v = variantPrefs(a);\n    var picks = {};\n    var order = [];\n    function add(h, score, concern, reason) {\n      if (!P[h]) return;\n      if (!picks[h]) { picks[h] = { h: h, score: 0, reasons: [], concerns: [] }; order.push(h); }\n      var p = picks[h];\n      p.score += score;\n      if (!has(p.concerns, concern)) p.concerns.push(concern);\n      if (reason && !p.reasons.some(function (r) { return r.text === reason; })) p.reasons.push({ tag: tagOf(concern), text: reason });\n    }\n    function tagOf(c) { return CONCERNS[c] ? CONCERNS[c].tag : c === 'shower' ? 'Your shower' : 'Your skin'; }\n\n    var concerns = a.concerns || [];\n    var glove = v.sensitive ? 'Our Sensitive (White) glove is a gentler weave, so you get the smooth without the sting.' : '';\n\n    concerns.forEach(function (c, rank) {\n      var boost = (3 - rank) * 2;\n      if (c === 'rough') {\n        add('exfoliating-glove', 10 + boost, c, 'Buffs off the dry, flaky layer with just water. No scrub, no product. ' + glove);\n        add('peach-body-oil', 7 + boost, c, 'Seals moisture in straight after you exfoliate, so the soft actually lasts.');\n      }\n      if (c === 'kp') {\n        var areas = a.kpAreas || [];\n        add('exfoliating-glove', 10 + boost, c, 'Gently lifts the keratin build-up that makes KP feel like sandpaper. ' + glove);\n        add('peach-body-oil', 8 + boost, c, 'KP needs moisture as much as exfoliation. Oil onto damp skin right after the glove.');\n        if (has(areas, 'back')) add('back-scrubber', 7 + boost, c, 'You said bumps on your back. The handles get the middle bit you can\\'t reach.');\n      }\n      if (c === 'bodyacne') {\n        var spots = a.acneAreas || [];\n        if (v.sensitive) add('exfoliating-glove', 9 + boost, c, 'Clears the dead skin and sweat that clog body pores. ' + glove);\n        else add('loofah-glove', 9 + boost, c, 'One side lathers your body wash, the other exfoliates, so pores get a proper clean in one go.');\n        if (has(spots, 'back') || has(spots, 'shoulders')) add('back-scrubber', 9 + boost, c, 'Back and shoulder spots are hard to reach. This gets there without the gymnastics.');\n        add('hypochlorous-acid-spray', 7 + boost, c, 'Mist on after your shower. Hypochlorous is gentle and calming on spotty, irritated skin.');\n      }\n      if (c === 'ingrown') {\n        add('exfoliating-glove', 9 + boost, c, 'Clears the dead skin trapping hairs. Use it a day or two before you shave, not straight after. ' + glove);\n        add('hypochlorous-acid-spray', 5 + boost, c, 'Calms razor bumps and redness after shaving.');\n      }\n      if (c === 'tan') {\n        add('exfoliating-glove', 10 + boost, c, 'Preps skin for an even tan and lifts old tan when it goes patchy. ' + glove);\n        add('peach-body-oil', 5 + boost, c, 'Keeps skin hydrated between tans so it fades evenly instead of flaking off in patches.');\n      }\n      if (c === 'feet') {\n        if (a.feet === 'cracked') {\n          add('foot-balm', 10 + boost, c, 'Urea and ceramides soften hard skin and help cracks repair. Rub in at night, socks on.');\n          add('glass-foot-file', 6 + boost, c, 'Once the cracks settle, a gentle file stops the edges catching and splitting again.');\n        } else if (a.feet === 'hard') {\n          add('foot-peel-mask', 9 + boost, c, 'Acids and urea break down thick build-up so it sheds on its own over 7 to 14 days.');\n          add('glass-foot-file', 9 + boost, c, 'Coarse glass buffs calluses down without cutting, and it won\\'t rust like metal files.');\n          add('foot-balm', 7 + boost, c, 'Keeps heels soft after the peel so the hard skin doesn\\'t come straight back.');\n        } else {\n          add('glass-foot-file', 9 + boost, c, 'Quick buff on dry feet and the rough bits are gone. Rinses totally clean.');\n          add('foot-balm', 6 + boost, c, 'A swipe at night keeps heels soft between files.');\n        }\n      }\n      if (c === 'face') {\n        var f = a.face || [];\n        if (has(f, 'dull') || has(f, 'pores') || !f.length) add('exfoliating-face-mitt', 9 + boost, c, 'Turkish silk polishes off dull skin and gunk in pores, gently enough for your face.');\n        if (has(f, 'pores')) add('hypochlorous-acid-spray', 7 + boost, c, 'Calms breakouts and keeps pores clean without drying your skin out.');\n        if (has(f, 'red')) {\n          add('hypochlorous-acid-spray', 8 + boost, c, 'A calming mist for red, reactive skin. Morning and night.');\n          add('cheekyglo-ice-slushy-soothing-mask', 8 + boost, c, 'Icy-cold slushy mask with centella and niacinamide to take the heat out of redness.');\n          add('pdrn-plus-advanced-collagen-peptide-cream', 7 + boost, c, 'Barrier-repair cream with ceramides and peptides for skin that reacts to everything.');\n        }\n        if (has(f, 'fuzz')) add('dermablades', 8 + boost, c, 'Takes off peach fuzz and dead skin so makeup sits smooth.');\n        if (has(f, 'makeup')) add('makeup-eraser', 8 + boost, c, 'Just water. Takes off makeup, sunscreen and mascara without wipes or scrubbing.');\n      }\n      if (c === 'hair') {\n        var hr = a.hair || [];\n        if (has(hr, 'dry') || has(hr, 'flat') || !hr.length) add('skinvita-vitamin-beauty-shower-filter', 9 + boost, c, 'Filters chlorine and impurities out of your shower water, which is often what dries hair out.');\n        if (has(hr, 'dry')) add('silk-scrunchies-3-pack', 5 + boost, c, 'Silk doesn\\'t snag or crease, so dry ends stop snapping.');\n        if (has(hr, 'itchy') || has(hr, 'buildup')) add('scalp-scrubber', 9 + boost, c, 'Massages out flakes and product build-up while you shampoo. Scalps love it.');\n        if (has(hr, 'itchy')) add('skinvita-vitamin-beauty-shower-filter', 6 + boost, c, 'Chlorine can irritate your scalp. Filtered water is kinder to it.');\n        if (has(hr, 'flat')) add('helix-booster-shower-head', 6 + boost, c, 'Stronger pressure rinses out product properly, so hair isn\\'t weighed down.');\n      }\n      if (c === 'lips') {\n        if (a.lips === 'heal') add('lip-repair-essence', 10 + boost, c, 'Shea, vitamin E and lanolin seal moisture in so cracked lips can actually heal.');\n        if (a.lips === 'hydrate') add('lip-peptide-essence', 10 + boost, c, 'Peptides plus shea butter for soft, glassy lips without the sticky feel.');\n        if (a.lips === 'tint') add('colour-changing-lip-oil', 10 + boost, c, 'Shifts to a shade that suits your lips, and hydrates while it does it.');\n        if (a.lips === 'plump') add('plumping-lip-oil', 10 + boost, c, 'A cooling tip and a gentle tingle for fuller-looking lips in one swipe.');\n      }\n    });\n\n    var sh = a.shower || [];\n    if (has(sh, 'weak')) add('helix-booster-shower-head', 5, 'shower', 'You said the pressure is weak. Micro-nozzles boost it so rinses actually rinse.');\n    if (has(sh, 'hard') || has(sh, 'tight') || has(sh, 'crunchy')) add('skinvita-vitamin-beauty-shower-filter', 5, 'shower', 'Chlorine can leave skin tight and hair crunchy. This filters it out and adds vitamin C.');\n\n    // Two body gloves do the same job. Keep the stronger match and fold the other in.\n    if (picks['exfoliating-glove'] && picks['loofah-glove']) {\n      var g = picks['exfoliating-glove'], l = picks['loofah-glove'];\n      var keep = g.score >= l.score ? g : l, drop = keep === g ? l : g;\n      keep.score += drop.score;\n      drop.concerns.forEach(function (c) { if (!has(keep.concerns, c)) keep.concerns.push(c); });\n      drop.reasons.forEach(function (r) { keep.reasons.push(r); });\n      delete picks[drop.h];\n      order.splice(order.indexOf(drop.h), 1);\n    }\n\n    // Heroes for each concern go first, then the rest by score. The limit counts\n    // cards after sets are formed, so a set that completes a routine still fits.\n    var limit = a.size === 'simple' ? 2 : a.size === 'all' ? 6 : 4;\n    var maxSingles = a.size === 'simple' ? 3 : a.size === 'all' ? 12 : 7;\n    var list = order.map(function (h) { return picks[h]; }).sort(function (x, y) { return y.score - x.score; });\n    // Round robin: best pick for each concern, then second best for each, and so on.\n    var queue = [];\n    for (var round = 0; round < 4; round++) {\n      concerns.forEach(function (c) {\n        var top = list.filter(function (p) { return has(p.concerns, c) && queue.indexOf(p) === -1; })[0];\n        if (top) queue.push(top);\n      });\n    }\n    list.forEach(function (p) { if (queue.indexOf(p) === -1) queue.push(p); });\n\n    var chosen = [];\n    var items = [];\n    queue.forEach(function (p) {\n      var variant = pickVariant(p.h, prefsFor(p.h, v));\n      if (!variant) return;\n      var trial = chosen.concat([{ h: p.h, variant: variant, reasons: p.reasons, concerns: p.concerns, score: p.score, on: true }]);\n      var packed = bundle(trial, v);\n      if (packed.length <= limit && trial.length <= maxSingles) { chosen = trial; items = packed; }\n    });\n\n    var rankOf = function (i) { var r = concerns.indexOf(i.concerns[0]); return r === -1 ? 9 : r; };\n    items.sort(function (x, y) { return (rankOf(x) - rankOf(y)) || ((STEP_OF[x.h] || 0) - (STEP_OF[y.h] || 0)); });\n    return { items: items, prefs: v };\n  }\n\n  // Swap groups of picks for a set when the set costs less.\n  function bundle(singles, v) {\n    var items = singles.slice();\n    BUNDLES.forEach(function (b) {\n      if (!P[b.h]) return;\n      var parts = b.parts.map(function (h) { return items.filter(function (i) { return i.h === h && !i.parts; })[0]; });\n      if (parts.some(function (x) { return !x; })) return;\n      var bv = pickVariant(b.h, b.prefs(v));\n      if (!bv) return;\n      var sum = parts.reduce(function (t, i) { return t + i.variant.price; }, 0);\n      if (bv.price >= sum) return;\n      var reasons = [];\n      parts.forEach(function (i) { if (i.reasons[0]) reasons.push({ tag: P[i.h].title.replace(/^CheekyGlo\\s+/, ''), text: i.reasons[0].text }); });\n      var first = items.indexOf(parts[0]);\n      items = items.filter(function (i) { return parts.indexOf(i) === -1; });\n      items.splice(Math.min(first, items.length), 0, {\n        h: b.h, variant: bv, reasons: reasons, on: true, save: sum - bv.price,\n        concerns: parts.reduce(function (all, i) { i.concerns.forEach(function (c) { if (!has(all, c)) all.push(c); }); return all; }, []),\n        parts: parts.map(function (i) { return P[i.h].title.replace(/^CheekyGlo\\s+/, ''); })\n      });\n    });\n    return items;\n  }\n\n  function planTips(a, items) {\n    var hs = items.map(function (i) { return i.h; }).join(' ');\n    var tips = [];\n    var bodyTool = /exfoliating-glove|loofah-glove|back-scrubber|glow-up-duo|body-duo|baby-smooth|scrub-buff|face-body/.test(hs);\n    var sens = a.sens === 'sensitive' || a.sens === 'eczema';\n    if (bodyTool) {\n      tips.push(['Every session', 'Soak in a warm shower for 5+ minutes first. No soap or oil before it. Wring the glove out so it\\'s damp, not dripping, and use firm strokes.']);\n      tips.push(['How often', sens ? 'Once a week with light pressure to start, then twice a week once your skin is happy. Skip anything broken, sunburnt or flaring.' : 'Twice a week. Your skin rebuilds in the days between, and that\\'s when the soft really shows.']);\n      if (a.habit === 'never') tips.push(['Your first go', 'You\\'ll see a lot roll off. That\\'s totally normal, and it settles after a couple of sessions.']);\n      if (a.habit === 'weekly') tips.push(['Your first go', 'You\\'ll see less roll because you already exfoliate. It\\'s still working, you just have less build-up to lift.']);\n    }\n    if (has(a.concerns, 'kp')) tips.push(['Weeks 3 to 4', 'Your KP feels noticeably smoother with glove plus oil. It won\\'t vanish for good, but it calms right down.']);\n    if (has(a.concerns, 'ingrown')) tips.push(['Shave days', 'Exfoliate 1 to 2 days before you shave, never on freshly shaved or waxed skin. Fewer ingrowns from your very next shave.']);\n    if (has(a.concerns, 'tan')) tips.push(['Tan days', 'Glove the day before you tan, then moisturise knees, elbows and ankles just before. Your next tan goes on even and fades evenly.']);\n    if (a.feet === 'cracked') tips.push(['Your heels', 'Balm every night with socks on and the cracks start closing up. Let them heal before any heavy filing.']);\n    if (a.feet === 'hard') tips.push(['Your heels', 'Mask first and let it shed for 7 to 14 days (don\\'t pull the skin). Then file and balm, and your heels stay smooth.']);\n    if (/exfoliating-face-mitt|face-body/.test(hs)) tips.push(['Your face', 'Face mitt 2 to 3 times a week. Damp mitt, small circles, no scrubbing. Makeup sits smoother from the first go.']);\n    if (/scalp-scrubber/.test(hs)) tips.push(['Your scalp', 'Use it with shampoo on wet hair for a minute or two. Gentle circles, no pressing hard. Your scalp feels fresh straight away.']);\n    if (/skinvita|beauty-shower/.test(hs)) tips.push(['Day one', 'Your filter screws straight onto most handheld showers. Wall or rain shower? Grab the adapters too.']);\n    tips.push(['After', 'Freshly exfoliated skin is delicate. Skip heavily fragranced products straight after.']);\n    return tips;\n  }\n\n  /* ------------------------------------------------------------------\n     FLOW\n     ------------------------------------------------------------------ */\n  var answers = {};\n  var history = [];\n  var current = null;\n  var unlocked = false;\n  var result = null;\n\n  var screens = {};\n  $$('[data-cgq-screen]').forEach(function (s) { screens[s.getAttribute('data-cgq-screen')] = s; });\n  var top = $('[data-cgq-top]');\n  var bar = $('[data-cgq-bar]');\n  var sticky = $('[data-cgq-sticky]');\n\n  function show(name) {\n    Object.keys(screens).forEach(function (k) { screens[k].classList.toggle('cgq-on', k === name); });\n    top.hidden = name === 'intro' || name === 'results';\n    sticky.hidden = name !== 'results';\n    var rect = root.getBoundingClientRect();\n    if (rect.top < 0 || rect.top > window.innerHeight * 0.4) {\n      window.scrollTo({ top: window.pageYOffset + rect.top - 90, behavior: 'smooth' });\n    }\n  }\n\n  function visibleSteps() {\n    return STEPS.filter(function (s) { return !s.when || s.when(answers); });\n  }\n\n  function progress() {\n    var vis = visibleSteps();\n    var i = vis.indexOf(current);\n    var pct = Math.round(((i + 1) / (vis.length + 1)) * 100);\n    bar.firstElementChild.style.width = pct + '%';\n    bar.setAttribute('aria-valuenow', pct);\n  }\n\n  function nextStep() {\n    var vis = visibleSteps();\n    var i = current ? vis.indexOf(current) : -1;\n    var n = vis[i + 1];\n    if (current) history.push(current);\n    if (n) { current = n; renderStep(); } else { current = null; finish(); }\n  }\n\n  function prevStep() {\n    var p = history.pop();\n    if (!p) { current = null; show('intro'); return; }\n    current = p;\n    renderStep();\n  }\n\n  function renderStep() {\n    var s = current;\n    var el = screens.question;\n    var html;\n    if (s.type === 'insight') {\n      var c = (answers.concerns || [])[0] || 'rough';\n      var ins = INSIGHTS[c];\n      html = '<div class=\"cgq-q__in cgq-insight\">' +\n        '<p class=\"cgq-eyebrow\">Good to know</p>' +\n        '<h2 class=\"cgq-h2\" tabindex=\"-1\">' + esc(ins[0]) + '</h2>' +\n        '<p class=\"cgq-lead\">' + esc(ins[1]) + '</p>' +\n        '<p class=\"cgq-insight__note\">The good news: it\\'s fixable. A few more questions and your routine is ready.</p>' +\n        '<div class=\"cgq-next\"><button type=\"button\" class=\"cgq-btn\" data-cgq-next>Keep going</button></div>' +\n        '</div>';\n    } else {\n      var sel = answers[s.id];\n      var picked = function (v) { return s.type === 'multi' ? has(sel, v) : sel === v; };\n      html = '<div class=\"cgq-q__in\">' +\n        '<p class=\"cgq-eyebrow\">' + esc(s.eyebrow) + '</p>' +\n        '<h2 class=\"cgq-h2\" tabindex=\"-1\">' + esc(s.title) + '</h2>' +\n        (s.sub ? '<p class=\"cgq-lead\">' + esc(s.sub) + '</p>' : '') +\n        '<div class=\"cgq-opts' + (s.cols === 'wide' ? ' cgq-opts--wide' : '') + '\" role=\"group\" aria-label=\"' + esc(s.title) + '\">' +\n        s.options.map(function (o, i) {\n          var rank = s.type === 'multi' && s.id === 'concerns' && has(sel, o.v) ? sel.indexOf(o.v) + 1 : '';\n          return '<button type=\"button\" class=\"cgq-opt\" data-v=\"' + esc(o.v) + '\" aria-pressed=\"' + picked(o.v) + '\">' +\n            '<span class=\"cgq-opt__mark\" aria-hidden=\"true\">' + (rank || '') + '</span>' +\n            '<span class=\"cgq-opt__txt\"><span class=\"cgq-opt__label\">' + esc(o.label) + '</span>' +\n            (o.desc ? '<span class=\"cgq-opt__desc\">' + esc(o.desc) + '</span>' : '') + '</span></button>';\n        }).join('') +\n        '</div>' +\n        (s.why ? '<p class=\"cgq-why\">' + esc(s.why) + '</p>' : '') +\n        (s.type === 'multi' ? '<div class=\"cgq-next\"><button type=\"button\" class=\"cgq-btn\" data-cgq-next' + ((sel && sel.length) ? '' : ' disabled') + '>Next</button><p class=\"cgq-hint\" data-cgq-hint></p></div>' : '') +\n        '</div>';\n    }\n    el.innerHTML = html;\n    show('question');\n    progress();\n    var h = el.querySelector('h2');\n    if (h) h.focus({ preventScroll: true });\n  }\n\n  screens.question.addEventListener('click', function (e) {\n    var s = current;\n    if (!s) return;\n    if (e.target.closest('[data-cgq-next]')) { nextStep(); return; }\n    var btn = e.target.closest('.cgq-opt');\n    if (!btn) return;\n    var v = btn.getAttribute('data-v');\n    if (s.type === 'single') {\n      answers[s.id] = v;\n      $$('.cgq-opt', screens.question).forEach(function (b) { b.setAttribute('aria-pressed', String(b === btn)); });\n      setTimeout(nextStep, 240);\n      return;\n    }\n    var list = (answers[s.id] || []).slice();\n    var opt = s.options.filter(function (o) { return o.v === v; })[0];\n    var hint = $('[data-cgq-hint]', screens.question);\n    if (has(list, v)) list.splice(list.indexOf(v), 1);\n    else if (opt.exclusive) list = [v];\n    else {\n      list = list.filter(function (x) { return !s.options.some(function (o) { return o.v === x && o.exclusive; }); });\n      if (list.length >= s.max) {\n        if (hint) { hint.textContent = 'You can pick up to ' + s.max + '. Tap one to swap it out.'; }\n        return;\n      }\n      list.push(v);\n    }\n    if (hint) hint.textContent = '';\n    answers[s.id] = list;\n    $$('.cgq-opt', screens.question).forEach(function (b) {\n      var bv = b.getAttribute('data-v');\n      b.setAttribute('aria-pressed', String(has(list, bv)));\n      if (s.id === 'concerns') b.querySelector('.cgq-opt__mark').textContent = has(list, bv) ? list.indexOf(bv) + 1 : '';\n    });\n    $('[data-cgq-next]', screens.question).disabled = !list.length;\n  });\n\n  function finish() {\n    result = build(answers);\n    save();\n    track('cg_quiz_complete', { quiz_concerns: (answers.concerns || []).join(','), quiz_items: result.items.length });\n    var lines = [];\n    (answers.concerns || []).slice(0, 2).forEach(function (c) { lines.push('Matching your tools to ' + CONCERNS[c].phrase); });\n    if (answers.sens === 'sensitive' || answers.sens === 'eczema') lines.push('Picking the gentle options for sensitive skin');\n    lines.push('Finding the sets that save you money');\n    var list = $('[data-cgq-load-list]');\n    list.innerHTML = lines.map(function (l) { return '<li>' + esc(l) + '</li>'; }).join('');\n    show('loading');\n    var items = $$('li', list);\n    items.forEach(function (li, i) { setTimeout(function () { li.classList.add('cgq-done'); }, 350 + i * 450); });\n    setTimeout(function () {\n      if (cfg.askEmail && !unlocked) show('email');\n      else renderResults();\n    }, 500 + items.length * 450);\n  }\n\n  /* Email */\n  var emailForm = $('[data-cgq-email-form]');\n  emailForm.addEventListener('submit', function (e) {\n    e.preventDefault();\n    var input = emailForm.querySelector('input');\n    var email = input.value.trim();\n    var err = $('[data-cgq-email-err]');\n    if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/.test(email)) { err.hidden = false; input.focus(); return; }\n    err.hidden = true;\n    unlocked = true;\n    subscribe(email);\n    save();\n    renderResults();\n  });\n  $('[data-cgq-skip]').addEventListener('click', function () { renderResults(); });\n\n  function subscribe(email) {\n    var concernTags = (answers.concerns || []).map(function (c) { return 'quiz-' + c; });\n    try {\n      var body = new URLSearchParams();\n      body.append('form_type', 'customer');\n      body.append('utf8', '\u2713');\n      body.append('contact[email]', email);\n      body.append('contact[tags]', ['newsletter', 'skin-quiz'].concat(concernTags).join(','));\n      fetch(cfg.root + 'contact', { method: 'POST', body: body, headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).catch(function () {});\n    } catch (e) {}\n    try {\n      var props = {\n        email: email,\n        quiz_concerns: (answers.concerns || []).join(', '),\n        quiz_sensitivity: answers.sens || '',\n        quiz_for: answers.who || '',\n        quiz_routine: result ? result.items.map(function (i) { return P[i.h].title; }).join(', ') : ''\n      };\n      var k = window.klaviyo || (window._learnq = window._learnq || []);\n      k.push(['identify', props]);\n      k.push(['track', 'Completed Skin Quiz', props]);\n    } catch (e) {}\n    track('cg_quiz_email');\n  }\n\n  /* ------------------------------------------------------------------\n     RESULTS\n     ------------------------------------------------------------------ */\n  function codeActive() { return !!cfg.discountCode && (unlocked || !cfg.codeNeedsEmail); }\n\n  function renderResults() {\n    var a = answers;\n    var items = result.items;\n    var first = (a.concerns || [])[0] || 'rough';\n    var forWho = a.who === 'me' ? 'Your' : 'Their';\n    $('[data-cgq-res-eyebrow]').textContent = forWho + ' glow plan';\n    $('[data-cgq-res-title]').textContent = TITLES[first];\n    var sensTxt = { tough: 'tough skin', normal: 'normal skin', sensitive: 'sensitive skin', eczema: 'eczema-prone skin' }[a.sens] || 'your skin';\n    var mine = a.who === 'me';\n    $('[data-cgq-res-lead]').textContent = 'Built for ' + (mine ? 'your ' : 'their ') +\n      [sensTxt].concat((a.concerns || []).map(function (c) { return CONCERNS[c].phrase; })).join(', ').replace(/, ([^,]*)$/, ' and $1') +\n      '. Here\\'s everything ' + (mine ? 'you' : 'they') + ' need, and exactly why each piece made the cut.';\n    var chips = (a.concerns || []).map(function (c) { return CONCERNS[c].tag; });\n    chips.push(sensTxt.charAt(0).toUpperCase() + sensTxt.slice(1));\n    if (a.habit === 'never') chips.push('First-timer');\n    $('[data-cgq-res-chips]').innerHTML = chips.map(function (c) { return '<li>' + esc(c) + '</li>'; }).join('');\n\n    var steps = $('[data-cgq-res-steps]');\n    steps.innerHTML = items.length ? items.map(card).join('') :\n      '<p class=\"cgq-empty\">We couldn\\'t find a match in stock right now. <a href=\"/collections/all\">Browse everything</a>.</p>';\n\n    $('[data-cgq-plan-list]').innerHTML = planTips(a, items).map(function (t) {\n      return '<li><b>' + esc(t[0]) + '</b><span>' + esc(t[1]) + '</span></li>';\n    }).join('');\n\n    show('results');\n    summary();\n    var h = $('[data-cgq-res-title]');\n    h.setAttribute('tabindex', '-1');\n    h.focus({ preventScroll: true });\n  }\n\n  function card(item, i) {\n    var p = P[item.h];\n    var v = item.variant;\n    var img = v.image || p.image;\n    var step = (AREA[item.concerns[0]] || 'Body') + ' &middot; ' + (item.parts ? 'The set' : ROLE[item.h] || STEP_NAMES[STEP_OF[item.h] || 0]);\n    var opts = p.variants.length > 1 ? '<label class=\"cgq-sr\" for=\"cgq-v-' + i + '\">Option</label><select id=\"cgq-v-' + i + '\" class=\"cgq-card__sel\" data-cgq-variant=\"' + i + '\">' +\n      p.variants.map(function (x) {\n        return '<option value=\"' + x.id + '\"' + (x.id === v.id ? ' selected' : '') + (x.available ? '' : ' disabled') + '>' + esc(x.title) + (x.available ? '' : ' (sold out)') + '</option>';\n      }).join('') + '</select>' : '';\n    var rating = p.reviews > 0 ? '<p class=\"cgq-card__rating\"><span class=\"cgq-stars\" aria-hidden=\"true\">&#9733;</span> ' + Number(p.rating).toFixed(1) + ' <span>(' + Number(p.reviews).toLocaleString('en-AU') + ' reviews)</span></p>' : '';\n    return '<article class=\"cgq-card\" data-cgq-item=\"' + i + '\">' +\n      '<a class=\"cgq-card__img\" href=\"' + esc(p.url) + '\" target=\"_blank\" rel=\"noopener\">' + (img ? '<img src=\"' + esc(img) + '\" alt=\"\" loading=\"lazy\" width=\"240\" height=\"240\">' : '') + '</a>' +\n      '<div class=\"cgq-card__head\">' +\n        '<p class=\"cgq-label\">' + step + (item.save ? ' <span class=\"cgq-badge\">You save ' + money(item.save) + ' as a set</span>' : '') + '</p>' +\n        '<h3 class=\"cgq-card__title\"><a href=\"' + esc(p.url) + '\" target=\"_blank\" rel=\"noopener\">' + esc(p.title) + '</a></h3>' +\n        rating +\n        (item.parts ? '<p class=\"cgq-card__incl\">Includes ' + esc(item.parts.join(', ').replace(/, ([^,]*)$/, ' and $1')) + '</p>' : '') +\n      '</div><div class=\"cgq-card__more\">' +\n        '<ul class=\"cgq-card__why unstyled-list\">' + item.reasons.slice(0, 3).map(function (r) {\n          return '<li><b>' + esc(r.tag) + ':</b> ' + esc(r.text.trim()) + '</li>';\n        }).join('') + '</ul>' +\n        '<div class=\"cgq-card__foot\">' + opts +\n          '<p class=\"cgq-card__price\" data-cgq-price=\"' + i + '\"></p>' +\n          '<label class=\"cgq-card__keep\"><input type=\"checkbox\" data-cgq-keep=\"' + i + '\" checked> In my routine</label>' +\n        '</div>' +\n      '</div></article>';\n  }\n\n  screens.results.addEventListener('change', function (e) {\n    var t = e.target;\n    if (t.hasAttribute('data-cgq-variant')) {\n      var item = result.items[+t.getAttribute('data-cgq-variant')];\n      var nv = P[item.h].variants.filter(function (x) { return String(x.id) === t.value; })[0];\n      if (nv) item.variant = nv;\n      var img = nv && (nv.image || P[item.h].image);\n      var im = t.closest('.cgq-card').querySelector('.cgq-card__img img');\n      if (img && im) im.src = img;\n    }\n    if (t.hasAttribute('data-cgq-keep')) {\n      var it = result.items[+t.getAttribute('data-cgq-keep')];\n      it.on = t.checked;\n      t.closest('.cgq-card').classList.toggle('cgq-card--off', !t.checked);\n    }\n    summary();\n  });\n\n  function summary() {\n    var items = result.items;\n    var on = items.filter(function (i) { return i.on; });\n    var sub = on.reduce(function (t, i) { return t + i.variant.price; }, 0);\n    var save = on.reduce(function (t, i) { return t + (i.save || 0); }, 0);\n    items.forEach(function (it, i) {\n      var el = $('[data-cgq-price=\"' + i + '\"]');\n      if (!el) return;\n      var cmp = it.variant.compare > it.variant.price ? it.variant.compare : (it.save ? it.variant.price + it.save : 0);\n      el.innerHTML = money(it.variant.price) + (cmp ? ' <s>' + money(cmp) + '</s>' : '');\n    });\n    $('[data-cgq-sum-lines]').innerHTML = on.map(function (i) {\n      return '<li><span>' + esc(P[i.h].title.replace(/^CheekyGlo\\s+/, '')) + '</span><span>' + money(i.variant.price) + '</span></li>';\n    }).join('') || '<li><span>Nothing selected yet</span><span></span></li>';\n    var saveEl = $('[data-cgq-sum-save]');\n    saveEl.hidden = !save;\n    saveEl.innerHTML = '<span>Set savings</span><span>-' + money(save) + '</span>';\n    var codeEl = $('[data-cgq-sum-code]');\n    var total = sub;\n    if (codeActive() && sub) {\n      var off = Math.round(sub * (cfg.discountPercent || 0) / 100);\n      total = sub - off;\n      codeEl.hidden = false;\n      codeEl.innerHTML = '<span>' + esc(cfg.discountCode) + ' (' + cfg.discountPercent + '% off)</span><span>-' + money(off) + '</span>';\n    } else codeEl.hidden = true;\n    $('[data-cgq-sum-total]').innerHTML = (total !== sub ? '<s>' + money(sub) + '</s> ' : '') + money(total);\n    var ship = $('[data-cgq-sum-ship]');\n    if (cfg.freeShip > 0 && sub) ship.textContent = total >= cfg.freeShip ? 'Free shipping unlocked.' : 'Add ' + money(cfg.freeShip - total) + ' more and your shipping is free.';\n    else ship.textContent = '';\n    $('[data-cgq-sum-afterpay]').textContent = total ? 'Or 4 interest-free payments of ' + money(total / 4) + ' with Afterpay.' + (codeActive() ? ' Your ' + cfg.discountPercent + '% off is applied automatically.' : '') : '';\n    $('[data-cgq-sticky-total]').textContent = money(total);\n    $('[data-cgq-sticky-count]').textContent = on.length + (on.length === 1 ? ' item' : ' items');\n    $$('[data-cgq-add]').forEach(function (b) { b.disabled = !on.length; });\n  }\n\n  /* Add to cart. Draws the drawer at once through the instant cart, then confirms. */\n  var adding = false;\n  root.addEventListener('click', function (e) {\n    if (!e.target.closest('[data-cgq-add]') || adding) return;\n    var on = result.items.filter(function (i) { return i.on; });\n    if (!on.length) return;\n    adding = true;\n    var buttons = $$('[data-cgq-add]');\n    buttons.forEach(function (b) { b.disabled = true; b.setAttribute('aria-busy', 'true'); });\n    var err = $('[data-cgq-add-err]');\n    err.hidden = true;\n\n    var lines = on.map(function (i) {\n      var p = P[i.h];\n      return { id: i.variant.id, quantity: 1, title: p.title, variant_title: i.variant.title === 'Default Title' ? '' : i.variant.title, image: i.variant.image || p.image, line_price: i.variant.price };\n    });\n    document.dispatchEvent(new CustomEvent('cg:instant-add', { detail: { lines: lines } }));\n\n    var attrs = { 'Skin quiz': (answers.concerns || []).join(', ') + ' | ' + (answers.sens || '') };\n    var pre = { attributes: attrs };\n    var jsonHead = { 'Content-Type': 'application/json', Accept: 'application/json' };\n    var codeStep = codeActive()\n      ? fetch(cfg.root + 'cart.js', { headers: { Accept: 'application/json' } }).then(function (r) { return r.json(); }).then(function (cart) {\n          var codes = (cart.discount_codes || []).map(function (c) { return c.code; })\n            .filter(function (c) { return String(c).toLowerCase() !== cfg.discountCode.toLowerCase(); });\n          codes.push(cfg.discountCode);\n          pre.discount = codes.join(',');\n        }).catch(function () { pre.discount = cfg.discountCode; })\n      : Promise.resolve();\n\n    codeStep\n      .then(function () { return fetch(cfg.root + 'cart/update.js', { method: 'POST', headers: jsonHead, body: JSON.stringify(pre) }).catch(function () {}); })\n      .then(function () {\n        return fetch(cfg.root + 'cart/add.js', {\n          method: 'POST',\n          headers: Object.assign({ 'X-Requested-With': 'XMLHttpRequest' }, jsonHead),\n          body: JSON.stringify({ items: lines.map(function (l) { return { id: l.id, quantity: 1 }; }) })\n        });\n      })\n      .then(function (r) { return r.json().then(function (d) { if (!r.ok || d.status) throw d; return d; }); })\n      .then(function () {\n        track('cg_quiz_add', { quiz_items: lines.length });\n        return refreshDrawer();\n      })\n      .catch(function (x) {\n        document.dispatchEvent(new CustomEvent('cg:instant-add-failed'));\n        err.textContent = (x && (x.description || x.message)) || 'Your routine didn\\'t make it to the cart. Tap the button to try again.';\n        err.hidden = false;\n      })\n      .then(function () {\n        adding = false;\n        buttons.forEach(function (b) { b.removeAttribute('aria-busy'); });\n        summary();\n      });\n  });\n\n  function refreshDrawer() {\n    var drawer = document.querySelector('cart-drawer');\n    var wrap = (drawer && drawer.closest('.shopify-section')) || document.querySelector('[id^=\"shopify-section-\"][id$=\"cart-drawer\"]');\n    var sectionId = wrap ? wrap.id.replace('shopify-section-', '') : null;\n    var reqs = [fetch(cfg.root + 'cart.js', { headers: { Accept: 'application/json' } }).then(function (r) { return r.json(); })];\n    if (sectionId) reqs.push(fetch(cfg.root + '?sections=' + encodeURIComponent(sectionId)).then(function (r) { return r.json(); }));\n    return Promise.all(reqs).then(function (res) {\n      var cart = res[0];\n      if (res[1]) cart.sections = res[1];\n      document.documentElement.dispatchEvent(new CustomEvent('cart:change', { bubbles: true, detail: { baseEvent: 'variant:add', cart: cart } }));\n      if (!sectionId) window.location.href = cfg.root + 'cart';\n    }).catch(function () {});\n  }\n\n  /* Sticky bar only while the summary button is off screen (mobile) */\n  if ('IntersectionObserver' in window) {\n    var mainAdd = $('.cgq-sum [data-cgq-add]');\n    new IntersectionObserver(function (en) {\n      root.classList.toggle('cgq-sum-visible', en[0].isIntersecting);\n    }).observe(mainAdd);\n  }\n\n  /* Save + restore */\n  function save() {\n    try { localStorage.setItem(STORE, JSON.stringify({ a: answers, u: unlocked, t: Date.now() })); } catch (e) {}\n  }\n  function restore() {\n    try {\n      var s = JSON.parse(localStorage.getItem(STORE) || 'null');\n      if (!s || !s.a || !s.a.concerns || Date.now() - s.t > 1000 * 60 * 60 * 24 * 30) return null;\n      return s;\n    } catch (e) { return null; }\n  }\n\n  var saved = restore();\n  unlocked = !!(saved && saved.u);\n  if (saved) {\n    var intro = screens.intro.querySelector('.cgq-intro__text');\n    var back = document.createElement('p');\n    back.className = 'cgq-welcome';\n    back.innerHTML = 'Done this before? <button type=\"button\" class=\"cgq-link\" data-cgq-last>See your last routine</button>';\n    intro.insertBefore(back, intro.querySelector('.cgq-points'));\n    back.querySelector('button').addEventListener('click', function () {\n      answers = saved.a;\n      unlocked = !!saved.u;\n      result = build(answers);\n      renderResults();\n    });\n  }\n\n  $('[data-cgq-start]').addEventListener('click', function () {\n    answers = {}; history = []; current = null;\n    track('cg_quiz_start');\n    nextStep();\n  });\n  $('[data-cgq-back]').addEventListener('click', prevStep);\n  $('[data-cgq-retake]').addEventListener('click', function () {\n    answers = {}; history = []; current = null;\n    track('cg_quiz_start', { quiz_retake: true });\n    nextStep();\n  });\n})();\n"],
  "mappings": "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",
  "names": ["top", "save"]
}
