{
  "version": 3,
  "sources": ["/cdn/shop/t/110/assets/hytz-v2-init.js?hytz_flip_restore=070926v180"],
  "sourcesContent": ["/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   HYTZ \u2014 Homepage JS\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 */\n\n// Scroll restoration: let browser preserve position on refresh (Sol pref 2026-04-23)\n// (previously forced scrollRestoration='manual' + scrollTo(0,0) \u2014 removed)\n\n/* Shared overlay scroll lock \u2014 freezes the page behind modals, mini cart, hamburger, and lightboxes. */\n(function () {\n  if (window.hyLockBodyScroll && window.hyUnlockBodyScroll) return;\n\n  var tokens = {};\n  var locked = false;\n  var scrollY = 0;\n  var saved = null;\n\n  function hasLocks() {\n    for (var key in tokens) {\n      if (Object.prototype.hasOwnProperty.call(tokens, key)) return true;\n    }\n    return false;\n  }\n\n  function lock(token) {\n    token = token || 'global';\n    tokens[token] = true;\n    if (locked) return;\n\n    var docEl = document.documentElement;\n    var body = document.body;\n    if (!docEl || !body) return;\n\n    locked = true;\n    // Freeze with overflow:hidden ONLY \u2014 no position:fixed body reposition.\n    // position:fixed collapses the body's width (the \"mini-cart/menu changes\n    // size + page shifts\" bug) and forces a scrollTo() on unlock (the modal\n    // \"scrolls up then back down\" jump). overflow:hidden preserves the scroll\n    // position natively; we only pad for the vanished scrollbar so content\n    // doesn't shift horizontally. Restores the behaviour the product modal\n    // originally shipped with. (Fix 2026-06-06)\n    saved = {\n      htmlOverflow: docEl.style.overflow,\n      htmlPaddingRight: docEl.style.paddingRight,\n      bodyOverflow: body.style.overflow,\n      bodyTouchAction: body.style.touchAction\n    };\n\n    var scrollbarW = window.innerWidth - docEl.clientWidth;\n    docEl.classList.add('hy-scroll-locked');\n    docEl.style.overflow = 'hidden';\n    if (scrollbarW > 0) {\n      docEl.style.paddingRight = scrollbarW + 'px';\n      // Sol 062226 \u2014 the html padding-right above only compensates IN-FLOW body content. The\n      // fixed, centered nav is positioned vs the layout viewport, which WIDENS by scrollbarW when\n      // the scrollbar is removed \u2192 the nav (and the cart/menu anchored to it) jumps right by\n      // scrollbarW/2. Shift the nav back by half so opening the cart/menu doesn't nudge it.\n      var navEl = document.getElementById('hytz-nav');\n      if (navEl) { saved.navTransform = navEl.style.transform; navEl.style.transform = 'translateX(-' + (scrollbarW / 2) + 'px)'; }\n    }\n\n    body.style.overflow = 'hidden';\n    body.style.touchAction = 'none';\n  }\n\n  function unlock(token) {\n    token = token || 'global';\n    delete tokens[token];\n    if (!locked || hasLocks()) return;\n\n    var docEl = document.documentElement;\n    var body = document.body;\n    var prev = saved || {};\n\n    docEl.classList.remove('hy-scroll-locked');\n    docEl.style.overflow = prev.htmlOverflow || '';\n    docEl.style.paddingRight = prev.htmlPaddingRight || '';\n    body.style.overflow = prev.bodyOverflow || '';\n    body.style.touchAction = prev.bodyTouchAction || '';\n    var navEl = document.getElementById('hytz-nav');   // Sol 062226 \u2014 undo the nav shift compensation\n    if (navEl) navEl.style.transform = prev.navTransform || '';\n\n    locked = false;\n    saved = null;\n  }\n\n  window.hyLockBodyScroll = lock;\n  window.hyUnlockBodyScroll = unlock;\n  window.hyIsBodyScrollLocked = function () { return locked; };\n})();\n\n\n// Product data \u2014 still consumed by snippets/hytz-meta-pixel.liquid (AddToCart payload fallback)\n// via the global lexical binding. Keep even though the legacy #hytz-modal UI is gone.\nconst hytzProducts = {\n  'sauce-shield': { name:'Sauce Shield', substance:'Alcohol', for:'For Alcohol', color:'#95192d', caps:'3 capsules', timing:'Best taken before drinking. Also effective after. Take all 3 capsules with water.', desc:'Expertly formulated hangover reduction capsules with DHM, Milk Thistle, and 13 vitamins & extracts. Supports healthy liver function and metabolism of toxins so you can wake up feeling human.', img:'sauce-shield-bag-front.png', url:'/products/sauce-shield', variants:{single:'47877132714229',three:'47877134352629',dispenser:'47877134385397'}, suppFacts:{serving:'3 Capsules',container:'1',facts:[{name:'Thiamin (Vitamin B1)',amount:'2 mg',dv:'167%'},{name:'Riboflavin (Vitamin B2)',amount:'2000 mcg',dv:'154%'},{name:'Niacinamide',amount:'24 mg',dv:'150%'},{name:'Vitamin B6',amount:'15 mg',dv:'882%'},{name:'Folic Acid',amount:'200 mcg DFE',dv:'50%'},{name:'Vitamin B12',amount:'30 mcg',dv:'1250%'},{name:'Pantothenic Acid',amount:'6 mg',dv:'120%'},{name:'Zinc',amount:'3 mg',dv:'27%'},{name:'DHM (Dihydromyricetin)',amount:'450 mg',dv:'*'},{name:'Ginger Root Extract',amount:'450 mg',dv:'*'},{name:'Turmeric Extract',amount:'350 mg',dv:'*'},{name:'Ginseng Extract',amount:'150 mg',dv:'*'},{name:'Milk Thistle Extract',amount:'88 mg',dv:'*'},{name:'Prickly Pear Extract',amount:'75 mg',dv:'*'},{name:'Berberine HCl',amount:'20 mg',dv:'*'}]} },\n  'lung-hero': { name:'Lung Hero', substance:'Smoking', for:'For Smoking & Vaping', color:'#4cb968', caps:'4 capsules', timing:'Can be taken daily. Take 4 capsules with water to start your road to recovery.', desc:'An expertly formulated blend of vitamins and nutrients to support respiratory wellness. Vitamin D3 for healthy lung function, Elderberry for immune support, and Mullein extract to promote fresh lung mucus development.', img:'lung-hero-bag-front.png', url:'/products/lung-hero', variants:{single:'47877135302901',three:'47877135859957',dispenser:'47877135892725'}, suppFacts:{serving:'4 Capsules',container:'1',facts:[{name:'Vitamin D',amount:'5 mcg',dv:'25%'},{name:'Mullein Extract',amount:'800 mg',dv:'*'},{name:'Elderberry Extract',amount:'400 mg',dv:'*'},{name:'Marshmallow Extract',amount:'300 mg',dv:'*'},{name:'Astragalus Extract',amount:'200 mg',dv:'*'},{name:'Maritime Pine Bark Extract',amount:'160 mg',dv:'*'},{name:'Tangerine Peel Extract',amount:'100 mg',dv:'*'},{name:'N-Acetylcysteine (NAC)',amount:'96 mg',dv:'*'},{name:'Licorice Extract',amount:'40 mg',dv:'*'}]} },\n  'the-nod': { name:'The Nod', substance:'Opiates', for:'For Opiates & Kratom', color:'#764099', caps:'2 capsules', timing:'Take after use. 2 capsules with water to support gut health and promote alertness.', desc:'Recovery and replenish capsules with gut stimulants, L-Theanine, and targeted vitamins. Supports gut health while promoting energy and alertness when you need it most.', img:'the-nod-bag-front.png', url:'/products/the-nod', variants:{single:'47877135958261',three:'47877137367285',dispenser:'47877137400053'}, suppFacts:{serving:'2 Capsules',container:'1',facts:[{name:'Vitamin C',amount:'480 mg',dv:'533%'},{name:'Magnesium',amount:'37 mg',dv:'9%'},{name:'L-Theanine',amount:'105 mg',dv:'*'},{name:'Cascara Sagrada Extract',amount:'100 mg',dv:'*'},{name:'Aloe Vera',amount:'55 mg',dv:'*'},{name:'Green Tea Extract',amount:'40 mg',dv:'*'},{name:'Chicory Root',amount:'30 mg',dv:'*'},{name:'Senna Leaf',amount:'2 mg',dv:'*'}]} },\n  'ski-gear': { name:'Ski Gear', substance:'Cocaine', for:'For Stimulants', color:'#83d0d3', caps:'2 capsules', timing:'Start 24\u201348 hours after use \u2014 not during. 2 capsules with water to support recovery and replenishment.', desc:'After-stimulant recovery capsules with 5-HTP, neuro support, and targeted extracts. Promotes immune system function and supports healthy brain function for a smoother comedown.', img:'ski-gear-bag-front.png', url:'/products/ski-gear', variants:{single:'47877137465589',three:'47877138186485',dispenser:'47877138219253'}, suppFacts:{serving:'2 Capsules',container:'1',facts:[{name:'Vitamin C',amount:'310 mg',dv:'344%'},{name:'Vitamin E',amount:'80 mg',dv:'533%'},{name:'Magnesium',amount:'26 mg',dv:'6%'},{name:'Alpha Lipoic Acid (ALA)',amount:'172 mg',dv:'*'},{name:'Acetyl-L-Carnitine (ALCAR)',amount:'143 mg',dv:'*'},{name:'5-Hydroxytryptophan (5-HTP)',amount:'100 mg',dv:'*'},{name:'Bromelain',amount:'32 mg',dv:'*'},{name:'CoEnzyme Q10 (CoQ10)',amount:'29 mg',dv:'*'}]} },\n  'the-whip': { name:'The Whip', substance:'Nitrous', for:'For Nitrous', color:'#2b9dd8', caps:'2 capsules', timing:'Take after use plus a few days following. 2 capsules with water to replenish and protect.', desc:'Recovery capsules with high-dose Vitamin B12, neuro support, and 4 targeted vitamins & extracts. Maintains neural structures and replenishes essential vitamins that get depleted.', img:'the-whip-bag-front.png', url:'/products/the-whip', variants:{single:'47877138284789',three:'47877138972917',dispenser:'47877139005685'}, suppFacts:{serving:'2 Capsules',container:'1',facts:[{name:'Vitamin A',amount:'750 mcg RAE',dv:'83%'},{name:'Vitamin C',amount:'390 mg',dv:'433%'},{name:'Vitamin D',amount:'5 mcg',dv:'25%'},{name:'Vitamin E',amount:'80 mg',dv:'533%'},{name:'Vitamin B12',amount:'1600 mcg',dv:'66667%'},{name:'Magnesium',amount:'46 mg',dv:'11%'},{name:'Alpha Lipoic Acid (ALA)',amount:'100 mg',dv:'*'},{name:'Acetyl-L-Carnitine (ALCAR)',amount:'100 mg',dv:'*'},{name:'CoEnzyme Q10 (CoQ10)',amount:'25 mg',dv:'*'}]} },\n  'roll-patrol': { name:'Roll Patrol', substance:'MDMA', for:'For MDMA', color:'#eb088c', caps:'2 capsules', timing:'Start 48 hours after use \u2014 not during. 2 capsules with water to support mood balance and recovery.', desc:'After-party recovery capsules with 5-HTP, Magnesium, and 6 targeted vitamins & extracts. Supports healthy hormone balance, mood, focus, and jaw relaxation.', img:'roll-patrol-bag-front.png', url:'/products/roll-patrol', variants:{single:'47877139136757',three:'47877139726581',dispenser:'47877139759349'}, suppFacts:{serving:'2 Capsules',container:'1',facts:[{name:'Vitamin C',amount:'210 mg',dv:'233%'},{name:'Vitamin E',amount:'50 mg',dv:'333%'},{name:'Magnesium',amount:'43 mg',dv:'10%'},{name:'Alpha Lipoic Acid (ALA)',amount:'172 mg',dv:'*'},{name:'Acetyl-L-Carnitine (ALCAR)',amount:'143 mg',dv:'*'},{name:'5-Hydroxytryptophan (5-HTP)',amount:'100 mg',dv:'*'},{name:'CoEnzyme Q10 (CoQ10)',amount:'30 mg',dv:'*'},{name:'Green Tea Extract (EGCG)',amount:'30 mg',dv:'*'}]} }\n};\n\n// Nav scroll\nconst hytzNav = document.getElementById('hytz-nav');\nif (hytzNav) {\n  window.addEventListener('scroll', function() {\n    hytzNav.classList.toggle('scrolled', window.scrollY > 20);\n    if (hytzCartDrawer && hytzCartDrawer.classList.contains('active')) hytzPositionCart();\n  }, { passive: true });\n}\n\n// Nav search toggle + live search \u2014 REMOVED. v2 nav has no search button.\n// /search?q= is still accessible directly via URL; predictive search lives elsewhere.\n\n// \u2500\u2500 Cart Drawer \u2500\u2500\nvar hytzCartDrawer = document.getElementById('hytz-cart-drawer');\nvar hytzCartOverlay = document.getElementById('hytz-cart-overlay');\n\nfunction hytzPositionCart() {\n  if (!hytzCartDrawer || !hytzNav) return;\n  // Sol 062226 \u2014 anchor the drawer to the nav PILL (.hytz-nav-inner), NOT the full-width\n  // .hytz-nav container (which spans left:0/right:0 \u2192 drawer went full-bleed). Reading the live\n  // inner rect makes the drawer match the pill's width in EITHER state (transparent or sticky).\n  var inner = hytzNav.querySelector('.hytz-nav-inner') || hytzNav;\n  var rect = inner.getBoundingClientRect();\n  hytzCartDrawer.style.top = rect.bottom + 'px';\n  hytzCartDrawer.style.left = rect.left + 'px';\n  hytzCartDrawer.style.width = rect.width + 'px';\n  hytzCartDrawer.style.right = 'auto';\n  // FABLE IMP-103 \u2014 100dvh where supported: iOS Safari's 100vh includes the collapsed toolbar,\n  // which pushed the drawer's Checkout button below the visible fold on full carts.\n  var hyVhUnit = (window.CSS && CSS.supports && CSS.supports('height', '100dvh')) ? '100dvh' : '100vh';\n  hytzCartDrawer.style.maxHeight = 'calc(' + hyVhUnit + ' - ' + (rect.bottom + 12) + 'px)';\n}\n\n/* FABLE-A11Y (a11y #1): cart drawer = modal dialog. Focus moves in on open, Tab is trapped while\n   open, and focus restores to the opener on close. The drawer body/footer re-render on every\n   hytzRefreshCart(), so focusables are recomputed at Tab-time (never cached). This only manages\n   focus \u2014 the `active` class toggle + hytzPositionCart geometry contract are untouched. */\nvar hytzCartOpener = null;\nfunction hytzCartFocusables() {\n  if (!hytzCartDrawer) return [];\n  var sel = 'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), summary, [tabindex]:not([tabindex=\"-1\"])';\n  return Array.prototype.filter.call(hytzCartDrawer.querySelectorAll(sel), function (el) {\n    return (el.offsetWidth > 0 || el.offsetHeight > 0 || el === document.activeElement);\n  });\n}\nfunction hytzCartTrapKeydown(e) {\n  if (e.key !== 'Tab') return;\n  if (!hytzCartDrawer || !hytzCartDrawer.classList.contains('active')) return;\n  var f = hytzCartFocusables();\n  if (!f.length) { e.preventDefault(); return; }\n  var first = f[0], last = f[f.length - 1], active = document.activeElement;\n  if (e.shiftKey) {\n    if (active === first || !hytzCartDrawer.contains(active)) { e.preventDefault(); last.focus(); }\n  } else {\n    if (active === last || !hytzCartDrawer.contains(active)) { e.preventDefault(); first.focus(); }\n  }\n}\n\nfunction hytzOpenCart() {\n  if (!hytzCartDrawer) return;\n  hytzCartOpener = document.activeElement;   /* FABLE-A11Y: remember opener before any mutex steals focus */\n  if (window.hyLockBodyScroll) window.hyLockBodyScroll('cart');\n  if (typeof window.hytzMobileMenuIsOpen === 'function' && window.hytzMobileMenuIsOpen() && typeof window.hytzCloseMobileMenu === 'function') {\n    window.hytzCloseMobileMenu();\n  }\n  if (hytzNav.classList.contains('search-open') && typeof hytzCloseSearch === 'function') hytzCloseSearch();\n  hytzNav.classList.add('cart-open');\n  hytzPositionCart();\n  hytzCartDrawer.classList.add('active');\n  hytzCartOverlay.classList.add('active');\n  /* FABLE-A11Y: trap Tab + move focus into the dialog (close button) once it's shown. */\n  document.addEventListener('keydown', hytzCartTrapKeydown, true);\n  var hytzCartCloseBtn = document.getElementById('hytz-cart-drawer-close');\n  if (hytzCartCloseBtn) requestAnimationFrame(function () { hytzCartCloseBtn.focus(); });\n}\n\nfunction hytzCloseCart() {\n  if (!hytzCartDrawer) return;\n  hytzCartDrawer.classList.remove('active');\n  if (hytzCartOverlay) hytzCartOverlay.classList.remove('active');\n  hytzNav.classList.remove('cart-open');\n  if (window.hyUnlockBodyScroll) window.hyUnlockBodyScroll('cart');\n  /* FABLE-A11Y: tear down the Tab trap + restore focus to whatever opened the drawer. */\n  document.removeEventListener('keydown', hytzCartTrapKeydown, true);\n  if (hytzCartOpener && typeof hytzCartOpener.focus === 'function') hytzCartOpener.focus();\n  hytzCartOpener = null;\n}\n\nwindow.hytzOpenCart = hytzOpenCart;\nwindow.hytzCloseCart = hytzCloseCart;\n\n// Close cart drawer\nif (document.getElementById('hytz-cart-drawer-close')) {\n  document.getElementById('hytz-cart-drawer-close').addEventListener('click', hytzCloseCart);\n}\n\n// \"Clear all\" button REMOVED per Sol A11 (070626) \u2014 markup + styles deleted from\n// snippets/hytz-v2-cart-drawer.liquid; /cart/clear.js had no other caller.\nif (hytzCartOverlay) {\n  hytzCartOverlay.addEventListener('click', hytzCloseCart);\n}\ndocument.addEventListener('keydown', function(e) {\n  if (e.key === 'Escape' && hytzCartDrawer && hytzCartDrawer.classList.contains('active')) hytzCloseCart();\n});\n\n// Cart icon toggles drawer\ndocument.querySelectorAll('.hytz-nav-icon[href=\"/cart\"]').forEach(function(el) {\n  el.addEventListener('click', function(e) {\n    e.preventDefault();\n    if (hytzCartDrawer && hytzCartDrawer.classList.contains('active')) {\n      hytzCloseCart();\n    } else {\n      hytzOpenCart();\n    }\n  });\n});\n\n// \u2500\u2500 Free-pack last-chance upsell (mini-cart drawer + cart page) \u2500\u2500\n// Sol A10 (070626): the upsell is the free-hytz SECOND CHANCE only. It renders when the\n// claimed FREE single (FREEHYTZ-discounted / fully-discounted line) is in the cart with no\n// bigger pack of that SKU yet. A normally-PURCHASED single never triggers it. Renders in\n// BOTH the server Liquid drawer and this JS rebuild so it survives a /cart.js refresh.\nfunction hytzFindSampledSku(cart) {\n  if (!cart || !cart.items) return null;\n  var qtyByVariant = {};\n  var freeByVariant = {};\n  cart.items.forEach(function (it) {\n    var k = String(it.variant_id || it.id);\n    qtyByVariant[k] = (qtyByVariant[k] || 0) + it.quantity;\n    // The free-hytz claim adds the plain single then primes the FREEHYTZ code \u2014 the line-level\n    // allocation (title FREEHYTZ, line discounted to $0) is the claim's only cart-contents marker.\n    var allocs = it.line_level_discount_allocations || it.discount_allocations || [];\n    var isOffer = false;\n    for (var i2 = 0; i2 < allocs.length; i2++) {\n      var d = allocs[i2] && allocs[i2].discount_application;\n      if (d && /FREEHYTZ/i.test(d.title || '')) { isOffer = true; break; }\n    }\n    if (isOffer || (it.total_discount || 0) >= it.price) freeByVariant[k] = true;\n  });\n  for (var h in hytzProducts) {\n    if (!Object.prototype.hasOwnProperty.call(hytzProducts, h)) continue;\n    var p = hytzProducts[h];\n    var v = (p && p.variants) || {};\n    if (!v.single || !qtyByVariant[String(v.single)]) continue;       // no single of this SKU in cart\n    if (!freeByVariant[String(v.single)]) continue;                   // Sol A10 \u2014 single is PAID, not the free claim: no upsell\n    if (v.three && qtyByVariant[String(v.three)]) continue;           // already grabbed a 3/6-pack\n    if (v.dispenser && qtyByVariant[String(v.dispenser)]) continue;   // already grabbed the 25-pack\n    return { handle: h, name: p.name, color: p.color, three: v.three, dispenser: v.dispenser };\n  }\n  return null;\n}\n\nfunction hytzUpsellHtml(s) {\n  if (!s) return '';\n  var html = '<div class=\"hy-cart-upsell\" style=\"--c:' + s.color + '\">' +\n    '<div class=\"hy-cart-upsell-head\">Make your free ' + s.name + ' count</div>';\n  if (s.dispenser) {\n    html += '<button type=\"button\" class=\"hy-cart-upsell-offer hy-cart-upsell-offer--hero\" data-hy-upsell-add=\"' + s.handle + '\" data-kind=\"twentyfive\">' +\n      '<span class=\"hy-cart-upsell-offer-main\"><span class=\"hy-cart-upsell-offer-name\">25-pack &middot; 30% off</span></span>' +\n      '<span class=\"hy-cart-upsell-offer-price\"><s>$74.99</s> $52.49</span></button>';\n  }\n  if (s.three) {\n    html += '<button type=\"button\" class=\"hy-cart-upsell-offer\" data-hy-upsell-add=\"' + s.handle + '\" data-kind=\"six\">' +\n      '<span class=\"hy-cart-upsell-offer-main\"><span class=\"hy-cart-upsell-offer-name\">6-pack &middot; 30% off</span></span>' +\n      '<span class=\"hy-cart-upsell-offer-price\"><s>$19.98</s> $13.99</span></button>';\n  }\n  html += '</div>';\n  return html;\n}\n\n// Add an upsell pack + prime its stacking discount (mirrors the free-hytz funnel's primeDiscount path).\nwindow.hytzAddUpsell = function (handle, kind) {\n  var p = hytzProducts[handle];\n  if (!p || !p.variants) return Promise.resolve(false);\n  var id = kind === 'six' ? p.variants.three : p.variants.dispenser;\n  var qty = kind === 'six' ? 2 : 1;\n  var code = kind === 'six' ? 'HYTZ30-6' : 'HYTZ30-25';\n  if (!id) return Promise.resolve(false);\n  return fetch('/cart/add.js', {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify({ items: [{ id: Number(id), quantity: qty }] })\n  }).then(function (r) {\n    if (!r.ok) throw new Error('upsell add failed');\n    return r.json();\n  }).then(function () {\n    return hytzApplyDiscount('FREEHYTZ,' + code);   // applies discount + refreshes the drawer\n  }).catch(function () { return false; });\n};\n\nfunction hytzBindUpsell() {\n  document.querySelectorAll('[data-hy-upsell-add]').forEach(function (btn) {\n    if (btn.dataset.hyBound) return;\n    btn.dataset.hyBound = '1';\n    btn.addEventListener('click', function () {\n      var handle = btn.getAttribute('data-hy-upsell-add');\n      var kind = btn.getAttribute('data-kind');\n      var reload = btn.hasAttribute('data-hy-upsell-reload');\n      btn.disabled = true;\n      window.hytzAddUpsell(handle, kind).then(function () {\n        if (reload) window.location.reload();\n      });\n    });\n  });\n}\n\n// Sol B23-3 (063026) \u2014 build the empty-cart accordion from the data island (window.hytzCartLineup,\n// emitted in hytz-v2-cart-drawer.liquid). SINGLE renderer shared by the JS rebuild path below, so the\n// re-render matches the Liquid first-paint markup exactly (no dual-renderer drift). Tap a row \u2192 pack\n// picker; pick a pack \u2192 /cart/add.js \u2192 hytzRefreshCart() flips the drawer to its filled state.\nfunction hytzBuildEmptyCart() {\n  // Sol 29-MINI-1 (070626) \u2014 simplified empty cart (heading + button, no 6-SKU lineup). Mirrors the\n  // first-paint markup in snippets/hytz-v2-cart-drawer.liquid exactly so re-render never drifts.\n  return '<div class=\"hytz-cart-empty hytz-cart-empty--simple\">' +\n      '<p class=\"hytz-cart-empty-kicker\">Your cart\\'s empty</p>' +\n      '<p class=\"hytz-cart-empty-subkicker\">Find the formula for your habit.</p>' +\n      '<a href=\"/collections/the-lineup\" class=\"hy-btn hy-btn-primary hytz-cart-empty-cta\">Shop the lineup</a>' +\n    '</div>';\n}\n\n// FABLE IMP-105 \u2014 transient inline failure notice (reuses the meter's message row; the next\n// successful refresh rewrites it). Keeps a dropped connection from reading as \"nothing happened\".\nfunction hytzCartInlineError() {\n  var meter = document.getElementById('hytz-cart-drawer-meter');\n  var msg = meter && meter.querySelector('.hytz-cart-meter-msg');\n  if (msg) msg.textContent = 'Connection hiccup \u2014 try that again.';\n}\n\n// Re-render cart drawer body via fetch.\n// FABLE IMP-105: returns the promise + carries a .catch so callers can re-enable controls.\nfunction hytzRefreshCart() {\n  return fetch('/cart.js')\n    .then(function(r) { return r.json(); })\n    .then(function(cart) {\n      // Update all cart counts\n      document.querySelectorAll('.hytz-cart-count').forEach(function(el) { el.textContent = cart.item_count; });\n      document.querySelectorAll('.hytz-cart-drawer-count').forEach(function(el) { el.textContent = '(' + cart.item_count + ')'; });\n\n      var body = document.getElementById('hytz-cart-drawer-body');\n      var footer = document.getElementById('hytz-cart-drawer-footer');\n      var meter = document.getElementById('hytz-cart-drawer-meter');\n\n      // FABLE-SHIP two-tier shipping meter \u2014 mirrors the Liquid meter (T1 = free standard $25, T2 = free priority $50)\n      if (meter) {\n        var t1Cents = 2500;\n        var t2Cents = 5000;\n        var cartCents = cart.total_price;\n        var stdUnlocked = cartCents >= t1Cents;\n        var priUnlocked = cartCents >= t2Cents;\n        var activeThreshold = stdUnlocked ? t2Cents : t1Cents;\n        var remaining = Math.max(0, activeThreshold - cartCents);\n        var pct = activeThreshold > 0 ? Math.min(100, Math.floor(cartCents * 100 / activeThreshold)) : 0;\n        meter.classList.toggle('is-unlocked', priUnlocked);\n        var msg;\n        if (priUnlocked) {\n          msg = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"/></svg>Free priority shipping unlocked';\n        } else if (stdUnlocked) {\n          msg = 'Free standard unlocked \u2014 <strong>$' + (remaining / 100).toFixed(2) + '</strong> to free priority';\n        } else if (cartCents === 0) {\n          msg = 'Free standard $' + (t1Cents / 100).toFixed(0) + '+ &middot; priority $' + (t2Cents / 100).toFixed(0) + '+';\n        } else {\n          msg = '<strong>$' + (remaining / 100).toFixed(2) + '</strong> away from free standard shipping';\n        }\n        meter.innerHTML =\n          '<div class=\"hytz-cart-meter-msg\">' + msg + '</div>' +\n          '<div class=\"hytz-cart-meter-bar-row\">' +\n            '<div class=\"hytz-cart-meter-track\" role=\"progressbar\" aria-label=\"Free shipping progress\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"' + pct + '\">' +\n              '<div class=\"hytz-cart-meter-fill\" style=\"width: ' + pct + '%;\"></div>' +\n            '</div>' +\n            '<span class=\"hytz-cart-meter-threshold\">$' + (activeThreshold / 100).toFixed(0) + '</span>' +\n          '</div>';\n      }\n\n      if (cart.item_count === 0) {\n        // Sol B23-3 \u2014 empty cart renders the tap-to-expand pack picker from the data island\n        // (shared hytzBuildEmptyCart() so the rebuild matches the Liquid first-paint). Toggle + add\n        // are handled by delegation on the drawer (bound once), so no re-bind needed here.\n        body.innerHTML = hytzBuildEmptyCart();\n        footer.innerHTML = '';\n        return;\n      }\n\n      var html = '';\n      cart.items.forEach(function(item, i) {\n        var imgHtml = item.image ? '<img src=\"' + item.image.replace(/(\\.[^.]+)$/, '_120x$1') + '\" alt=\"' + item.product_title + '\">' : '';\n        var unitPrice = '$' + (item.price / 100).toFixed(2);\n        // B1 (070626) \u2014 show the subscription plan name so a subscriber SEES their add is a subscription\n        var planName = (item.selling_plan_allocation && item.selling_plan_allocation.selling_plan) ? item.selling_plan_allocation.selling_plan.name : '';\n        html += '<div class=\"hytz-cart-item\" data-line=\"' + (i + 1) + '\">';\n        html += '<div class=\"hytz-cart-item-img\">' + imgHtml + '</div>';\n        var lineTotal = '$' + (item.final_line_price / 100).toFixed(2);\n        html += '<div class=\"hytz-cart-item-info\">';\n        html += '<div class=\"hytz-cart-item-name\">' + item.product_title + '</div>';\n        html += '<div class=\"hytz-cart-item-unit-price\">' + item.variant_title + ' &middot; ' + unitPrice + ' ea' + (planName ? ' &middot; ' + planName : '') + '</div>';\n        html += '<div class=\"hytz-cart-item-qty\">';\n        html += '<button class=\"hytz-cart-qty-btn\" data-action=\"minus\" data-line=\"' + (i + 1) + '\">\u2212</button>';\n        html += '<span class=\"hytz-cart-qty-val\">' + item.quantity + '</span>';\n        html += '<button class=\"hytz-cart-qty-btn\" data-action=\"plus\" data-line=\"' + (i + 1) + '\">+</button>';\n        html += '</div>';\n        html += '</div>';\n        html += '<span class=\"hytz-cart-item-line-total\">' + lineTotal + '</span>';\n        html += '<button class=\"hytz-cart-item-remove\" data-line=\"' + (i + 1) + '\" aria-label=\"Remove\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/></svg></button>';\n        html += '</div>';\n      });\n      body.innerHTML = html;\n\n      var totalStr = '$' + (cart.total_price / 100).toFixed(2);\n\n      // Cart-level discount rows (any auto-applied or promo-applied codes)\n      var discountRows = '';\n      if (cart.cart_level_discount_applications && cart.cart_level_discount_applications.length > 0) {\n        cart.cart_level_discount_applications.forEach(function(d) {\n          var amt = '\u2212$' + ((d.total_allocated_amount || 0) / 100).toFixed(2);\n          discountRows += '<div class=\"hytz-cart-discount-row\">' +\n            '<span class=\"hytz-cart-discount-label\"><span class=\"hytz-cart-discount-code\">' + (d.title || 'Discount') + '</span> applied</span>' +\n            '<span class=\"hytz-cart-discount-amt\">' + amt + '</span>' +\n          '</div>';\n        });\n      }\n      // Line-level savings (e.g. the \"Build Your Habitz\" volume discount \u2014 a Shopify\n      // product/line discount that never appears in cart_level_discount_applications).\n      // Sum per-line total_discount so bundle savings are VISIBLE in the drawer; pull the\n      // real discount title from the first allocation. Cart-level codes are excluded above\n      // so there's no double-count.\n      var lineDiscTotal = 0, lineDiscTitle = '';\n      (cart.items || []).forEach(function(it) {\n        lineDiscTotal += (it.total_discount || 0);\n        // /cart.js exposes the discount title under line_level_discount_allocations\n        // (discount_allocations is the Liquid-side name); check both for safety.\n        var allocs = it.line_level_discount_allocations || it.discount_allocations || [];\n        if (!lineDiscTitle && allocs[0] && allocs[0].discount_application) {\n          lineDiscTitle = allocs[0].discount_application.title || '';\n        }\n      });\n      if (lineDiscTotal > 0) {\n        discountRows += '<div class=\"hytz-cart-discount-row hytz-cart-discount-row--bundle\">' +\n          '<span class=\"hytz-cart-discount-label\"><span class=\"hytz-cart-discount-code\">' + (lineDiscTitle || 'Bundle savings') + '</span> applied</span>' +\n          '<span class=\"hytz-cart-discount-amt\">\u2212$' + (lineDiscTotal / 100).toFixed(2) + '</span>' +\n        '</div>';\n      }\n\n      footer.innerHTML =\n        hytzUpsellHtml(hytzFindSampledSku(cart)) +\n        '<details class=\"hytz-cart-promo\">' +\n          '<summary class=\"hytz-cart-promo-summary\">' +\n            '<span>Have a promo code?</span>' +\n            '<svg class=\"hytz-cart-promo-chev\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg>' +\n          '</summary>' +\n          '<div class=\"hytz-cart-promo-body\">' +\n            '<input type=\"text\" class=\"hytz-cart-promo-input\" id=\"hytz-drawer-promo-input\" placeholder=\"Enter code\" autocomplete=\"off\" spellcheck=\"false\">' +\n            '<button type=\"button\" class=\"hytz-cart-promo-apply\" data-hy-drawer-promo>Apply</button>' +\n          '</div>' +\n        '</details>' +\n        discountRows +\n        '<div class=\"hytz-cart-subtotal\"><span>Subtotal</span><span>' + totalStr + '</span></div>' +\n        '<a href=\"/checkout\" class=\"hytz-cart-checkout-btn hy-btn hy-btn-primary\">' +\n          'Checkout' +\n        '</a>' +\n        '<div class=\"hytz-cart-trust-row\">' +\n          '<span class=\"hytz-cart-trust-item\">' +\n            '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 22 12 18.77 5.82 22 7 14.14l-5-4.87 6.91-1.01L12 2z\"/></svg>' +\n            'Tested for contaminants' +\n          '</span>' +\n          '<span class=\"hytz-cart-trust-dot\" aria-hidden=\"true\">\u00B7</span>' +\n          '<span class=\"hytz-cart-trust-item\">' +\n            '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"8\" width=\"18\" height=\"4\" rx=\"1\"/><path d=\"M12 8v13\"/><path d=\"M19 12v7a2 2 0 01-2 2H7a2 2 0 01-2-2v-7\"/><path d=\"M7.5 8a2.5 2.5 0 010-5C10 3 12 8 12 8s2-5 4.5-5a2.5 2.5 0 010 5\"/></svg>' +\n            'Discreet packaging' +\n          '</span>' +\n          '<span class=\"hytz-cart-trust-dot\" aria-hidden=\"true\">\u00B7</span>' +\n          '<span class=\"hytz-cart-trust-item\">' +\n            '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 22s-8-4.5-8-11.5A5.5 5.5 0 0112 5a5.5 5.5 0 018 5.5c0 7-8 11.5-8 11.5z\"/></svg>' +\n            '30-day guarantee' +\n          '</span>' +\n        '</div>';\n\n      hytzBindCartActions();\n      hytzBindDrawerPromo();\n      hytzBindUpsell();\n    })\n    .catch(function () {\n      // FABLE IMP-105 \u2014 refresh failed (dropped connection): say so and unfreeze any row\n      // controls the qty/remove handlers disabled, instead of a silently stale drawer.\n      hytzCartInlineError();\n      document.querySelectorAll('.hytz-cart-qty-btn, .hytz-cart-item-remove').forEach(function (b) { b.disabled = false; });\n    });\n}\n\n// Apply promo code via cart.js (in-place, no page reload)\nfunction hytzApplyDiscount(code) {\n  if (!code) return Promise.resolve(false);\n  code = String(code).trim();\n  if (!code) return Promise.resolve(false);\n  return fetch('/cart/update.js', {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify({ discount: code })\n  }).then(function(r) {\n    if (!r.ok) return false;\n    if (typeof hytzRefreshCart === 'function') hytzRefreshCart();\n    return true;\n  }).catch(function() { return false; });\n}\n\nfunction hytzBindDrawerPromo() {\n  var btn = document.querySelector('[data-hy-drawer-promo]');\n  if (!btn || btn.dataset.hyBound) return;\n  btn.dataset.hyBound = '1';\n  function apply() {\n    var input = document.getElementById('hytz-drawer-promo-input');\n    if (!input) return;\n    var code = (input.value || '').trim();\n    if (!code) { input.focus(); return; }\n    btn.disabled = true;\n    var orig = btn.textContent;\n    btn.textContent = 'Applying\u2026';\n    hytzApplyDiscount(code).then(function(ok) {\n      btn.disabled = false;\n      btn.textContent = orig;\n      if (ok) { input.value = ''; }\n      else { input.focus(); }\n    });\n  }\n  btn.addEventListener('click', apply);\n  var input = document.getElementById('hytz-drawer-promo-input');\n  if (input) {\n    input.addEventListener('keydown', function(e) {\n      if (e.key === 'Enter') { e.preventDefault(); apply(); }\n    });\n  }\n}\n\n// On page load, auto-apply ?discount= from URL (silent)\n(function hytzAutoApplyUrlDiscount() {\n  try {\n    var params = new URLSearchParams(window.location.search);\n    var code = params.get('discount');\n    if (!code) return;\n    hytzApplyDiscount(code);\n  } catch (e) {}\n})();\n\n// Bind qty +/- and remove buttons.\n// FABLE IMP-106 \u2014 the row's controls freeze until change+refresh resolves (a fast double-tap on\n// \"+\" was posting the same ABSOLUTE quantity twice = net +1). On success the refresh re-renders\n// fresh enabled buttons; on failure the .catch (IMP-105) re-enables + shows the inline notice.\nfunction hytzBindCartActions() {\n  function hytzRowFreeze(btn) {\n    var row = btn.closest('.hytz-cart-item');\n    var btns = row ? row.querySelectorAll('.hytz-cart-qty-btn, .hytz-cart-item-remove') : [btn];\n    btns.forEach(function (b) { b.disabled = true; });\n    return btns;\n  }\n  document.querySelectorAll('.hytz-cart-qty-btn').forEach(function(btn) {\n    btn.addEventListener('click', function() {\n      if (btn.disabled) return;\n      var line = parseInt(btn.dataset.line);\n      var action = btn.dataset.action;\n      var qtyEl = btn.parentElement.querySelector('.hytz-cart-qty-val');\n      var qty = parseInt(qtyEl.textContent);\n      var newQty = action === 'plus' ? qty + 1 : qty - 1;\n      if (newQty < 0) newQty = 0;\n      var frozen = hytzRowFreeze(btn);\n      fetch('/cart/change.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ line: line, quantity: newQty })\n      }).then(function(r) {\n        if (!r.ok) throw new Error('cart change failed');\n        return hytzRefreshCart();\n      }).catch(function() {\n        frozen.forEach(function (b) { b.disabled = false; });\n        hytzCartInlineError();\n      });\n    });\n  });\n\n  document.querySelectorAll('.hytz-cart-item-remove').forEach(function(btn) {\n    btn.addEventListener('click', function() {\n      if (btn.disabled) return;\n      var line = parseInt(btn.dataset.line);\n      var frozen = hytzRowFreeze(btn);\n      fetch('/cart/change.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ line: line, quantity: 0 })\n      }).then(function(r) {\n        if (!r.ok) throw new Error('cart change failed');\n        return hytzRefreshCart();\n      }).catch(function() {\n        frozen.forEach(function (b) { b.disabled = false; });\n        hytzCartInlineError();\n      });\n    });\n  });\n}\n\n// Initial bind for server-rendered cart items\nhytzBindCartActions();\nhytzBindDrawerPromo();\nhytzBindUpsell();\n\n// Close cart when clicking any link inside it\nif (hytzCartDrawer) {\n  hytzCartDrawer.addEventListener('click', function(e) {\n    var link = e.target.closest('a[href]');\n    if (link && !link.closest('.hytz-cart-qty-btn') && !link.closest('.hytz-cart-item-remove')) {\n      hytzCloseCart();\n    }\n  });\n}\n\n// Sol B23-3 (063026) \u2014 empty-cart accordion + in-place pack add. Delegated on the persistent drawer so\n// it works for BOTH the Liquid first-paint AND every JS re-render (hytzBuildEmptyCart). Buttons (not links)\n// \u2192 they never trip the link-close handler above; the PDP link IS an <a> so it closes + navigates (intended).\nif (hytzCartDrawer) {\n  hytzCartDrawer.addEventListener('click', function (e) {\n    // 1) Pack add \u2192 /cart/add.js \u2192 refresh (drawer flips to the filled state, no page leave)\n    var addBtn = e.target.closest('[data-hy-empty-add]');\n    if (addBtn) {\n      var vid = addBtn.getAttribute('data-variant-id');\n      if (!vid || addBtn.disabled) return;\n      addBtn.disabled = true;\n      fetch('/cart/add.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ items: [{ id: Number(vid), quantity: 1 }] })\n      }).then(function (r) {\n        if (!r.ok) throw new Error('add failed');\n        return r.json();\n      }).then(function () {\n        hytzRefreshCart();\n      }).catch(function () { addBtn.disabled = false; });\n      return;\n    }\n    // 2) Row toggle \u2192 accordion (one panel open at a time)\n    var toggle = e.target.closest('[data-hy-empty-toggle]');\n    if (toggle) {\n      var item = toggle.closest('.hytz-cart-empty-item');\n      if (!item) return;\n      var willOpen = !item.classList.contains('is-expanded');\n      var openItem = hytzCartDrawer.querySelector('.hytz-cart-empty-item.is-expanded');\n      if (openItem && openItem !== item) {\n        openItem.classList.remove('is-expanded');\n        var ob = openItem.querySelector('[data-hy-empty-toggle]');\n        if (ob) ob.setAttribute('aria-expanded', 'false');\n      }\n      item.classList.toggle('is-expanded', willOpen);\n      toggle.setAttribute('aria-expanded', willOpen ? 'true' : 'false');\n    }\n  });\n}\n"],
  "mappings": "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",
  "names": ["input"]
}
