{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/cobalt.js?build=20260906-p-dissolve-1"],
  "sourcesContent": ["(function () {\n  const canvas = document.querySelector('[data-dither]');\n  const gate = document.querySelector('[data-entry-gate]');\n  const enter = document.querySelector('[data-enter-store]');\n  const home = document.querySelector('[data-home]');\n  const collectionOverviewRequested = new URLSearchParams(window.location.search).get('collections') === '1';\n  const displayFontReady = document.fonts\n    ? Promise.all([\n      document.fonts.load('400 100px MarathonWide'),\n      document.fonts.ready\n    ]).catch(() => undefined)\n    : Promise.resolve();\n  const prefetchedPages = new Set();\n\n  // Keep the calibrated interface at a stable 1:1 browser scale. Pinch and\n  // wheel gestures remain available inside the 3D viewer, where they control\n  // the camera instead of magnifying the page.\n  const targetsRingViewer = target => Boolean(target?.closest?.('[data-ring-viewer]'));\n  ['gesturestart', 'gesturechange'].forEach(type => document.addEventListener(type, event => {\n    if (!targetsRingViewer(event.target)) event.preventDefault();\n  }, { passive: false }));\n  document.addEventListener('touchmove', event => {\n    if (event.touches.length > 1 && !targetsRingViewer(event.target)) event.preventDefault();\n  }, { passive: false });\n  document.addEventListener('wheel', event => {\n    if ((event.ctrlKey || event.metaKey) && !targetsRingViewer(event.target)) event.preventDefault();\n  }, { passive: false });\n  document.addEventListener('keydown', event => {\n    if ((event.ctrlKey || event.metaKey) && ['+', '=', '-', '0'].includes(event.key)) event.preventDefault();\n  });\n\n  displayFontReady.then(() => document.documentElement.classList.add('fonts-ready'));\n\n  // Warm the exact destination document after genuine navigation intent. This\n  // keeps the multi-page architecture while reducing the cold hand-off between\n  // the outgoing shared element and the incoming Shopify page.\n  const prefetchPage = href => {\n    const destination = new URL(href, window.location.origin);\n    if (destination.origin !== window.location.origin || prefetchedPages.has(destination.href)) return;\n    prefetchedPages.add(destination.href);\n    const hint = document.createElement('link');\n    hint.rel = 'prefetch';\n    hint.href = destination.href;\n    hint.fetchPriority = 'low';\n    document.head.appendChild(hint);\n  };\n\n  const navigationUrl = (href, source) => {\n    const destination = new URL(href, window.location.origin);\n    destination.searchParams.set('from', source);\n    return destination;\n  };\n\n  const prefetchOnIntent = (element, getHref) => {\n    const warm = () => prefetchPage(getHref());\n    element.addEventListener('pointerenter', warm, { once: true, passive: true });\n    element.addEventListener('focus', warm, { once: true, passive: true });\n    element.addEventListener('touchstart', warm, { once: true, passive: true });\n  };\n\n  const main = document.querySelector('#MainContent');\n  const cartStaggerParticipants = cart => {\n    const empty = cart?.querySelector('.cobalt-cart__empty');\n    return empty\n      ? [...empty.children]\n      : [cart?.querySelector('.cobalt-cart__heading'), ...cart?.querySelectorAll('.cobalt-cart__item') || [], cart?.querySelector('.cobalt-cart__summary')].filter(Boolean);\n  };\n  const startCartContentStagger = cart => {\n    const participants = cartStaggerParticipants(cart);\n    if (!participants.length) return;\n    participants.forEach((element, index) => element.style.setProperty('--cart-stagger-delay', `${index * 110}ms`));\n    cart.classList.add('is-cart-stagger-arriving');\n    const remaining = new Set(participants);\n    participants.forEach(element => element.addEventListener('animationend', () => {\n      remaining.delete(element);\n      if (!remaining.size) {\n        participants.forEach(item => item.style.removeProperty('--cart-stagger-delay'));\n        cart.classList.remove('is-cart-stagger-arriving');\n      }\n    }, { once:true }));\n  };\n  const cartPage = document.querySelector('.cobalt-cart');\n  const checkoutReturnKey = 'privateparts-checkout-return';\n  const lastProductKey = 'privateparts-last-product';\n  const cartProductReturnKey = 'privateparts-cart-product-return';\n  const revealCartFromCheckout = () => {\n    const cart = main?.querySelector('.cobalt-cart');\n    if (!cart || !desktopPanAllowed()) return;\n    try { window.sessionStorage.removeItem(checkoutReturnKey); } catch (_) {}\n    document.documentElement.classList.remove('is-checkout-pan-leaving');\n    document.documentElement.classList.remove('is-cart-pan-returning');\n    void cart.offsetWidth;\n    document.documentElement.classList.add('is-cart-pan-returning');\n    window.setTimeout(() => document.documentElement.classList.remove('is-cart-pan-returning'), 650);\n  };\n  const cartProductRoot = document.querySelector('.cobalt-product');\n  const productCartLink = cartProductRoot?.querySelector('.site-header .header-cart');\n  const desktopPanAllowed = () => !window.matchMedia('(max-width: 700px), (prefers-reduced-motion: reduce)').matches;\n  if (cartProductRoot) {\n    try {\n      window.sessionStorage.setItem(lastProductKey, JSON.stringify({\n        url:window.location.pathname + window.location.search,\n        title:cartProductRoot.querySelector('h1')?.textContent?.trim() || 'product'\n      }));\n    } catch (_) {}\n  }\n  const initializeCartReturn = cart => {\n    if (!cart) return;\n    const link = cart.querySelector('.site-header .page-return');\n    if (!link || link.dataset.returnInitialized) return;\n    link.dataset.returnInitialized = 'true';\n    let previous;\n    try { previous = JSON.parse(window.sessionStorage.getItem(lastProductKey)); } catch (_) {}\n    let destination;\n    try { destination = new URL(previous?.url || '', window.location.origin); } catch (_) {}\n    if (!destination || destination.origin !== window.location.origin || !/^\\/products\\/[a-z0-9-]+\\/?$/.test(destination.pathname)) {\n      const item = cart.querySelector('.cobalt-cart__item .cobalt-cart__product a');\n      if (item && cart.querySelectorAll('.cobalt-cart__item').length === 1) {\n        destination = new URL(item.href, window.location.origin);\n      } else {\n        destination = null;\n      }\n    }\n    if (destination) link.href = destination.href;\n    link.addEventListener('click', event => {\n      if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n      if (!desktopPanAllowed()) return;\n      if (destination && productCartState && main.querySelector('.cobalt-cart') &&\n          window.history.state?.privatepartsProductCartPan &&\n          destination.pathname === new URL(productCartState.productUrl).pathname) {\n        event.preventDefault();\n        window.history.back();\n      } else {\n        try { window.sessionStorage.setItem(cartProductReturnKey, String(Date.now())); } catch (_) {}\n        document.documentElement.classList.add('is-pan-reversing');\n      }\n    });\n  };\n  initializeCartReturn(cartPage);\n  if (cartPage && document.documentElement.classList.contains('is-cart-pan-returning')) {\n    try { window.sessionStorage.removeItem(checkoutReturnKey); } catch (_) {}\n    window.setTimeout(() => document.documentElement.classList.remove('is-cart-pan-returning'), 650);\n  }\n  window.addEventListener('pageshow', event => {\n    if (event.persisted && document.documentElement.classList.contains('is-checkout-pan-leaving')) revealCartFromCheckout();\n  });\n  const productCartState = cartProductRoot ? {\n    productWrapper: cartProductRoot.closest('.shopify-section'),\n    productUrl: window.location.href,\n    productTitle: document.title,\n    productCanonical: document.querySelector('link[rel=\"canonical\"]')?.href,\n    cartWrapper: null,\n    cartTitle: '',\n    cartCanonical: ''\n  } : null;\n  const cartPreviewUrl = () => {\n    const destination = new URL(productCartLink?.href || '/cart', window.location.origin);\n    const previewTheme = new URL(productCartState.productUrl).searchParams.get('preview_theme_id');\n    if (previewTheme) destination.searchParams.set('preview_theme_id', previewTheme);\n    return destination;\n  };\n  const fetchCartSurface = async () => {\n    const response = await fetch(cartPreviewUrl(), { credentials:'same-origin', cache:'no-store' });\n    if (!response.ok) throw new Error(`Cart returned ${response.status}`);\n    const page = new DOMParser().parseFromString(await response.text(), 'text/html');\n    const wrapper = page.querySelector('#MainContent > .shopify-section');\n    if (!wrapper?.querySelector('.cobalt-cart')) throw new Error('Cart was not present');\n    return { wrapper, title:page.title, canonical:page.querySelector('link[rel=\"canonical\"]')?.href };\n  };\n  const setCartSurfaceMetadata = toCart => {\n    document.title = toCart ? productCartState.cartTitle : productCartState.productTitle;\n    const canonical = toCart ? productCartState.cartCanonical : productCartState.productCanonical;\n    if (canonical && document.querySelector('link[rel=\"canonical\"]')) document.querySelector('link[rel=\"canonical\"]').href = canonical;\n    document.body.classList.toggle('template-product', !toCart);\n    document.body.classList.toggle('template-cart', toCart);\n  };\n  let cartPanRunning = false;\n  const panProductCart = (toCart, page) => {\n    if (!productCartState || cartPanRunning) return;\n    if (page) {\n      productCartState.cartWrapper = page.wrapper;\n      productCartState.cartTitle = page.title;\n      productCartState.cartCanonical = page.canonical;\n      initializeCartCheckout(page.wrapper.querySelector('.cobalt-cart__form'));\n      initializeCartReturn(page.wrapper.querySelector('.cobalt-cart'));\n    }\n    if (!productCartState.cartWrapper) return;\n    const outgoing = toCart ? productCartState.productWrapper : productCartState.cartWrapper;\n    const incoming = toCart ? productCartState.cartWrapper : productCartState.productWrapper;\n    cartPanRunning = true;\n    window.scrollTo(0, 0);\n    main.replaceChildren(outgoing, incoming);\n    main.style.minHeight = `${Math.max(outgoing.scrollHeight, incoming.scrollHeight, window.innerHeight)}px`;\n    main.classList.add('is-product-cart-panning');\n    main.classList.toggle('is-product-cart-reversing', !toCart);\n    if (toCart) startCartContentStagger(incoming.querySelector('.cobalt-cart'));\n    // Start in the same task so a throttled animation frame cannot reapply\n    // the moving class after the transition has already been cleaned up.\n    void main.offsetWidth;\n    main.classList.add('is-product-cart-moving');\n    window.setTimeout(() => {\n      // Keep the arriving wrapper connected. Replacing it here restarts every\n      // stagger animation at opacity zero after the panel finishes sliding.\n      outgoing.remove();\n      main.classList.remove('is-product-cart-panning', 'is-product-cart-reversing', 'is-product-cart-moving');\n      main.style.minHeight = '';\n      setCartSurfaceMetadata(toCart);\n      cartPanRunning = false;\n      const shouldShowCart = window.location.pathname === '/cart';\n      if (shouldShowCart !== toCart) panProductCart(shouldShowCart);\n    }, 650);\n  };\n  let cartLoadRunning = false;\n  const enterCart = async () => {\n    if (cartPanRunning || cartLoadRunning) return;\n    cartLoadRunning = true;\n    try {\n      const page = await fetchCartSurface();\n      const destination = cartPreviewUrl();\n      window.history.pushState({ privatepartsProductCartPan:true }, '', `${destination.pathname}${destination.search}`);\n      panProductCart(true, page);\n    } finally { cartLoadRunning = false; }\n  };\n  productCartLink?.addEventListener('click', event => {\n    if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || productCartLink.target === '_blank') return;\n    if (!desktopPanAllowed()) return;\n    event.preventDefault();\n    enterCart().catch(() => window.location.assign(cartPreviewUrl().href));\n  });\n\n  const cartProductForm = cartProductRoot?.querySelector('.product-form');\n  if (cartProductForm) {\n    let returnToCart = cartProductForm.querySelector('input[name=\"return_to\"]');\n    if (!returnToCart) {\n      returnToCart = document.createElement('input');\n      returnToCart.type = 'hidden';\n      returnToCart.name = 'return_to';\n      cartProductForm.append(returnToCart);\n    }\n    returnToCart.value = '/cart';\n    cartProductForm.addEventListener('submit', async event => {\n      if (!desktopPanAllowed()) return;\n      event.preventDefault();\n      if (cartProductForm.dataset.adding === '1') return;\n      cartProductForm.dataset.adding = '1';\n      const button = event.submitter;\n      if (button) button.disabled = true;\n      try {\n        const response = await fetch('/cart/add.js', {\n          method:'POST', credentials:'same-origin',\n          headers:{ Accept:'application/json' },\n          body:new FormData(cartProductForm)\n        });\n        if (!response.ok) {\n          const error = await response.json().catch(() => ({}));\n          throw new Error(error.description || 'Could not add this item to the bag.');\n        }\n        await enterCart();\n      } catch (error) {\n        let message = cartProductForm.querySelector('[data-cart-add-error]');\n        if (!message) {\n          message = document.createElement('p');\n          message.dataset.cartAddError = '';\n          message.setAttribute('role', 'alert');\n          cartProductForm.append(message);\n        }\n        message.textContent = error.message || 'Could not open the bag. Please try again.';\n      } finally {\n        delete cartProductForm.dataset.adding;\n        if (button) button.disabled = false;\n      }\n    });\n  }\n\n  function initializeCartCheckout(cartCheckoutForm) {\n    if (!cartCheckoutForm || cartCheckoutForm.dataset.checkoutPanBound) return;\n    cartCheckoutForm.dataset.checkoutPanBound = '1';\n    cartCheckoutForm.addEventListener('submit', event => {\n      const checkoutButton = event.submitter;\n      if (checkoutButton?.name !== 'checkout' || !desktopPanAllowed() ||\n          document.documentElement.classList.contains('is-checkout-pan-leaving')) return;\n      event.preventDefault();\n      try { window.sessionStorage.setItem(checkoutReturnKey, String(Date.now())); } catch (_) {}\n      document.documentElement.classList.add('is-checkout-pan-leaving');\n      window.setTimeout(() => cartCheckoutForm.requestSubmit(checkoutButton), 620);\n    });\n  }\n  initializeCartCheckout(document.querySelector('.cobalt-cart__form'));\n\n  const homeWrapper = home?.closest('.shopify-section');\n  const homeTitle = document.title;\n  const homeCanonical = document.querySelector('link[rel=\"canonical\"]')?.href;\n  const homeHeaderClass = home?.querySelector('.site-header')?.className;\n  const collectionDocuments = new Map();\n  let returnToHome = null;\n  let productCollectionPan = null;\n\n  const loadCollection = href => {\n    const url = new URL(href, window.location.origin).href;\n    if (!collectionDocuments.has(url)) {\n      collectionDocuments.set(url, fetch(url, { credentials: 'same-origin' }).then(async response => {\n        if (!response.ok) throw new Error(`Collection page returned ${response.status}`);\n        const page = new DOMParser().parseFromString(await response.text(), 'text/html');\n        const wrapper = page.querySelector('#MainContent > .shopify-section');\n        if (!wrapper?.querySelector('.cobalt-collection')) throw new Error('Collection was not present');\n        return { wrapper, title: page.title, canonical: page.querySelector('link[rel=\"canonical\"]')?.href };\n      }).catch(error => {\n        collectionDocuments.delete(url);\n        throw error;\n      }));\n    }\n    return collectionDocuments.get(url);\n  };\n\n  const panProductCollection = toCollection => {\n    const state = productCollectionPan;\n    if (!state || state.moving) return;\n    const outgoing = toCollection ? state.productWrapper : state.collectionWrapper;\n    const incoming = toCollection ? state.collectionWrapper : state.productWrapper;\n    state.moving = true;\n    window.scrollTo(0, 0);\n    main.replaceChildren(outgoing, incoming);\n    main.style.minHeight = `${Math.max(outgoing.scrollHeight, incoming.scrollHeight, window.innerHeight)}px`;\n    main.classList.add('is-product-collection-panning');\n    main.classList.toggle('is-product-collection-reversing', !toCollection);\n    void main.offsetWidth;\n    main.classList.add('is-product-collection-moving');\n    window.setTimeout(() => {\n      outgoing.remove();\n      main.classList.remove('is-product-collection-panning', 'is-product-collection-reversing', 'is-product-collection-moving');\n      main.style.minHeight = '';\n      document.body.classList.toggle('template-product', !toCollection);\n      document.body.classList.toggle('template-collection', toCollection);\n      document.title = toCollection ? state.collectionTitle : state.productTitle;\n      const canonical = toCollection ? state.collectionCanonical : state.productCanonical;\n      if (canonical && document.querySelector('link[rel=\"canonical\"]')) document.querySelector('link[rel=\"canonical\"]').href = canonical;\n      state.moving = false;\n      const atCollection = window.location.pathname === state.collectionPath;\n      if (atCollection !== toCollection) panProductCollection(atCollection);\n    }, 650);\n  };\n\n  const swapCollectionSurface = (wrapper, title, canonical, bodyClass, headerClass, reverse = false) => {\n    const header = main.querySelector('.site-header');\n    const destination = wrapper.querySelector('.cobalt-home, .cobalt-collection');\n    const placeholder = destination.querySelector('.site-header');\n    const focusTarget = destination.classList.contains('cobalt-collection')\n      ? destination.querySelector('h1')\n      : destination.querySelector('.collection-selector');\n    if (focusTarget) focusTarget.tabIndex = -1;\n    const swap = () => {\n      if (placeholder) placeholder.replaceWith(header);\n      else destination.prepend(header);\n      header.className = headerClass;\n      if (main.classList.contains('is-collection-home-panning')) main.querySelector('.shopify-section:first-child')?.remove();\n      else main.replaceChildren(wrapper);\n      document.body.classList.remove('template-index', 'template-collection');\n      document.body.classList.add(bodyClass);\n      document.title = title;\n      if (canonical) document.querySelector('link[rel=\"canonical\"]').href = canonical;\n      document.documentElement.classList.toggle('is-pan-reversing', reverse);\n      window.scrollTo(0, 0);\n    };\n    if (document.startViewTransition && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n      document.startViewTransition(swap).finished.then(() => focusTarget?.focus({ preventScroll:true }));\n    } else if (desktopPanAllowed() && main.querySelector('.cobalt-home, .cobalt-collection')) {\n      const outgoing = main.querySelector('.shopify-section');\n      main.replaceChildren(outgoing, wrapper);\n      main.style.minHeight = `${Math.max(outgoing.scrollHeight, wrapper.scrollHeight, window.innerHeight)}px`;\n      main.classList.add('is-collection-home-panning');\n      main.classList.toggle('is-collection-home-reversing', reverse);\n      void main.offsetWidth;\n      main.classList.add('is-collection-home-moving');\n      window.setTimeout(() => {\n        swap();\n        main.classList.remove('is-collection-home-panning', 'is-collection-home-reversing', 'is-collection-home-moving');\n        main.style.minHeight = '';\n        focusTarget?.focus({ preventScroll:true });\n      }, 650);\n    } else {\n      swap();\n      focusTarget?.focus({ preventScroll:true });\n    }\n  };\n\n  window.addEventListener('popstate', event => {\n    if (productCollectionPan) {\n      if (window.location.pathname === productCollectionPan.collectionPath && main.querySelector('.cobalt-product')) {\n        panProductCollection(true);\n        return;\n      }\n      if (window.location.pathname === productCollectionPan.productPath && main.querySelector('.cobalt-collection')) {\n        panProductCollection(false);\n        return;\n      }\n    }\n    if (productCartState && productCartState.cartWrapper) {\n      if (window.location.pathname === new URL(productCartState.productUrl).pathname && main.querySelector('.cobalt-cart')) {\n        panProductCart(false);\n        return;\n      }\n      if (window.location.pathname === '/cart' && main.querySelector('.cobalt-product')) {\n        panProductCart(true);\n        return;\n      }\n    }\n    if (event.state?.privatepartsCollectionPan) {\n      loadCollection(event.state.url).then(page => {\n        swapCollectionSurface(page.wrapper, page.title, page.canonical, 'template-collection', 'site-header site-header--light');\n        initializeCollectionPage(page.wrapper.querySelector('.cobalt-collection'));\n      }).catch(() => window.location.assign(event.state.url));\n    } else returnToHome?.();\n  });\n\n  window.addEventListener('pageswap', event => {\n    if (!event.viewTransition) return;\n    const target = event.activation?.entry?.url;\n    const targetPath = target && new URL(target).pathname;\n    const collectionToProduct = main.querySelector('.cobalt-collection') && targetPath?.includes('/products/');\n    const productToCart = document.querySelector('.cobalt-product') && targetPath === '/cart';\n    const cartToCheckout = document.querySelector('.cobalt-cart') &&\n      (targetPath === '/checkout' || targetPath?.startsWith('/checkouts/'));\n    const cartToProduct = document.querySelector('.cobalt-cart') && targetPath?.includes('/products/');\n    if (productToCart && document.documentElement.classList.contains('is-product-pan-leaving')) {\n      event.viewTransition.skipTransition();\n      return;\n    }\n    if ((!collectionToProduct && !productToCart && !cartToCheckout && !cartToProduct) ||\n        window.matchMedia('(max-width: 700px), (prefers-reduced-motion: reduce)').matches) {\n      event.viewTransition.skipTransition();\n    }\n  });\n  window.addEventListener('pagereveal', event => {\n    if (!event.viewTransition) return;\n    const arrivedCart = document.querySelector('.cobalt-cart');\n    if (arrivedCart?.classList.contains('is-cart-stagger-arriving')) {\n      event.viewTransition.skipTransition();\n      return;\n    }\n    const source = event.activation?.from?.url;\n    const sourcePath = source && new URL(source).pathname;\n    const collectionToProduct = document.querySelector('.cobalt-product') && sourcePath?.includes('/collections/');\n    const productToCart = document.querySelector('.cobalt-cart') && sourcePath?.includes('/products/');\n    const cartToProduct = document.querySelector('.cobalt-product') && sourcePath === '/cart';\n    if (window.matchMedia('(max-width: 700px), (prefers-reduced-motion: reduce)').matches ||\n        (!collectionToProduct && !productToCart && !cartToProduct)) {\n      event.viewTransition.skipTransition();\n    } else if (collectionToProduct) {\n      document.documentElement.classList.add('is-product-pan-arriving');\n    } else if (cartToProduct) {\n      document.documentElement.classList.add('is-pan-reversing');\n    } else if (productToCart) {\n      const cart = document.querySelector('.cobalt-cart');\n      const emptyItems = cart?.querySelector('.cobalt-cart__empty');\n      const participants = emptyItems\n        ? [...emptyItems.children]\n        : [\n          cart?.querySelector('.cobalt-cart__heading'),\n          ...cart?.querySelectorAll('.cobalt-cart__item') || [],\n          cart?.querySelector('.cobalt-cart__summary')\n        ].filter(Boolean);\n\n      const transitionStyles = document.createElement('style');\n      transitionStyles.dataset.cartStaggerTransition = '';\n      transitionStyles.textContent = participants.map((element, index) => {\n        const name = `privateparts-cart-step-${index + 1}`;\n        element.style.viewTransitionName = name;\n        return `::view-transition-new(${name}){animation:privateparts-cart-stagger-in .48s cubic-bezier(.2,.74,.2,1) ${index * 110}ms both}`;\n      }).join('\\n');\n      document.head.append(transitionStyles);\n      document.documentElement.classList.add('is-cart-stagger-arriving');\n      const clearCartStagger = () => {\n        participants.forEach(element => element.style.removeProperty('view-transition-name'));\n        transitionStyles.remove();\n        document.documentElement.classList.remove('is-cart-stagger-arriving');\n      };\n      event.viewTransition.finished.then(clearCartStagger, clearCartStagger);\n    }\n  });\n\n  // Contextual \"All collections\" links bypass the intro gate and land on the\n  // actual collection selector. The wordmark still intentionally returns to\n  // the full landing experience.\n  if (collectionOverviewRequested && gate && home) {\n    gate.remove();\n    home.classList.add('is-collections-revealed');\n    document.documentElement.classList.remove('cobalt-entry-active');\n  }\n\n  if (canvas && !collectionOverviewRequested) {\n    const context = canvas.getContext('2d', { alpha: true });\n    const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    const mobile = window.matchMedia('(max-width: 700px)').matches;\n    const count = mobile ? 3349 : 8008;\n    let width = 1, height = 1, ratio = 1, particles = [], running = !document.hidden;\n    const particleFrameInterval = 1000 / 60;\n    let particleFrameRequest = 0;\n    let lastParticleFrame = 0;\n    const pointer = { x: -9999, y: -9999, flowX: 0, flowY: 0, seen: false };\n    let randomState = 0x6d2b79f5;\n    const random = () => {\n      randomState = (randomState + 0x6d2b79f5) | 0;\n      let value = randomState;\n      value = Math.imul(value ^ value >>> 15, value | 1);\n      value ^= value + Math.imul(value ^ value >>> 7, value | 61);\n      return ((value ^ value >>> 14) >>> 0) / 4294967296;\n    };\n\n    const giveParticleMotion = particle => {\n      const angle = random() * Math.PI * 2;\n      const speed = (.24 + random() * .7) * ratio;\n      particle.vx = Math.cos(angle) * speed;\n      particle.vy = Math.sin(angle) * speed;\n    };\n\n    const spawn = (particle, initial) => {\n      if (initial) {\n        particle.x = width * (-.04 + random() * 1.08);\n        particle.y = height * (-.04 + random() * 1.08);\n      } else {\n        const edge = Math.floor(random() * 4);\n        if (edge === 0) { particle.x = -2; particle.y = random() * height; }\n        if (edge === 1) { particle.x = width + 2; particle.y = random() * height; }\n        if (edge === 2) { particle.x = random() * width; particle.y = -2; }\n        if (edge === 3) { particle.x = random() * width; particle.y = height + 2; }\n      }\n      giveParticleMotion(particle);\n    };\n\n    const setupParticles = () => {\n      ratio = Math.min(window.devicePixelRatio || 1, 1.5);\n      width = Math.floor(window.innerWidth * ratio); height = Math.floor(window.innerHeight * ratio);\n      canvas.width = width; canvas.height = height;\n      randomState = ((Date.now() & 0xffffffff) ^ width ^ height << 12) | 0;\n      particles = Array.from({ length: count }, () => {\n        const particle = { vx: 0, vy: 0, seed: random(), size: random() > .78 ? 2 : 1 };\n        spawn(particle, true); return particle;\n      });\n    };\n\n    const requestParticleFrame = () => {\n      if (!particleFrameRequest && running && gate &&\n          !gate.classList.contains('is-entering') && !gate.classList.contains('is-exiting')) {\n        particleFrameRequest = window.requestAnimationFrame(renderParticles);\n      }\n    };\n\n    const renderParticles = time => {\n      particleFrameRequest = 0;\n      if (gate?.classList.contains('is-entering')) return;\n      if (!reduced && lastParticleFrame && time - lastParticleFrame < particleFrameInterval - 1) {\n        requestParticleFrame();\n        return;\n      }\n      lastParticleFrame = time;\n      context.clearRect(0, 0, width, height);\n      const clock = time * .00011;\n      particles.forEach((particle, index) => {\n        const flowX = Math.sin(particle.y * .006 + clock * 7 + particle.seed * 5) * .047;\n        const flowY = Math.cos(particle.x * .005 - clock * 5 + particle.seed * 4) * .047;\n        const dx = pointer.x * ratio - particle.x;\n        const dy = pointer.y * ratio - particle.y;\n        const distance = Math.hypot(dx, dy);\n        const wakeRadius = 270 * ratio;\n        const cursorSpeed = Math.hypot(pointer.flowX, pointer.flowY);\n        if (pointer.seen && cursorSpeed > .06 && distance < wakeRadius) {\n          const influence = Math.pow(1 - distance / wakeRadius, 2);\n          const directionX = pointer.flowX / cursorSpeed;\n          const directionY = pointer.flowY / cursorSpeed;\n          const lateral = dx * -directionY + dy * directionX;\n          const side = lateral < 0 ? -1 : 1;\n          const forward = dx * directionX + dy * directionY;\n          const frontPressure = .052 + Math.max(0, Math.min(1, forward / wakeRadius)) * .076;\n          const sideSlip = Math.min(10, cursorSpeed) * influence * .032 * side;\n          particle.vx += pointer.flowX * influence * frontPressure - directionY * sideSlip;\n          particle.vy += pointer.flowY * influence * frontPressure + directionX * sideSlip;\n        }\n        particle.vx = (particle.vx + flowX) * .968;\n        particle.vy = (particle.vy + flowY) * .968;\n        const particleSpeed = Math.hypot(particle.vx, particle.vy);\n        const maximumSpeed = 4.2 * ratio;\n        if (particleSpeed > maximumSpeed) {\n          particle.vx *= maximumSpeed / particleSpeed;\n          particle.vy *= maximumSpeed / particleSpeed;\n        }\n        particle.x += particle.vx; particle.y += particle.vy;\n        if (particle.x < -8 || particle.x > width + 8 || particle.y < -8 || particle.y > height + 8) spawn(particle, false);\n        const alpha = (.18 + .3 * (Math.sin(clock * 8 + particle.seed * 20) + 1) / 2) * 1.2;\n        context.fillStyle = `rgba(248,248,243,${alpha})`;\n        context.fillRect(particle.x, particle.y, particle.size * ratio, particle.size * ratio);\n      });\n      pointer.flowX *= .9;\n      pointer.flowY *= .9;\n      if (!reduced) requestParticleFrame();\n    };\n\n    setupParticles();\n    if (reduced) renderParticles(0); else requestParticleFrame();\n    window.addEventListener('resize', setupParticles, { passive: true });\n    const moveParticles = event => {\n      if (pointer.seen) {\n        const flowScale = mobile ? .24 : .92;\n        pointer.flowX = pointer.flowX * .45 + (event.clientX - pointer.x) * ratio * flowScale;\n        pointer.flowY = pointer.flowY * .45 + (event.clientY - pointer.y) * ratio * flowScale;\n      }\n      pointer.x = event.clientX; pointer.y = event.clientY; pointer.seen = true;\n    };\n    if (!mobile) window.addEventListener('pointermove', moveParticles, { passive: true });\n    if (mobile && gate) {\n      document.documentElement.classList.add('cobalt-entry-active');\n      gate.addEventListener('pointermove', moveParticles, { passive: true });\n      gate.addEventListener('pointerdown', moveParticles, { passive: true });\n      gate.addEventListener('touchmove', event => event.preventDefault(), { passive: false });\n    }\n    document.addEventListener('visibilitychange', () => {\n      running = !document.hidden;\n      if (running && !reduced) {\n        lastParticleFrame = 0;\n        requestParticleFrame();\n      }\n    });\n  }\n\n  if (gate && enter) enter.addEventListener('click', () => {\n    // The logo transition rasterises the live wordmark. Never snapshot fallback\n    // glyphs if somebody enters immediately after a hard refresh.\n    if (!document.documentElement.classList.contains('fonts-ready')) {\n      enter.disabled = true;\n      displayFontReady.then(() => {\n        enter.disabled = false;\n        enter.click();\n      });\n      return;\n    }\n    const logo = enter.querySelector('span');\n    const initialBounds = logo ? logo.getBoundingClientRect() : null;\n    const initialStyle = logo ? window.getComputedStyle(logo) : null;\n    const logoSnapshot = initialBounds && initialStyle ? {\n      bounds: { left: initialBounds.left, top: initialBounds.top, width: initialBounds.width, height: initialBounds.height },\n      fontStyle: initialStyle.fontStyle,\n      fontWeight: initialStyle.fontWeight,\n      fontSize: initialStyle.fontSize,\n      fontFamily: initialStyle.fontFamily,\n      letterSpacing: initialStyle.letterSpacing,\n      textTransform: initialStyle.textTransform\n    } : null;\n    gate.classList.add('is-exiting');\n\n    const startLogoDither = () => {\n      if (!logo || !logoSnapshot || !document.body.contains(gate)) return;\n      const bounds = logoSnapshot.bounds;\n      const pixelRatio = Math.min(window.devicePixelRatio || 1, 1.5);\n      const padding = Math.max(24, Math.min(52, bounds.height * .55));\n      const cssWidth = Math.ceil(bounds.width + padding * 2);\n      const cssHeight = Math.ceil(bounds.height + padding * 2);\n      const transitionCanvas = document.createElement('canvas');\n      const sourceCanvas = document.createElement('canvas');\n      transitionCanvas.className = 'entry-logo-dither';\n      transitionCanvas.setAttribute('aria-hidden', 'true');\n      transitionCanvas.width = sourceCanvas.width = Math.ceil(cssWidth * pixelRatio);\n      transitionCanvas.height = sourceCanvas.height = Math.ceil(cssHeight * pixelRatio);\n      transitionCanvas.style.width = `${cssWidth}px`;\n      transitionCanvas.style.height = `${cssHeight}px`;\n      transitionCanvas.style.left = `${bounds.left - padding}px`;\n      transitionCanvas.style.top = `${bounds.top - padding}px`;\n      gate.appendChild(transitionCanvas);\n\n      const output = transitionCanvas.getContext('2d');\n      const source = sourceCanvas.getContext('2d', { willReadFrequently: true });\n      const matrix = [0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5];\n      const sourceText = logo.textContent.trim();\n      const text = logoSnapshot.textTransform === 'uppercase' ? sourceText.toUpperCase() :\n        logoSnapshot.textTransform === 'lowercase' ? sourceText.toLowerCase() : sourceText;\n      const font = `${logoSnapshot.fontStyle} ${logoSnapshot.fontWeight} ${logoSnapshot.fontSize} ${logoSnapshot.fontFamily}`;\n      const duration = 1200;\n      let startedAt;\n\n      const renderDither = timestamp => {\n        if (!startedAt) startedAt = timestamp;\n        const progress = Math.min(1, (timestamp - startedAt) / duration);\n        const blurProgress = Math.max(0, Math.min(1, (progress - .2) / .8));\n        const blurEased = 1 - Math.pow(1 - blurProgress, 3);\n        const dissolveProgress = Math.max(0, Math.min(1, (progress - .4) / .6));\n        const blur = blurProgress === 0 ? 0 : .2 + blurEased * 40;\n        source.setTransform(1, 0, 0, 1, 0, 0);\n        source.clearRect(0, 0, sourceCanvas.width, sourceCanvas.height);\n        source.save();\n        source.scale(pixelRatio, pixelRatio);\n        source.font = font;\n        if ('letterSpacing' in source) source.letterSpacing = logoSnapshot.letterSpacing;\n        source.textAlign = 'center';\n        source.textBaseline = 'alphabetic';\n        const metrics = source.measureText(text);\n        const measuredWidth = Math.max(1, metrics.width);\n        const ascent = metrics.actualBoundingBoxAscent || bounds.height * .72;\n        const descent = metrics.actualBoundingBoxDescent || bounds.height * .14;\n        const baseline = cssHeight * .5 + (ascent - descent) * .5;\n        source.translate(cssWidth * .5, baseline);\n        source.scale(bounds.width / measuredWidth, 1);\n        source.filter = blur === 0 ? 'none' : `blur(${blur}px)`;\n        source.fillStyle = '#f8f8f3';\n        source.fillText(text, 0, 0);\n        source.restore();\n\n        const pixels = source.getImageData(0, 0, sourceCanvas.width, sourceCanvas.height).data;\n        output.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n        output.clearRect(0, 0, cssWidth, cssHeight);\n        output.fillStyle = '#f8f8f3';\n        output.beginPath();\n        const grid = 2.8;\n        const dissolve = 1 - Math.pow(dissolveProgress, 1.65) * .92;\n        for (let y = grid * .5; y < cssHeight; y += grid) {\n          for (let x = grid * .5; x < cssWidth; x += grid) {\n            const sampleX = Math.min(sourceCanvas.width - 1, Math.floor(x * pixelRatio));\n            const sampleY = Math.min(sourceCanvas.height - 1, Math.floor(y * pixelRatio));\n            const alpha = pixels[(sampleY * sourceCanvas.width + sampleX) * 4 + 3] / 255;\n            const density = alpha * dissolve;\n            const threshold = (matrix[((Math.floor(y / grid) & 3) * 4) + (Math.floor(x / grid) & 3)] + .5) / 16;\n            if (density > threshold) {\n              const radius = grid * (.2 + density * .33);\n              output.moveTo(x + radius, y);\n              output.arc(x, y, radius, 0, Math.PI * 2);\n            }\n          }\n        }\n        output.fill();\n        gate.classList.add('has-logo-dither');\n        if (progress < 1) {\n          requestAnimationFrame(renderDither);\n        } else {\n          if (home) home.classList.add('is-collections-revealed');\n          transitionCanvas.remove();\n        }\n      };\n      requestAnimationFrame(renderDither);\n    };\n\n    window.setTimeout(startLogoDither, 125);\n    window.setTimeout(() => {\n      if (home) home.classList.add('is-collections-revealed');\n      document.documentElement.classList.remove('cobalt-entry-active');\n      gate.remove();\n    }, 1620);\n  });\n\n  const stage = document.querySelector('.collection-selector');\n  const slots = stage ? Array.from(stage.querySelectorAll('[data-collection-slot]')) : [];\n  const cards = slots.map(slot => slot.querySelector('[data-collection-card]'));\n  if (stage && cards.length && !window.matchMedia('(max-width: 700px)').matches) {\n    let activeIndex = -1;\n    let navigatingToCollection = false;\n    const pointer = { x: 0, y: 0 };\n    const state = cards.map(() => ({ x: 0, y: 0, z: 0, rx: 0, ry: 0, width: 1, height: 1, scale: 1 }));\n    const blueUnderlays = slots.map(slot => {\n      const underlay = document.createElement('span');\n      underlay.className = 'collection-selector__blue-underlay';\n      underlay.setAttribute('aria-hidden', 'true');\n      slot.prepend(underlay);\n      return underlay;\n    });\n    let titleWidths = [];\n    let sharedTitleScale = .3;\n\n    const measureTitles = () => {\n      titleWidths = cards.map(card => Math.max(1, card.querySelector('[data-fit-title]').scrollWidth));\n      const widestTitle = Math.max(...titleWidths);\n      const narrowestCard = Math.min(...slots.map(slot => slot.clientWidth));\n      sharedTitleScale = Math.max(.12, Math.min(.72, Math.max(20, narrowestCard - 40) / widestTitle)) * .75;\n      slots.forEach(slot => slot.style.setProperty('--title-scale', sharedTitleScale));\n    };\n    displayFontReady.then(measureTitles);\n    window.addEventListener('resize', measureTitles, { passive: true });\n\n    const setActive = index => {\n      if (activeIndex === index) return;\n      activeIndex = index;\n      stage.classList.toggle('is-focused', index >= 0);\n      slots.forEach((slot, slotIndex) => slot.classList.toggle('is-active', slotIndex === index));\n    };\n\n    const createCollectionPortal = (slot, clientX, clientY) => {\n      const card = slot.querySelector('[data-collection-card]');\n      const title = card.querySelector('[data-fit-title]');\n      const wordmark = document.querySelector('.wordmark');\n      const bounds = card.getBoundingClientRect();\n      const portal = document.createElement('div');\n      portal.className = 'collection-transition-portal';\n      portal.style.setProperty('--portal-left', `${bounds.left}px`);\n      portal.style.setProperty('--portal-top', `${bounds.top}px`);\n      portal.style.setProperty('--portal-width', `${bounds.width}px`);\n      portal.style.setProperty('--portal-height', `${bounds.height}px`);\n      const exposure = document.createElement('span');\n      exposure.className = 'collection-transition-exposure';\n      exposure.setAttribute('aria-hidden', 'true');\n      const exposureX = Number.isFinite(clientX) ? ((clientX - bounds.left) / bounds.width) * 100 : 50;\n      const exposureY = Number.isFinite(clientY) ? ((clientY - bounds.top) / bounds.height) * 100 : 50;\n      portal.style.setProperty('--exposure-x', `${Math.max(0, Math.min(100, exposureX))}%`);\n      portal.style.setProperty('--exposure-y', `${Math.max(0, Math.min(100, exposureY))}%`);\n      portal.appendChild(exposure);\n      document.body.appendChild(portal);\n      requestAnimationFrame(() => portal.classList.add('is-blue-exposing'));\n      window.setTimeout(() => portal.classList.add('is-entering'), 110);\n      if (wordmark) {\n        const logoBounds = wordmark.getBoundingClientRect();\n        const logoStyle = window.getComputedStyle(wordmark);\n        const movingWordmark = document.createElement('div');\n        movingWordmark.className = 'collection-transition-wordmark';\n        movingWordmark.textContent = wordmark.textContent.trim();\n        movingWordmark.style.left = `${logoBounds.left}px`;\n        movingWordmark.style.top = `${logoBounds.top}px`;\n        movingWordmark.style.width = `${logoBounds.width}px`;\n        movingWordmark.style.height = `${logoBounds.height}px`;\n        movingWordmark.style.fontFamily = logoStyle.fontFamily;\n        movingWordmark.style.fontSize = logoStyle.fontSize;\n        movingWordmark.style.fontWeight = logoStyle.fontWeight;\n        movingWordmark.style.letterSpacing = logoStyle.letterSpacing;\n        document.body.appendChild(movingWordmark);\n      }\n      if (title) {\n        const titleBounds = title.getBoundingClientRect();\n        const titleStyle = window.getComputedStyle(title);\n        const movingTitle = document.createElement('div');\n        const targetFontSize = Math.max(32, Math.min(window.innerWidth * .0375, 57));\n        movingTitle.className = 'collection-transition-title';\n        movingTitle.textContent = title.textContent.trim();\n        movingTitle.style.setProperty('--title-left', `${titleBounds.left}px`);\n        movingTitle.style.setProperty('--title-top', `${titleBounds.top}px`);\n        movingTitle.style.setProperty('--title-size', `${titleBounds.height / .88}px`);\n        movingTitle.style.setProperty('--target-title-size', `${targetFontSize}px`);\n        movingTitle.style.fontFamily = titleStyle.fontFamily;\n        movingTitle.style.fontWeight = titleStyle.fontWeight;\n        document.body.appendChild(movingTitle);\n        window.setTimeout(() => movingTitle.classList.add('is-entering'), 110);\n      }\n      return portal;\n    };\n\n    stage.addEventListener('pointermove', event => {\n      const stageBounds = stage.getBoundingClientRect();\n      if (event.clientX < stageBounds.left || event.clientX > stageBounds.right || event.clientY < stageBounds.top || event.clientY > stageBounds.bottom) return setActive(-1);\n      let nearestIndex = 0, nearestDistance = Infinity;\n      slots.forEach((slot, index) => {\n        const bounds = slot.getBoundingClientRect();\n        const distance = Math.abs(event.clientX - (bounds.left + bounds.width * .5));\n        if (distance < nearestDistance) { nearestDistance = distance; nearestIndex = index; }\n      });\n      setActive(nearestIndex);\n      const bounds = slots[nearestIndex].getBoundingClientRect();\n      pointer.x = Math.max(-1, Math.min(1, ((event.clientX - bounds.left) / bounds.width - .5) * 2));\n      pointer.y = Math.max(-1, Math.min(1, ((event.clientY - bounds.top) / bounds.height - .5) * 2));\n    });\n    stage.addEventListener('pointerleave', () => setActive(-1));\n    slots.forEach((slot, index) => {\n      const warm = () => loadCollection(slot.href).catch(() => undefined);\n      slot.addEventListener('pointerenter', warm, { once:true, passive:true });\n      slot.addEventListener('focus', warm, { once:true, passive:true });\n      slot.addEventListener('focus', () => setActive(index));\n      slot.addEventListener('blur', () => setActive(-1));\n      slot.addEventListener('click', event => {\n        if (navigatingToCollection || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n        event.preventDefault();\n        navigatingToCollection = true;\n        setActive(index);\n        loadCollection(slot.href).then(page => {\n          returnToHome = () => {\n            if (!main.querySelector('.cobalt-collection')) return;\n            swapCollectionSurface(homeWrapper, homeTitle, homeCanonical, 'template-index', homeHeaderClass, true);\n            navigatingToCollection = false;\n            requestAnimationFrame(animateCards);\n          };\n          window.history.pushState({ privatepartsCollectionPan:true, url:slot.href }, '', slot.href);\n          swapCollectionSurface(page.wrapper, page.title, page.canonical, 'template-collection', 'site-header site-header--light');\n          initializeCollectionPage(page.wrapper.querySelector('.cobalt-collection'));\n        }).catch(() => window.location.assign(slot.href));\n      });\n    });\n\n    let lastCardFrame = 0;\n    const animateCards = time => {\n      if (navigatingToCollection) return;\n      // Idle cards only need a light ambient drift. Return to full-rate\n      // updates as soon as the pointer is selecting or tilting a card.\n      const cardFrameInterval = activeIndex < 0 ? 30 : 1000 / 60;\n      if (lastCardFrame && time - lastCardFrame < cardFrameInterval - 1) {\n        requestAnimationFrame(animateCards);\n        return;\n      }\n      lastCardFrame = time;\n      cards.forEach((card, index) => {\n        const slot = slots[index];\n        const baseWidth = slot.clientWidth;\n        const baseHeight = slot.clientHeight;\n        const selected = index === activeIndex;\n        const side = index < activeIndex ? -1 : 1;\n        let target;\n        if (selected) {\n          // A selected form only acknowledges proximity: no resizing or theatrical\n          // flight, just a shallow shift in depth and reflected light.\n          target = { width: baseWidth, height: baseHeight, scale: 1.02, x: 0, y: 0, z: 12, rx: -pointer.y * 4, ry: pointer.x * 4 };\n        } else if (activeIndex >= 0) {\n          target = { width: baseWidth, height: baseHeight, scale: 1, x: side * 4, y: 0, z: 0, rx: 0, ry: 0 };\n        } else {\n          target = { width: baseWidth, height: baseHeight, scale: 1, x: 0, y: 0, z: 0, rx: 0, ry: 0 };\n        }\n        const current = state[index];\n        // Keep the card response close to the pointer. The previous .09\n        // interpolation made every selection change feel like slow motion.\n        Object.keys(current).forEach(key => current[key] += (target[key] - current[key]) * .14);\n        slot.style.setProperty('--surface-width', `${current.width}px`); slot.style.setProperty('--surface-height', `${current.height}px`);\n        slot.style.setProperty('--card-x', `${current.x}px`); slot.style.setProperty('--card-y', `${current.y}px`); slot.style.setProperty('--card-z', `${current.z}px`);\n        slot.style.setProperty('--tilt-x', `${current.rx}deg`); slot.style.setProperty('--tilt-y', `${current.ry}deg`);\n        slot.style.setProperty('--surface-scale', current.scale);\n        const tiltMagnitude = selected ? Math.min(1, Math.hypot(pointer.x, pointer.y)) : 0;\n        slot.style.setProperty('--blue-shift-x', `${selected ? -pointer.x * (2 + tiltMagnitude * 2) : 0}px`);\n        slot.style.setProperty('--blue-shift-y', `${selected ? -pointer.y * (2 + tiltMagnitude * 2) : 0}px`);\n        slot.style.setProperty('--blue-underlay-opacity', selected && tiltMagnitude > .04 ? Math.min(.92, tiltMagnitude * 1.15) : 0);\n        slot.style.setProperty('--light-x', `${selected ? 50 + pointer.x * 12 : 50}%`); slot.style.setProperty('--light-y', `${selected ? 50 + pointer.y * 12 : 50}%`);\n        const focusDistance = selected ? Math.min(1, Math.hypot(pointer.x, pointer.y)) : 0;\n        const perimeterScale = Math.max(.001, Math.abs(pointer.x), Math.abs(pointer.y));\n        const edgeDirectionX = focusDistance > .02 ? pointer.x / perimeterScale : 0;\n        const edgeDirectionY = focusDistance > .02 ? pointer.y / perimeterScale : 0;\n        const focusAngle = Math.atan2(edgeDirectionY, edgeDirectionX) * 180 / Math.PI + 90;\n        const focusCore = 15 + (1 - focusDistance) * 28;\n        slot.style.setProperty('--focus-angle', `${focusAngle}deg`);\n        slot.style.setProperty('--focus-core', `${focusCore}%`);\n        slot.style.setProperty('--focus-soft', `${Math.min(48, focusCore + 10)}%`);\n        const cornerX = pointer.x >= 0 ? 100 : 0;\n        const cornerY = pointer.y >= 0 ? 100 : 0;\n        const cornerPolygon = (x, y) => {\n          if (x === 0 && y === 0) return 'polygon(0 0, 22% 0, 0 22%)';\n          if (x === 100 && y === 0) return 'polygon(100% 0, 78% 0, 100% 22%)';\n          if (x === 0 && y === 100) return 'polygon(0 100%, 0 78%, 22% 100%)';\n          return 'polygon(100% 100%, 78% 100%, 100% 78%)';\n        };\n        slot.style.setProperty('--dof-far-x', `${cornerX}%`);\n        slot.style.setProperty('--dof-far-y', `${cornerY}%`);\n        slot.style.setProperty('--dof-near-x', `${100 - cornerX}%`);\n        slot.style.setProperty('--dof-near-y', `${100 - cornerY}%`);\n        const farOverlay = slot.querySelector('.collection-selector__dof-corner-layer--far');\n        const nearOverlay = slot.querySelector('.collection-selector__dof-corner-layer--near');\n        if (farOverlay) farOverlay.style.clipPath = cornerPolygon(cornerX, cornerY);\n        if (nearOverlay) nearOverlay.style.clipPath = cornerPolygon(100 - cornerX, 100 - cornerY);\n        slot.style.setProperty('--dof-blur', '0px');\n        slot.style.setProperty('--dof-opacity', '0');\n      });\n      requestAnimationFrame(animateCards);\n    };\n    requestAnimationFrame(animateCards);\n  }\n\n  // All products uses the same surface handoff as the named collections.\n  const indexLink = document.querySelector('.collection-view-all');\n  if (indexLink && stage && !window.matchMedia('(max-width: 700px)').matches) {\n    let navigatingToIndex = false;\n    const warm = () => loadCollection(indexLink.href).catch(() => undefined);\n    indexLink.addEventListener('pointerenter', warm, { once:true, passive:true });\n    indexLink.addEventListener('focus', warm, { once:true, passive:true });\n    indexLink.addEventListener('click', event => {\n      if (navigatingToIndex || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n      event.preventDefault();\n      navigatingToIndex = true;\n      loadCollection(indexLink.href).then(page => {\n        returnToHome = () => {\n          if (!main.querySelector('.cobalt-collection')) return;\n          swapCollectionSurface(homeWrapper, homeTitle, homeCanonical, 'template-index', homeHeaderClass, true);\n          navigatingToIndex = false;\n        };\n        window.history.pushState({ privatepartsCollectionPan:true, url:indexLink.href }, '', indexLink.href);\n        swapCollectionSurface(page.wrapper, page.title, page.canonical, 'template-collection', 'site-header site-header--light');\n        initializeCollectionPage(page.wrapper.querySelector('.cobalt-collection'));\n      }).catch(() => window.location.assign(indexLink.href));\n    });\n  }\n\n  const initializedCollectionPages = new WeakSet();\n  const initializeCollectionPage = collectionPage => {\n    if (!collectionPage || initializedCollectionPages.has(collectionPage)) return;\n    initializedCollectionPages.add(collectionPage);\n    collectionPage.querySelector('.site-header .page-return')?.addEventListener('click', event => {\n      if (!window.history.state?.privatepartsCollectionPan || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n      event.preventDefault();\n      window.history.back();\n    });\n    if (new URLSearchParams(window.location.search).get('from') === 'collections') {\n    collectionPage.classList.add('is-entering-from-selector');\n    displayFontReady.then(() => requestAnimationFrame(() => requestAnimationFrame(() => {\n        collectionPage.classList.add('is-entered-from-selector');\n        window.history.replaceState({}, '', `${window.location.pathname}${window.location.hash}`);\n      })));\n    }\n\n    if (!window.matchMedia('(max-width: 700px)').matches) {\n    const productRows = Array.from(collectionPage.querySelectorAll('a.product-row'));\n    const collectionReturnLabel = collectionPage.querySelector('h1')?.textContent.trim() || 'collection';\n    productRows.forEach(row => {\n      const destination = navigationUrl(row.href, 'collection');\n      destination.pathname = destination.pathname.replace(/\\/collections\\/[^/]+(?=\\/products\\/)/, '');\n      destination.searchParams.set('return_to', `${window.location.pathname}${window.location.search}`);\n      destination.searchParams.set('return_label', collectionReturnLabel);\n      prefetchOnIntent(row, () => destination.href);\n      row.addEventListener('click', event => {\n        if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n        event.preventDefault();\n        window.location.assign(destination.href);\n      });\n    });\n    }\n  };\n  initializeCollectionPage(document.querySelector('.cobalt-collection'));\n\n  const productPage = document.querySelector('.cobalt-product');\n  if (productPage) {\n    const root = document.documentElement;\n    if (root.classList.contains('is-product-from-cart')) {\n      try { window.sessionStorage.removeItem(cartProductReturnKey); } catch (_) {}\n      window.setTimeout(() => root.classList.remove('is-product-from-cart', 'is-pan-reversing'), 750);\n    }\n    const productParams = new URLSearchParams(window.location.search);\n    const fromCollection = productParams.get('from') === 'collection';\n    const collectionReturn = productPage.querySelector('.site-header .page-return');\n    const returnPath = productParams.get('return_to');\n    if (collectionReturn && returnPath) {\n      const returnUrl = new URL(returnPath, window.location.origin);\n      if (returnUrl.origin === window.location.origin && /^\\/collections\\/[a-z0-9-]+\\/?$/.test(returnUrl.pathname)) {\n        collectionReturn.href = `${returnUrl.pathname}${returnUrl.search}${returnUrl.hash}`;\n      }\n    }\n    collectionReturn?.addEventListener('click', event => {\n      if (!desktopPanAllowed() || event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n      const destination = new URL(collectionReturn.href, window.location.origin);\n      if (destination.origin !== window.location.origin || !/^\\/collections\\/[a-z0-9-]+\\/?$/.test(destination.pathname)) return;\n      event.preventDefault();\n      if (productCollectionPan?.moving) return;\n      loadCollection(destination.href).then(page => {\n        productCollectionPan = {\n          productWrapper:productPage.closest('.shopify-section'),\n          productPath:window.location.pathname,\n          productTitle:document.title,\n          productCanonical:document.querySelector('link[rel=\"canonical\"]')?.href,\n          collectionWrapper:page.wrapper,\n          collectionPath:destination.pathname,\n          collectionTitle:page.title,\n          collectionCanonical:page.canonical,\n          moving:false\n        };\n        window.history.pushState({ privatepartsProductCollectionPan:true }, '', destination.pathname + destination.search);\n        initializeCollectionPage(page.wrapper.querySelector('.cobalt-collection'));\n        panProductCollection(true);\n      }).catch(() => window.location.assign(destination.href));\n    });\n    const revealProduct = () => {\n      if (!root.classList.contains('product-stagger-pending')) return;\n      root.classList.remove('product-stagger-pending');\n      root.classList.add('product-stagger-ready');\n      if (fromCollection) {\n        const remainingParams = new URLSearchParams(window.location.search);\n        remainingParams.delete('from');\n        const returnContext = remainingParams.toString();\n        window.history.replaceState({}, '', `${window.location.pathname}${returnContext ? `?${returnContext}` : ''}${window.location.hash}`);\n      }\n    };\n    window.__revealPrivatepartsProduct = revealProduct;\n    // Font loading is allowed a short stability window; image loading never\n    // blocks the panel landing because the image is already eager in the shell.\n    Promise.race([\n      displayFontReady,\n      new Promise(resolve => window.setTimeout(resolve, 420))\n    ]).then(() => {\n      requestAnimationFrame(() => requestAnimationFrame(revealProduct));\n    });\n  }\n\n  document.querySelectorAll('[data-product-dither]').forEach(canvasElement => {\n    const context = canvasElement.getContext('2d'); const bounds = canvasElement.getBoundingClientRect();\n    canvasElement.width = bounds.width; canvasElement.height = bounds.height;\n    for (let y = 0; y < canvasElement.height; y += 10) for (let x = 0; x < canvasElement.width; x += 10) {\n      if (Math.sin(x * 9.7 + y * 3.1) > .79) { context.fillStyle = 'rgba(235,235,230,.28)'; context.fillRect(x, y, 1, 1); }\n    }\n  });\n}());\n"],
  "mappings": "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",
  "names": ["bounds"]
}
