{
  "version": 3,
  "sources": ["/cdn/shop/t/82/assets/sh-atc-upsell-popup.js?shatc=25"],
  "sourcesContent": ["/**\n * SH add-to-cart upsell popup for the BBB-0004 A/B test.\n *\n * The control keeps the existing cart drawer and Slide Cart. This popup\n * opens only when the test variation is on. Upsell rows come from the\n * Section Heroes upsell block on the product. The line under each title\n * is the product subtitle metafield, loaded through the\n * sh-atc-product-meta section.\n *\n * Turn the variation on with window.SH_ATC_VARIATION = '1',\n * the class sh-atc-variation on html or body, or ?sh_atc=1.\n * That shows the popup after add to cart. It does not open by itself.\n * Open it immediately from the console with:\n *   window.SH_ATC_VARIATION = 'preview'\n * Or use ?sh_atc=1&sh_atc_preview=1.\n */\n(function () {\n  var root = document.getElementById('sh-atc-popup');\n  if (!root) return;\n\n  var addedList = root.querySelector('[data-sh-atc-added]');\n  var upsellWrap = root.querySelector('[data-sh-atc-upsell]');\n  var productsEl = root.querySelector('[data-sh-atc-products]');\n  var countEl = root.querySelector('[data-sh-atc-count]');\n  var closeBtn = root.querySelector('.sh-atc-popup__close');\n\n  var metaCache = {};\n  var cartVariants = {};\n  var sessionAdds = [];\n  var lastAdded = null;\n  var blocking = false;\n  var releasing = false;\n  var blockTimers = [];\n  var offersReady = null;\n  var drawerOpenWrapped = false;\n  var hideTimer = null;\n  var variationValue = window.SH_ATC_VARIATION;\n  var forcePreview = false;\n  var pendingButton = null;\n  var pendingTimers = [];\n\n  // Keeps the theme's spinner on the product page Add to Cart button until the\n  // popup is visible, so there is no dead time after the add request ends.\n  function clearPending() {\n    pendingTimers.forEach(window.clearTimeout);\n    pendingTimers = [];\n    if (pendingButton) pendingButton.classList.remove('sh-atc-pending');\n    pendingButton = null;\n  }\n\n  function setPending(button) {\n    clearPending();\n    pendingButton = button;\n    button.classList.add('sh-atc-pending');\n    // The theme adds is-loading right after the click. Without it the form\n    // did not submit (validation error), so drop the spinner again.\n    pendingTimers.push(window.setTimeout(function () {\n      if (pendingButton === button && !button.classList.contains('is-loading') && !button.classList.contains('is-success')) clearPending();\n    }, 400));\n    pendingTimers.push(window.setTimeout(clearPending, 10000));\n  }\n\n  var searchParams = new URLSearchParams(window.location.search);\n\n  function currentProductKey() {\n    var match = window.location.pathname.match(/\\/products\\/([^/?#]+)/);\n    return match ? decodeURIComponent(match[1]) : '';\n  }\n\n  function variationOn() {\n    var params = new URLSearchParams(window.location.search);\n    var value = params.get('sh_atc');\n    if (!value && variationValue != null && variationValue !== '') {\n      value = String(variationValue);\n    }\n    if (!value && document.documentElement.classList.contains('sh-atc-variation')) value = '1';\n    if (!value && document.body && document.body.classList.contains('sh-atc-variation')) value = '1';\n    value = (value || '').toLowerCase();\n    return value === '1' || value === '2' || value === 'b' || value === 'stack' || value === 'on' || value === 'preview';\n  }\n\n  function shouldIntercept() {\n    return variationOn() && !document.body.classList.contains('template-cart');\n  }\n\n  function formatMoney(cents) {\n    var format = root.getAttribute('data-money-format') || '\u20AC{{amount}}';\n    var placeholder = format.match(/\\{\\{\\s*(\\w+)\\s*\\}\\}/);\n    var key = placeholder ? placeholder[1] : 'amount';\n    var amount = (Number(cents) / 100).toFixed(2);\n    var formatted = amount;\n    if (key.indexOf('comma_separator') !== -1) {\n      var parts = amount.split('.');\n      var whole = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n      formatted = key.indexOf('no_decimals') !== -1 ? whole : whole + ',' + parts[1];\n    } else if (key.indexOf('apostrophe_separator') !== -1) {\n      formatted = amount.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \"'\");\n    } else if (key === 'amount_no_decimals') {\n      formatted = String(Math.round(Number(cents) / 100));\n    } else {\n      var bits = amount.split('.');\n      var grouped = bits[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n      formatted = key.indexOf('no_decimals') !== -1 ? grouped : grouped + '.' + bits[1];\n    }\n    return placeholder ? format.replace(placeholder[0], formatted) : formatted;\n  }\n\n  function numericId(id) {\n    if (id == null || id === '') return null;\n    var text = String(id);\n    if (text.indexOf('/') !== -1) text = text.split('/').pop();\n    var number = parseInt(text, 10);\n    return isNaN(number) ? null : number;\n  }\n\n  function imageSrc(image) {\n    if (!image) return '';\n    var src = typeof image === 'string' ? image : (image.src || image.url || '');\n    if (src.indexOf('//') === 0) src = 'https:' + src;\n    return src;\n  }\n\n  // Test goals go to the GTM dataLayer. GTM sends them on to GA4, where\n  // Varify reads them.\n  function trackGoal(name, params) {\n    try {\n      window.dataLayer = window.dataLayer || [];\n      window.dataLayer.push(Object.assign({\n        event: name,\n        product_handle: currentProductKey()\n      }, params || {}));\n    } catch (error) {}\n  }\n\n  // Upsell added: one goal for control and variation, so Varify can compare\n  // the upsell CR. upsell_source is popup (\"+\" in the popup), control (sh-upsell\n  // block, popup off) or variation (sh-upsell block, popup on).\n  function trackUpsellAdded(source, ids) {\n    trackGoal('sh_upsell_added', {\n      upsell_source: source,\n      upsell_variant_ids: ids.join(','),\n      upsell_count: ids.length\n    });\n  }\n\n  function setCount(count) {\n    if (countEl) countEl.textContent = String(count);\n  }\n\n  function variantLabel(title) {\n    if (!title || title === 'Default Title') return '';\n    return String(title);\n  }\n\n  function fetchMeta(handle) {\n    if (!handle) return Promise.resolve(null);\n    if (metaCache[handle]) return metaCache[handle];\n    function request() {\n      return fetch('/products/' + encodeURIComponent(handle) + '?sections=sh-atc-product-meta').then(function (response) {\n        if (!response.ok) throw new Error('meta');\n        return response.json();\n      }).then(function (payload) {\n        var html = payload && payload['sh-atc-product-meta'];\n        var match = html && String(html).match(/<script[^>]*data-sh-atc-meta[^>]*>([\\s\\S]*?)<\\/script>/);\n        if (!match) throw new Error('meta');\n        var data = JSON.parse(match[1].replace(/&amp;/g, '&'));\n        if (!data || !data.handle) throw new Error('meta');\n        return data;\n      });\n    }\n    metaCache[handle] = request().catch(function () {\n      return request();\n    }).catch(function () {\n      delete metaCache[handle];\n      return null;\n    });\n    return metaCache[handle];\n  }\n\n  function upsellHost() {\n    return document.querySelector('sh-upsell');\n  }\n\n  function upsellConfig() {\n    var host = upsellHost();\n    if (!host) return null;\n    var script = host.querySelector('script[data-upsell-config]');\n    if (!script) return null;\n    try {\n      return JSON.parse(script.textContent);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function pricedOffer(variant, offer) {\n    var price = Number(variant.price) || 0;\n    var compareAt = Number(variant.compare_at_price) || 0;\n    var discount = (offer.product && offer.product.discount) || {};\n    var type = discount.type;\n    var value = parseFloat(discount.value) || 0;\n    var display = price;\n    var compare = 0;\n    var config = upsellConfig();\n    var useCompare = config && config.settings && config.settings.useCompareAtPrice;\n    var baseline = useCompare && compareAt > price ? compareAt : price;\n\n    if (type === 'percentage' && value > 0) {\n      display = Math.max(0, Math.floor((price * (100 - value)) / 100 + 1e-9));\n      compare = baseline;\n    } else if (type === 'fixed_amount' && value > 0) {\n      display = Math.max(0, price - value * 100);\n      compare = baseline;\n    } else if (compareAt > price) {\n      compare = compareAt;\n    }\n\n    if (compare && compare <= display) compare = 0;\n    return { price: display, compare: compare };\n  }\n\n  function offerVariants(offer, meta) {\n    var pinned = ((offer.product && offer.product.variants) || []).map(function (variant) {\n      return numericId(variant.id);\n    }).filter(Boolean);\n    var all = (meta && meta.variants) || [];\n    var list = pinned.length\n      ? all.filter(function (variant) { return pinned.indexOf(Number(variant.id)) !== -1; })\n      : all;\n    if (!list.length) list = all;\n    return list.filter(function (variant) { return variant.available !== false; });\n  }\n\n  function selectLabel(meta) {\n    var options = (meta && meta.options) || [];\n    var name = '';\n    options.some(function (option) {\n      if (!option || option === 'Title') return false;\n      name = option;\n      return true;\n    });\n    var down = name.toLowerCase();\n    if (down.indexOf('menge') !== -1) return 'Menge w\u00E4hlen';\n    if (down.indexOf('farbe') !== -1) return 'Farbe w\u00E4hlen';\n    if (name) return name + ' w\u00E4hlen';\n    return 'Variante w\u00E4hlen';\n  }\n\n  function el(tag, className, text) {\n    var node = document.createElement(tag);\n    if (className) node.className = className;\n    if (text != null) node.textContent = text;\n    return node;\n  }\n\n  function appendSubline(parent, text) {\n    var value = (text || '').trim();\n    if (!value) return;\n    parent.appendChild(el('p', 'sh-atc-popup__subline', value));\n  }\n\n  function priceNodes(price, compare) {\n    var wrap = el('div', 'sh-atc-popup__prices');\n    wrap.appendChild(el('span', 'sh-atc-popup__sale', formatMoney(price || 0)));\n    if (compare) wrap.appendChild(el('span', 'sh-atc-popup__compare', formatMoney(compare)));\n    return wrap;\n  }\n\n  function renderAdded(cart, subtitles) {\n    if (!addedList) return;\n    var rows = [];\n    var primary = lastAdded;\n\n    if (cart && primary && primary.variant_id) {\n      (cart.items || []).some(function (item) {\n        if (String(item.variant_id) !== String(primary.variant_id)) return false;\n        primary = item;\n        return true;\n      });\n    }\n\n    function rowFromItem(item, badge) {\n      var handle = item.handle || '';\n      var meta = subtitles && subtitles[handle];\n      var subtitle = (meta && meta.subtitle) || item.subtitle || '';\n      var price = typeof item.final_price === 'number' ? item.final_price : (item.price || 0);\n      var original = typeof item.original_price === 'number' ? item.original_price : 0;\n      var compare = original > price ? original : 0;\n      if (meta && item.variant_id) {\n        (meta.variants || []).some(function (variant) {\n          if (String(variant.id) !== String(item.variant_id)) return false;\n          if (variant.compare_at_price > price) compare = variant.compare_at_price;\n          return true;\n        });\n      }\n      return {\n        title: item.product_title || item.title || '',\n        subtitle: subtitle,\n        variantLabel: variantLabel(item.variant_title || item.variantLabel),\n        image: imageSrc(item.image || item.featured_image),\n        price: price,\n        compare: compare,\n        badge: badge\n      };\n    }\n\n    var previewing = forcePreview || new URLSearchParams(window.location.search).get('sh_atc_preview') === '1';\n    if (primary && (primary.product_title || primary.title)) {\n      var primaryId = primary.variant_id;\n      var stillInCart = previewing || !cart || !cart.items || !primaryId || !!cartVariants[String(primaryId)];\n      if (stillInCart) rows.push(rowFromItem(primary, false));\n    }\n\n    var seenExtras = {};\n    sessionAdds.forEach(function (extra) {\n      if (seenExtras[extra.id]) return;\n      seenExtras[extra.id] = true;\n      if (cart && !cartVariants[String(extra.id)]) return;\n      rows.push({\n        title: extra.title,\n        subtitle: extra.subtitle,\n        variantLabel: extra.variantLabel,\n        image: extra.image,\n        price: extra.price,\n        compare: extra.compare,\n        badge: true\n      });\n    });\n\n    addedList.innerHTML = '';\n    if (!rows.length) {\n      addedList.hidden = true;\n      return;\n    }\n\n    rows.forEach(function (row) {\n      var item = el('div', 'sh-atc-popup__added');\n      var media = el('div', 'sh-atc-popup__added-media');\n      if (row.image) {\n        var image = document.createElement('img');\n        image.className = 'sh-atc-popup__added-image';\n        image.alt = '';\n        image.src = row.image;\n        image.width = 56;\n        image.height = 56;\n        media.appendChild(image);\n      }\n      var copy = el('div', 'sh-atc-popup__added-copy');\n      copy.appendChild(el('p', 'sh-atc-popup__added-title', row.title));\n      appendSubline(copy, row.subtitle);\n      if (row.variantLabel) copy.appendChild(el('p', 'sh-atc-popup__variant', row.variantLabel));\n      if (row.badge) copy.appendChild(el('p', 'sh-atc-popup__badge', 'Gerade hinzugef\u00FCgt'));\n\n      var prices = el('p', 'sh-atc-popup__added-prices');\n      prices.appendChild(document.createTextNode(formatMoney(row.price || 0)));\n      if (row.compare) prices.appendChild(el('span', 'sh-atc-popup__compare', formatMoney(row.compare)));\n\n      item.appendChild(media);\n      item.appendChild(copy);\n      item.appendChild(prices);\n      addedList.appendChild(item);\n    });\n    addedList.hidden = false;\n  }\n\n  function rememberCart(cart) {\n    cartVariants = {};\n    (cart.items || []).forEach(function (item) {\n      cartVariants[String(item.variant_id)] = item;\n    });\n  }\n\n  // The Slide Cart (AMP) does not know about carts changed by this popup,\n  // so tell it to reload its contents.\n  function updateSlideCart(cart) {\n    if (cart && typeof window.SLIDECART_SET_CART === 'function') {\n      try { window.SLIDECART_SET_CART(cart); } catch (error) {}\n    }\n    if (typeof window.SLIDECART_UPDATE !== 'function') return;\n    try { window.SLIDECART_UPDATE(); } catch (error) {}\n  }\n\n  function refreshCart() {\n    return fetch(root.getAttribute('data-cart') + '.js', { cache: 'no-store' }).then(function (response) {\n      return response.json();\n    }).then(function (cart) {\n      rememberCart(cart);\n      setCount(cart.item_count);\n      return cart;\n    });\n  }\n\n  function subtitlesFor(cart) {\n    var handles = [];\n    (cart && cart.items || []).forEach(function (item) {\n      if (item.handle && handles.indexOf(item.handle) === -1) handles.push(item.handle);\n    });\n    if (lastAdded && lastAdded.handle && handles.indexOf(lastAdded.handle) === -1) handles.push(lastAdded.handle);\n    return Promise.all(handles.map(function (handle) {\n      return fetchMeta(handle).then(function (meta) {\n        return [handle, meta || null];\n      });\n    })).then(function (pairs) {\n      var map = {};\n      pairs.forEach(function (pair) { map[pair[0]] = pair[1]; });\n      return map;\n    });\n  }\n\n  function popupAddedCount(id) {\n    var count = 0;\n    sessionAdds.forEach(function (extra) {\n      if (extra.id === String(id)) count += 1;\n    });\n    return count;\n  }\n\n  function syncButton(button) {\n    var id = selectedId(button);\n    var fromPopup = popupAddedCount(id) > 0;\n    button.classList.toggle('is-remove', fromPopup);\n    var card = button.closest('.sh-atc-popup__card');\n    var title = card ? card.querySelector('.sh-atc-popup__card-title') : null;\n    var name = title ? title.textContent.trim() : 'Produkt';\n    button.setAttribute('aria-label', fromPopup ? (name + ' entfernen') : (name + ' hinzuf\u00FCgen'));\n  }\n\n  function selectedId(button) {\n    var card = button.closest('.sh-atc-popup__card');\n    var select = card && card.querySelector('[data-sh-atc-select]');\n    if (select) return select.value;\n    return button.getAttribute('data-variant-id') || '';\n  }\n\n  function offerBlock(handle) {\n    if (!handle) return null;\n    return document.querySelector('.sh-upsell-block[data-product-handle=\"' + handle + '\"]');\n  }\n\n  function renderCards(entries) {\n    productsEl.innerHTML = '';\n    var visible = 0;\n    entries.forEach(function (entry) {\n      if (!entry || !entry.offer) return;\n      var product = entry.offer.product || {};\n      var content = product.content || {};\n      var block = offerBlock(product.handle);\n      var variants = entry.meta ? offerVariants(entry.offer, entry.meta) : [];\n      var blockVariant = block && block.getAttribute('data-variant-id');\n      if (!variants.length && !blockVariant) return;\n      visible += 1;\n      var title = content.title || (entry.meta && entry.meta.title) || product.title || '';\n      var subtitle = (entry.meta && entry.meta.subtitle) || content.subtitle || '';\n      var first = variants[0];\n      var prices = first ? pricedOffer(first, entry.offer) : null;\n      var domImage = block && block.querySelector('img');\n      var image = (domImage && (domImage.currentSrc || domImage.src)) || imageSrc(content.image) || imageSrc(product.image) || imageSrc(first && first.image) || imageSrc(entry.meta && entry.meta.image);\n\n      var card = el('article', 'sh-atc-popup__card');\n      card.setAttribute('data-offer-index', String(entry.index));\n      card.setAttribute('data-subtitle', subtitle);\n\n      var media = el('div', 'sh-atc-popup__card-media');\n      if (image) {\n        var img = document.createElement('img');\n        img.className = 'sh-atc-popup__card-image';\n        img.alt = '';\n        img.src = image;\n        img.width = 78;\n        img.height = 78;\n        img.setAttribute('data-sh-atc-image', '');\n        media.appendChild(img);\n      }\n\n      var body = el('div', 'sh-atc-popup__card-body');\n      body.appendChild(el('h3', 'sh-atc-popup__card-title', title));\n      appendSubline(body, subtitle);\n      var priceEl;\n      if (prices) {\n        priceEl = priceNodes(prices.price, prices.compare);\n      } else {\n        var priceNode = block && block.querySelector('[data-price]');\n        var compareNode = block && block.querySelector('[data-compare]');\n        priceEl = el('div', 'sh-atc-popup__prices');\n        if (priceNode && priceNode.textContent.trim()) {\n          priceEl.appendChild(el('span', 'sh-atc-popup__sale', priceNode.textContent.trim()));\n        }\n        if (compareNode && compareNode.textContent.trim()) {\n          priceEl.appendChild(el('span', 'sh-atc-popup__compare', compareNode.textContent.trim()));\n        }\n      }\n      priceEl.setAttribute('data-sh-atc-price', '');\n      priceEl.setAttribute('data-price-cents', prices ? String(prices.price) : '0');\n      priceEl.setAttribute('data-compare-cents', prices ? String(prices.compare || 0) : '0');\n      body.appendChild(priceEl);\n\n      if (variants.length > 1) {\n        var select = document.createElement('select');\n        select.className = 'sh-atc-popup__select';\n        select.setAttribute('data-sh-atc-select', '');\n        select.setAttribute('aria-label', selectLabel(entry.meta));\n        variants.forEach(function (variant, index) {\n          var option = document.createElement('option');\n          option.value = String(variant.id);\n          option.textContent = variantLabel(variant.title) || selectLabel(entry.meta);\n          option.setAttribute('data-image', imageSrc(variant.image) || image);\n          option.setAttribute('data-price-cents', String(pricedOffer(variant, entry.offer).price));\n          option.setAttribute('data-compare-cents', String(pricedOffer(variant, entry.offer).compare || 0));\n          if (index === 0) option.selected = true;\n          select.appendChild(option);\n        });\n        body.appendChild(select);\n      }\n\n      var button = document.createElement('button');\n      button.type = 'button';\n      button.className = 'sh-atc-popup__add';\n      button.setAttribute('data-sh-atc-add', '');\n      if (variants.length === 1) button.setAttribute('data-variant-id', String(first.id));\n      else if (!variants.length && blockVariant) button.setAttribute('data-variant-id', blockVariant);\n      button.innerHTML = '<svg class=\"sh-atc-popup__add-icon sh-atc-popup__add-icon--plus\" viewBox=\"0 0 14 14\" width=\"18\" height=\"18\" aria-hidden=\"true\"><path d=\"M7 1v12M1 7h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"></path></svg><svg class=\"sh-atc-popup__add-icon sh-atc-popup__add-icon--minus\" viewBox=\"0 0 14 14\" width=\"18\" height=\"18\" aria-hidden=\"true\"><path d=\"M2 7h10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"></path></svg><svg class=\"sh-atc-popup__add-icon sh-atc-popup__add-icon--spinner\" viewBox=\"0 0 20 20\" width=\"20\" height=\"20\" aria-hidden=\"true\"><circle cx=\"10\" cy=\"10\" r=\"7.5\" fill=\"none\" stroke=\"currentColor\" stroke-opacity=\"0.3\" stroke-width=\"2.2\"></circle><path d=\"M10 2.5a7.5 7.5 0 0 1 7.5 7.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"></path></svg><svg class=\"sh-atc-popup__add-icon sh-atc-popup__add-icon--check\" viewBox=\"0 0 16 16\" width=\"20\" height=\"20\" aria-hidden=\"true\"><path d=\"M3.2 8.3 6.4 11.5 12.8 4.6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>';\n      syncButton(button);\n\n      card.appendChild(media);\n      card.appendChild(body);\n      card.appendChild(button);\n      productsEl.appendChild(card);\n    });\n    upsellWrap.hidden = visible === 0;\n    syncScrollHint();\n  }\n\n  function loadOffers(attempt) {\n    if (offersReady) return offersReady;\n    var config = upsellConfig();\n    var offers = (config && config.offers) || [];\n    if (!offers.length) {\n      if ((attempt || 0) > 25) return Promise.resolve([]);\n      return new Promise(function (resolve) {\n        window.setTimeout(function () {\n          resolve(loadOffers((attempt || 0) + 1));\n        }, 200);\n      });\n    }\n    offersReady = Promise.all(offers.map(function (offer, index) {\n      var handle = offer.product && offer.product.handle;\n      if (!handle) return null;\n      return fetchMeta(handle).then(function (meta) {\n        return { offer: offer, index: index, meta: meta || null };\n      });\n    })).then(function (entries) {\n      return entries.filter(Boolean);\n    });\n    return offersReady;\n  }\n\n  function applyOptionVisuals(select) {\n    var option = select.options[select.selectedIndex];\n    if (!option) return;\n    var card = select.closest('.sh-atc-popup__card');\n    var image = card && card.querySelector('[data-sh-atc-image]');\n    var price = card && card.querySelector('[data-sh-atc-price]');\n    var nextImage = option.getAttribute('data-image');\n    if (image && nextImage) image.src = nextImage;\n    if (!price) return;\n    var cents = Number(option.getAttribute('data-price-cents')) || 0;\n    var compare = Number(option.getAttribute('data-compare-cents')) || 0;\n    price.setAttribute('data-price-cents', String(cents));\n    price.setAttribute('data-compare-cents', String(compare));\n    price.innerHTML = '';\n    price.appendChild(el('span', 'sh-atc-popup__sale', formatMoney(cents)));\n    if (compare) price.appendChild(el('span', 'sh-atc-popup__compare', formatMoney(compare)));\n  }\n\n  function snapshotAdd(button, variantId) {\n    var card = button.closest('.sh-atc-popup__card');\n    var select = card && card.querySelector('[data-sh-atc-select]');\n    var option = select && select.options[select.selectedIndex];\n    var title = card && card.querySelector('.sh-atc-popup__card-title');\n    var image = card && card.querySelector('[data-sh-atc-image]');\n    var price = card && card.querySelector('[data-sh-atc-price]');\n    return {\n      id: String(variantId),\n      title: title ? title.textContent.trim() : '',\n      subtitle: card ? (card.getAttribute('data-subtitle') || '') : '',\n      variantLabel: option && option.value ? option.textContent.trim() : '',\n      image: (option && option.getAttribute('data-image')) || (image ? image.src : ''),\n      price: Number((option && option.getAttribute('data-price-cents')) || (price && price.getAttribute('data-price-cents')) || 0),\n      compare: Number((option && option.getAttribute('data-compare-cents')) || (price && price.getAttribute('data-compare-cents')) || 0)\n    };\n  }\n\n  function upsellProperty(button) {\n    var config = upsellConfig();\n    var host = upsellHost();\n    if (!config || !config.shortId) return null;\n    var card = button.closest('.sh-atc-popup__card');\n    var meta = {\n      id: config.shortId,\n      o: Number(card && card.getAttribute('data-offer-index')) || 0\n    };\n    if (host && host.getAttribute('data-product-id')) meta.p = host.getAttribute('data-product-id');\n    if (config.settings && config.settings.requireMainProduct) meta.rm = 1;\n    if (window.sectionheroes && window.sectionheroes.abExcluded && window.sectionheroes.abExcluded[config.shortId]) {\n      meta.x = 1;\n    }\n    return JSON.stringify(meta);\n  }\n\n  function postCart(url, payload) {\n    return fetch(url, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        Accept: 'application/json',\n        'X-Requested-With': 'XMLHttpRequest'\n      },\n      body: JSON.stringify(payload)\n    }).then(function (response) {\n      return response.json().then(function (data) {\n        if (!response.ok) throw new Error(data.description || data.message || 'Nicht verf\u00FCgbar');\n        return data;\n      });\n    });\n  }\n\n  function syncScrollHint() {\n    var panel = root.querySelector('.sh-atc-popup__panel');\n    var body = root.querySelector('[data-sh-atc-body]');\n    if (!panel || !body) return;\n    var more = body.scrollHeight - body.scrollTop - body.clientHeight > 24;\n    panel.classList.toggle('has-more', more);\n  }\n\n  function lockPopupHeight() {}\n\n  function unlockPopupHeight() {\n    var panel = root.querySelector('.sh-atc-popup__panel');\n    if (!panel) return;\n    panel.style.height = '';\n    panel.classList.remove('has-more');\n  }\n\n  function paint(cart) {\n    return subtitlesFor(cart).then(function (subtitles) {\n      renderAdded(cart, subtitles);\n      syncScrollHint();\n    });\n  }\n\n  function collapseCard(card, done) {\n    card.style.height = card.offsetHeight + 'px';\n    card.getBoundingClientRect();\n    card.classList.add('is-leaving');\n    window.setTimeout(done, 420);\n  }\n\n  function checkAllAdded() {\n    if (!root.classList.contains('is-open')) return;\n    var open = Array.prototype.filter.call(productsEl.querySelectorAll('.sh-atc-popup__card'), function (card) {\n      return !card.classList.contains('is-leaving') && !card.querySelector('.sh-atc-popup__add.is-remove');\n    });\n    if (open.length) return;\n    window.setTimeout(function () {\n      closePopup();\n    }, 180);\n  }\n\n  function finishAdd(button) {\n    var card = button.closest('.sh-atc-popup__card');\n    window.setTimeout(function () {\n      function done() {\n        button.classList.remove('is-success');\n        button.removeAttribute('aria-busy');\n        button.disabled = false;\n        syncButton(button);\n        checkAllAdded();\n      }\n      if (card) collapseCard(card, done);\n      else done();\n    }, 650);\n  }\n\n  function addVariant(button) {\n    var variantId = selectedId(button);\n    if (!variantId || button.disabled || button.classList.contains('is-remove')) return;\n    var snapshot = snapshotAdd(button, variantId);\n    var item = { id: Number(variantId), quantity: 1 };\n    var property = upsellProperty(button);\n    if (property) item.properties = { '_sh-upsell': property };\n    button.disabled = true;\n    button.setAttribute('aria-busy', 'true');\n    button.classList.add('is-loading');\n    armBlock();\n    postCart(root.getAttribute('data-cart-add') + '.js?sh_skip=true', { items: [item] }).then(function () {\n      return refreshCart();\n    }).then(function (cart) {\n      updateSlideCart(cart);\n      trackUpsellAdded('popup', [String(variantId)]);\n      sessionAdds.push(snapshot);\n      button.classList.remove('is-loading');\n      button.classList.add('is-success');\n      finishAdd(button);\n      paint(cart).catch(function () {});\n    }).catch(function (error) {\n      button.classList.remove('is-loading');\n      button.removeAttribute('aria-busy');\n      button.disabled = false;\n      button.setAttribute('aria-label', error.message);\n    });\n  }\n\n  function removeVariant(button) {\n    var variantId = selectedId(button);\n    var line = cartVariants[variantId];\n    if (!line || button.disabled || popupAddedCount(variantId) < 1) return;\n    var nextQuantity = Math.max(0, Number(line.quantity) - 1);\n    button.disabled = true;\n    armBlock();\n    postCart(root.getAttribute('data-cart-change') + '.js', {\n      id: line.key,\n      quantity: nextQuantity\n    }).then(function () {\n      return refreshCart();\n    }).then(function (cart) {\n      updateSlideCart(cart);\n      var removed = false;\n      sessionAdds = sessionAdds.filter(function (extra) {\n        if (!removed && extra.id === String(variantId)) {\n          removed = true;\n          return false;\n        }\n        return true;\n      });\n      syncButtons();\n      return paint(cart);\n    }).catch(function (error) {\n      button.setAttribute('aria-label', error.message);\n    }).finally(function () {\n      button.disabled = false;\n    });\n  }\n\n  function syncButtons() {\n    root.querySelectorAll('[data-sh-atc-add]').forEach(syncButton);\n  }\n\n  function slideCart() {\n    return document.getElementById('slidecarthq');\n  }\n\n  function releaseFocusFromCart() {\n    var slide = slideCart();\n    var active = document.activeElement;\n    if (!slide || !active || active === document.body || !slide.contains(active)) return;\n    active.blur();\n  }\n\n  function parkSlideCart() {\n    var slide = slideCart();\n    if (!slide) return;\n    releaseFocusFromCart();\n    slide.removeAttribute('aria-hidden');\n    if ('inert' in slide) slide.inert = true;\n  }\n\n  function unparkSlideCart() {\n    var slide = slideCart();\n    if (!slide) return;\n    if ('inert' in slide) slide.inert = false;\n    slide.style.removeProperty('display');\n    slide.style.removeProperty('visibility');\n    slide.style.removeProperty('opacity');\n    slide.style.removeProperty('pointer-events');\n  }\n\n  var allowSideCart = false;\n\n  function forceHideSlideCart() {\n    if (allowSideCart) return;\n    releaseFocusFromCart();\n    var slide = slideCart();\n    if (!slide) return;\n    if ('inert' in slide) slide.inert = true;\n    slide.style.setProperty('opacity', '0', 'important');\n    slide.style.setProperty('pointer-events', 'none', 'important');\n  }\n\n  var cartSuppressTimer = null;\n\n  function startCartSuppression() {\n    allowSideCart = false;\n    forceHideSlideCart();\n    if (cartSuppressTimer) return;\n    cartSuppressTimer = window.setInterval(function () {\n      var popupOpen = root.classList.contains('is-open') || blocking;\n      if (!popupOpen || allowSideCart) {\n        window.clearInterval(cartSuppressTimer);\n        cartSuppressTimer = null;\n        return;\n      }\n      forceHideSlideCart();\n      if (root.classList.contains('is-open')) {\n        root.removeAttribute('aria-hidden');\n        if ('inert' in root) root.inert = false;\n      }\n    }, 40);\n  }\n\n  function closeOriginalCarts() {\n    if (blocking) forceHideSlideCart();\n    else releaseFocusFromCart();\n    var drawer = document.querySelector('.js-cart-drawer');\n    if (drawer && drawer.hasAttribute('open') && typeof drawer.close === 'function') drawer.close();\n    var slide = slideCart();\n    if (slide) slide.classList.remove('open', 'is-open', 'active');\n    releaseFocusFromCart();\n  }\n\n  function guardSlideCartOpen() {\n    var current = window.SLIDECART_OPEN;\n    if (typeof current !== 'function' || current.__shAtc) return;\n    var wrapped = function () {\n      if (blocking) return;\n      return current.apply(this, arguments);\n    };\n    wrapped.__shAtc = true;\n    wrapped.__shAtcOriginal = current;\n    window.SLIDECART_OPEN = wrapped;\n  }\n\n  function armBlock() {\n    blocking = true;\n    document.documentElement.classList.add('sh-atc-hold-cart');\n    startCartSuppression();\n    guardSlideCartOpen();\n    var drawer = document.querySelector('.js-cart-drawer');\n    if (drawer && !drawerOpenWrapped && typeof drawer.open === 'function') {\n      var originalOpen = drawer.open;\n      drawer.open = function () {\n        if (blocking) return;\n        return originalOpen.apply(this, arguments);\n      };\n      drawerOpenWrapped = true;\n    }\n    blockTimers.forEach(window.clearTimeout);\n    blockTimers = [0, 50, 200, 500, 1000, 1800, 3000].map(function (delay) {\n      return window.setTimeout(function () {\n        if (blocking) closeOriginalCarts();\n      }, delay);\n    });\n  }\n\n  function releaseCartHold() {\n    blocking = false;\n    clearPending();\n    if (root.classList.contains('is-open')) return;\n    unparkSlideCart();\n    document.documentElement.classList.remove('sh-atc-hold-cart');\n  }\n\n  function stopCartSuppression() {\n    blocking = false;\n    if (cartSuppressTimer) {\n      window.clearInterval(cartSuppressTimer);\n      cartSuppressTimer = null;\n    }\n    blockTimers.forEach(window.clearTimeout);\n    blockTimers = [];\n  }\n\n  function slideCartAlreadyOpen() {\n    var slide = slideCart();\n    if (!slide) return false;\n    if (slide.classList.contains('open') || slide.classList.contains('active') || slide.classList.contains('is-open')) return true;\n    if (document.body.classList.contains('slidecart-open') || document.documentElement.classList.contains('slidecart-open')) return true;\n    return slide.getAttribute('aria-hidden') === 'false';\n  }\n\n  function showSideCart() {\n    allowSideCart = true;\n    if (cartSuppressTimer) {\n      window.clearInterval(cartSuppressTimer);\n      cartSuppressTimer = null;\n    }\n    unparkSlideCart();\n    document.documentElement.classList.remove('sh-atc-hold-cart');\n    if (slideCartAlreadyOpen()) return;\n    var opener = window.SLIDECART_OPEN;\n    if (opener && opener.__shAtcOriginal) opener.__shAtcOriginal();\n    else if (typeof opener === 'function') opener();\n    else {\n      var drawer = document.querySelector('.js-cart-drawer');\n      if (drawer && typeof drawer.open === 'function') drawer.open();\n      else window.location.href = root.getAttribute('data-cart');\n    }\n  }\n\n  function openOriginalCart() {\n    releasing = true;\n    stopCartSuppression();\n    closePopup();\n    updateSlideCart();\n    window.setTimeout(function () {\n      showSideCart();\n      window.setTimeout(updateSlideCart, 300);\n      window.setTimeout(updateSlideCart, 1000);\n      window.setTimeout(function () { releasing = false; }, 700);\n    }, 60);\n  }\n\n  function waitForImages(scope, timeout) {\n    var images = scope.querySelectorAll('img');\n    return Promise.all(Array.prototype.map.call(images, function (img) {\n      if (!img.getAttribute('src') || img.complete) return Promise.resolve();\n      return new Promise(function (resolve) {\n        var finish = function () { resolve(); };\n        img.addEventListener('load', finish, { once: true });\n        img.addEventListener('error', finish, { once: true });\n        window.setTimeout(finish, timeout || 1500);\n      });\n    }));\n  }\n\n  function moveFocusOutOf(container) {\n    var active = document.activeElement;\n    if (!active || active === document.body || !container.contains(active)) return;\n    active.blur();\n  }\n\n  function concealPopup() {\n    moveFocusOutOf(root);\n    if (!root.classList.contains('is-open')) {\n      root.hidden = true;\n      unlockPopupHeight();\n    }\n  }\n\n  function revealPopup() {\n    clearPending();\n    if (root.parentElement !== document.body) document.body.appendChild(root);\n    root.removeAttribute('aria-hidden');\n    root.hidden = false;\n    root.classList.remove('is-open');\n    document.body.classList.add('sh-atc-popup-open');\n    root.getBoundingClientRect();\n    root.classList.add('is-open');\n    if (!forcePreview) {\n      var shown = Array.prototype.map.call(root.querySelectorAll('.sh-atc-popup__card [data-sh-atc-add]'), selectedId).filter(Boolean);\n      trackGoal('sh_upsell_view', {\n        upsell_source: 'popup',\n        upsell_variant_ids: shown.join(','),\n        upsell_count: shown.length\n      });\n      // Backup goal: fires only when the popup is open, never for the block.\n      trackGoal('sh_atc_popup_view', {\n        upsell_variant_ids: shown.join(','),\n        upsell_count: shown.length\n      });\n    }\n    releaseFocusFromCart();\n    if (closeBtn) closeBtn.focus();\n    window.requestAnimationFrame(function () {\n      lockPopupHeight();\n      syncScrollHint();\n    });\n  }\n\n  var revealToken = 0;\n\n  function openPopup() {\n    var urlPreview = new URLSearchParams(window.location.search).get('sh_atc_preview') === '1';\n    if (!shouldIntercept() && !forcePreview && !(variationOn() && urlPreview)) return;\n    if (root.classList.contains('is-open')) return;\n    armBlock();\n    if (hideTimer) {\n      window.clearTimeout(hideTimer);\n      hideTimer = null;\n    }\n    moveFocusOutOf(root);\n    root.classList.remove('is-open');\n    root.hidden = true;\n    var token = revealToken + 1;\n    revealToken = token;\n\n    refreshCart().then(function (cart) {\n      if ((!lastAdded || !(lastAdded.product_title || lastAdded.title)) && cart.items && cart.items.length) {\n        lastAdded = cart.items[cart.items.length - 1];\n      }\n      return paint(cart);\n    }).catch(function () {});\n\n    loadOffers().then(function (entries) {\n      renderCards(entries);\n      syncButtons();\n    }).catch(function () {}).then(function () {\n      return waitForImages(root, 400);\n    }).then(function () {\n      if (token !== revealToken) return;\n      if (!shouldIntercept() && !forcePreview) return;\n      revealPopup();\n    });\n  }\n\n  function closePopup() {\n    if (root.hidden || !root.classList.contains('is-open')) return;\n    blockTimers.forEach(window.clearTimeout);\n    blockTimers = [];\n    moveFocusOutOf(root);\n    root.classList.remove('is-open');\n    if (hideTimer) window.clearTimeout(hideTimer);\n    if (!releasing) dismissSideCart();\n    hideTimer = window.setTimeout(function () {\n      hideTimer = null;\n      concealPopup();\n      document.body.classList.remove('sh-atc-popup-open');\n    }, 320);\n  }\n\n  function dismissSideCart() {\n    blocking = false;\n    if (cartSuppressTimer) {\n      window.clearInterval(cartSuppressTimer);\n      cartSuppressTimer = null;\n    }\n    var slide = slideCart();\n    if (slide && 'inert' in slide) slide.inert = false;\n    var tries = 0;\n    var timer = window.setInterval(function () {\n      tries += 1;\n      if (typeof window.SLIDECART_CLOSE === 'function') {\n        try { window.SLIDECART_CLOSE(); } catch (error) {}\n      }\n      if (tries < 8) return;\n      if (!slideCartAlreadyOpen() || tries > 20) {\n        window.clearInterval(timer);\n        unparkSlideCart();\n        document.documentElement.classList.remove('sh-atc-hold-cart');\n      }\n    }, 40);\n  }\n\n  root.addEventListener('click', function (event) {\n    if (event.target.closest('[data-sh-atc-cart]')) {\n      event.preventDefault();\n      trackGoal('sh_atc_popup_go_to_cart');\n      openOriginalCart();\n      return;\n    }\n    var close = event.target.closest('[data-sh-atc-close]');\n    if (close) {\n      event.preventDefault();\n      if (close.classList.contains('sh-atc-popup__continue')) {\n        trackGoal('sh_atc_popup_continue');\n      } else {\n        trackGoal('sh_atc_popup_close', {\n          close_method: close.classList.contains('sh-atc-popup__overlay') ? 'overlay' : 'x'\n        });\n      }\n      closePopup();\n      return;\n    }\n    var add = event.target.closest('[data-sh-atc-add]');\n    if (!add) return;\n    event.preventDefault();\n    if (add.classList.contains('is-remove')) removeVariant(add);\n    else addVariant(add);\n  });\n\n  var sheetBody = root.querySelector('[data-sh-atc-body]');\n  if (sheetBody) sheetBody.addEventListener('scroll', syncScrollHint, { passive: true });\n\n  // iOS: scroll-lock scripts (e.g. the Slide Cart app) call preventDefault on\n  // document touchmove, which kills scrolling inside the popup. Capture on\n  // window runs first, so those listeners never see touches from the popup body.\n  // ?sh_atc_debug=1 shows a small overlay while touching the popup, to see\n  // on a real device what is touched and whether the list can scroll at all.\n  var debugEl = null;\n\n  function debugTouch(event) {\n    if (!debugEl) {\n      debugEl = document.createElement('div');\n      debugEl.style.cssText = 'position:fixed;left:4px;top:4px;z-index:2147483647;max-width:90vw;padding:6px 8px;border-radius:6px;background:rgba(0,0,0,.8);color:#fff;font:11px/1.3 monospace;pointer-events:none;white-space:pre-wrap';\n      document.body.appendChild(debugEl);\n    }\n    var touch = event.touches && event.touches[0];\n    var hit = touch ? document.elementFromPoint(touch.clientX, touch.clientY) : null;\n    var style = sheetBody ? window.getComputedStyle(sheetBody) : null;\n    debugEl.textContent = [\n      'hit: ' + (hit ? (hit.className || hit.tagName) : '-'),\n      'inBody: ' + !!(hit && sheetBody && sheetBody.contains(hit)),\n      'scrollTop: ' + (sheetBody ? Math.round(sheetBody.scrollTop) : '-'),\n      'scrollH: ' + (sheetBody ? sheetBody.scrollHeight : '-') + ' clientH: ' + (sheetBody ? sheetBody.clientHeight : '-'),\n      'overflowY: ' + (style ? style.overflowY : '-'),\n      'cancelable: ' + event.cancelable\n    ].join('\\n');\n  }\n\n  window.addEventListener('touchmove', function (event) {\n    if (searchParams.get('sh_atc_debug') === '1' && root.classList.contains('is-open')) debugTouch(event);\n    if (!root.classList.contains('is-open')) return;\n    if (sheetBody && sheetBody.contains(event.target)) event.stopPropagation();\n  }, { capture: true, passive: true });\n\n  root.addEventListener('change', function (event) {\n    var select = event.target.closest('[data-sh-atc-select]');\n    if (!select) return;\n    applyOptionVisuals(select);\n    var card = select.closest('.sh-atc-popup__card');\n    var button = card && card.querySelector('[data-sh-atc-add]');\n    if (button) syncButton(button);\n  });\n\n  function prewarm() {\n    if (!variationOn()) return;\n    var handle = currentProductKey();\n    if (handle) fetchMeta(handle);\n    loadOffers().then(function (entries) {\n      entries.forEach(function (entry) {\n        var product = entry.offer.product || {};\n        var block = offerBlock(product.handle);\n        var domImage = block && block.querySelector('img');\n        var first = entry.meta && offerVariants(entry.offer, entry.meta)[0];\n        [\n          domImage && (domImage.currentSrc || domImage.src),\n          imageSrc(product.image),\n          imageSrc(first && first.image),\n          imageSrc(entry.meta && entry.meta.image)\n        ].forEach(function (src) {\n          if (src) new Image().src = src;\n        });\n      });\n    }).catch(function () {});\n  }\n\n  var variationBooted = false;\n\n  function bootVariation() {\n    if (variationBooted || !variationOn()) return;\n    variationBooted = true;\n    ensureVariationHooks();\n\n    document.addEventListener('keydown', function (event) {\n      if (event.key !== 'Escape' || !root.classList.contains('is-open')) return;\n      trackGoal('sh_atc_popup_close', { close_method: 'escape' });\n      closePopup();\n    });\n\n    document.addEventListener('focusin', function (event) {\n      if (!blocking) return;\n      var slide = slideCart();\n      if (!slide || !event.target || !slide.contains(event.target)) return;\n      event.target.blur();\n      if (closeBtn && root.classList.contains('is-open')) closeBtn.focus();\n    }, true);\n\n  var addOpenLock = false;\n\n  function variantFromAddResponse(data) {\n    if (!data) return '';\n    if (data.variant_id) return data.variant_id;\n    if (data.items && data.items[0]) return data.items[0].variant_id || data.items[0].id;\n    return '';\n  }\n\n  function showPopupAfterAdd(variantId) {\n    if (!shouldIntercept()) {\n      releaseCartHold();\n      return;\n    }\n    if (addOpenLock) return;\n    addOpenLock = true;\n    window.setTimeout(function () { addOpenLock = false; }, 1500);\n    lastAdded = {\n      variant_id: variantId || '',\n      title: '',\n      product_title: ''\n    };\n    sessionAdds = [];\n    armBlock();\n    openPopup();\n  }\n\n  function isStorefrontCartAdd(url) {\n    var text = '';\n    if (url instanceof Request) text = url.url;\n    else text = String(url || '');\n    return text.indexOf('/cart/add') !== -1 && text.indexOf('sh_skip=true') === -1;\n  }\n\n  var variationHooksReady = false;\n\n  function ensureVariationHooks() {\n    if (variationHooksReady || !variationOn()) return;\n    variationHooksReady = true;\n\n    if (window.fetch && !window.fetch.__shAtc) {\n      var originalFetch = window.fetch;\n      var patchedFetch = function (input, init) {\n        var tracked = shouldIntercept() && isStorefrontCartAdd(input);\n        if (tracked) armBlock();\n        var request = originalFetch.apply(this, arguments);\n        if (!tracked) return request;\n        return request.then(function (response) {\n          if (response && response.ok) {\n            response.clone().json().then(function (data) {\n              showPopupAfterAdd(variantFromAddResponse(data));\n            }).catch(function () {\n              showPopupAfterAdd('');\n            });\n          } else if (!root.classList.contains('is-open')) {\n            releaseCartHold();\n          }\n          return response;\n        }).catch(function (error) {\n          if (!root.classList.contains('is-open')) releaseCartHold();\n          throw error;\n        });\n      };\n      patchedFetch.__shAtc = true;\n      window.fetch = patchedFetch;\n    }\n\n    var currentOpen = XMLHttpRequest.prototype.open;\n    if (!currentOpen.__shAtc) {\n      var patchedOpen = function (method, url) {\n        this.__shAtcUrl = url;\n        return currentOpen.apply(this, arguments);\n      };\n      patchedOpen.__shAtc = true;\n      XMLHttpRequest.prototype.open = patchedOpen;\n    }\n    var currentSend = XMLHttpRequest.prototype.send;\n    if (!currentSend.__shAtc) {\n      var patchedSend = function () {\n        var tracked = shouldIntercept() && isStorefrontCartAdd(this.__shAtcUrl);\n        if (tracked) {\n          armBlock();\n          this.addEventListener('load', function () {\n            if (this.status >= 200 && this.status < 300) {\n              var data = null;\n              try { data = JSON.parse(this.responseText); } catch (error) {}\n              showPopupAfterAdd(variantFromAddResponse(data));\n            } else if (!root.classList.contains('is-open')) {\n              releaseCartHold();\n            }\n          });\n        }\n        return currentSend.apply(this, arguments);\n      };\n      patchedSend.__shAtc = true;\n      XMLHttpRequest.prototype.send = patchedSend;\n    }\n  }\n\n  var cartWatch = null;\n\n  function watchCartAfterAdd() {\n    if (cartWatch) window.clearInterval(cartWatch);\n    var baseline = Number(countEl && countEl.textContent) || 0;\n    var started = Date.now();\n    cartWatch = window.setInterval(function () {\n      if (root.classList.contains('is-open')) {\n        window.clearInterval(cartWatch);\n        cartWatch = null;\n        return;\n      }\n      if (!shouldIntercept() || Date.now() - started > 8000) {\n        window.clearInterval(cartWatch);\n        cartWatch = null;\n        if (!root.classList.contains('is-open')) releaseCartHold();\n        return;\n      }\n      fetch(root.getAttribute('data-cart') + '.js', { cache: 'no-store' }).then(function (response) {\n        return response.json();\n      }).then(function (cart) {\n        if (!cart || typeof cart.item_count !== 'number' || cart.item_count <= baseline) return;\n        var item = (cart.items || [])[0];\n        showPopupAfterAdd(item && (item.variant_id || item.id));\n      }).catch(function () {});\n    }, 250);\n  }\n\n    document.addEventListener('click', function (event) {\n      var button = event.target && event.target.closest && event.target.closest('form[action*=\"/cart/add\"] [name=\"add\"], form[action*=\"/cart/add\"] button[type=\"submit\"]');\n      if (!button || !shouldIntercept()) return;\n      setPending(button);\n      armBlock();\n      watchCartAfterAdd();\n    }, true);\n\n    document.addEventListener('submit', function (event) {\n      var form = event.target;\n      if (!form || !form.matches || !form.matches('form[action*=\"/cart/add\"]')) return;\n      if (!shouldIntercept()) return;\n      armBlock();\n      window.setTimeout(function () {\n        if (root.hidden) releaseCartHold();\n      }, 8000);\n    }, true);\n\n    document.addEventListener('on:cart:error', clearPending);\n\n    document.addEventListener('on:cart:add', function (event) {\n      if (!shouldIntercept()) return;\n      var detail = event.detail || {};\n      showPopupAfterAdd(detail.variantId);\n    });\n\n    document.addEventListener('SLIDECART_OPENED', function () {\n      if (blocking) closeOriginalCarts();\n    });\n  }\n\n  function openPreview() {\n    forcePreview = true;\n    var handleMatch = window.location.pathname.match(/\\/products\\/([^/?#]+)/);\n    var previewHandle = handleMatch ? decodeURIComponent(handleMatch[1]) : '';\n    var previewTitle = document.querySelector('.product-title');\n    var previewImage = document.querySelector('.product-gallery img, .media-gallery img');\n    lastAdded = {\n      title: previewTitle ? previewTitle.textContent.trim() : '',\n      product_title: previewTitle ? previewTitle.textContent.trim() : '',\n      handle: previewHandle,\n      image: previewImage ? previewImage.currentSrc || previewImage.src : '',\n      final_price: 0,\n      variant_title: ''\n    };\n    if (previewHandle) {\n      fetchMeta(previewHandle).then(function (meta) {\n        if (!meta) return;\n        var variant = (meta.variants || []).filter(function (item) { return item.available !== false; })[0] || (meta.variants || [])[0];\n        if (!variant) return;\n        lastAdded.variant_id = variant.id;\n        lastAdded.final_price = variant.price;\n        lastAdded.original_price = variant.compare_at_price > variant.price ? variant.compare_at_price : variant.price;\n        lastAdded.variant_title = variant.title;\n        lastAdded.subtitle = meta.subtitle || '';\n        if (variant.image) lastAdded.image = variant.image;\n        if (!root.hidden) paint({ items: [], item_count: cartCount() });\n      });\n    }\n    openPopup();\n  }\n\n  try {\n    Object.defineProperty(window, 'SH_ATC_VARIATION', {\n      configurable: true,\n      enumerable: true,\n      get: function () {\n        return variationValue;\n      },\n      set: function (value) {\n        variationValue = value;\n        if (variationOn()) bootVariation();\n        if (String(value).toLowerCase() === 'preview') openPreview();\n      }\n    });\n  } catch (error) {}\n\n  // Runs in control and variation: upsells in the Section Heroes sh-upsell\n  // block on the product page. Same upsell_source values as sh_upsell_added.\n  function blockSource() {\n    return variationOn() ? 'variation' : 'control';\n  }\n\n  function blockVariantIds(scope) {\n    return Array.prototype.map.call(scope.querySelectorAll('.sh-upsell-block'), function (block) {\n      return block.getAttribute('data-variant-id') || '';\n    }).filter(Boolean);\n  }\n\n  // sh_upsell_view in control: the block stays in view for 1 second (40% of\n  // it, or 40% of the screen height for a tall block). Once per block per\n  // page load. The wait skips the short flicker when a variation hides the\n  // block right after load: a hidden block leaves the observer, which stops\n  // the timer, and the variation is checked again when the timer ends.\n  // In the variation the goal fires when the popup opens instead\n  // (upsell_source popup), so the block is not tracked there.\n  var UPSELL_VIEW_DWELL = 1000;\n\n  function blockReallyVisible(host) {\n    if (!host.isConnected || !host.getClientRects().length) return false;\n    var style = window.getComputedStyle(host);\n    return style.visibility !== 'hidden' && style.display !== 'none' && Number(style.opacity) > 0;\n  }\n\n  function watchUpsellViews() {\n    if (!('IntersectionObserver' in window)) return;\n    var seen = new WeakSet();\n    var timers = new WeakMap();\n\n    function stopTimer(host) {\n      var timer = timers.get(host);\n      if (timer) window.clearTimeout(timer);\n      timers.delete(host);\n    }\n\n    var observer = new IntersectionObserver(function (entries) {\n      entries.forEach(function (entry) {\n        var host = entry.target;\n        if (seen.has(host)) return;\n        var enough = entry.isIntersecting && (entry.intersectionRatio >= 0.4 || entry.intersectionRect.height >= window.innerHeight * 0.4);\n        if (!enough) {\n          stopTimer(host);\n          return;\n        }\n        if (timers.has(host)) return;\n        timers.set(host, window.setTimeout(function () {\n          timers.delete(host);\n          if (seen.has(host) || variationOn() || !blockReallyVisible(host)) return;\n          var ids = blockVariantIds(host);\n          if (!ids.length) return;\n          seen.add(host);\n          observer.unobserve(host);\n          trackGoal('sh_upsell_view', {\n            upsell_source: 'control',\n            upsell_variant_ids: ids.join(','),\n            upsell_count: ids.length\n          });\n        }, UPSELL_VIEW_DWELL));\n      });\n    }, { threshold: [0, 0.2, 0.4, 0.6, 0.8, 1] });\n\n    var tries = 0;\n    var timer = window.setInterval(function () {\n      tries += 1;\n      document.querySelectorAll('sh-upsell').forEach(function (host) {\n        if (host.getAttribute('data-sh-atc-watched') || !host.querySelector('.sh-upsell-block')) return;\n        host.setAttribute('data-sh-atc-watched', '1');\n        observer.observe(host);\n      });\n      if (tries >= 40) window.clearInterval(timer);\n    }, 250);\n  }\n\n  // sh_upsell_click: an upsell in the block was clicked (selected or\n  // deselected, upsell_selected tells which).\n  document.addEventListener('click', function (event) {\n    var content = event.target && event.target.closest && event.target.closest('sh-upsell .sh-upsell-block-content');\n    if (!content) return;\n    var block = content.closest('.sh-upsell-block');\n    var id = block && block.getAttribute('data-variant-id');\n    if (!id) return;\n    window.setTimeout(function () {\n      trackGoal('sh_upsell_click', {\n        upsell_source: blockSource(),\n        upsell_variant_ids: id,\n        upsell_count: 1,\n        upsell_selected: content.getAttribute('aria-checked') === 'true'\n      });\n    }, 50);\n  });\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', watchUpsellViews);\n  else watchUpsellViews();\n\n  // Runs in control and variation. The Section Heroes app fires this when\n  // upsells picked in the sh-upsell block go into the cart with the product.\n  // It also fires with no items, and can fire twice for one add (form sync,\n  // then fetch), so empty lists and repeats within 3 seconds are skipped.\n  var lastBlockUpsell = { key: '', at: 0 };\n\n  document.addEventListener('sectionheroes:upsell:added', function (event) {\n    var items = (event.detail && event.detail.items) || [];\n    var ids = items.map(function (item) { return String(item.id || ''); }).filter(Boolean);\n    if (!ids.length) return;\n    var key = ids.join(',');\n    var now = Date.now();\n    if (key === lastBlockUpsell.key && now - lastBlockUpsell.at < 3000) return;\n    lastBlockUpsell = { key: key, at: now };\n    trackUpsellAdded(variationOn() ? 'variation' : 'control', ids);\n  });\n\n  if (variationOn()) bootVariation();\n\n  if (variationOn()) {\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', prewarm);\n    else prewarm();\n  }\n\n  if (variationOn() && new URLSearchParams(window.location.search).get('sh_atc_preview') === '1') {\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', openPreview);\n    } else {\n      openPreview();\n    }\n  }\n\n  function cartCount() {\n    return Number(countEl && countEl.textContent) || 0;\n  }\n})();\n"],
  "mappings": "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",
  "names": ["timer"]
}
