{
  "version": 3,
  "sources": ["/cdn/shop/t/16/assets/hi-storefront.js?store=simucube&token=phc_qCVQrXhx5YWstaYm9SCzLb8tQLi4xp249vA583pNbWKH"],
  "sourcesContent": ["/**\n * HI engine storefront loader (P2.2) \u2014 experiment bucketing + event capture.\n *\n * Installed once per store via ScriptTag:\n *   <script async src=\"https://app.hiengine.ai/hi-storefront.js\"\n *     data-ph-token=\"phc_...\" data-ph-host=\"https://us.i.posthog.com\"\n *     data-store=\"handle\"\n *     data-experiments='[{\"flag\":\"aa-test\",\"variantClass\":\"hi-exp-aa\"}]'></script>\n *\n * Design rules (see docs/plans/autonomous-cro-agent.md):\n *  - Anonymous events ONLY (never identify storefront visitors \u2014 5x cost + PII).\n *  - No autocapture, no pageview spam: exposure / add_to_cart / initiate_checkout\n *    / rage_click / product_click only.\n *  - Capture only when experiments are configured for this store.\n *  - CONSENT: nothing boots until Shopify's Customer Privacy API says analytics\n *    is allowed. An API that has not loaded yet means \"not decided\", never\n *    \"allowed\" (see the gate at the end of this file).\n *  - PRODUCT CLICK: hi_product_click records a click on a link to ANOTHER\n *    product page, only on pages inside a configured experiment's scope. It\n *    fires the same way in both arms, so \"share of exposed visitors who\n *    continue to another product\" compares control and variant fairly.\n *  - DEFENSIVE: any internal error must degrade to \"no tracking\", never break the store.\n *  - Preview override: `?hi_variant=1` on any page shows the variant without\n *    tracking (`0` forces control). See the block below.\n *  - SCOPED EXPOSURE: the flag is read with send_event:false on every page (so\n *    the body class + cart attribute stay consistent site-wide), but the\n *    exposure event ($feature_flag_called) is recorded ONLY on pages where the\n *    change renders \u2014 each experiment carries `scope: {paths, selector}`\n *    (lib/growth/exposure-scope.ts). A visitor who never reaches such a page is\n *    still bucketed (one hi_bucketed event per visitor per flag) so the monitor\n *    can run its negative control: the effect among people who could NOT see\n *    the change must be ~0, or the exposed-arm lift is not the change's.\n *  - VISIBLE TRIGGER: a cart drawer, cart notification or below-the-fold block\n *    is in the DOM on every page, so neither the path nor the selector's\n *    presence separates visitors who saw it. `scope.trigger: 'visible'`\n *    records the exposure the first time an element matching scope.selector\n *    is visible (in the viewport, non-zero box, not hidden by display,\n *    visibility or opacity). The selector names the SURFACE, which renders in\n *    both arms \u2014 never the variant's own hi-exp markup.\n */\n(function () {\n  'use strict';\n  var S = document.currentScript;\n  if (!S) return;\n  // Config via data-* attributes (app-embed case) OR src query params\n  // (ScriptTag case \u2014 a ScriptTag is only a src URL, no attributes).\n  var Q = {};\n  try {\n    var qs = (S.src.split('?')[1] || '').split('&');\n    for (var qi = 0; qi < qs.length; qi++) {\n      var kv = qs[qi].split('=');\n      if (kv[0]) Q[kv[0]] = decodeURIComponent(kv.slice(1).join('=') || '');\n    }\n  } catch (e) { /* no query config */ }\n  var TOKEN = S.getAttribute('data-ph-token') || Q.token;\n  var HOST = S.getAttribute('data-ph-host') || Q.host || 'https://us.i.posthog.com';\n  var STORE = S.getAttribute('data-store') || Q.store || '';\n  var experiments = [];\n  try { experiments = JSON.parse(S.getAttribute('data-experiments') || Q.exps || '[]'); } catch (e) { /* bad config \u2192 no exps */ }\n  if (!TOKEN || !experiments.length) return; // nothing to do \u2014 zero footprint\n\n  // --- preview override: ?hi_variant=1 | 0 | <flag> ---\n  // Lets a merchant or reviewer SEE one arm on purpose. It applies the variant\n  // class(es) directly and returns before PostHog exists, so a preview makes\n  // no flag request, no exposure and no events \u2014 it never pollutes the test.\n  //   hi_variant=1      \u2192 every configured variant class (one test runs at a time)\n  //   hi_variant=0      \u2192 control (no classes)\n  //   hi_variant=<flag> \u2192 only that experiment's variant class\n  // Per page load only: the param has to be on each URL you open.\n  var forced = null;\n  try {\n    var fm = /[?&]hi_variant=([^&#]*)/.exec(window.location.search || '');\n    if (fm) forced = decodeURIComponent(fm[1]);\n  } catch (e) { forced = null; }\n  if (forced !== null) {\n    var applyForced = function () {\n      try {\n        for (var fi = 0; fi < experiments.length; fi++) {\n          var fe = experiments[fi];\n          var on = forced === '1' || (forced !== '0' && forced === fe.flag);\n          if (on && fe.variantClass && document.body) document.body.classList.add(fe.variantClass);\n        }\n      } catch (e) { /* preview only \u2014 never break the store */ }\n    };\n    if (document.body) applyForced();\n    else document.addEventListener('DOMContentLoaded', applyForced);\n    return;\n  }\n\n  // --- PostHog official snippet (verbatim) ---\n  // Do NOT hand-roll this stub: array.js replays the queue only for the\n  // official shape (__SV marker, full method list, people stub), and the\n  // asset host must be the *-assets* CDN domain. A custom stub silently\n  // drops queued capture() calls \u2014 caught by the dev-store A/A run.\n  !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,o){var e=o.split(\".\");2==e.length&&(t=t[e[0]],o=e[1]),t[o]=function(){t.push([o].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement(\"script\")).type=\"text/javascript\",p.crossOrigin=\"anonymous\",p.async=!0,p.src=s.api_host.replace(\".i.posthog.com\",\"-assets.i.posthog.com\")+\"/static/array.js\",(r=t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a=\"posthog\",u.people=u.people||[],u.toString=function(t){var e=\"posthog\";return\"posthog\"!==a&&(e+=\".\"+a),t||(e+=\" (stub)\"),e},u.people.toString=function(){return u.toString(1)+\".people (stub)\"},o=\"init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug getPageViewId captureTraceFeedback captureTraceMetric\".split(\" \"),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);\n  var w = window;\n\n  // --- consent gate (Shopify Customer Privacy API) ---\n  // Flag evaluation + capture are analytics processing: do neither until the\n  // visitor's consent allows it. When the visitor has not consented, stay dark\n  // and boot late on the visitorConsentCollected event Shopify fires after the\n  // banner is answered.\n  // An ABSENT API means \"not decided yet\", not \"allowed\": the store's CMP loads\n  // it asynchronously, usually AFTER this async script runs. Treating that gap\n  // as consent tracked EU visitors before they answered (found on Aarni\n  // 2026-09-03; that fix lived only in Aarni's theme asset until now).\n  function consentApi() {\n    var cp = w.Shopify && w.Shopify.customerPrivacy;\n    return cp && typeof cp.analyticsProcessingAllowed === 'function' ? cp : null;\n  }\n  function analyticsAllowed() {\n    try {\n      var cp = consentApi();\n      // Absent API = not decided yet. The gate at the end of this file asks\n      // Shopify to load it; only a surface with no Shopify consent framework\n      // at all boots blind.\n      if (!cp) return false;\n      return cp.analyticsProcessingAllowed() === true;\n    } catch (e) { return false; }\n  }\n\n  var booted = false;\n  function boot() {\n  if (booted) return;\n  booted = true;\n\n  try {\n    w.posthog.init(TOKEN, {\n      api_host: HOST,\n      autocapture: false,\n      capture_pageview: false,\n      capture_pageleave: false,\n      disable_session_recording: true,\n      person_profiles: 'identified_only', // storefront visitors stay anonymous\n    });\n    w.posthog.register({ hi_store: STORE });\n  } catch (e) { return; }\n\n  function safe(fn) { return function () { try { return fn.apply(this, arguments); } catch (e) { /* swallow */ } }; }\n\n  // --- exposure scope (mirrors matchesExposureScope in lib/growth/exposure-scope.ts) ---\n  function stripLocale(p) {\n    var m = /^\\/[a-z]{2}(?:-[a-z]{2})?(?=\\/|$)/i.exec(p);\n    return m ? (p.slice(m[0].length) || '/') : p;\n  }\n  function pathInScope(scope) {\n    if (!scope || !scope.paths || !scope.paths.length) return true;\n    var p = stripLocale((w.location.pathname || '/'));\n    for (var i = 0; i < scope.paths.length; i++) {\n      var pre = String(scope.paths[i] || '');\n      if (!pre) continue;\n      if (pre === '/') { if (p === '/' || p === '') return true; continue; }\n      if (p === pre) return true;\n      var ws = pre.charAt(pre.length - 1) === '/' ? pre : pre + '/';\n      if (p.indexOf(ws) === 0) return true;\n      if (pre.charAt(pre.length - 1) === '/' && p === pre.slice(0, -1)) return true;\n    }\n    return false;\n  }\n  function selectorInScope(scope) {\n    if (!scope || !scope.selector) return false;\n    try { return !!document.querySelector(scope.selector); } catch (e) { return false; }\n  }\n  function whenDom(fn) {\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', safe(fn));\n    else fn();\n  }\n  // Once-per-visitor markers. localStorage failing (private mode, blocked)\n  // degrades to once-per-page-load \u2014 never to \"never\".\n  function once(key) {\n    try {\n      var k = 'hi_ab_' + key;\n      if (w.localStorage.getItem(k)) return false;\n      w.localStorage.setItem(k, '1');\n      return true;\n    } catch (e) { return true; }\n  }\n  function recordBucket(exp, v) {\n    if (!once('b_' + exp.flag + '_' + v)) return;\n    w.posthog.capture('hi_bucketed', { hi_flag: exp.flag, hi_variant: v });\n  }\n  function recordExposure(exp, v, how) {\n    if (!once('x_' + exp.flag + '_' + v)) return;\n    // Same event + properties posthog-js would send itself, so the HogQL\n    // reader (posthog-experiments.ts) is unchanged; hi_exposure_scope says why\n    // this page counted.\n    w.posthog.capture('$feature_flag_called', {\n      $feature_flag: exp.flag,\n      $feature_flag_response: v,\n      hi_exposure_scope: how,\n    });\n  }\n\n  // --- visible trigger (mirrors exposureTrigger in lib/growth/exposure-scope.ts) ---\n  // A selector on the variant's own markup (hi-exp) never shows in control:\n  // the gate wrapper is display:none there and display:contents (no box) in\n  // the variant. Such a scope falls back to DOM presence, as the TS does.\n  function visibleTrigger(scope) {\n    return !!(scope && scope.trigger === 'visible' && scope.selector && !/data-hi-exp|\\bhi-exp-/i.test(scope.selector));\n  }\n  // Already exposed on an earlier page: no watcher at all for this visit.\n  function exposedAlready(exp, v) {\n    try { return !!w.localStorage.getItem('hi_ab_x_' + exp.flag + '_' + v); } catch (e) { return false; }\n  }\n  // Parent element, crossing a shadow root to its host.\n  function up(el) {\n    if (el.parentElement) return el.parentElement;\n    var root = el.getRootNode ? el.getRootNode() : null;\n    return root && root !== document && root.host ? root.host : null;\n  }\n  // `r` is el's non-zero box. Visible = the box meets the viewport and\n  // nothing hides it: visibility on the element (it inherits), display:none\n  // or near-zero opacity on the element or any ancestor.\n  function boxShown(el, r) {\n    var vw = w.innerWidth || document.documentElement.clientWidth;\n    var vh = w.innerHeight || document.documentElement.clientHeight;\n    if (r.bottom <= 0 || r.right <= 0 || r.top >= vh || r.left >= vw) return false;\n    if (el.checkVisibility && !el.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true, opacityProperty: true, visibilityProperty: true })) return false;\n    var cs = w.getComputedStyle(el);\n    if (cs.visibility === 'hidden' || cs.visibility === 'collapse') return false;\n    for (var a = el; a; a = up(a)) {\n      var s = a === el ? cs : w.getComputedStyle(a);\n      if (s.display === 'none' || parseFloat(s.opacity) < 0.1) return false;\n    }\n    return true;\n  }\n  function watchVisible(exp, v) {\n    var sel = exp.scope.selector;\n    var tracked = []; // { el, inView } \u2014 inView comes from IntersectionObserver, which knows about clipping\n    var roots = [document];\n    var done = false, lead = 0, trail = 0, io = null, mo = null;\n    var WAKE = ['transitionend', 'animationend', 'click', 'keyup'];\n    var MO_OPTS = { childList: true, subtree: true, attributes: true, attributeFilter: ['class', 'style', 'open', 'hidden', 'aria-hidden', 'aria-expanded'] };\n    function find(el) {\n      for (var i = 0; i < tracked.length; i++) if (tracked[i].el === el) return tracked[i];\n      return null;\n    }\n    function shown(t) {\n      var r = t.el.getBoundingClientRect();\n      if (r.width > 0 && r.height > 0) return t.inView && boxShown(t.el, r);\n      // No box of its own: a display:contents wrapper, or a drawer host that\n      // draws its panel in its shadow root (Prestige's <cart-drawer>, see\n      // lib/lead-cro/cart-capture.ts). Then what shows is inside it.\n      var kids = (t.el.shadowRoot || t.el).querySelectorAll('*');\n      for (var k = 0; k < kids.length && k < 200; k++) {\n        var kr = kids[k].getBoundingClientRect();\n        if (kr.width > 0 && kr.height > 0 && boxShown(kids[k], kr)) return true;\n      }\n      return false;\n    }\n    function stop() {\n      done = true;\n      clearTimeout(lead); clearTimeout(trail);\n      try { if (io) io.disconnect(); } catch (e) { /* ignore */ }\n      try { if (mo) mo.disconnect(); } catch (e) { /* ignore */ }\n      for (var i = 0; i < roots.length; i++) for (var j = 0; j < WAKE.length; j++) roots[i].removeEventListener(WAKE[j], wake, true);\n      w.removeEventListener('scroll', wake, true);\n      w.removeEventListener('resize', wake);\n    }\n    function listen(root) { for (var j = 0; j < WAKE.length; j++) root.addEventListener(WAKE[j], wake, true); }\n    function check() {\n      if (done) return;\n      var els;\n      try { els = document.querySelectorAll(sel); } catch (e) { stop(); return; } // invalid selector: no exposure, never an error\n      if (tracked.length > 50) { // a re-rendered drawer leaves detached nodes behind\n        var live = [];\n        for (var d = 0; d < tracked.length; d++) {\n          if (tracked[d].el.isConnected) live.push(tracked[d]);\n          else if (io) io.unobserve(tracked[d].el);\n        }\n        tracked = live;\n      }\n      for (var i = 0; i < els.length && i < 50; i++) {\n        var t = find(els[i]);\n        if (!t) {\n          t = { el: els[i], inView: !io };\n          tracked.push(t);\n          if (io) io.observe(t.el);\n          // Events and mutations inside a shadow root never reach the document.\n          var sr = t.el.shadowRoot;\n          if (sr) { roots.push(sr); listen(sr); if (mo) mo.observe(sr, MO_OPTS); }\n        }\n        if (shown(t)) { stop(); recordExposure(exp, v, 'visible'); return; }\n      }\n    }\n    // Something may have opened: check soon, and again once transitions and\n    // scripted animations settle.\n    var wake = safe(function () {\n      if (done) return;\n      if (!lead) lead = setTimeout(safe(function () { lead = 0; check(); }), 100);\n      clearTimeout(trail);\n      trail = setTimeout(safe(check), 700);\n    });\n    if (w.IntersectionObserver) {\n      // Thresholds above 0: a closed drawer panel parked exactly at the\n      // viewport edge (translateX(100%)) already counts as \"intersecting\" at\n      // ratio 0, so a threshold of 0 alone never reports the slide-in\n      // (found on the Origin theme's cart drawer).\n      io = new w.IntersectionObserver(safe(function (entries) {\n        for (var k = 0; k < entries.length; k++) {\n          var t = find(entries[k].target);\n          if (t) t.inView = !!entries[k].isIntersecting && entries[k].intersectionRatio > 0;\n        }\n        check();\n      }), { threshold: [0, 0.01, 0.25, 0.5, 0.75, 1] });\n    } else {\n      // No IntersectionObserver: the same geometry check, woken by scrolling.\n      w.addEventListener('scroll', wake, true);\n      w.addEventListener('resize', wake);\n    }\n    if (w.MutationObserver) {\n      mo = new w.MutationObserver(wake);\n      mo.observe(document.documentElement, MO_OPTS);\n    }\n    listen(document);\n    check();\n  }\n\n  // --- variant application + bucketing + SCOPED exposure ---\n  // send_event:false: reading the flag no longer fires $feature_flag_called on\n  // every page. Exposure is recorded below, only where the change renders.\n  // `variants`, `origFetch` and `wrote` are declared BEFORE the callback is\n  // registered: posthog-js fires onFeatureFlags synchronously when flags are\n  // already loaded. A hoisted-but-unassigned `variants` or `origFetch` would\n  // throw inside safe(), and a later `wrote = false` would undo the guard \u2014\n  // silently losing the bucket, the exposure or the cart attribute.\n  // `origFetch` is the real fetch; the wrapper that replaces w.fetch comes\n  // later, in the add_to_cart block. `wrote` makes the cart write run once.\n  var variants = {};\n  var origFetch = w.fetch;\n  var wrote = false;\n  w.posthog.onFeatureFlags(safe(function () {\n    var exposeLater = [];\n    for (var i = 0; i < experiments.length; i++) {\n      var exp = experiments[i];\n      var v = w.posthog.getFeatureFlag(exp.flag, { send_event: false });\n      if (v && v !== 'control' && exp.variantClass) document.body.classList.add(exp.variantClass);\n      // stash variants for the order-attribution write\n      variants[exp.flag] = String(v || 'control');\n      if (v) { recordBucket(exp, String(v)); exposeLater.push({ exp: exp, v: String(v) }); }\n    }\n    writeCartAttributes();\n    // In scope when the path matches OR the change's element is on the page;\n    // an experiment without a scope (legacy config) counts every page, as\n    // before. The selector check needs the DOM; one deferred pass keeps the\n    // ordering identical for both. A visible trigger instead watches, on\n    // in-scope pages (empty paths = every page), until the surface shows.\n    whenDom(function () {\n      for (var j = 0; j < exposeLater.length; j++) {\n        var e = exposeLater[j];\n        var sc = e.exp.scope;\n        var unscoped = !sc || ((!sc.paths || !sc.paths.length) && !sc.selector);\n        if (visibleTrigger(sc)) {\n          if (pathInScope(sc) && !exposedAlready(e.exp, e.v)) safe(watchVisible)(e.exp, e.v);\n        }\n        else if (unscoped) recordExposure(e.exp, e.v, 'all');\n        else if (sc.paths && sc.paths.length && pathInScope(sc)) recordExposure(e.exp, e.v, 'path');\n        else if (selectorInScope(sc)) recordExposure(e.exp, e.v, 'selector');\n      }\n    });\n  }));\n\n  // --- add_to_cart via /cart/add.js interception (theme-agnostic) ---\n  // origFetch is declared above, before the onFeatureFlags registration.\n  w.fetch = function () {\n    var args = arguments;\n    try {\n      var url = typeof args[0] === 'string' ? args[0] : (args[0] && args[0].url) || '';\n      if (url.indexOf('/cart/add') !== -1) safe(function () { w.posthog.capture('hi_add_to_cart'); })();\n    } catch (e) { /* NEVER break the cart */ }\n    return origFetch.apply(this, args);\n  };\n\n  // --- initiate_checkout: checkout links/forms + express buttons (container-level, capture phase) ---\n  document.addEventListener('pointerdown', safe(function (ev) {\n    var el = ev.target;\n    for (var d = 0; el && d < 6; d++, el = el.parentElement) {\n      var name = (el.getAttribute && (el.getAttribute('name') || '')) || '';\n      var href = (el.getAttribute && (el.getAttribute('href') || '')) || '';\n      var cls = (typeof el.className === 'string' && el.className) || '';\n      if (name === 'checkout' || href.indexOf('/checkout') !== -1 || /shopify-payment-button|dynamic-checkout|shop-pay/i.test(cls)) {\n        w.posthog.capture('hi_initiate_checkout');\n        return;\n      }\n    }\n  }), true);\n\n  // --- rage_click: >=3 rapid clicks in a tight radius on the ~same spot (UX-friction secondary) ---\n  // Passive capture-phase listener, NOT autocapture (autocapture stays off). O(1) per click,\n  // fires once per burst then resets. posthog-js stamps the flag variant automatically, same as\n  // the other two events. clientX/clientY are used ONLY for the local radius test \u2014 never emitted (no PII).\n  var rc = { x: 0, y: 0, t: 0, n: 0 };\n  document.addEventListener('click', safe(function (ev) {\n    var now = Date.now();\n    var same = (now - rc.t) < 1000 &&\n      Math.abs(ev.clientX - rc.x) < 30 && Math.abs(ev.clientY - rc.y) < 30;\n    rc.n = same ? rc.n + 1 : 1;\n    rc.x = ev.clientX; rc.y = ev.clientY; rc.t = now;\n    if (rc.n >= 3) { w.posthog.capture('hi_rage_click'); rc.n = 0; } // one event per burst\n  }), true);\n\n  // --- product_click: a click through to ANOTHER product page (journey-hop secondary) ---\n  // Counted only on pages inside a configured experiment's scope, with the\n  // exposure's path/selector rule (an unscoped experiment counts every page),\n  // and the same way in both arms: control visitors who click a product\n  // further down the page count too. A visible-trigger scope counts from page\n  // load, not from the surface showing, so on a drawer test the reader (which\n  // counts from first exposure) drops clicks made before the drawer opened.\n  // hi_to is the target product handle \u2014 no PII.\n  function productHandle(path) {\n    var m = /^\\/(?:collections\\/[^\\/]+\\/)?products\\/([^\\/?#]+)/.exec(stripLocale(path || '/'));\n    return m ? decodeURIComponent(m[1]).toLowerCase() : '';\n  }\n  function inAnyScope() {\n    for (var i = 0; i < experiments.length; i++) {\n      var sc = experiments[i].scope;\n      if (!sc || ((!sc.paths || !sc.paths.length) && !sc.selector)) return true;\n      if (visibleTrigger(sc)) { if (pathInScope(sc)) return true; continue; }\n      if (sc.paths && sc.paths.length && pathInScope(sc)) return true;\n      if (selectorInScope(sc)) return true;\n    }\n    return false;\n  }\n  var here = productHandle(w.location.pathname);\n  document.addEventListener('click', safe(function (ev) {\n    // composedPath() reaches into shadow roots: a document listener sees a\n    // click inside a web component as a click on its host.\n    var chain = ev.composedPath ? ev.composedPath() : [];\n    if (!chain.length) for (var p = ev.target; p; p = p.parentElement) chain.push(p);\n    for (var d = 0; d < chain.length && d < 10; d++) {\n      var el = chain[d];\n      if (!el.tagName || el.tagName.toLowerCase() !== 'a' || !el.getAttribute('href')) continue;\n      var u = new URL(el.getAttribute('href'), w.location.href);\n      if (u.host !== w.location.host) return;\n      var to = productHandle(u.pathname);\n      if (!to || to === here || !inAnyScope()) return;\n      // The click usually navigates away: send at once, by beacon.\n      w.posthog.capture('hi_product_click', { hi_to: to }, { send_instantly: true, transport: 'sendBeacon' });\n      return;\n    }\n  }), true);\n\n  // --- order attribution: variants \u2192 cart attributes (directional; express skips this) ---\n  // `wrote` is declared above, before the onFeatureFlags registration.\n  function writeCartAttributes() {\n    if (wrote) return;\n    var keys = Object.keys(variants);\n    if (!keys.length) return;\n    wrote = true;\n    var attrs = {};\n    for (var i = 0; i < keys.length; i++) attrs['hi_ab_' + keys[i]] = variants[keys[i]];\n    safe(function () {\n      origFetch('/cart/update.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ attributes: attrs }),\n      });\n    })();\n  }\n  } // end boot()\n\n  var listening = false;\n  function listenForConsent() {\n    if (listening) return;\n    listening = true;\n    document.addEventListener('visitorConsentCollected', function (ev) {\n      try {\n        var d = (ev && ev.detail) || {};\n        if (d.analyticsAllowed === true || analyticsAllowed()) boot();\n      } catch (e) { /* stay dark */ }\n    });\n  }\n  function decide() {\n    if (analyticsAllowed()) boot();\n    else listenForConsent();\n  }\n  // boot()'s safe() is scoped inside boot(); the gate needs its own.\n  function safeTop(fn) { return function () { try { return fn.apply(this, arguments); } catch (e) { /* stay dark */ } }; }\n\n  if (consentApi()) {\n    decide();\n  } else if (w.Shopify) {\n    // A Shopify storefront. The consent API is loaded asynchronously by Shopify\n    // / the store's CMP and usually lands AFTER this async script runs \u2014 and so\n    // does `Shopify.loadFeatures` itself: theme.liquid's inline script sets\n    // window.Shopify (shop, locale, currency) before Shopify's feature bundle\n    // attaches loadFeatures. Never treat either gap as consent: stay dark, ask\n    // for the API as soon as we can ask, and decide when it arrives. If the API\n    // never arrives, stay dark: no data, never data without consent.\n    listenForConsent();\n    var tries = 0;\n    var waitForApi = safeTop(function () {\n      if (consentApi()) { decide(); return; }\n      if (typeof w.Shopify.loadFeatures === 'function') {\n        w.Shopify.loadFeatures([{ name: 'consent-tracking-api', version: '0.1' }], safeTop(function () {\n          if (consentApi()) decide();\n        }));\n        return;\n      }\n      if (++tries <= 50) setTimeout(waitForApi, 100); // ~5 s, then stay dark\n    });\n    waitForApi();\n  } else {\n    // Not a Shopify surface at all \u2014 no consent framework to wait for.\n    boot();\n  }\n})();\n"],
  "mappings": "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",
  "names": ["t", "o", "e"]
}
