{
  "version": 3,
  "sources": ["/cdn/shop/t/104/assets/curl-id-quiz.js?nc=1794347287037"],
  "sourcesContent": ["/* Inhairitance Curl ID quiz + result page.\n   Reads #cid-config (Liquid) and window.CURL_ID_COPY (assets/curl-id-copy.js).\n   No dependencies. */\n(function () {\n  'use strict';\n\n  var SELF_SRC = (document.currentScript && document.currentScript.src) || '';\n  var root = document.getElementById('cid');\n  var cfgEl = document.getElementById('cid-config');\n  if (!root || !cfgEl) return;\n  var CFG;\n  try { CFG = JSON.parse(cfgEl.textContent); } catch (e) { console.error('[Curl ID] config JSON is invalid', e); return; }\n  var COPY = window.CURL_ID_COPY || {};\n\n  /* ---------- Shared data: assets/curl-id-copy.js (product IDs, kits, names) ---------- */\n  var D = window.CURL_ID_DATA || {};\n  var PRODUCT_IDS = D.PRODUCT_IDS, HANDLE_HINTS = D.HANDLE_HINTS, KIT_VARIANTS = D.KIT_VARIANTS, NAMES = D.NAMES, CURL_IDS = D.CURL_IDS;\n  var LOOKS = { definition: 'Definition', volume: 'Volume', both: 'Volume & Definition' };\n  var TYPE_WORD = { 2: 'Wavy', 3: 'Curly', 4: 'Coily' };\n  var TYPE_NOUN = { 2: 'waves', 3: 'curls', 4: 'coils' };\n  var STORE_KEY = 'inh_curl_id_v1';\n  var SAVE_DAYS = 90;\n\n  try { var ov = JSON.parse(CFG.idOverrides || '{}'); Object.keys(ov).forEach(function (k) { PRODUCT_IDS[k] = Number(ov[k]); }); } catch (e) { console.warn('[Curl ID] Product ID overrides are not valid JSON'); }\n\n  var PRODUCTS = (CFG.products || []).filter(Boolean);\n  var byId = {}; PRODUCTS.forEach(function (p) { byId[p.id] = p; });\n  var variantIndex = {}; PRODUCTS.forEach(function (p) { p.variants.forEach(function (v) { variantIndex[v.id] = { p: p, v: v }; }); });\n  var resolved = {};\n  function product(key) {\n    if (key in resolved) return resolved[key];\n    var p = PRODUCT_IDS[key] ? byId[PRODUCT_IDS[key]] : null;\n    if (!p && HANDLE_HINTS[key]) {\n      var isKit = /kit/.test(key);\n      p = PRODUCTS.filter(function (x) {\n        if (!HANDLE_HINTS[key].test(x.handle)) return false;\n        if (!isKit && /kit|bundle|sample|travel/.test(x.handle)) return false;\n        return true;\n      })[0] || null;\n    }\n    if (!p) console.warn('[Curl ID] Not in the quiz collection: ' + key);\n    resolved[key] = p;\n    return p;\n  }\n  function pickVariant(p, prefer) {\n    if (!p) return null;\n    var vs = p.variants.filter(function (v) { return v.available; });\n    if (!vs.length) return null;\n    if (prefer) { var m = vs.filter(function (v) { return prefer.test(v.title); })[0]; if (m) return m; }\n    var eight = vs.filter(function (v) { return /8\\s?oz|236|250\\s?ml/i.test(v.title); })[0];\n    return eight || vs[0];\n  }\n  function norm(t) { return String(t || '').toLowerCase().normalize('NFD').replace(/[\u0300-\u036F]/g, ''); }\n  function kitFor(key, look) {\n    /* Find the kit by its variant IDs, or by its handle (curl-id-kit-tlc-queen-type-3) if the IDs have changed */\n    var ids = KIT_VARIANTS[key]; if (!ids) return null;\n    var hit = variantIndex[ids[0]] || variantIndex[ids[1]];\n    var p = hit ? hit.p : PRODUCTS.filter(function (x) { return x.handle === 'curl-id-kit-' + key.replace(/-(\\d)$/, '-type-$1'); })[0];\n    if (!p) return null;\n    function byTitle(wantV, wantD) { return p.variants.filter(function (x) { var t = norm(x.title); return (t.indexOf('volume') > -1) === wantV && (t.indexOf('definition') > -1) === wantD; })[0]; }\n    var v = null;\n    if (look === 'definition') v = (variantIndex[ids[0]] || {}).v || byTitle(false, true);\n    else if (look === 'volume') v = (variantIndex[ids[1]] || {}).v || byTitle(true, false);\n    else v = byTitle(true, true);\n    /* No Volume & Definition variant: sell the Definition kit + the one product that makes it V&D, as an optional add-on */\n    if (look === 'both' && !v) return { p: p, v: (variantIndex[ids[0]] || {}).v || byTitle(false, true) || null, fallback: true };\n    return { p: p, v: v || null };\n  }\n  /* What the result shows as \"the kit\" for a look, plus the optional add-on when V&D falls back to Definition */\n  function kitView(copy, key, look) {\n    var kit = kitFor(key, look);\n    if (!(kit && kit.fallback)) return { kit: kit, items: copy.kit[look].items, addon: null };\n    var def = copy.kit.definition.items, inDef = def.map(function (i) { return i.product; });\n    var add = copy.kit.both.items.filter(function (i) { return inDef.indexOf(i.product) < 0; })[0];\n    var av = add && pickVariant(product(add.product));\n    var dropsML = inDef.indexOf('moisture_lock') > -1 && !copy.kit.both.items.some(function (i) { return i.product === 'moisture_lock'; });\n    return { kit: kit, items: def, addon: add && av ? { key: add.product, line: add.line, v: av } : null, dropsML: dropsML };\n  }\n\n  /* ---------- Helpers ---------- */\n  function esc(s) { return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]; }); }\n  function lang() {\n    try { if (window.Weglot && Weglot.getCurrentLang) return Weglot.getCurrentLang().slice(0, 2); } catch (e) {}\n    return (document.documentElement.lang || CFG.locale || 'en').slice(0, 2);\n  }\n  function money(cents) {\n    var cur = (window.Shopify && Shopify.currency && Shopify.currency.active) || CFG.currency || 'CAD';\n    try { return new Intl.NumberFormat(lang() === 'fr' ? 'fr-CA' : 'en-CA', { style: 'currency', currency: cur, currencyDisplay: 'narrowSymbol' }).format(cents / 100); }\n    catch (e) { return '$' + (cents / 100).toFixed(2); }\n  }\n  function store(k, v) { try { if (v === undefined) return JSON.parse(localStorage.getItem(k)); localStorage.setItem(k, JSON.stringify(v)); } catch (e) { return null; } }\n  function ses(k, v) { try { if (v === undefined) return sessionStorage.getItem(k); sessionStorage.setItem(k, v); } catch (e) { return null; } }\n  function reduced() { return window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches; }\n  function listJoin(a) { return a.length < 2 ? (a[0] || '') : a.slice(0, -1).join(', ') + ' and ' + a[a.length - 1]; }\n  function curlIdFrom(strands, por) {\n    var thick = strands !== 'fine', low = por === 'low';\n    return thick ? (low ? 'velvet-babe' : 'deluxe-princess') : (low ? 'protective-goddess' : 'tlc-queen');\n  }\n  function lookFromGoal(g) { return g === 'volume' ? 'volume' : g === 'both' ? 'both' : 'definition'; }\n  function nameHtml(name, cls) {\n    /* Brand rule: script font never for all-caps words (TLC renders in Futura). */\n    return '<span class=\"cid-idname ' + (cls || '') + '\">' + name.split(' ').map(function (w) {\n      return /^[A-Z0-9]{2,}$/.test(w) ? '<span class=\"cid-caps\">' + esc(w) + '</span>' : '<span class=\"cid-script\">' + esc(w) + '</span>';\n    }).join(' ') + '</span>';\n  }\n  function abs(url) { try { return new URL(url, location.origin).href; } catch (e) { return url; } }\n\n  /* ---------- Questions ---------- */\n  var OPTS = {\n    goal: [\n      { v: 'volume', t: 'Volume', d: 'Big, full, day one' },\n      { v: 'definition', t: 'Definition', d: 'Lasts to next wash day' },\n      { v: 'both', t: 'A bit of both', d: 'Full and defined' }\n    ],\n    strands: [\n      { v: 'fine', t: 'Delicate', d: 'Fine strands', w: 1.2 },\n      { v: 'medium', t: 'Distinct', d: 'Medium strands', w: 2.6 },\n      { v: 'thick', t: 'Robust', d: 'Thick strands', w: 4.4 }\n    ],\n    porosity: [\n      { v: 'high', t: 'It absorbs right away' },\n      { v: 'medium', t: 'It takes a bit of time to absorb' },\n      { v: 'low', t: 'It barely absorbs, product stays on top' }\n    ],\n    scalp: [{ v: 'oily', t: 'Oily' }, { v: 'dry', t: 'Dry' }, { v: 'flaky', t: 'Flaky' }, { v: 'itchy', t: 'Itchy' }, { v: 'none', t: 'No issues' }],\n    history: [\n      { v: 'colour', t: 'Colour, bleach or dye' }, { v: 'straightening', t: 'Chemical straightening or keratin' },\n      { v: 'heat', t: 'Heat tools like flat irons' }, { v: 'breakage', t: 'Breakage or shedding' },\n      { v: 'detangling', t: 'Trouble detangling' }, { v: 'none', t: 'None of these' }\n    ],\n    life: [\n      { v: 'workout', t: 'I work out' }, { v: 'swim', t: 'I swim regularly, in a pool or the ocean' },\n      { v: 'extensions', t: 'I wear synthetic extensions' }, { v: 'none', t: 'None of these' }\n    ]\n  };\n  function label(q, v) { var o = (OPTS[q] || []).filter(function (x) { return x.v === v; })[0]; return o ? o.t : v; }\n  var DAMAGE = ['colour', 'straightening', 'heat', 'breakage'];\n\n  var STEPS = ['goal', 'curl', 'proof', 'strands', 'porosity', 'reveal', 'scalp', 'history', 'life', 'email'];\n  var COUNT = { goal: 1, curl: 2, strands: 3, porosity: 4, scalp: 5, history: 6, life: 7 };\n  var A = { goal: null, type: null, strands: null, porosity: null, scalp: [], history: [], life: [], lang: null };\n  var stepIdx = 0, curlFallback = false, showStrandHelp = false;\n\n  function skip(step) {\n    if (step === 'proof') return !A.type || !(CFG.proof || {})[A.type];\n    if (step === 'email') return CFG.isB2B;\n    return false;\n  }\n  function go(i, push) {\n    while (i < STEPS.length && skip(STEPS[i])) i++;\n    if (i >= STEPS.length) return finish();\n    stepIdx = i; curlFallback = false; showStrandHelp = false;\n    if (push !== false) try { history.pushState({ cidStep: i }, '', location.pathname + location.search); } catch (e) {}\n    render();\n    root.scrollIntoView({ block: 'start', behavior: reduced() ? 'auto' : 'smooth' });\n  }\n  function prevStep() {\n    var i = stepIdx - 1;\n    while (i >= 0 && skip(STEPS[i])) i--;\n    return i;\n  }\n  function back(toStep) {\n    var i = STEPS.indexOf(toStep);\n    if (i > -1) go(i);\n  }\n  window.addEventListener('popstate', function (e) {\n    if (e.state && typeof e.state.cidStep === 'number') { stepIdx = e.state.cidStep; render(); }\n    else if (!params().id && stepIdx > 0) { stepIdx = 0; render(); }\n  });\n\n  /* ---------- Shared chrome ---------- */\n  function header(step) {\n    var n = COUNT[step];\n    var titles = { proof: 'Curls like yours, unlocked', reveal: 'Your Curl ID', email: 'Your plan is ready' };\n    var pct = { goal: 10, curl: 24, proof: 30, strands: 38, porosity: 50, reveal: 58, scalp: 66, history: 78, life: 90, email: 100 }[step];\n    var prev = prevStep();\n    return '<div class=\"cid-top\"><div class=\"cid-top-row\">' +\n      (prev > -1 ? '<button type=\"button\" class=\"cid-backbtn\" data-act=\"prev\" aria-label=\"Back to the previous question\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M19 12H5M11 6l-6 6 6 6\"/></svg>Back</button>' : '<div class=\"cid-kicker\">Curl ID</div>') +\n      '<div class=\"cid-count\">' + (n ? n + ' of 7' : esc(titles[step] || '')) + '</div></div>' +\n      '<div class=\"cid-bar\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"' + pct + '\"><span style=\"width:' + pct + '%\"></span></div></div>';\n  }\n  function stylist() {\n    var st = CFG.stylist || {};\n    /* photo as a background on the circle: theme or app image scripts can't hide or resize it */\n    var av = st.avatar ? '<span class=\"cid-avatar-img\" role=\"img\" aria-label=\"' + esc(st.name || 'Curl Expert') + '\" style=\"background-image:url(\\'' + esc(st.avatar) + '\\')\"></span>' :\n      '<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"#fff\" aria-hidden=\"true\"><circle cx=\"15\" cy=\"11\" r=\"6\"/><path d=\"M3 30c1-7 6-10 12-10s11 3 12 10z\"/></svg>';\n    return '<div class=\"cid-stylist\"><div class=\"cid-avatar\">' + av + '</div><div><div class=\"cid-st-name\">' + esc(st.name || '') +\n      '</div><div class=\"cid-st-title\">' + esc(st.title || 'Curl Expert') + '</div></div></div>';\n  }\n  var bubbleN = 0, instant = false;\n  function bubble(text, kind) {\n    var d = reduced() || instant ? 0 : (bubbleN++) * 420;\n    return '<div class=\"cid-bubble' + (kind === 'aff' ? ' cid-aff' : '') + '\" style=\"animation-delay:' + d + 'ms\">' + text + '</div>';\n  }\n  function after() { return reduced() || instant ? 0 : bubbleN * 420 + 80; }\n  function chip(step, text) {\n    return '<button type=\"button\" class=\"cid-chip\" data-back=\"' + step + '\" aria-label=\"Change answer: ' + esc(text) + '\">' + esc(text) + '</button>';\n  }\n  function frame(step, inner, foot) {\n    var panel = '<aside class=\"cid-panel\" aria-hidden=\"true\">' +\n      (CFG.brandVideo ? '<video class=\"cid-panel-media\" src=\"' + esc(CFG.brandVideo) + '\"' + (CFG.brandPoster ? ' poster=\"' + esc(CFG.brandPoster) + '\"' : '') + ' autoplay muted loop playsinline preload=\"metadata\"></video>'\n        : (CFG.brandPoster ? '<img class=\"cid-panel-media\" src=\"' + esc(CFG.brandPoster) + '\" alt=\"\">' : '<div class=\"cid-panel-media\"></div>')) +\n      '<p class=\"cid-panel-line\">' + esc(CFG.proofLine || '') + '</p></aside>';\n    return '<div class=\"cid-quiz cid-step-' + step + '\">' + panel + '<div class=\"cid-main\">' + header(step) +\n      '<div class=\"cid-body\">' + inner + '</div>' + (foot ? '<div class=\"cid-foot\">' + foot + '</div>' : '') + '</div></div>';\n  }\n\n  /* ---------- Step renderers ---------- */\n  var R = {};\n  R.goal = function () {\n    var saved = store(STORE_KEY), banner = '';\n    if (saved && saved.url && !CFG.isB2B) {\n      var days = (Date.now() - saved.savedAt) / 864e5;\n      banner = days > SAVE_DAYS\n        ? '<div class=\"cid-saved\"><strong>It\\'s been 3 months.</strong> Want to check your Curl ID again? Porosity can change as your hair gets healthier.</div>'\n        : '<div class=\"cid-saved\"><div><div class=\"cid-saved-k\">Your saved routine</div><div class=\"cid-saved-n\">' + esc(saved.name) + ' \u00B7 Type ' + esc(saved.type) + ' \u00B7 ' + esc(LOOKS[saved.look] || '') + '</div></div>' +\n          '<a class=\"cid-btn cid-btn-sm\" href=\"' + esc(savedHere(saved.url)) + '\">View my routine</a></div>';\n    }\n    var cards = OPTS.goal.map(function (o) {\n      var img = (CFG.goalImages || {})[o.v];\n      return '<button type=\"button\" class=\"cid-card cid-goal\" data-a=\"goal\" data-v=\"' + o.v + '\" aria-pressed=\"' + (A.goal === o.v) + '\">' +\n        '<span class=\"cid-card-img\">' + (img ? '<img src=\"' + esc(img) + '\" alt=\"\" loading=\"lazy\">' : '') + '</span>' +\n        '<span class=\"cid-card-txt\"><span class=\"cid-card-t\">' + esc(o.t) + '</span><span class=\"cid-card-d\">' + esc(o.d) + '</span></span></button>';\n    }).join('');\n    var perks = CFG.isB2B ? '' : '<ul class=\"cid-perks\" role=\"list\">' +\n      '<li><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M20 12v8H4v-8M2 7h20v5H2zM12 22V7M12 7c-1.5-3-5-4-5.5-1.5S9.5 7 12 7zm0 0c1.5-3 5-4 5.5-1.5S14.5 7 12 7z\"/></svg><span>Up to 15% off your Curl ID Kit</span></li>' +\n      '<li><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 2l8 3v6c0 5-3.5 9-8 11-4.5-2-8-6-8-11V5z\"/><path d=\"M8.5 12l2.5 2.5 4.5-5\"/></svg><span>30-Day Curl Expert Guarantee</span></li></ul>';\n    return frame('goal', banner + perks + stylist() +\n      bubble('Hey Curl Jewel, I\\'m ' + esc(firstWord(CFG.stylist && CFG.stylist.name)) + '. Let\\'s find your Curl ID.') +\n      bubble('Select below how you wear your crown.') +\n      '<div class=\"cid-grid cid-grid-goal cid-in\" style=\"animation-delay:' + after() + 'ms\">' + cards + '</div>',\n      '<p class=\"cid-note\">7 quick questions. Tap any answer later to change it.</p>');\n  };\n  function firstWord(n) { n = String(n || '').trim(); return /^\\[/.test(n) ? n : n.split(' ')[0]; }\n\n  var GOAL_REACT = {\n    volume: 'Big, full and fabulous from day one, love that.',\n    definition: 'Definition that lasts to wash day, love that.',\n    both: 'Full and defined, the best of both worlds.',\n    protective: 'Protective styles are a beautiful way to care for your crown. Let\\'s keep the hair underneath healthy and happy.'\n  };\n  R.curl = function () {\n    var inner = chip('goal', label('goal', A.goal)) + stylist() + bubble(GOAL_REACT[A.goal] + ' Now, whose curls look most like yours when they dry on their own?');\n    var models = CFG.models || [];\n    if (curlFallback || !models.length) {\n      inner += '<div class=\"cid-list cid-in\" style=\"animation-delay:' + after() + 'ms\">' + [\n        { t: 2, n: 'Waves', d: 'S-shaped bends that sit close to the head' },\n        { t: 3, n: 'Curls', d: 'Springy loops and ringlets' },\n        { t: 4, n: 'Coils', d: 'Tight coils and zigzags with lots of shrinkage' }\n      ].map(function (o) {\n        return '<button type=\"button\" class=\"cid-row\" data-a=\"type\" data-v=\"' + o.t + '\" aria-pressed=\"' + (A.type === o.t) + '\"><span class=\"cid-card-t\">' + o.n + ', Type ' + o.t + '</span><span class=\"cid-card-d\">' + o.d + '</span></button>';\n      }).join('') + '</div>';\n    } else {\n      inner += '<div class=\"cid-grid cid-grid-models cid-in\" style=\"animation-delay:' + after() + 'ms\">' + models.map(function (m, i) {\n        return '<button type=\"button\" class=\"cid-model\" data-a=\"type\" data-v=\"' + m.type + '\" data-i=\"' + i + '\" aria-label=\"' + esc(m.alt || 'Curls like this model') + '\" aria-pressed=\"' + (A.modelIdx === i) + '\"><img src=\"' + esc(m.img) + '\" alt=\"\" loading=\"lazy\"></button>';\n      }).join('') + '</div>';\n    }\n    var foot = (models.length && !curlFallback) ? '<button type=\"button\" class=\"cid-link\" data-act=\"curl-fallback\">None of these look like my hair</button>' : '';\n    return frame('curl', inner, foot);\n  };\n  R.proof = function () {\n    var img = CFG.proof[A.type];\n    return frame('proof', chip('curl', 'Type ' + A.type) + stylist() +\n      bubble('Look at the difference the right products make. Same Curl Jewel, same Type ' + A.type + ' ' + TYPE_NOUN[A.type] + ' as you, before and after her Curl ID products.') +\n      '<figure class=\"cid-proof cid-in\" style=\"animation-delay:' + after() + 'ms\"><img src=\"' + esc(img) + '\" alt=\"Before and after Curl ID products, Type ' + A.type + '\"><figcaption><span>Before</span><span>After</span></figcaption></figure>' +\n      bubble('Two more quick questions and I\\'ll find your Curl ID.'),\n      '<button type=\"button\" class=\"cid-btn\" data-act=\"next\">Keep going</button>');\n  };\n  R.strands = function () {\n    var opts = OPTS.strands.map(function (o) {\n      return '<button type=\"button\" class=\"cid-row cid-row-icon\" data-a=\"strands\" data-v=\"' + o.v + '\" aria-pressed=\"' + (A.strands === o.v) + '\">' +\n        '<svg width=\"44\" height=\"24\" viewBox=\"0 0 44 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"' + o.w + '\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M2 12c6-8 10 8 16 0s10 8 16 0 6-4 8-2\"/></svg>' +\n        '<span><span class=\"cid-card-t\">' + o.t + '</span><span class=\"cid-card-d\">' + o.d + '</span></span></button>';\n    }).join('');\n    var help = showStrandHelp && CFG.strandHelp ? '<img class=\"cid-help-img\" src=\"' + esc(CFG.strandHelp) + '\" alt=\"Fine, medium and thick strands side by side\">' : '';\n    return frame('strands', chip(CFG.proof && CFG.proof[A.type] ? 'proof' : 'curl', 'Type ' + A.type) + stylist() +\n      bubble('Type ' + A.type + ' ' + TYPE_NOUN[A.type] + '. Your beautiful texture was passed down to you by your ancestors, so let\\'s learn exactly how to care for it.', 'aff') +\n      bubble('How thick is a single strand of your hair?') +\n      '<div class=\"cid-tip cid-in\" style=\"animation-delay:' + after() + 'ms\"><div class=\"cid-tip-k\">Pro tip</div><p>Take a single strand from the side of your head (avoiding the hairline) and roll it between your fingers. Does it feel delicate, distinct or robust?</p>' + help + '</div>' +\n      '<div class=\"cid-list cid-in\" style=\"animation-delay:' + after() + 'ms\">' + opts + '</div>',\n      CFG.strandHelp && !showStrandHelp ? '<button type=\"button\" class=\"cid-link\" data-act=\"strand-help\">Not sure? See photos</button>' : '');\n  };\n  var STRAND_REACT = {\n    fine: 'Fine strands are delicate, not weak. They just need more gentle &amp; protective care.',\n    medium: 'Medium strands have a lovely balance of strength and softness.',\n    thick: 'Thick strands are strong and love rich, nourishing layers.'\n  };\n  R.porosity = function () {\n    var opts = OPTS.porosity.map(function (o) {\n      return '<button type=\"button\" class=\"cid-row\" data-a=\"porosity\" data-v=\"' + o.v + '\" aria-pressed=\"' + (A.porosity === o.v) + '\"><span class=\"cid-card-t cid-plain\">' + esc(o.t) + '</span></button>';\n    }).join('');\n    return frame('porosity', chip('strands', strandLabel()) + stylist() +\n      bubble(STRAND_REACT[A.strands], 'aff') +\n      bubble('Last one about your hair. When your hair is freshly washed, how quickly does it absorb conditioner?') +\n      '<p class=\"cid-help cid-in\" style=\"animation-delay:' + after() + 'ms\">This tells us your hair\\'s porosity: how easily it takes in moisture and how well it holds on to it.</p>' +\n      '<div class=\"cid-list cid-in\" style=\"animation-delay:' + after() + 'ms\">' + opts + '</div>');\n  };\n  function strandLabel() { var o = OPTS.strands.filter(function (x) { return x.v === A.strands; })[0]; return o.t + ', ' + o.d.toLowerCase(); }\n  function porKey() { return A.porosity === 'low' ? 'low' : 'medhigh'; }\n  function chipsFor(id, type) {\n    var c = CURL_IDS[id];\n    return ['Type ' + type, (c.strands === 'fine' ? 'Fine' : 'Thick') + ' strands', c.por === 'low' ? 'Low porosity' : 'Med to high porosity', TYPE_WORD[type]]\n      .map(function (t) { return '<span class=\"cid-pill\">' + esc(t) + '</span>'; }).join('');\n  }\n  R.reveal = function () {\n    var id = curlIdFrom(A.strands, A.porosity), c = CURL_IDS[id], copy = COPY[id + '-' + A.type] || {};\n    var kit = kitFor(id + '-' + A.type, lookFromGoal(A.goal)), m = kit && kit.p.media || {};\n    var photo = m[{ definition: 'afterDefinition', volume: 'afterVolume', both: 'afterBoth' }[lookFromGoal(A.goal)]] || m.afterDefinition;\n    return frame('reveal', chip('porosity', label('porosity', A.porosity)) +\n      '<div class=\"cid-reveal cid-in\">' +\n      '<div class=\"cid-reveal-k\">Your Curl ID is</div>' + nameHtml(c.name, 'cid-idname-xl') +\n      '<div class=\"cid-pills\">' + chipsFor(id, A.type) + '</div>' +\n      (copy.tagline ? '<p class=\"cid-reveal-tag\">' + esc(copy.tagline) + '</p>' : '') +\n      (photo ? '<img class=\"cid-reveal-img\" src=\"' + esc(photo) + '\" alt=\"' + esc(c.name) + ' Type ' + A.type + ' result\">' : '') +\n      '<p class=\"cid-reveal-note\">Remember: your Curl ID isn\\'t a label. It\\'s a starting point, and it can change as your hair gets healthier.</p></div>',\n      '<button type=\"button\" class=\"cid-btn\" data-act=\"next\">Keep going</button><p class=\"cid-note\">3 quick questions so your routine fits your week</p>');\n  };\n  /* Scalp icons (no photos needed) */\n  var SCALP_ICONS = {\n    oily: '<path d=\"M24 7c-5 7-10 13-10 19a10 10 0 0 0 20 0c0-6-5-12-10-19z\"/><path d=\"M19 27a5 5 0 0 0 5 5\"/>',\n    dry: '<circle cx=\"24\" cy=\"24\" r=\"7\"/><path d=\"M24 7v4M24 37v4M7 24h4M37 24h4M12 12l3 3M33 33l3 3M36 12l-3 3M15 33l-3 3\"/>',\n    flaky: '<path d=\"M24 8v32M10 16l28 16M38 16L10 32\"/><path d=\"M20 10l4 4 4-4M20 38l4-4 4 4\"/>',\n    itchy: '<path d=\"M10 16c3-3 5 3 8 0s5 3 8 0 5 3 8 0 4 2 4 2\"/><path d=\"M10 24c3-3 5 3 8 0s5 3 8 0 5 3 8 0 4 2 4 2\"/><path d=\"M10 32c3-3 5 3 8 0s5 3 8 0 5 3 8 0 4 2 4 2\"/>',\n    none: '<circle cx=\"24\" cy=\"24\" r=\"15\"/><path d=\"M17 24.5l5 5 9-10\"/>'\n  };\n  function scalpIcon(v) { return '<svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">' + (SCALP_ICONS[v] || '') + '</svg>'; }\n  function multi(q, withImg) {\n    return OPTS[q].filter(function (o) { return !(q === 'life' && o.v === 'extensions' && A.goal === 'protective'); }).map(function (o) {\n      var on = A[q].indexOf(o.v) > -1;\n      return '<button type=\"button\" class=\"cid-' + (withImg ? 'card cid-scalp' : 'row cid-check') + '\" data-m=\"' + q + '\" data-v=\"' + o.v + '\" aria-pressed=\"' + on + '\">' +\n        (withImg ? '<span class=\"cid-scalp-icon\">' + scalpIcon(o.v) + '</span>' : '<span class=\"cid-box\" aria-hidden=\"true\"></span>') +\n        '<span class=\"cid-card-t' + (withImg ? '' : ' cid-plain') + '\">' + esc(o.t) + '</span></button>';\n    }).join('');\n  }\n  function contBtn(q, text) { return '<button type=\"button\" class=\"cid-btn\" data-act=\"next\"' + (A[q].length ? '' : ' disabled') + '>' + (text || 'Continue') + '</button>'; }\n  R.scalp = function () {\n    return frame('scalp', chip('reveal', CURL_IDS[curlIdFrom(A.strands, A.porosity)].name) + stylist() +\n      bubble('You\\'re doing amazing. Three more and your complete curl care plan is ready.', 'aff') +\n      bubble('Now let\\'s make it fit your life. How would you describe your scalp?') +\n      '<p class=\"cid-help cid-in\" style=\"animation-delay:' + after() + 'ms\">Pick all that apply</p>' +\n      '<div class=\"cid-grid cid-grid-scalp cid-in\" style=\"animation-delay:' + after() + 'ms\">' + multi('scalp', true) + '</div>', contBtn('scalp'));\n  };\n  function scalpReact() {\n    if (A.scalp.indexOf('none') > -1) return 'A happy scalp is the foundation of healthy curls. Love that for you.';\n    return 'So common, and it usually comes down to buildup. You\\'re in good hands. I\\'ll add a scalp reset to your wash day.';\n  }\n  function chipList(q) { return A[q].map(function (v) { return label(q, v).split(/[ ,]/)[0]; }).join(', '); }\n  R.history = function () {\n    return frame('history', chip('scalp', chipList('scalp')) + stylist() + bubble(scalpReact(), 'aff') +\n      bubble('In the last 6 months, have you had any of these?') +\n      '<p class=\"cid-help cid-in\" style=\"animation-delay:' + after() + 'ms\">Pick all that apply</p>' +\n      '<div class=\"cid-list cid-in\" style=\"animation-delay:' + after() + 'ms\">' + multi('history') + '</div>', contBtn('history'));\n  };\n  function historyReact() {\n    var h = A.history, dmg = h.filter(function (v) { return DAMAGE.indexOf(v) > -1; }), tangles = h.indexOf('detangling') > -1;\n    if (h.indexOf('none') > -1) return 'Love that your hair has had a calm few months.';\n    if (!dmg.length) return 'Tangles happen to all of us. I\\'ll add more slip to make detangling easier.';\n    return 'No judgment here. ' + (h.indexOf('colour') > -1 ? 'Colour can add so much fun and joy to your style. ' : '') +\n      'I\\'ll add a little extra strength' + (tangles ? ', plus more slip for those tangles.' : '.');\n  }\n  R.life = function () {\n    return frame('life', chip('history', chipList('history')) + stylist() + bubble(historyReact(), 'aff') +\n      bubble('Last one. Are any of these part of your week?') +\n      '<p class=\"cid-help cid-in\" style=\"animation-delay:' + after() + 'ms\">Pick all that apply</p>' +\n      '<div class=\"cid-list cid-in\" style=\"animation-delay:' + after() + 'ms\">' + multi('life') + '</div>', contBtn('life', 'Build my curl care plan'));\n  };\n  function emailForm(where) {\n    var l = A.lang || lang(), c = CFG.customer || {};\n    return '<form class=\"cid-form\" data-form=\"' + where + '\" novalidate>' +\n      (where === 'quiz' ? '<label class=\"cid-field\"><span>First name</span><input name=\"first\" autocomplete=\"given-name\" value=\"' + esc(c.firstName || '') + '\"></label>' : '') +\n      '<label class=\"cid-field\"><span>Email</span><input name=\"email\" type=\"email\" autocomplete=\"email\" required value=\"' + esc(c.email || '') + '\"></label>' +\n      '<fieldset class=\"cid-lang\"><legend>Send my results in</legend>' +\n      '<label><input type=\"radio\" name=\"lang\" value=\"en\"' + (l !== 'fr' ? ' checked' : '') + '><span>English</span></label>' +\n      '<label><input type=\"radio\" name=\"lang\" value=\"fr\"' + (l === 'fr' ? ' checked' : '') + '><span>Fran\u00E7ais</span></label></fieldset>' +\n      '<label class=\"cid-consent\"><input type=\"checkbox\" name=\"consent\"><span>Yes, send me curl tips and offers from Inhairitance. Unsubscribe anytime.</span></label>' +\n      '<p class=\"cid-err\" role=\"alert\" hidden>Please enter a valid email.</p>' +\n      '<button type=\"submit\" class=\"cid-btn\">' + (where === 'quiz' ? 'Send my plan + my code' : 'Email me my plan + code') + '</button>' +\n      (CFG.termsUrl ? '<p class=\"cid-fine\">By continuing you agree to our <a href=\"' + esc(CFG.termsUrl) + '\">Terms &amp; Conditions</a>.</p>' : '') + '</form>';\n  }\n  R.email = function () {\n    return frame('email', chip('life', chipList('life')) + stylist() +\n      bubble('Look at you centering yourself and your hair\\'s needs.', 'aff') +\n      bubble('Your complete curl care plan is ready! Want me to email it to you?') +\n      '<div class=\"cid-gift cid-in\" style=\"animation-delay:' + after() + 'ms\"><strong>Your welcome gift:</strong> an extra 5% off your Curl ID Kit, on top of the 10% kit savings. That\\'s 15% off in total, plus our 30-Day Curl Expert Guarantee. Your code arrives in a minute or two.</div>' +\n      '<div class=\"cid-in\" style=\"animation-delay:' + after() + 'ms\">' + emailForm('quiz') + '</div>',\n      '<button type=\"button\" class=\"cid-link\" data-act=\"skip\">Skip, show my results</button>');\n  };\n\n  var PROOF_MS = 6000, proofTimer = null, proofDone = false;\n  function render() {\n    bubbleN = 0;\n    clearTimeout(proofTimer);\n    root.innerHTML = R[STEPS[stepIdx]]();\n    root.setAttribute('data-view', 'quiz');\n    /* Before/after screen: moves on by itself after 6 seconds, the first time only */\n    if (STEPS[stepIdx] === 'proof' && !proofDone) {\n      proofDone = true;\n      var nb = root.querySelector('.cid-step-proof [data-act=\"next\"]'); if (nb) nb.classList.add('cid-btn-timer');\n      proofTimer = setTimeout(function () { if (STEPS[stepIdx] === 'proof' && root.getAttribute('data-view') === 'quiz') go(stepIdx + 1); }, PROOF_MS);\n    }\n  }\n  /* Keep the Continue / Keep going button in view on every step, and keep the before/after photo short enough that it fits above it */\n  (function () {\n    if (document.getElementById('cid-v3-style')) return;\n    var css = '#cid .cid-foot{position:sticky;bottom:0;z-index:5;padding-top:14px;padding-bottom:calc(14px + env(safe-area-inset-bottom,0px));background:linear-gradient(rgba(255,255,255,0),#fff 32%);}' +\n      '#cid .cid-proof img{max-height:40vh;object-fit:contain;}' +\n      '#cid .cid-btn-timer{position:relative;overflow:hidden;}' +\n      '#cid .cid-btn-timer::after{content:\"\";position:absolute;left:0;bottom:0;height:3px;width:100%;background:rgba(255,255,255,.75);transform-origin:left;animation:cidTimer ' + PROOF_MS + 'ms linear forwards;}' +\n      '@keyframes cidTimer{from{transform:scaleX(0)}to{transform:scaleX(1)}}' +\n      '@media (prefers-reduced-motion:reduce){#cid .cid-btn-timer::after{animation:none;}}';\n    var st = document.createElement('style'); st.id = 'cid-v3-style'; st.textContent = css; document.head.appendChild(st);\n  })();\n\n  /* ---------- Quiz events ---------- */\n  root.addEventListener('click', function (e) {\n    var b = e.target.closest('button, a'); if (!b || !root.contains(b)) return;\n    if (b.dataset.back) return back(b.dataset.back);\n    if (b.dataset.a) {\n      var k = b.dataset.a, v = b.dataset.v;\n      if (k === 'type') { A.type = Number(v); A.modelIdx = b.dataset.i != null ? Number(b.dataset.i) : null; }\n      else A[k] = v;\n      b.setAttribute('aria-pressed', 'true');\n      return setTimeout(function () { go(stepIdx + 1); }, reduced() ? 0 : 220);\n    }\n    if (b.dataset.m) {\n      var q = b.dataset.m, val = b.dataset.v, arr = A[q];\n      if (val === 'none') A[q] = arr.indexOf('none') > -1 ? [] : ['none'];\n      else { arr = arr.filter(function (x) { return x !== 'none'; }); var i = arr.indexOf(val); if (i > -1) arr.splice(i, 1); else arr.push(val); A[q] = arr; }\n      root.querySelectorAll('[data-m=\"' + q + '\"]').forEach(function (el) { el.setAttribute('aria-pressed', String(A[q].indexOf(el.dataset.v) > -1)); });\n      var nb = root.querySelector('[data-act=\"next\"]'); if (nb) nb.disabled = !A[q].length;\n      return;\n    }\n    var act = b.dataset.act;\n    if (act === 'next') return go(stepIdx + 1);\n    if (act === 'prev') { var pi = prevStep(); if (pi > -1) go(pi); return; }\n    if (act === 'curl-fallback') { curlFallback = true; bubbleN = 0; root.innerHTML = R.curl(); return; }\n    if (act === 'strand-help') {\n      showStrandHelp = true; instant = true; root.innerHTML = R.strands(); instant = false;\n      var hi = root.querySelector('.cid-help-img'); if (hi) hi.scrollIntoView({ block: 'center', behavior: reduced() ? 'auto' : 'smooth' });\n      return;\n    }\n    if (act === 'skip') return finish();\n  });\n  root.addEventListener('submit', function (e) {\n    var f = e.target.closest('form.cid-form'); if (!f) return;\n    e.preventDefault();\n    var email = f.email.value.trim(), err = f.querySelector('.cid-err');\n    if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/.test(email)) { err.hidden = false; f.email.focus(); return; }\n    err.hidden = true;\n    var data = { email: email, first: f.first ? f.first.value.trim() : '', lang: (f.querySelector('[name=lang]:checked') || {}).value || 'en', consent: f.consent.checked };\n    var btn = f.querySelector('[type=submit]'); btn.disabled = true; btn.textContent = 'Sending...';\n    if (f.dataset.form === 'quiz') {\n      A.lang = data.lang;\n      var done = false, next = function () { if (!done) { done = true; finish(data); } };\n      sendToKlaviyo(data, resultState()).then(next, next);\n      setTimeout(next, 2500);\n    } else {\n      var st = resultState();\n      sendToKlaviyo(data, st).then(function () {\n        ses('cid_emailed', '1'); saveLocal(st, true);\n        f.outerHTML = '<p class=\"cid-sent\">Sent! Your Curl ID, your plan and your extra 5% code are on their way. They usually arrive in a minute or two.</p>';\n      }, function () { btn.disabled = false; btn.textContent = 'Email me my plan + code'; err.textContent = 'Something went wrong. Please try again.'; err.hidden = false; });\n    }\n  });\n\n  /* ---------- Result state + URL ---------- */\n  function params() { var o = {}; new URLSearchParams(location.search).forEach(function (v, k) { o[k] = v; }); return o; }\n  function resultState() {\n    var id = curlIdFrom(A.strands, A.porosity);\n    return { id: id, type: A.type, look: lookFromGoal(A.goal), goal: A.goal, strands: A.strands, porosity: A.porosity,\n      scalp: A.scalp, history: A.history, life: A.life, lang: A.lang || lang() };\n  }\n  /* a saved routine always opens on the quiz page you're on now (older saves may hold another page's path) */\n  function savedHere(u) { var i = String(u || '').indexOf('?'); return location.pathname + (i > -1 ? String(u).slice(i) : ''); }\n  function urlFor(st, look) {\n    var q = new URLSearchParams();\n    q.set('id', st.id); q.set('type', st.type); q.set('look', look || st.look);\n    if (st.goal) q.set('goal', st.goal);\n    if (st.strands) q.set('strands', st.strands);\n    if (st.porosity) q.set('por', st.porosity);\n    if (st.scalp && st.scalp.length) q.set('scalp', st.scalp.join(','));\n    if (st.history && st.history.length) q.set('hist', st.history.join(','));\n    if (st.life && st.life.length) q.set('life', st.life.join(','));\n    if (st.code) q.set('code', st.code);\n    return location.pathname + '?' + q.toString();\n  }\n  function stateFromParams(p) {\n    if (!CURL_IDS[p.id] || [2, 3, 4].indexOf(Number(p.type)) < 0) return null;\n    var split = function (s) { return s ? s.split(',').filter(Boolean) : []; };\n    return { id: p.id, type: Number(p.type), look: LOOKS[p.look] ? p.look : 'definition', goal: p.goal || null,\n      strands: p.strands || null, porosity: p.por || null, scalp: split(p.scalp), history: split(p.hist), life: split(p.life),\n      code: p.code || null, lang: lang() };\n  }\n  function saveLocal(st, emailed) {\n    if (CFG.isB2B) return;\n    var prev = store(STORE_KEY) || {};\n    store(STORE_KEY, { url: urlFor(st), id: st.id, type: st.type, look: st.look, name: CURL_IDS[st.id].name, savedAt: Date.now(), emailed: emailed || prev.emailed || false });\n  }\n  function finish(emailData) {\n    var st = resultState();\n    if (emailData) ses('cid_emailed', '1');\n    saveLocal(st, !!emailData);\n    try { history.pushState({}, '', urlFor(st)); } catch (e) { location.href = urlFor(st); return; }\n    renderResult(st);\n  }\n\n  /* ---------- Klaviyo (client API, public key) ---------- */\n  function kitNames(st, look) { var c = COPY[st.id + '-' + st.type]; return c ? c.kit[look].items.map(function (i) { return NAMES[i.product]; }) : []; }\n  /* French copy for the emails: loaded only when she picks Fran\u00E7ais (assets/curl-id-email-fr.js) */\n  function loadFr() {\n    if (window.CURL_ID_EMAIL_FR) return Promise.resolve();\n    var src = SELF_SRC.replace(/curl-id-quiz\\.js(\\?.*)?$/, 'curl-id-email-fr.js');\n    if (!src || src === SELF_SRC) return Promise.resolve();\n    return new Promise(function (ok) {\n      var sc = document.createElement('script'); sc.src = src; sc.async = true;\n      sc.onload = sc.onerror = function () { ok(); };\n      document.head.appendChild(sc);\n      setTimeout(ok, 2500);\n    });\n  }\n  function sendToKlaviyo(d, st) {\n    return (d.lang === 'fr' ? loadFr() : Promise.resolve()).then(function () { return sendToKlaviyoNow(d, st); });\n  }\n  function sendToKlaviyoNow(d, st) {\n    var K = CFG.klaviyo || {};\n    if (!K.publicKey || CFG.isB2B) { console.warn('[Curl ID] Klaviyo public key missing; nothing sent.'); return Promise.resolve(); }\n    var kit = kitFor(st.id + '-' + st.type, st.look), m = kit && kit.p.media || {};\n    var kv = COPY[st.id + '-' + st.type] ? kitView(COPY[st.id + '-' + st.type], st.id + '-' + st.type, st.look) : { items: [], addon: null };\n    var picks = buildPicks(st).map(function (p) { return NAMES[p.key]; });\n    var props = {\n      'Curl ID': CURL_IDS[st.id].name, 'Curl ID Type': st.type, 'Curl ID Full': CURL_IDS[st.id].name + ' ' + st.type,\n      'Curl ID Look': LOOKS[st.look], 'Curl ID Crown Goal': st.goal ? label('goal', st.goal) : null,\n      'Curl ID Strands': st.strands, 'Curl ID Porosity': st.porosity ? label('porosity', st.porosity) : null,\n      'Curl ID Porosity Group': CURL_IDS[st.id].por === 'low' ? 'Low' : 'Medium to high',\n      'Curl ID Scalp': st.scalp.map(function (v) { return label('scalp', v); }),\n      'Curl ID Hair History': st.history.map(function (v) { return label('history', v); }),\n      'Curl ID Lifestyle': st.life.map(function (v) { return label('life', v); }),\n      'Curl ID Language': d.lang === 'fr' ? 'French' : 'English',\n      'Curl ID Plan URL': abs(urlFor(st)),\n      'Curl ID Video URL': m['video' + { definition: 'Definition', volume: 'Volume', both: 'Both' }[st.look]] || m.videoDefinition || null,\n      'Curl ID Guide URL': (d.lang === 'fr' ? m.guideFr : m.guideEn) || m.guideEn || null,\n      'Curl ID Quiz Date': new Date().toISOString()\n    };\n    var evProps = Object.assign({}, props, {\n      'Kit Products': kv.addon ? kv.items.map(function (i) { return NAMES[i.product]; }) : kitNames(st, st.look),\n      'Kit Add-On': kv.addon ? NAMES[kv.addon.key] : null,\n      'Kit Add-On URL': kv.addon && product(kv.addon.key) ? abs(product(kv.addon.key).url) : null,\n      'Kit Variant ID': kit && kit.v ? kit.v.id : null,\n      'Kit Price': kit && kit.v ? kit.v.price / 100 : (COPY[st.id + '-' + st.type] || { kit: {} }).kit[st.look].price,\n      'Kit URL': kit ? abs(kit.p.url + (kit.v ? '?variant=' + kit.v.id : '')) : null,\n      'Kit Image': kit && ((kit.v && kit.v.img) || kit.p.img) ? abs((kit.v && kit.v.img) || kit.p.img) : null,\n      'Picked For You': picks,\n      'Opted In': d.consent\n    });\n    /* Email 1 content: everything the Curl ID results email needs, so one Klaviyo template covers all 36 results */\n    var cc = COPY[st.id + '-' + st.type];\n    var FRX = d.lang === 'fr' && window.CURL_ID_EMAIL_FR, FRT = FRX ? FRX.t : {};\n    var tr = function (x) { return x == null ? x : (FRT[x] || x); };\n    if (cc) {\n      var rt = cc.routine[st.look] || cc.routine.definition || [];\n      Object.assign(evProps, {\n        'Curl ID Tagline': tr(cc.tagline),\n        'Curl ID Type Label': tr(cc.curlTypeLabel),\n        'Curl ID Type Noun': FRX ? FRX.nouns[TYPE_NOUN[st.type]] : TYPE_NOUN[st.type],\n        'Curl ID Look Label': FRX ? FRX.looks[LOOKS[st.look]] : LOOKS[st.look],\n        'Curl ID Strands Label': tr(cc.strands),\n        'Curl ID Porosity Label': tr(cc.porosity),\n        'curl_id_explained': cc.explained.map(tr),\n        'Curl ID Superpower': capFirst(tr(cc.superpower)),\n        'Curl ID Challenge': capFirst(tr(cc.challenge)),\n        'Curl ID Why Let Down': cc.whyLetDown ? capFirst(tr(cc.whyLetDown)) : null,\n        'curl_id_symptoms': cc.symptoms.map(tr),\n        'routine_steps': rt.map(function (r, i) { return { n: i + 1, verb: tr(r.verb), product: r.product ? NAMES[r.product] : '', text: tr(r.text) }; }),\n        'kit_items': kv.items.map(function (i) { return { name: NAMES[i.product], line: tr(i.line) }; }),\n        'Kit Name': FRX ? FRX.kitName.replace('{name}', CURL_IDS[st.id].name) : CURL_IDS[st.id].name + ' Curl ID Kit',\n        'Before Image': m.before ? abs(m.before) : null,\n        'After Image': (function () { var af = m[{ definition: 'afterDefinition', volume: 'afterVolume', both: 'afterBoth' }[st.look]] || m.afterDefinition; return af ? abs(af) : null; })(),\n        'Kit Compare Price': kit && kit.v && kit.v.compare > kit.v.price ? kit.v.compare / 100 : null,\n        'Kit Add-On Line': kv.addon ? tr(kv.addon.line) : null,\n        'Kit Add-On Price': kv.addon ? kv.addon.v.price / 100 : null,\n        'Quiz URL': abs(location.pathname),\n        'Stylist Name': (CFG.stylist && CFG.stylist.name) || null\n      });\n    }\n    /* Save the email content on the profile too, so the Curl ID emails can use {{ person|lookup:'...' }} (latest quiz wins) */\n    ['Kit Products', 'Kit Add-On', 'Kit Add-On URL', 'Kit Price', 'Kit URL', 'Kit Image', 'Curl ID Tagline', 'Curl ID Type Label', 'Curl ID Type Noun',\n     'Curl ID Strands Label', 'Curl ID Porosity Label', 'curl_id_explained', 'Curl ID Superpower', 'Curl ID Challenge', 'Curl ID Why Let Down',\n     'curl_id_symptoms', 'routine_steps', 'kit_items', 'Kit Name', 'Before Image', 'After Image', 'Kit Compare Price', 'Kit Add-On Line',\n     'Kit Add-On Price', 'Quiz URL', 'Stylist Name', 'Curl ID Look Label'].forEach(function (k) { if (k in evProps) props[k] = evProps[k]; });\n    var profile = { email: d.email, properties: props };\n    if (d.first) profile.first_name = d.first;\n    var base = 'https://a.klaviyo.com/client/', qs = '?company_id=' + encodeURIComponent(K.publicKey);\n    var headers = { 'Content-Type': 'application/json', revision: K.revision || '2024-10-15' };\n    var jobs = [fetch(base + 'events/' + qs, { method: 'POST', headers: headers, body: JSON.stringify({ data: { type: 'event', attributes: {\n      properties: evProps, metric: { data: { type: 'metric', attributes: { name: K.metric || 'Curl ID Quiz Completed' } } },\n      profile: { data: { type: 'profile', attributes: profile } }, unique_id: d.email + '-' + Date.now() } } }) })];\n    if (d.consent && K.listId) {\n      jobs.push(fetch(base + 'subscriptions/' + qs, { method: 'POST', headers: headers, body: JSON.stringify({ data: { type: 'subscription', attributes: {\n        custom_source: 'Curl ID quiz', profile: { data: { type: 'profile', attributes: { email: d.email,\n          subscriptions: { email: { marketing: { consent: 'SUBSCRIBED' } } } } } } },\n        relationships: { list: { data: { type: 'list', id: K.listId } } } } }) }));\n    }\n    return Promise.all(jobs).then(function (rs) {\n      rs.forEach(function (r) { if (!r.ok) { r.text().then(function (t) { console.warn('[Curl ID] Klaviyo rejected the request (' + r.status + '):', t); }); throw new Error('Klaviyo ' + r.status); } });\n      console.info('[Curl ID] Sent to Klaviyo (script version 2026-10-15c): profile + event with ' + Object.keys(evProps).length + ' fields.');\n    });\n  }\n\n  /* ---------- Picked for you (PRODUCT_RULES) ---------- */\n  function cadence(copy, key, fallback) {\n    var t = copy && copy.addons && (copy.addons.treatments || []).filter(function (x) { return x.product === key; })[0];\n    return t ? t.cadence.charAt(0).toUpperCase() + t.cadence.slice(1) : fallback;\n  }\n  function buildPicks(st) {\n    var copy = COPY[st.id + '-' + st.type], low = CURL_IDS[st.id].por === 'low';\n    var inKit = copy ? copy.kit[st.look].items.map(function (i) { return i.product; }) : [];\n    var out = [], seen = {};\n    function add(key, why, when) { if (seen[key] || inKit.indexOf(key) > -1 || !product(key)) return; seen[key] = 1; out.push({ key: key, why: why, when: when }); }\n    var scalp = st.scalp.filter(function (v) { return v !== 'none'; }), dmg = st.history.filter(function (v) { return DAMAGE.indexOf(v) > -1; });\n    var tangles = st.history.indexOf('detangling') > -1, life = st.life, protective = st.goal === 'protective' || life.indexOf('extensions') > -1;\n    if (scalp.length) add('renaissance', 'You said your scalp is ' + listJoin(scalp.map(function (v) { return label('scalp', v).toLowerCase(); })) + '. Curl Renaissance clears the buildup that\\'s usually behind it.', cadence(copy, 'renaissance', 'Monthly reset'));\n    if (dmg.length) {\n      var what = listJoin(dmg.map(function (v) { return { colour: 'colour', straightening: 'chemical straightening', heat: 'heat styling', breakage: 'breakage' }[v]; }));\n      if (low) add('unconditional_love', 'You told us about ' + what + '. Unconditional Love adds deep hydration plus protein to bring back strength.', cadence(copy, 'unconditional_love', 'Every 2nd wash day, as a deep treatment'));\n      else add('curl_repair', 'You told us about ' + what + '. Curl Repair is a reconstructive protein treatment that rebuilds strength.', cadence(copy, 'curl_repair', 'Every 3 to 4 weeks'));\n    }\n    if (protective) add('renaissance', 'Protective styles and extensions trap buildup. Curl Renaissance keeps your scalp clean during your style and on takedown day.', cadence(copy, 'renaissance', 'Monthly reset'));\n    if (life.indexOf('swim') > -1) add('renaissance', 'You swim regularly. Curl Renaissance clears out chlorine and salt after your swims.', 'After swimming, before Curl Renew');\n    if (life.indexOf('workout') > -1) add('renaissance', 'You work out. Curl Renaissance clears the sweat and buildup that come with it.', cadence(copy, 'renaissance', 'Monthly reset'));\n    var refreshWhy = [];\n    if (life.indexOf('workout') > -1) refreshWhy.push('you work out');\n    if (tangles) refreshWhy.push('detangling can be tough');\n    if (protective) refreshWhy.push('your hair needs hydration under your style');\n    if (life.indexOf('swim') > -1) refreshWhy.push('you swim');\n    var why = refreshWhy.length ? 'You told us ' + listJoin(refreshWhy) + '. Daily Curl Booster and Mistify refresh your curls and add slip.' : 'Daily Curl Booster and Mistify bring your curls back to life between wash days.';\n    if (product('refresh_kit')) add('refresh_kit', why, 'Between wash days' + (life.indexOf('workout') > -1 ? ' and after workouts' : ''));\n    else { add('daily_curl_booster', why, 'Between wash days'); add('mistify', 'A light mist to refresh your curls between wash days.', 'Between wash days'); }\n    return out.slice(0, 4);\n  }\n\n  /* ---------- Result page ---------- */\n  var RS = null;\n  function renderResult(st) {\n    RS = st;\n    var copy = COPY[st.id + '-' + st.type];\n    if (!copy) { root.innerHTML = '<p class=\"cid-noscript\">We couldn\\'t find that Curl ID. <a href=\"' + esc(location.pathname) + '\">Retake the quiz</a></p>'; return; }\n    if (st.code) { fetch((CFG.routes.root || '/').replace(/\\/$/, '') + '/discount/' + encodeURIComponent(st.code)).catch(function () {}); }\n    root.setAttribute('data-view', 'result');\n    root.innerHTML = resultHtml(st, copy);\n    var v = root.querySelector('.cid-video video'); if (v) v.load();\n  }\n  function productCard(key, opts) {\n    opts = opts || {};\n    var p = product(key), v = pickVariant(p, opts.prefer);\n    var img = p && p.img;\n    return '<div class=\"cid-pcard\">' +\n      '<a class=\"cid-pcard-img\" href=\"' + esc(p ? p.url : '#') + '\"' + (p ? '' : ' aria-disabled=\"true\"') + '>' + (img ? '<img src=\"' + esc(img) + '\" alt=\"\" loading=\"lazy\">' : '') + '</a>' +\n      '<div class=\"cid-pcard-body\">' + (opts.top || '') + '<a class=\"cid-pcard-t\" href=\"' + esc(p ? p.url : '#') + '\">' + esc(opts.name || NAMES[key]) + '</a>' +\n      (opts.text ? '<p>' + esc(opts.text) + '</p>' : '') + (opts.when ? '<p class=\"cid-when\">' + esc(opts.when) + '</p>' : '') +\n      '<div class=\"cid-pcard-buy\">' + (v ? '<span class=\"cid-price\">' + money(v.price) + '</span><button type=\"button\" class=\"cid-add\" data-add=\"' + v.id + '\" aria-label=\"Add ' + esc(NAMES[key]) + ' to cart\">Add</button>' : '<span class=\"cid-soldout\">' + (p ? 'Sold out' : '') + '</span>') + '</div>' +\n      '</div></div>';\n  }\n  function resultHtml(st, copy) {\n    var c = CURL_IDS[st.id], look = st.look, kitData = copy.kit[look], kv = kitView(copy, st.id + '-' + st.type, look), kit = kv.kit, addon = kv.addon;\n    var m = kit && kit.p.media || {}, emailed = ses('cid_emailed') === '1' || (store(STORE_KEY) || {}).emailed;\n    var kitImg = kit && ((kit.v && kit.v.img) || kit.p.img);\n    var kitPrice = kit && kit.v ? money(kit.v.price) : '$' + kitData.price;\n    var canBuyKit = kit && kit.v && kit.v.available;\n    var gift = st.code ? '<p class=\"cid-giftline\"><strong>Your welcome gift is applied:</strong> an extra 5% off your Curl ID Kit (15% off in total), plus our 30-Day Curl Expert Guarantee. Valid for 7 days. We\\'ve also sent your results and your styling guide to your inbox.</p>'\n      : emailed ? '<p class=\"cid-giftline cid-giftline-inbox\"><strong>Your extra 5% is in your inbox.</strong> Grab it before checkout: 15% off your kit in total, plus our 30-Day Curl Expert Guarantee. Valid for 7 days.</p>' : '';\n    var rating = kit && kit.p.rating ? '<div class=\"cid-rating\"><span aria-hidden=\"true\">\u2605</span> ' + Number(kit.p.rating).toFixed(1) + (kit.p.ratingCount ? ' from ' + kit.p.ratingCount + ' reviews' : '') + '</div>' : '';\n    var toggle = '<div class=\"cid-toggle\" role=\"group\" aria-label=\"Choose your look\">' + Object.keys(LOOKS).map(function (k) {\n      return '<a href=\"' + esc(urlFor(st, k)) + '\" data-look=\"' + k + '\" aria-pressed=\"' + (k === look) + '\">' + esc(LOOKS[k]) + '</a>';\n    }).join('') + '</div>';\n\n    /* 1. Hero + kit */\n    var h = '<div class=\"cid-result\">' +\n      '<section class=\"cid-r-hero\"><div class=\"cid-r-id\">' +\n      '<div class=\"cid-reveal-k\">Your Curl ID is</div>' + nameHtml(c.name, 'cid-idname-xl') +\n      '<div class=\"cid-pills\">' + chipsFor(st.id, st.type) + '</div>' +\n      '<p class=\"cid-reveal-tag\">' + esc(copy.tagline) + '</p>' + toggle +\n      '<p class=\"cid-help\">Switching updates your kit, routine, photos and video below.</p></div>' +\n      '<div class=\"cid-kit\"><div class=\"cid-kit-k\">Made for your Curl ID</div>' + rating +\n      (kitImg ? '<img class=\"cid-kit-img\" src=\"' + esc(kitImg) + '\" alt=\"' + esc(c.name) + ' Curl ID Kit, ' + esc(LOOKS[look]) + '\">' : '') +\n      '<h2 class=\"cid-kit-t\">' + esc(c.name) + ' Curl ID Kit</h2>' +\n      '<p class=\"cid-kit-sub\">Type ' + st.type + ' \u00B7 ' + esc(LOOKS[look]) + ' \u00B7 made for ' + esc(copy.strands) + ' strands and ' + esc(copy.porosity) + ' porosity</p>' +\n      '<div class=\"cid-kit-inc\">' + (kit && kit.fallback ? 'Your Definition kit' : 'What\\'s included') + '</div><ul class=\"cid-kit-list\">' + kv.items.map(function (i) {\n        return '<li><strong>' + esc(NAMES[i.product]) + '</strong> ' + esc(i.line) + '</li>';\n      }).join('') + '</ul>' +\n      '<div class=\"cid-kit-price\">' + (kit && kit.v && kit.v.compare > kit.v.price ? '<s class=\"cid-was\">' + money(kit.v.compare) + '</s> ' : '') + kitPrice +\n      (kit && kit.v && kit.v.compare > kit.v.price ? ' <span class=\"cid-save\">You save ' + money(kit.v.compare - kit.v.price) + '</span>' : '') + '</div>' +\n      (addon ? '<div class=\"cid-addon\"><div class=\"cid-box2-k\">Add for Volume + Definition</div><p><strong>' + esc(NAMES[addon.key]) + '</strong> ' + esc(addon.line) + ' <span class=\"cid-price\">' + money(addon.v.price) + '</span></p>' +\n        (kv.dropsML ? '<p class=\"cid-help\">For your Volume &amp; Definition look, skip Moisture Lock so your curls stay light. Save it for days you want more definition.</p>' : '') + '</div>' : '') +\n      (st.code ? '' : gift) +\n      (canBuyKit && addon && addon.v.available ? '<button type=\"button\" class=\"cid-btn cid-btn-block\" data-addkit=\"' + kit.v.id + ',' + addon.v.id + '\">Add my kit + ' + esc(NAMES[addon.key]) + ', ' + money(kit.v.price + addon.v.price) + '</button>' +\n          '<button type=\"button\" class=\"cid-link\" data-addkit=\"' + kit.v.id + '\">Just the Definition kit, ' + money(kit.v.price) + '</button>'\n        : canBuyKit ? '<button type=\"button\" class=\"cid-btn cid-btn-block\" data-addkit=\"' + kit.v.id + '\">Add my kit to cart</button>'\n        : '<a class=\"cid-btn cid-btn-block\" href=\"#cid-build\">Shop my routine</a>') + (st.code ? gift : '') +\n      '<a class=\"cid-link\" href=\"#cid-build\">Prefer to build your own?</a></div></section>';\n\n    /* 2. What your hair is craving */\n    h += '<section class=\"cid-r-sec cid-crave\"><h2 class=\"cid-h2\"><span class=\"cid-h2-a\">What your hair</span> <span class=\"cid-script\">is craving</span></h2>' +\n      copy.explained.map(function (p) { return '<p>' + esc(p) + '</p>'; }).join('') +\n      '<div class=\"cid-two\"><div class=\"cid-box2\"><div class=\"cid-box2-k\">Your superpower</div><p>' + esc(capFirst(copy.superpower)) + '</p></div>' +\n      '<div class=\"cid-box2\"><div class=\"cid-box2-k\">Your challenge</div><p>' + esc(capFirst(copy.challenge)) + '</p></div></div>' +\n      (copy.whyLetDown ? '<p><strong>Why so many products let you down:</strong> ' + esc(capFirst(copy.whyLetDown)) + '</p>' : '') +\n      '<div class=\"cid-sound\"><div class=\"cid-box2-k\">Does this sound like your hair?</div><ul>' + copy.symptoms.map(function (s) { return '<li>' + esc(s) + '</li>'; }).join('') + '</ul>' +\n      '<p class=\"cid-help\">Something doesn\\'t sound like you? <a href=\"' + esc(location.pathname) + '\" data-retake>Retake the quiz</a>. Take your time on the porosity question: it\\'s the one that changes your routine the most.</p></div></section>';\n\n    /* 3. Picked for you */\n    var picks = buildPicks(st);\n    if (picks.length) h += '<section class=\"cid-r-sec\"><h2 class=\"cid-h2\"><span class=\"cid-h2-a\">Picked</span> <span class=\"cid-script\">for you</span></h2>' +\n      '<p class=\"cid-lede\">Based on what you told us about your scalp, your hair story and your week.</p><div class=\"cid-pgrid\">' +\n      picks.map(function (p) { return productCard(p.key, { text: p.why, when: p.when, prefer: p.key === 'renaissance' ? /2\\s?oz|60\\s?ml/i : null }); }).join('') + '</div></section>';\n\n    /* 4. Build your own */\n    var steps = copy.routine[look], buyable = [];\n    h += '<section class=\"cid-r-sec\" id=\"cid-build\"><h2 class=\"cid-h2\"><span class=\"cid-h2-a\">Build</span> <span class=\"cid-script\">your own</span></h2>' +\n      '<p class=\"cid-lede\">Your ' + esc(LOOKS[look]) + ' routine, step by step. Buy it all or just what you need.</p><ol class=\"cid-steps\">' +\n      steps.map(function (s, i) {\n        var top = '<div class=\"cid-step-n\"><span>' + (i + 1) + '</span>' + esc(s.verb) + '</div>';\n        if (!s.product) return '<li class=\"cid-step cid-step-plain\">' + top + '<p>' + esc(capFirst(s.text)) + '</p></li>';\n        var v = pickVariant(product(s.product)); if (v) buyable.push(v);\n        return '<li class=\"cid-step\">' + productCard(s.product, { top: top, text: capFirst(s.text) }) + '</li>';\n      }).join('') + '</ol>';\n    if (buyable.length) {\n      var total = buyable.reduce(function (a, v) { return a + v.price; }, 0);\n      h += '<button type=\"button\" class=\"cid-btn cid-btn-ghost\" data-addall=\"' + buyable.map(function (v) { return v.id; }).join(',') + '\">Add all ' + buyable.length + ' to cart, ' + money(total) + '</button>';\n    }\n    if (copy.extraStylers && copy.extraStylers.length) h += '<div class=\"cid-extra\"><div class=\"cid-box2-k\">Play with your look</div><p>Want to switch things up? Your Curl ID also loves ' +\n      listJoin(copy.extraStylers.map(function (k) { return NAMES[k]; })) + '.</p><div class=\"cid-pgrid\">' +\n      copy.extraStylers.map(function (k) { return productCard(k); }).join('') + '</div></div>';\n    var wc = CURL_IDS[st.id].por === 'low' ? 'wc_low' : 'wc_medhigh';\n    if (product(wc)) h += '<div class=\"cid-start\"><div class=\"cid-box2-k\">Just starting out?</div>' +\n      productCard(wc, { text: 'Curl Renew and your conditioner. Add a styler later.' }) + '</div>';\n    h += '</section>';\n\n    /* 5. Applying your products the right way */\n    var ap = copy.applying;\n    if (ap) {\n      var hasML = kitData.items.some(function (i) { return i.product === 'moisture_lock'; });\n      var res = ap.residue.steps.filter(function (s) { return hasML || !/Moisture Lock/.test(s); });\n      h += '<section class=\"cid-r-sec\"><details class=\"cid-apply\"' + (hasML ? ' open' : '') + '><summary><h2 class=\"cid-h2\"><span class=\"cid-h2-a\">Applying your products</span> <span class=\"cid-script\">the right way</span></h2></summary>' +\n        '<p>' + esc(ap.intro) + '</p>' + ap.steps.map(function (s) { return '<p>' + boldLead(s) + '</p>'; }).join('') +\n        (hasML ? '<div class=\"cid-ml\"><p>' + boldLead(ap.moistureLock) + '</p><ol>' + ap.mlSteps.map(function (s) { return '<li>' + boldLead(s) + '</li>'; }).join('') + '</ol></div>' : '') +\n        ap.after.map(function (s) { return '<p>' + esc(s) + '</p>'; }).join('') +\n        '<div class=\"cid-residue\"><p>' + boldLead(ap.residue.intro) + '</p><ol>' + res.map(function (s) { return '<li>' + esc(s) + '</li>'; }).join('') + '</ol>' +\n        (hasML ? ap.residue.outro.map(function (s) { return '<p>' + esc(s) + '</p>'; }).join('') : '') +\n        (look === 'both' && ap.residue.volumeDefinitionOnly ? '<p>' + esc(ap.residue.volumeDefinitionOnly) + '</p>' : '') + '</div></details></section>';\n    }\n\n    /* 6. Results + video */\n    var after = m[{ definition: 'afterDefinition', volume: 'afterVolume', both: 'afterBoth' }[look]] || (look === 'both' ? m.afterDefinition : null);\n    var bef = m.before || null, NOB = !bef; var video = m[{ definition: 'videoDefinition', volume: 'videoVolume', both: 'videoBoth' }[look]] || m.videoDefinition;\n    if ((bef && after) || (NOB && after) || video) {\n      h += '<section class=\"cid-r-sec\"><h2 class=\"cid-h2\"><span class=\"cid-h2-a\">See the</span> <span class=\"cid-script\">results</span></h2>';\n      if (NOB && after) h += '<div class=\"cid-ba cid-ba--solo\"><figure><img src=\"' + esc(after) + '\" alt=\"After, ' + esc(LOOKS[look]) + '\" loading=\"lazy\"><figcaption>' + esc(LOOKS[look]) + '</figcaption></figure></div>'; if (bef && after) h += '<div class=\"cid-ba\"><figure><img src=\"' + esc(bef) + '\" alt=\"Before\" loading=\"lazy\"><figcaption>Before</figcaption></figure>' +\n        '<figure><img src=\"' + esc(after) + '\" alt=\"After, ' + esc(LOOKS[look]) + '\" loading=\"lazy\"><figcaption>After</figcaption></figure></div>';\n      if (video) h += '<div class=\"cid-video\"><div class=\"cid-box2-k\">Your routine for ' + esc(LOOKS[look]) + '</div>' + videoEmbed(video) +\n        '<p class=\"cid-help\">Watch the full wash day from start to finish.</p></div>';\n      h += '</section>';\n    }\n\n    /* 7. Styling guide */\n    if (m.guideEn || m.guideFr) {\n      var fr = lang() === 'fr';\n      var main = fr && m.guideFr ? m.guideFr : (m.guideEn || m.guideFr), alt = fr ? m.guideEn : m.guideFr;\n      h += '<section class=\"cid-r-sec cid-guide\"><div class=\"cid-box2-k\">Keep it handy</div><h2 class=\"cid-h2\"><span class=\"cid-h2-a\">Your styling</span> <span class=\"cid-script\">guide</span></h2>' +\n        '<p>Every product and technique for your hair type.' + (m.guideNote ? ' ' + esc(m.guideNote) : '') + '</p>' +\n        '<a class=\"cid-btn\" href=\"' + esc(main) + '\" target=\"_blank\" rel=\"noopener\">Download the guide</a>' +\n        (alt && alt !== main ? '<a class=\"cid-link\" href=\"' + esc(alt) + '\" target=\"_blank\" rel=\"noopener\">' + (fr ? 'Download in English' : 'T\u00E9l\u00E9charger en fran\u00E7ais') + '</a>' : '') + '</section>';\n    }\n\n    /* 8. Save your plan (only for people who skipped email) */\n    if (!emailed && !CFG.isB2B) h += '<section class=\"cid-r-sec cid-save\"><h2 class=\"cid-h2\"><span class=\"cid-h2-a\">Save your</span> <span class=\"cid-script\">curl care plan</span></h2>' +\n      '<p>Get your Curl ID, kit, routine and styling guide in your inbox, plus your welcome gift: an extra 5% off your Curl ID Kit (15% off in total) and our 30-Day Curl Expert Guarantee.</p>' + emailForm('result') + '</section>';\n\n    /* 9. Note from the stylist */\n    var stl = CFG.stylist || {};\n    h += '<section class=\"cid-r-sec cid-note-card\">' + stylist().replace('cid-stylist', 'cid-stylist cid-stylist-lg') +\n      '<div class=\"cid-box2-k\">A note from ' + esc(firstWord(stl.name)) + '</div>' +\n      '<p>Your hair isn\\'t difficult. It just hasn\\'t been understood yet. This is the first step, and I\\'m so glad you took it.</p>' +\n      '<p>You\\'ll feel the difference from your very first wash day: softer, more hydrated curls. Most of our clients see results in 1-3 washes, and your curls keep getting healthier the longer you stay with your routine.</p>' +\n      '<p class=\"cid-signoff\">Claim your power. Celebrate your Inhairitance.</p></section>';\n\n    h += '<footer class=\"cid-r-foot\">' + (CFG.isB2B ? '' : '<p class=\"cid-help\">Your curl care plan is saved on this device for 90 days.</p>') +\n      '<a class=\"cid-link\" href=\"' + esc(location.pathname) + '\" data-retake>Retake the quiz</a></footer>';\n    h += '<div class=\"cid-toast\" role=\"status\" hidden></div></div>';\n    return h;\n  }\n  function capFirst(s) { s = String(s || ''); return s.charAt(0).toUpperCase() + s.slice(1); }\n  function boldLead(s) { var i = s.indexOf('. '); return i > 0 && i < 60 ? '<strong>' + esc(s.slice(0, i + 1)) + '</strong> ' + esc(s.slice(i + 2)) : esc(s); }\n  function videoEmbed(url) {\n    var yt = /(?:youtu\\.be\\/|v=|embed\\/|shorts\\/)([\\w-]{11})/.exec(url), vm = /vimeo\\.com\\/(\\d+)/.exec(url);\n    if (yt) return '<div class=\"cid-embed\"><iframe src=\"https://www.youtube-nocookie.com/embed/' + yt[1] + '?rel=0&cc_load_policy=1\" title=\"Routine video\" allow=\"autoplay; encrypted-media; picture-in-picture\" allowfullscreen loading=\"lazy\"></iframe></div>';\n    if (vm) return '<div class=\"cid-embed\"><iframe src=\"https://player.vimeo.com/video/' + vm[1] + '\" title=\"Routine video\" allow=\"autoplay; picture-in-picture\" allowfullscreen loading=\"lazy\"></iframe></div>';\n    return '<video src=\"' + esc(url) + '\" controls playsinline preload=\"metadata\"></video>';\n  }\n\n  /* ---------- Result events ---------- */\n  function toast(msg) {\n    var t = root.querySelector('.cid-toast'); if (!t) return;\n    t.innerHTML = msg; t.hidden = false; clearTimeout(t._h); t._h = setTimeout(function () { t.hidden = true; }, 4000);\n  }\n  function addToCart(ids, kitLabel) {\n    var items = ids.map(function (id) { var it = { id: Number(id), quantity: 1 }; if (kitLabel) it.properties = { _curl_id: kitLabel }; return it; });\n    return fetch((CFG.routes.cartAdd || '/cart/add') + '.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ items: items }) })\n      .then(function (r) { if (!r.ok) return r.json().then(function (j) { throw new Error(j.description || 'Could not add to cart'); }); return r.json(); })\n      .then(function (j) { document.dispatchEvent(new CustomEvent('cart:refresh', { bubbles: true })); return j; });\n  }\n  root.addEventListener('click', function (e) {\n    if (root.getAttribute('data-view') !== 'result') return;\n    var b = e.target.closest('[data-addkit],[data-add],[data-addall],[data-look],[data-retake]'); if (!b) return;\n    if (b.dataset.look) {\n      e.preventDefault(); RS.look = b.dataset.look;\n      try { history.replaceState({}, '', urlFor(RS)); } catch (x) {}\n      saveLocal(RS); renderResult(RS);\n      var k = root.querySelector('.cid-kit'); if (k && window.innerWidth < 900) k.scrollIntoView({ block: 'start', behavior: reduced() ? 'auto' : 'smooth' });\n      return;\n    }\n    if (b.hasAttribute('data-retake')) {\n      e.preventDefault(); A = { goal: null, type: null, strands: null, porosity: null, scalp: [], history: [], life: [], lang: null };\n      try { history.pushState({ cidStep: 0 }, '', location.pathname); } catch (x) {}\n      stepIdx = 0; render(); root.scrollIntoView({ block: 'start' }); return;\n    }\n    var ids = b.dataset.addkit ? b.dataset.addkit.split(',') : b.dataset.add ? [b.dataset.add] : b.dataset.addall.split(',');\n    var old = b.textContent; b.disabled = true; b.textContent = 'Adding...';\n    var label = b.dataset.addkit ? CURL_IDS[RS.id].name + ' ' + RS.type + ' \u00B7 ' + LOOKS[RS.look] : null;\n    addToCart(ids, label).then(function () {\n      if (b.dataset.addkit) {\n        var cart = CFG.routes.cart || '/cart';\n        location.href = RS.code ? (CFG.routes.root || '/').replace(/\\/$/, '') + '/discount/' + encodeURIComponent(RS.code) + '?redirect=' + encodeURIComponent(cart) : cart;\n        return;\n      }\n      b.textContent = 'Added'; toast('Added to your cart. <a href=\"' + esc(CFG.routes.cart || '/cart') + '\">View cart</a>');\n      setTimeout(function () { b.disabled = false; b.textContent = old; }, 2500);\n    }, function (err) { b.disabled = false; b.textContent = old; toast(esc(err.message)); });\n  });\n\n  /* ---------- Boot ---------- */\n  var p = params(), st0 = stateFromParams(p);\n  if (st0) { if (st0.code) ses('cid_code', st0.code); else if (ses('cid_code')) st0.code = ses('cid_code'); saveLocal(st0); renderResult(st0); }\n  else {\n    if (p.goal && OPTS.goal.some(function (o) { return o.v === p.goal; })) { A.goal = p.goal; stepIdx = 1; }\n    try { history.replaceState({ cidStep: stepIdx }, '', location.pathname + location.search); } catch (e) {}\n    render();\n  }\n  /* Debug helper for setup: open the console and run CurlIDCheck() */\n  window.CurlIDCheck = function () {\n    var miss = Object.keys(NAMES).filter(function (k) { return !product(k); });\n    var kits = Object.keys(KIT_VARIANTS).map(function (k) { return [k, ['definition', 'volume', 'both'].map(function (l) { var x = kitFor(k, l); return l + ':' + (x && x.v ? (x.fallback ? 'definition kit + add-on' : 'ok') : 'MISSING'); }).join(' ')]; });\n    console.table(kits); console.log('Missing products:', miss.length ? miss : 'none'); return { missing: miss, kits: kits };\n  };\n})();"],
  "mappings": "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",
  "names": ["p", "why", "after", "label"]
}
