{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/gp-cart-integration.js"],
  "sourcesContent": ["/**\n * GemPages & Smart Cart Drawer integration (V16)\n * -----------------------------------------------\n * Loaded once from the theme asset. No need for GemPages custom code blocks.\n *\n * 1. Intercepts GemPages/theme add-to-cart buttons.\n * 2. Adds subscription selling_plan when the pricing toggle is enabled.\n * 3. Uses Smart Cart Drawer Upsell's window.themeCartDrawer API when available.\n * 4. Keeps the clean iframe fetch bridge for Numod/Ghost fetch patch issues.\n * 5. Manages pricing toggle state across page navigation (localStorage).\n */\n(function () {\n    if (window._calmipetV16Active) return;\n    window._calmipetV16Active = true;\n\n    var DEBUG = false;\n\n    function debugWarn() {\n        if (!DEBUG || !window.console || !console.warn) return;\n        try {\n            console.warn.apply(console, arguments);\n        } catch (e) {}\n    }\n\n    var SELLING_PLAN_ID = '692178714995';\n    var TOGGLE_SELECTOR = '#pricingToggle';\n    var ONE_TIME_SECTION_SELECTOR = '.grySPeG_VT';\n    var SUBSCRIBE_SECTION_SELECTOR = '.gi_ryc1Smb';\n    var _normalizedPath = (window.location.pathname || '').replace(/\\/+$/, '') || '/';\n    var TOGGLE_STORAGE_KEY = 'calmipet_toggle_v2_' + _normalizedPath;\n    var SUB_VARIANT_IDS = ['62543605203315', '62543605236083', '62543605268851'];\n    var ONE_TIME_TO_SUB_VARIANT_ID = {\n        '62119469023603': '62543605203315',\n        '62119469056371': '62543605236083',\n        '62119469089139': '62543605268851'\n    };\n    var SMART_CART_TIMEOUT = 3000;\n    var SMART_CART_ACTION_TIMEOUT = 4500;\n    var CART_REQUEST_TIMEOUT = 9000;\n    var CLEAN_FETCH_TIMEOUT = 1500;\n    var KACHING_TRIGGER_READY_TIMEOUT = 4500;\n    var KACHING_TRIGGER_TIMEOUT = 6500;\n    var CART_DRAWER_INTERNAL_HEADER = 'X-Cart-Drawer-Source';\n    var CHECKOUT_RETURN_MARKER_KEY = 'calmipet_checkout_bridge_return_pending_v1';\n    var META_PIXEL_ID = '1937618546905939';\n    var _preferDirectCartAdd = false;\n    var _upsellProductCache = {};\n    var _kachingCheckoutBridge = {\n        armed: false,\n        redirecting: false,\n        listenersBound: false,\n        timeoutId: null,\n        expiresAt: 0\n    };\n\n    function withTimeout(promise, timeout, label) {\n        var timeoutId;\n        return new Promise(function (resolve, reject) {\n            timeoutId = setTimeout(function () {\n                reject(new Error((label || 'Async task') + ' timed out'));\n            }, timeout);\n            Promise.resolve(promise).then(function (value) {\n                clearTimeout(timeoutId);\n                resolve(value);\n            }).catch(function (err) {\n                clearTimeout(timeoutId);\n                reject(err);\n            });\n        });\n    }\n\n    function resetCleanFetch() {\n        var currentIframe = document.getElementById('__cleanFetch');\n        if (currentIframe && currentIframe.parentNode) {\n            currentIframe.parentNode.removeChild(currentIframe);\n        }\n    }\n\n    // ---- CLEAN FETCH BRIDGE (Ghost Patcher Bypass) ----\n    function getFetch() {\n        return new Promise(function (resolve) {\n            var done = false;\n            var fallbackTimer = setTimeout(function () {\n                if (done) return;\n                done = true;\n                resolve(window.fetch.bind(window));\n            }, CLEAN_FETCH_TIMEOUT);\n\n            function finish(fetchFn) {\n                if (done) return;\n                done = true;\n                clearTimeout(fallbackTimer);\n                resolve(fetchFn);\n            }\n\n            var check = function () {\n                if (done) return;\n                var mountTarget = document.body || document.documentElement;\n                if (!mountTarget) {\n                    setTimeout(check, 100);\n                    return;\n                }\n\n                var currentIframe = document.getElementById('__cleanFetch');\n                if (!currentIframe || !currentIframe.contentWindow) {\n                    if (currentIframe && currentIframe.parentNode) currentIframe.parentNode.removeChild(currentIframe);\n                    currentIframe = document.createElement('iframe');\n                    currentIframe.id = '__cleanFetch';\n                    currentIframe.style.display = 'none';\n                    mountTarget.appendChild(currentIframe);\n                }\n\n                if (currentIframe.contentWindow && currentIframe.contentWindow.fetch) {\n                    finish(currentIframe.contentWindow.fetch.bind(currentIframe.contentWindow));\n                } else {\n                    setTimeout(check, 100);\n                }\n            };\n            check();\n        });\n    }\n\n    async function fetchWithTimeout(fetchFn, url, options, timeout, label) {\n        options = Object.assign({}, options || {});\n        var controller = typeof AbortController !== 'undefined' ? new AbortController() : null;\n        var abortTimer = null;\n        if (controller) {\n            options.signal = controller.signal;\n            abortTimer = setTimeout(function () {\n                try { controller.abort(); } catch (e) { /* already settled */ }\n            }, timeout);\n        }\n        try {\n            return await withTimeout(fetchFn(url, options), timeout + 500, label || 'Cart request');\n        } finally {\n            if (abortTimer) clearTimeout(abortTimer);\n        }\n    }\n\n    // ---- GLOBAL FETCH PROXY KALDIRILDI ----\n    // npix passive hooks modunda \u00E7al\u0131\u015F\u0131yor (ask\u0131ya alm\u0131yor), SCD da kendi\n    // wrapper'\u0131n\u0131 koymu\u015F. Proxy kurmak SCD'nin fetch interceptor zincirini\n    // bozuyor ve sayfa a\u00E7\u0131l\u0131\u015F\u0131nda drawer'\u0131 tetikliyor olabilir.\n    //\n    // window.fetch'e dokunmuyoruz. Clean fetch sadece BUY NOW ak\u0131\u015F\u0131nda,\n    // do\u011Frudan getFetch() \u00FCzerinden manuel kullan\u0131l\u0131r.\n\n    function isSmartCartAvailable() {\n        return !!(window.themeCartDrawer && typeof window.themeCartDrawer.open === 'function');\n    }\n\n    function hasSmartCartEmbed() {\n        return !!(\n            document.querySelector('[data-cart-drawer-auto-init]') ||\n            document.getElementById('cart-drawer-container') ||\n            document.getElementById('cart-drawer-shadow-host') ||\n            window.CartDrawerConfig\n        );\n    }\n\n    function waitForSmartCart(timeout) {\n        timeout = typeof timeout === 'number' ? timeout : SMART_CART_TIMEOUT;\n        return new Promise(function (resolve) {\n            if (isSmartCartAvailable()) {\n                resolve(window.themeCartDrawer);\n                return;\n            }\n            var startedAt = Date.now();\n            var timer = setInterval(function () {\n                if (isSmartCartAvailable()) {\n                    clearInterval(timer);\n                    resolve(window.themeCartDrawer);\n                    return;\n                }\n                if (Date.now() - startedAt >= timeout) {\n                    clearInterval(timer);\n                    resolve(null);\n                }\n            }, 50);\n        });\n    }\n\n    function getQuantity(form) {\n        var input = form && form.querySelector('input[name=\"quantity\"], select[name=\"quantity\"]');\n        var qty = input && input.value ? parseInt(input.value, 10) : 1;\n        return Number.isFinite(qty) && qty > 0 ? qty : 1;\n    }\n\n    function getLineItemProperties(form) {\n        var properties = {};\n        if (!form) return properties;\n        var fields = form.querySelectorAll('[name^=\"properties[\"]');\n        fields.forEach(function (field) {\n            var match = field.name.match(/^properties\\[(.+)\\]$/);\n            if (!match || field.disabled) return;\n            if ((field.type === 'checkbox' || field.type === 'radio') && !field.checked) return;\n            if (field.value == null || field.value === '') return;\n            properties[match[1]] = field.value;\n        });\n        return properties;\n    }\n\n    function isSubscriptionSelected() {\n        return !!document.querySelector(TOGGLE_SELECTOR + ':checked');\n    }\n\n    // ---- TOGGLE STATE PERSISTENCE & SECTION VISIBILITY ----\n    var _toggleRestoreInProgress = false;\n    var _toggleObserver = null;\n    var _toggleObserverDebounce = null;\n    var _lastBoundToggle = null;\n\n    function saveToggleState() {\n        try {\n            var toggle = document.querySelector(TOGGLE_SELECTOR);\n            if (!toggle) return;\n            if (_toggleRestoreInProgress) return;\n            localStorage.setItem(TOGGLE_STORAGE_KEY, toggle.checked ? '1' : '0');\n        } catch (e) { /* private mode / quota */ }\n    }\n\n    function applyToggleSections(isSubscribed) {\n        var oneTimeSections = document.querySelectorAll(ONE_TIME_SECTION_SELECTOR);\n        var subscribeSections = document.querySelectorAll(SUBSCRIBE_SECTION_SELECTOR);\n        if (!oneTimeSections.length && !subscribeSections.length) return;\n\n        var toHide = isSubscribed ? oneTimeSections : subscribeSections;\n        var toShow = isSubscribed ? subscribeSections : oneTimeSections;\n\n        toHide.forEach(function (el) {\n            el.classList.add('gp-toggle-hidden');\n            el.classList.remove('gp-toggle-fade-in');\n        });\n\n        toShow.forEach(function (el) {\n            el.classList.remove('gp-toggle-hidden');\n            if (el.style && el.style.display === 'none') el.style.display = '';\n            el.classList.remove('gp-toggle-fade-in');\n            void el.offsetWidth;\n            el.classList.add('gp-toggle-fade-in');\n        });\n    }\n\n    function restoreAndApplyToggle(toggle) {\n        if (!toggle) toggle = document.querySelector(TOGGLE_SELECTOR);\n        if (!toggle) return;\n\n        try {\n            var saved = localStorage.getItem(TOGGLE_STORAGE_KEY);\n            if (saved !== null) {\n                var shouldCheck = saved === '1';\n                if (toggle.checked !== shouldCheck) {\n                    _toggleRestoreInProgress = true;\n                    toggle.checked = shouldCheck;\n                    // change/input event DISPATCH ETM\u0130YORUZ \u2014 ba\u015Fka bundle'lar\u0131\n                    // tetikleyip drawer a\u00E7ma riski var. Section visibility'yi\n                    // do\u011Frudan applyToggleSections ile zaten uyguluyoruz.\n                    setTimeout(function () { _toggleRestoreInProgress = false; }, 50);\n                }\n            }\n        } catch (e) { /* private mode */ }\n\n        applyToggleSections(toggle.checked);\n    }\n\n    document.addEventListener('change', function (e) {\n        if (e.target && e.target.matches && e.target.matches(TOGGLE_SELECTOR)) {\n            _preferDirectCartAdd = true;\n            resetLoadingButtons();\n            resetCleanFetch();\n            if (!_toggleRestoreInProgress) {\n                saveToggleState();\n            }\n            applyToggleSections(e.target.checked);\n        }\n    }, false);\n\n    function initToggleSections() {\n        var toggle = document.querySelector(TOGGLE_SELECTOR);\n        if (toggle && toggle !== _lastBoundToggle) {\n            _lastBoundToggle = toggle;\n            restoreAndApplyToggle(toggle);\n        }\n\n        if (_toggleObserver) return;\n        var observeTarget = document.body || document.documentElement;\n        if (!observeTarget) return;\n\n        _toggleObserver = new MutationObserver(function () {\n            if (_toggleObserverDebounce) return;\n            _toggleObserverDebounce = setTimeout(function () {\n                _toggleObserverDebounce = null;\n                var current = document.querySelector(TOGGLE_SELECTOR);\n                if (current && current !== _lastBoundToggle) {\n                    _lastBoundToggle = current;\n                    restoreAndApplyToggle(current);\n                }\n            }, 100);\n        });\n        _toggleObserver.observe(observeTarget, { childList: true, subtree: true });\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initToggleSections, { once: true });\n    } else {\n        initToggleSections();\n    }\n\n    function normalizeVariantIdForSelection(variantId) {\n        var id = String(variantId);\n        if (isSubscriptionSelected() && ONE_TIME_TO_SUB_VARIANT_ID[id]) {\n            return ONE_TIME_TO_SUB_VARIANT_ID[id];\n        }\n        return id;\n    }\n\n    function shouldApplySellingPlan(variantId) {\n        return SUB_VARIANT_IDS.indexOf(String(variantId)) !== -1;\n    }\n\n    function buildAddPayload(variantId, quantity, properties) {\n        var selectedVariantId = normalizeVariantIdForSelection(variantId);\n        var payload = {\n            id: parseInt(selectedVariantId, 10),\n            quantity: quantity || 1\n        };\n        if (properties && Object.keys(properties).length > 0) {\n            payload.properties = properties;\n        }\n        if (shouldApplySellingPlan(selectedVariantId)) {\n            payload.selling_plan = parseInt(SELLING_PLAN_ID, 10);\n        }\n        return payload;\n    }\n\n    function normalizeText(value) {\n        return String(value || '').replace(/\\s+/g, ' ').trim().toLowerCase();\n    }\n\n    function sleep(ms) {\n        return new Promise(function (resolve) {\n            setTimeout(resolve, ms);\n        });\n    }\n\n    function isElementNode(node) {\n        return !!(node && node.nodeType === 1);\n    }\n\n    function getElementLabel(el) {\n        if (!el) return '';\n        return normalizeText(\n            (el.innerText || el.textContent || '') + ' ' +\n            (el.getAttribute && (\n                el.getAttribute('aria-label') ||\n                el.getAttribute('name') ||\n                el.getAttribute('value') ||\n                ''\n            ) || '')\n        );\n    }\n\n    function isCheckoutUrl(value) {\n        if (!value) return false;\n        try {\n            var url = new URL(value, window.location.origin);\n            return url.pathname === '/checkout' || url.pathname.indexOf('/checkout/') === 0;\n        } catch (e) {\n            return String(value).indexOf('/checkout') !== -1;\n        }\n    }\n\n    function getCartDrawerSettings() {\n        return (window.cartDrawerSettings && window.cartDrawerSettings.upsell) ||\n            (window.cartDrawerSettings && window.cartDrawerSettings.settings && window.cartDrawerSettings.settings.upsell) ||\n            (window.CartDrawerConfig && window.CartDrawerConfig.settings && window.CartDrawerConfig.settings.upsell) ||\n            null;\n    }\n\n    function filterUpsellHandles(handles) {\n        var seen = {};\n        return (Array.isArray(handles) ? handles : []).filter(function (handle) {\n            if (typeof handle !== 'string') return false;\n            handle = handle.trim();\n            if (!handle || seen[handle]) return false;\n            seen[handle] = true;\n            return true;\n        });\n    }\n\n    function getEmbeddedUpsellHandles() {\n        var scripts = document.querySelectorAll('script');\n        for (var i = 0; i < scripts.length; i += 1) {\n            var text = scripts[i].textContent || '';\n            if (text.indexOf('selectedProductHandles') === -1) continue;\n            var match = text.match(/[\"']?selectedProductHandles[\"']?\\s*:\\s*(\\[[^\\]]*\\])/);\n            if (!match) continue;\n            try {\n                var handles = JSON.parse(match[1]);\n                handles = filterUpsellHandles(handles);\n                if (handles.length) return handles;\n            } catch (err) {\n                debugWarn('Upsell handle parse failed:', err);\n            }\n        }\n        return [];\n    }\n\n    function getUpsellHandles() {\n        var settings = getCartDrawerSettings();\n        var handles = settings && Array.isArray(settings.selectedProductHandles) ? settings.selectedProductHandles : [];\n        handles = filterUpsellHandles(handles);\n        return handles.length ? handles : getEmbeddedUpsellHandles();\n    }\n\n    function getAvailableVariant(product) {\n        if (!product || !Array.isArray(product.variants)) return null;\n        return product.variants.find(function (variant) {\n            return variant && (\n                variant.available === true ||\n                variant.availableForSale === true ||\n                (typeof variant.inventoryQuantity === 'number' && variant.inventoryQuantity > 0) ||\n                (typeof variant.inventory_quantity === 'number' && variant.inventory_quantity > 0)\n            );\n        }) || product.variants[0] || null;\n    }\n\n    async function fetchUpsellProduct(fetchFn, handle) {\n        if (!handle) return null;\n        if (_upsellProductCache[handle]) return _upsellProductCache[handle];\n        try {\n            var res = await fetchWithTimeout(fetchFn || window.fetch.bind(window), window.location.origin + '/products/' + encodeURIComponent(handle) + '.js?_=' + Date.now(), {\n                method: 'GET',\n                headers: { 'Accept': 'application/json' }\n            }, CART_REQUEST_TIMEOUT, 'Upsell product fetch');\n            if (!res.ok) return null;\n            var product = await withTimeout(res.json(), 2000, 'Upsell product JSON');\n            if (product && Array.isArray(product.variants)) {\n                _upsellProductCache[handle] = product;\n                return product;\n            }\n        } catch (err) {\n            debugWarn('Upsell product fetch failed:', err);\n        }\n        return null;\n    }\n\n    async function resolveUpsellVariant(button, fetchFn) {\n        if (!button) return null;\n        var directId = button.getAttribute('data-variant-id') || button.getAttribute('data-product-variant');\n        if (directId) return directId;\n\n        var card = button.closest('.upsell-product-card') || button.closest('.upsell-carousel-container');\n        var title = card && card.querySelector ? normalizeText((card.querySelector('.upsell-product-title') || {}).textContent) : '';\n        var handles = getUpsellHandles();\n        var fallbackVariant = null;\n\n        for (var i = 0; i < handles.length; i += 1) {\n            var product = await fetchUpsellProduct(fetchFn, handles[i]);\n            var variant = getAvailableVariant(product);\n            if (!variant) continue;\n            if (!fallbackVariant) fallbackVariant = variant;\n            if (title && normalizeText(product.title) === title) return variant.id;\n        }\n\n        return fallbackVariant && fallbackVariant.id ? fallbackVariant.id : null;\n    }\n\n    function getSmartCartUpsellButton(event) {\n        var path = event && typeof event.composedPath === 'function' ? event.composedPath() : [];\n        var insideDrawer = false;\n        var button = null;\n\n        for (var i = 0; i < path.length; i += 1) {\n            var node = path[i];\n            if (!node) continue;\n            if (node.id === 'cart-drawer-shadow-host' || node.id === 'cart-drawer-container') insideDrawer = true;\n            if (!button && node.classList && node.classList.contains('upsell-add-button')) button = node;\n        }\n\n        if (!insideDrawer || !button) return null;\n        return button;\n    }\n\n    function getSmartCartCheckoutButton(event) {\n        var path = event && typeof event.composedPath === 'function' ? event.composedPath() : [];\n        var insideDrawer = false;\n        var checkoutButton = null;\n\n        for (var i = 0; i < path.length; i += 1) {\n            var node = path[i];\n            if (!node) continue;\n            if (node.id === 'cart-drawer-shadow-host' || node.id === 'cart-drawer-container') {\n                insideDrawer = true;\n            }\n            if (node.tagName && /cart-drawer/i.test(node.tagName)) {\n                insideDrawer = true;\n            }\n            if (checkoutButton || !isElementNode(node)) continue;\n\n            var tagName = String(node.tagName || '').toLowerCase();\n            var role = node.getAttribute && normalizeText(node.getAttribute('role'));\n            var isInteractive = tagName === 'button' || tagName === 'a' || tagName === 'input' || role === 'button';\n            if (!isInteractive) continue;\n\n            var name = node.getAttribute && normalizeText(node.getAttribute('name'));\n            var href = node.getAttribute && (node.getAttribute('href') || node.href);\n            var label = getElementLabel(node);\n            var hasCheckoutMarker = node.hasAttribute && node.hasAttribute('data-cart-checkout');\n\n            if (\n                name === 'checkout' ||\n                hasCheckoutMarker ||\n                isCheckoutUrl(href) ||\n                /\\b(proceed to checkout|checkout|check out)\\b/i.test(label)\n            ) {\n                checkoutButton = node;\n            }\n        }\n\n        return insideDrawer ? checkoutButton : null;\n    }\n\n    async function addSmartCartUpsellDirect(button) {\n        if (!button || button.disabled || button.getAttribute('data-clm-upsell-loading') === '1') return;\n\n        var originalText = button.textContent;\n        button.setAttribute('data-clm-upsell-loading', '1');\n        button.disabled = true;\n        button.textContent = 'Adding...';\n\n        try {\n            var fetchBridge = await getFetch();\n            var variantId = await resolveUpsellVariant(button, fetchBridge);\n            if (!variantId) throw new Error('Smart Cart upsell variant could not be resolved');\n\n            var payload = buildAddPayload(variantId, 1, { _added_via_upsell: '1' });\n            var headers = {\n                'Content-Type': 'application/json',\n                'Accept': 'application/json'\n            };\n            headers[CART_DRAWER_INTERNAL_HEADER] = 'internal';\n\n            var res = await fetchWithTimeout(fetchBridge, window.location.origin + '/cart/add.js', {\n                method: 'POST',\n                headers: headers,\n                body: JSON.stringify(payload)\n            }, CART_REQUEST_TIMEOUT, 'Upsell cart add');\n\n            if (!res.ok) throw new Error('Smart Cart upsell add failed');\n            var addedItem = await withTimeout(res.json(), 2000, 'Upsell cart add JSON');\n            trackMetaAddToCart(addedItem, variantId, 1);\n            await syncAfterDirectAdd(fetchBridge);\n        } catch (err) {\n            console.error('Smart Cart upsell add failed:', err);\n            scheduleCartOpenRecovery();\n        } finally {\n            button.disabled = false;\n            button.removeAttribute('data-clm-upsell-loading');\n            button.textContent = originalText || 'Add to Cart';\n        }\n    }\n\n    function getCartItemCount(cartData) {\n        if (!cartData) return null;\n        if (typeof cartData.item_count === 'number') {\n            return cartData.item_count;\n        }\n        if (Array.isArray(cartData.items)) {\n            return cartData.items.reduce(function (total, item) {\n                return total + (parseInt(item.quantity, 10) || 0);\n            }, 0);\n        }\n        if (Array.isArray(cartData)) {\n            return cartData.reduce(function (total, item) {\n                return total + (parseInt(item.quantity, 10) || 0);\n            }, 0);\n        }\n        return null;\n    }\n\n    function isFullCartPayload(cartData) {\n        return !!(cartData && typeof cartData.item_count === 'number' && Array.isArray(cartData.items));\n    }\n\n    function setCartIconCount(count) {\n        count = Math.max(0, parseInt(count, 10) || 0);\n        document.querySelectorAll('[data-cart-count]').forEach(function (el) {\n            el.textContent = String(count);\n            el.setAttribute('data-cart-count', String(count));\n        });\n        document.querySelectorAll('.cart-bubble').forEach(function (bubble) {\n            bubble.classList.toggle('visually-hidden', count === 0);\n            bubble.setAttribute('aria-hidden', count === 0 ? 'true' : 'false');\n        });\n        document.querySelectorAll('.cart-bubble__text-count, [data-testid=\"cart-bubble\"]').forEach(function (el) {\n            el.textContent = String(count);\n            el.classList.toggle('hidden', count === 0);\n        });\n        document.querySelectorAll('.cart-bubble__text .visually-hidden').forEach(function (el) {\n            el.textContent = 'Total items in cart: ' + count;\n        });\n        document.querySelectorAll('a.header-actions__action.action__cart, a[href=\"/cart\"][aria-label]').forEach(function (link) {\n            var label = link.getAttribute('aria-label') || 'Cart';\n            label = label.replace(/Total items in cart:\\s*\\d+/i, '').replace(/\\s+/g, ' ').trim();\n            link.setAttribute('aria-label', label + ' Total items in cart: ' + count);\n        });\n    }\n\n    function refreshCartIconCount(cartData) {\n        var count = getCartItemCount(cartData);\n        if (count != null) {\n            setCartIconCount(count);\n            return Promise.resolve(count);\n        }\n        return new Promise(function (resolve) {\n            try {\n                var settled = false;\n                var xhr = new XMLHttpRequest();\n                var timer = setTimeout(function () {\n                    if (settled) return;\n                    settled = true;\n                    try { xhr.abort(); } catch (e) { /* already done */ }\n                    resolve(null);\n                }, CART_REQUEST_TIMEOUT);\n                function finish(value) {\n                    if (settled) return;\n                    settled = true;\n                    clearTimeout(timer);\n                    resolve(value);\n                }\n                xhr.open('GET', '/cart.js?_=' + Date.now(), true);\n                xhr.setRequestHeader('Accept', 'application/json');\n                xhr.onload = function () {\n                    if (xhr.status >= 200 && xhr.status < 300) {\n                        try {\n                            var cart = JSON.parse(xhr.responseText);\n                            count = getCartItemCount(cart);\n                            if (count != null) setCartIconCount(count);\n                            finish(count);\n                        } catch (e) { finish(null); }\n                    } else { finish(null); }\n                };\n                xhr.onerror = function () { finish(null); };\n                xhr.send();\n            } catch (err) {\n                resolve(null);\n            }\n        });\n    }\n\n    function dispatchCartEvents(cartData, source, skipUI) {\n        var isFullCart = isFullCartPayload(cartData);\n        var detail = {\n            resource: cartData,\n            sourceId: 'gp-smart-cart-v16',\n            data: { source: source || 'cart-add', sections: (cartData && cartData.sections) || {} }\n        };\n\n        if (!skipUI && isFullCart) {\n            document.dispatchEvent(new CustomEvent('cart:update', { bubbles: true, detail: detail }));\n            document.dispatchEvent(new CustomEvent('shopify:cart:update', { bubbles: true, detail: { cart: cartData } }));\n            document.dispatchEvent(new CustomEvent('shopify:cart:change', { bubbles: true, detail: { cart: cartData } }));\n            document.dispatchEvent(new CustomEvent('cart:updated', { bubbles: true, detail: { cart: cartData } }));\n            document.documentElement.dispatchEvent(new CustomEvent('cart:refresh', { bubbles: true, detail: { cart: cartData } }));\n        }\n\n        refreshCartIconCount(cartData);\n    }\n\n    function getShopifyCurrency() {\n        return (\n            (window.ShopifyAnalytics && window.ShopifyAnalytics.meta && window.ShopifyAnalytics.meta.currency) ||\n            (window.Shopify && window.Shopify.currency && window.Shopify.currency.active) ||\n            'USD'\n        );\n    }\n\n    function canTrackMarketing() {\n        try {\n            var privacy = window.Shopify && window.Shopify.customerPrivacy;\n            if (!privacy) return true;\n            if (typeof privacy.marketingAllowed === 'function') return privacy.marketingAllowed();\n            if (typeof privacy.userCanBeTracked === 'function') return privacy.userCanBeTracked();\n        } catch (e) {}\n        return true;\n    }\n\n    function toMoneyValue(cents) {\n        var value = Number(cents);\n        if (!Number.isFinite(value) || value <= 0) return null;\n        return Math.round((value / 100) * 100) / 100;\n    }\n\n    function getAddedItemVariantId(addedItem, fallbackVariantId) {\n        return String(\n            (addedItem && (addedItem.variant_id || addedItem.id)) ||\n            fallbackVariantId ||\n            ''\n        );\n    }\n\n    function getAddedItemQuantity(addedItem, fallbackQuantity) {\n        var quantity = parseInt((addedItem && addedItem.quantity) || fallbackQuantity || 1, 10);\n        return Number.isFinite(quantity) && quantity > 0 ? quantity : 1;\n    }\n\n    function getMetaContentId(addedItem, variantId) {\n        var productId = addedItem && addedItem.product_id ? String(addedItem.product_id) : '';\n        var selectedVariantId = variantId ? String(variantId) : '';\n        if (productId && selectedVariantId) return 'shopify_US_' + productId + '_' + selectedVariantId;\n        return selectedVariantId || productId;\n    }\n\n    function getCookieValue(name) {\n        try {\n            var parts = document.cookie ? document.cookie.split(';') : [];\n            for (var i = 0; i < parts.length; i += 1) {\n                var part = parts[i].trim();\n                if (part.indexOf(name + '=') === 0) return decodeURIComponent(part.slice(name.length + 1));\n            }\n        } catch (e) {}\n        return '';\n    }\n\n    function appendMetaParam(params, key, value) {\n        if (value == null || value === '') return;\n        params.append(key, String(value));\n    }\n\n    function sendMetaAddToCartBeacon(payload, eventId) {\n        if (!META_PIXEL_ID || !canTrackMarketing()) return;\n\n        try {\n            var params = new URLSearchParams();\n            appendMetaParam(params, 'id', META_PIXEL_ID);\n            appendMetaParam(params, 'ev', 'AddToCart');\n            appendMetaParam(params, 'dl', window.location.href);\n            appendMetaParam(params, 'rl', document.referrer || '');\n            appendMetaParam(params, 'if', 'false');\n            appendMetaParam(params, 'ts', Date.now());\n            appendMetaParam(params, 'v', '2.9');\n            appendMetaParam(params, 'r', 'stable');\n            appendMetaParam(params, 'eid', eventId);\n            appendMetaParam(params, 'fbp', getCookieValue('_fbp'));\n            appendMetaParam(params, 'fbc', getCookieValue('_fbc'));\n            appendMetaParam(params, 'cd[content_type]', payload.content_type);\n            appendMetaParam(params, 'cd[content_ids]', JSON.stringify(payload.content_ids || []));\n            appendMetaParam(params, 'cd[contents]', JSON.stringify(payload.contents || []));\n            appendMetaParam(params, 'cd[currency]', payload.currency);\n            appendMetaParam(params, 'cd[value]', payload.value);\n            appendMetaParam(params, 'cd[content_name]', payload.content_name);\n\n            var beacon = new Image();\n            window._calmipetMetaBeaconImages = window._calmipetMetaBeaconImages || [];\n            window._calmipetMetaBeaconImages.push(beacon);\n            beacon.src = 'https://www.facebook.com/tr/?' + params.toString();\n            window._calmipetLastMetaAddToCartBeacon = beacon.src;\n        } catch (err) {\n            debugWarn('Meta AddToCart beacon failed:', err);\n        }\n    }\n\n    function trackMetaAddToCart(addedItem, fallbackVariantId, fallbackQuantity) {\n        var variantId = getAddedItemVariantId(addedItem, fallbackVariantId);\n        var quantity = getAddedItemQuantity(addedItem, fallbackQuantity);\n        var contentId = getMetaContentId(addedItem, variantId);\n        if (!contentId) return;\n\n        var lineValue = toMoneyValue(addedItem && (addedItem.final_line_price || addedItem.line_price));\n        var unitValue = toMoneyValue(addedItem && (addedItem.final_price || addedItem.price));\n        var value = lineValue || (unitValue ? Math.round(unitValue * quantity * 100) / 100 : null);\n        var payload = {\n            content_type: 'product',\n            content_ids: [contentId],\n            contents: [{ id: contentId, quantity: quantity }],\n            currency: getShopifyCurrency()\n        };\n\n        if (value != null) payload.value = value;\n        if (unitValue != null) payload.contents[0].item_price = unitValue;\n        if (addedItem && addedItem.product_title) payload.content_name = addedItem.product_title;\n\n        var eventId = 'clm_atc_' + Date.now() + '_' + Math.random().toString(36).slice(2);\n\n        // 2026-07-23: beacon disabled \u2014 it duplicated the AddToCart already sent by\n        // Shopify's native Facebook & Instagram channel pixel (different event IDs,\n        // so Meta could not dedupe and every ATC counted twice). Cart-drawer sync\n        // behavior below is unchanged.\n        // sendMetaAddToCartBeacon(payload, eventId);\n        document.dispatchEvent(new CustomEvent('calmipet:meta-add-to-cart', {\n            bubbles: true,\n            detail: { eventID: eventId, payload: payload }\n        }));\n    }\n\n    async function fetchFullCart(fetchFn) {\n        try {\n            var selectedFetch = fetchFn || window.fetch.bind(window);\n            var res = await fetchWithTimeout(selectedFetch, window.location.origin + '/cart.js?_=' + Date.now(), {\n                method: 'GET',\n                headers: { 'Accept': 'application/json' }\n            }, CART_REQUEST_TIMEOUT, 'Full cart fetch');\n            if (!res.ok) return null;\n            var cart = await withTimeout(res.json(), 2000, 'Full cart JSON');\n            return isFullCartPayload(cart) ? cart : null;\n        } catch (err) {\n            debugWarn('Full cart fetch failed after add:', err);\n            return null;\n        }\n    }\n\n    async function syncAfterDirectAdd(fetchFn) {\n        var fullCart = await fetchFullCart(fetchFn);\n        if (fullCart) {\n            dispatchCartEvents(fullCart, 'cart-add');\n        } else {\n            refreshCartIconCount();\n        }\n        scheduleCartOpen();\n    }\n\n    function openNativeCartFallback() {\n        var selectors = [\n            '[data-cart-trigger]',\n            '.cart-trigger',\n            '.cart-icon',\n            '.cart-link',\n            '.header__icon--cart',\n            '.header-actions__action[data-open-drawer]',\n            'button[aria-controls=\"cart-drawer\"]',\n            'a[href=\"/cart\"]'\n        ];\n        for (var i = 0; i < selectors.length; i += 1) {\n            var trigger = document.querySelector(selectors[i]);\n            if (trigger) {\n                trigger.click();\n                return true;\n            }\n        }\n        return false;\n    }\n\n    async function syncAndOpenCart() {\n        var drawer = await waitForSmartCart(hasSmartCartEmbed() ? SMART_CART_TIMEOUT : 250);\n        if (drawer) {\n            try {\n                if (typeof drawer.syncWithShopifyCart === 'function') {\n                    await withTimeout(drawer.syncWithShopifyCart(true), SMART_CART_ACTION_TIMEOUT, 'Smart Cart sync');\n                }\n            } catch (err) {\n                debugWarn('Smart Cart sync failed before open:', err);\n            }\n            try {\n                drawer.open();\n                return true;\n            } catch (err2) {\n                debugWarn('Smart Cart open failed:', err2);\n            }\n        }\n        return openNativeCartFallback();\n    }\n\n    function isCartDrawerOpen() {\n        if (document.body && document.body.classList.contains('cart-drawer-open')) return true;\n        var host = document.getElementById('cart-drawer-shadow-host');\n        if (!host) return false;\n        try {\n            var root = host.shadowRoot;\n            if (!root) return false;\n            var closeButton = root.querySelector('button[aria-label=\"Close cart\"], .cart-close-btn');\n            if (!closeButton) return false;\n            var rect = closeButton.getBoundingClientRect();\n            var style = window.getComputedStyle(closeButton);\n            return rect.width > 0 && rect.height > 0 &&\n                style.display !== 'none' &&\n                style.visibility !== 'hidden' &&\n                style.opacity !== '0';\n        } catch (e) {\n            return false;\n        }\n    }\n\n    function scheduleCartOpen() {\n        syncAndOpenCart().catch(function (err) {\n            debugWarn('Smart Cart open after add failed:', err);\n        });\n        setTimeout(function () {\n            if (document.visibilityState === 'hidden' || isCartDrawerOpen()) return;\n            syncAndOpenCart().catch(function (err) {\n                debugWarn('Smart Cart retry open after add failed:', err);\n            });\n        }, 700);\n    }\n\n    function scheduleCartOpenRecovery() {\n        refreshCartIconCount();\n        scheduleCartOpen();\n        setTimeout(scheduleCartOpen, 1200);\n    }\n\n    async function addWithSmartCart(variantId, quantity, properties) {\n        if (_preferDirectCartAdd) return null;\n        var drawer = await waitForSmartCart(hasSmartCartEmbed() ? SMART_CART_TIMEOUT : 0);\n        if (!drawer || typeof drawer.addItem !== 'function') return null;\n        var selectedVariantId = normalizeVariantIdForSelection(variantId);\n        if (shouldApplySellingPlan(selectedVariantId)) return null;\n        var numericVariantId = parseInt(selectedVariantId, 10);\n        var drawerVariantId = Number.isFinite(numericVariantId) ? numericVariantId : selectedVariantId;\n        var result;\n        try {\n            result = await withTimeout(\n                drawer.addItem(drawerVariantId, quantity || 1, properties || {}),\n                SMART_CART_ACTION_TIMEOUT,\n                'Smart Cart addItem'\n            );\n        } catch (err) {\n            debugWarn('Smart Cart addItem failed, falling back to direct cart add:', err);\n            return null;\n        }\n        if (result && result.success === false) return null;\n        await refreshCartIconCount();\n        return result || { success: true };\n    }\n\n    async function addWithCleanFetch(variantId, quantity, properties) {\n        try {\n            var fetchBridge = await getFetch();\n            var payload = buildAddPayload(variantId, quantity, properties);\n            var res = await fetchWithTimeout(fetchBridge, window.location.origin + '/cart/add.js', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n                body: JSON.stringify(payload)\n            }, CART_REQUEST_TIMEOUT, 'Clean cart add');\n            if (!res.ok) return null;\n            var data = await withTimeout(res.json(), 2000, 'Clean cart add JSON');\n            await syncAfterDirectAdd(fetchBridge);\n            return data;\n        } catch (err) {\n            debugWarn('Clean cart add failed, falling back to window.fetch:', err);\n            return null;\n        }\n    }\n\n    function resetLoadingButtons() {\n        document.querySelectorAll('button.gp-button-atc[data-state=\"loading\"], button[type=\"submit\"][name=\"add\"][data-state=\"loading\"]').forEach(function (button) {\n            button.setAttribute('data-state', 'idle');\n        });\n        document.querySelectorAll('[data-clm-checkout-loading], [data-clm-upsell-loading]').forEach(function (button) {\n            button.removeAttribute('data-clm-checkout-loading');\n            button.removeAttribute('data-clm-upsell-loading');\n        });\n    }\n\n    function restoreToggleAfterNavigation() {\n        _lastBoundToggle = null;\n        initToggleSections();\n        var attempts = 0;\n        var retry = setInterval(function () {\n            attempts++;\n            var toggle = document.querySelector(TOGGLE_SELECTOR);\n            if (toggle) {\n                _lastBoundToggle = toggle;\n                restoreAndApplyToggle(toggle);\n                clearInterval(retry);\n            } else if (attempts > 30) {\n                clearInterval(retry);\n            }\n        }, 150);\n    }\n\n    function performPageRestoreCleanup(reason) {\n        _preferDirectCartAdd = true;\n        _kachingCheckoutBridge.redirecting = false;\n        disarmKachingCheckoutBridge();\n        resetCleanFetch();\n        resetLoadingButtons();\n        resetKachingPopupAfterReturn();\n        try {\n            if (window.themeCartDrawer && typeof window.themeCartDrawer.close === 'function') {\n                window.themeCartDrawer.close();\n            }\n        } catch (e) { /* drawer may already be gone */ }\n        if (document.body) {\n            document.body.classList.remove('cart-drawer-open');\n        }\n        restoreToggleAfterNavigation();\n        refreshCartIconCount();\n        [160, 700, 1400].forEach(function (delay) {\n            setTimeout(function () {\n                resetLoadingButtons();\n                resetKachingPopupAfterReturn();\n                refreshCartIconCount();\n            }, delay);\n        });\n    }\n\n    function resetKachingPopupAfterReturn() {\n        clearKachingPopupSuppression();\n\n        if (document.body) {\n            document.body.classList.remove('kaching-popup-open');\n        }\n\n        document.querySelectorAll('.kaching-overlay').forEach(function (overlay) {\n            try {\n                overlay.classList.remove('kaching-popup-visible');\n                overlay.style.setProperty('display', 'none', 'important');\n                overlay.style.setProperty('opacity', '0', 'important');\n                overlay.style.setProperty('visibility', 'hidden', 'important');\n                overlay.style.setProperty('pointer-events', 'none', 'important');\n            } catch (e) { /* Kaching may replace the node during restore */ }\n        });\n\n        document.querySelectorAll('.kaching-popup').forEach(function (popup) {\n            try {\n                popup.style.setProperty('opacity', '0', 'important');\n                popup.style.setProperty('visibility', 'hidden', 'important');\n                popup.style.setProperty('pointer-events', 'none', 'important');\n            } catch (e2) { /* Kaching may replace the node during restore */ }\n        });\n\n        var v2Popup = document.querySelector('kaching-popup-v2');\n        if (v2Popup && typeof v2Popup.close === 'function') {\n            try { v2Popup.close(); } catch (e3) { /* optional API */ }\n        }\n    }\n\n    function isElementActuallyVisible(el) {\n        if (!el) return false;\n        try {\n            var rect = el.getBoundingClientRect();\n            var style = window.getComputedStyle(el);\n            return rect.width > 0 &&\n                rect.height > 0 &&\n                style.display !== 'none' &&\n                style.visibility !== 'hidden' &&\n                style.opacity !== '0';\n        } catch (e) {\n            return false;\n        }\n    }\n\n    function isKachingPopupVisible() {\n        var visibleOverlay = document.querySelector('.kaching-overlay.kaching-popup-visible');\n        if (isElementActuallyVisible(visibleOverlay)) return true;\n\n        var visiblePopup = visibleOverlay && visibleOverlay.querySelector('.kaching-popup');\n        if (isElementActuallyVisible(visiblePopup)) return true;\n\n        var v2Popup = document.querySelector('kaching-popup-v2');\n        if (isElementActuallyVisible(v2Popup)) return true;\n\n        return false;\n    }\n\n    function forceRevealKachingPopup() {\n        var overlay = document.querySelector('.kaching-overlay.kaching-popup-visible');\n        var popup = overlay && overlay.querySelector('.kaching-popup');\n        if (!overlay || !popup) return false;\n\n        var text = normalizeText(popup.innerText || popup.textContent || '');\n        if (!/decline this offer|yes,\\s*i want it|don't forget this/.test(text)) {\n            return false;\n        }\n\n        try {\n            overlay.style.setProperty('display', 'flex', 'important');\n            overlay.style.setProperty('opacity', '1', 'important');\n            overlay.style.setProperty('visibility', 'visible', 'important');\n            overlay.style.setProperty('pointer-events', 'auto', 'important');\n            overlay.style.setProperty('position', 'fixed', 'important');\n            overlay.style.setProperty('inset', '0', 'important');\n            overlay.style.setProperty('z-index', '2147483647', 'important');\n\n            popup.style.setProperty('display', 'block', 'important');\n            popup.style.setProperty('opacity', '1', 'important');\n            popup.style.setProperty('visibility', 'visible', 'important');\n            popup.style.setProperty('pointer-events', 'auto', 'important');\n            return true;\n        } catch (e) {\n            return false;\n        }\n    }\n\n    async function waitForKachingPopupVisible(timeout) {\n        var startedAt = Date.now();\n        while (Date.now() - startedAt < timeout) {\n            if (isKachingPopupVisible()) return true;\n            await sleep(80);\n        }\n        return isKachingPopupVisible();\n    }\n\n    async function waitForKachingPopupTrigger(timeout) {\n        var startedAt = Date.now();\n        while (Date.now() - startedAt < timeout) {\n            if (typeof window.kachingPopupTriggerATC === 'function') {\n                return window.kachingPopupTriggerATC;\n            }\n            await sleep(80);\n        }\n        return typeof window.kachingPopupTriggerATC === 'function' ? window.kachingPopupTriggerATC : null;\n    }\n\n    function clearKachingPopupSuppression() {\n        try {\n            window.sessionStorage && sessionStorage.removeItem('kachingAddToCartOncePerSessionShown');\n        } catch (e) { /* storage can be blocked in some embedded contexts */ }\n\n        try {\n            if (window.localStorage) {\n                for (var i = localStorage.length - 1; i >= 0; i--) {\n                    var key = localStorage.key(i);\n                    if (key && key.indexOf('kachingPopupFreq_') === 0) {\n                        localStorage.removeItem(key);\n                    }\n                }\n            }\n        } catch (e2) { /* storage can be blocked in some embedded contexts */ }\n    }\n\n    function goToCheckout() {\n        if (_kachingCheckoutBridge.redirecting) return;\n        _kachingCheckoutBridge.redirecting = true;\n        markCheckoutBridgeNavigation();\n        window.location.href = '/checkout';\n    }\n\n    function markCheckoutBridgeNavigation() {\n        try {\n            window.sessionStorage && sessionStorage.setItem(CHECKOUT_RETURN_MARKER_KEY, '1');\n        } catch (e) { /* storage can be blocked in some embedded contexts */ }\n    }\n\n    function consumeCheckoutBridgeNavigationMarker() {\n        try {\n            if (!window.sessionStorage || sessionStorage.getItem(CHECKOUT_RETURN_MARKER_KEY) !== '1') return false;\n            sessionStorage.removeItem(CHECKOUT_RETURN_MARKER_KEY);\n            return true;\n        } catch (e) {\n            return false;\n        }\n    }\n\n    function scheduleCheckoutReturnHardReset() {\n        if (isCheckoutUrl(window.location.href)) return;\n        setTimeout(function () {\n            try {\n                window.location.reload();\n            } catch (e) {\n                window.location.href = window.location.href;\n            }\n        }, 90);\n    }\n\n    function closeSmartCartDrawer() {\n        try {\n            if (window.themeCartDrawer && typeof window.themeCartDrawer.close === 'function') {\n                window.themeCartDrawer.close();\n            }\n        } catch (e) { /* drawer may already be closed */ }\n    }\n\n    function clearKachingCheckoutBridgeTimer() {\n        if (_kachingCheckoutBridge.timeoutId) {\n            clearTimeout(_kachingCheckoutBridge.timeoutId);\n            _kachingCheckoutBridge.timeoutId = null;\n        }\n    }\n\n    function scheduleKachingCheckoutRedirect(delay) {\n        if (!_kachingCheckoutBridge.armed) return;\n        if (_kachingCheckoutBridge.expiresAt && Date.now() > _kachingCheckoutBridge.expiresAt) {\n            _kachingCheckoutBridge.armed = false;\n            clearKachingCheckoutBridgeTimer();\n            return;\n        }\n        _kachingCheckoutBridge.armed = false;\n        clearKachingCheckoutBridgeTimer();\n        setTimeout(function () {\n            goToCheckout();\n        }, delay);\n    }\n\n    function bindKachingCheckoutBridgeEvents() {\n        if (_kachingCheckoutBridge.listenersBound) return;\n        _kachingCheckoutBridge.listenersBound = true;\n\n        document.addEventListener('popup-declined', function () {\n            scheduleKachingCheckoutRedirect(120);\n        });\n        document.addEventListener('popup-accepted', function () {\n            scheduleKachingCheckoutRedirect(2300);\n        });\n        document.addEventListener('popup-all-accepted', function () {\n            scheduleKachingCheckoutRedirect(2600);\n        });\n        document.addEventListener('popup-with-bundle-accepted', function () {\n            scheduleKachingCheckoutRedirect(3000);\n        });\n\n        document.addEventListener('kaching-popup-v2:closed', function () {\n            scheduleKachingCheckoutRedirect(120);\n        });\n        document.addEventListener('kaching-popup-v2:add-to-cart-submitted', function () {\n            scheduleKachingCheckoutRedirect(2300);\n        });\n        document.addEventListener('kaching-popup-v2:bundle-add-to-cart-submitted', function () {\n            scheduleKachingCheckoutRedirect(3000);\n        });\n        document.addEventListener('kaching-popup-v2:slider-add-all-to-cart-submitted', function () {\n            scheduleKachingCheckoutRedirect(3000);\n        });\n    }\n\n    function armKachingCheckoutBridge() {\n        bindKachingCheckoutBridgeEvents();\n        clearKachingCheckoutBridgeTimer();\n        _kachingCheckoutBridge.armed = true;\n        _kachingCheckoutBridge.expiresAt = Date.now() + 120000;\n        _kachingCheckoutBridge.timeoutId = setTimeout(function () {\n            _kachingCheckoutBridge.armed = false;\n            _kachingCheckoutBridge.timeoutId = null;\n        }, 120000);\n    }\n\n    function disarmKachingCheckoutBridge() {\n        _kachingCheckoutBridge.armed = false;\n        _kachingCheckoutBridge.expiresAt = 0;\n        clearKachingCheckoutBridgeTimer();\n    }\n\n    async function triggerKachingCheckoutPopup() {\n        clearKachingPopupSuppression();\n\n        var kachingTrigger = await waitForKachingPopupTrigger(KACHING_TRIGGER_READY_TIMEOUT);\n        if (typeof kachingTrigger === 'function') {\n            armKachingCheckoutBridge();\n            try {\n                var triggered = await withTimeout(\n                    Promise.resolve(kachingTrigger.call(window)),\n                    KACHING_TRIGGER_TIMEOUT,\n                    'Kaching popup trigger'\n                );\n                if (triggered) {\n                    var isVisible = await waitForKachingPopupVisible(700);\n                    if (!isVisible && forceRevealKachingPopup()) {\n                        isVisible = await waitForKachingPopupVisible(500);\n                    }\n                    if (!isVisible) {\n                        isVisible = await waitForKachingPopupVisible(900);\n                    }\n                }\n\n                if (triggered && isVisible) {\n                    closeSmartCartDrawer();\n                    return true;\n                }\n            } catch (err) {\n                debugWarn('Kaching popup trigger failed:', err);\n            }\n            disarmKachingCheckoutBridge();\n        }\n\n        var v2Popup = document.querySelector('kaching-popup-v2');\n        if (v2Popup && v2Popup.settings && typeof v2Popup.show === 'function') {\n            armKachingCheckoutBridge();\n            try {\n                v2Popup.show();\n                if (await waitForKachingPopupVisible(800)) {\n                    closeSmartCartDrawer();\n                    return true;\n                }\n            } catch (err2) {\n                debugWarn('Kaching popup v2 trigger failed:', err2);\n            }\n            disarmKachingCheckoutBridge();\n        }\n\n        return false;\n    }\n\n    // ---- SMART CART DRAWER UPSELL INTERCEPTOR ----\n    window.addEventListener('click', function (e) {\n        var upsellButton = getSmartCartUpsellButton(e);\n        if (!upsellButton) return;\n\n        e.preventDefault();\n        e.stopImmediatePropagation();\n        e.stopPropagation();\n\n        addSmartCartUpsellDirect(upsellButton);\n    }, true);\n\n    // ---- SMART CART DRAWER CHECKOUT -> KACHING POPUP BRIDGE ----\n    window.addEventListener('click', function (e) {\n        var checkoutButton = getSmartCartCheckoutButton(e);\n        if (!checkoutButton || checkoutButton.disabled || checkoutButton.getAttribute('data-clm-checkout-loading') === '1') return;\n\n        e.preventDefault();\n        e.stopImmediatePropagation();\n        e.stopPropagation();\n\n        checkoutButton.setAttribute('data-clm-checkout-loading', '1');\n\n        triggerKachingCheckoutPopup().then(function (triggered) {\n            if (!triggered) {\n                goToCheckout();\n            }\n        }).catch(function (err) {\n            debugWarn('Kaching checkout bridge failed:', err);\n            goToCheckout();\n        }).finally(function () {\n            checkoutButton.removeAttribute('data-clm-checkout-loading');\n        });\n    }, true);\n\n    // ---- BUY NOW / ADD TO CART BUTTON INTERCEPTOR ----\n    document.addEventListener('click', async function (e) {\n        // G\u00DCVENL\u0130K: SCD drawer Shadow DOM i\u00E7indeki butonlara dokunma.\n        // Drawer'\u0131n checkout butonu Shadow DOM'da; event composedPath ile\n        // ana DOM'a bubble ediyor olabilir, bizim selector'um\u00FCz yanl\u0131\u015Fl\u0131kla\n        // e\u015Fle\u015Fmemeli.\n        var path = typeof e.composedPath === 'function' ? e.composedPath() : [];\n        for (var i = 0; i < path.length; i++) {\n            var node = path[i];\n            if (node && node.id === 'cart-drawer-shadow-host') return;\n            if (node && node.id === 'cart-drawer-container') return;\n            if (node && node.tagName && /cart-drawer/i.test(node.tagName)) return;\n        }\n\n        var btn = e.target.closest('button.gp-button-atc, button[type=\"submit\"][name=\"add\"]');\n        if (!btn) return;\n        if (btn.getAttribute('data-state') === 'loading') return;\n\n        var form = btn.closest('form[action*=\"/cart/add\"]');\n        if (!form) return;\n\n        e.preventDefault();\n        e.stopImmediatePropagation();\n        e.stopPropagation();\n        btn.setAttribute('data-state', 'loading');\n\n        try {\n            var idInput = form.querySelector('input[name=\"id\"]') || form.querySelector('input[name=\"variant_id\"]');\n            var variantId = idInput ? idInput.value : null;\n            var quantity = getQuantity(form);\n            var properties = getLineItemProperties(form);\n\n            if (!variantId) {\n                btn.setAttribute('data-state', 'idle');\n                return;\n            }\n\n            var smartResult = await addWithSmartCart(variantId, quantity, properties);\n            if (smartResult) {\n                var selectedVariantId = normalizeVariantIdForSelection(variantId);\n                trackMetaAddToCart(smartResult, selectedVariantId, quantity);\n                document.dispatchEvent(new CustomEvent('cart:item-added', {\n                    bubbles: true,\n                    detail: { variant_id: selectedVariantId, quantity: quantity, result: smartResult }\n                }));\n                btn.setAttribute('data-state', 'idle');\n                return;\n            }\n\n            var cleanResult = await addWithCleanFetch(variantId, quantity, properties);\n            if (cleanResult) {\n                trackMetaAddToCart(cleanResult, normalizeVariantIdForSelection(variantId), quantity);\n                btn.setAttribute('data-state', 'idle');\n                return;\n            }\n\n            var fallbackPayload = buildAddPayload(variantId, quantity, properties);\n            var fallbackHeaders = {\n                'Content-Type': 'application/json',\n                'Accept': 'application/json'\n            };\n            fallbackHeaders[CART_DRAWER_INTERNAL_HEADER] = 'internal';\n            var fallbackRes = await fetchWithTimeout(window.fetch.bind(window), window.location.origin + '/cart/add.js', {\n                method: 'POST',\n                headers: fallbackHeaders,\n                body: JSON.stringify(fallbackPayload)\n            }, CART_REQUEST_TIMEOUT, 'Fallback cart add');\n            if (fallbackRes.ok) {\n                var fallbackData = await withTimeout(fallbackRes.json(), 2000, 'Fallback cart add JSON');\n                trackMetaAddToCart(fallbackData, normalizeVariantIdForSelection(variantId), quantity);\n                await syncAfterDirectAdd(window.fetch.bind(window));\n            }\n        } catch (err) {\n            console.error('GP Cart Error:', err);\n            scheduleCartOpenRecovery();\n        } finally {\n            btn.setAttribute('data-state', 'idle');\n        }\n    }, true);\n\n    // ---- CART EVENT LISTENERS (cart icon count sync) ----\n    function getCartDataFromEvent(event) {\n        var detail = event && event.detail;\n        if (!detail) return null;\n        return detail.cart || detail.resource || detail.result || detail.data || detail;\n    }\n\n    ['cart:synced', 'cart:item-added', 'cart:item-updated'].forEach(function (eventName) {\n        window.addEventListener(eventName, function (event) {\n            refreshCartIconCount(getCartDataFromEvent(event));\n        });\n    });\n\n    ['cart:update', 'cart:updated', 'shopify:cart:update', 'shopify:cart:change'].forEach(function (eventName) {\n        document.addEventListener(eventName, function (event) {\n            refreshCartIconCount(getCartDataFromEvent(event));\n        });\n    });\n\n    // ---- INITIAL CART ICON SYNC ----\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', function () {\n            refreshCartIconCount();\n        }, { once: true });\n    } else {\n        refreshCartIconCount();\n    }\n\n    window.addEventListener('pageshow', function (event) {\n        var navEntry = window.performance && window.performance.getEntriesByType ?\n            window.performance.getEntriesByType('navigation')[0] : null;\n        var isBackForward = event.persisted ||\n            (navEntry && navEntry.type === 'back_forward') ||\n            (window.performance && window.performance.navigation && window.performance.navigation.type === 2);\n        var returnedFromCheckoutBridge = !isCheckoutUrl(window.location.href) && consumeCheckoutBridgeNavigationMarker();\n        if (isBackForward || returnedFromCheckoutBridge) {\n            performPageRestoreCleanup('pageshow');\n        }\n        if (isBackForward && returnedFromCheckoutBridge) {\n            scheduleCheckoutReturnHardReset();\n        }\n    }, true);\n\n})();\n"],
  "mappings": "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",
  "names": ["finish"]
}
