{
  "version": 3,
  "sources": ["/cdn/shop/t/38/assets/product-add-to-cart.js?cachebust=2"],
  "sourcesContent": ["document.addEventListener('DOMContentLoaded', function() {\n  const addToCartForms = document.querySelectorAll('form[action=\"/cart/add\"]');\n\n  addToCartForms.forEach(form => {\n    form.addEventListener('submit', function(e) {\n      e.preventDefault();\n\n    const submitButton = form.querySelector('input[type=\"submit\"]');\n      var fosIsMobile = window.innerWidth < 750;\n      var fosStart = Date.now();\n      submitButton.disabled = true;\n      submitButton.dataset.originalValue = submitButton.dataset.originalValue || submitButton.value;\n      if (fosIsMobile) {\n        submitButton.classList.add('fos-is-loading');\n      } else {\n        submitButton.value = 'adding...';\n      }\n\n      fetch('/cart/add.js', {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n        },\n        body: JSON.stringify({\n          items: [{\n            id: form.querySelector('input[name=\"id\"]').value,\n            quantity: 1,\n            properties: (window.productPageSingleVariantIds && window.productPageSingleVariantIds.indexOf(parseInt(form.querySelector('input[name=\"id\"]').value, 10)) !== -1)\n              ? { '_unit': Date.now() + '_' + Math.random().toString(36).slice(2, 8) }\n              : undefined\n          }]\n        })\n      })\n      .then(response => response.json())\n      .then(data => {\n        if (data.status === 422) {\n          throw new Error(data.description);\n        }\n        \n        // After successful add, fetch the updated cart\n        return fetch('/cart.js');\n      })\n            .then(response => response.json())\n            .then(cart => new Promise(resolve => setTimeout(() => resolve(cart), fosIsMobile ? Math.max(0, 800 - (Date.now() - fosStart)) : 0)))\n            .then(cart => {\n              if (fosIsMobile) submitButton.classList.remove('fos-is-loading');\n        // Dispatch our custom event with the cart data\n        document.dispatchEvent(new CustomEvent('cart:change', { \n          detail: cart \n        }));\n        \n        if (window.updateCart) {\n          window.updateCart();\n        }\n\n          if (submitButton && !fosIsMobile) {\n          var originalLabel = submitButton.dataset.originalValue || submitButton.value;\n          submitButton.dataset.originalValue = originalLabel;\n          submitButton.value = 'added!';\n          clearTimeout(submitButton._addedTimeout);\n          submitButton._addedTimeout = setTimeout(function () {\n            submitButton.value = submitButton.dataset.originalValue;\n          }, 1500);\n        }  \n      })\n      .catch(error => {\n        submitButton.classList.remove('fos-is-loading');\n        console.error('Error:', error);\n        const productTitleEl = document.querySelector('.product-title');\n        const productTitle = productTitleEl ? productTitleEl.innerText.replace(/\\s+/g, ' ').trim() : '';\n        const variantOptions = Array.from(form.querySelectorAll('.variant-select')).map(select => select.value).join(' / ');\n        \n        // Create and show popup message\n        const popup = document.createElement('div');\n        popup.className = 'cart-popup-message';\n        popup.innerHTML = `\n          <div class=\"cart-popup-content\">\n          <p>Sorry, ${productTitle} ${variantOptions}<br>is no longer available.</p>\n            <button onclick=\"this.parentElement.parentElement.remove()\">OK</button>\n          </div>\n        `;\n        document.body.appendChild(popup);\n        \n        // Add styles for the popup (inject once, reuse on subsequent failures)\n        if (!document.getElementById('cart-popup-message-styles')) {\n          const style = document.createElement('style');\n          style.id = 'cart-popup-message-styles';\n          style.textContent = `\n          .cart-popup-message {\n            position: fixed;\n            top: 0;\n            left: 0;\n            right: 0;\n            bottom: 0;\n            background: rgba(0,0,0,0.5);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            z-index: 9999;\n          }\n            .cart-popup-content {\n            background: white;\n            padding: 20px;\n            border-radius: 4px;\n            text-align: center;\n            max-width: 90%;\n            width: 400px;\n            font-family: \"Uni Sans Heavy\", sans-serif !important;\n          }\n          .cart-popup-content p {\n            font-family: \"Uni Sans Heavy\", sans-serif !important;\n          }\n          .cart-popup-content button {\n            margin-top: 15px;\n            padding: 8px 20px;\n            background: #000;\n            color: white;\n            border: none;\n            border-radius: 4px;\n            cursor: pointer;\n          }\n          .cart-popup-content button:hover {\n            opacity: 0.9;\n          }\n        `;\n          document.head.appendChild(style);\n        }\n      })\n      .finally(() => {\n        submitButton.disabled = false;\n      });\n    });\n  });\n\n  // Handle variant changes\n  const variantSelectors = document.querySelectorAll('.variant-select');\n  if (variantSelectors.length) {\n    variantSelectors.forEach(selector => {\n      selector.addEventListener('change', function() {\n        const form = this.closest('form');\n        const selectedOptions = Array.from(variantSelectors).map(select => select.value);\n        \n        // Find the variant that matches all selected options\n        const variant = window.product.variants.find(variant => {\n          return JSON.stringify(variant.options) === JSON.stringify(selectedOptions);\n        });\n\n        if (variant) {\n          // Update the hidden input\n          form.querySelector('input[name=\"id\"]').value = variant.id;\n          \n          // Update price\n          const priceElement = document.querySelector('.current-price');\n          if (priceElement) {\n            priceElement.textContent = formatMoney(variant.price);\n          }\n\n          // Update availability\n          const submitButton = form.querySelector('input[type=\"submit\"]');\n          if (submitButton) {\n            submitButton.disabled = !variant.available;\n            submitButton.value = variant.available ? \n              'add to cart' : \n              'sold out';\n          }\n        }\n      });\n    });\n  }\n});\n\n// Helper function to format money\nfunction formatMoney(cents) {\n  // Get the store's money format from Shopify settings\n  const moneyFormat = window.theme && window.theme.moneyFormat ? window.theme.moneyFormat : \"{{ shop.money_format }}\";\n  \n  // Use Shopify's money formatting\n  if (typeof Shopify !== 'undefined' && Shopify.formatMoney) {\n    return Shopify.formatMoney(cents, moneyFormat);\n  }\n  \n  // Fallback if Shopify.formatMoney is not available\n  return (cents/100).toLocaleString(Shopify.locale || 'en-US', {\n    style: 'currency',\n    currency: Shopify.currency ? Shopify.currency.active : 'USD'\n  });\n}"],
  "mappings": "AAAA,SAAS,iBAAiB,mBAAoB,UAAW,CAChC,SAAS,iBAAiB,0BAA0B,EAE5D,QAAQ,MAAQ,CAC7B,KAAK,iBAAiB,SAAU,SAAS,EAAG,CAC1C,EAAE,eAAe,EAEnB,MAAM,aAAe,KAAK,cAAc,sBAAsB,EAC5D,IAAI,YAAc,OAAO,WAAa,IAClC,SAAW,KAAK,IAAI,EACxB,aAAa,SAAW,GACxB,aAAa,QAAQ,cAAgB,aAAa,QAAQ,eAAiB,aAAa,MACpF,YACF,aAAa,UAAU,IAAI,gBAAgB,EAE3C,aAAa,MAAQ,YAGvB,MAAM,eAAgB,CACpB,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CACnB,MAAO,CAAC,CACN,GAAI,KAAK,cAAc,kBAAkB,EAAE,MAC3C,SAAU,EACV,WAAa,OAAO,6BAA+B,OAAO,4BAA4B,QAAQ,SAAS,KAAK,cAAc,kBAAkB,EAAE,MAAO,EAAE,CAAC,IAAM,GAC1J,CAAE,MAAS,KAAK,IAAI,EAAI,IAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAG,CAAC,CAAE,EACrE,MACN,CAAC,CACH,CAAC,CACH,CAAC,EACA,KAAK,UAAY,SAAS,KAAK,CAAC,EAChC,KAAK,MAAQ,CACZ,GAAI,KAAK,SAAW,IAClB,MAAM,IAAI,MAAM,KAAK,WAAW,EAIlC,OAAO,MAAM,UAAU,CACzB,CAAC,EACM,KAAK,UAAY,SAAS,KAAK,CAAC,EAChC,KAAK,MAAQ,IAAI,QAAQ,SAAW,WAAW,IAAM,QAAQ,IAAI,EAAG,YAAc,KAAK,IAAI,EAAG,KAAO,KAAK,IAAI,EAAI,SAAS,EAAI,CAAC,CAAC,CAAC,EAClI,KAAK,MAAQ,CAWhB,GAVQ,aAAa,aAAa,UAAU,OAAO,gBAAgB,EAErE,SAAS,cAAc,IAAI,YAAY,cAAe,CACpD,OAAQ,IACV,CAAC,CAAC,EAEE,OAAO,YACT,OAAO,WAAW,EAGd,cAAgB,CAAC,YAAa,CAClC,IAAI,cAAgB,aAAa,QAAQ,eAAiB,aAAa,MACvE,aAAa,QAAQ,cAAgB,cACrC,aAAa,MAAQ,SACrB,aAAa,aAAa,aAAa,EACvC,aAAa,cAAgB,WAAW,UAAY,CAClD,aAAa,MAAQ,aAAa,QAAQ,aAC5C,EAAG,IAAI,CACT,CACF,CAAC,EACA,MAAM,OAAS,CACd,aAAa,UAAU,OAAO,gBAAgB,EAC9C,QAAQ,MAAM,SAAU,KAAK,EAC7B,MAAM,eAAiB,SAAS,cAAc,gBAAgB,EACxD,aAAe,eAAiB,eAAe,UAAU,QAAQ,OAAQ,GAAG,EAAE,KAAK,EAAI,GACvF,eAAiB,MAAM,KAAK,KAAK,iBAAiB,iBAAiB,CAAC,EAAE,IAAI,QAAU,OAAO,KAAK,EAAE,KAAK,KAAK,EAG5G,MAAQ,SAAS,cAAc,KAAK,EAW1C,GAVA,MAAM,UAAY,qBAClB,MAAM,UAAY;AAAA;AAAA,sBAEJ,YAAY,IAAI,cAAc;AAAA;AAAA;AAAA,UAI5C,SAAS,KAAK,YAAY,KAAK,EAG3B,CAAC,SAAS,eAAe,2BAA2B,EAAG,CACzD,MAAM,MAAQ,SAAS,cAAc,OAAO,EAC5C,MAAM,GAAK,4BACX,MAAM,YAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAsCpB,SAAS,KAAK,YAAY,KAAK,CACjC,CACF,CAAC,EACA,QAAQ,IAAM,CACb,aAAa,SAAW,EAC1B,CAAC,CACH,CAAC,CACH,CAAC,EAGD,MAAM,iBAAmB,SAAS,iBAAiB,iBAAiB,EAChE,iBAAiB,QACnB,iBAAiB,QAAQ,UAAY,CACnC,SAAS,iBAAiB,SAAU,UAAW,CAC7C,MAAM,KAAO,KAAK,QAAQ,MAAM,EAC1B,gBAAkB,MAAM,KAAK,gBAAgB,EAAE,IAAI,QAAU,OAAO,KAAK,EAGzE,QAAU,OAAO,QAAQ,SAAS,KAAKA,UACpC,KAAK,UAAUA,SAAQ,OAAO,IAAM,KAAK,UAAU,eAAe,CAC1E,EAED,GAAI,QAAS,CAEX,KAAK,cAAc,kBAAkB,EAAE,MAAQ,QAAQ,GAGvD,MAAM,aAAe,SAAS,cAAc,gBAAgB,EACxD,eACF,aAAa,YAAc,YAAY,QAAQ,KAAK,GAItD,MAAM,aAAe,KAAK,cAAc,sBAAsB,EAC1D,eACF,aAAa,SAAW,CAAC,QAAQ,UACjC,aAAa,MAAQ,QAAQ,UAC3B,cACA,WAEN,CACF,CAAC,CACH,CAAC,CAEL,CAAC,EAGD,SAAS,YAAY,MAAO,CAE1B,MAAM,YAAc,OAAO,OAAS,OAAO,MAAM,YAAc,OAAO,MAAM,YAAc,0BAG1F,OAAI,OAAO,QAAY,KAAe,QAAQ,YACrC,QAAQ,YAAY,MAAO,WAAW,GAIvC,MAAM,KAAK,eAAe,QAAQ,QAAU,QAAS,CAC3D,MAAO,WACP,SAAU,QAAQ,SAAW,QAAQ,SAAS,OAAS,KACzD,CAAC,CACH",
  "names": ["variant"]
}
