{
  "version": 3,
  "sources": ["/cdn/shop/t/561/assets/sonu-homepage-codex-build-100.js?sonu_build=282"],
  "sourcesContent": ["(function () {\n  var roots = document.querySelectorAll(\"[data-sonu-home-redesign]\");\n\n  if (!roots.length) {\n    return;\n  }\n\n  roots.forEach(function (root) {\n    if (suppressHomepageGlobalHeader(root)) {\n      return;\n    }\n\n    initHeroVideo(root);\n    initMarginAwareTooltips();\n    initFeatureVideos(root);\n    initMobileNavImages(root);\n    initNavigation(root);\n    initHomepageChatVisibility(root);\n    initMattressNavAddToCart(root);\n    initMegaMenu(root);\n    initTabs(root);\n    initSystemAccordion(root);\n    shuffleSocialTiles(root);\n    initCarousels(root);\n    initDragScroll(root);\n    initVideoModal(root);\n    initReveals(root);\n    initNewsletterForms(root);\n    initFooterAccordions(root);\n  });\n\n  initTermlyPreferencesSizing();\n  initLegacyPurpleCtas();\n  initMobileHeaderGapTrim();\n\n  function suppressHomepageGlobalHeader(root) {\n    if (!document.body.classList.contains(\"template-index\") || !root.classList.contains(\"sonu-global-header-shell\")) {\n      return false;\n    }\n\n    root.setAttribute(\"aria-hidden\", \"true\");\n    root.style.setProperty(\"display\", \"none\", \"important\");\n    root.querySelectorAll(\".cart-link__bubble\").forEach(function (bubble) {\n      bubble.remove();\n    });\n    root.querySelectorAll(\".sonu-nav-dropdown\").forEach(function (dropdown) {\n      dropdown.remove();\n    });\n    root.querySelectorAll(\".sonu-nav-panel, .sonu-nav-product\").forEach(function (element) {\n      element.classList.remove(\"is-active\");\n      element.setAttribute(\"aria-hidden\", \"true\");\n      element.hidden = true;\n      element.style.setProperty(\"display\", \"none\", \"important\");\n      element.style.setProperty(\"pointer-events\", \"none\", \"important\");\n      element.style.setProperty(\"visibility\", \"hidden\", \"important\");\n    });\n\n    return true;\n  }\n\n  function initHeroVideo(root) {\n    var video = root.querySelector(\".sonu-hero__video\");\n\n    if (!video) {\n      return;\n    }\n\n    var debugEnabled = /(?:\\?|&)sonuVideoDebug=1(?:&|$)/.test(window.location.search);\n    var playAttemptCount = 0;\n    var playbackConfirmed = false;\n    var frameWatchActive = false;\n    var isCriOS = /CriOS/i.test(navigator.userAgent || \"\");\n    var isIOS = /iPad|iPhone|iPod/i.test(navigator.userAgent || \"\") || (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1);\n    var forceFallbackTest = /(?:\\?|&)sonuHeroFallbackTest=1(?:&|$)/.test(window.location.search);\n\n    function selectDirectHeroVideoSource() {\n      var mobileSrc;\n      var desktopSrc;\n      var targetSrc;\n\n      if (!isCriOS) {\n        return;\n      }\n\n      mobileSrc = video.getAttribute(\"data-sonu-mobile-video\");\n      desktopSrc = video.getAttribute(\"data-sonu-desktop-video\");\n      targetSrc = (!window.matchMedia || window.matchMedia(\"(max-width: 767px)\").matches) ? mobileSrc : desktopSrc;\n\n      if (!targetSrc || video.dataset.sonuDirectSourceApplied === targetSrc) {\n        return;\n      }\n\n      video.dataset.sonuDirectSourceApplied = targetSrc;\n      video.src = targetSrc;\n\n      try {\n        video.load();\n      } catch (_) {}\n    }\n\n    function applyVideoAttributes() {\n      video.muted = true;\n      video.defaultMuted = true;\n      video.playsInline = true;\n      video.autoplay = true;\n      video.loop = true;\n      video.controls = false;\n      video.setAttribute(\"muted\", \"\");\n      video.setAttribute(\"playsinline\", \"\");\n      video.setAttribute(\"webkit-playsinline\", \"\");\n      video.setAttribute(\"preload\", \"auto\");\n      video.removeAttribute(\"controls\");\n      video.setAttribute(\"controlslist\", \"nodownload nofullscreen noremoteplayback\");\n      video.setAttribute(\"disablepictureinpicture\", \"\");\n      video.setAttribute(\"disableremoteplayback\", \"\");\n      video.setAttribute(\"x-webkit-airplay\", \"deny\");\n      selectDirectHeroVideoSource();\n    }\n\n    function recordVideoState(reason) {\n      var firstSource = video.querySelector(\"source\");\n      var src = video.currentSrc || (firstSource ? firstSource.src : \"\");\n      var fileName = src ? src.split(\"/\").pop().split(\"?\")[0] : \"\";\n      var style = window.getComputedStyle(video);\n      var rect = video.getBoundingClientRect();\n      var error = video.error ? \"error-\" + video.error.code : \"error-0\";\n      var state = [\n        reason || \"state\",\n        \"ready-\" + video.readyState,\n        \"network-\" + video.networkState,\n        \"paused-\" + (video.paused ? \"1\" : \"0\"),\n        \"time-\" + Math.round((video.currentTime || 0) * 100) / 100,\n        error,\n        \"attempts-\" + playAttemptCount,\n        \"canplay-\" + (video.canPlayType ? video.canPlayType(\"video/mp4\") || \"no\" : \"na\"),\n        \"opacity-\" + (style ? style.opacity : \"na\"),\n        \"rect-\" + Math.round(rect.width || 0) + \"x\" + Math.round(rect.height || 0),\n        fileName\n      ].join(\"|\");\n\n      root.setAttribute(\"data-sonu-hero-video-state\", state);\n      window.__sonuHeroVideoState = state;\n      updateDebugPanel(state);\n    }\n\n    function updateDebugPanel(state) {\n      var panel;\n\n      if (!debugEnabled) {\n        return;\n      }\n\n      panel = document.getElementById(\"sonu-hero-video-debug\");\n      if (!panel) {\n        panel = document.createElement(\"div\");\n        panel.id = \"sonu-hero-video-debug\";\n        panel.style.cssText = \"position:fixed;left:8px;right:8px;bottom:8px;z-index:99999;background:rgba(0,0,0,.82);color:#fff;font:11px/1.35 monospace;padding:8px;border-radius:8px;pointer-events:none;white-space:normal;\";\n        document.documentElement.appendChild(panel);\n      }\n\n      panel.textContent = state;\n    }\n\n    function markReady(reason) {\n      root.classList.add(\"sonu-hero-video-ready\");\n      recordVideoState(reason || \"ready\");\n    }\n\n    function markPlaying(reason) {\n      playbackConfirmed = true;\n      root.classList.add(\"sonu-hero-video-ready\");\n      root.classList.add(\"sonu-hero-video-playing\");\n      root.classList.add(\"sonu-hero-video-painted\");\n      root.classList.remove(\"sonu-hero-ios-chrome-pending\");\n      root.classList.remove(\"sonu-hero-video-fallback\");\n      root.classList.remove(\"sonu-hero-video-stalled\");\n      video.style.opacity = \"\";\n      recordVideoState(reason || \"playing\");\n    }\n\n    function markFallback(reason) {\n      playbackConfirmed = false;\n      root.classList.add(\"sonu-hero-video-fallback\");\n      root.classList.add(\"sonu-hero-video-stalled\");\n      root.classList.remove(\"sonu-hero-video-playing\");\n      root.classList.remove(\"sonu-hero-video-painted\");\n      recordVideoState(reason || \"fallback\");\n    }\n\n    function hasVideoMotion() {\n      return !video.paused && video.readyState >= 2 && video.currentTime > 0.12;\n    }\n\n    function confirmPlayback(reason) {\n      if (hasVideoMotion()) {\n        markPlaying(reason || \"motion-confirmed\");\n      } else {\n        recordVideoState(reason || \"motion-wait\");\n      }\n    }\n\n    function attemptPlay(reason) {\n      var playAttempt;\n\n      if (hasVideoMotion()) {\n        markPlaying(reason ? reason + \"-already-moving\" : \"already-moving\");\n        return;\n      }\n\n      if (!video.paused && video.readyState >= 2) {\n        confirmPlayback(reason ? reason + \"-not-paused\" : \"not-paused\");\n      }\n\n      if (document.hidden) {\n        recordVideoState(reason ? reason + \"-hidden\" : \"play-hidden\");\n        return;\n      }\n\n      playAttemptCount += 1;\n      applyVideoAttributes();\n\n      if (video.networkState === 0) {\n        try {\n          video.load();\n        } catch (_) {}\n      }\n\n      try {\n        playAttempt = video.play();\n      } catch (_) {\n        recordVideoState(reason || \"play-throw\");\n        if (isIOS || forceFallbackTest) {\n          markFallback(reason ? reason + \"-play-throw\" : \"play-throw\");\n        }\n        return;\n      }\n\n      if (playAttempt && typeof playAttempt.then === \"function\") {\n        playAttempt.then(function () {\n          confirmPlayback(reason || \"play-resolved\");\n        }).catch(function () {\n          recordVideoState(reason || \"play-blocked\");\n          if (isIOS || forceFallbackTest) {\n            markFallback(reason ? reason + \"-play-blocked\" : \"play-blocked\");\n          }\n        });\n      }\n    }\n\n    function watchVideoFrames() {\n      if (frameWatchActive || typeof video.requestVideoFrameCallback !== \"function\") {\n        return;\n      }\n\n      frameWatchActive = true;\n      video.requestVideoFrameCallback(function () {\n        frameWatchActive = false;\n        confirmPlayback(\"video-frame\");\n        if (!playbackConfirmed) {\n          watchVideoFrames();\n        }\n      });\n    }\n\n    function scheduleFallbackCheck(delay, reason) {\n      window.setTimeout(function () {\n        if (playbackConfirmed || hasVideoMotion()) {\n          markPlaying(reason + \"-moving\");\n          return;\n        }\n\n        if (isIOS || forceFallbackTest) {\n          markFallback(reason);\n        }\n      }, delay);\n    }\n\n    applyVideoAttributes();\n\n    if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n      root.classList.add(\"sonu-hero-video-reduced\");\n      video.pause();\n      markFallback(\"reduced-motion\");\n      return;\n    }\n\n    if (video.readyState >= 1) {\n      markReady(\"initial-ready\");\n    }\n\n    if (video.readyState >= 2) {\n      markReady(\"initial-data\");\n    }\n\n    video.addEventListener(\"loadedmetadata\", function () {\n      markReady(\"loadedmetadata\");\n      attemptPlay(\"loadedmetadata\");\n    });\n    video.addEventListener(\"loadeddata\", function () {\n      markReady(\"loadeddata\");\n      attemptPlay(\"loadeddata\");\n    });\n    video.addEventListener(\"canplay\", function () {\n      markReady(\"canplay\");\n      attemptPlay(\"canplay\");\n    });\n    video.addEventListener(\"play\", function () {\n      recordVideoState(\"play\");\n    });\n    video.addEventListener(\"playing\", function () {\n      confirmPlayback(\"playing\");\n    });\n    video.addEventListener(\"timeupdate\", function () {\n      if (hasVideoMotion()) {\n        markPlaying(\"timeupdate\");\n      }\n    });\n    watchVideoFrames();\n    video.addEventListener(\"error\", function () {\n      markFallback(\"error\");\n    });\n    video.addEventListener(\"stalled\", function () {\n      if (!hasVideoMotion()) {\n        markFallback(\"stalled\");\n      }\n    });\n    video.addEventListener(\"suspend\", function () {\n      window.setTimeout(function () {\n        if (!hasVideoMotion() && !playbackConfirmed) {\n          markFallback(\"suspend\");\n        }\n      }, 600);\n    });\n    video.addEventListener(\"pause\", function () {\n      window.setTimeout(function () {\n        if (!document.hidden && !hasVideoMotion()) {\n          markFallback(\"pause\");\n        }\n      }, 400);\n    });\n\n    window.addEventListener(\"pageshow\", function () {\n      attemptPlay(\"pageshow\");\n    });\n    document.addEventListener(\"visibilitychange\", function () {\n      if (!document.hidden) {\n        attemptPlay(\"visible\");\n      }\n    });\n\n    [\"pointerdown\", \"touchstart\", \"click\", \"keydown\"].forEach(function (eventName) {\n      document.addEventListener(eventName, function () {\n        attemptPlay(\"gesture-\" + eventName);\n      }, { once: true, passive: true });\n    });\n\n    attemptPlay(\"init\");\n    scheduleFallbackCheck(1800, \"autoplay-stalled-1800\");\n    scheduleFallbackCheck(2800, \"autoplay-stalled-2800\");\n    [80, 250, 500, 900, 1400, 2200, 3400].forEach(function (delay) {\n      window.setTimeout(function () {\n        if (!playbackConfirmed) {\n          attemptPlay(\"retry-\" + delay);\n          watchVideoFrames();\n        }\n      }, delay);\n    });\n    window.setTimeout(function () {\n      if (video.paused || video.readyState < 2 || video.currentTime < 0.05) {\n        recordVideoState(\"video-wait-timeout\");\n        if (isIOS || forceFallbackTest) {\n          markFallback(\"video-wait-timeout\");\n        }\n        attemptPlay(\"retry-timeout\");\n      }\n    }, 1600);\n  }\n\n  function initMarginAwareTooltips() {\n    if (document.documentElement.dataset.sonuTooltipAware === \"ready\") {\n      return;\n    }\n\n    document.documentElement.dataset.sonuTooltipAware = \"ready\";\n\n    function getTooltip(trigger) {\n      var child = trigger.firstElementChild;\n\n      while (child) {\n        if (child.classList && child.classList.contains(\"r_tiptext\")) {\n          return child;\n        }\n\n        child = child.nextElementSibling;\n      }\n\n      return trigger.querySelector(\".r_tiptext\");\n    }\n\n    function syncTooltip(trigger) {\n      var tip = trigger && getTooltip(trigger);\n\n      if (!tip) {\n        return;\n      }\n\n      var gutter = 12;\n      var triggerRect = trigger.getBoundingClientRect();\n      var width = Math.min(270, Math.max(180, window.innerWidth - (gutter * 2)));\n      var center = triggerRect.left + (triggerRect.width / 2);\n      var minCenter = gutter + (width / 2);\n      var maxCenter = window.innerWidth - gutter - (width / 2);\n      var top = triggerRect.bottom + 12;\n      var arrowX;\n      var tipHeight;\n\n      if (maxCenter < minCenter) {\n        center = window.innerWidth / 2;\n      } else {\n        center = Math.max(minCenter, Math.min(maxCenter, center));\n      }\n\n      trigger.classList.add(\"sonu-tip-positioned\");\n      trigger.classList.remove(\"sonu-tip-above\");\n      trigger.style.setProperty(\"--sonu-tip-left\", center.toFixed(2) + \"px\");\n      trigger.style.setProperty(\"--sonu-tip-top\", top.toFixed(2) + \"px\");\n      trigger.style.setProperty(\"--sonu-tip-width\", width.toFixed(2) + \"px\");\n\n      tipHeight = Math.max(80, Math.min(220, tip.scrollHeight || tip.offsetHeight || 120));\n\n      if (top + tipHeight + gutter > window.innerHeight && triggerRect.top - tipHeight - 12 > gutter) {\n        top = triggerRect.top - tipHeight - 12;\n        trigger.classList.add(\"sonu-tip-above\");\n        trigger.style.setProperty(\"--sonu-tip-top\", top.toFixed(2) + \"px\");\n      }\n\n      arrowX = (triggerRect.left + (triggerRect.width / 2)) - (center - (width / 2));\n      arrowX = Math.max(16, Math.min(width - 16, arrowX));\n      trigger.style.setProperty(\"--sonu-tip-arrow-x\", arrowX.toFixed(2) + \"px\");\n    }\n\n    function scheduleTooltipSync(trigger) {\n      if (!trigger || !trigger.closest(\".sonu-mattress-build-109\")) {\n        return;\n      }\n\n      syncTooltip(trigger);\n    }\n\n    document.addEventListener(\"pointerover\", function (event) {\n      scheduleTooltipSync(event.target.closest(\".r_tip\"));\n    }, true);\n\n    document.addEventListener(\"focusin\", function (event) {\n      scheduleTooltipSync(event.target.closest(\".r_tip\"));\n    }, true);\n\n    window.addEventListener(\"resize\", function () {\n      document.querySelectorAll(\".sonu-mattress-build-109 .r_tip:hover, .sonu-mattress-build-109 .r_tip:focus-within\").forEach(syncTooltip);\n    });\n  }\n\n  function initHomepageChatVisibility(root) {\n    if (!document.body.classList.contains(\"template-index\") || root.classList.contains(\"sonu-global-header-shell\")) {\n      return;\n    }\n\n    var hero = root.querySelector(\".sonu-hero\");\n\n    if (!hero) {\n      return;\n    }\n\n    var ticking = false;\n\n    function sync() {\n      ticking = false;\n      var rect = hero.getBoundingClientRect();\n      var shouldShow = window.innerWidth > 900 || rect.bottom <= window.innerHeight * 0.5;\n      document.body.classList.toggle(\"sonu-home-chat-visible\", shouldShow);\n    }\n\n    function requestSync() {\n      if (ticking) {\n        return;\n      }\n\n      ticking = true;\n      window.requestAnimationFrame(sync);\n    }\n\n    sync();\n    window.addEventListener(\"scroll\", requestSync, { passive: true });\n    window.addEventListener(\"resize\", requestSync);\n    window.addEventListener(\"orientationchange\", requestSync);\n    setTimeout(sync, 1200);\n    setTimeout(sync, 3200);\n  }\n\n  function initFeatureVideos(root) {\n    var frames = Array.prototype.slice.call(root.querySelectorAll(\".sonu-feature-video\"));\n\n    if (!frames.length) {\n      return;\n    }\n\n    frames.forEach(function (frame) {\n      var video = frame.querySelector(\"video\");\n\n      if (!video) {\n        return;\n      }\n\n      function showVideo() {\n        frame.classList.add(\"is-video-playing\");\n        frame.classList.remove(\"is-fallback-active\");\n      }\n\n      function showFallback() {\n        frame.classList.remove(\"is-video-playing\");\n        frame.classList.add(\"is-fallback-active\");\n      }\n\n      function canPlayMp4() {\n        return !video.canPlayType || !!video.canPlayType(\"video/mp4\");\n      }\n\n      function applyFeatureVideoAttributes() {\n        video.muted = true;\n        video.defaultMuted = true;\n        video.playsInline = true;\n        video.autoplay = true;\n        video.loop = true;\n        video.preload = \"auto\";\n        video.setAttribute(\"muted\", \"\");\n        video.setAttribute(\"playsinline\", \"\");\n        video.setAttribute(\"webkit-playsinline\", \"\");\n        video.setAttribute(\"autoplay\", \"\");\n        video.setAttribute(\"loop\", \"\");\n        video.setAttribute(\"preload\", \"auto\");\n      }\n\n      function attemptFeaturePlay() {\n        var playAttempt;\n\n        applyFeatureVideoAttributes();\n\n        try {\n          playAttempt = video.play();\n        } catch (_) {\n          showVideo();\n          return;\n        }\n\n        if (playAttempt && typeof playAttempt.catch === \"function\") {\n          playAttempt.catch(function () {\n            showVideo();\n          });\n        }\n      }\n\n      if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n        video.pause();\n        showFallback();\n        return;\n      }\n\n      applyFeatureVideoAttributes();\n\n      if (!canPlayMp4()) {\n        showFallback();\n        return;\n      }\n\n      showVideo();\n\n      video.addEventListener(\"playing\", showVideo);\n      video.addEventListener(\"pause\", function () {\n        showVideo();\n      });\n      video.addEventListener(\"error\", showFallback);\n\n      document.addEventListener(\"visibilitychange\", function () {\n        if (!document.hidden) {\n          attemptFeaturePlay();\n        }\n      });\n      window.addEventListener(\"pageshow\", attemptFeaturePlay);\n\n      [\"pointerdown\", \"touchstart\", \"click\"].forEach(function (eventName) {\n        document.addEventListener(eventName, attemptFeaturePlay, { once: true, passive: true });\n      });\n\n      attemptFeaturePlay();\n\n      window.setTimeout(function () {\n        if (!video.error) {\n          showVideo();\n          attemptFeaturePlay();\n        }\n      }, 1200);\n    });\n  }\n\n  function initMobileNavImages(root) {\n    var mobileQuery = window.matchMedia(\"(max-width: 1023.98px)\");\n    var images = Array.prototype.slice.call(root.querySelectorAll(\"[data-sonu-mobile-src]\"));\n\n    if (!images.length) {\n      return;\n    }\n\n    images.forEach(function (image) {\n      image.setAttribute(\"data-sonu-desktop-src\", image.getAttribute(\"src\"));\n    });\n\n    function syncImages() {\n      images.forEach(function (image) {\n        var target = image.getAttribute(\"data-sonu-desktop-src\");\n\n        if (target && image.getAttribute(\"src\") !== target) {\n          image.setAttribute(\"src\", target);\n        }\n      });\n    }\n\n    syncImages();\n\n    if (mobileQuery.addEventListener) {\n      mobileQuery.addEventListener(\"change\", syncImages);\n    } else if (mobileQuery.addListener) {\n      mobileQuery.addListener(syncImages);\n    }\n  }\n\n  function initNavigation(root) {\n    var nav = root.querySelector(\"[data-sonu-nav]\");\n    var drawerTriggers = Array.prototype.slice.call(root.querySelectorAll(\"[data-sonu-menu-toggle], .js-drawer-open-nav\"))\n      .filter(function (trigger, index, triggers) {\n        return trigger && triggers.indexOf(trigger) === index;\n      });\n    var toggle = root.querySelector(\"[data-sonu-menu-toggle]\") || drawerTriggers[0];\n    var menu = root.querySelector(\"[data-sonu-menu]\");\n    var drawerClose = root.querySelector(\"[data-sonu-menu-close]\");\n    var mobileQuery = window.matchMedia(\"(max-width: 1023.98px)\");\n\n    if (!nav || !toggle || !menu) {\n      return;\n    }\n\n    var hero = root.classList.contains(\"sonu-global-header-shell\") ? null : root.querySelector(\".sonu-hero\");\n    var drawerCloseTimer = null;\n    var drawerMotionDuration = 540;\n    var drawerDropdownDuration = 540;\n    var customDrawerMotionDuration = 765;\n    var promoHidden = false;\n    var downScrollIntent = 0;\n    var upScrollIntent = 0;\n    var lastTouchY = null;\n    var lastScrollY = Math.max(window.scrollY || 0, document.documentElement.scrollTop || 0);\n    var lastDirectedInputAt = 0;\n    var customDrawer = null;\n    var customDrawerBuilt = false;\n    var customDrawerCloseTimer = null;\n    function getImageSource(image) {\n      if (!image) {\n        return \"\";\n      }\n\n      return image.getAttribute(\"data-sonu-mobile-src\") || image.getAttribute(\"src\") || \"\";\n    }\n\n    function cleanText(node) {\n      return (node?.textContent || \"\").replace(/\\s+/g, \" \").trim();\n    }\n\n    function titleCaseDrawerSubmenuLabel(label) {\n      return String(label || \"\")\n        .toLowerCase()\n        .replace(/\\b[a-z]/g, function (letter) {\n          return letter.toUpperCase();\n        });\n    }\n\n    function buildCustomProductLink(product) {\n      var link = document.createElement(\"a\");\n      var image = product.querySelector(\"img\");\n      var sourceLabel = product.querySelector(\"span\");\n      var label = cleanText(sourceLabel || product);\n\n      link.className = \"sonu-mobile-drawer-v2__product\";\n      link.href = product.getAttribute(\"href\") || \"#\";\n\n      if (image) {\n        var productImage = document.createElement(\"img\");\n        productImage.src = getImageSource(image);\n        productImage.alt = image.getAttribute(\"alt\") || label;\n        productImage.loading = \"lazy\";\n        link.appendChild(productImage);\n      }\n\n      if (sourceLabel) {\n        var labelNode = sourceLabel.cloneNode(true);\n        labelNode.classList.add(\"sonu-mobile-drawer-v2__product-label\");\n        link.appendChild(labelNode);\n      } else {\n        var span = document.createElement(\"span\");\n        span.className = \"sonu-mobile-drawer-v2__product-label\";\n        span.textContent = label;\n        link.appendChild(span);\n      }\n      return link;\n    }\n\n    function buildCustomAccordion(label, products, tabs) {\n      var group = document.createElement(\"div\");\n      var button = document.createElement(\"button\");\n      var panel = document.createElement(\"div\");\n\n      group.className = \"sonu-mobile-drawer-v2__group\";\n      button.className = \"sonu-mobile-drawer-v2__group-button\";\n      button.type = \"button\";\n      button.setAttribute(\"aria-expanded\", \"false\");\n      button.textContent = label;\n      appendDrawerChevron(button);\n      panel.className = \"sonu-mobile-drawer-v2__panel\";\n\n      button.addEventListener(\"click\", function () {\n        var isOpen = group.classList.contains(\"is-open\");\n        customDrawer.querySelectorAll(\".sonu-mobile-drawer-v2__group.is-open\").forEach(function (openGroup) {\n          if (openGroup !== group) {\n            openGroup.classList.remove(\"is-open\");\n            openGroup.querySelector(\".sonu-mobile-drawer-v2__group-button\")?.setAttribute(\"aria-expanded\", \"false\");\n          }\n        });\n        group.classList.toggle(\"is-open\", !isOpen);\n        button.setAttribute(\"aria-expanded\", !isOpen ? \"true\" : \"false\");\n      });\n\n      if (tabs && tabs.length) {\n        var tabsWrap = document.createElement(\"div\");\n        tabsWrap.className = \"sonu-mobile-drawer-v2__tabs\";\n\n        tabs.forEach(function (tab) {\n          var tabButton = document.createElement(\"button\");\n          var tabPanel = document.createElement(\"div\");\n\n          tabButton.className = \"sonu-mobile-drawer-v2__tab\";\n          tabButton.type = \"button\";\n          tabButton.textContent = titleCaseDrawerSubmenuLabel(tab.label);\n          tabButton.setAttribute(\"aria-expanded\", \"false\");\n          appendDrawerChevron(tabButton);\n\n          tabPanel.className = \"sonu-mobile-drawer-v2__tab-panel\";\n          tab.products.forEach(function (product) {\n            tabPanel.appendChild(buildCustomProductLink(product));\n          });\n\n          tabButton.addEventListener(\"click\", function () {\n            var isOpen = tabPanel.classList.contains(\"is-open\");\n            tabsWrap.querySelectorAll(\".sonu-mobile-drawer-v2__tab.is-open\").forEach(function (openButton) {\n              if (openButton !== tabButton) {\n                openButton.classList.remove(\"is-open\");\n                openButton.setAttribute(\"aria-expanded\", \"false\");\n              }\n            });\n            tabsWrap.querySelectorAll(\".sonu-mobile-drawer-v2__tab-panel.is-open\").forEach(function (openPanel) {\n              if (openPanel !== tabPanel) {\n                openPanel.classList.remove(\"is-open\");\n              }\n            });\n            tabButton.classList.toggle(\"is-open\", !isOpen);\n            tabButton.setAttribute(\"aria-expanded\", !isOpen ? \"true\" : \"false\");\n            tabPanel.classList.toggle(\"is-open\", !isOpen);\n          });\n\n          tabsWrap.appendChild(tabButton);\n          tabsWrap.appendChild(tabPanel);\n        });\n\n        panel.appendChild(tabsWrap);\n      } else {\n        products.forEach(function (product) {\n          panel.appendChild(buildCustomProductLink(product));\n        });\n      }\n\n      group.appendChild(button);\n      group.appendChild(panel);\n      return group;\n    }\n\n    function appendDrawerChevron(button) {\n      var chevron = document.createElement(\"span\");\n\n      button.classList.add(\"has-explicit-chevron\");\n      chevron.className = \"sonu-mobile-drawer-v2__chevron\";\n      chevron.setAttribute(\"aria-hidden\", \"true\");\n      chevron.innerHTML = '<svg viewBox=\"0 0 18 28\" focusable=\"false\" aria-hidden=\"true\"><path d=\"M14.8 3.2 4 14l10.8 10.8\"></path></svg>';\n      button.appendChild(chevron);\n    }\n\n    function buildCustomDrawer() {\n      if (customDrawerBuilt) {\n        return;\n      }\n\n      customDrawerBuilt = true;\n      customDrawer = document.createElement(\"div\");\n      customDrawer.className = \"sonu-mobile-drawer-v2\";\n      customDrawer.setAttribute(\"aria-hidden\", \"true\");\n\n      var backdrop = document.createElement(\"button\");\n      backdrop.className = \"sonu-mobile-drawer-v2__backdrop\";\n      backdrop.type = \"button\";\n      backdrop.setAttribute(\"aria-label\", \"Close menu\");\n\n      var panel = document.createElement(\"aside\");\n      panel.className = \"sonu-mobile-drawer-v2__panel-shell\";\n      panel.setAttribute(\"aria-label\", \"SONU mobile menu\");\n\n      var close = document.createElement(\"button\");\n      close.className = \"sonu-mobile-drawer-v2__close\";\n      close.type = \"button\";\n      close.setAttribute(\"aria-label\", \"Close menu\");\n      close.innerHTML = \"&times;\";\n\n      var navList = document.createElement(\"div\");\n      navList.className = \"sonu-mobile-drawer-v2__list\";\n\n      var topItems = Array.prototype.slice.call(menu.children).filter(function (node) {\n        return node.matches(\"a\") || node.matches(\".sonu-nav-item--has-dropdown\");\n      });\n\n      topItems.forEach(function (node) {\n        if (node.matches(\".sonu-nav-item--has-dropdown\")) {\n          var trigger = node.querySelector(\":scope > a\");\n          var label = cleanText(trigger);\n          var dropdown = node.querySelector(\":scope > .sonu-nav-dropdown\");\n\n          if (/accessories/i.test(label)) {\n            var tabs = Array.prototype.slice.call(dropdown?.querySelectorAll(\".sonu-nav-tabs > button\") || []).map(function (tabButton) {\n              var panelId = tabButton.getAttribute(\"aria-controls\");\n              var sourcePanel = panelId\n                ? Array.prototype.slice.call(dropdown.querySelectorAll(\".sonu-nav-panel\")).find(function (panelNode) {\n                    return panelNode.id === panelId;\n                  })\n                : null;\n              return {\n                label: cleanText(tabButton),\n                products: Array.prototype.slice.call(sourcePanel?.querySelectorAll(\".sonu-nav-product\") || [])\n              };\n            }).filter(function (tab) {\n              return tab.label && tab.products.length;\n            });\n\n            navList.appendChild(buildCustomAccordion(label, [], tabs));\n            return;\n          }\n\n          navList.appendChild(buildCustomAccordion(label, Array.prototype.slice.call(dropdown?.querySelectorAll(\".sonu-nav-product\") || []), null));\n          return;\n        }\n\n        if (node.classList.contains(\"sonu-home-nav__mobile-cta\") || node.getAttribute(\"href\") === \"/cart\") {\n          return;\n        }\n\n        var link = document.createElement(\"a\");\n        link.className = \"sonu-mobile-drawer-v2__link\";\n        if (node.classList.contains(\"sonu-nav-reviews\")) {\n          link.classList.add(\"sonu-mobile-drawer-v2__link--reviews\");\n        }\n        link.href = node.getAttribute(\"href\") || \"#\";\n        link.textContent = cleanText(node);\n        navList.appendChild(link);\n      });\n\n      panel.appendChild(close);\n      panel.appendChild(navList);\n      customDrawer.appendChild(backdrop);\n      customDrawer.appendChild(panel);\n      document.body.appendChild(customDrawer);\n\n      [backdrop, close].forEach(function (control) {\n        control.addEventListener(\"click\", closeCustomDrawer);\n      });\n\n      customDrawer.addEventListener(\"click\", function (event) {\n        if (event.target.closest(\"a\")) {\n          closeCustomDrawer();\n        }\n      });\n    }\n\n    function closeCustomDrawer() {\n      var drawerToRemove = customDrawer;\n\n      if (customDrawerCloseTimer) {\n        window.clearTimeout(customDrawerCloseTimer);\n        customDrawerCloseTimer = null;\n      }\n\n      if (customDrawer) {\n        customDrawer.classList.add(\"is-closing\");\n        customDrawer.classList.remove(\"is-open\");\n      }\n      document.documentElement.classList.remove(\"sonu-mobile-drawer-v2-open\");\n      document.body.classList.remove(\"sonu-mobile-drawer-v2-open\");\n      root.classList.remove(\"sonu-mobile-drawer-v2-open\");\n      toggle.setAttribute(\"aria-expanded\", \"false\");\n      toggle.querySelector(\".visually-hidden\").textContent = \"Open menu\";\n      clearActiveDropdowns();\n\n      if (drawerToRemove) {\n        customDrawerCloseTimer = window.setTimeout(function () {\n          drawerToRemove.classList.remove(\"is-closing\");\n          drawerToRemove.setAttribute(\"aria-hidden\", \"true\");\n          if (customDrawer === drawerToRemove) {\n            customDrawer.remove();\n            customDrawer = null;\n            customDrawerBuilt = false;\n          }\n          customDrawerCloseTimer = null;\n        }, customDrawerMotionDuration);\n      }\n    }\n\n    function destroyCustomDrawer() {\n      if (customDrawerCloseTimer) {\n        window.clearTimeout(customDrawerCloseTimer);\n        customDrawerCloseTimer = null;\n      }\n      closeCustomDrawer();\n      if (customDrawer) {\n        customDrawer.remove();\n        customDrawer = null;\n      }\n      customDrawerBuilt = false;\n    }\n\n    function openCustomDrawer() {\n      if (customDrawerCloseTimer) {\n        window.clearTimeout(customDrawerCloseTimer);\n        customDrawerCloseTimer = null;\n      }\n      buildCustomDrawer();\n      document.querySelectorAll(\".sonu-mobile-drawer-v2.is-open\").forEach(function (openDrawer) {\n        if (openDrawer !== customDrawer) {\n          openDrawer.classList.remove(\"is-open\");\n          openDrawer.setAttribute(\"aria-hidden\", \"true\");\n        }\n      });\n      nav.classList.remove(\"is-open\", \"is-opening\", \"is-closing\", \"has-open-dropdown\", \"is-dropdown-background-ready\");\n      clearActiveDropdowns();\n      document.documentElement.classList.remove(\"sonu-nav-is-open\");\n      document.body.classList.remove(\"sonu-nav-is-open\");\n      root.classList.remove(\"sonu-nav-is-open\");\n      customDrawer.classList.remove(\"is-closing\");\n      customDrawer.setAttribute(\"aria-hidden\", \"false\");\n      customDrawer.getBoundingClientRect();\n      customDrawer.classList.add(\"is-open\");\n      document.documentElement.classList.add(\"sonu-mobile-drawer-v2-open\");\n      document.body.classList.add(\"sonu-mobile-drawer-v2-open\");\n      root.classList.add(\"sonu-mobile-drawer-v2-open\");\n      toggle.setAttribute(\"aria-expanded\", \"true\");\n      toggle.querySelector(\".visually-hidden\").textContent = \"Close menu\";\n    }\n\n    function promoHasCountdown(promo) {\n      return !!(promo && promo.querySelector(\"#clockdiv\"));\n    }\n\n    function getPromoTargetHeight(promo) {\n      if (promo && !promoHasCountdown(promo)) {\n        return 44;\n      }\n      return 84;\n    }\n\n    function getPromoHeight() {\n      var promo = root.querySelector(\".sonu-promo-bar\");\n      if (!promo) {\n        return 0;\n      }\n\n      var measured = Math.max(0, Math.round(promo.getBoundingClientRect().height || 0));\n      var target = getPromoTargetHeight(promo);\n      return target || measured;\n    }\n\n    function syncPromoMetrics() {\n      var promo = root.querySelector(\".sonu-promo-bar\");\n      var promoHeight = getPromoHeight() || 42;\n      var useStableMobilePromo = !hero && mobileQuery.matches;\n      var mobileNavOffset = mobileQuery.matches && promoHidden ? -promoHeight : 0;\n      var promoMarginBottom = useStableMobilePromo ? \"0px\" : (promoHidden ? -promoHeight + \"px\" : \"0px\");\n\n      root.style.setProperty(\"--sonu-promo-height\", promoHeight + \"px\", \"important\");\n      root.style.setProperty(\"--sonu-promo-offset\", promoHidden ? -promoHeight + \"px\" : \"0px\");\n      root.style.setProperty(\"--sonu-nav-mobile-offset\", mobileNavOffset + \"px\");\n      nav.style.setProperty(\"--sonu-nav-mobile-offset\", mobileNavOffset + \"px\");\n      if (promo) {\n        promo.style.setProperty(\"--sonu-promo-offset\", promoHidden ? -promoHeight + \"px\" : \"0px\");\n        promo.style.setProperty(\"height\", promoHeight + \"px\", \"important\");\n        promo.style.setProperty(\"min-height\", promoHeight + \"px\", \"important\");\n        promo.style.setProperty(\"margin-bottom\", promoMarginBottom, \"important\");\n        promo.style.setProperty(\"opacity\", \"1\", \"important\");\n        promo.style.setProperty(\"transform\", promoHidden ? \"translateY(\" + -promoHeight + \"px)\" : \"translateY(0px)\", \"important\");\n        promo.style.setProperty(\"visibility\", \"visible\", \"important\");\n        promo.style.setProperty(\"pointer-events\", promoHidden ? \"none\" : \"auto\", \"important\");\n      }\n      if (mobileQuery.matches && !nav.classList.contains(\"is-open\") && !nav.classList.contains(\"is-opening\") && !nav.classList.contains(\"is-closing\")) {\n        nav.style.setProperty(\"transform\", \"translateY(\" + mobileNavOffset + \"px)\", \"important\");\n      } else if (!mobileQuery.matches) {\n        nav.style.removeProperty(\"transform\");\n      }\n      if (!hero) {\n        var navTop = (mobileQuery.matches ? promoHeight : (promoHidden ? 0 : promoHeight)).toFixed(2) + \"px\";\n        nav.style.setProperty(\"--sonu-nav-top\", navTop);\n        nav.style.setProperty(\"top\", navTop, \"important\");\n      }\n      root.classList.toggle(\"sonu-global-header--promo-hidden\", promoHidden);\n      syncNavGeometry();\n    }\n\n    function syncNavGeometry() {\n      var navRect = nav.getBoundingClientRect();\n      nav.style.setProperty(\"--sonu-nav-height\", Math.max(0, Math.round(navRect.height || 70)) + \"px\");\n      nav.style.setProperty(\"--sonu-nav-fixed-top\", Math.max(0, Math.round(navRect.top || 0)) + \"px\");\n      nav.style.setProperty(\"--sonu-nav-left\", Math.max(0, Math.round(navRect.left || 0)) + \"px\");\n    }\n\n    function setPromoHidden(hidden) {\n      if (promoHidden === hidden) {\n        syncPromoMetrics();\n        syncNavState();\n        return;\n      }\n\n      promoHidden = hidden;\n      downScrollIntent = 0;\n      upScrollIntent = 0;\n      syncPromoMetrics();\n      syncNavState();\n    }\n\n    function registerPromoScrollIntent(delta, options) {\n      if (Math.abs(delta) < 4) {\n        return;\n      }\n\n      var useRawDelta = options && options.useRawDelta;\n      var markDirected = !options || options.markDirected !== false;\n      var cappedDelta = Math.min(useRawDelta ? 420 : 120, Math.abs(delta));\n      if (markDirected) {\n        lastDirectedInputAt = Date.now();\n      }\n\n      if (delta > 0) {\n        downScrollIntent += cappedDelta;\n        upScrollIntent = 0;\n        if (downScrollIntent >= 300) {\n          setPromoHidden(true);\n        }\n        return;\n      }\n\n      upScrollIntent += cappedDelta;\n      downScrollIntent = 0;\n      if (upScrollIntent >= 200) {\n        setPromoHidden(false);\n      }\n    }\n\n    function bindPromoReveal() {\n      if (!root.querySelector(\".sonu-promo-bar\")) {\n        return;\n      }\n\n      window.addEventListener(\n        \"wheel\",\n        function (event) {\n          registerPromoScrollIntent(event.deltaY);\n        },\n        { passive: true, capture: true }\n      );\n\n      window.addEventListener(\n        \"touchstart\",\n        function (event) {\n          lastTouchY = event.touches && event.touches.length ? event.touches[0].clientY : null;\n        },\n        { passive: true, capture: true }\n      );\n\n      window.addEventListener(\n        \"touchmove\",\n        function (event) {\n          if (!event.touches || !event.touches.length || lastTouchY === null) {\n            return;\n          }\n\n          var nextTouchY = event.touches[0].clientY;\n          registerPromoScrollIntent(lastTouchY - nextTouchY, { useRawDelta: true });\n          lastTouchY = nextTouchY;\n        },\n        { passive: true, capture: true }\n      );\n\n      window.addEventListener(\n        \"touchend\",\n        function () {\n          lastTouchY = null;\n        },\n        { passive: true, capture: true }\n      );\n    }\n\n    function syncDrawerMetrics() {\n      if (!mobileQuery.matches) {\n        nav.style.removeProperty(\"--sonu-drawer-top\");\n        nav.style.removeProperty(\"--sonu-drawer-width\");\n        document.documentElement.classList.remove(\"sonu-nav-is-open\");\n        document.body.classList.remove(\"sonu-nav-is-open\");\n        root.classList.remove(\"sonu-nav-is-open\");\n        return;\n      }\n\n      var drawerIsOpen = nav.classList.contains(\"is-open\") || nav.classList.contains(\"is-opening\") || nav.classList.contains(\"is-closing\");\n      var navRect = nav.getBoundingClientRect();\n      var drawerTop = drawerIsOpen ? 0 : Math.max(0, Math.round(navRect.top));\n      nav.style.setProperty(\"--sonu-drawer-top\", drawerTop + \"px\");\n      nav.style.setProperty(\"--sonu-drawer-width\", Math.min(374, Math.max(304, Math.round(window.innerWidth - 16))) + \"px\");\n      document.documentElement.classList.toggle(\"sonu-nav-is-open\", drawerIsOpen);\n      document.body.classList.toggle(\"sonu-nav-is-open\", drawerIsOpen);\n      root.classList.toggle(\"sonu-nav-is-open\", drawerIsOpen);\n    }\n\n    function clearActiveDropdowns() {\n      nav.classList.remove(\"has-open-dropdown\", \"is-dropdown-background-ready\");\n      root.querySelectorAll(\".sonu-nav-item--has-dropdown.is-active\").forEach(function (activeItem) {\n        activeItem.classList.remove(\"is-active\");\n        activeItem.querySelector(\"a\")?.setAttribute(\"aria-expanded\", \"false\");\n      });\n    }\n\n    function finishClosedState() {\n      nav.classList.add(\"is-resetting\");\n      nav.classList.remove(\"is-open\");\n      nav.classList.remove(\"is-opening\");\n      nav.classList.remove(\"is-closing\");\n      document.documentElement.classList.remove(\"sonu-nav-is-open\");\n      document.body.classList.remove(\"sonu-nav-is-open\");\n      root.classList.remove(\"sonu-nav-is-open\");\n      clearActiveDropdowns();\n      syncNavState();\n\n      window.requestAnimationFrame(function () {\n        nav.classList.remove(\"is-resetting\");\n      });\n\n      drawerCloseTimer = null;\n    }\n\n    function setOpen(open) {\n      if (drawerCloseTimer) {\n        window.clearTimeout(drawerCloseTimer);\n        drawerCloseTimer = null;\n      }\n\n      toggle.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\n      toggle.querySelector(\".visually-hidden\").textContent = open ? \"Close menu\" : \"Open menu\";\n\n      if (open) {\n        nav.classList.remove(\"is-closing\");\n        if (mobileQuery.matches) {\n          nav.style.removeProperty(\"transform\");\n        }\n        if (mobileQuery.matches) {\n          syncDrawerMetrics();\n        } else {\n          document.documentElement.classList.add(\"sonu-nav-is-open\");\n          document.body.classList.add(\"sonu-nav-is-open\");\n          root.classList.add(\"sonu-nav-is-open\");\n        }\n\n        if (mobileQuery.matches && !nav.classList.contains(\"is-open\")) {\n          nav.classList.add(\"is-opening\");\n          nav.getBoundingClientRect();\n          nav.classList.add(\"is-open\");\n          syncDrawerMetrics();\n\n          window.setTimeout(function () {\n            nav.classList.remove(\"is-opening\");\n            syncDrawerMetrics();\n          }, drawerMotionDuration);\n\n          return;\n        }\n\n        nav.classList.add(\"is-open\");\n        syncDrawerMetrics();\n        return;\n      }\n\n      if (mobileQuery.matches && nav.classList.contains(\"is-open\")) {\n        nav.classList.add(\"is-closing\");\n        drawerCloseTimer = window.setTimeout(finishClosedState, drawerMotionDuration);\n        return;\n      }\n\n      finishClosedState();\n    }\n\n    function setNavMetrics(progress) {\n      var viewportWidth = document.documentElement.clientWidth || window.innerWidth;\n      var maxWidth = 1312;\n      var initialWidth = Math.min(maxWidth, viewportWidth - 48);\n      var width = initialWidth + (viewportWidth - initialWidth) * progress;\n      var promoHeight = getPromoHeight() || 42;\n      var effectivePromoHeight = promoHidden ? 0 : promoHeight;\n      var navGap = progress >= 0.999 ? 0 : 16;\n\n      syncPromoMetrics();\n      nav.style.setProperty(\"--sonu-nav-progress\", progress.toFixed(3));\n      nav.style.setProperty(\"--sonu-nav-width\", Math.max(0, width).toFixed(2) + \"px\");\n      nav.style.setProperty(\"--sonu-nav-top\", (effectivePromoHeight + navGap).toFixed(2) + \"px\");\n      nav.style.removeProperty(\"top\");\n      nav.style.setProperty(\"--sonu-nav-margin-top\", navGap.toFixed(2) + \"px\");\n      nav.style.setProperty(\"--sonu-nav-radius\", (10 * (1 - progress)).toFixed(2) + \"px\");\n      window.requestAnimationFrame(syncNavGeometry);\n    }\n\n    function syncNavState() {\n      var scrollDepth = Math.max(window.scrollY || 0, document.documentElement.scrollTop || 0);\n      var scrollDelta = scrollDepth - lastScrollY;\n      var now = Date.now();\n\n      if (scrollDepth <= 2 && now - lastDirectedInputAt > 420) {\n        promoHidden = false;\n        downScrollIntent = 0;\n        upScrollIntent = 0;\n      }\n\n      lastScrollY = scrollDepth;\n\n      if (Math.abs(scrollDelta) >= 4 && now - lastDirectedInputAt > 80) {\n        registerPromoScrollIntent(scrollDelta, { useRawDelta: true, markDirected: false });\n      }\n\n      syncPromoMetrics();\n\n      if (!hero) {\n        if (root.classList.contains(\"sonu-global-header-shell\") && document.body.classList.contains(\"template-index\")) {\n          return;\n        }\n\n        var promoHeight = getPromoHeight() || 42;\n        var navTop = (mobileQuery.matches ? promoHeight : (promoHidden ? 0 : promoHeight)).toFixed(2) + \"px\";\n        nav.style.setProperty(\"--sonu-nav-progress\", \"1\");\n        nav.style.setProperty(\"--sonu-nav-width\", \"100%\");\n        nav.style.setProperty(\"--sonu-nav-top\", navTop);\n        nav.style.setProperty(\"top\", navTop, \"important\");\n        nav.style.setProperty(\"--sonu-nav-margin-top\", \"0px\");\n        nav.style.setProperty(\"--sonu-nav-radius\", \"0px\");\n        nav.classList.add(\"is-past-hero\");\n        window.requestAnimationFrame(syncNavGeometry);\n\n        if (mobileQuery.matches && nav.classList.contains(\"is-open\")) {\n          syncDrawerMetrics();\n        }\n        return;\n      }\n\n      if (mobileQuery.matches) {\n        var mobilePromoHeight = getPromoHeight() || getPromoTargetHeight();\n        var mobileNavTop = mobilePromoHeight.toFixed(2) + \"px\";\n        nav.style.setProperty(\"--sonu-nav-progress\", \"0\");\n        nav.style.setProperty(\"--sonu-nav-width\", \"100%\");\n        nav.style.setProperty(\"--sonu-nav-top\", mobileNavTop);\n        nav.style.setProperty(\"top\", mobileNavTop, \"important\");\n        nav.style.setProperty(\"--sonu-nav-margin-top\", \"0px\");\n        nav.style.setProperty(\"--sonu-nav-radius\", \"0px\");\n        var content = hero.querySelector(\".sonu-hero__content\");\n        var navRect = nav.getBoundingClientRect();\n        var shouldUseSolidNav = window.scrollY >= hero.offsetTop + hero.offsetHeight * 0.32;\n\n        if (content) {\n          shouldUseSolidNav = shouldUseSolidNav || content.getBoundingClientRect().top <= navRect.bottom + 64;\n        }\n\n        nav.classList.toggle(\"is-past-hero\", shouldUseSolidNav);\n        window.requestAnimationFrame(syncNavGeometry);\n        if (nav.classList.contains(\"is-open\")) {\n          syncDrawerMetrics();\n        }\n        return;\n      }\n\n      var heroBottom = hero.offsetTop + hero.offsetHeight;\n      var start = heroBottom - 130;\n      var progress = Math.min(1, Math.max(0, (window.scrollY - start) / 260));\n\n      setNavMetrics(progress);\n      nav.classList.toggle(\"is-past-hero\", progress > 0.02);\n    }\n\n    function handleCustomDrawerTrigger(event) {\n      if (mobileQuery.matches) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        if (customDrawer && customDrawer.classList.contains(\"is-open\")) {\n          closeCustomDrawer();\n        } else {\n          openCustomDrawer();\n        }\n      }\n    }\n\n    drawerTriggers.forEach(function (trigger) {\n      trigger.addEventListener(\"click\", handleCustomDrawerTrigger, true);\n    });\n\n    toggle.addEventListener(\"click\", function () {\n      setOpen(toggle.getAttribute(\"aria-expanded\") !== \"true\");\n    });\n\n    if (drawerClose) {\n      drawerClose.addEventListener(\"click\", function () {\n        setOpen(false);\n      });\n    }\n\n    nav.addEventListener(\"click\", function (event) {\n      if (mobileQuery.matches && nav.classList.contains(\"is-open\") && event.target === nav) {\n        setOpen(false);\n      }\n    });\n\n    menu.querySelectorAll(\"a\").forEach(function (link) {\n      link.addEventListener(\"click\", function () {\n        var item = link.closest(\".sonu-nav-item--has-dropdown\");\n\n        if (mobileQuery.matches && item && item.querySelector(\":scope > a\") === link) {\n          return;\n        }\n\n        setOpen(false);\n      });\n    });\n\n    document.addEventListener(\"click\", function (event) {\n      if (!nav.contains(event.target)) {\n        setOpen(false);\n      }\n    });\n\n    document.addEventListener(\"keydown\", function (event) {\n      if (event.key === \"Escape\") {\n        closeCustomDrawer();\n        setOpen(false);\n      }\n    });\n\n    bindPromoReveal();\n    syncNavState();\n    if (mobileQuery.addEventListener) {\n      mobileQuery.addEventListener(\"change\", function (event) {\n        if (!event.matches) {\n          destroyCustomDrawer();\n          setOpen(false);\n        }\n        syncNavState();\n      });\n    } else if (mobileQuery.addListener) {\n      mobileQuery.addListener(function (event) {\n        if (!event.matches) {\n          destroyCustomDrawer();\n          setOpen(false);\n        }\n        syncNavState();\n      });\n    }\n\n    window.addEventListener(\"resize\", function () {\n      if (!mobileQuery.matches) {\n        destroyCustomDrawer();\n      }\n    });\n    window.addEventListener(\"scroll\", syncNavState, { passive: true });\n    window.addEventListener(\"resize\", syncNavState);\n  }\n\n  function initMattressNavAddToCart(root) {\n    var triggers = Array.prototype.slice.call(root.querySelectorAll(\"[data-sonu-mattress-nav-atc]\"));\n\n    if (!triggers.length) {\n      return;\n    }\n\n    function findAddToCartButton() {\n      return document.querySelector(\n        \".sonu-mattress-build-101 #atc-box .add-to-cart:not([disabled]), \" +\n        \"#atc-box .add-to-cart:not([disabled]), \" +\n        \"form[action*='/cart/add'] .add-to-cart:not([disabled]), \" +\n        \"form[action*='/cart/add'] button[type='submit']:not([disabled])\"\n      );\n    }\n\n    triggers.forEach(function (trigger) {\n      trigger.addEventListener(\"click\", function (event) {\n        var addToCart = findAddToCartButton();\n        event.preventDefault();\n\n        if (addToCart) {\n          triggers.forEach(function (navTrigger) {\n            navTrigger.classList.add(\"btn--loading\");\n            navTrigger.setAttribute(\"aria-busy\", \"true\");\n          });\n          addToCart.click();\n          return;\n        }\n\n        var atcBox = document.getElementById(\"atc-box\");\n        if (atcBox) {\n          atcBox.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n        }\n      });\n    });\n\n    window.addEventListener(\"pageshow\", function (event) {\n      if (!event.persisted && !(window.performance && window.performance.navigation && window.performance.navigation.type === 2)) {\n        return;\n      }\n\n      triggers.forEach(function (trigger) {\n        trigger.classList.remove(\"btn--loading\");\n        trigger.removeAttribute(\"aria-busy\");\n      });\n    });\n  }\n\n  function initMegaMenu(root) {\n    var nav = root.querySelector(\"[data-sonu-nav]\");\n    var menu = nav ? nav.querySelector(\"[data-sonu-menu]\") : root.querySelector(\"[data-sonu-menu]\");\n    var mobileQuery = window.matchMedia(\"(max-width: 1023.98px)\");\n    var desktopMenuHitZones = [];\n    var lastDesktopPointer = null;\n    var desktopDropdownReadyTimer = null;\n\n    function syncNavGeometry() {\n      if (!nav) {\n        return;\n      }\n\n      var navRect = nav.getBoundingClientRect();\n      nav.style.setProperty(\"--sonu-nav-height\", Math.max(0, Math.round(navRect.height || 70)) + \"px\");\n      nav.style.setProperty(\"--sonu-nav-fixed-top\", Math.max(0, Math.round(navRect.top || 0)) + \"px\");\n      nav.style.setProperty(\"--sonu-nav-left\", Math.max(0, Math.round(navRect.left || 0)) + \"px\");\n      syncDesktopInteractionGeometry();\n    }\n\n    function isDesktopNav() {\n      return !mobileQuery.matches;\n    }\n\n    function clearDesktopDropdownReadyTimer() {\n      if (desktopDropdownReadyTimer) {\n        window.clearTimeout(desktopDropdownReadyTimer);\n        desktopDropdownReadyTimer = null;\n      }\n    }\n\n    function setDesktopDropdownReady(ready) {\n      if (nav) {\n        nav.classList.toggle(\"is-dropdown-background-ready\", !!ready);\n      }\n    }\n\n    function queueDesktopDropdownReady(backgroundAlreadyReady) {\n      if (!nav || !isDesktopNav()) {\n        return;\n      }\n\n      clearDesktopDropdownReadyTimer();\n\n      if (backgroundAlreadyReady) {\n        setDesktopDropdownReady(true);\n        return;\n      }\n\n      setDesktopDropdownReady(false);\n      desktopDropdownReadyTimer = window.setTimeout(function () {\n        setDesktopDropdownReady(true);\n        desktopDropdownReadyTimer = null;\n      }, 220);\n    }\n\n    function getTriggerForMenuTarget(target) {\n      return target && target.matches(\"a\") ? target : target?.querySelector(\":scope > a\");\n    }\n\n    function getVisibleRect(element) {\n      if (!element) {\n        return null;\n      }\n\n      var rect = element.getBoundingClientRect();\n      var style = window.getComputedStyle(element);\n\n      if (style.display === \"none\" || style.visibility === \"hidden\" || rect.width <= 0 || rect.height <= 0) {\n        return null;\n      }\n\n      return rect;\n    }\n\n    function syncDesktopTopMenuHitZones() {\n      desktopMenuHitZones = [];\n\n      if (!menu || !isDesktopNav()) {\n        return;\n      }\n\n      var entries = Array.prototype.slice.call(menu.children)\n        .filter(function (target) {\n          return !target.classList.contains(\"sonu-home-nav__mobile-only\") && !target.classList.contains(\"sonu-home-nav__drawer-social\");\n        })\n        .map(function (target) {\n          var trigger = getTriggerForMenuTarget(target);\n          var rect = getVisibleRect(trigger);\n\n          if (!rect) {\n            return null;\n          }\n\n          return { target: target, trigger: trigger, rect: rect };\n        })\n        .filter(Boolean);\n\n      if (!entries.length) {\n        return;\n      }\n\n      var entryTop = Math.min.apply(null, entries.map(function (candidate) { return candidate.rect.top; }));\n      var entryBottom = Math.max.apply(null, entries.map(function (candidate) { return candidate.rect.bottom; }));\n      var rowTop = entryTop - 10;\n      var rowBottom = entryBottom + 10;\n\n      entries.forEach(function (entry, index) {\n        var previous = entries[index - 1];\n        var next = entries[index + 1];\n        var leftBoundary = previous ? (previous.rect.right + entry.rect.left) / 2 : entry.rect.left;\n        var rightBoundary = next ? (entry.rect.right + next.rect.left) / 2 : entry.rect.right;\n        var leftPad = Math.max(0, entry.rect.left - leftBoundary);\n        var rightPad = Math.max(0, rightBoundary - entry.rect.right);\n\n        entry.trigger.style.setProperty(\"--sonu-menu-hit-left\", leftPad.toFixed(2) + \"px\");\n        entry.trigger.style.setProperty(\"--sonu-menu-hit-right\", rightPad.toFixed(2) + \"px\");\n        desktopMenuHitZones.push({\n          left: leftBoundary,\n          right: rightBoundary,\n          top: rowTop,\n          bottom: rowBottom,\n          target: entry.target,\n          trigger: entry.trigger\n        });\n      });\n    }\n\n    function getDesktopMenuHitZone(point) {\n      if (!point || !desktopMenuHitZones.length) {\n        return null;\n      }\n\n      return desktopMenuHitZones.find(function (zone) {\n        return point.x >= zone.left && point.x <= zone.right && point.y >= zone.top && point.y <= zone.bottom;\n      }) || null;\n    }\n\n    function setDesktopMenuZoneHover(trigger) {\n      if (!menu) {\n        return;\n      }\n\n      menu.querySelectorAll(\".is-zone-hover\").forEach(function (item) {\n        if (item !== trigger) {\n          item.classList.remove(\"is-zone-hover\");\n        }\n      });\n\n      if (trigger) {\n        trigger.classList.add(\"is-zone-hover\");\n      }\n    }\n\n    function setDesktopMenuZoneCursor(active) {\n      if (menu) {\n        menu.classList.toggle(\"is-zone-cursor\", !!active);\n      }\n    }\n\n    function syncAccessoryTabGeometry() {\n      if (!nav || !isDesktopNav()) {\n        return;\n      }\n\n      var accessoriesTrigger = Array.prototype.slice.call(nav.querySelectorAll(\".sonu-nav-item--has-dropdown > a\")).find(function (trigger) {\n        return trigger.textContent.trim().toLowerCase() === \"accessories\";\n      });\n      var tabs = nav.querySelector(\".sonu-nav-dropdown--accessories .sonu-nav-tabs\");\n\n      if (!accessoriesTrigger || !tabs) {\n        return;\n      }\n\n      nav.style.setProperty(\"--sonu-accessories-tabs-shift-x\", \"0px\");\n\n      var triggerRect = getVisibleRect(accessoriesTrigger);\n      var tabsRect = getVisibleRect(tabs);\n\n      if (!triggerRect || !tabsRect) {\n        return;\n      }\n\n      var viewportWidth = document.documentElement.clientWidth || window.innerWidth;\n      var requestedShift = triggerRect.left + triggerRect.width / 2 - (tabsRect.left + tabsRect.width / 2) + 20;\n      var shift = Math.max(24 - tabsRect.left, Math.min(viewportWidth - 24 - tabsRect.right, requestedShift));\n      var tabButtons = Array.prototype.slice.call(tabs.querySelectorAll('[role=\"tab\"]'));\n      var tabRects = tabButtons.map(function (button) {\n        return { button: button, rect: getVisibleRect(button) };\n      }).filter(function (entry) {\n        return !!entry.rect;\n      });\n\n      nav.style.setProperty(\"--sonu-accessories-tabs-shift-x\", shift.toFixed(2) + \"px\");\n\n      tabRects.forEach(function (entry, index) {\n        var previous = tabRects[index - 1];\n        var next = tabRects[index + 1];\n        var leftBoundary = previous ? (previous.rect.right + entry.rect.left) / 2 : entry.rect.left;\n        var rightBoundary = next ? (entry.rect.right + next.rect.left) / 2 : entry.rect.right;\n\n        entry.button.style.setProperty(\"--sonu-tab-hit-left\", Math.max(0, entry.rect.left - leftBoundary).toFixed(2) + \"px\");\n        entry.button.style.setProperty(\"--sonu-tab-hit-right\", Math.max(0, rightBoundary - entry.rect.right).toFixed(2) + \"px\");\n      });\n    }\n\n    function syncDesktopInteractionGeometry() {\n      syncDesktopTopMenuHitZones();\n      syncAccessoryTabGeometry();\n    }\n\n    function isPointerInsideOpenMenu(point, activeItem, dropdown) {\n      if (!point || !activeItem || !nav || !isDesktopNav() || !activeItem.classList.contains(\"is-active\")) {\n        return false;\n      }\n\n      var trigger = activeItem.querySelector(\":scope > a\");\n      var triggerRect = getVisibleRect(trigger);\n      var navRect = nav.getBoundingClientRect();\n      var dropdownRect = dropdown ? dropdown.getBoundingClientRect() : navRect;\n      var dropdownRects = dropdown ? Array.prototype.slice.call(dropdown.querySelectorAll(\n        \".sonu-nav-tabs, .sonu-nav-tabs button, .sonu-nav-mega__inner, .sonu-nav-panel, .sonu-nav-product\"\n      )).map(getVisibleRect).filter(Boolean) : [];\n      var rects = [navRect, dropdownRect].concat(triggerRect ? [triggerRect] : [], dropdownRects);\n\n      if (rects.some(function (rect) {\n        return point.x >= rect.left - 12 && point.x <= rect.right + 12 && point.y >= rect.top - 12 && point.y <= rect.bottom + 12;\n      })) {\n        return true;\n      }\n\n      var left = Math.min.apply(null, rects.map(function (rect) { return rect.left; })) - 12;\n      var right = Math.max.apply(null, rects.map(function (rect) { return rect.right; })) + 12;\n      var top = Math.min(navRect.top, triggerRect ? triggerRect.top : navRect.top) - 12;\n      var bottom = Math.max.apply(null, rects.map(function (rect) { return rect.bottom; })) + 28;\n\n      return point.x >= left && point.x <= right && point.y >= top && point.y <= bottom;\n    }\n\n    function activateDesktopMenuHitZone(event) {\n      if (!isDesktopNav()) {\n        setDesktopMenuZoneCursor(false);\n        return false;\n      }\n\n      var point = { x: event.clientX, y: event.clientY };\n      var zone = getDesktopMenuHitZone(point);\n      if (!zone) {\n        syncDesktopTopMenuHitZones();\n        zone = getDesktopMenuHitZone(point);\n      }\n      setDesktopMenuZoneCursor(!!zone);\n      var trigger = event.target && event.target.closest ? event.target.closest(\".sonu-home-nav__menu > .sonu-nav-item--has-dropdown > a, .sonu-home-nav__menu > a\") : null;\n\n      if (!trigger && menu) {\n        trigger = zone ? zone.trigger : null;\n      }\n\n      if (!trigger || !menu || !menu.contains(trigger)) {\n        setDesktopMenuZoneHover(null);\n        return false;\n      }\n\n      setDesktopMenuZoneHover(trigger);\n\n      var item = trigger.closest(\".sonu-nav-item--has-dropdown\");\n\n      if (item && typeof item.__sonuSetActiveDropdown === \"function\") {\n        item.__sonuSetActiveDropdown(true);\n        return true;\n      }\n\n      clearActiveItems();\n      return true;\n    }\n\n    function clickDesktopMenuHitZone(event) {\n      if (!isDesktopNav() || !menu || event.target.closest(\".sonu-home-nav__menu > a, .sonu-home-nav__menu > .sonu-nav-item > a\")) {\n        return;\n      }\n\n      var point = { x: event.clientX, y: event.clientY };\n      var zone = getDesktopMenuHitZone(point);\n      if (!zone) {\n        syncDesktopTopMenuHitZones();\n        zone = getDesktopMenuHitZone(point);\n      }\n      var trigger = zone ? zone.trigger : null;\n\n      if (!trigger || !menu.contains(trigger) || trigger.closest(\".sonu-nav-item--has-dropdown\")) {\n        return;\n      }\n\n      trigger.click();\n    }\n\n    function blockInactiveDesktopDropdownEvent(event) {\n      if (!isDesktopNav() || !nav || !event.target || !event.target.closest) {\n        return;\n      }\n\n      var dropdownLink = event.target.closest(\".sonu-nav-dropdown a\");\n      if (!dropdownLink || !nav.contains(dropdownLink)) {\n        return;\n      }\n\n      var dropdownItem = dropdownLink.closest(\".sonu-nav-item--has-dropdown\");\n      var isOpenLink = !!(dropdownItem && dropdownItem.classList.contains(\"is-active\") && nav.classList.contains(\"has-open-dropdown\"));\n\n      if (isOpenLink) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n      if (event.stopImmediatePropagation) {\n        event.stopImmediatePropagation();\n      }\n    }\n\n    function setMobileDropdownHeight(dropdown) {\n      if (!dropdown || !mobileQuery.matches) {\n        return;\n      }\n\n      dropdown.style.setProperty(\"--sonu-mobile-dropdown-height\", Math.ceil(dropdown.scrollHeight) + \"px\");\n    }\n\n    function clearMobileDropdownHeights() {\n      root.querySelectorAll(\".sonu-nav-dropdown\").forEach(function (dropdown) {\n        dropdown.style.removeProperty(\"--sonu-mobile-dropdown-height\");\n      });\n    }\n\n    function clearActiveItems() {\n      clearDesktopDropdownReadyTimer();\n      setDesktopDropdownReady(false);\n      root.querySelectorAll(\".sonu-nav-item--has-dropdown.is-active\").forEach(function (activeItem) {\n        activeItem.classList.remove(\"is-active\");\n        activeItem.querySelector(\"a\")?.setAttribute(\"aria-expanded\", \"false\");\n      });\n\n      if (nav) {\n        nav.classList.remove(\"has-open-dropdown\");\n      }\n    }\n\n    root.querySelectorAll(\".sonu-nav-item--has-dropdown\").forEach(function (item) {\n      var trigger = item.querySelector(\"a\");\n      var dropdown = item.querySelector(\".sonu-nav-dropdown\");\n      var closeTimer = null;\n      var mobileDropdownCloseTimer = null;\n\n      if (!trigger) {\n        return;\n      }\n\n      trigger.addEventListener(\"click\", function (event) {\n        if (mobileQuery.matches) {\n          if (!dropdown) {\n            return;\n          }\n\n          event.preventDefault();\n          setActive(!item.classList.contains(\"is-active\"));\n          return;\n        }\n\n        if (!dropdown) {\n          return;\n        }\n\n        event.preventDefault();\n        setActive(!item.classList.contains(\"is-active\"));\n      });\n\n      function setActive(active) {\n        var desktopMode = isDesktopNav();\n        var backgroundAlreadyReady = desktopMode && nav && nav.classList.contains(\"is-dropdown-background-ready\");\n\n        if (closeTimer) {\n          window.clearTimeout(closeTimer);\n          closeTimer = null;\n        }\n\n        if (mobileDropdownCloseTimer) {\n          window.clearTimeout(mobileDropdownCloseTimer);\n          mobileDropdownCloseTimer = null;\n        }\n\n        if (active && desktopMode && item.classList.contains(\"is-active\")) {\n          trigger.setAttribute(\"aria-expanded\", \"true\");\n          if (nav) {\n            nav.classList.add(\"has-open-dropdown\");\n          }\n          return;\n        }\n\n        if (active) {\n          syncNavGeometry();\n          item.classList.remove(\"is-closing-dropdown\");\n          root.querySelectorAll(\".sonu-nav-item--has-dropdown.is-active\").forEach(function (activeItem) {\n            var activeTrigger = activeItem.querySelector(\"a\");\n\n            if (activeItem !== item) {\n              if (mobileQuery.matches) {\n                setMobileDropdownHeight(activeItem.querySelector(\".sonu-nav-dropdown\"));\n                activeItem.classList.add(\"is-closing-dropdown\");\n                window.setTimeout(function () {\n                  activeItem.classList.remove(\"is-active\");\n                  activeItem.classList.remove(\"is-closing-dropdown\");\n                  if (nav) {\n                    nav.classList.toggle(\"has-open-dropdown\", !!root.querySelector(\".sonu-nav-item--has-dropdown.is-active\"));\n                  }\n                }, drawerDropdownDuration);\n              } else {\n                activeItem.classList.remove(\"is-active\");\n              }\n\n              if (activeTrigger) {\n                activeTrigger.setAttribute(\"aria-expanded\", \"false\");\n              }\n            }\n          });\n        } else if (mobileQuery.matches && item.classList.contains(\"is-active\")) {\n          setMobileDropdownHeight(dropdown);\n          item.classList.add(\"is-closing-dropdown\");\n          if (dropdown) {\n            dropdown.getBoundingClientRect();\n          }\n          mobileDropdownCloseTimer = window.setTimeout(function () {\n            item.classList.remove(\"is-active\");\n            item.classList.remove(\"is-closing-dropdown\");\n            if (nav) {\n              nav.classList.toggle(\"has-open-dropdown\", !!root.querySelector(\".sonu-nav-item--has-dropdown.is-active\"));\n            }\n            mobileDropdownCloseTimer = null;\n          }, drawerDropdownDuration);\n        }\n\n        if (active) {\n          if (mobileQuery.matches && dropdown) {\n            dropdown.style.removeProperty(\"--sonu-mobile-dropdown-height\");\n          }\n          item.classList.add(\"is-active\");\n          window.requestAnimationFrame(function () {\n            setMobileDropdownHeight(dropdown);\n            if (!mobileQuery.matches) {\n              syncDesktopInteractionGeometry();\n              window.setTimeout(syncDesktopInteractionGeometry, 120);\n            }\n          });\n        } else if (!mobileQuery.matches) {\n          item.classList.remove(\"is-active\");\n        }\n        trigger.setAttribute(\"aria-expanded\", active ? \"true\" : \"false\");\n\n        if (nav) {\n          var hasOpenDropdown = !!root.querySelector(\".sonu-nav-item--has-dropdown.is-active\");\n          nav.classList.toggle(\"has-open-dropdown\", hasOpenDropdown);\n          if (desktopMode) {\n            if (active && hasOpenDropdown) {\n              queueDesktopDropdownReady(backgroundAlreadyReady);\n            } else if (!hasOpenDropdown) {\n              clearDesktopDropdownReadyTimer();\n              setDesktopDropdownReady(false);\n            }\n          } else {\n            clearDesktopDropdownReadyTimer();\n            setDesktopDropdownReady(false);\n          }\n        }\n      }\n\n      item.__sonuSetActiveDropdown = setActive;\n\n      function queueClose() {\n      if (closeTimer) {\n        window.clearTimeout(closeTimer);\n      }\n\n      closeTimer = window.setTimeout(function () {\n        if (isPointerInsideOpenMenu(lastDesktopPointer, item, dropdown)) {\n          closeTimer = null;\n          return;\n        }\n\n        if (!item.matches(\":hover\") && (!dropdown || !dropdown.matches(\":hover\")) && !item.contains(document.activeElement)) {\n          setActive(false);\n        }\n        closeTimer = null;\n      }, 220);\n    }\n\n      item.addEventListener(\"mouseenter\", function (event) {\n        if (mobileQuery.matches) {\n          return;\n        }\n\n        var triggerRect = getVisibleRect(trigger);\n\n        if (!triggerRect || event.clientX < triggerRect.left || event.clientX > triggerRect.right || event.clientY < triggerRect.top || event.clientY > triggerRect.bottom) {\n          return;\n        }\n\n        setActive(true);\n      });\n\n      item.addEventListener(\"mouseleave\", function () {\n        if (mobileQuery.matches) {\n          return;\n        }\n\n        queueClose();\n      });\n\n      item.addEventListener(\"focusin\", function () {\n        if (mobileQuery.matches) {\n          return;\n        }\n\n        setActive(true);\n      });\n\n      item.addEventListener(\"focusout\", function (event) {\n        if (mobileQuery.matches) {\n          return;\n        }\n\n        if (!item.contains(event.relatedTarget)) {\n          queueClose();\n        }\n      });\n\n      if (dropdown) {\n        dropdown.addEventListener(\"mouseenter\", function () {\n          if (mobileQuery.matches) {\n            return;\n          }\n\n          if (closeTimer) {\n            window.clearTimeout(closeTimer);\n            closeTimer = null;\n          }\n        });\n\n        dropdown.addEventListener(\"mouseleave\", function () {\n          if (mobileQuery.matches) {\n            return;\n          }\n\n          queueClose();\n        });\n      }\n    });\n\n    document.addEventListener(\"mousemove\", function (event) {\n      if (mobileQuery.matches) {\n        return;\n      }\n\n      lastDesktopPointer = {\n        x: event.clientX,\n        y: event.clientY\n      };\n\n      if (activateDesktopMenuHitZone(event)) {\n        return;\n      }\n\n      var activeItem = root.querySelector(\".sonu-nav-item--has-dropdown.is-active\");\n\n      if (!activeItem || !nav) {\n        return;\n      }\n\n      var dropdown = activeItem.querySelector(\".sonu-nav-dropdown\");\n\n      if (!isPointerInsideOpenMenu(lastDesktopPointer, activeItem, dropdown)) {\n        clearActiveItems();\n      }\n    });\n\n    document.addEventListener(\"click\", clickDesktopMenuHitZone);\n    document.addEventListener(\"pointerdown\", blockInactiveDesktopDropdownEvent, true);\n    document.addEventListener(\"click\", blockInactiveDesktopDropdownEvent, true);\n\n    root.querySelectorAll(\".sonu-nav-dropdown--accessories\").forEach(function (menu) {\n      if (menu.dataset.sonuAccessoryTabsEnhanced === \"true\") {\n        return;\n      }\n\n      menu.dataset.sonuAccessoryTabsEnhanced = \"true\";\n\n      var buttons = Array.prototype.slice.call(menu.querySelectorAll('[role=\"tab\"]'));\n      var panels = Array.prototype.slice.call(menu.querySelectorAll('[role=\"tabpanel\"]'));\n      var panelHost = menu.querySelector(\".sonu-nav-mega__inner\");\n      var panelArchive = document.createDocumentFragment();\n      var desktopLivePanel = null;\n      var desktopPanelMarkup = {};\n\n      if (!buttons.length || !panels.length) {\n        return;\n      }\n\n      panels.forEach(function (panel) {\n        desktopPanelMarkup[panel.id] = panel.innerHTML;\n      });\n\n      function setAccessoryMobileHeight() {\n        if (!mobileQuery.matches) {\n          return;\n        }\n\n        var activePanel = panels.find(function (panel) {\n          return panel.classList.contains(\"is-active\");\n        });\n        var height = buttons.reduce(function (sum, button) {\n          return sum + button.getBoundingClientRect().height;\n        }, 0);\n\n        if (activePanel) {\n          height += activePanel.scrollHeight;\n        }\n\n        menu.style.setProperty(\"--sonu-mobile-dropdown-height\", Math.ceil(height + 12) + \"px\");\n      }\n\n      function queueAccessoryMobileHeight() {\n        if (!mobileQuery.matches) {\n          return;\n        }\n\n        window.requestAnimationFrame(function () {\n          setAccessoryMobileHeight();\n        });\n      }\n\n      function suppressDesktopPanel(panel, suppressed) {\n        panel.setAttribute(\"aria-hidden\", suppressed ? \"true\" : \"false\");\n        if (\"inert\" in panel) {\n          panel.inert = suppressed;\n        }\n\n        [\"clip-path\", \"display\", \"height\", \"inset\", \"max-height\", \"opacity\", \"overflow\", \"pointer-events\", \"position\", \"transform\", \"visibility\", \"width\", \"z-index\"].forEach(function (property) {\n          panel.style.removeProperty(property);\n        });\n\n        if (!suppressed) {\n          return;\n        }\n\n        panel.style.setProperty(\"clip-path\", \"inset(50%)\", \"important\");\n        panel.style.setProperty(\"display\", \"none\", \"important\");\n        panel.style.setProperty(\"height\", \"0\", \"important\");\n        panel.style.setProperty(\"inset\", \"0 auto auto 0\", \"important\");\n        panel.style.setProperty(\"max-height\", \"0\", \"important\");\n        panel.style.setProperty(\"opacity\", \"0\", \"important\");\n        panel.style.setProperty(\"overflow\", \"hidden\", \"important\");\n        panel.style.setProperty(\"pointer-events\", \"none\", \"important\");\n        panel.style.setProperty(\"position\", \"absolute\", \"important\");\n        panel.style.setProperty(\"transform\", \"none\", \"important\");\n        panel.style.setProperty(\"visibility\", \"hidden\", \"important\");\n        panel.style.setProperty(\"width\", \"0\", \"important\");\n        panel.style.setProperty(\"z-index\", \"-1\", \"important\");\n      }\n\n      function clearDesktopLivePanel() {\n        menu.querySelectorAll(\".sonu-nav-panel--desktop-live\").forEach(function (panel) {\n          panel.parentElement?.removeChild(panel);\n        });\n\n        if (desktopLivePanel && desktopLivePanel.parentElement) {\n          desktopLivePanel.parentElement.removeChild(desktopLivePanel);\n        }\n\n        desktopLivePanel = null;\n      }\n\n      function parkOriginalPanels() {\n        panels.forEach(function (panel) {\n          panel.classList.remove(\"is-active\");\n          panel.hidden = true;\n          suppressDesktopPanel(panel, true);\n          panelArchive.appendChild(panel);\n        });\n      }\n\n      function restoreOriginalMobilePanels() {\n        clearDesktopLivePanel();\n\n        buttons.forEach(function (button) {\n          var panel = panels.find(function (candidate) {\n            return candidate.id === button.getAttribute(\"aria-controls\");\n          });\n\n          if (panel && panel.parentElement !== button.parentElement) {\n            button.insertAdjacentElement(\"afterend\", panel);\n          }\n        });\n      }\n\n      function renderDesktopPanel(button) {\n        var targetId = button.getAttribute(\"aria-controls\");\n        var sourcePanel = panels.find(function (panel) {\n          return panel.id === targetId;\n        });\n\n        if (!sourcePanel || !panelHost) {\n          return;\n        }\n\n        clearDesktopLivePanel();\n        parkOriginalPanels();\n        panelHost.getBoundingClientRect();\n\n        desktopLivePanel = document.createElement(\"div\");\n        desktopLivePanel.className = \"sonu-nav-panel sonu-nav-panel--desktop-live sonu-nav-panel--\" + (sourcePanel.getAttribute(\"data-sonu-nav-panel\") || \"\") + \" is-active\";\n        desktopLivePanel.setAttribute(\"role\", \"tabpanel\");\n        desktopLivePanel.id = targetId;\n        desktopLivePanel.setAttribute(\"aria-labelledby\", sourcePanel.getAttribute(\"aria-labelledby\") || button.id || \"\");\n        desktopLivePanel.setAttribute(\"data-sonu-nav-panel\", sourcePanel.getAttribute(\"data-sonu-nav-panel\") || \"\");\n        desktopLivePanel.hidden = false;\n        desktopLivePanel.innerHTML = desktopPanelMarkup[targetId] || \"\";\n        suppressDesktopPanel(desktopLivePanel, false);\n\n        if (desktopLivePanel.parentElement !== panelHost) {\n          panelHost.appendChild(desktopLivePanel);\n        }\n\n        panelHost.getBoundingClientRect();\n      }\n\n      function selectPanel(button) {\n        var targetId = button.getAttribute(\"aria-controls\");\n        var desktopMode = !mobileQuery.matches;\n\n        buttons.forEach(function (tabButton) {\n          var selected = tabButton === button;\n          tabButton.setAttribute(\"aria-selected\", selected ? \"true\" : \"false\");\n          tabButton.setAttribute(\"tabindex\", selected ? \"0\" : \"-1\");\n        });\n\n        if (desktopMode) {\n          renderDesktopPanel(button);\n          return;\n        }\n\n        clearDesktopLivePanel();\n\n        panels.forEach(function (panel) {\n          if (panel.id === targetId) {\n            return;\n          }\n\n          panel.classList.remove(\"is-active\");\n          panel.hidden = false;\n          suppressDesktopPanel(panel, false);\n        });\n\n        panels.forEach(function (panel) {\n          if (panel.id !== targetId) {\n            return;\n          }\n\n          panel.hidden = false;\n          panel.classList.add(\"is-active\");\n          suppressDesktopPanel(panel, false);\n        });\n\n        queueAccessoryMobileHeight();\n      }\n\n      function activate(button) {\n        if (mobileQuery.matches && button.getAttribute(\"aria-selected\") === \"true\") {\n          deactivateMobilePanels();\n          return;\n        }\n\n        if (!mobileQuery.matches && button.getAttribute(\"aria-selected\") === \"true\") {\n          return;\n        }\n\n        selectPanel(button);\n      }\n\n      function setAccessoryTabZoneHover(button) {\n        buttons.forEach(function (tabButton) {\n          tabButton.classList.toggle(\"is-zone-hover\", tabButton === button);\n        });\n      }\n\n      function getAccessoryTabFromPoint(point) {\n        if (!point || mobileQuery.matches) {\n          return null;\n        }\n\n        var tabEntries = buttons.map(function (button) {\n          return { button: button, rect: getVisibleRect(button) };\n        }).filter(function (entry) {\n          return !!entry.rect;\n        });\n\n        if (!tabEntries.length) {\n          return null;\n        }\n\n        var top = Math.min.apply(null, tabEntries.map(function (entry) { return entry.rect.top; })) - 10;\n        var bottom = Math.max.apply(null, tabEntries.map(function (entry) { return entry.rect.bottom; })) + 10;\n\n        if (point.y < top || point.y > bottom) {\n          return null;\n        }\n\n        var match = tabEntries.find(function (entry, index) {\n          var previous = tabEntries[index - 1];\n          var next = tabEntries[index + 1];\n          var leftBoundary = previous ? (previous.rect.right + entry.rect.left) / 2 : entry.rect.left;\n          var rightBoundary = next ? (entry.rect.right + next.rect.left) / 2 : entry.rect.right;\n\n          return point.x >= leftBoundary && point.x <= rightBoundary;\n        });\n\n        return match ? match.button : null;\n      }\n\n      function deactivateMobilePanels() {\n        buttons.forEach(function (tabButton) {\n          tabButton.setAttribute(\"aria-selected\", \"false\");\n          tabButton.setAttribute(\"tabindex\", \"0\");\n        });\n\n        panels.forEach(function (panel) {\n          panel.hidden = false;\n          panel.classList.remove(\"is-active\");\n          suppressDesktopPanel(panel, false);\n        });\n\n        queueAccessoryMobileHeight();\n      }\n\n      function syncPanelPlacement() {\n        if (mobileQuery.matches) {\n          restoreOriginalMobilePanels();\n          deactivateMobilePanels();\n          return;\n        }\n\n        var selectedButton = buttons.find(function (button) {\n          return button.getAttribute(\"aria-selected\") === \"true\";\n        }) || buttons[0];\n        selectPanel(selectedButton);\n      }\n\n      buttons.forEach(function (button, index) {\n        button.setAttribute(\"data-sonu-mobile-label\", button.textContent.trim());\n        button.setAttribute(\"tabindex\", index === 0 ? \"0\" : \"-1\");\n\n        button.addEventListener(\"click\", function () {\n          activate(button);\n        });\n\n        button.addEventListener(\"mouseenter\", function () {\n          if (mobileQuery.matches) {\n            return;\n          }\n\n          setAccessoryTabZoneHover(button);\n          activate(button);\n        });\n\n        button.addEventListener(\"focus\", function () {\n          if (mobileQuery.matches) {\n            return;\n          }\n\n          setAccessoryTabZoneHover(button);\n          activate(button);\n        });\n\n        button.addEventListener(\"keydown\", function (event) {\n          var nextIndex = index;\n\n          if (event.key === \"ArrowRight\") {\n            nextIndex = (index + 1) % buttons.length;\n          } else if (event.key === \"ArrowLeft\") {\n            nextIndex = (index - 1 + buttons.length) % buttons.length;\n          } else if (event.key === \"Home\") {\n            nextIndex = 0;\n          } else if (event.key === \"End\") {\n            nextIndex = buttons.length - 1;\n          } else {\n            return;\n          }\n\n          event.preventDefault();\n          buttons[nextIndex].focus();\n          activate(buttons[nextIndex]);\n        });\n      });\n\n      var tabsWrap = menu.querySelector(\".sonu-nav-tabs\");\n\n      if (tabsWrap) {\n        function setAccessoryTabZoneCursor(active) {\n          tabsWrap.classList.toggle(\"is-zone-cursor\", !!active);\n          if (panelHost) {\n            panelHost.classList.toggle(\"is-zone-cursor\", !!active);\n          }\n        }\n\n        function handleAccessoryTabPoint(event) {\n          var parentItem = menu.closest(\".sonu-nav-item--has-dropdown\");\n          if (mobileQuery.matches || (parentItem && !parentItem.classList.contains(\"is-active\"))) {\n            setAccessoryTabZoneCursor(false);\n            return;\n          }\n\n          var tab = getAccessoryTabFromPoint({ x: event.clientX, y: event.clientY });\n          setAccessoryTabZoneCursor(!!tab);\n\n          if (tab) {\n            setAccessoryTabZoneHover(tab);\n            activate(tab);\n          }\n        }\n\n        tabsWrap.addEventListener(\"mousemove\", handleAccessoryTabPoint);\n        menu.addEventListener(\"mousemove\", handleAccessoryTabPoint);\n        document.addEventListener(\"mousemove\", handleAccessoryTabPoint);\n\n        tabsWrap.addEventListener(\"click\", function (event) {\n          var tab = getAccessoryTabFromPoint({ x: event.clientX, y: event.clientY });\n\n          if (!tab || event.target === tab || tab.contains(event.target)) {\n            return;\n          }\n\n          event.preventDefault();\n          setAccessoryTabZoneHover(tab);\n          activate(tab);\n        });\n\n        tabsWrap.addEventListener(\"mouseleave\", function () {\n          setAccessoryTabZoneHover(null);\n          setAccessoryTabZoneCursor(false);\n        });\n      }\n\n      var parentItem = menu.closest(\".sonu-nav-item--has-dropdown\");\n      var parentTrigger = parentItem ? parentItem.querySelector(\":scope > a\") : null;\n\n      if (parentTrigger) {\n        parentTrigger.addEventListener(\"click\", function () {\n          if (mobileQuery.matches) {\n            if (parentItem && parentItem.classList.contains(\"is-closing-dropdown\")) {\n              window.setTimeout(deactivateMobilePanels, 620);\n              return;\n            }\n\n            window.requestAnimationFrame(deactivateMobilePanels);\n          }\n        });\n      }\n\n      syncPanelPlacement();\n      syncDesktopInteractionGeometry();\n      if (mobileQuery.addEventListener) {\n        mobileQuery.addEventListener(\"change\", function () {\n          clearDesktopDropdownReadyTimer();\n          setDesktopDropdownReady(false);\n          syncPanelPlacement();\n          syncDesktopInteractionGeometry();\n          if (!mobileQuery.matches) {\n            clearMobileDropdownHeights();\n          }\n        });\n      } else if (mobileQuery.addListener) {\n        mobileQuery.addListener(function () {\n          clearDesktopDropdownReadyTimer();\n          setDesktopDropdownReady(false);\n          syncPanelPlacement();\n          syncDesktopInteractionGeometry();\n          if (!mobileQuery.matches) {\n            clearMobileDropdownHeights();\n          }\n        });\n      }\n    });\n\n    syncDesktopInteractionGeometry();\n    window.setTimeout(syncDesktopInteractionGeometry, 250);\n    window.setTimeout(syncDesktopInteractionGeometry, 700);\n    if (document.readyState === \"complete\") {\n      window.requestAnimationFrame(syncDesktopInteractionGeometry);\n    } else {\n      window.addEventListener(\"load\", syncDesktopInteractionGeometry, { once: true });\n    }\n    window.addEventListener(\"scroll\", syncNavGeometry, { passive: true });\n    window.addEventListener(\"resize\", syncNavGeometry);\n  }\n\n  function initTabs(root) {\n    root.querySelectorAll(\"[data-sonu-tabs]\").forEach(function (tabs) {\n      var buttons = Array.prototype.slice.call(tabs.querySelectorAll('[role=\"tab\"]'));\n      var panels = Array.prototype.slice.call(tabs.querySelectorAll('[role=\"tabpanel\"]'));\n\n      if (!buttons.length || !panels.length) {\n        return;\n      }\n\n      function activate(button) {\n        var targetId = button.getAttribute(\"aria-controls\");\n        var feature = button.getAttribute(\"data-feature\");\n        var visual = tabs.closest(\".sonu-system__grid\");\n\n        buttons.forEach(function (tabButton) {\n          var selected = tabButton === button;\n          tabButton.setAttribute(\"aria-selected\", selected ? \"true\" : \"false\");\n          tabButton.setAttribute(\"tabindex\", selected ? \"0\" : \"-1\");\n        });\n\n        panels.forEach(function (panel) {\n          var selected = panel.id === targetId;\n          panel.hidden = !selected;\n          panel.classList.toggle(\"is-active\", selected);\n        });\n\n        if (visual && feature) {\n          visual.setAttribute(\"data-active-feature\", feature);\n        }\n      }\n\n      buttons.forEach(function (button, index) {\n        button.setAttribute(\"tabindex\", index === 0 ? \"0\" : \"-1\");\n\n        button.addEventListener(\"click\", function () {\n          activate(button);\n        });\n\n        button.addEventListener(\"keydown\", function (event) {\n          var nextIndex = index;\n\n          if (event.key === \"ArrowRight\") {\n            nextIndex = (index + 1) % buttons.length;\n          } else if (event.key === \"ArrowLeft\") {\n            nextIndex = (index - 1 + buttons.length) % buttons.length;\n          } else if (event.key === \"Home\") {\n            nextIndex = 0;\n          } else if (event.key === \"End\") {\n            nextIndex = buttons.length - 1;\n          } else {\n            return;\n          }\n\n          event.preventDefault();\n          buttons[nextIndex].focus();\n          activate(buttons[nextIndex]);\n        });\n      });\n    });\n  }\n\n  function initSystemAccordion(root) {\n    root.querySelectorAll(\"[data-sonu-system-accordion]\").forEach(function (accordion) {\n      var items = Array.prototype.slice.call(accordion.querySelectorAll(\".sonu-system-feature\"));\n      var section = accordion.closest(\".sonu-system\") || root;\n      var hotspots = Array.prototype.slice.call(section.querySelectorAll(\"[data-sonu-system-hotspot]\"));\n\n      if (!items.length) {\n        return;\n      }\n\n      function getItemKey(item) {\n        return item ? item.getAttribute(\"data-sonu-system-feature\") : \"\";\n      }\n\n      function getHotspotKey(hotspot) {\n        return hotspot ? hotspot.getAttribute(\"data-sonu-system-hotspot\") : \"\";\n      }\n\n      function findItemByKey(key) {\n        return items.find(function (item) {\n          return getItemKey(item) === key;\n        });\n      }\n\n      function syncPanelHeights() {\n        items.forEach(function (item) {\n          var panel = item.querySelector(\".sonu-system-feature__panel\");\n\n          if (panel) {\n            panel.style.setProperty(\"--sonu-system-panel-height\", panel.scrollHeight + \"px\");\n          }\n        });\n      }\n\n      function queuePanelHeightSync() {\n        if (queuePanelHeightSync.queued) {\n          return;\n        }\n\n        queuePanelHeightSync.queued = true;\n        window.requestAnimationFrame(function () {\n          queuePanelHeightSync.queued = false;\n          syncPanelHeights();\n        });\n      }\n\n      function setActive(target) {\n        syncPanelHeights();\n\n        var targetKey = getItemKey(target);\n\n        items.forEach(function (item) {\n          var active = !!target && item === target;\n          var button = item.querySelector(\"button\");\n\n          item.classList.toggle(\"is-active\", active);\n\n          if (button) {\n            button.setAttribute(\"aria-expanded\", active ? \"true\" : \"false\");\n          }\n        });\n\n        hotspots.forEach(function (hotspot) {\n          var active = !!targetKey && getHotspotKey(hotspot) === targetKey;\n\n          hotspot.classList.toggle(\"is-active\", active);\n          hotspot.setAttribute(\"aria-pressed\", active ? \"true\" : \"false\");\n        });\n      }\n\n      function toggleActive(item) {\n        setActive(item && item.classList.contains(\"is-active\") ? null : item);\n      }\n\n      function scrollHotspotFeatureIntoView(item) {\n        if (!item || !item.classList.contains(\"is-active\") || !window.matchMedia(\"(max-width: 640px)\").matches) {\n          return;\n        }\n\n        function adjustScroll(behavior) {\n          var panel = item.querySelector(\".sonu-system-feature__panel\");\n          var targetRect = (panel || item).getBoundingClientRect();\n          var itemRect = item.getBoundingClientRect();\n          var header = document.querySelector(\".sonu-topbar, .sonu-header, .sonu-nav\");\n          var headerRect = header ? header.getBoundingClientRect() : null;\n          var topLimit = headerRect ? Math.max(12, Math.min(window.innerHeight * 0.3, headerRect.bottom + 12)) : 12;\n          var bottomLimit = window.innerHeight - 20;\n          var delta = 0;\n\n          if (targetRect.bottom > bottomLimit) {\n            delta = targetRect.bottom - bottomLimit;\n          } else if (itemRect.top < topLimit) {\n            delta = itemRect.top - topLimit;\n          }\n\n          if (Math.abs(delta) > 2) {\n            window.scrollBy({\n              top: delta,\n              behavior: behavior || \"smooth\"\n            });\n          }\n        }\n\n        window.setTimeout(function () {\n          adjustScroll(\"smooth\");\n        }, 140);\n      }\n\n      function setPreview(key, active) {\n        items.forEach(function (item) {\n          item.classList.toggle(\"is-preview\", active && getItemKey(item) === key);\n        });\n\n        hotspots.forEach(function (hotspot) {\n          hotspot.classList.toggle(\"is-preview\", active && getHotspotKey(hotspot) === key);\n        });\n      }\n\n      items.forEach(function (item) {\n        var button = item.querySelector(\"button\");\n        var key = getItemKey(item);\n\n        if (!button) {\n          return;\n        }\n\n        button.setAttribute(\"aria-expanded\", item.classList.contains(\"is-active\") ? \"true\" : \"false\");\n\n        button.addEventListener(\"click\", function () {\n          toggleActive(item);\n        });\n\n        button.addEventListener(\"mouseenter\", function () {\n          setPreview(key, true);\n        });\n\n        button.addEventListener(\"mouseleave\", function () {\n          setPreview(key, false);\n        });\n\n        button.addEventListener(\"focus\", function () {\n          setPreview(key, true);\n        });\n\n        button.addEventListener(\"blur\", function () {\n          setPreview(key, false);\n        });\n      });\n\n      syncPanelHeights();\n      window.addEventListener(\"resize\", queuePanelHeightSync, { passive: true });\n\n      hotspots.forEach(function (hotspot) {\n        var key = getHotspotKey(hotspot);\n\n        hotspot.setAttribute(\"aria-pressed\", hotspot.classList.contains(\"is-active\") ? \"true\" : \"false\");\n\n        hotspot.addEventListener(\"click\", function (event) {\n          var item = findItemByKey(key);\n\n          event.preventDefault();\n          event.stopPropagation();\n          toggleActive(item);\n          scrollHotspotFeatureIntoView(item);\n        });\n\n        hotspot.addEventListener(\"mouseenter\", function () {\n          setPreview(key, true);\n        });\n\n        hotspot.addEventListener(\"mouseleave\", function () {\n          setPreview(key, false);\n        });\n\n        hotspot.addEventListener(\"focus\", function () {\n          setPreview(key, true);\n        });\n\n        hotspot.addEventListener(\"blur\", function () {\n          setPreview(key, false);\n        });\n      });\n    });\n  }\n\n  function shuffleSocialTiles(root) {\n    root.querySelectorAll(\".sonu-social__strip\").forEach(function (strip) {\n      var tiles = Array.prototype.slice.call(strip.children);\n      var index = tiles.length;\n      var fragment;\n      var randomIndex;\n      var temp;\n\n      if (strip.dataset.sonuSocialShuffled === \"true\" || tiles.length < 2) {\n        return;\n      }\n\n      strip.dataset.sonuSocialShuffled = \"true\";\n\n      while (index > 1) {\n        randomIndex = Math.floor(Math.random() * index);\n        index -= 1;\n        temp = tiles[index];\n        tiles[index] = tiles[randomIndex];\n        tiles[randomIndex] = temp;\n      }\n\n      fragment = document.createDocumentFragment();\n      tiles.forEach(function (tile) {\n        fragment.appendChild(tile);\n      });\n      strip.appendChild(fragment);\n      strip.scrollLeft = 0;\n    });\n  }\n\n  function initCarousels(root) {\n    root.querySelectorAll(\".sonu-section\").forEach(function (section) {\n      var carousel = section.querySelector(\"[data-sonu-carousel]\");\n      var previous = section.querySelector(\"[data-sonu-scroll-prev]\");\n      var next = section.querySelector(\"[data-sonu-scroll-next]\");\n\n      if (!carousel || !previous || !next) {\n        return;\n      }\n\n      if (section.classList.contains(\"sonu-pros\") && !carousel.dataset.sonuProsRandomized) {\n        var firstCards = Array.prototype.slice.call(carousel.children).slice(0, 6);\n        var afterFirstCards = firstCards.length ? firstCards[firstCards.length - 1].nextElementSibling : null;\n\n        for (var index = firstCards.length - 1; index > 0; index -= 1) {\n          var swapIndex = Math.floor(Math.random() * (index + 1));\n          var current = firstCards[index];\n          firstCards[index] = firstCards[swapIndex];\n          firstCards[swapIndex] = current;\n        }\n\n        firstCards.forEach(function (card) {\n          carousel.insertBefore(card, afterFirstCards);\n        });\n\n        carousel.scrollLeft = 0;\n        window.requestAnimationFrame(function () {\n          carousel.scrollLeft = 0;\n        });\n        carousel.dataset.sonuProsRandomized = \"true\";\n      }\n\n      function move(direction) {\n        var children = Array.prototype.filter.call(carousel.children, function (child) {\n          return child.offsetWidth > 0 && child.offsetParent !== null;\n        });\n\n        if (!children.length) {\n          return;\n        }\n\n        var carouselRect = carousel.getBoundingClientRect();\n        var carouselStyle = window.getComputedStyle(carousel);\n        var inset = parseFloat(carouselStyle.scrollPaddingLeft || carouselStyle.paddingLeft || \"0\");\n\n        if (!Number.isFinite(inset)) {\n          inset = 0;\n        }\n\n        function targetLeft(child) {\n          var childRect = child.getBoundingClientRect();\n          return Math.max(0, childRect.left - carouselRect.left + carousel.scrollLeft - inset);\n        }\n\n        var currentLeft = carousel.scrollLeft;\n        var nearestIndex = 0;\n        var nearestDistance = Infinity;\n\n        children.forEach(function (child, index) {\n          var distance = Math.abs(targetLeft(child) - currentLeft);\n\n          if (distance < nearestDistance) {\n            nearestDistance = distance;\n            nearestIndex = index;\n          }\n        });\n\n        var targetIndex = direction > 0\n          ? Math.min(nearestIndex + 1, children.length - 1)\n          : Math.max(nearestIndex - 1, 0);\n\n        carousel.scrollTo({\n          left: targetLeft(children[targetIndex]),\n          behavior: window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\"\n        });\n      }\n\n      previous.addEventListener(\"click\", function () {\n        move(-1);\n      });\n\n      next.addEventListener(\"click\", function () {\n        move(1);\n      });\n    });\n  }\n\n  function initFooterAccordions(root) {\n    var mobileQuery = window.matchMedia(\"(max-width: 1023.98px)\");\n    var columns = Array.prototype.slice.call(root.querySelectorAll(\".sonu-footer-column\"));\n\n    if (!columns.length) {\n      return;\n    }\n\n    columns.forEach(function (column, index) {\n      var heading = column.querySelector(\"h3\");\n\n      if (!heading) {\n        return;\n      }\n\n      heading.setAttribute(\"role\", \"button\");\n      heading.setAttribute(\"tabindex\", \"0\");\n      heading.setAttribute(\"aria-expanded\", \"false\");\n\n      function toggleColumn() {\n        if (!mobileQuery.matches) {\n          return;\n        }\n\n        var open = !column.classList.contains(\"is-open\");\n        column.classList.toggle(\"is-open\", open);\n        heading.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\n      }\n\n      heading.addEventListener(\"click\", toggleColumn);\n      heading.addEventListener(\"keydown\", function (event) {\n        if (event.key !== \"Enter\" && event.key !== \" \") {\n          return;\n        }\n\n        event.preventDefault();\n        toggleColumn();\n      });\n    });\n\n    function syncAccordionState() {\n      if (mobileQuery.matches) {\n        columns.forEach(function (column) {\n          var heading = column.querySelector(\"h3\");\n          var open = column.classList.contains(\"is-open\");\n\n          if (heading) {\n            heading.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\n          }\n        });\n        return;\n      }\n\n      columns.forEach(function (column) {\n        var heading = column.querySelector(\"h3\");\n        column.classList.remove(\"is-open\");\n\n        if (heading) {\n          heading.setAttribute(\"aria-expanded\", \"false\");\n        }\n      });\n    }\n\n    syncAccordionState();\n    window.addEventListener(\"resize\", syncAccordionState);\n  }\n\n  function initDragScroll(root) {\n    var seen = [];\n    var selectors = [\n      \"[data-sonu-carousel]\",\n      \".sonu-promise-row\",\n      \".sonu-social__strip\",\n      \".sonu-benefits--intro .sonu-benefit-grid\",\n      \".sonu-challenges .sonu-card-grid\"\n    ].join(\", \");\n\n    root.querySelectorAll(selectors).forEach(function (scroller) {\n      if (seen.indexOf(scroller) !== -1) {\n        return;\n      }\n\n      seen.push(scroller);\n\n      scroller.querySelectorAll(\"img\").forEach(function (image) {\n        image.setAttribute(\"draggable\", \"false\");\n      });\n\n      var isDown = false;\n      var startX = 0;\n      var scrollLeft = 0;\n      var moved = false;\n      var suppressClick = false;\n      var activePointerId = null;\n      var settleTimer = null;\n      var pendingVideoClick = null;\n      var touchStartLeft = null;\n      var touchLastLeft = null;\n      var touchStartX = null;\n      var touchLastX = null;\n      var touchSnapTimer = null;\n      var touchReleased = false;\n      var touchSnapDirection = null;\n      var snapAnimationFrame = null;\n      var mobileSnapQuery = window.matchMedia(\"(max-width: 1023.98px)\");\n      var snapSettleDelay = 35;\n      var snapAnimationDuration = 170;\n      var snapSettleDuration = 260;\n\n      function snapChildren() {\n        return Array.prototype.filter.call(scroller.children, function (child) {\n          return child.offsetWidth > 0 && child.offsetParent !== null;\n        });\n      }\n\n      function snapTargetLeft(child) {\n        var scrollerRect = scroller.getBoundingClientRect();\n        var childRect = child.getBoundingClientRect();\n        var style = window.getComputedStyle(scroller);\n        var inset = parseFloat(style.scrollPaddingLeft || style.paddingLeft || \"0\");\n\n        if (!Number.isFinite(inset)) {\n          inset = parseFloat(style.paddingLeft || \"0\");\n        }\n\n        if (!Number.isFinite(inset)) {\n          inset = 0;\n        }\n\n        return Math.max(0, childRect.left - scrollerRect.left + scroller.scrollLeft - inset);\n      }\n\n      function nearestSnapIndex(left) {\n        var children = snapChildren();\n        var nearest = 0;\n        var nearestDistance = Infinity;\n\n        children.forEach(function (child, index) {\n          var distance = Math.abs(snapTargetLeft(child) - left);\n\n          if (distance < nearestDistance) {\n            nearest = index;\n            nearestDistance = distance;\n          }\n        });\n\n        return nearest;\n      }\n\n      function markSettling(duration) {\n        scroller.classList.add(\"is-settling\");\n        if (settleTimer) {\n          window.clearTimeout(settleTimer);\n        }\n        settleTimer = window.setTimeout(function () {\n          scroller.classList.remove(\"is-settling\");\n          scroller.classList.remove(\"is-touching\");\n        }, duration || snapSettleDuration);\n      }\n\n      function cancelSnapAnimation() {\n        if (snapAnimationFrame) {\n          window.cancelAnimationFrame(snapAnimationFrame);\n          snapAnimationFrame = null;\n        }\n      }\n\n      function snapEase(progress) {\n        var linearPortion = 0.58;\n        var linearDistance = 0.78;\n\n        if (progress <= linearPortion) {\n          return (progress / linearPortion) * linearDistance;\n        }\n\n        var easedProgress = (progress - linearPortion) / (1 - linearPortion);\n        return linearDistance + (1 - linearDistance) * (1 - Math.pow(1 - easedProgress, 3));\n      }\n\n      function animateSnapTo(targetLeft) {\n        cancelSnapAnimation();\n\n        if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n          scroller.scrollLeft = targetLeft;\n          return;\n        }\n\n        var startLeft = scroller.scrollLeft;\n        var distance = targetLeft - startLeft;\n        var startTime = performance.now();\n\n        if (Math.abs(distance) < 1) {\n          scroller.scrollLeft = targetLeft;\n          return;\n        }\n\n        function step(now) {\n          var progress = Math.min(1, (now - startTime) / snapAnimationDuration);\n          scroller.scrollLeft = startLeft + distance * snapEase(progress);\n\n          if (progress < 1) {\n            snapAnimationFrame = window.requestAnimationFrame(step);\n          } else {\n            scroller.scrollLeft = targetLeft;\n            snapAnimationFrame = null;\n          }\n        }\n\n        snapAnimationFrame = window.requestAnimationFrame(step);\n      }\n\n      function snapToIntendedItem(fromLeft, toLeft) {\n        if (!mobileSnapQuery.matches || scroller.scrollWidth <= scroller.clientWidth + 2) {\n          return false;\n        }\n\n        var delta = toLeft - fromLeft;\n\n        if (Math.abs(delta) < 3) {\n          return false;\n        }\n\n        var children = snapChildren();\n\n        if (!children.length) {\n          return false;\n        }\n\n        var startIndex = nearestSnapIndex(fromLeft);\n        var currentIndex = nearestSnapIndex(toLeft);\n        var targetIndex = delta > 0\n          ? Math.max(currentIndex, Math.min(startIndex + 1, children.length - 1))\n          : Math.min(currentIndex, Math.max(startIndex - 1, 0));\n        var target = children[targetIndex];\n\n        if (!target) {\n          return false;\n        }\n\n        markSettling();\n        animateSnapTo(snapTargetLeft(target));\n        return true;\n      }\n\n      function snapInDirection(fromLeft, directionDelta) {\n        if (!mobileSnapQuery.matches || scroller.scrollWidth <= scroller.clientWidth + 2 || Math.abs(directionDelta) < 3) {\n          return false;\n        }\n\n        var children = snapChildren();\n\n        if (!children.length) {\n          return false;\n        }\n\n        var startIndex = nearestSnapIndex(fromLeft);\n        var targetIndex = directionDelta > 0\n          ? Math.min(startIndex + 1, children.length - 1)\n          : Math.max(startIndex - 1, 0);\n        var target = children[targetIndex];\n\n        if (!target) {\n          return false;\n        }\n\n        markSettling();\n        animateSnapTo(snapTargetLeft(target));\n        return true;\n      }\n\n      function queueTouchSnap(fromLeft, intendedLeft) {\n        if (touchSnapTimer) {\n          window.clearTimeout(touchSnapTimer);\n        }\n\n        touchSnapTimer = window.setTimeout(function () {\n          if (!snapToIntendedItem(fromLeft, intendedLeft !== null ? intendedLeft : scroller.scrollLeft)) {\n            scroller.classList.remove(\"is-touching\");\n          }\n          touchStartLeft = null;\n          touchLastLeft = null;\n          touchStartX = null;\n          touchLastX = null;\n          touchReleased = false;\n          touchSnapDirection = null;\n        }, snapSettleDelay);\n      }\n\n      function queueDirectionalTouchSnap(fromLeft, directionDelta) {\n        if (touchSnapTimer) {\n          window.clearTimeout(touchSnapTimer);\n        }\n\n        touchSnapTimer = window.setTimeout(function () {\n          if (!snapInDirection(fromLeft, directionDelta)) {\n            scroller.classList.remove(\"is-touching\");\n          }\n          touchStartLeft = null;\n          touchLastLeft = null;\n          touchStartX = null;\n          touchLastX = null;\n          touchReleased = false;\n          touchSnapDirection = null;\n        }, snapSettleDelay);\n      }\n\n      function stopDrag(event) {\n        if (!isDown) {\n          return;\n        }\n\n        var releasedScrollLeft = scroller.scrollLeft;\n        var videoClick = !moved ? pendingVideoClick : null;\n        pendingVideoClick = null;\n        isDown = false;\n        if (activePointerId !== null && scroller.releasePointerCapture && scroller.hasPointerCapture?.(activePointerId)) {\n          scroller.releasePointerCapture(activePointerId);\n        }\n        activePointerId = null;\n        scroller.classList.remove(\"is-dragging\");\n\n        if (moved) {\n          markSettling(360);\n          suppressClick = true;\n          window.setTimeout(function () {\n            suppressClick = false;\n          }, 140);\n          snapToIntendedItem(scrollLeft, releasedScrollLeft);\n        }\n\n        if (videoClick) {\n          window.setTimeout(function () {\n            videoClick.click();\n          }, 0);\n        }\n      }\n\n      scroller.addEventListener(\"pointerdown\", function (event) {\n        if ((event.pointerType && event.pointerType !== \"mouse\") || event.button !== 0 || scroller.scrollWidth <= scroller.clientWidth + 2) {\n          return;\n        }\n\n        isDown = true;\n        moved = false;\n        pendingVideoClick = event.target && event.target.closest ? event.target.closest(\"[data-sonu-video]\") : null;\n        activePointerId = event.pointerId;\n        startX = event.clientX;\n        scrollLeft = scroller.scrollLeft;\n        if (scroller.setPointerCapture) {\n          scroller.setPointerCapture(event.pointerId);\n        }\n        if (settleTimer) {\n          window.clearTimeout(settleTimer);\n          settleTimer = null;\n        }\n        cancelSnapAnimation();\n        scroller.classList.remove(\"is-settling\");\n        scroller.classList.add(\"is-dragging\");\n      });\n\n      scroller.addEventListener(\"pointermove\", function (event) {\n        if (!isDown || (activePointerId !== null && event.pointerId !== activePointerId)) {\n          return;\n        }\n\n        var distance = event.clientX - startX;\n\n        if (Math.abs(distance) > 5) {\n          moved = true;\n          event.preventDefault();\n        }\n\n        scroller.scrollLeft = scrollLeft - distance;\n      });\n\n      scroller.addEventListener(\"pointerup\", stopDrag);\n      scroller.addEventListener(\"pointercancel\", stopDrag);\n      scroller.addEventListener(\"pointerleave\", stopDrag);\n\n      scroller.addEventListener(\"touchstart\", function (event) {\n        if (scroller.scrollWidth <= scroller.clientWidth + 2) {\n          return;\n        }\n\n        var touch = event.touches && event.touches[0];\n        scroller.classList.add(\"is-touching\");\n        touchStartLeft = scroller.scrollLeft;\n        touchLastLeft = touchStartLeft;\n        touchStartX = touch ? touch.clientX : null;\n        touchLastX = touchStartX;\n        touchReleased = false;\n        touchSnapDirection = null;\n        cancelSnapAnimation();\n        if (settleTimer) {\n          window.clearTimeout(settleTimer);\n          settleTimer = null;\n        }\n        scroller.classList.remove(\"is-settling\");\n        if (touchSnapTimer) {\n          window.clearTimeout(touchSnapTimer);\n          touchSnapTimer = null;\n        }\n      }, { passive: true });\n\n      scroller.addEventListener(\"touchcancel\", function () {\n        scroller.classList.remove(\"is-touching\");\n        touchStartLeft = null;\n        touchLastLeft = null;\n        touchStartX = null;\n        touchLastX = null;\n        touchReleased = false;\n        touchSnapDirection = null;\n      }, { passive: true });\n\n      scroller.addEventListener(\"touchmove\", function (event) {\n        if (touchStartLeft === null) {\n          return;\n        }\n\n        var touch = event.touches && event.touches[0];\n\n        if (touch) {\n          touchLastX = touch.clientX;\n        }\n      }, { passive: true });\n\n      scroller.addEventListener(\"touchend\", function (event) {\n        if (touchStartLeft === null) {\n          return;\n        }\n\n        var changedTouch = event.changedTouches && event.changedTouches[0];\n\n        if (changedTouch) {\n          touchLastX = changedTouch.clientX;\n        }\n\n        var lastTouchLeft = touchLastLeft !== null ? touchLastLeft : touchStartLeft;\n\n        if (Math.abs(scroller.scrollLeft - touchStartLeft) > Math.abs(lastTouchLeft - touchStartLeft)) {\n          touchLastLeft = scroller.scrollLeft;\n        }\n\n        touchReleased = true;\n\n        if (touchStartX !== null && touchLastX !== null && Math.abs(touchStartX - touchLastX) >= 3) {\n          touchSnapDirection = touchStartX - touchLastX;\n          queueDirectionalTouchSnap(touchStartLeft, touchSnapDirection);\n        } else {\n          touchSnapDirection = null;\n          queueTouchSnap(touchStartLeft, touchLastLeft);\n        }\n      }, { passive: true });\n\n      scroller.addEventListener(\"scroll\", function () {\n        if (touchStartLeft === null || isDown) {\n          return;\n        }\n\n        var lastTouchLeft = touchLastLeft !== null ? touchLastLeft : touchStartLeft;\n\n        if (Math.abs(scroller.scrollLeft - touchStartLeft) > Math.abs(lastTouchLeft - touchStartLeft)) {\n          touchLastLeft = scroller.scrollLeft;\n        }\n\n        if (touchReleased && !touchSnapTimer) {\n          if (touchSnapDirection !== null) {\n            queueDirectionalTouchSnap(touchStartLeft, touchSnapDirection);\n          } else {\n            queueTouchSnap(touchStartLeft, touchLastLeft);\n          }\n        }\n      }, { passive: true });\n\n      scroller.addEventListener(\"mousedown\", function (event) {\n        if (isDown || event.button !== 0 || scroller.scrollWidth <= scroller.clientWidth + 2) {\n          return;\n        }\n\n        isDown = true;\n        moved = false;\n        pendingVideoClick = event.target && event.target.closest ? event.target.closest(\"[data-sonu-video]\") : null;\n        activePointerId = null;\n        startX = event.clientX;\n        scrollLeft = scroller.scrollLeft;\n        if (settleTimer) {\n          window.clearTimeout(settleTimer);\n          settleTimer = null;\n        }\n        cancelSnapAnimation();\n        scroller.classList.remove(\"is-settling\");\n        scroller.classList.add(\"is-dragging\");\n      });\n\n      window.addEventListener(\"mousemove\", function (event) {\n        if (!isDown || activePointerId !== null) {\n          return;\n        }\n\n        var distance = event.clientX - startX;\n\n        if (Math.abs(distance) > 5) {\n          moved = true;\n          event.preventDefault();\n        }\n\n        scroller.scrollLeft = scrollLeft - distance;\n      });\n\n      window.addEventListener(\"mouseup\", function (event) {\n        if (activePointerId === null) {\n          stopDrag(event);\n        }\n      });\n\n      scroller.addEventListener(\n        \"click\",\n        function (event) {\n          if (suppressClick) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n        },\n        true\n      );\n    });\n  }\n\n  function initVideoModal(root) {\n    var modal = root.querySelector(\"[data-sonu-video-modal]\");\n\n    if (!modal) {\n      return;\n    }\n\n    var iframe = modal.querySelector(\"iframe\");\n    var closeButtons = modal.querySelectorAll(\"[data-sonu-video-close]\");\n    var lastTrigger = null;\n\n    function videoUrlWithAutoplay(url) {\n      var joiner = url.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n      return url + joiner + \"autoplay=1&rel=0\";\n    }\n\n    function openModal(trigger) {\n      var url = trigger.getAttribute(\"data-sonu-video\");\n\n      if (!url || !iframe) {\n        return;\n      }\n\n      lastTrigger = trigger;\n      iframe.setAttribute(\"src\", videoUrlWithAutoplay(url));\n      modal.hidden = false;\n      document.documentElement.classList.add(\"sonu-video-is-open\");\n\n      var closeButton = modal.querySelector(\".sonu-video-modal__close\");\n      if (closeButton) {\n        closeButton.focus();\n      }\n    }\n\n    function closeModal() {\n      modal.hidden = true;\n      if (iframe) {\n        iframe.removeAttribute(\"src\");\n      }\n      document.documentElement.classList.remove(\"sonu-video-is-open\");\n\n      if (lastTrigger) {\n        lastTrigger.focus();\n      }\n    }\n\n    function bindVideoTrigger(trigger) {\n      trigger.addEventListener(\"click\", function (event) {\n        event.preventDefault();\n        openModal(trigger);\n      });\n    }\n\n    root.querySelectorAll(\"[data-sonu-video]\").forEach(function (trigger) {\n      bindVideoTrigger(trigger);\n\n      var card = trigger.closest(\".sonu-pro-card\");\n      var cardImage = card ? card.querySelector(\"img\") : null;\n\n      if (!cardImage || cardImage.dataset.sonuVideoImageBound === \"true\") {\n        return;\n      }\n\n      cardImage.dataset.sonuVideoImageBound = \"true\";\n      cardImage.setAttribute(\"role\", \"button\");\n      cardImage.setAttribute(\"tabindex\", \"0\");\n      cardImage.setAttribute(\"aria-label\", trigger.textContent ? trigger.textContent.trim() : \"Watch review video\");\n\n      cardImage.addEventListener(\"click\", function (event) {\n        event.preventDefault();\n        openModal(trigger);\n      });\n\n      cardImage.addEventListener(\"keydown\", function (event) {\n        if (event.key !== \"Enter\" && event.key !== \" \") {\n          return;\n        }\n\n        event.preventDefault();\n        openModal(trigger);\n      });\n    });\n\n    closeButtons.forEach(function (button) {\n      button.addEventListener(\"click\", closeModal);\n    });\n\n    document.addEventListener(\"keydown\", function (event) {\n      if (event.key === \"Escape\" && !modal.hidden) {\n        closeModal();\n      }\n    });\n  }\n\n  function initTermlyPreferencesSizing() {\n    if (document.documentElement.dataset.sonuTermlySizing === \"true\") {\n      return;\n    }\n\n    document.documentElement.dataset.sonuTermlySizing = \"true\";\n\n    function syncOffset() {\n      var nav = document.querySelector(\"#shopify-section-header .sonu-global-header-shell .sonu-home-nav\") || document.querySelector(\".sonu-home-nav\");\n      var rect = nav ? nav.getBoundingClientRect() : null;\n      var offset = Math.max(0, Math.round(rect ? rect.bottom : 0)) + 8;\n      document.documentElement.style.setProperty(\"--sonu-termly-top-offset\", offset + \"px\");\n      return offset;\n    }\n\n    function clampPreferencesDialog() {\n      var offset = syncOffset();\n      var support = document.getElementById(\"termly-code-snippet-support\");\n\n      if (!support) {\n        return;\n      }\n\n      Array.prototype.slice.call(support.querySelectorAll(\"*\")).forEach(function (node) {\n        var text = node.innerText || \"\";\n        var rect = node.getBoundingClientRect();\n        var style = window.getComputedStyle(node);\n\n        if (rect.width < 260 || rect.height < 180 || !/Preferences|ESSENTIAL COOKIES|Cookie Preference/i.test(text)) {\n          return;\n        }\n\n        var availableHeight = Math.max(260, Math.round(window.innerHeight - Math.max(rect.top, offset) - 16));\n        node.style.setProperty(\"max-height\", availableHeight + \"px\", \"important\");\n        node.style.setProperty(\"overflow-y\", \"auto\", \"important\");\n\n        if (rect.top < offset && /fixed|absolute|sticky/.test(style.position)) {\n          node.style.setProperty(\"top\", offset + \"px\", \"important\");\n          node.style.setProperty(\"bottom\", \"16px\", \"important\");\n          node.style.setProperty(\"height\", \"auto\", \"important\");\n        }\n      });\n    }\n\n    document.addEventListener(\"click\", function (event) {\n      if (!event.target || !event.target.closest || !event.target.closest(\".termly-display-preferences\")) {\n        return;\n      }\n\n      document.documentElement.classList.add(\"sonu-termly-preferences-active\");\n      clampPreferencesDialog();\n      window.setTimeout(clampPreferencesDialog, 120);\n      window.setTimeout(clampPreferencesDialog, 500);\n      window.setTimeout(clampPreferencesDialog, 1200);\n    }, true);\n\n    window.addEventListener(\"resize\", clampPreferencesDialog);\n    window.addEventListener(\"scroll\", syncOffset, { passive: true });\n    if (window.MutationObserver && document.body) {\n      new MutationObserver(function () {\n        if (document.documentElement.classList.contains(\"sonu-termly-preferences-active\")) {\n          clampPreferencesDialog();\n        }\n      }).observe(document.body, { childList: true, subtree: true });\n    }\n    syncOffset();\n  }\n\n  function initMobileHeaderGapTrim() {\n    if (document.documentElement.dataset.sonuMobileHeaderGapTrim === \"true\") {\n      return;\n    }\n\n    document.documentElement.dataset.sonuMobileHeaderGapTrim = \"true\";\n\n    function firstVisibleMainChild(main) {\n      return Array.prototype.slice.call(main.children || []).find(function (node) {\n        var rect = node.getBoundingClientRect();\n        var style = window.getComputedStyle(node);\n        return rect.height > 0 && style.display !== \"none\" && style.visibility !== \"hidden\";\n      });\n    }\n\n    function syncGap() {\n      var header = document.getElementById(\"shopify-section-header\");\n      var nav = document.querySelector(\"#shopify-section-header .sonu-global-header-shell .sonu-home-nav\") || document.querySelector(\".sonu-home-nav\");\n      var main = document.getElementById(\"MainContent\");\n      var isNonHomePage = document.body && !document.body.classList.contains(\"template-index\");\n      var isMattressPage = document.body && document.body.classList.contains(\"template-product\") && /\\/products\\/sonu-sleep-system/i.test(window.location.pathname || \"\");\n      var shouldTrim = window.innerWidth <= 896 || (isMattressPage && window.innerWidth <= 1023);\n      var scrollDepth = Math.max(window.scrollY || 0, document.documentElement.scrollTop || 0);\n\n      if (isNonHomePage) {\n        if (header) {\n          header.style.removeProperty(\"margin-bottom\");\n        }\n        return;\n      }\n\n      if (!header || !nav || !main || !shouldTrim || document.body.classList.contains(\"template-cart\")) {\n        if (header) {\n          header.style.removeProperty(\"margin-bottom\");\n        }\n        return;\n      }\n\n      if (scrollDepth > 2) {\n        return;\n      }\n\n      header.style.removeProperty(\"margin-bottom\");\n\n      window.requestAnimationFrame(function () {\n        var firstChild = firstVisibleMainChild(main);\n        if (!firstChild) {\n          return;\n        }\n\n        var navRect = nav.getBoundingClientRect();\n        var firstRect = firstChild.getBoundingClientRect();\n        var gap = Math.round(firstRect.top - navRect.bottom);\n\n        header.style.setProperty(\"margin-bottom\", gap > 0 ? \"-\" + gap + \"px\" : \"0px\", \"important\");\n      });\n    }\n\n    var gapSyncFrame = null;\n    function scheduleGapSync() {\n      if (gapSyncFrame !== null) {\n        return;\n      }\n\n      gapSyncFrame = window.requestAnimationFrame(function () {\n        gapSyncFrame = null;\n        syncGap();\n        if (Math.max(window.scrollY || 0, document.documentElement.scrollTop || 0) <= 2) {\n          window.setTimeout(syncGap, 140);\n          window.setTimeout(syncGap, 360);\n        }\n      });\n    }\n\n    window.addEventListener(\"resize\", scheduleGapSync);\n    window.addEventListener(\"pageshow\", scheduleGapSync);\n    window.addEventListener(\"scroll\", scheduleGapSync, { passive: true });\n    window.addEventListener(\"touchend\", scheduleGapSync, { passive: true });\n    window.setTimeout(syncGap, 80);\n    window.setTimeout(syncGap, 450);\n    window.setTimeout(syncGap, 1100);\n    window.setTimeout(syncGap, 1800);\n    window.setTimeout(syncGap, 2600);\n  }\n\n  function initLegacyPurpleCtas() {\n    if (document.documentElement.dataset.sonuLegacyPurpleCtas === \"true\") {\n      return;\n    }\n\n    var path = (window.location.pathname || \"\").toLowerCase().replace(/\\/+$/, \"\") || \"/\";\n    var bodyHandle = document.body ? String(document.body.id || \"\").toLowerCase() : \"\";\n    var targetPath = (\n      (document.body && document.body.classList.contains(\"sonu-legacy-cta-page\")) ||\n      /^\\/pages\\/(all-products|story|our-story|reviews?|pros|pro-athletes-and-celebrities|pro-athletes-celebrities|locations|in-stores|press|contact|trial|chiropractor-recommended|chiro|natca|natca-approved|size-guide|sizes|get-started|best-practices|disposal-guide|faq|faqs|financing|affiliates|affiliate-program|wholesale)$/.test(path) ||\n      /^\\/blogs(\\/|$)/.test(path) ||\n      /^\\/account(\\/|$)/.test(path) ||\n      /^\\/challenge$/.test(path) ||\n      /^(all-products|story|our-story|reviews?|pros|pro-athletes-and-celebrities|pro-athletes-celebrities|locations|press|blog|contact|trial|chiropractor-recommended|chiro|natca|natca-approved|size-guide|sizes|get-started|best-practices|disposal-guide|faq|faqs|financing|affiliates|affiliate-program|wholesale|my-account)$/.test(bodyHandle)\n    );\n\n    if (!targetPath) {\n      return;\n    }\n\n    document.documentElement.dataset.sonuLegacyPurpleCtas = \"true\";\n\n    function parseRgb(value) {\n      var match = String(value || \"\").match(/rgba?\\(([^)]+)\\)/i);\n      if (!match) {\n        return null;\n      }\n\n      var parts = match[1].split(\",\").map(function (part) {\n        return parseFloat(part.trim());\n      });\n\n      if (parts.length < 3 || (parts.length > 3 && parts[3] <= 0.08)) {\n        return null;\n      }\n\n      return { r: parts[0], g: parts[1], b: parts[2] };\n    }\n\n    function isPurpleButton(element) {\n      var style = window.getComputedStyle(element);\n      var color = parseRgb(style.backgroundColor);\n      var inlineStyle = (element.getAttribute(\"style\") || \"\").toLowerCase();\n      var backgroundImage = String(style.backgroundImage || \"\").toLowerCase();\n\n      if (/#[0-9a-f]{6}/i.test(inlineStyle) && /#(?:4a4af4|5369f8|7257ff|7e4aff|5b5bff)/i.test(inlineStyle)) {\n        return true;\n      }\n\n      if (/rgb\\(126,\\s*74,\\s*255\\)|rgb\\(114,\\s*87,\\s*255\\)|rgb\\(74,\\s*74,\\s*244\\)|rgb\\(83,\\s*105,\\s*248\\)/.test(backgroundImage)) {\n        return true;\n      }\n\n      return !!(color && color.b >= 180 && color.r >= 55 && color.r <= 170 && color.g <= 135 && color.b - color.g >= 65);\n    }\n\n    function titleCaseText(text) {\n      var minorWords = {\n        a: true,\n        an: true,\n        and: true,\n        as: true,\n        at: true,\n        but: true,\n        by: true,\n        for: true,\n        from: true,\n        in: true,\n        into: true,\n        nor: true,\n        of: true,\n        on: true,\n        onto: true,\n        or: true,\n        over: true,\n        per: true,\n        than: true,\n        the: true,\n        to: true,\n        up: true,\n        upon: true,\n        via: true,\n        with: true,\n        within: true,\n        without: true\n      };\n      var acronyms = {\n        apr: \"APR\",\n        faq: \"FAQ\",\n        faqs: \"FAQs\",\n        natca: \"NATCA\",\n        usa: \"USA\",\n        us: \"US\"\n      };\n      var firstWord = true;\n\n      return String(text || \"\")\n        .toLowerCase()\n        .replace(/\\b[a-z][a-z0-9']*\\b/g, function (word) {\n          if (acronyms[word]) {\n            firstWord = false;\n            return acronyms[word];\n          }\n\n          if (!firstWord && minorWords[word]) {\n            return word;\n          }\n\n          firstWord = false;\n          return word.charAt(0).toUpperCase() + word.slice(1);\n        });\n    }\n\n    function updateTextNodes(node) {\n      Array.prototype.slice.call(node.childNodes || []).forEach(function (child) {\n        if (child.nodeType === Node.TEXT_NODE) {\n          var text = child.nodeValue || \"\";\n          if (text.trim() && text === text.toUpperCase()) {\n            child.nodeValue = text.replace(/[A-Z][A-Z0-9&'\u2019.,!?\\-\\s]+/g, titleCaseText);\n          }\n          return;\n        }\n\n        if (child.nodeType === Node.ELEMENT_NODE && !/^(svg|img|picture|video)$/i.test(child.tagName)) {\n          updateTextNodes(child);\n        }\n      });\n    }\n\n    function forceTitleCaseTextNodes(node) {\n      Array.prototype.slice.call(node.childNodes || []).forEach(function (child) {\n        if (child.nodeType === Node.TEXT_NODE) {\n          var text = child.nodeValue || \"\";\n          if (text.trim()) {\n            child.nodeValue = titleCaseText(text);\n          }\n          return;\n        }\n\n        if (child.nodeType === Node.ELEMENT_NODE && !/^(svg|img|picture|video)$/i.test(child.tagName)) {\n          forceTitleCaseTextNodes(child);\n        }\n      });\n    }\n\n    function isLegacyCtaExcluded(element) {\n      return !!(element && element.closest(\"#storesByState .strBox .ss_link, #storesByName .strBox .ss_link\"));\n    }\n\n    function buttonCandidates(root) {\n      return Array.prototype.slice.call((root || document).querySelectorAll(\"a, button, input[type='submit'], input[type='button'], .ss_btn, .ss_btn_learn, .ss_btn_lrn, .affirm_learn_more_btn, .btn, [role='button']\")).filter(function (element) {\n        return !isLegacyCtaExcluded(element);\n      });\n    }\n\n    function polishButtonText(element) {\n      element.style.setProperty(\"text-transform\", \"none\", \"important\");\n\n      // Keep the financing disclosure's approved link text verbatim.\n      if (element.closest(\".financing-t .kCgCGf\")) {\n        return;\n      }\n\n      // Search splits words into text nodes; preserve their existing case.\n      if (element.closest(\".faq\") && element.querySelector(\".highlight\")) {\n        return;\n      }\n\n      if (element.tagName === \"INPUT\") {\n        element.value = titleCaseText(element.value);\n      } else {\n        forceTitleCaseTextNodes(element);\n      }\n    }\n\n    function markCompanionCtas(primary) {\n      var containers = [\n        primary.closest(\".btn_container, .preq_btn_box, .PreQualify_cta__bGxLw, .c_container, .button-container, .button-row, .btns\"),\n        primary.parentElement,\n        primary.parentElement && primary.parentElement.parentElement\n      ].filter(Boolean);\n\n      containers.forEach(function (container) {\n        buttonCandidates(container).forEach(function (candidate) {\n          if (candidate === primary || candidate.closest(\"#termly-code-snippet-support, [class*='termly-styles']\")) {\n            return;\n          }\n\n          if (candidate.classList.contains(\"sonu-legacy-purple-cta\")) {\n            return;\n          }\n\n          candidate.classList.add(\"sonu-legacy-secondary-cta\");\n          polishButtonText(candidate);\n        });\n      });\n    }\n\n    function polishCtas() {\n      buttonCandidates(document).forEach(function (element) {\n        if (element.closest(\"#termly-code-snippet-support, [class*='termly-styles']\")) {\n          return;\n        }\n\n        var scopedLegacyPage = document.body && document.body.classList.contains(\"sonu-legacy-cta-page\");\n        var knownLegacyPrimary = scopedLegacyPage && element.matches(\".ss_btn, .btn.ss_btn, span.ss_btn, a.ss_btn, button.ss_btn, input.ss_btn\");\n        var knownLegacySecondary = scopedLegacyPage && element.matches(\".ss_btn_learn, .ss_btn_lrn, .affirm_learn_more_btn\");\n\n        if (element.classList.contains(\"sonu-legacy-secondary-cta\") && !isPurpleButton(element)) {\n          polishButtonText(element);\n          return;\n        }\n\n        if (element.classList.contains(\"sonu-legacy-purple-cta\")) {\n          polishButtonText(element);\n          markCompanionCtas(element);\n          return;\n        }\n\n        if (knownLegacySecondary) {\n          element.classList.add(\"sonu-legacy-secondary-cta\");\n          polishButtonText(element);\n          return;\n        }\n\n        if (!knownLegacyPrimary && !isPurpleButton(element)) {\n          return;\n        }\n\n        element.classList.add(\"sonu-legacy-purple-cta\");\n        polishButtonText(element);\n        markCompanionCtas(element);\n      });\n    }\n\n    var pending = false;\n    function queuePolish() {\n      if (pending) {\n        return;\n      }\n\n      pending = true;\n      window.requestAnimationFrame(function () {\n        pending = false;\n        polishCtas();\n      });\n    }\n\n    polishCtas();\n    window.setTimeout(polishCtas, 800);\n    window.setTimeout(polishCtas, 2200);\n\n    if (window.MutationObserver && document.body) {\n      new MutationObserver(queuePolish).observe(document.body, { childList: true, subtree: true });\n    }\n  }\n\n  function initReveals(root) {\n    var revealTargets = root.querySelectorAll(\n      \".sonu-help-strip, .sonu-section__head, .sonu-system__media, .sonu-system__benefits article, .sonu-tabs, .sonu-card-grid article, .sonu-proof__main, .sonu-proof__award-card, .sonu-proof__cards article, .sonu-pro-card, .sonu-review-wall blockquote, .sonu-benefit-grid article, .sonu-promise-row article, .sonu-story__image, .sonu-story__copy, .sonu-social__strip blockquote, .sonu-financing > *, .sonu-feature-video-grid article, .sonu-video-grid button, .sonu-education__grid a, .sonu-made-usa__inner, .sonu-product-grid article, .sonu-trial-hero__card, .sonu-question-grid a, .sonu-final-cta > *\"\n    );\n\n    revealTargets.forEach(function (element) {\n      element.classList.add(\"sonu-reveal\");\n    });\n\n    root.classList.add(\"sonu-js-ready\");\n\n    if (!(\"IntersectionObserver\" in window) || window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n      revealTargets.forEach(function (element) {\n        element.classList.add(\"sonu-is-visible\");\n      });\n      return;\n    }\n\n    var observer = new IntersectionObserver(\n      function (entries) {\n        entries.forEach(function (entry) {\n          if (entry.isIntersecting) {\n            entry.target.classList.add(\"sonu-is-visible\");\n            observer.unobserve(entry.target);\n          }\n        });\n      },\n      {\n        rootMargin: \"0px 0px -12% 0px\",\n        threshold: 0.08\n      }\n    );\n\n    revealTargets.forEach(function (element) {\n      observer.observe(element);\n    });\n  }\n\n  function initNewsletterForms(root) {\n    var klaviyoEndpoint = \"https://manage.kmail-lists.com/ajax/subscriptions/subscribe\";\n\n    function setPopupDisplay(element, value) {\n      if (!element) {\n        return;\n      }\n\n      element.style.setProperty(\"display\", value, \"important\");\n    }\n\n    function closeLegacyNewsletterPopup() {\n      setPopupDisplay(document.getElementById(\"blackOverlay_n\"), \"none\");\n      setPopupDisplay(document.getElementById(\"popup-newsletter\"), \"none\");\n      document.documentElement.classList.remove(\"sonu-newsletter-modal-open\");\n    }\n\n    function openLegacyNewsletterPopup() {\n      var overlay = document.getElementById(\"blackOverlay_n\");\n      var popup = document.getElementById(\"popup-newsletter\");\n\n      if (!overlay) {\n        overlay = document.createElement(\"div\");\n        overlay.id = \"blackOverlay_n\";\n        overlay.className = \"blackOverlay_n\";\n        overlay.addEventListener(\"click\", closeLegacyNewsletterPopup);\n        document.body.appendChild(overlay);\n      }\n\n      if (!popup) {\n        popup = document.createElement(\"div\");\n        popup.id = \"popup-newsletter\";\n        popup.className = \"popup_n\";\n        popup.innerHTML =\n          '<button type=\"button\" class=\"x_btn_n\" aria-label=\"Close newsletter confirmation\">&times;</button>' +\n          '<div style=\"padding-bottom:20px;\">' +\n          '<span class=\"material-icons-outlined\" style=\"font-size:36px; color:#7E4AFF;\">done_outline</span>' +\n          '<br><b>Thank you very much<br>for subscribing.</b><br><i>You will now receive<br>the latest SONU news!</i>' +\n          '</div>' +\n          '<button type=\"button\" class=\"ss_btn\" style=\"text-align:center; width:120px; line-height:1.3em; cursor:pointer;\">OK</button>';\n        document.body.appendChild(popup);\n        popup.querySelectorAll(\".x_btn_n, .ss_btn\").forEach(function (closer) {\n          closer.addEventListener(\"click\", closeLegacyNewsletterPopup);\n        });\n      }\n\n      setPopupDisplay(overlay, \"block\");\n      setPopupDisplay(popup, \"block\");\n      document.documentElement.classList.add(\"sonu-newsletter-modal-open\");\n\n      var closeButton = popup.querySelector(\".x_btn_n\");\n      if (closeButton) {\n        closeButton.focus({ preventScroll: true });\n      }\n    }\n\n    function parseKlaviyoResponse(text) {\n      if (!text) {\n        return { success: true };\n      }\n\n      try {\n        return JSON.parse(text);\n      } catch (_) {\n        return { success: true };\n      }\n    }\n\n    function getKlaviyoError(result) {\n      if (result && Array.isArray(result.errors) && result.errors.length) {\n        return result.errors[0];\n      }\n\n      return \"Something went wrong. Please try again.\";\n    }\n\n    function submitKlaviyoNewsletter(payload) {\n      if (window.fetch) {\n        return window.fetch(klaviyoEndpoint, {\n          method: \"POST\",\n          mode: \"cors\",\n          credentials: \"omit\",\n          headers: {\n            \"Content-Type\": \"application/x-www-form-urlencoded\"\n          },\n          body: payload.toString()\n        }).then(function (response) {\n          if (!response.ok) {\n            throw new Error(\"Newsletter request failed.\");\n          }\n\n          return response.text();\n        }).then(parseKlaviyoResponse);\n      }\n\n      return new Promise(function (resolve, reject) {\n        var request = new XMLHttpRequest();\n        request.open(\"POST\", klaviyoEndpoint, true);\n        request.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n        request.onload = function () {\n          if (request.status >= 200 && request.status < 300) {\n            resolve(parseKlaviyoResponse(request.responseText));\n          } else {\n            reject(new Error(\"Newsletter request failed.\"));\n          }\n        };\n        request.onerror = function () {\n          reject(new Error(\"Newsletter request failed.\"));\n        };\n        request.send(payload.toString());\n      });\n    }\n\n    window.closePopup_n = closeLegacyNewsletterPopup;\n\n    root.querySelectorAll(\".sonu-footer-newsletter form\").forEach(function (form) {\n      if (form.dataset.sonuNewsletterEnhanced === \"true\") {\n        return;\n      }\n\n      var input = form.querySelector('input[name=\"email\"], input[name=\"contact[email]\"], input[type=\"email\"]');\n      var button = form.querySelector('button[type=\"submit\"], button:not([type])');\n      var note = form.querySelector(\"[data-sonu-newsletter-note]\");\n\n      if (!input || !button) {\n        return;\n      }\n\n      form.dataset.sonuNewsletterEnhanced = \"true\";\n\n      if (!note) {\n        note = document.createElement(\"p\");\n        note.className = \"sonu-footer-form-note\";\n        note.setAttribute(\"data-sonu-newsletter-note\", \"\");\n        note.setAttribute(\"role\", \"status\");\n        note.setAttribute(\"aria-live\", \"polite\");\n        note.hidden = true;\n        button.insertAdjacentElement(\"afterend\", note);\n      }\n\n      function setNote(message, status) {\n        note.textContent = message || \"\";\n        note.hidden = !message;\n        note.classList.toggle(\"sonu-footer-form-note--error\", status === \"error\");\n        note.classList.toggle(\"sonu-footer-form-note--success\", status === \"success\");\n        note.classList.remove(\"sonu-footer-form-note--pending\");\n      }\n\n      function resetSubmitState() {\n        form.classList.remove(\"is-submitting\");\n        form.removeAttribute(\"aria-busy\");\n        button.removeAttribute(\"aria-disabled\");\n        button.disabled = false;\n        button.classList.remove(\"btn--loading\");\n      }\n\n      function buildNewsletterPayload() {\n        var payload = new URLSearchParams(new FormData(form));\n        var listId = form.dataset.sonuKlaviyoList || payload.get(\"g\") || \"TPGALR\";\n        payload.set(\"g\", listId);\n        payload.set(\"email\", input.value.trim());\n        payload.set(\"$source\", payload.get(\"$source\") || \"Footer Newsletter\");\n        payload.set(\"$fields\", payload.get(\"$fields\") || \"$source\");\n        return payload;\n      }\n\n      var params = new URLSearchParams(window.location.search || \"\");\n      var hashId = window.location.hash ? window.location.hash.slice(1) : \"\";\n      if (\n        form.querySelector(\"[data-sonu-newsletter-posted]\") ||\n        (params.get(\"customer_posted\") === \"true\" && (!hashId || hashId === form.id))\n      ) {\n        openLegacyNewsletterPopup();\n      }\n\n      input.addEventListener(\"input\", function () {\n        if (!form.classList.contains(\"is-submitting\")) {\n          setNote(\"\", \"\");\n        }\n      });\n\n      input.addEventListener(\n        \"invalid\",\n        function () {\n          resetSubmitState();\n          setNote(\"Please enter a valid email.\", \"error\");\n        },\n        true\n      );\n\n      form.addEventListener(\"submit\", function (event) {\n        event.preventDefault();\n\n        if (form.classList.contains(\"is-submitting\")) {\n          return;\n        }\n\n        if (!form.checkValidity()) {\n          resetSubmitState();\n          if (input.reportValidity) {\n            input.reportValidity();\n          }\n          return;\n        }\n\n        setNote(\"\", \"\");\n        form.classList.add(\"is-submitting\");\n        form.setAttribute(\"aria-busy\", \"true\");\n        button.setAttribute(\"aria-disabled\", \"true\");\n        button.classList.add(\"btn--loading\");\n\n        submitKlaviyoNewsletter(buildNewsletterPayload()).then(function (result) {\n          if (result && result.success === false) {\n            throw new Error(getKlaviyoError(result));\n          }\n\n          form.reset();\n          resetSubmitState();\n          openLegacyNewsletterPopup();\n        }).catch(function (error) {\n          resetSubmitState();\n          setNote(error && error.message ? error.message : \"Something went wrong. Please try again.\", \"error\");\n        });\n      });\n\n      document.addEventListener(\"keydown\", function (event) {\n        if (event.key === \"Escape\" && document.getElementById(\"popup-newsletter\")) {\n          closeLegacyNewsletterPopup();\n        }\n      });\n\n      window.addEventListener(\"pageshow\", resetSubmitState);\n    });\n  }\n})();\n"],
  "mappings": "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",
  "names": ["drawerDropdownDuration", "menu", "setAccessoryTabZoneCursor", "handleAccessoryTabPoint", "parentItem", "index"]
}
