{"time":"2026-05-24T10:21:14.637Z","specifics":"<script>\n\n(function(){\ntry{\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\n/** file: fix-cart-add-success-message-announcement.js */\n(function(){\ntry{\n\"use strict\";\n\nprofileEnabledInterval(\"accessMode\", () => {\n  const addToCartBtn = document.getElementById(\"product-addtocart-button\");\n  const messagesContainer = document.getElementById(\"messages\");\n  if (!addToCartBtn || !messagesContainer) return false;\n  const liveRegionContainer = addToCartBtn.parentElement;\n  let liveRegion;\n  if (liveRegionContainer) {\n    liveRegion = createLiveRegion(\"polite\", liveRegionContainer);\n  }\n  let toggle = false;\n  function announceMessage(message) {\n    if (liveRegion) {\n      liveRegion.textContent = \"\";\n      setTimeout(() => {\n        liveRegion.textContent = toggle ? message + \"\\u200B\" : message + \".\";\n        toggle = !toggle;\n      }, 0);\n    }\n  }\n  const observer = new MutationObserver(mutations => {\n    mutations.forEach(mutation => {\n      mutation.addedNodes.forEach(node => {\n        if (node.nodeType === 1 && node.querySelector(\".message\")) {\n          const text = node.textContent.trim();\n          if (text) announceMessage(text);\n        }\n      });\n    });\n  });\n  observer.observe(messagesContainer, {\n    childList: true\n  });\n  return true;\n});\n}catch(ex){}\n})();\n/** file: fix-label-and-remove-button-announcement.js */\n(function(){\ntry{\n\"use strict\";\n\nprofileEnabledInterval(\"accessMode\", () => {\n  const searchWrapper = document.getElementById(\"search-wrapper\");\n  if (!searchWrapper) return;\n  const searchDialog = searchWrapper.querySelector(\":scope > .mini-search > .amsearch-container\");\n  if (!searchDialog) return;\n  function ensureDialogAttributes(el, label) {\n    if (el.getAttribute(\"role\") !== \"dialog\") el.setAttribute(\"role\", \"dialog\");\n    if (el.getAttribute(\"tabindex\") !== \"-1\") el.setAttribute(\"tabindex\", \"-1\");\n    if (el.getAttribute(\"aria-label\") !== label) el.setAttribute(\"aria-label\", label);\n    if (!el.hasAttribute(\"aria-modal\")) el.setAttribute(\"aria-modal\", \"true\");\n  }\n  ensureDialogAttributes(searchDialog, \"Search Results\");\n  function processRemoveEl() {\n    const removeEl = Array.from(searchDialog.querySelectorAll(\"span\")).find(span => span.textContent && span.textContent.includes(\"Remove -\"));\n    if (removeEl) {\n      forceUnnavigable(removeEl);\n      return true;\n    }\n    return false;\n  }\n  processRemoveEl();\n  const observer = new MutationObserver(() => {\n    if (processRemoveEl()) {\n      observer.disconnect();\n    }\n  });\n  observer.observe(searchDialog, {\n    childList: true,\n    subtree: true\n  });\n  return true;\n});\n}catch(ex){}\n})();\n/** file: fix-menu-items-role.js */\n(function(){\ntry{\n\"use strict\";\n\nprofileEnabledInterval(\"accessMode\", () => {\n  const wrapper = document.querySelector(\"[x-ref='nav-desktop']\");\n  if (!wrapper) return;\n  const menuItems = wrapper.querySelectorAll(\"nav > ul[x-ref='menuContainer'] > li[aria-controls^='subMenuContainer-']\");\n  if (!menuItems.length) return;\n  menuItems.forEach(menuItem => {\n    const trigger = menuItem.querySelector(\"a\");\n    if (!trigger) return;\n    const dropdownId = menuItem.getAttribute(\"aria-controls\");\n    const dropdown = menuItem.querySelector(\"#\".concat(dropdownId));\n    if (!dropdown) return;\n    trigger.setAttribute(\"role\", \"button\");\n  });\n  return true;\n});\n}catch(ex){}\n})();\n/** file: fix-search-results-announcement-and-dropdown-items-navigability.js */\n(function(){\ntry{\n\"use strict\";\n\nprofileEnabledInterval(\"accessMode\", () => {\n  const searchInput = document.querySelector(\"#search_field\");\n  const dialog = document.querySelector(\".form.mini-search>div\");\n  const searchButton = document.querySelector(\"div.bg-pallas > div > div div.items-center>div.hidden\").nextElementSibling;\n  if (searchButton && searchInput && dialog) {\n    searchButton.setAttribute(\"aria-label\", \"Search\");\n    searchInput.setAttribute(\"aria-label\", \"Search\");\n    dialog.setAttribute(\"data-acsb-overlay\", \"popup\");\n    const message = \"Once you start typing, search results will appear after the search input field.\";\n    addSearchboxInstructions(searchInput, message);\n    const observer = new MutationObserver(mutations => {\n      mutations.forEach(mutation => {\n        if (mutation.target === searchButton && (!searchButton.hasAttribute(\"aria-label\") || searchButton.getAttribute(\"aria-label\") !== \"Search\")) {\n          searchButton.setAttribute(\"aria-label\", \"Search\");\n        }\n        if (mutation.target === searchInput && (!searchInput.hasAttribute(\"aria-label\") || searchInput.getAttribute(\"aria-label\") !== \"Search\")) {\n          searchInput.setAttribute(\"aria-label\", \"Search\");\n        }\n        if (mutation.target === dialog && !dialog.hasAttribute(\"data-acsb-overlay\")) {\n          dialog.setAttribute(\"data-acsb-overlay\");\n        }\n      });\n    });\n    observer.observe(searchButton, {\n      attributes: true,\n      attributeFilter: [\"aria-label\"]\n    });\n    observer.observe(searchInput, {\n      attributes: true,\n      attributeFilter: [\"aria-label\"]\n    });\n    observer.observe(dialog, {\n      attributes: true,\n      attributeFilter: [\"data-acsb-overlay\"]\n    });\n    dialog.addEventListener(\"keydown\", e => {\n      if (e.code === \"Escape\") {\n        e.preventDefault();\n        document.body.click();\n        setTimeout(() => {\n          searchButton.focus();\n        }, 300);\n      }\n    });\n    return true;\n  }\n});\n}catch(ex){}\n})();\n/** file: fix-skip-links.js */\n(function(){\ntry{\n\"use strict\";\n\nprofileEnabledInterval(\"accessMode\", () => {\n  const menuWrapper = document.querySelector(\".magezon-builder\");\n  if (!menuWrapper) return;\n  menuWrapper.setAttribute(\"data-acsb-main-menu\", \"true\");\n  return true;\n});\n}catch(ex){}\n})();\n/** file: make-filter-controls-accessible.js */\n(function(){\ntry{\n\"use strict\";\n\nprofileEnabledInterval(\"accessMode\", () => {\n  const filterContainer = document.querySelector(\".catalog-topnav.amasty-catalog-topnav\");\n  if (filterContainer) {\n    filterContainer.addEventListener(\"keydown\", event => {\n      const targetEl = event.target;\n      if (targetEl.classList.contains(\"filter-options-title\") && (event.code === \"Enter\" || event.code === \"Space\")) {\n        targetEl.click();\n      }\n      if (targetEl.tagName === \"A\" && event.code === \"Escape\") {\n        const section = targetEl.closest(\".filter-options-item\");\n        const title = section === null || section === void 0 ? void 0 : section.querySelector(\".filter-options-title\");\n        if (title) {\n          title.click();\n          setTimeout(() => {\n            title.focus();\n          }, 300);\n        }\n      }\n    });\n    function addAttributesToFilterOptions() {\n      const anchors = filterContainer.querySelectorAll(\".filter-options-content a\");\n      anchors.forEach(anchor => {\n        if (anchor.getAttribute(\"role\") !== \"checkbox\") {\n          anchor.setAttribute(\"role\", \"checkbox\");\n        }\n        if (anchor.classList.contains(\"amshopby-link-selected\")) {\n          anchor.setAttribute(\"aria-checked\", \"true\");\n        } else {\n          anchor.setAttribute(\"aria-checked\", \"false\");\n        }\n      });\n    }\n    addAttributesToFilterOptions();\n    const observer = new MutationObserver(mutations => {\n      mutations.forEach(mutation => {\n        addAttributesToFilterOptions();\n        if (mutation.type === \"attributes\" && mutation.target.classList.contains(\"filter-options-item\")) {\n          if (mutation.target.classList.contains(\"active\")) {\n            var _mutation$target$quer;\n            (_mutation$target$quer = mutation.target.querySelector(\".filter-options-content a\")) === null || _mutation$target$quer === void 0 || _mutation$target$quer.focus();\n          }\n        }\n      });\n    });\n    observer.observe(filterContainer, {\n      attributes: true,\n      attributeFilter: [\"class\", \"role\"],\n      childList: true,\n      subtree: true\n    });\n    return true;\n  }\n});\n}catch(ex){}\n})();\n\n}catch(ex){}\n})();\n\n</script><style>\n\n</style>","addonAnalytics":true,"blockMeta":false,"blockImages":false,"blockStyles":true,"blockTextSimplifier":false,"widgetSettings":{"consistentHelpData":[],"disableBgProcess":false,"footerHtml":"","hideComponents":[],"hideMobile":false,"hideTrigger":false,"language":"en","leadColor":"#000000","mobile":{"triggerOffsetX":12,"triggerOffsetY":15,"triggerPositionX":"left","triggerPositionY":"bottom","triggerRadius":"5px","triggerSize":"medium","triggerIcon":"people"},"position":"left","remoteAnalytics":true,"statementLink":"","statementVariant":"default","triggerColor":"#000000","triggerIcon":"people","triggerOffsetX":20,"triggerOffsetY":20,"triggerPositionX":"left","triggerPositionY":"bottom","triggerRadius":"5px","triggerSize":"small"},"featureFlags":{"text-simplifier":false,"ai-assistant":false,"classification-provider":false}}