{
  "version": 3,
  "sources": ["/cdn/shop/t/13/assets/frq-a26.js?frq=20260716o"],
  "sourcesContent": ["(() => {\n  const clamp = (value, min = 0, max = 1) => Math.min(max, Math.max(min, value));\n\n  const initScrollScenes = () => {\n    const heroes = [...document.querySelectorAll('[data-frq-a26-hero]')];\n    const offers = [...document.querySelectorAll('[data-frq-a26-offers]')];\n    if (!heroes.length && !offers.length) return;\n    const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    let ticking = false;\n\n    const setOfferState = (offer, active, progress = active / 2) => {\n      offer.style.setProperty('--offer-progress', progress.toFixed(4));\n      offer.style.setProperty('--offer-step', (active / 2).toFixed(2));\n      offer.dataset.offerActive = String(active);\n      offer.querySelectorAll('[data-offer-jump]').forEach((button) => {\n        button.setAttribute('aria-current', button.dataset.offerJump === String(active) ? 'step' : 'false');\n      });\n    };\n\n    const draw = () => {\n      const vh = window.innerHeight || 1;\n      heroes.forEach((hero) => {\n        const rect = hero.getBoundingClientRect();\n        const progress = reduced ? 0.55 : clamp(-rect.top / Math.max(1, rect.height - vh));\n        hero.style.setProperty('--hero-progress', progress.toFixed(4));\n      });\n      offers.forEach((offer) => {\n        if (reduced) {\n          const active = Number(offer.dataset.offerActive || 0);\n          setOfferState(offer, active);\n          return;\n        }\n        const rect = offer.getBoundingClientRect();\n        const progress = clamp(-rect.top / Math.max(1, rect.height - vh));\n        const active = progress < 0.25 ? 0 : progress < 0.75 ? 1 : 2;\n        setOfferState(offer, active, progress);\n      });\n      ticking = false;\n    };\n    const requestDraw = () => {\n      if (ticking) return;\n      ticking = true;\n      requestAnimationFrame(draw);\n    };\n    window.addEventListener('scroll', requestDraw, { passive: true });\n    window.addEventListener('resize', requestDraw, { passive: true });\n    offers.forEach((offer) => {\n      if (offer.dataset.offerControlsReady === 'true') return;\n      offer.dataset.offerControlsReady = 'true';\n      offer.querySelectorAll('[data-offer-jump]').forEach((button) => {\n        button.addEventListener('click', () => {\n          const step = Number(button.dataset.offerJump || 0);\n          if (reduced) {\n            setOfferState(offer, step);\n            return;\n          }\n          const vh = window.innerHeight || 1;\n          const rect = offer.getBoundingClientRect();\n          const sectionTop = window.scrollY + rect.top;\n          const scrollRange = Math.max(1, offer.offsetHeight - vh);\n          const targetProgress = step === 1 ? 0.5 : step === 2 ? 1 : 0;\n          window.scrollTo({ top: sectionTop + (scrollRange * targetProgress), behavior: reduced ? 'auto' : 'smooth' });\n        });\n      });\n    });\n    draw();\n  };\n\n  const updateVariant = (windowEl, button) => {\n    if (!windowEl || !button || button.disabled) return;\n    const variantButtons = [...windowEl.querySelectorAll('[data-variant-id]')];\n    variantButtons.forEach((item) => {\n      const selected = item === button;\n      item.classList.toggle('is-selected', selected);\n      item.setAttribute('aria-pressed', String(selected));\n    });\n    const input = windowEl.querySelector('[data-variant-input]');\n    const image = windowEl.querySelector('.frq-a26-productWindow__image img');\n    const intention = windowEl.querySelector('[data-variant-intention]');\n    if (input) input.value = button.dataset.variantId;\n    if (intention) intention.textContent = button.dataset.variantIntention || '';\n    if (image && button.dataset.variantImage) {\n      image.removeAttribute('srcset');\n      image.src = button.dataset.variantImage;\n    }\n  };\n\n  const initProductForm = (windowEl) => {\n    const variantButtons = [...windowEl.querySelectorAll('[data-variant-id]')];\n    variantButtons.forEach((button) => button.addEventListener('click', () => updateVariant(windowEl, button)));\n    const form = windowEl.querySelector('[data-a26-product-form]');\n    if (!form) return;\n    form.addEventListener('submit', async (event) => {\n      event.preventDefault();\n      const submit = form.querySelector('.frq-a26-codexCard__action, .frq-a26-productWindow__atc');\n      const label = form.querySelector('[data-atc-label]');\n      const feedback = form.querySelector('[data-atc-feedback]');\n      const original = label ? label.textContent : '';\n      if (submit) submit.disabled = true;\n      if (label) label.textContent = '\u52A0\u5165\u4E2D';\n      if (feedback) feedback.textContent = '';\n      try {\n        const root = window.Shopify && window.Shopify.routes ? window.Shopify.routes.root : '/';\n        const response = await fetch(root + 'cart/add.js', { method: 'POST', headers: { Accept: 'application/json' }, body: new FormData(form) });\n        if (!response.ok) throw new Error('add failed');\n        if (label) label.textContent = '\u5DF2\u52A0\u5165\u8CFC\u7269\u888B';\n        if (feedback) feedback.textContent = '\u9019\u4EF6\u5DF2\u653E\u9032\u8CFC\u7269\u888B\u3002';\n        document.documentElement.dispatchEvent(new CustomEvent('cart:refresh:opend', { bubbles: true }));\n        setTimeout(() => { if (label) label.textContent = original; }, 2200);\n      } catch (error) {\n        if (label) label.textContent = original;\n        if (feedback) feedback.textContent = '\u76EE\u524D\u7121\u6CD5\u52A0\u5165\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66\u3002';\n      } finally {\n        if (submit) submit.disabled = false;\n      }\n    });\n  };\n\n  const initCodex = (section) => {\n    if (!section || section.dataset.a26Ready === 'true') return;\n    section.dataset.a26Ready = 'true';\n    const choices = [...section.querySelectorAll('[data-codex-choice]')];\n    const panels = [...section.querySelectorAll('[data-codex-panel]')];\n    const result = section.querySelector('[data-codex-result]');\n\n    const activateChoice = (choice, scrollToResult = false) => {\n      if (!choice) return;\n      choices.forEach((button) => {\n        const selected = button === choice;\n        button.classList.toggle('is-selected', selected);\n        button.setAttribute('aria-pressed', String(selected));\n      });\n      const token = (choice.dataset.variantToken || '').toLowerCase();\n      panels.forEach((panel) => { panel.hidden = panel.dataset.codexPanel !== token; });\n      section.classList.add('has-result');\n\n      if (scrollToResult && result && window.matchMedia('(max-width: 749px)').matches) {\n        requestAnimationFrame(() => {\n          const rect = result.getBoundingClientRect();\n          if (rect.top > window.innerHeight * 0.52 || rect.bottom > window.innerHeight) {\n            const reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n            window.scrollTo({ top: window.scrollY + rect.top - 18, behavior: reduced ? 'auto' : 'smooth' });\n          }\n        });\n      }\n    };\n\n    choices.forEach((choice) => {\n      choice.addEventListener('click', () => activateChoice(choice, true));\n    });\n    activateChoice(choices.find((choice) => choice.classList.contains('is-selected')) || choices[0]);\n    panels.forEach((panel) => panel.querySelectorAll('.frq-a26-codexCard').forEach(initProductForm));\n  };\n\n  const initArchive = (section) => {\n    if (!section || section.dataset.a26Ready === 'true') return;\n    section.dataset.a26Ready = 'true';\n    const viewport = section.querySelector('[data-archive-viewport]');\n    const prev = section.querySelector('[data-archive-prev]');\n    const next = section.querySelector('[data-archive-next]');\n    if (!viewport) return;\n    const move = (direction) => viewport.scrollBy({ left: viewport.clientWidth * .72 * direction, behavior: 'smooth' });\n    if (prev) prev.addEventListener('click', () => move(-1));\n    if (next) next.addEventListener('click', () => move(1));\n  };\n\n  const initInner = (section) => {\n    if (!section || section.dataset.a26Ready === 'true') return;\n    section.dataset.a26Ready = 'true';\n    const tabs = [...section.querySelectorAll('[data-inner-tab]')];\n    const panels = [...section.querySelectorAll('[data-inner-panel]')];\n    const activate = (key, focus = false) => {\n      tabs.forEach((tab) => {\n        const active = tab.dataset.innerTab === key;\n        tab.setAttribute('aria-selected', String(active));\n        tab.tabIndex = active ? 0 : -1;\n        if (active && focus) tab.focus();\n      });\n      panels.forEach((panel) => { panel.hidden = panel.dataset.innerPanel !== key; });\n    };\n    tabs.forEach((tab, index) => {\n      tab.addEventListener('click', () => activate(tab.dataset.innerTab));\n      tab.addEventListener('keydown', (event) => {\n        if (!['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(event.key)) return;\n        event.preventDefault();\n        const delta = ['ArrowRight', 'ArrowDown'].includes(event.key) ? 1 : -1;\n        const next = (index + delta + tabs.length) % tabs.length;\n        activate(tabs[next].dataset.innerTab, true);\n      });\n    });\n    if (tabs[0]) activate(tabs[0].dataset.innerTab);\n  };\n\n  const init = (scope = document) => {\n    if (document.querySelector('[data-frq-a26-root]')) document.body.classList.add('frq-a26-page');\n    scope.querySelectorAll('[data-frq-a26-codex]').forEach(initCodex);\n    scope.querySelectorAll('[data-frq-a26-archive]').forEach(initArchive);\n    scope.querySelectorAll('[data-frq-a26-inner]').forEach(initInner);\n  };\n  const boot = () => { init(); initScrollScenes(); };\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot, { once: true }); else boot();\n  document.addEventListener('shopify:section:load', (event) => init(event.target));\n})();\n"],
  "mappings": "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",
  "names": ["active"]
}
