{"time":"2026-06-24T12:53:07.711Z","specifics":"<script>\n\n(function(){\ntry{\n/** file: addFreshNativeFunctions.js */\n\"use strict\";\n\nconst originalSetInterval = window.setInterval;\nconst originalSetTimeout = window.setTimeout;\nconst originalClearInterval = window.clearInterval;\nconst originalClearTimeout = window.clearTimeout;\nlet setInterval = originalSetInterval;\nlet setTimeout = originalSetTimeout;\nlet clearIntervalNative = originalClearInterval;\nlet clearTimeoutNative = originalClearTimeout;\nif (!originalSetInterval.toString().includes(\"[native code]\") || !originalSetTimeout.toString().includes(\"[native code]\") || !originalClearInterval.toString().includes(\"[native code]\") || !originalClearTimeout.toString().includes(\"[native code]\")) {\n  const iframe = document.createElement(\"iframe\");\n  Object.assign(iframe.style, {\n    position: \"fixed\",\n    width: \"1px\",\n    height: \"1px\",\n    border: \"none\",\n    top: \"-10px\",\n    left: \"-10px\",\n    visibility: \"hidden\",\n    pointerEvents: \"none\"\n  });\n  iframe.setAttribute(\"role\", \"presentation\");\n  iframe.setAttribute(\"sandbox\", \"allow-same-origin\");\n  document.body.appendChild(iframe);\n  iframe.src = \"about:blank\";\n  const iframeWindow = iframe.contentWindow;\n  if (iframeWindow) {\n    if (!originalSetInterval.toString().includes(\"[native code]\") && iframeWindow.setInterval) {\n      setInterval = iframeWindow.setInterval.bind(iframeWindow);\n    }\n    if (!originalSetTimeout.toString().includes(\"[native code]\") && iframeWindow.setTimeout) {\n      setTimeout = iframeWindow.setTimeout.bind(iframeWindow);\n    }\n    if (!originalClearInterval.toString().includes(\"[native code]\") && iframeWindow.clearInterval) {\n      clearIntervalNative = iframeWindow.clearInterval.bind(iframeWindow);\n    }\n    if (!originalClearTimeout.toString().includes(\"[native code]\") && iframeWindow.clearTimeout) {\n      clearTimeoutNative = iframeWindow.clearTimeout.bind(iframeWindow);\n    }\n  }\n}\n/** file: addSearchboxInstructions.js */\n\"use strict\";\n\nfunction addSearchboxInstructions(searchInput) {\n  let announcementMessage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"Results or suggestions will be displayed as they become available. Continue navigating to access them.\";\n  const newSpan = createSrOnlyElement();\n  newSpan.id = \"instructions\";\n  newSpan.textContent = announcementMessage;\n  searchInput.insertAdjacentElement(\"afterend\", newSpan);\n  searchInput.setAttribute(\"aria-describedby\", \"instructions\");\n}\n/** file: applyMenuAttributes.js */\n\"use strict\";\n\nfunction applyMenuAttributes(menu) {\n  menu.setAttribute(\"data-acsb-m-menu\", \"ul\");\n  menu.setAttribute(\"data-acsb-fake-menu\", \"true\");\n}\n/** file: applyMenuItemAttributes.js */\n\"use strict\";\n\nfunction applyMenuItemAttributes(menuItem) {\n  let {\n    alternativeMenu = true\n  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  if (alternativeMenu) {\n    forceAlternativeDropdown(menuItem);\n  }\n  menuItem.setAttribute(\"role\", \"menuitem\");\n  menuItem.setAttribute(\"data-acsb-menu-root\", \"true\");\n  menuItem.setAttribute(\"data-acsb-m-menu\", \"li\");\n  menuItem.setAttribute(\"data-acsb-menu\", \"li\");\n  menuItem.setAttribute(\"data-acsb-dropdown-container\", \"true\");\n}\n/** file: chatButtonAccessible.js */\n\"use strict\";\n\nfunction accessChatButton(iframe, skipLinks) {\n  let chatButtonSelector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n  let chatButtonTabHandler = arguments.length > 3 ? arguments[3] : undefined;\n  const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;\n  const chatButton = iframeDocument.querySelector(\"\".concat(chatButtonSelector ? chatButtonSelector : \"#mountHere\", \" button\"));\n  const skipLinksContainer = skipLinks.shadowRoot.querySelector(\".skip-links\");\n  const skipLink = skipLinksContainer.querySelector(\"div\");\n  const clone = skipLink.cloneNode(true);\n  const link = clone.querySelector(\"a\");\n  link.addEventListener(\"keydown\", event => {\n    if (event.key === \"Enter\") {\n      chatButton.focus();\n      chatButton.setAttribute(\"data-acsb-focused\", \"true\");\n      chatButton.style.borderColor = \"#639af9\";\n    }\n  });\n  link.addEventListener(\"click\", () => {\n    chatButton.focus();\n    chatButton.setAttribute(\"data-acsb-focused\", \"true\");\n    chatButton.style.borderColor = \"#639af9\";\n  });\n  if (chatButtonTabHandler) {\n    chatButton.addEventListener(\"keydown\", event => {\n      if (event.code === \"Tab\" && !event.shiftKey) {\n        event.preventDefault();\n        chatButtonTabHandler();\n      }\n    });\n  }\n  link.childNodes[0].textContent = \"Skip to Chat\";\n  link.href = chatButtonSelector ? chatButtonSelector : \"#gorgias-chat-container\";\n  skipLinksContainer.appendChild(clone);\n}\n/** file: connectMenuToMenuItem.js */\n\"use strict\";\n\nfunction connectMenuToMenuItem(_ref) {\n  let {\n    menuItem,\n    menu,\n    applyWrappingMenuItem = false,\n    alternativeMenu = true,\n    removeOriginalMenu = true\n  } = _ref;\n  let currentMenuItem = menuItem;\n  if (applyWrappingMenuItem) {\n    currentMenuItem = wrappMenuItem(menuItem);\n  }\n  const clonedMenu = menu.cloneNode(true);\n  currentMenuItem.appendChild(clonedMenu);\n  applyMenuItemAttributes(currentMenuItem, {\n    alternativeMenu\n  });\n  if (removeOriginalMenu) {\n    menu.remove();\n  }\n  return clonedMenu;\n}\nfunction wrappMenuItem(menuItem) {\n  const div = document.createElement(\"div\");\n  menuItem.before(div);\n  const clonedMenuItem = menuItem.cloneNode(true);\n  div.appendChild(clonedMenuItem);\n  menuItem.remove();\n  applyMenuItemAttributes(div);\n  return div;\n}\nfunction forceAlternativeDropdown(listItem) {\n  const fakeMenu1 = document.createElement(\"div\");\n  const fakeMenu2 = document.createElement(\"div\");\n  fakeMenu1.setAttribute(\"data-acsb-menu\", \"ul\");\n  fakeMenu2.setAttribute(\"data-acsb-menu\", \"ul\");\n  listItem.appendChild(fakeMenu1);\n  listItem.appendChild(fakeMenu2);\n}\n/** file: createLiveRegion.js */\n\"use strict\";\n\nfunction createLiveRegion(ariaLive, container) {\n  const span = document.createElement(\"span\");\n  span.className = \"acsb-sr-only\";\n  span.setAttribute(\"data-acsb-force-visible\", \"true\");\n  if (ariaLive) {\n    span.setAttribute(\"aria-live\", ariaLive);\n  }\n  if (container) {\n    container.append(span);\n  }\n  return span;\n}\n/** file: createSrOnlyElement.js */\n\"use strict\";\n\nfunction createSrOnlyElement() {\n  const srOnlyElement = document.createElement(\"span\");\n  srOnlyElement.style.position = \"absolute\";\n  srOnlyElement.style.width = \"1px\";\n  srOnlyElement.style.height = \"1px\";\n  srOnlyElement.style.padding = \"0\";\n  srOnlyElement.setAttribute(\"data-acsb-force-visible\", \"true\");\n  srOnlyElement.style.margin = \"-1px\";\n  srOnlyElement.style.overflow = \"hidden\";\n  srOnlyElement.style.clip = \"rect(0, 0, 0, 0)\";\n  srOnlyElement.style.whiteSpace = \"nowrap\";\n  srOnlyElement.style.borderWidth = \"0\";\n  srOnlyElement.setAttribute(\"data-acsb-force-visible\", \"true\");\n  return srOnlyElement;\n}\n/** file: forceNavigable.js */\n\"use strict\";\n\nfunction forceNavigable(element) {\n  element.setAttribute(\"data-acsb-now-navigable\", \"true\");\n  element.setAttribute(\"data-acsb-navigable\", \"true\");\n  element.setAttribute(\"data-acsb-force-navigable\", \"true\");\n  element.setAttribute(\"tabindex\", \"0\");\n}\n/** file: forceUnnavigable.js */\n\"use strict\";\n\nfunction forceUnnavigable(el) {\n  el.setAttribute(\"tabindex\", \"-1\");\n  el.setAttribute(\"data-acsb-force-unnavigable\", \"true\");\n  el.setAttribute(\"data-acsb-navigable\", \"false\");\n  el.setAttribute(\"data-acsb-now-navigable\", \"false\");\n}\n/** file: isMobile.js */\n\"use strict\";\n\nfunction isMobile() {\n  var _navigator, _window, _navigator2, _navigator3;\n  const userAgent = navigator.userAgent || ((_navigator = navigator) === null || _navigator === void 0 ? void 0 : _navigator.vendor) || ((_window = window) === null || _window === void 0 ? void 0 : _window.opera);\n  const isMobileUserAgent = /android|iphone|ipad|ipod|blackberry|bb|playbook|iemobile|opera mini|webos|windows phone/i.test(userAgent);\n  const hasTouchSupport = \"ontouchstart\" in window || navigator.maxTouchPoints && navigator.maxTouchPoints > 0 || ((_navigator2 = navigator) === null || _navigator2 === void 0 ? void 0 : _navigator2.msMaxTouchPoints) && ((_navigator3 = navigator) === null || _navigator3 === void 0 ? void 0 : _navigator3.msMaxTouchPoints) > 0;\n  const isSmallScreen = window.matchMedia(\"(max-width: 768px)\").matches;\n  const isPortrait = window.matchMedia(\"(orientation: portrait)\").matches;\n  const isCoarsePointer = window.matchMedia(\"(pointer: coarse)\").matches;\n  const noHover = window.matchMedia(\"(hover: none)\").matches;\n  const likelyMobile = isMobileUserAgent || hasTouchSupport && (isSmallScreen || isPortrait) || isCoarsePointer || noHover;\n  return likelyMobile;\n}\n/** file: profileEnabledInterval.js */\n\"use strict\";\n\nfunction profileEnabledInterval(profile, cb) {\n  let {\n    interval = 1000,\n    clearAfterTimeout = true,\n    timeout = 15000\n  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const intervalId = setInterval(() => {\n    var _acsbState$actions;\n    const acsbState = JSON.parse(localStorage.acsbState || \"{}\");\n    if (acsbState !== null && acsbState !== void 0 && (_acsbState$actions = acsbState.actions) !== null && _acsbState$actions !== void 0 && (_acsbState$actions = _acsbState$actions[profile]) !== null && _acsbState$actions !== void 0 && _acsbState$actions.enabled) {\n      try {\n        const shouldClear = cb();\n        if (shouldClear) {\n          clearInterval(intervalId);\n        }\n      } catch (error) {\n        clearInterval(intervalId);\n        window.dispatchEvent(new CustomEvent(\"acsbWidgetSpecificsError\", {\n          detail: error\n        }));\n      }\n    }\n  }, interval);\n  if (clearAfterTimeout) {\n    setTimeout(() => {\n      clearInterval(intervalId);\n    }, timeout);\n  }\n}\n/** file: setWidgetSpecificsOptions.js */\n\"use strict\";\n\nconst _window = window;\nfunction setWidgetSpecificsOptions(options) {\n  if (!_window.accessWidgetSpecificsOptions) {\n    _window.accessWidgetSpecificsOptions = {\n      ...options,\n      enable: true,\n      disableLegacy: typeof options.disableLegacy === \"object\" ? {\n        ...options.disableLegacy\n      } : options.disableLegacy,\n      modifications: options.modifications ? {\n        classifier: options.modifications.classifier ? [...options.modifications.classifier] : undefined,\n        auditor: options.modifications.auditor ? [...options.modifications.auditor] : undefined\n      } : undefined\n    };\n    return;\n  }\n  const current = _window.accessWidgetSpecificsOptions;\n  current.enable = true;\n  if (options.disableLegacy !== undefined) {\n    const shouldFullyDisable = options.disableLegacy === true || current.disableLegacy === true;\n    if (shouldFullyDisable) {\n      current.disableLegacy = true;\n    } else if (typeof options.disableLegacy === \"object\") {\n      current.disableLegacy = {\n        ...(typeof current.disableLegacy === \"object\" ? current.disableLegacy : {}),\n        ...options.disableLegacy\n      };\n    }\n  }\n  if (typeof options.onReady === \"function\") {\n    if (typeof current.onReady === \"function\") {\n      const previousOnReady = current.onReady;\n      current.onReady = () => {\n        var _options$onReady;\n        previousOnReady();\n        (_options$onReady = options.onReady) === null || _options$onReady === void 0 || _options$onReady.call(options);\n      };\n    } else {\n      current.onReady = options.onReady;\n    }\n  }\n  if (options.modifications) {\n    if (!current.modifications) {\n      current.modifications = {};\n    }\n    if (options.modifications.classifier) {\n      current.modifications.classifier = [...(current.modifications.classifier || []), ...(options.modifications.classifier || [])];\n    }\n    if (options.modifications.auditor) {\n      current.modifications.auditor = [...(current.modifications.auditor || []), ...(options.modifications.auditor || [])];\n    }\n  }\n}\n/** file: trapFocus.js */\n\"use strict\";\n\nfunction trapFocus(container) {\n  let interactives = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [\"a[href]\", \"button\", \"input\", \"select\", \"textarea\", '[tabindex]:not([tabindex=\"-1\"])'];\n  let filteringCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n  let trigger = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n  let closeSelector = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n  let onClose = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n  let onClosePreventDefault = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n  if (!container) return;\n  if (getAllFocusableElementsAsAnArray().length === 0) return;\n  function keydownTrapHandler(event) {\n    const allFocusableElements = getAllFocusableElementsAsAnArray();\n    if (allFocusableElements.length === 0) return;\n    const [firstElement] = allFocusableElements;\n    const [lastElement] = allFocusableElements.slice(-1);\n    if ((event === null || event === void 0 ? void 0 : event.code) === \"Tab\") {\n      if (event !== null && event !== void 0 && event.shiftKey) {\n        if (document.activeElement === firstElement) {\n          event.preventDefault();\n          lastElement === null || lastElement === void 0 || lastElement.focus();\n        }\n      } else {\n        if (document.activeElement === lastElement) {\n          event.preventDefault();\n          firstElement === null || firstElement === void 0 || firstElement.focus();\n        }\n      }\n    } else if (event.code === \"Escape\" && closeSelector) {\n      keydownCloseHandler(event);\n    }\n  }\n  container.addEventListener(\"keydown\", keydownTrapHandler);\n  function removeTrapFocus() {\n    container.removeEventListener(\"keydown\", keydownTrapHandler);\n  }\n  function getCloseButton() {\n    if (!closeSelector) return false;\n    const closeButton = container.querySelector(closeSelector);\n    if (!closeButton) return false;\n    return closeButton;\n  }\n  const closeButton = getCloseButton();\n  if (closeButton) {\n    closeButton.addEventListener(\"click\", keydownCloseHandler);\n    closeButton.addEventListener(\"keydown\", keydownCloseHandler);\n  }\n  function keydownCloseHandler(event) {\n    if (event.type === \"click\" || [\"Enter\", \"Space\", \"Escape\"].includes(event.code)) {\n      if (onClosePreventDefault) event.preventDefault();\n      trigger === null || trigger === void 0 || trigger.focus();\n      onClose === null || onClose === void 0 || onClose();\n    }\n  }\n  function removeCloseHandler() {\n    if (!closeButton) return;\n    closeButton.removeEventListener(\"click\", keydownCloseHandler);\n    closeButton.removeEventListener(\"keydown\", keydownCloseHandler);\n  }\n  function getAllFocusableElementsAsAnArray() {\n    let elements = Array.from(container.querySelectorAll(interactives.join(\", \")));\n    if (filteringCallback) {\n      elements = elements.filter(filteringCallback);\n    }\n    return elements;\n  }\n  return {\n    removeTrapFocus,\n    removeCloseHandler,\n    getAllFocusableElementsAsAnArray\n  };\n}\n\n/** file: block-infinite-scroll.js */\n(function(){\ntry{\n\"use strict\";\n\nAJS.events.on(window, \"acsbActionEnabling\", function (e) {\n  if (e.detail.action === \"keyNav\") {\n    const LoadMoreButtonClass = window.customElements.get(\"load-more-button\");\n    if (LoadMoreButtonClass) {\n      const originalOnClick = LoadMoreButtonClass.prototype.onClick;\n      if (originalOnClick) {\n        LoadMoreButtonClass.prototype.onClick = function (eventOrIntersectionEntry) {\n          if (eventOrIntersectionEntry.isIntersecting) {\n            return;\n          }\n          if (typeof originalOnClick === \"function\") {\n            originalOnClick.apply(this, arguments);\n          }\n        };\n        const originalLoadMoreButton = document.querySelector('button[is=\"load-more-button\"]');\n        if (originalLoadMoreButton) {\n          const patchedLoadMoreButton = originalLoadMoreButton.cloneNode(true);\n          originalLoadMoreButton.replaceWith(patchedLoadMoreButton);\n          const styleElementId = \"acsb-style-fix-load-more-button-hover\";\n          if (!document.getElementById(styleElementId)) {\n            const styleElement = document.createElement(\"style\");\n            styleElement.id = styleElementId;\n            styleElement.textContent = \"button[is=\\\"load-more-button\\\"]:before {\\n              z-index: -1;\\n            }\";\n            document.head.appendChild(styleElement);\n          }\n        }\n      }\n    }\n  }\n});\n}catch(ex){}\n})();\n/** file: cart-dialog-announcement.js */\n(function(){\ntry{\n\"use strict\";\n\nif (!isMobile()) {\n  profileEnabledInterval(\"accessMode\", () => {\n    const cartDrawer = document.querySelector(\"#CartDrawer\");\n    if (!cartDrawer) return false;\n    const innerDialog = cartDrawer.querySelector(\".drawer__inner\") || cartDrawer.querySelector(\".drawer__contents\") || cartDrawer.firstElementChild;\n    if (!innerDialog) return false;\n    const cartCount = document.querySelector(\"cart-count\");\n    if (!cartCount) return false;\n    const applyDialogAttributes = () => {\n      innerDialog.setAttribute(\"data-acsb-overlay\", \"popup\");\n      innerDialog.setAttribute(\"role\", \"dialog\");\n      const headingContainer = innerDialog.querySelector(\".drawer__heading\");\n      const label = (headingContainer === null || headingContainer === void 0 ? void 0 : headingContainer.textContent.trim()) || \"Your Cart\";\n      if (innerDialog.getAttribute(\"aria-label\") !== label) {\n        innerDialog.setAttribute(\"aria-label\", label);\n      }\n    };\n    applyDialogAttributes();\n    const cartCountObserver = new MutationObserver(() => {\n      applyDialogAttributes();\n    });\n    cartCountObserver.observe(cartCount, {\n      childList: true,\n      characterData: true\n    });\n    return true;\n  });\n}\n}catch(ex){}\n})();\n/** file: checkbox-accessible.js */\n(function(){\ntry{\n\"use strict\";\n\nif (window.location.pathname.includes(\"/collections\")) {\n  profileEnabledInterval(\"accessMode\", () => {\n    const grid = document.querySelector(\"#FacetsWrapperDesktop [id^='Facet-1-template--'][id$='__product-grid']\");\n    if (grid) {\n      handleClickEvent(grid);\n      const filter = document.querySelector(\"#FacetsWrapperDesktop>.active-facets.active-facets-desktop\");\n      function filterCallback(mutations) {\n        mutations.forEach(() => {\n          handleClickEvent(grid);\n        });\n      }\n      const filterObserver = new MutationObserver(filterCallback);\n      filterObserver.observe(filter, {\n        childList: true\n      });\n      const observer = new MutationObserver(filterCallback);\n      observer.observe(grid, {\n        childList: true\n      });\n      return true;\n    }\n  });\n}\nfunction handleClickEvent(grid) {\n  const inputs = grid.querySelectorAll(\"ul input\");\n  inputs.forEach(input => {\n    input.addEventListener(\"keydown\", e => {\n      if (e.code === \"Enter\" || e.code === \"Space\") {\n        e.preventDefault();\n        e.stopImmediatePropagation();\n        input.click();\n      }\n    });\n  });\n}\n}catch(ex){}\n})();\n/** file: checkout-control-announcement.js */\n(function(){\ntry{\n\"use strict\";\n\nprofileEnabledInterval(\"accessMode\", () => {\n  const cartDrawer = document.querySelector(\"#CartDrawer\");\n  if (cartDrawer) {\n    const checkoutButton = cartDrawer.querySelector(\".drawer__footer-buttons button[name='checkout']\");\n    if (checkoutButton) {\n      checkoutButton.setAttribute(\"role\", \"link\");\n    }\n    const observer = new MutationObserver(mutations => {\n      mutations.forEach(mutation => {\n        const target = mutation.target;\n        if (mutation.type === \"childList\") {\n          mutation.addedNodes.forEach(node => {\n            if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains(\"drawer__footer-body\")) {\n              setTimeout(() => {\n                const checkoutButton = node.querySelector(\"button[name='checkout']\");\n                if (checkoutButton) {\n                  checkoutButton.setAttribute(\"role\", \"link\");\n                }\n              }, 500);\n            }\n          });\n        }\n        if (mutation.type === \"attributes\") {\n          if (mutation.attributeName === \"role\" && target.tagName === \"BUTTON\" && target.getAttribute(\"name\") === \"checkout\" && target.getAttribute(\"role\") !== \"link\") {\n            target.setAttribute(\"role\", \"link\");\n          }\n        }\n      });\n    });\n    observer.observe(cartDrawer, {\n      attributes: true,\n      attributeFilter: [\"role\"],\n      childList: true,\n      subtree: true\n    });\n    return true;\n  }\n});\n}catch(ex){}\n})();\n/** file: fix-cart-control-announcement.js */\n(function(){\ntry{\n\"use strict\";\n\nif (!isMobile()) {\n  setWidgetSpecificsOptions({\n    enable: true,\n    modifications: {\n      classifier: [{\n        type: \"detection\",\n        selector: \"a.cart-drawer-button\",\n        detectorId: \"perceivable-component-button\",\n        expected: true\n      }, {\n        type: \"ignore\",\n        selector: \"a.cart-drawer-button\"\n      }]\n    }\n  });\n  AJS.events.on(window, \"acsbActionEnabling\", function (e) {\n    if (e.detail.action === \"keyNav\") {\n      const cartControl = document.querySelector(\"a.cart-drawer-button\");\n      if (cartControl) {\n        cartControl.setAttribute(\"data-acsb\", \"\");\n      }\n    }\n  });\n  profileEnabledInterval(\"accessMode\", () => {\n    const cartControl = document.querySelector(\"a.cart-drawer-button\");\n    const cartControlCount = cartControl === null || cartControl === void 0 ? void 0 : cartControl.querySelector(\"cart-count\");\n    if (cartControl && cartControlCount) {\n      const updateAttributes = el => {\n        if (!el.getAttribute(\"role\") || el.getAttribute(\"role\") !== \"button\") {\n          el.setAttribute(\"role\", \"button\");\n        }\n        if (!el.getAttribute(\"aria-haspopup\") || el.getAttribute(\"aria-haspopup\") !== \"dialog\") {\n          el.setAttribute(\"aria-haspopup\", \"dialog\");\n        }\n      };\n      updateAttributes(cartControl);\n      const observer = new MutationObserver(mutations => {\n        mutations.forEach(mutation => {\n          if (mutation.type === \"attributes\") {\n            updateAttributes(mutation.target);\n          }\n        });\n      });\n      observer.observe(cartControl, {\n        attributes: true,\n        attributeFilter: [\"role\", \"aria-haspopup\"]\n      });\n      const applyAriaLabel = () => {\n        let label = \"Cart\";\n        const count = cartControlCount.textContent.trim();\n        if (count && count !== \"0\") {\n          label += \" \" + count + \" item\" + (count > 1 ? \"s\" : \"\");\n        }\n        cartControl.setAttribute(\"aria-label\", label);\n      };\n      applyAriaLabel();\n      const cartCountObserver = new MutationObserver(() => {\n        applyAriaLabel();\n      });\n      cartCountObserver.observe(cartControlCount, {\n        childList: true,\n        characterData: true\n      });\n      return true;\n    }\n  });\n}\n}catch(ex){}\n})();\n/** file: fix-inc-dec-btn.js */\n(function(){\ntry{\n\"use strict\";\n\nif (window.location.pathname.includes(\"/collections\")) {\n  profileEnabledInterval(\"accessMode\", () => {\n    const ul = document.querySelector(\"#product-grid\");\n    const listItems = ul.querySelectorAll(\".grid__item\");\n    if (listItems.length > 0) {\n      listItems.forEach(listItem => {\n        const quantityContainer = listItem.querySelector(\"quantity-input\");\n        if (quantityContainer) {\n          const heading = listItem.querySelector(\".card__heading\");\n          const headingText = heading.innerText.trim();\n          const decBtn = quantityContainer.querySelector(\".quantity__button[name='minus']\");\n          const incBtn = quantityContainer.querySelector(\".quantity__button[name='plus']\");\n          const inputField = quantityContainer.querySelector(\".quantity__input\");\n          if (decBtn && incBtn && headingText && inputField) {\n            decBtn.setAttribute(\"aria-label\", \"Decrease quantity for \".concat(headingText));\n            incBtn.setAttribute(\"aria-label\", \"Increase quantity for \".concat(headingText));\n            inputField.setAttribute(\"aria-label\", \"Quantity for \".concat(headingText));\n            inputField.setAttribute(\"placeholder\", \"Quantity for \".concat(headingText));\n            inputField.setAttribute(\"data-acsb-tooltip\", \"Quantity for \".concat(headingText));\n          }\n        }\n      });\n      return true;\n    }\n  });\n}\n}catch(ex){}\n})();\n/** file: fix-menu.js */\n(function(){\ntry{\n\"use strict\";\n\nAJS.events.on(window, \"acsbActionEnabling\", function (e) {\n  if (e.detail.action === \"keyNav\") {\n    const menu = document.querySelector(\"nav.header__inline-menu ul\");\n    if (!menu) return;\n    handleMenus(menu);\n  }\n});\nfunction handleMenus(menu) {\n  applyMenuAttributes(menu);\n  const menuItems = menu.querySelectorAll(\"li\");\n  menuItems.forEach(menuItem => {\n    const menuHeading = menuItem.querySelector(\"summary\");\n    const ul = menuItem.querySelector(\"ul.header__submenu\");\n    if (menuHeading && ul) {\n      menuHeading.setAttribute(\"data-acsb-menu-root-link\", \"true\");\n      menuHeading.setAttribute(\"role\", \"button\");\n      menuHeading.setAttribute(\"tabindex\", \"0\");\n      ul.classList.add(\"ascb__header__submenu__hidden\");\n    }\n    applyMenuItemAttributes(menuItem, {\n      alternativeMenu: true\n    });\n    setTimeout(() => {\n      const ul = menuItem.querySelector(\"ul\");\n      if (ul) {\n        ul.style.visibility = \"hidden\";\n      }\n    }, 0);\n  });\n}\n}catch(ex){}\n})();\n/** file: fix-search-dialog.js */\n(function(){\ntry{\n\"use strict\";\n\nfunction toggleDialogAttributes(_ref) {\n  let {\n    dialogElement,\n    isOpen,\n    abortController\n  } = _ref;\n  if (!isOpen) {\n    [\"role\", \"aria-modal\", \"aria-label\"].forEach(attribute => {\n      dialogElement.removeAttribute(attribute);\n    });\n  } else {\n    dialogElement.setAttribute(\"role\", \"dialog\");\n    dialogElement.setAttribute(\"aria-modal\", \"true\");\n    dialogElement.setAttribute(\"aria-label\", \"Search\");\n    dialogElement.addEventListener(\"keydown\", event => {\n      if (event.code === \"Escape\") {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        const closeBtn = dialogElement.querySelector(\".header__search-close\");\n        closeBtn === null || closeBtn === void 0 || closeBtn.click();\n        return;\n      }\n      if (event.code !== \"Tab\") {\n        return;\n      }\n      const focusableElements = dialogElement.querySelectorAll(\"input[type='search'], .header__search-close\");\n      if (focusableElements.length === 0) {\n        return;\n      }\n      const first = focusableElements[0];\n      const last = focusableElements[focusableElements.length - 1];\n      if (event.shiftKey) {\n        if (document.activeElement === first) {\n          event.preventDefault();\n          last.focus();\n        }\n      } else {\n        if (document.activeElement === last) {\n          event.preventDefault();\n          first.focus();\n        }\n      }\n    }, {\n      signal: abortController.signal\n    });\n  }\n}\nfunction fixSearchResultsProductCards(containerElement) {\n  const productLinkImages = containerElement.querySelectorAll(\".product-card__image-wrapper > a\");\n  productLinkImages.forEach(productLinkImage => {\n    forceUnnavigable(productLinkImage);\n  });\n}\nprofileEnabledInterval(\"accessMode\", () => {\n  const headerSearchContainerElement = document.querySelector(\".header__search\");\n  const searchInputElement = headerSearchContainerElement === null || headerSearchContainerElement === void 0 ? void 0 : headerSearchContainerElement.querySelector(\".header__search input[type='search']\");\n  const searchBtn = headerSearchContainerElement === null || headerSearchContainerElement === void 0 ? void 0 : headerSearchContainerElement.querySelector(\".search__icon-search\");\n  if (!headerSearchContainerElement || !searchInputElement || !searchBtn) {\n    return false;\n  }\n  let abortController = new AbortController();\n  let isSearchDialogObserving = false;\n  addSearchboxInstructions(searchInputElement);\n  const searchDialogObserver = new MutationObserver(() => {\n    if (headerSearchContainerElement.getAttribute(\"role\") !== \"dialog\") {\n      headerSearchContainerElement.setAttribute(\"role\", \"dialog\");\n      headerSearchContainerElement.setAttribute(\"aria-modal\", \"true\");\n      headerSearchContainerElement.setAttribute(\"aria-label\", \"Search\");\n    }\n  });\n  searchInputElement.addEventListener(\"blur\", () => {\n    searchDialogObserver.disconnect();\n    isSearchDialogObserving = false;\n  });\n  const searchObserver = new MutationObserver(mutations => {\n    mutations.forEach(_ref2 => {\n      let {\n        target,\n        attributeName,\n        addedNodes\n      } = _ref2;\n      if (attributeName === \"class\" && target === document.body) {\n        const isSearchOpen = document.body.classList.contains(\"search-open\");\n        abortController.abort();\n        abortController = new AbortController();\n        if (isSearchOpen) {\n          if (!isSearchDialogObserving) {\n            searchDialogObserver.observe(headerSearchContainerElement, {\n              attributes: true,\n              attributeFilter: [\"role\"]\n            });\n          }\n          fixSearchResultsProductCards(headerSearchContainerElement);\n          setTimeout(() => {\n            if (!headerSearchContainerElement.contains(document.activeElement)) {\n              searchInputElement.focus();\n            }\n          }, 1000);\n        } else {\n          searchDialogObserver.disconnect();\n          isSearchDialogObserving = false;\n        }\n        toggleDialogAttributes({\n          dialogElement: headerSearchContainerElement,\n          isOpen: isSearchOpen,\n          abortController\n        });\n        return;\n      }\n      addedNodes.forEach(node => {\n        var _node$id, _node$parentElement;\n        if (node.nodeType !== Node.ELEMENT_NODE) {\n          return;\n        }\n        if ((_node$id = node.id) !== null && _node$id !== void 0 && _node$id.startsWith(\"sr-hint\")) {\n          node.remove();\n          return;\n        }\n        if ((_node$parentElement = node.parentElement) !== null && _node$parentElement !== void 0 && (_node$parentElement = _node$parentElement.getAttribute(\"id\")) !== null && _node$parentElement !== void 0 && _node$parentElement.startsWith(\"PredictiveSearchResults-sections\")) {\n          setTimeout(() => {\n            fixSearchResultsProductCards(node);\n          }, 100);\n          return;\n        }\n      });\n    });\n  });\n  searchObserver.observe(document.body, {\n    attributes: true,\n    attributeFilter: [\"class\"]\n  });\n  searchObserver.observe(headerSearchContainerElement, {\n    childList: true,\n    subtree: true\n  });\n  const resetBtn = headerSearchContainerElement.querySelector(\".search__reset\");\n  const searchCloseBtn = headerSearchContainerElement.querySelector(\".header__search-close\");\n  if (searchCloseBtn) {\n    searchCloseBtn.addEventListener(\"click\", () => {\n      setTimeout(() => {\n        if (searchInputElement.value.trim().length > 0) {\n          resetBtn === null || resetBtn === void 0 || resetBtn.focus();\n        } else {\n          searchBtn.focus();\n        }\n      }, 250);\n    });\n  }\n  searchBtn.addEventListener(\"keydown\", event => {\n    if (event.code === \"Tab\" && event.shiftKey) {\n      searchDialogObserver.observe(headerSearchContainerElement, {\n        attributes: true,\n        attributeFilter: [\"role\"]\n      });\n      isSearchDialogObserving = true;\n      headerSearchContainerElement.setAttribute(\"role\", \"dialog\");\n      headerSearchContainerElement.setAttribute(\"aria-modal\", \"true\");\n      headerSearchContainerElement.setAttribute(\"aria-label\", \"Search\");\n    }\n  });\n  return true;\n});\n}catch(ex){}\n})();\n/** file: fix-submenu-announcement.js */\n(function(){\ntry{\n\"use strict\";\n\nAJS.events.on(window, \"acsbActionEnabling\", function (e) {\n  if (e.detail.action === \"keyNav\") {\n    const ul = document.querySelector(\".list-menu.list-menu--inline\");\n    if (ul) {\n      const details = ul.querySelector(\"details\");\n      if (details) {\n        const div1 = document.createElement(\"div\");\n        Array.from(details.attributes).forEach(attr => div1.setAttribute(attr.name, attr.value));\n        div1.innerHTML = details.innerHTML;\n        details.parentNode.replaceChild(div1, details);\n        setTimeout(() => {\n          const summary = div1.querySelector(\"summary\");\n          const submenu = div1.querySelector(\"[aria-label='Submenu']\");\n          const shadowRoot = submenu.shadowRoot;\n          const targetElement = shadowRoot.querySelector(\"ul\");\n          if (targetElement) {\n            const observer = new MutationObserver(mutationsList => {\n              for (const mutation of mutationsList) {\n                if (mutation.type === \"attributes\" && mutation.attributeName === \"style\") {\n                  const computedStyle = window.getComputedStyle(targetElement);\n                  if (computedStyle.display === \"none\") {\n                    summary.setAttribute(\"aria-expanded\", \"false\");\n                  }\n                }\n              }\n            });\n            observer.observe(targetElement, {\n              attributes: true,\n              attributeFilter: [\"style\"]\n            });\n          }\n        }, 1000);\n      }\n    }\n  }\n});\n}catch(ex){}\n})();\n/** file: product-customization-controls-announcement.js */\n(function(){\ntry{\n\"use strict\";\n\nif (window.location.pathname.includes(\"/products/\")) {\n  if (!window.accessWidgetSpecificsOptions) {\n    window.accessWidgetSpecificsOptions = {\n      enable: true\n    };\n  }\n  window.accessWidgetSpecificsOptions.modifications = window.accessWidgetSpecificsOptions.modifications || {};\n  window.accessWidgetSpecificsOptions.modifications.classifier = window.accessWidgetSpecificsOptions.modifications.classifier || [];\n  window.accessWidgetSpecificsOptions.modifications.classifier.push({\n    type: \"ignore\",\n    selector: \"variant-selects\"\n  });\n  profileEnabledInterval(\"accessMode\", () => {\n    const productBlock = document.querySelector(\".product__block--variant_picker\");\n    const productCustomizationContainer = document.querySelector(\"variant-selects\");\n    let selectedLabel = null;\n    if (productBlock && productCustomizationContainer) {\n      function fixInputs() {\n        const inputs = document.querySelectorAll(\"variant-selects input[type='radio']\");\n        inputs.forEach(input => {\n          input.setAttribute(\"tabindex\", \"-1\");\n          input.setAttribute(\"aria-hidden\", \"true\");\n          input.style.visibility = \"hidden\";\n        });\n      }\n      function fixLabels() {\n        const labels = document.querySelectorAll(\"variant-selects label\");\n        labels.forEach(label => {\n          const input = label.previousElementSibling;\n          if (!input) return;\n          label.setAttribute(\"tabindex\", \"0\");\n          label.setAttribute(\"role\", \"radio\");\n          label.setAttribute(\"aria-checked\", input.checked ? \"true\" : \"false\");\n          if (!label.hasAttribute(\"data-acsb-keydown-added\")) {\n            label.setAttribute(\"data-acsb-keydown-added\", \"true\");\n            label.addEventListener(\"keydown\", e => {\n              if (e.code === \"Enter\" || e.code === \"Space\") {\n                e.preventDefault();\n                e.stopPropagation();\n                e.stopImmediatePropagation();\n                selectedLabel = label.getAttribute(\"for\") || null;\n                input.checked = true;\n                input.dispatchEvent(new Event(\"change\", {\n                  bubbles: true\n                }));\n                setTimeout(() => {\n                  const labelToFocus = document.querySelector(\"variant-selects label[for=\\\"\".concat(selectedLabel, \"\\\"]\"));\n                  if (labelToFocus) {\n                    labelToFocus.focus();\n                    selectedLabel = null;\n                  }\n                }, 3000);\n              }\n            });\n            label.addEventListener(\"click\", () => {\n              input.checked = true;\n              input.dispatchEvent(new Event(\"change\", {\n                bubbles: true\n              }));\n            });\n          }\n        });\n      }\n      fixInputs();\n      fixLabels();\n      const observer = new MutationObserver(mutations => {\n        mutations.forEach(mutation => {\n          mutation.addedNodes.forEach(node => {\n            if (node.nodeType === Node.ELEMENT_NODE && node.tagName === \"VARIANT-SELECTS\") {\n              setTimeout(() => {\n                fixInputs();\n                fixLabels();\n              }, 1000);\n            }\n          });\n        });\n      });\n      observer.observe(productBlock, {\n        childList: true,\n        subtree: true\n      });\n      return true;\n    }\n  });\n}\n}catch(ex){}\n})();\n/** file: promotion-link-focus.js */\n(function(){\ntry{\n\"use strict\";\n\nprofileEnabledInterval(\"accessMode\", () => {\n  const promotionBarLinks = document.querySelectorAll(\".announcement-bar__link\");\n  if (promotionBarLinks !== null && promotionBarLinks !== void 0 && promotionBarLinks.length) {\n    const promotionLinkObserver = new MutationObserver(mutationCallback);\n    const mutationConfig = {\n      attributes: true,\n      attributeFilter: [\"data-acsb-focused\"]\n    };\n    promotionBarLinks.forEach(promotionBarLink => {\n      promotionLinkObserver.observe(promotionBarLink, mutationConfig);\n    });\n    function mutationCallback(mutationList) {\n      mutationList.forEach(mutation => {\n        if (Boolean(mutation.target.getAttribute(\"data-acsb-focused\"))) {\n          mutation.target.parentElement.style = \"border: solid 3px #639af9 !important;\";\n        } else {\n          mutation.target.parentElement.style = \"border: none\";\n        }\n      });\n    }\n    return true;\n  }\n});\n}catch(ex){}\n})();\n\n}catch(ex){}\n})();\n\n</script><style>\n/** file: sub-menu.css */\nheader ul.ascb__header__submenu__hidden{\n    opacity: 0 !important;\n}\n\n</style>","addonAnalytics":true,"blockMeta":false,"blockImages":false,"blockStyles":true,"blockTextSimplifier":false,"widgetSettings":null,"featureFlags":{"text-simplifier":false,"ai-assistant":false,"classification-provider":false}}