{
  "version": 3,
  "sources": ["/cdn/shop/t/63/assets/custom.js?atk_footer_fix=20260819-gift-localize-v1"],
  "sourcesContent": ["/**\n * DEVELOPER DOCUMENTATION\n *\n * Include your custom JavaScript here.\n *\n * The theme Focal has been developed to be easily extensible through the usage of a lot of different JavaScript\n * events, as well as the usage of custom elements (https://developers.google.com/web/fundamentals/web-components/customelements)\n * to easily extend the theme and re-use the theme infrastructure for your own code.\n *\n * The technical documentation is summarized here.\n *\n * ------------------------------------------------------------------------------------------------------------\n * BEING NOTIFIED WHEN A VARIANT HAS CHANGED\n * ------------------------------------------------------------------------------------------------------------\n *\n * This event is fired whenever a the user has changed the variant in a selector. The target get you the form\n * that triggered this event.\n *\n * Example:\n *\n * document.addEventListener('variant:changed', function(event) {\n *   let variant = event.detail.variant; // Gives you access to the whole variant details\n *   let form = event.target;\n * });\n *\n * ------------------------------------------------------------------------------------------------------------\n * BEING NOTIFIED WHEN A NEW VARIANT IS ADDED TO THE CART\n * ------------------------------------------------------------------------------------------------------------\n *\n * This event is fired whenever a variant is added to the cart through a form selector (product page, quick\n * view...). This event DOES NOT include any change done through the cart on an existing variant. For that,\n * please refer to the \"cart:updated\" event.\n *\n * Example:\n *\n * document.addEventListener('variant:added', function(event) {\n *   var variant = event.detail.variant; // Get the variant that was added\n * });\n *\n * ------------------------------------------------------------------------------------------------------------\n * BEING NOTIFIED WHEN THE CART CONTENT HAS CHANGED\n * ------------------------------------------------------------------------------------------------------------\n *\n * This event is fired whenever the cart content has changed (if the quantity of a variant has changed, if a variant\n * has been removed, if the note has changed...). This event will also be emitted when a new variant has been\n * added (so you will receive both \"variant:added\" and \"cart:updated\"). Contrary to the variant:added event,\n * this event will give you the complete details of the cart.\n *\n * Example:\n *\n * document.addEventListener('cart:updated', function(event) {\n *   var cart = event.detail.cart; // Get the updated content of the cart\n * });\n *\n * ------------------------------------------------------------------------------------------------------------\n * REFRESH THE CART/MINI-CART\n * ------------------------------------------------------------------------------------------------------------\n *\n * If you are adding variants to the cart and would like to instruct the theme to re-render the cart, you cart\n * send the cart:refresh event, as shown below:\n *\n * document.documentElement.dispatchEvent(new CustomEvent('cart:refresh', {\n *   bubbles: true\n * }));\n *\n * ------------------------------------------------------------------------------------------------------------\n * USAGE OF CUSTOM ELEMENTS\n * ------------------------------------------------------------------------------------------------------------\n *\n * Our theme makes extensive use of HTML custom elements. Custom elements are an awesome way to extend HTML\n * by creating new elements that carry their own JavaScript for adding new behavior. The theme uses a large\n * number of custom elements, but the two most useful are drawer and popover. Each of those components add\n * a \"open\" attribute that you can toggle on and off. For instance, let's say you would like to open the cart\n * drawer, whose id is \"mini-cart\", you simply need to retrieve it and set its \"open\" attribute to true (or\n * false to close it):\n *\n * document.getElementById('mini-cart').open = true;\n *\n * Thanks to the power of custom elements, the theme will take care automagically of trapping focus, maintaining\n * proper accessibility attributes...\n *\n * If you would like to create your own drawer, you can re-use the <drawer-content> content. Here is a simple\n * example:\n *\n * // Make sure you add \"aria-controls\", \"aria-expanded\" and \"is\" HTML attributes to your button:\n * <button type=\"button\" is=\"toggle-button\" aria-controls=\"id-of-drawer\" aria-expanded=\"false\">Open drawer</button>\n *\n * <drawer-content id=\"id-of-drawer\">\n *   Your content\n * </drawer-content>\n *\n * The nice thing with custom elements is that you do not actually need to instantiate JavaScript yourself: this\n * is done automatically as soon as the element is inserted to the DOM.\n *\n * ------------------------------------------------------------------------------------------------------------\n * THEME DEPENDENCIES\n * ------------------------------------------------------------------------------------------------------------\n *\n * While the theme tries to keep outside dependencies as small as possible, the theme still uses third-party code\n * to power some of its features. Here is the list of all dependencies:\n *\n * \"vendor.js\":\n *\n * The vendor.js contains required dependencies. This file is loaded in parallel of the theme file.\n *\n * - custom-elements polyfill (used for built-in elements on Safari - v1.0.0): https://github.com/ungap/custom-elements\n * - web-animations-polyfill (used for polyfilling WebAnimations on Safari 12, this polyfill will be removed in 1 year - v2.3.2): https://github.com/web-animations/web-animations-js\n * - instant-page (v5.1.0): https://github.com/instantpage/instant.page\n * - tocca (v2.0.9); https://github.com/GianlucaGuarini/Tocca.js/\n * - seamless-scroll-polyfill (v2.0.0): https://github.com/magic-akari/seamless-scroll-polyfill\n *\n * \"flickity.js\": v2.2.0 (with the \"fade\" package). Flickity is only loaded on demand if there is a product image\n * carousel on the page. Otherwise it is not loaded.\n *\n * \"photoswipe\": v4.1.3. PhotoSwipe is only loaded on demand to power the zoom feature on product page. If the zoom\n * feature is disabled, then this script is never loaded.\n */\n\n(function() {\n  // ATK currency selector live sync: 2026-06-01.\n  var DISPLAY_CURRENCY_KEY = 'atk_display_currency';\n  var RATE_CACHE_KEY = 'atk_currency_rates_v2';\n  var FALLBACK_CURRENCY_RATES = {\n    USD: 1,\n    JPY: 163.83,\n    EUR: 0.8787,\n    KRW: 1457.52,\n    GBP: 0.7525,\n    CAD: 1.4104,\n    AUD: 1.4338,\n    SGD: 1.2925,\n    HKD: 7.8417,\n    CNY: 6.7785,\n    TWD: 32.3853,\n    THB: 33.5789,\n    VND: 26252.67,\n    MYR: 4.091,\n    IDR: 18106.37,\n    PHP: 61.6003,\n    INR: 95.859,\n    AED: 3.6725,\n    SAR: 3.75,\n    QAR: 3.64,\n    KWD: 0.3102,\n    BHD: 0.376,\n    OMR: 0.3845,\n    CHF: 0.8194,\n    SEK: 9.7071,\n    NOK: 9.6846,\n    DKK: 6.5598,\n    PLN: 3.7999,\n    CZK: 21.2518,\n    HUF: 316.862,\n    RON: 4.6021,\n    TRY: 47.3863,\n    ILS: 3.0536,\n    ZAR: 16.7142,\n    MXN: 17.4479,\n    BRL: 5.1178,\n    NZD: 1.7303,\n    CLP: 939.7132,\n    COP: 3206.17,\n    PEN: 3.4033,\n    ARS: 1499.84,\n    EGP: 50.5265,\n    MAD: 9.3774,\n    NGN: 1363.78\n  };\n  var ZERO_DECIMAL_CURRENCIES = {\n    CLP: true,\n    HUF: true,\n    IDR: true,\n    JPY: true,\n    KRW: true,\n    VND: true\n  };\n  var PRICE_SELECTOR = [\n    '.money',\n    '.price',\n    '.price-list',\n    '.product-item-meta__price-list-container',\n    '.product-sticky-form__price',\n    '.product-sticky-form__compare-price',\n    '.line-item__price-list-container',\n    '.mini-cart__line-item-price',\n    '.mini-cart__discount-price',\n    '.cart__discount-price',\n    '.related-popup-price',\n    '.change-price-target',\n    '.change-old-price-target',\n    '.change-discount-target',\n    '.pc-product-card__price',\n    '.pc-compare-card__price',\n    '[data-raw-price]',\n    '[data-slot-price]',\n    '[data-product-price]'\n  ].join(',');\n  var CURRENCY_CODE_PATTERN = Object.keys(FALLBACK_CURRENCY_RATES).join('|');\n  var MONEY_PATTERN = new RegExp('((?:' + CURRENCY_CODE_PATTERN + ')\\\\s*)?([$\u20AC\u00A5\u20A9\u20B9\u20AB\u20B1\u00A3\u0E3F\u20BA\u20AA\u20A6\u20A1\u20B2\u20B4\u20BD\u20B8\u20BC])?\\\\s*([0-9][0-9,.]*)(?:\\\\s*(' + CURRENCY_CODE_PATTERN + '))?', 'g');\n  var rateCache = readRateCache();\n  var activeConversion = null;\n  var observer = null;\n  var renderTimer = null;\n  var isRendering = false;\n\n  function optionList(select) {\n    return select ? Array.prototype.slice.call(select.options) : [];\n  }\n\n  function getSelectedOption(select) {\n    return select && select.selectedIndex >= 0 ? select.options[select.selectedIndex] : null;\n  }\n\n  function getCookie(name) {\n    var match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n\n    return match ? decodeURIComponent(match[1]) : '';\n  }\n\n  function setCookie(name, value) {\n    document.cookie = name + '=' + encodeURIComponent(value) + '; max-age=31536000; path=/; SameSite=Lax';\n  }\n\n  function readRateCache() {\n    try {\n      return JSON.parse(localStorage.getItem(RATE_CACHE_KEY) || '{}');\n    } catch (error) {\n      return {};\n    }\n  }\n\n  function writeRateCache() {\n    try {\n      localStorage.setItem(RATE_CACHE_KEY, JSON.stringify(rateCache));\n    } catch (error) {\n      return;\n    }\n  }\n\n  function getShopifyCurrency() {\n    var currency = window.Shopify && window.Shopify.currency ? window.Shopify.currency : {};\n    var active = currency.active || window.themeVariables && window.themeVariables.cartCurrency || 'USD';\n    var rate = parseFloat(currency.rate || '1');\n\n    return {\n      active: active,\n      rate: Number.isFinite(rate) && rate > 0 ? rate : 1\n    };\n  }\n\n  function getSavedCurrency() {\n    var savedCurrency = localStorage.getItem(DISPLAY_CURRENCY_KEY) || '';\n    var legacyCookie = getCookie('atk_language_currency');\n\n    if (!savedCurrency && legacyCookie) {\n      savedCurrency = legacyCookie.split('|')[2] || '';\n    }\n\n    return savedCurrency;\n  }\n\n  function updateSelectorUi(selector) {\n    var languageSelect = selector.querySelector('[data-language-currency-language]');\n    var currencySelect = selector.querySelector('[data-language-currency-currency]');\n    var currencyOption = getSelectedOption(currencySelect);\n    var languageOption = getSelectedOption(languageSelect);\n    var flagUrl = currencyOption ? currencyOption.getAttribute('data-flag-url') : '';\n    var flag = selector.querySelector('[data-language-currency-select-flag]');\n    var triggerFlag = selector.querySelector('[data-language-currency-trigger-flag]');\n    var triggerLanguage = selector.querySelector('[data-language-currency-trigger-language]');\n    var triggerCurrency = selector.querySelector('[data-language-currency-trigger-currency]');\n\n    if (flag && flagUrl) {\n      flag.setAttribute('src', flagUrl);\n    }\n\n    if (triggerFlag && flagUrl) {\n      triggerFlag.setAttribute('src', flagUrl);\n    }\n\n    if (triggerLanguage && languageOption) {\n      var languageLabel = languageOption.textContent.trim();\n      var languageShortLabel = languageOption.getAttribute('data-language-short') || languageLabel;\n\n      triggerLanguage.textContent = selector.hasAttribute('data-compact-language-trigger') ? languageShortLabel : languageLabel;\n      triggerLanguage.setAttribute('aria-label', languageLabel);\n    }\n\n    if (triggerCurrency && currencyOption) {\n      triggerCurrency.textContent = currencyOption.getAttribute('data-currency-code') || currencyOption.value;\n    }\n  }\n\n  function syncCurrencySelections(currencyCode) {\n    document.querySelectorAll('[data-language-currency-currency]').forEach(function(select) {\n      if (currencyCode && optionList(select).some(function(option) { return option.value === currencyCode; })) {\n        select.value = currencyCode;\n      }\n\n      var selector = select.closest('[data-language-currency-selector]');\n\n      if (selector) {\n        updateSelectorUi(selector);\n      }\n    });\n  }\n\n  function parseAmount(value) {\n    var normalized = value.replace(/[^\\d,.]/g, '');\n    var hasComma = normalized.indexOf(',') !== -1;\n    var hasDot = normalized.indexOf('.') !== -1;\n\n    if (hasComma && hasDot) {\n      normalized = normalized.replace(/,/g, '');\n    } else if (hasComma && !hasDot && /,\\d{1,2}$/.test(normalized)) {\n      normalized = normalized.replace(',', '.');\n    } else {\n      normalized = normalized.replace(/,/g, '');\n    }\n\n    return parseFloat(normalized);\n  }\n\n  function formatAmount(amount, currencyCode) {\n    try {\n      return new Intl.NumberFormat(document.documentElement.lang || navigator.language || 'en', {\n        style: 'currency',\n        currency: currencyCode,\n        maximumFractionDigits: ZERO_DECIMAL_CURRENCIES[currencyCode] ? 0 : 2\n      }).format(amount);\n    } catch (error) {\n      return currencyCode + ' ' + amount.toFixed(ZERO_DECIMAL_CURRENCIES[currencyCode] ? 0 : 2);\n    }\n  }\n\n  function convertText(text, conversion) {\n    return text.replace(MONEY_PATTERN, function(match, leadingCode, symbol, amountText, trailingCode) {\n      var amount = parseAmount(amountText);\n\n      if (!Number.isFinite(amount)) {\n        return match;\n      }\n\n      if (!leadingCode && !symbol && !trailingCode && !/[.,]\\d{2}$/.test(amountText)) {\n        return match;\n      }\n\n      return formatAmount(amount * conversion.targetRate / conversion.activeRate, conversion.targetCurrency);\n    });\n  }\n\n  function getTextNodes(element) {\n    var nodes = [];\n    var walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT, {\n      acceptNode: function(node) {\n        if (!node.nodeValue || !node.nodeValue.trim()) {\n          return NodeFilter.FILTER_REJECT;\n        }\n\n        if (node.parentElement && node.parentElement.closest('script, style, [data-atk-currency-skip]')) {\n          return NodeFilter.FILTER_REJECT;\n        }\n\n        return NodeFilter.FILTER_ACCEPT;\n      }\n    });\n    var node = walker.nextNode();\n\n    while (node) {\n      nodes.push(node);\n      node = walker.nextNode();\n    }\n\n    return nodes;\n  }\n\n  function renderPrices() {\n    if (!activeConversion) {\n      return;\n    }\n\n    isRendering = true;\n\n    document.querySelectorAll(PRICE_SELECTOR).forEach(function(element) {\n      getTextNodes(element).forEach(function(node) {\n        if (!node.__atkOriginalPriceText || node.nodeValue !== node.__atkLastRenderedPriceText) {\n          node.__atkOriginalPriceText = node.nodeValue;\n        }\n\n        var nextText = activeConversion.targetCurrency === activeConversion.activeCurrency\n          ? node.__atkOriginalPriceText\n          : convertText(node.__atkOriginalPriceText, activeConversion);\n\n        node.nodeValue = nextText;\n        node.__atkLastRenderedPriceText = nextText;\n      });\n    });\n\n    isRendering = false;\n  }\n\n  function scheduleRender() {\n    window.clearTimeout(renderTimer);\n    renderTimer = window.setTimeout(renderPrices, 80);\n  }\n\n  function watchPrices() {\n    if (observer || !document.body) {\n      return;\n    }\n\n    observer = new MutationObserver(function() {\n      if (!isRendering && activeConversion) {\n        scheduleRender();\n      }\n    });\n\n    observer.observe(document.body, { childList: true, characterData: true, subtree: true });\n  }\n\n  function parseRateFromHtml(html, currencyCode) {\n    var match = html.match(/Shopify\\.currency\\s*=\\s*({.*?});/);\n\n    if (!match) {\n      return 0;\n    }\n\n    try {\n      var currency = JSON.parse(match[1]);\n      var rate = parseFloat(currency.rate || '0');\n\n      return currency.active === currencyCode && Number.isFinite(rate) && rate > 0 ? rate : 0;\n    } catch (error) {\n      return 0;\n    }\n  }\n\n  function getRate(currencyOption, activeCurrency) {\n    var currencyCode = currencyOption ? currencyOption.getAttribute('data-currency-code') : '';\n    var rateUrl = currencyOption ? currencyOption.getAttribute('data-rate-url') : '';\n    var fallbackRate = FALLBACK_CURRENCY_RATES[currencyCode] || 0;\n\n    if (!currencyCode) {\n      return Promise.reject();\n    }\n\n    if (currencyCode === activeCurrency) {\n      return Promise.resolve(getShopifyCurrency().rate);\n    }\n\n    if (!rateUrl && fallbackRate) {\n      rateCache[currencyCode] = { rate: fallbackRate, time: Date.now() };\n      writeRateCache();\n      return Promise.resolve(fallbackRate);\n    }\n\n    if (rateCache[currencyCode] && Date.now() - rateCache[currencyCode].time < 86400000) {\n      return Promise.resolve(rateCache[currencyCode].rate);\n    }\n\n    return fetch(rateUrl || '/', { credentials: 'omit' }).then(function(response) {\n      return response.text();\n    }).then(function(html) {\n      var rate = parseRateFromHtml(html, currencyCode);\n\n      if (!rate) {\n        if (fallbackRate) {\n          rateCache[currencyCode] = { rate: fallbackRate, time: Date.now() };\n          writeRateCache();\n\n          return fallbackRate;\n        }\n\n        throw new Error('Missing currency rate');\n      }\n\n      rateCache[currencyCode] = { rate: rate, time: Date.now() };\n      writeRateCache();\n\n      return rate;\n    }).catch(function(error) {\n      if (fallbackRate) {\n        rateCache[currencyCode] = { rate: fallbackRate, time: Date.now() };\n        writeRateCache();\n\n        return fallbackRate;\n      }\n\n      throw error;\n    });\n  }\n\n  function applyDisplayCurrency(currencySelect) {\n    var currencyOption = getSelectedOption(currencySelect);\n    var currencyCode = currencyOption ? currencyOption.getAttribute('data-currency-code') : '';\n    var shopifyCurrency = getShopifyCurrency();\n\n    if (!currencyOption || !currencyCode) {\n      return;\n    }\n\n    syncCurrencySelections(currencyCode);\n\n    getRate(currencyOption, shopifyCurrency.active).then(function(targetRate) {\n      activeConversion = {\n        activeCurrency: shopifyCurrency.active,\n        activeRate: shopifyCurrency.rate,\n        targetCurrency: currencyCode,\n        targetRate: targetRate\n      };\n\n      renderPrices();\n      watchPrices();\n    }).catch(function() {\n      activeConversion = null;\n    });\n  }\n\n  function initLocalizationSelector(selector) {\n    var currencySelect = selector.querySelector('[data-language-currency-currency]');\n    var savedCurrency = getSavedCurrency();\n\n    if (currencySelect && savedCurrency && optionList(currencySelect).some(function(option) { return option.value === savedCurrency; })) {\n      currencySelect.value = savedCurrency;\n    }\n\n    updateSelectorUi(selector);\n\n    if (currencySelect) {\n      applyDisplayCurrency(currencySelect);\n    }\n  }\n\n  document.querySelectorAll('[data-language-currency-selector]').forEach(initLocalizationSelector);\n\n  document.addEventListener('change', function(event) {\n    if (event.target.matches('[data-language-currency-currency]')) {\n      var currencyCode = event.target.value;\n      var currencyOption = getSelectedOption(event.target);\n      var selector = event.target.closest('[data-language-currency-selector]');\n      var countryInput = selector ? selector.querySelector('[data-language-currency-country-code]') : null;\n      var countryCode = currencyOption ? currencyOption.getAttribute('data-country-code') : '';\n\n      if (countryInput && countryCode) {\n        countryInput.value = countryCode;\n      }\n\n      localStorage.setItem(DISPLAY_CURRENCY_KEY, currencyCode);\n      setCookie(DISPLAY_CURRENCY_KEY, currencyCode);\n      applyDisplayCurrency(event.target);\n    }\n\n    if (event.target.matches('[data-language-currency-language]')) {\n      var selector = event.target.closest('[data-language-currency-selector]');\n      var languageOption = getSelectedOption(event.target);\n      var countryInput = selector ? selector.querySelector('[data-language-currency-country-code]') : null;\n      var countryCode = languageOption ? languageOption.getAttribute('data-country-code') : '';\n\n      if (countryInput && countryCode) {\n        countryInput.value = countryCode;\n      }\n\n      if (selector) {\n        updateSelectorUi(selector);\n      }\n    }\n  });\n\n  document.addEventListener('submit', function(event) {\n    var form = event.target;\n    var selector = form.querySelector('[data-language-currency-selector]');\n\n    if (!selector) {\n      return;\n    }\n\n    var languageSelect = selector.querySelector('[data-language-currency-language]');\n    var currencySelect = selector.querySelector('[data-language-currency-currency]');\n    var countryInput = selector.querySelector('[data-language-currency-country-code]');\n    var languageOption = getSelectedOption(languageSelect);\n    var currencyOption = getSelectedOption(currencySelect);\n    var languageCode = languageSelect ? languageSelect.value : '';\n    var languageCountryCode = languageOption ? languageOption.getAttribute('data-country-code') : '';\n    var currencyCountryCode = currencyOption ? currencyOption.getAttribute('data-country-code') : '';\n    var currentLocaleCode = selector.getAttribute('data-current-locale') || '';\n    var hasLanguageChanged = languageCode && currentLocaleCode && languageCode !== currentLocaleCode;\n    var countryCode = hasLanguageChanged && languageCountryCode\n      ? languageCountryCode\n      : currencyCountryCode || languageCountryCode || selector.getAttribute('data-current-country');\n    var currencyCode = currencyOption ? currencyOption.getAttribute('data-currency-code') : '';\n\n    if (!countryInput || !countryCode || !languageCode) {\n      return;\n    }\n\n    countryInput.value = countryCode;\n\n    var returnToInput = form.querySelector('input[name=\"return_to\"]');\n\n    if (returnToInput && hasLanguageChanged) {\n      try {\n        var returnToUrl = new URL(returnToInput.value || window.location.pathname + window.location.search, window.location.origin);\n        returnToUrl.searchParams.set('country', countryCode);\n        returnToInput.value = returnToUrl.pathname + returnToUrl.search + returnToUrl.hash;\n      } catch (error) {\n        returnToInput.value = window.location.pathname + '?country=' + encodeURIComponent(countryCode);\n      }\n    }\n\n    if (currencyCode) {\n      localStorage.setItem(DISPLAY_CURRENCY_KEY, currencyCode);\n      setCookie(DISPLAY_CURRENCY_KEY, currencyCode);\n    }\n\n    document.cookie = 'atk_language_currency=' + encodeURIComponent(languageCode + '|' + countryCode + '|' + currencyCode) + '; max-age=31536000; path=/; SameSite=Lax';\n  });\n})();\n\n(function() {\n  var SELECTOR = '[data-language-currency-selector]';\n  var OPEN_INLINE_PROPERTIES = ['visibility', 'opacity', 'transition'];\n  var OPEN_VISIBLE_ELEMENTS = ['.popover__content', '.language-currency-selector__panel'];\n\n  function getPopover(selector) {\n    return selector ? selector.querySelector('.popover') : null;\n  }\n\n  function syncPopoverVisibility(selector) {\n    var popover = getPopover(selector);\n    var isOpen = popover && popover.hasAttribute('open');\n    var visibleElements;\n\n    if (!popover) {\n      return;\n    }\n\n    selector.classList.toggle('is-atk-localization-open', isOpen);\n\n    if (isOpen) {\n      popover.style.setProperty('transition', 'none', 'important');\n      popover.style.setProperty('visibility', 'visible', 'important');\n      popover.style.setProperty('opacity', '1', 'important');\n\n      visibleElements = OPEN_VISIBLE_ELEMENTS\n        .map(function(item) { return popover.querySelector(item); })\n        .filter(Boolean);\n\n      visibleElements.forEach(function(element) {\n        element.style.setProperty('visibility', 'visible', 'important');\n        element.style.setProperty('opacity', '1', 'important');\n      });\n    } else {\n      OPEN_INLINE_PROPERTIES.forEach(function(property) {\n        popover.style.removeProperty(property);\n      });\n\n      OPEN_VISIBLE_ELEMENTS.forEach(function(item) {\n        var element = popover.querySelector(item);\n\n        if (!element) {\n          return;\n        }\n\n        element.style.removeProperty('visibility');\n        element.style.removeProperty('opacity');\n      });\n    }\n  }\n\n  function initLocalizationPopover(selector) {\n    var popover = getPopover(selector);\n\n    if (!popover || popover.dataset.atkLocalizationPopoverReady === 'true') {\n      return;\n    }\n\n    popover.dataset.atkLocalizationPopoverReady = 'true';\n    syncPopoverVisibility(selector);\n\n    new MutationObserver(function() {\n      syncPopoverVisibility(selector);\n    }).observe(popover, { attributes: true, attributeFilter: ['open'] });\n  }\n\n  function initLocalizationPopovers(root) {\n    (root || document).querySelectorAll(SELECTOR).forEach(initLocalizationPopover);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function() {\n      initLocalizationPopovers(document);\n    });\n  } else {\n    initLocalizationPopovers(document);\n  }\n\n  document.addEventListener('shopify:section:load', function(event) {\n    initLocalizationPopovers(event.target);\n  });\n\n  document.addEventListener('click', function(event) {\n    var selector = event.target.closest(SELECTOR);\n\n    if (!selector) {\n      return;\n    }\n\n    requestAnimationFrame(function() {\n      syncPopoverVisibility(selector);\n    });\n  }, true);\n})();\n\n(function() {\n  function setFooterSubmenuState(toggle, submenu, isOpen) {\n    toggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n    submenu.hidden = !isOpen;\n    submenu.toggleAttribute('open', isOpen);\n    submenu.style.overflow = isOpen ? 'visible' : '';\n\n    try {\n      submenu.open = isOpen;\n    } catch (error) {\n      return;\n    }\n  }\n\n  function initFooterSubmenus(root) {\n    (root || document).querySelectorAll('.shopify-section--footer .footer__nested-toggle[aria-controls]').forEach(function(toggle) {\n      var submenu = document.getElementById(toggle.getAttribute('aria-controls'));\n\n      if (!submenu) {\n        return;\n      }\n\n      setFooterSubmenuState(toggle, submenu, false);\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function() {\n      initFooterSubmenus(document);\n    });\n  } else {\n    initFooterSubmenus(document);\n  }\n\n  document.addEventListener('shopify:section:load', function(event) {\n    initFooterSubmenus(event.target);\n  });\n\n  document.addEventListener('click', function(event) {\n    var toggle = event.target.closest('.shopify-section--footer .footer__nested-toggle[aria-controls]');\n\n    if (!toggle) {\n      return;\n    }\n\n    var submenu = document.getElementById(toggle.getAttribute('aria-controls'));\n\n    if (!submenu) {\n      return;\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n    event.stopImmediatePropagation();\n\n    setFooterSubmenuState(toggle, submenu, toggle.getAttribute('aria-expanded') !== 'true');\n  }, true);\n})();\n\n(function() {\n  var GIFT_SELECTOR = '.product-offer-block--free-gift, .product-offer-block--model-gift';\n  var COPY_BY_LOCALE = {\n    ar: {\n      'Free Gifts Available': '\u0627\u0644\u0647\u062F\u0627\u064A\u0627 \u0627\u0644\u0645\u062C\u0627\u0646\u064A\u0629 \u0645\u062A\u0627\u062D\u0629',\n      'Add to cart to unlock the free gifts for your selected model.': '\u0623\u0636\u0641 \u0627\u0644\u0645\u0646\u062A\u062C \u0625\u0644\u0649 \u0627\u0644\u0633\u0644\u0629 \u0644\u0641\u062A\u062D \u0627\u0644\u0647\u062F\u0627\u064A\u0627 \u0627\u0644\u0645\u062C\u0627\u0646\u064A\u0629 \u0644\u0644\u0637\u0631\u0627\u0632 \u0627\u0644\u0630\u064A \u062A\u062E\u062A\u0627\u0631\u0647.',\n      'ATK Jade Skates': '\u0632\u0644\u0627\u0642\u0627\u062A \u0645\u0627\u0648\u0633 ATK Jade',\n      'ATK Jade Mouse Skates': '\u0632\u0644\u0627\u0642\u0627\u062A \u0645\u0627\u0648\u0633 ATK Jade',\n      'ATK Esports Arm Sleeve': '\u0643\u0645 \u0630\u0631\u0627\u0639 ATK Esports',\n      'ATK Blaze Air Mouse Pad': '\u0644\u0648\u062D\u0629 \u0645\u0627\u0648\u0633 ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': '\u0644\u0648\u062D\u0629 \u0645\u0627\u0648\u0633 ATK X83 XSoft',\n      'Free gift': '\u0647\u062F\u064A\u0629 \u0645\u062C\u0627\u0646\u064A\u0629'\n    },\n    de: {\n      'Free Gifts Available': 'Gratisgeschenke verf\u00FCgbar',\n      'Add to cart to unlock the free gifts for your selected model.': 'Lege das Produkt in den Warenkorb, um die Gratisgeschenke f\u00FCr dein ausgew\u00E4hltes Modell freizuschalten.',\n      'ATK Jade Skates': 'ATK Jade Maus-Skates',\n      'ATK Jade Mouse Skates': 'ATK Jade Maus-Skates',\n      'ATK Esports Arm Sleeve': 'ATK Esports Armsleeve',\n      'ATK Blaze Air Mouse Pad': 'ATK Blaze Air Mauspad',\n      'ATK X83 XSoft Mouse Pad': 'ATK X83 XSoft Mauspad',\n      'Free gift': 'Gratisgeschenk'\n    },\n    es: {\n      'Free Gifts Available': 'Regalos gratis disponibles',\n      'Add to cart to unlock the free gifts for your selected model.': 'A\u00F1ade el producto al carrito para desbloquear los regalos gratis de tu modelo seleccionado.',\n      'ATK Jade Skates': 'Skates para rat\u00F3n ATK Jade',\n      'ATK Jade Mouse Skates': 'Skates para rat\u00F3n ATK Jade',\n      'ATK Esports Arm Sleeve': 'Manga de brazo ATK Esports',\n      'ATK Blaze Air Mouse Pad': 'Alfombrilla de rat\u00F3n ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': 'Alfombrilla de rat\u00F3n ATK X83 XSoft',\n      'Free gift': 'Regalo gratis'\n    },\n    fr: {\n      'Free Gifts Available': 'Cadeaux offerts disponibles',\n      'Add to cart to unlock the free gifts for your selected model.': 'Ajoutez le produit au panier pour d\u00E9bloquer les cadeaux offerts pour le mod\u00E8le choisi.',\n      'ATK Jade Skates': 'Patins de souris ATK Jade',\n      'ATK Jade Mouse Skates': 'Patins de souris ATK Jade',\n      'ATK Esports Arm Sleeve': 'Manchette esport ATK',\n      'ATK Blaze Air Mouse Pad': 'Tapis de souris ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': 'Tapis de souris ATK X83 XSoft',\n      'Free gift': 'Cadeau offert'\n    },\n    ja: {\n      'Free Gifts Available': '\u7121\u6599\u30AE\u30D5\u30C8\u5BFE\u8C61',\n      'Add to cart to unlock the free gifts for your selected model.': '\u30AB\u30FC\u30C8\u306B\u8FFD\u52A0\u3059\u308B\u3068\u3001\u9078\u629E\u3057\u305F\u30E2\u30C7\u30EB\u306E\u7121\u6599\u30AE\u30D5\u30C8\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002',\n      'ATK Jade Skates': 'ATK Jade \u30DE\u30A6\u30B9\u30BD\u30FC\u30EB',\n      'ATK Jade Mouse Skates': 'ATK Jade \u30DE\u30A6\u30B9\u30BD\u30FC\u30EB',\n      'ATK Esports Arm Sleeve': 'ATK Esports \u30A2\u30FC\u30E0\u30B9\u30EA\u30FC\u30D6',\n      'ATK Blaze Air Mouse Pad': 'ATK Blaze Air \u30DE\u30A6\u30B9\u30D1\u30C3\u30C9',\n      'ATK X83 XSoft Mouse Pad': 'ATK X83 XSoft \u30DE\u30A6\u30B9\u30D1\u30C3\u30C9',\n      'Free gift': '\u7121\u6599\u30AE\u30D5\u30C8'\n    },\n    ko: {\n      'Free Gifts Available': '\uBB34\uB8CC \uC0AC\uC740\uD488 \uC81C\uACF5',\n      'Add to cart to unlock the free gifts for your selected model.': '\uC7A5\uBC14\uAD6C\uB2C8\uC5D0 \uB2F4\uC73C\uBA74 \uC120\uD0DD\uD55C \uBAA8\uB378\uC758 \uBB34\uB8CC \uC0AC\uC740\uD488\uC774 \uC801\uC6A9\uB429\uB2C8\uB2E4.',\n      'ATK Jade Skates': 'ATK Jade \uB9C8\uC6B0\uC2A4 \uC2A4\uCF00\uC774\uD2B8',\n      'ATK Jade Mouse Skates': 'ATK Jade \uB9C8\uC6B0\uC2A4 \uC2A4\uCF00\uC774\uD2B8',\n      'ATK Esports Arm Sleeve': 'ATK Esports \uC554 \uC2AC\uB9AC\uBE0C',\n      'ATK Blaze Air Mouse Pad': 'ATK Blaze Air \uB9C8\uC6B0\uC2A4\uD328\uB4DC',\n      'ATK X83 XSoft Mouse Pad': 'ATK X83 XSoft \uB9C8\uC6B0\uC2A4\uD328\uB4DC',\n      'Free gift': '\uBB34\uB8CC \uC0AC\uC740\uD488'\n    },\n    pl: {\n      'Free Gifts Available': 'Dost\u0119pne darmowe prezenty',\n      'Add to cart to unlock the free gifts for your selected model.': 'Dodaj produkt do koszyka, aby odblokowa\u0107 darmowe prezenty dla wybranego modelu.',\n      'ATK Jade Skates': '\u015Alizgacze do myszy ATK Jade',\n      'ATK Jade Mouse Skates': '\u015Alizgacze do myszy ATK Jade',\n      'ATK Esports Arm Sleeve': 'R\u0119kaw ATK Esports',\n      'ATK Blaze Air Mouse Pad': 'Podk\u0142adka pod mysz ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': 'Podk\u0142adka pod mysz ATK X83 XSoft',\n      'Free gift': 'Darmowy prezent'\n    },\n    cs: {\n      'Free Gifts Available': 'K dispozici jsou d\u00E1rky zdarma',\n      'Add to cart to unlock the free gifts for your selected model.': 'P\u0159idejte produkt do ko\u0161\u00EDku a odemkn\u011Bte d\u00E1rky zdarma pro vybran\u00FD model.',\n      'ATK Jade Skates': 'Kluznice pro my\u0161 ATK Jade',\n      'ATK Jade Mouse Skates': 'Kluznice pro my\u0161 ATK Jade',\n      'ATK Esports Arm Sleeve': 'Hern\u00ED n\u00E1vlek na pa\u017Ei ATK Esports',\n      'ATK Blaze Air Mouse Pad': 'Podlo\u017Eka pod my\u0161 ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': 'Podlo\u017Eka pod my\u0161 ATK X83 XSoft',\n      'Free gift': 'D\u00E1rek zdarma'\n    },\n    fi: {\n      'Free Gifts Available': 'Ilmaisia lahjoja saatavilla',\n      'Add to cart to unlock the free gifts for your selected model.': 'Lis\u00E4\u00E4 tuote ostoskoriin avataksesi valitsemaasi malliin kuuluvat ilmaiset lahjat.',\n      'ATK Jade Skates': 'ATK Jade -hiiritassut',\n      'ATK Jade Mouse Skates': 'ATK Jade -hiiritassut',\n      'ATK Esports Arm Sleeve': 'ATK Esports -k\u00E4sivarsihiha',\n      'ATK Blaze Air Mouse Pad': 'ATK Blaze Air -hiirimatto',\n      'ATK X83 XSoft Mouse Pad': 'ATK X83 XSoft -hiirimatto',\n      'Free gift': 'Ilmainen lahja'\n    },\n    id: {\n      'Free Gifts Available': 'Hadiah gratis tersedia',\n      'Add to cart to unlock the free gifts for your selected model.': 'Tambahkan produk ke keranjang untuk membuka hadiah gratis untuk model pilihan Anda.',\n      'ATK Jade Skates': 'Skate mouse ATK Jade',\n      'ATK Jade Mouse Skates': 'Skate mouse ATK Jade',\n      'ATK Esports Arm Sleeve': 'Arm sleeve ATK Esports',\n      'ATK Blaze Air Mouse Pad': 'Mouse pad ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': 'Mouse pad ATK X83 XSoft',\n      'Free gift': 'Hadiah gratis'\n    },\n    it: {\n      'Free Gifts Available': 'Omaggi disponibili',\n      'Add to cart to unlock the free gifts for your selected model.': 'Aggiungi il prodotto al carrello per sbloccare gli omaggi per il modello selezionato.',\n      'ATK Jade Skates': 'Pattini per mouse ATK Jade',\n      'ATK Jade Mouse Skates': 'Pattini per mouse ATK Jade',\n      'ATK Esports Arm Sleeve': 'Manicotto da braccio ATK Esports',\n      'ATK Blaze Air Mouse Pad': 'Tappetino mouse ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': 'Tappetino mouse ATK X83 XSoft',\n      'Free gift': 'Omaggio'\n    },\n    nb: {\n      'Free Gifts Available': 'Gratis gaver tilgjengelig',\n      'Add to cart to unlock the free gifts for your selected model.': 'Legg produktet i handlekurven for \u00E5 l\u00E5se opp gratisgaver for den valgte modellen.',\n      'ATK Jade Skates': 'ATK Jade musef\u00F8tter',\n      'ATK Jade Mouse Skates': 'ATK Jade musef\u00F8tter',\n      'ATK Esports Arm Sleeve': 'ATK Esports arm sleeve',\n      'ATK Blaze Air Mouse Pad': 'ATK Blaze Air musematte',\n      'ATK X83 XSoft Mouse Pad': 'ATK X83 XSoft musematte',\n      'Free gift': 'Gratis gave'\n    },\n    nl: {\n      'Free Gifts Available': 'Gratis cadeaus beschikbaar',\n      'Add to cart to unlock the free gifts for your selected model.': 'Voeg het product toe aan je winkelwagen om de gratis cadeaus voor je gekozen model te ontgrendelen.',\n      'ATK Jade Skates': 'ATK Jade muisskates',\n      'ATK Jade Mouse Skates': 'ATK Jade muisskates',\n      'ATK Esports Arm Sleeve': 'ATK Esports armsleeve',\n      'ATK Blaze Air Mouse Pad': 'ATK Blaze Air muismat',\n      'ATK X83 XSoft Mouse Pad': 'ATK X83 XSoft muismat',\n      'Free gift': 'Gratis cadeau'\n    },\n    pt: {\n      'Free Gifts Available': 'Brindes dispon\u00EDveis',\n      'Add to cart to unlock the free gifts for your selected model.': 'Adicione o produto ao carrinho para liberar os brindes do modelo selecionado.',\n      'ATK Jade Skates': 'Skates para mouse ATK Jade',\n      'ATK Jade Mouse Skates': 'Skates para mouse ATK Jade',\n      'ATK Esports Arm Sleeve': 'Manga de bra\u00E7o ATK Esports',\n      'ATK Blaze Air Mouse Pad': 'Mouse pad ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': 'Mouse pad ATK X83 XSoft',\n      'Free gift': 'Brinde'\n    },\n    sv: {\n      'Free Gifts Available': 'Gratisg\u00E5vor tillg\u00E4ngliga',\n      'Add to cart to unlock the free gifts for your selected model.': 'L\u00E4gg produkten i varukorgen f\u00F6r att l\u00E5sa upp gratisg\u00E5vorna f\u00F6r din valda modell.',\n      'ATK Jade Skates': 'ATK Jade musf\u00F6tter',\n      'ATK Jade Mouse Skates': 'ATK Jade musf\u00F6tter',\n      'ATK Esports Arm Sleeve': 'ATK Esports arm sleeve',\n      'ATK Blaze Air Mouse Pad': 'ATK Blaze Air musmatta',\n      'ATK X83 XSoft Mouse Pad': 'ATK X83 XSoft musmatta',\n      'Free gift': 'Gratisg\u00E5va'\n    },\n    tr: {\n      'Free Gifts Available': '\u00DCcretsiz hediyeler mevcut',\n      'Add to cart to unlock the free gifts for your selected model.': 'Se\u00E7ti\u011Finiz model i\u00E7in \u00FCcretsiz hediyeleri a\u00E7mak \u00FCzere \u00FCr\u00FCn\u00FC sepete ekleyin.',\n      'ATK Jade Skates': \"ATK Jade mouse skate'leri\",\n      'ATK Jade Mouse Skates': \"ATK Jade mouse skate'leri\",\n      'ATK Esports Arm Sleeve': 'ATK Esports kol kollu\u011Fu',\n      'ATK Blaze Air Mouse Pad': 'ATK Blaze Air mouse pad',\n      'ATK X83 XSoft Mouse Pad': 'ATK X83 XSoft mouse pad',\n      'Free gift': '\u00DCcretsiz hediye'\n    },\n    vi: {\n      'Free Gifts Available': 'C\u00F3 qu\u00E0 t\u1EB7ng mi\u1EC5n ph\u00ED',\n      'Add to cart to unlock the free gifts for your selected model.': 'Th\u00EAm s\u1EA3n ph\u1EA9m v\u00E0o gi\u1ECF h\u00E0ng \u0111\u1EC3 m\u1EDF kh\u00F3a qu\u00E0 t\u1EB7ng mi\u1EC5n ph\u00ED cho m\u1EABu b\u1EA1n \u0111\u00E3 ch\u1ECDn.',\n      'ATK Jade Skates': 'Feet chu\u1ED9t ATK Jade',\n      'ATK Jade Mouse Skates': 'Feet chu\u1ED9t ATK Jade',\n      'ATK Esports Arm Sleeve': '\u1ED0ng tay ATK Esports',\n      'ATK Blaze Air Mouse Pad': 'L\u00F3t chu\u1ED9t ATK Blaze Air',\n      'ATK X83 XSoft Mouse Pad': 'L\u00F3t chu\u1ED9t ATK X83 XSoft',\n      'Free gift': 'Qu\u00E0 t\u1EB7ng mi\u1EC5n ph\u00ED'\n    }\n  };\n\n  function currentLocale() {\n    return String(document.documentElement.lang || window.Shopify && window.Shopify.locale || '')\n      .toLowerCase()\n      .split('-')[0];\n  }\n\n  function localizeGiftOffer(root) {\n    var copies = COPY_BY_LOCALE[currentLocale()];\n    var walker;\n    var node;\n    var nodes = [];\n\n    if (!root || !copies) {\n      return;\n    }\n\n    walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);\n\n    while ((node = walker.nextNode())) {\n      nodes.push(node);\n    }\n\n    nodes.forEach(function(textNode) {\n      var text = textNode.nodeValue.trim();\n\n      if (copies[text]) {\n        textNode.nodeValue = textNode.nodeValue.replace(text, copies[text]);\n      }\n    });\n  }\n\n  function initGiftOffers(root) {\n    (root || document).querySelectorAll(GIFT_SELECTOR).forEach(localizeGiftOffer);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function() {\n      initGiftOffers(document);\n    });\n  } else {\n    initGiftOffers(document);\n  }\n\n  document.addEventListener('shopify:section:load', function(event) {\n    initGiftOffers(event.target);\n  });\n})();\n"],
  "mappings": "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",
  "names": ["node"]
}
