{
  "version": 3,
  "sources": ["/cdn/shop/t/1/assets/ipax-steam.js?ipax=75"],
  "sourcesContent": ["class IpaxSteamProduct {\n  static hlsLoadPromise = null;\n\n  static loadHlsScript(src) {\n    if (window.Hls) return Promise.resolve();\n    if (IpaxSteamProduct.hlsLoadPromise) return IpaxSteamProduct.hlsLoadPromise;\n    if (!src) return Promise.resolve();\n\n    IpaxSteamProduct.hlsLoadPromise = new Promise((resolve, reject) => {\n      const script = document.createElement('script');\n      script.src = src;\n      script.defer = true;\n      script.onload = () => resolve();\n      script.onerror = () => {\n        IpaxSteamProduct.hlsLoadPromise = null;\n        reject(new Error('Falha ao carregar HLS'));\n      };\n      document.head.appendChild(script);\n    });\n\n    return IpaxSteamProduct.hlsLoadPromise;\n  }\n\n  static async fetchWithTimeout(url, ms = 12000) {\n    const controller = new AbortController();\n    const timer = window.setTimeout(() => controller.abort(), ms);\n    try {\n      return await fetch(url, { signal: controller.signal });\n    } finally {\n      window.clearTimeout(timer);\n    }\n  }\n\n  constructor(root) {\n    this.root = root;\n    this.platform = root.dataset.storePlatform || '';\n    this.productTitle = root.dataset.productTitle || '';\n    this.showPsnNote = root.dataset.showPsnNote === 'true';\n    this.appId = root.dataset.steamAppId?.trim() || '';\n    this.psProductId = root.dataset.psProductId?.trim() || '';\n    this.apiBase = (root.dataset.steamApi || '').replace(/\\/$/, '');\n    this.psApiBase = (root.dataset.psApi || '').replace(/\\/$/, '');\n    this.storeHint = root.dataset.storeHint || root.dataset.steamHint || '';\n    this.mainImage = root.querySelector('#ipax-main-image');\n    this.mainVideo = root.querySelector('#ipax-main-video');\n    this.mainPlaceholder = root.querySelector('#ipax-main-placeholder');\n    this.thumbs = root.querySelector('#ipax-thumbs');\n    this.heroMedia = root.querySelector('#ipax-hero-media');\n    this.coverImage = root.querySelector('#ipax-cover-image');\n    this.buyCard = root.querySelector('.ipax-product__buy-card');\n    this.sidebarStack = root.querySelector('.ipax-product__sidebar-stack');\n    this.description = root.querySelector('#ipax-steam-description');\n    this.rating = root.querySelector('#ipax-steam-rating');\n    this.ratingText = root.querySelector('#ipax-rating-text');\n    this.genreTags = root.querySelector('#ipax-genre-tags');\n    this.modeTags = root.querySelector('#ipax-mode-tags');\n    this.modesBlock = root.querySelector('#ipax-modes-block');\n    this.modesPsnNote = root.querySelector('#ipax-modes-psn-note');\n    this.bg = document.getElementById('ipax-product-bg');\n    this.aboutToggle = root.querySelector('[data-ipax-about-toggle]');\n    this.aboutSection = root.querySelector('.ipax-product__about');\n    this.aboutWrap = root.querySelector('.ipax-product__about-wrap');\n    this.metaBox = root.querySelector('.ipax-product__meta-box');\n    this.aboutMoreLabel = root.dataset.aboutMore || 'Ver mais';\n    this.aboutLessLabel = root.dataset.aboutLess || 'Ver menos';\n    this.hlsSrc = root.dataset.hlsSrc || '';\n    this.hls = null;\n    this.currentIndex = 0;\n    this.images = [];\n    this.isGiftProduct = root.dataset.isGiftProduct === 'true';\n  }\n\n  static extractAppId(input) {\n    if (!input) return '';\n    const text = String(input).trim();\n    const stripped = text.replace(/<[^>]*>/g, ' ').replace(/\\s+/g, ' ').trim();\n\n    const urlMatch = text.match(/store\\.steampowered\\.com\\/app\\/(\\d+)/i);\n    if (urlMatch) return urlMatch[1];\n\n    const steamMatch = text.match(/steam:\\/\\/(?:app\\/)?(\\d+)/i);\n    if (steamMatch) return steamMatch[1];\n\n    const commentMatch = text.match(/<!--\\s*steam:\\s*(\\d+)\\s*-->/i);\n    if (commentMatch) return commentMatch[1];\n\n    const tagMatch = stripped.match(/steam:\\s*(\\d+)/i);\n    if (tagMatch) return tagMatch[1];\n\n    const onlyDigits = stripped.replace(/\\s/g, '');\n    if (/^\\d{4,10}$/.test(onlyDigits)) return onlyDigits;\n\n    return '';\n  }\n\n  static extractPsProductId(input) {\n    if (!input) return '';\n    const text = String(input).trim();\n    const stripped = text.replace(/<[^>]*>/g, ' ').replace(/\\s+/g, ' ').trim();\n\n    const urlMatch = text.match(/store\\.playstation\\.com\\/[^/]+\\/product\\/([A-Z0-9_-]+)/i);\n    if (urlMatch) return urlMatch[1];\n\n    const conceptMatch = text.match(/store\\.playstation\\.com\\/[^/]+\\/concept\\/(\\d+)/i);\n    if (conceptMatch) return conceptMatch[1];\n\n    const commentMatch = text.match(/<!--\\s*ps:\\s*([A-Z0-9_-]+)\\s*-->/i);\n    if (commentMatch) return commentMatch[1];\n\n    const tagMatch = stripped.match(/ps:\\s*([A-Z0-9_-]+)/i);\n    if (tagMatch) return tagMatch[1];\n\n    const compact = stripped.replace(/\\s/g, '');\n    if (/^[A-Z0-9][A-Z0-9_-]{10,}$/i.test(compact)) return compact;\n\n    return '';\n  }\n\n  static isSteamNumericHint(text) {\n    const plain = String(text || '')\n      .replace(/<[^>]*>/g, ' ')\n      .replace(/\\s+/g, ' ')\n      .trim()\n      .replace(/[\\s.-]/g, '');\n    return /^\\d{4,10}$/.test(plain);\n  }\n\n  resolvePlatform() {\n    const hint = this.storeHint || '';\n    const descRaw = this.getDescriptionRaw();\n    const combined = `${hint}\\n${descRaw}`;\n    const title = (\n      this.productTitle ||\n      this.root.querySelector('.ipax-product__title')?.textContent ||\n      ''\n    ).toLowerCase();\n    const titleIsSteam = title.includes('steam');\n    const titleIsPs = /\\bps4\\b|\\bps5\\b|playstation|\\bpsn\\b/.test(title);\n\n    if (titleIsPs && !titleIsSteam) return 'playstation';\n    if (titleIsSteam && !titleIsPs) return 'steam';\n    if (this.platform === 'playstation' && !titleIsSteam) return 'playstation';\n\n    if (IpaxSteamProduct.isSteamNumericHint(descRaw) || IpaxSteamProduct.isSteamNumericHint(hint)) {\n      if (!titleIsPs) return 'steam';\n    }\n\n    if (/store\\.playstation\\.com|playstation\\.com\\/[^/]+\\/games\\//i.test(combined)) return 'playstation';\n    if (/steampowered\\.com|steam:\\/\\//i.test(combined)) {\n      if (!titleIsPs) return 'steam';\n    }\n\n    const psFromHint = IpaxSteamProduct.extractPsProductId(combined);\n    const steamFromHint = IpaxSteamProduct.extractAppId(combined);\n\n    if (psFromHint && !steamFromHint) return 'playstation';\n    if (steamFromHint && !psFromHint) return 'steam';\n\n    if (this.psProductId && !this.appId) return 'playstation';\n    if (this.appId && !this.psProductId) return 'steam';\n\n    if (this.platform === 'steam') return 'steam';\n    if (this.platform === 'playstation') return 'playstation';\n\n    if (psFromHint) return 'playstation';\n    if (steamFromHint) return 'steam';\n\n    return '';\n  }\n\n  getDescriptionRaw() {\n    const descEl = document.getElementById('ipax-product-desc');\n    if (!descEl) return '';\n\n    try {\n      return JSON.parse(descEl.textContent || '\"\"');\n    } catch {\n      return descEl.textContent || '';\n    }\n  }\n\n  resolveStoreId() {\n    const platform = this.resolvePlatform();\n\n    if (platform === 'playstation') {\n      if (this.psProductId) return this.psProductId;\n      return IpaxSteamProduct.extractPsProductId(`${this.storeHint}\\n${this.getDescriptionRaw()}`);\n    }\n\n    if (this.appId) return this.appId;\n    return IpaxSteamProduct.extractAppId(`${this.storeHint}\\n${this.getDescriptionRaw()}`);\n  }\n\n  resetBuyColLayout() {\n    this.buyCard?.style.removeProperty('min-height');\n    this.buyCard?.style.removeProperty('margin-top');\n    this.buyCard?.style.removeProperty('padding-top');\n    this.buyCard?.classList.remove('is-gallery-synced');\n    this.root.querySelector('.ipax-product__cover')?.style.removeProperty('height');\n    this.root.querySelector('.ipax-product__cover')?.style.removeProperty('min-height');\n    this.root.querySelector('.ipax-product__cover')?.style.removeProperty('max-height');\n  }\n\n  getGiftCoverTargetHeight(buyCard, sidebar) {\n    const grid = this.root.querySelector('.ipax-product__grid');\n    const rowGap = grid ? parseFloat(getComputedStyle(grid).rowGap) || 0 : 16;\n    return Math.round(buyCard.offsetHeight + rowGap + sidebar.offsetHeight);\n  }\n\n  bindCoverHeightSync() {\n    if (this.coverHeightBound) return;\n    this.coverHeightBound = true;\n\n    const schedule = () => {\n      window.clearTimeout(this.coverHeightTimer);\n      this.coverHeightTimer = window.setTimeout(() => this.syncCoverHeight(), 150);\n    };\n\n    window.addEventListener('resize', schedule, { passive: true });\n\n    if (typeof ResizeObserver !== 'undefined') {\n      this.coverResizeObserver = new ResizeObserver(schedule);\n      if (this.buyCard) this.coverResizeObserver.observe(this.buyCard);\n      if (this.sidebarStack && !this.isGiftProduct) {\n        this.coverResizeObserver.observe(this.sidebarStack);\n      }\n      const contentLeft = this.root.querySelector('.ipax-product__content-left');\n      if (contentLeft) this.coverResizeObserver.observe(contentLeft);\n    }\n\n    const coverImg = this.coverImage;\n    if (coverImg && !coverImg.complete) {\n      coverImg.addEventListener('load', schedule, { once: true });\n    }\n  }\n\n  syncCoverHeight() {\n    const cover = this.root.querySelector('.ipax-product__cover');\n    const buyCard = this.buyCard || this.root.querySelector('.ipax-product__buy-card');\n    if (!cover || !buyCard) return;\n\n    if (window.matchMedia('(max-width: 990px)').matches) {\n      cover.style.removeProperty('height');\n      cover.style.removeProperty('width');\n      cover.style.removeProperty('min-height');\n      cover.style.removeProperty('max-height');\n      cover.style.removeProperty('min-width');\n      cover.style.removeProperty('max-width');\n      cover.style.removeProperty('aspect-ratio');\n      this.root.style.removeProperty('--ipax-cover-size');\n      this.root.querySelector('.ipax-product__content-left')?.style.removeProperty('width');\n      this.root.querySelector('.ipax-product__content-left')?.style.removeProperty('max-width');\n      return;\n    }\n\n    const height = Math.round(buyCard.getBoundingClientRect().height);\n    if (height > 0) {\n      let targetHeight = height;\n\n      if (this.isGiftProduct) {\n        const sidebar = this.sidebarStack || this.root.querySelector('.ipax-product__sidebar-stack');\n\n        if (sidebar) {\n          const combined = this.getGiftCoverTargetHeight(buyCard, sidebar);\n          if (combined > 0) targetHeight = combined;\n        }\n      }\n\n      const heroScale = this.isGiftProduct\n        ? 1\n        : parseFloat(getComputedStyle(this.root).getPropertyValue('--ipax-hero-scale')) || 1;\n      const coverSize = Math.round(targetHeight * heroScale);\n\n      if (this.isGiftProduct && this._lastGiftCoverSize === coverSize) return;\n      if (this.isGiftProduct) this._lastGiftCoverSize = coverSize;\n      if (!this.isGiftProduct && this._lastCoverSize === coverSize) return;\n      if (!this.isGiftProduct) this._lastCoverSize = coverSize;\n\n      const coverRatio = 1198 / 1494;\n      const coverHeight = coverSize;\n      const coverWidth = Math.round(coverHeight * coverRatio);\n\n      cover.style.height = `${coverHeight}px`;\n      cover.style.width = `${coverWidth}px`;\n      cover.style.minHeight = `${coverHeight}px`;\n      cover.style.maxHeight = `${coverHeight}px`;\n      cover.style.minWidth = `${coverWidth}px`;\n      cover.style.maxWidth = `${coverWidth}px`;\n      cover.style.aspectRatio = '1198 / 1494';\n      this.root.style.setProperty('--ipax-cover-size', `${coverWidth}px`);\n    }\n  }\n\n  finalizeLayout() {\n    this.bindCoverHeightSync();\n    requestAnimationFrame(() => this.syncCoverHeight());\n    window.setTimeout(() => this.syncCoverHeight(), 250);\n  }\n\n  async init() {\n    this.resetBuyColLayout();\n    this.platform = this.resolvePlatform();\n    const storeId = this.resolveStoreId();\n\n    if (this.platform === 'playstation') {\n      this.psProductId = storeId;\n    } else {\n      this.appId = storeId;\n    }\n\n    this.finalizeLayout();\n\n    if (!storeId) {\n      const hint = this.getDescriptionRaw();\n      const hasPsLink = /playstation\\.com/i.test(hint);\n      if (!(this.platform === 'playstation' && hasPsLink)) {\n        this.setupAboutToggle();\n        return;\n      }\n    }\n\n    const apiBase = this.platform === 'playstation' ? this.psApiBase : this.apiBase;\n    if (!apiBase) {\n      this.showError(\n        this.platform === 'playstation'\n          ? 'API PlayStation n\u00E3o configurada no tema.'\n          : 'API Steam n\u00E3o configurada no tema.'\n      );\n      this.setupAboutToggle();\n      return;\n    }\n\n    if (this.rating && this.platform !== 'playstation') this.rating.hidden = false;\n    this.showLoading();\n\n    try {\n      const data = await this.fetchStoreData();\n      await this.applyData(data);\n    } catch (error) {\n      console.warn('[iPax Store]', error.message);\n      this.showError(\n        error.name === 'AbortError'\n          ? 'A API demorou para responder. Recarregue a p\u00E1gina ou tente novamente em instantes.'\n          : this.platform === 'playstation'\n            ? 'N\u00E3o foi poss\u00EDvel carregar da PlayStation Store. Confirme que a API est\u00E1 rodando e que o link est\u00E1 correto.'\n            : 'N\u00E3o foi poss\u00EDvel carregar da Steam. Confirme que a API est\u00E1 rodando e que o ID est\u00E1 correto.'\n      );\n      this.setupAboutToggle();\n    }\n\n    this.finalizeLayout();\n  }\n\n  showLoading() {\n    if (!this.description) return;\n\n    const storeId = this.platform === 'playstation' ? this.psProductId : this.appId;\n    const fromDesc =\n      this.storeHint?.trim() === storeId ||\n      (this.platform === 'playstation'\n        ? /store\\.playstation\\.com|playstation\\.com/i.test(this.storeHint || '')\n        : /steampowered|steam:\\d|^\\d{4,10}$/.test(this.storeHint || ''));\n\n    if (fromDesc || storeId) {\n      const label = this.platform === 'playstation' ? 'PlayStation Store' : 'Steam';\n      this.description.innerHTML = `<p>Carregando informa\u00E7\u00F5es da ${label}...</p>`;\n    }\n  }\n\n  showError(message) {\n    if (this.description) {\n      this.description.innerHTML = `<p class=\"ipax-product__steam-error\">${message}</p>`;\n    }\n  }\n\n  async fetchStoreData() {\n    const apiBase = this.platform === 'playstation' ? this.psApiBase : this.apiBase;\n    const storeId = this.platform === 'playstation' ? this.psProductId : this.appId;\n    const hint = `${this.storeHint || ''}\\n${this.getDescriptionRaw()}`.trim();\n    const query = this.platform === 'playstation' ? 'locale=pt-br' : 'lang=brazilian&cc=br';\n\n    let url;\n    if (this.platform === 'playstation') {\n      const input = /playstation\\.com/i.test(hint) ? hint : storeId || hint;\n      const useResolve = !storeId || /playstation\\.com/i.test(hint);\n      url = useResolve\n        ? `${apiBase}/resolve?input=${encodeURIComponent(input)}&${query}`\n        : `${apiBase}/${encodeURIComponent(storeId)}?${query}`;\n    } else {\n      url = `${apiBase}/${storeId}?${query}`;\n    }\n\n    const response = await IpaxSteamProduct.fetchWithTimeout(\n      url,\n      this.platform === 'playstation' ? 25000 : 12000\n    );\n    if (!response.ok) {\n      throw new Error(\n        this.platform === 'playstation'\n          ? 'N\u00E3o foi poss\u00EDvel carregar dados da PlayStation Store'\n          : 'N\u00E3o foi poss\u00EDvel carregar dados da Steam'\n      );\n    }\n    return response.json();\n  }\n\n  async applyData(data) {\n    if (this.description) {\n      const aboutHtml =\n        data.description ||\n        (data.shortDescription ? `<p>${String(data.shortDescription).replace(/<[^>]*>/g, '')}</p>` : '');\n\n      if (aboutHtml) {\n        this.description.innerHTML = aboutHtml;\n      }\n    }\n\n    if (data.metacritic && this.rating && this.ratingText && this.platform !== 'playstation') {\n      this.rating.hidden = false;\n      const score = (data.metacritic / 100) * 5;\n      this.ratingText.textContent = `${score.toFixed(1)}/5 \u00B7 Metacritic ${data.metacritic}`;\n    }\n\n    if (!this.isGiftProduct && data.genres?.length && this.genreTags) {\n      this.genreTags.textContent = data.genres.join(' \u00B7 ');\n      this.cacheGenresForFilter([\n        ...data.genres,\n        ...(Array.isArray(data.playModes) ? data.playModes : []),\n        ...(Array.isArray(data.categories) ? data.categories : []),\n      ]);\n    }\n\n    if (!this.isGiftProduct && data.categories?.length && this.modeTags && this.modesBlock) {\n      this.modesBlock.hidden = false;\n      const modeHeading = this.root.querySelector('#ipax-modes-title');\n      if (modeHeading) {\n        modeHeading.textContent = 'Modo de jogo';\n      }\n      this.modeTags.textContent = data.categories.slice(0, 6).join(' \u00B7 ');\n      if (this.modesPsnNote) {\n        this.modesPsnNote.hidden = !this.showPsnNote;\n      }\n    } else if (this.modesBlock) {\n      this.modesBlock.hidden = true;\n      if (this.modesPsnNote) this.modesPsnNote.hidden = true;\n    }\n\n    this.images = IpaxSteamProduct.buildGalleryItems(data, {\n      includeVideos: this.platform !== 'playstation',\n    });\n\n    this.updateCoverImage(data);\n\n    if (this.platform !== 'playstation' && this.bg) {\n      if (data.background) {\n        this.bg.style.backgroundImage = `url(\"${data.background}\")`;\n        this.bg.classList.add('is-loaded');\n      } else if (data.headerImage) {\n        this.bg.style.backgroundImage = `url(\"${data.headerImage}\")`;\n        this.bg.classList.add('is-loaded');\n      }\n    }\n\n    if (!this.isGiftProduct && this.images.length) {\n      this.renderGallery();\n    }\n\n    this.setupAboutToggle();\n  }\n\n  cacheGenresForFilter(genres) {\n    const productId = this.root.dataset.productId;\n    if (!productId || !Array.isArray(genres) || !genres.length) return;\n\n    const map = {\n      corrida: 'corridas',\n      corridas: 'corridas',\n      racing: 'corridas',\n      dire\u00E7\u00E3o: 'corridas',\n      direcao: 'corridas',\n      driving: 'corridas',\n      a\u00E7\u00E3o: 'acao',\n      acao: 'acao',\n      action: 'acao',\n      aventura: 'aventura',\n      adventure: 'aventura',\n      rpg: 'rpg',\n      esportes: 'esportes',\n      sports: 'esportes',\n      terror: 'terror',\n      horror: 'terror',\n      tiro: 'tiro',\n      shooter: 'tiro',\n      luta: 'luta',\n      fighting: 'luta',\n      estrat\u00E9gia: 'estrategia',\n      estrategia: 'estrategia',\n      strategy: 'estrategia',\n      simula\u00E7\u00E3o: 'simulacao',\n      simulacao: 'simulacao',\n      simulation: 'simulacao',\n      indie: 'indie',\n      fam\u00EDlia: 'familia',\n      familia: 'familia',\n      family: 'familia',\n      multiplayer: 'multiplayer',\n      multijogador: 'multiplayer',\n      'multi-player': 'multiplayer',\n      'multi player': 'multiplayer',\n      coop: 'co-op',\n      'co-op': 'co-op',\n      'co op': 'co-op',\n      cooperativo: 'co-op',\n      cooperative: 'co-op',\n      'online co-op': 'co-op',\n      'local co-op': 'co-op',\n      'cooperativo online': 'co-op',\n      'cooperativo local': 'co-op',\n    };\n\n    const slugs = new Set();\n\n    for (const genre of genres) {\n      const raw = String(genre || '').trim();\n      if (!raw) continue;\n\n      const fullKey = raw.toLowerCase();\n      if (map[fullKey]) {\n        slugs.add(map[fullKey]);\n        continue;\n      }\n\n      raw.split(/\\s*[\\/,\u00B7|&]\\s*/).forEach((part) => {\n        const key = part.trim().toLowerCase();\n        if (!key) return;\n        if (map[key]) {\n          slugs.add(map[key]);\n          return;\n        }\n        for (const [mapKey, mapSlug] of Object.entries(map)) {\n          if (key.includes(mapKey)) slugs.add(mapSlug);\n        }\n      });\n    }\n\n    if (slugs.size) {\n      sessionStorage.setItem(`ipax-genres-v5-${productId}`, [...slugs].join(','));\n    }\n  }\n\n  waitForHls(maxMs = 1500) {\n    return new Promise((resolve) => {\n      if (window.Hls || !this.images.some((item) => item.stream === 'hls')) {\n        resolve();\n        return;\n      }\n      IpaxSteamProduct.loadHlsScript(this.hlsSrc)\n        .then(resolve)\n        .catch(resolve);\n      window.setTimeout(resolve, maxMs);\n    });\n  }\n\n  setupAboutToggle() {\n    if (!this.description || !this.aboutToggle) return;\n\n    const collapsedClass = 'ipax-product__about-text--collapsed';\n    const expandedClass = 'ipax-product__about-text--expanded';\n\n    if (this.isGiftProduct) {\n      this.description.classList.remove(collapsedClass);\n      this.description.classList.add(expandedClass);\n      this.aboutToggle.hidden = true;\n      this.aboutToggle.setAttribute('aria-expanded', 'true');\n      this.aboutSection?.classList.remove('is-height-synced');\n      this.aboutSection?.style.removeProperty('max-height');\n      this.aboutSection?.style.removeProperty('min-height');\n      return;\n    }\n\n    this.description.classList.remove(expandedClass);\n    this.description.classList.add(collapsedClass);\n    this.aboutToggle.hidden = true;\n    this.aboutToggle.setAttribute('aria-expanded', 'false');\n    this.aboutToggle.textContent = this.aboutMoreLabel;\n\n    if (this.aboutToggle.dataset.bound === 'true') {\n      requestAnimationFrame(() => this.refreshAboutLayout());\n      return;\n    }\n\n    this.aboutToggle.dataset.bound = 'true';\n    this.aboutToggle.addEventListener('click', () => {\n      const isExpanded = this.description.classList.toggle(expandedClass);\n      this.description.classList.toggle(collapsedClass, !isExpanded);\n      this.aboutToggle.textContent = isExpanded ? this.aboutLessLabel : this.aboutMoreLabel;\n      this.aboutToggle.setAttribute('aria-expanded', String(isExpanded));\n      this.refreshAboutLayout();\n    });\n\n    this.bindAboutHeightSync();\n    requestAnimationFrame(() => this.refreshAboutLayout());\n    window.setTimeout(() => this.refreshAboutLayout(), 400);\n  }\n\n  refreshAboutLayout() {\n    this.syncAboutHeight();\n    this.syncCoverHeight();\n    this.updateAboutToggleState();\n  }\n\n  bindAboutHeightSync() {\n    if (this.aboutHeightBound) return;\n    this.aboutHeightBound = true;\n\n    let resizeTimer;\n    const scheduleSync = () => {\n      window.clearTimeout(resizeTimer);\n      resizeTimer = window.setTimeout(() => this.refreshAboutLayout(), 150);\n    };\n\n    window.addEventListener('resize', scheduleSync, { passive: true });\n\n    if (typeof ResizeObserver !== 'undefined') {\n      this.aboutResizeObserver = new ResizeObserver(scheduleSync);\n      [this.sidebarStack, this.metaBox, this.aboutSection, this.heroMedia, this.thumbs, this.description, this.root.querySelector('.ipax-product__gallery-block'), this.root.querySelector('.ipax-product__content-left')].forEach((el) => {\n        if (el) this.aboutResizeObserver.observe(el);\n      });\n    }\n  }\n\n  syncAboutHeight() {\n    if (!this.aboutSection || this.isGiftProduct) return;\n\n    const mobile = window.matchMedia('(max-width: 990px)').matches;\n    const isExpanded = this.description?.classList.contains('ipax-product__about-text--expanded');\n\n    if (mobile || isExpanded) {\n      this.aboutSection.style.removeProperty('max-height');\n      this.aboutSection.style.removeProperty('min-height');\n      this.aboutSection.classList.remove('is-height-synced');\n      return;\n    }\n\n    if (this.root.querySelector('.ipax-product__content-left')) {\n      this.aboutSection.style.removeProperty('max-height');\n      this.aboutSection.style.removeProperty('min-height');\n      this.aboutSection.classList.remove('is-height-synced');\n      return;\n    }\n\n    if (!this.sidebarStack) return;\n\n    const aboutTitle = this.aboutSection.querySelector('.ipax-product__about-title');\n    const titleBlock = aboutTitle ? aboutTitle.offsetHeight + 9 : 0;\n    const sidebarHeight = this.sidebarStack.offsetHeight;\n    const height = Math.round(sidebarHeight + titleBlock);\n\n    if (height > 80) {\n      this.aboutSection.style.maxHeight = `${height}px`;\n      this.aboutSection.style.removeProperty('min-height');\n      this.aboutSection.classList.add('is-height-synced');\n    } else {\n      this.aboutSection.style.removeProperty('max-height');\n      this.aboutSection.style.removeProperty('min-height');\n      this.aboutSection.classList.remove('is-height-synced');\n    }\n  }\n\n  updateAboutToggleState() {\n    if (!this.description || !this.aboutToggle || this.isGiftProduct) return;\n\n    const collapsedClass = 'ipax-product__about-text--collapsed';\n    const expandedClass = 'ipax-product__about-text--expanded';\n    const isExpanded = this.description.classList.contains(expandedClass);\n    const isSynced = this.aboutSection?.classList.contains('is-height-synced');\n    const isDesktop = window.matchMedia('(min-width: 991px)').matches;\n\n    if (isExpanded) {\n      this.aboutToggle.hidden = false;\n      return;\n    }\n\n    if (isDesktop && isSynced) {\n      this.description.classList.add(collapsedClass);\n      const hasOverflow = this.description.scrollHeight > this.description.clientHeight + 2;\n      this.aboutToggle.hidden = !hasOverflow;\n      if (hasOverflow) {\n        this.aboutToggle.textContent = this.aboutMoreLabel;\n        this.aboutToggle.setAttribute('aria-expanded', 'false');\n      }\n    } else {\n      this.description.classList.add(collapsedClass);\n      const hasOverflow = this.description.scrollHeight > this.description.clientHeight + 2;\n\n      if (hasOverflow) {\n        this.aboutToggle.hidden = false;\n        this.aboutToggle.textContent = this.aboutMoreLabel;\n        this.aboutToggle.setAttribute('aria-expanded', 'false');\n      } else {\n        this.aboutToggle.hidden = true;\n        this.description.classList.remove(collapsedClass);\n      }\n    }\n\n    this.description.querySelectorAll('img').forEach((img) => {\n      if (!img.complete) {\n        img.addEventListener('load', () => this.refreshAboutLayout(), { once: true });\n      }\n    });\n  }\n\n  static isCoverGalleryShot(shot, coverUrls) {\n    const url = shot?.full || shot?.thumbnail || '';\n    if (!url) return false;\n    if (coverUrls.has(url)) return true;\n    if (shot?.isCover) return true;\n    return /GAMEHUB_COVER_ART|FOUR_BY_THREE_BANNER|EDITION_KEY_ART|PORTRAIT|BOX_ART|COVER/i.test(shot?.role || '');\n  }\n\n  static dedupeGalleryItems(items) {\n    const seen = new Set();\n    return items.filter((item) => {\n      const key = item.src || item.thumb;\n      if (!key || seen.has(key)) return false;\n      seen.add(key);\n      return true;\n    });\n  }\n\n  static buildGalleryItems(data, options = {}) {\n    const items = [];\n    const includeVideos = options.includeVideos !== false;\n    const coverUrls = new Set(\n      [data.coverImage, data.headerImage, ...(data.coverGallery || []).map((shot) => shot.full || shot.thumbnail)].filter(\n        Boolean\n      )\n    );\n    const fallbackThumb =\n      data.screenshots?.find((shot) => !IpaxSteamProduct.isCoverGalleryShot(shot, coverUrls))?.thumbnail ||\n      data.screenshots?.[0]?.thumbnail ||\n      data.screenshots?.[0]?.full ||\n      data.headerImage ||\n      '';\n\n    if (includeVideos) {\n    (data.movies || []).forEach((movie) => {\n      const src = movie.mp4 || movie.webm || movie.hls;\n      if (!src) return;\n\n      let stream = 'progressive';\n      if (!movie.mp4 && !movie.webm && movie.hls) stream = 'hls';\n      else if (!movie.mp4 && movie.webm) stream = 'webm';\n\n      items.push({\n        type: 'video',\n        src,\n        stream,\n        thumb: movie.thumbnail || fallbackThumb,\n        label: movie.name || 'V\u00EDdeo',\n      });\n    });\n    }\n\n    const regularShots = [];\n    const coverShots = [];\n\n    (data.screenshots || []).forEach((shot) => {\n      const item = {\n        type: 'image',\n        src: shot.full,\n        thumb: shot.thumbnail || shot.full,\n      };\n\n      if (IpaxSteamProduct.isCoverGalleryShot(shot, coverUrls)) coverShots.push(item);\n      else regularShots.push(item);\n    });\n\n    (data.coverGallery || []).forEach((shot) => {\n      coverShots.push({\n        type: 'image',\n        src: shot.full,\n        thumb: shot.thumbnail || shot.full,\n      });\n    });\n\n    if (data.headerImage && !coverUrls.has(data.headerImage)) {\n      coverShots.push({\n        type: 'image',\n        src: data.headerImage,\n        thumb: data.headerImage,\n      });\n    }\n\n    return IpaxSteamProduct.dedupeGalleryItems([...items, ...regularShots, ...coverShots]);\n  }\n\n  static getCoverImageUrl(data, platform, storeId) {\n    if (data?.coverImage) return data.coverImage;\n\n    if (platform === 'playstation') {\n      return data?.headerImage || '';\n    }\n\n    if (platform === 'steam' && storeId) {\n      return `https://shared.cloudflare.steamstatic.com/store_item_assets/steam/apps/${storeId}/library_600x900_2x.jpg`;\n    }\n\n    return data?.screenshots?.[0]?.thumbnail || data?.screenshots?.[0]?.full || '';\n  }\n\n  updateCoverImage(data) {\n    if (!this.coverImage) return;\n\n    if (this.coverImage.dataset.ipaxShopifyCover === 'true' && this.coverImage.getAttribute('src')) {\n      return;\n    }\n\n    const storeId = this.platform === 'playstation' ? this.psProductId : this.appId;\n    const url = IpaxSteamProduct.getCoverImageUrl(data, this.platform, storeId);\n\n    if (!url) return;\n\n    this.coverImage.removeAttribute('srcset');\n    this.coverImage.removeAttribute('sizes');\n    this.coverImage.src = url;\n    this.coverImage.alt = data?.name || this.coverImage.alt || '';\n    this.coverImage.removeAttribute('hidden');\n  }\n\n  hidePlaceholder() {\n    this.mainPlaceholder?.setAttribute('hidden', '');\n  }\n\n  showPoster(src) {\n    if (!this.mainImage || !src) return;\n    this.mainImage.removeAttribute('srcset');\n    this.mainImage.removeAttribute('sizes');\n    this.mainImage.src = src;\n    this.mainImage.removeAttribute('hidden');\n    this.hidePlaceholder();\n  }\n\n  tryPlayMuted() {\n    if (!this.mainVideo) return;\n    this.mainVideo.muted = true;\n    const playPromise = this.mainVideo.play();\n    if (playPromise?.catch) {\n      playPromise.catch(() => {\n        const item = this.images[this.currentIndex];\n        if (item?.thumb) this.showPoster(item.thumb);\n      });\n    }\n  }\n\n  async playVideoItem(item) {\n    if (!this.mainVideo) return;\n\n    this.destroyHls();\n    this.mainVideo.pause();\n    this.mainVideo.removeAttribute('src');\n    this.mainVideo.muted = true;\n    this.mainVideo.poster = item.thumb || '';\n\n    if (item.thumb) this.showPoster(item.thumb);\n\n    const onReady = () => this.tryPlayMuted();\n\n    const onPlaying = () => {\n      this.mainImage?.setAttribute('hidden', '');\n      this.hidePlaceholder();\n    };\n\n    this.mainVideo.addEventListener('playing', onPlaying, { once: true });\n\n    const onError = () => {\n      if (item.thumb) this.showPoster(item.thumb);\n      this.mainVideo?.setAttribute('hidden', '');\n    };\n\n    if (item.stream === 'hls') {\n      if (this.mainVideo.canPlayType('application/vnd.apple.mpegurl')) {\n        this.mainVideo.src = item.src;\n        this.mainVideo.addEventListener('loadeddata', onReady, { once: true });\n        this.mainVideo.addEventListener('error', onError, { once: true });\n        this.mainVideo.load();\n        return;\n      }\n\n      try {\n        await IpaxSteamProduct.loadHlsScript(this.hlsSrc);\n      } catch (e) {\n        console.warn('[iPax Store]', e.message);\n        if (item.thumb) this.showPoster(item.thumb);\n        return;\n      }\n\n      if (window.Hls?.isSupported()) {\n        this.hls = new Hls({ enableWorker: true });\n        this.hls.loadSource(item.src);\n        this.hls.attachMedia(this.mainVideo);\n        this.hls.on(Hls.Events.MANIFEST_PARSED, onReady);\n        this.hls.on(Hls.Events.ERROR, onError);\n        return;\n      }\n    }\n\n    this.mainVideo.src = item.src;\n    this.mainVideo.addEventListener('loadeddata', onReady, { once: true });\n    this.mainVideo.addEventListener('error', onError, { once: true });\n    this.mainVideo.load();\n  }\n\n  destroyHls() {\n    if (this.hls) {\n      this.hls.destroy();\n      this.hls = null;\n    }\n  }\n\n  showMediaItem(index) {\n    const item = this.images[index];\n    if (!item) return;\n\n    this.currentIndex = index;\n    this.hidePlaceholder();\n\n    if (item.type === 'video' && this.mainVideo) {\n      this.mainVideo.removeAttribute('hidden');\n      this.playVideoItem(item);\n      return;\n    }\n\n    if (this.mainVideo) {\n      this.mainVideo.pause();\n      this.destroyHls();\n      this.mainVideo.setAttribute('hidden', '');\n      this.mainVideo.removeAttribute('src');\n    }\n\n    if (this.mainImage) {\n      this.mainImage.removeAttribute('srcset');\n      this.mainImage.removeAttribute('sizes');\n      this.mainImage.src = item.src;\n      this.mainImage.removeAttribute('hidden');\n      this.hidePlaceholder();\n    }\n  }\n\n  renderGallery() {\n    if (!this.images.length) return;\n\n    this.hidePlaceholder();\n    this.showMediaItem(0);\n\n    if (!this.thumbs || this.images.length < 2) {\n      requestAnimationFrame(() => this.refreshAboutLayout());\n      return;\n    }\n\n    this.thumbs.hidden = false;\n    this.thumbs.innerHTML = this.images\n      .map(\n        (item, index) => `\n        <button type=\"button\" class=\"ipax-product__thumb ${index === 0 ? 'is-active' : ''} ${item.type === 'video' ? 'ipax-product__thumb--video' : ''}\" data-index=\"${index}\">\n          <img src=\"${item.thumb}\" alt=\"${item.label || `M\u00EDdia ${index + 1}`}\" loading=\"lazy\">\n        </button>`\n      )\n      .join('');\n\n    if (!this.thumbs.dataset.bound) {\n      this.thumbs.dataset.bound = 'true';\n      this.thumbs.addEventListener('click', (event) => {\n        const button = event.target.closest('[data-index]');\n        if (!button) return;\n        const index = Number(button.dataset.index);\n        this.showMediaItem(index);\n        this.thumbs.querySelectorAll('.ipax-product__thumb').forEach((el, i) => {\n          el.classList.toggle('is-active', i === index);\n        });\n      });\n    } else {\n      this.thumbs.querySelectorAll('.ipax-product__thumb').forEach((el, i) => {\n        el.classList.toggle('is-active', i === 0);\n      });\n    }\n\n    requestAnimationFrame(() => this.refreshAboutLayout());\n  }\n}\n\nfunction bootIpaxProductUi() {\n  document.querySelectorAll('[data-ipax-product]').forEach((root) => {\n    if (root.dataset.ipaxSteamBooted === 'true') return;\n    root.dataset.ipaxSteamBooted = 'true';\n    new IpaxSteamProduct(root).init();\n  });\n\n  document.querySelectorAll('[data-ipax-variant-select]').forEach((select) => {\n    if (select.dataset.ipaxVariantBound === 'true') return;\n    select.dataset.ipaxVariantBound = 'true';\n\n    const root = select.closest('[data-ipax-product]');\n    const form = select.form || root?.querySelector('#ipax-product-form') || document.getElementById('ipax-product-form');\n    const buyText = root?.dataset.buyLabel || 'Comprar agora';\n    const selectVariantText = root?.dataset.selectVariantLabel || 'Selecione uma op\u00E7\u00E3o';\n    const fromPriceMode = root?.dataset.pricingFromPrice === 'true';\n\n    // Reconsulta sempre: scripts de terceiros (ex.: Alphazz) podem trocar o bot\u00E3o ap\u00F3s o load.\n    const qs = (selector) =>\n      root?.querySelector(selector) || form?.querySelector(selector) || document.querySelector(selector);\n\n    const setFromPriceVisible = (visible) => {\n      (root || form || document).querySelectorAll('[data-ipax-price-from]').forEach((el) => {\n        el.hidden = !visible;\n      });\n    };\n\n    const syncBuyUi = ({ available, waiting }) => {\n      const buyButton = qs('[data-ipax-buy-button]');\n      const buyLabel = qs('[data-ipax-buy-label]');\n      const buySecure = qs('[data-ipax-buy-secure]');\n\n      if (buyButton) {\n        buyButton.disabled = Boolean(waiting) || !available;\n        // Alphazz \u00E0s vezes for\u00E7a type=button; mantemos submit para o handler do form.\n        if (!buyButton.disabled) buyButton.type = 'submit';\n      }\n      if (buyLabel) {\n        buyLabel.textContent = waiting ? selectVariantText : available ? buyText : 'Esgotado';\n      }\n      if (buySecure) buySecure.hidden = Boolean(waiting) || !available;\n    };\n\n    let variants = [];\n    const variantsEl = document.getElementById('ipax-product-variants');\n    if (variantsEl) {\n      try {\n        variants = JSON.parse(variantsEl.textContent || '[]');\n      } catch {\n        variants = [];\n      }\n    }\n\n    const resolvePsBannerMode = (variant) => {\n      const variantTitle = String(variant?.title || select?.selectedOptions?.[0]?.textContent || '').toLowerCase();\n      const productTitle = String(root?.dataset.productTitle || '').toLowerCase();\n\n      if (variantTitle.includes('ps4') && variantTitle.includes('ps5')) return 'dual';\n      if (variantTitle.includes('ps4')) return 'ps4';\n      if (variantTitle.includes('ps5')) return 'ps5';\n\n      const titleIsPs4Only =\n        (productTitle.includes('m\u00EDdia digital de ps4') ||\n          productTitle.includes('midia digital de ps4') ||\n          productTitle.includes('(ps4)')) &&\n        !productTitle.includes('ps5');\n      const titleIsPs5Only =\n        (productTitle.includes('m\u00EDdia digital de ps5') ||\n          productTitle.includes('midia digital de ps5') ||\n          productTitle.includes('(ps5)')) &&\n        !productTitle.includes('ps4');\n\n      if (titleIsPs4Only) return 'ps4';\n      if (titleIsPs5Only) return 'ps5';\n      if (productTitle.includes('ps4') && productTitle.includes('ps5')) return 'dual';\n      if (productTitle.includes('ps4')) return 'ps4';\n      if (productTitle.includes('ps5')) return 'ps5';\n      return '';\n    };\n\n    const applyPsCoverBanner = (variant) => {\n      const banner = root?.querySelector('[data-ipax-ps-cover-banner]');\n      if (!banner) return;\n      const mode = resolvePsBannerMode(variant);\n      if (!mode) return;\n      banner.classList.remove('ipax-ps-cover-banner--ps4', 'ipax-ps-cover-banner--ps5', 'ipax-ps-cover-banner--dual');\n      banner.classList.add(`ipax-ps-cover-banner--${mode}`);\n    };\n\n    const formatMoney = (cents) => {\n      if (window.Shopify?.formatMoney) return Shopify.formatMoney(cents);\n      return `R$ ${(cents / 100).toFixed(2).replace('.', ',')}`;\n    };\n\n    const updatePaymentOptions = (cents) => {\n      const offer = qs('[data-ipax-offer]');\n      const offerAmount = qs('[data-ipax-offer-amount]');\n      if (offer && offerAmount && cents) {\n        const percent = Number(offer.dataset.offerPercent || 10);\n        offerAmount.textContent = formatMoney(Math.floor((cents * percent) / 100));\n      }\n\n      const paymentInfo = qs('[data-ipax-payment-info]');\n      const installmentRow = qs('[data-ipax-installment]');\n      const installmentQtyEl = qs('[data-ipax-installment-qty]');\n      const installmentEachEl = qs('[data-ipax-installment-each]');\n      const installmentSuffixEl = qs('[data-ipax-installment-suffix]');\n      const pixPriceEl = qs('[data-ipax-pix-price]');\n      if (!paymentInfo || !pixPriceEl || !cents) return;\n      const maxQty = Number(paymentInfo.dataset.installmentQty || 6);\n      const minParcelCents = Number(paymentInfo.dataset.minInstallmentCents || 500);\n      const pixDiscount = Number(paymentInfo.dataset.pixDiscount || 5);\n      const qty = Math.min(maxQty, Math.floor(cents / minParcelCents));\n      const pixPrice = Math.floor((cents * (100 - pixDiscount)) / 100);\n\n      if (installmentRow) {\n        const canInstall = qty >= 2;\n        installmentRow.hidden = !canInstall;\n        if (canInstall && installmentQtyEl && installmentEachEl) {\n          installmentQtyEl.textContent = `${qty}x`;\n          installmentEachEl.textContent = formatMoney(Math.floor(cents / qty));\n          if (installmentSuffixEl) installmentSuffixEl.textContent = 'sem juros';\n        }\n      }\n      pixPriceEl.textContent = formatMoney(pixPrice);\n    };\n\n    const getCheapestVariant = () => {\n      const available = variants.filter((variant) => variant.available);\n      const pool = available.length ? available : variants;\n      if (!pool.length) return null;\n\n      return pool.reduce((min, variant) => {\n        if (variant.price < min.price) return variant;\n        if (variant.price > min.price) return min;\n\n        const minTitle = (min.title || '').toLowerCase();\n        const variantTitle = (variant.title || '').toLowerCase();\n        const minIsSecondary = minTitle.includes('secund') || minTitle.includes('secondary');\n        const variantIsSecondary = variantTitle.includes('secund') || variantTitle.includes('secondary');\n\n        if (variantIsSecondary && !minIsSecondary) return variant;\n        return min;\n      }, pool[0]);\n    };\n\n    const clearPickerSelection = () => {\n      const picker = qs('[data-ipax-variant-picker]');\n      if (!picker) return;\n      picker.querySelectorAll('.ipax-variant-picker__tab').forEach((btn) => {\n        btn.classList.remove('is-selected');\n        btn.setAttribute('aria-selected', 'false');\n      });\n    };\n\n    const showFromPriceState = () => {\n      const variant = getCheapestVariant();\n      const hidden = qs('[data-ipax-variant-id]');\n      const priceEl = qs('[data-ipax-price]');\n      const compareEl = qs('[data-ipax-compare-price]');\n\n      if (select) {\n        select.removeAttribute('name');\n        select.value = '';\n      }\n      if (hidden) hidden.value = '';\n      clearPickerSelection();\n      setFromPriceVisible(true);\n      if (variant && priceEl) priceEl.textContent = formatMoney(variant.price);\n      if (variant) updatePaymentOptions(variant.price);\n      if (variant && compareEl) {\n        if (variant.compare_at_price > variant.price) {\n          compareEl.textContent = formatMoney(variant.compare_at_price);\n          compareEl.hidden = false;\n        } else {\n          compareEl.hidden = true;\n        }\n      } else if (compareEl) {\n        compareEl.hidden = true;\n      }\n      syncBuyUi({ available: false, waiting: true });\n    };\n\n    const updateVariant = () => {\n      if (!select.value) {\n        if (fromPriceMode) showFromPriceState();\n        return;\n      }\n\n      const variantId = Number(select.value);\n      const variant = variants.find((v) => v.id === variantId);\n      const option = select.selectedOptions[0];\n      const available = option?.dataset.available === 'true' || variant?.available;\n      const hidden = qs('[data-ipax-variant-id]');\n      const priceEl = qs('[data-ipax-price]');\n      const compareEl = qs('[data-ipax-compare-price]');\n\n      if (select) select.setAttribute('name', 'id');\n      if (hidden) hidden.value = String(variantId);\n      syncBuyUi({ available: Boolean(available), waiting: false });\n      setFromPriceVisible(false);\n      if (variant && priceEl) priceEl.textContent = formatMoney(variant.price);\n      if (variant) updatePaymentOptions(variant.price);\n      if (variant && compareEl) {\n        if (variant.compare_at_price > variant.price) {\n          compareEl.textContent = formatMoney(variant.compare_at_price);\n          compareEl.hidden = false;\n        } else {\n          compareEl.hidden = true;\n        }\n      }\n      applyPsCoverBanner(variant);\n    };\n\n    select.addEventListener('change', updateVariant);\n\n    if (fromPriceMode) {\n      showFromPriceState();\n    } else {\n      updateVariant();\n    }\n\n    const picker = qs('[data-ipax-variant-picker]');\n    if (picker) {\n      const options = picker.querySelectorAll('.ipax-variant-picker__tab');\n\n      options.forEach((optionBtn) => {\n        optionBtn.addEventListener('click', () => {\n          if (optionBtn.dataset.available === 'false') return;\n\n          const variantId = optionBtn.dataset.variantId;\n          select.value = variantId;\n          options.forEach((btn) => {\n            const isSelected = btn.dataset.variantId === variantId;\n            btn.classList.toggle('is-selected', isSelected);\n            btn.setAttribute('aria-selected', isSelected ? 'true' : 'false');\n          });\n          updateVariant();\n        });\n      });\n    }\n  });\n\n  const showAddedCartPanel = (addData, sourceBtn) => {\n    if (window.ipaxHomeCart && typeof window.ipaxHomeCart.presentAddedItem === 'function') {\n      window.ipaxHomeCart.presentAddedItem(addData, sourceBtn);\n      return true;\n    }\n    return false;\n  };\n\n  const waitAndShowAddedCartPanel = (addData, sourceBtn) => {\n    if (showAddedCartPanel(addData, sourceBtn)) return;\n    let tries = 0;\n    const timer = window.setInterval(() => {\n      tries += 1;\n      if (showAddedCartPanel(addData, sourceBtn) || tries >= 20) {\n        window.clearInterval(timer);\n        if (tries >= 20) {\n          const drawer = document.querySelector('cart-drawer-component');\n          if (drawer && typeof drawer.open === 'function') drawer.open();\n        }\n      }\n    }, 50);\n  };\n\n  const addToCartAndShowPanel = async (form, sourceBtn) => {\n    const variantInput = form.querySelector('[name=\"id\"]') || form.querySelector('[data-ipax-variant-id]');\n    const variantId = Number(variantInput?.value);\n    if (!variantId) {\n      throw new Error('Selecione uma op\u00E7\u00E3o do produto.');\n    }\n\n    const shopRoot = window.Shopify?.routes?.root || '/';\n    const sectionIds = [...document.querySelectorAll('cart-items-component')]\n      .map((el) => el.dataset.sectionId)\n      .filter(Boolean);\n    const buttons = form.querySelectorAll('[type=\"submit\"], [data-ipax-buy-button]');\n\n    buttons.forEach((btn) => {\n      btn.disabled = true;\n      btn.setAttribute('aria-busy', 'true');\n    });\n\n    try {\n      const payload = { items: [{ id: variantId, quantity: 1 }] };\n      if (sectionIds.length) payload.sections = sectionIds.join(',');\n\n      const addResponse = await fetch(`${shopRoot}cart/add.js`, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n        body: JSON.stringify(payload),\n      });\n      const addData = await addResponse.json();\n      if (!addResponse.ok) {\n        throw new Error(addData.description || addData.message || 'N\u00E3o foi poss\u00EDvel adicionar ao carrinho.');\n      }\n\n      const cartResponse = await fetch(`${shopRoot}cart.js`, {\n        headers: { Accept: 'application/json' },\n      });\n      const cart = await cartResponse.json();\n\n      // Painel primeiro (padr\u00E3o TCA) \u2014 evita drawer do tema \u201Croubar\u201D o fluxo\n      const buyBtn = sourceBtn || form.querySelector('[data-ipax-buy-button]');\n      waitAndShowAddedCartPanel(addData, buyBtn);\n\n      document.dispatchEvent(\n        new CustomEvent('cart:update', {\n          bubbles: true,\n          detail: {\n            resource: cart,\n            data: {\n              source: 'ipax-product-form',\n              variantId: String(variantId),\n              itemCount: cart.item_count,\n              sections: addData.sections,\n            },\n          },\n        })\n      );\n\n      // Garante que o drawer do Horizon n\u00E3o fique por cima do painel\n      window.setTimeout(() => {\n        if (window.ipaxHomeCart?.closeThemeDrawer) window.ipaxHomeCart.closeThemeDrawer();\n        if (window.ipaxHomeCart?.isOpen?.() === false) {\n          waitAndShowAddedCartPanel(addData, buyBtn);\n        }\n      }, 80);\n    } finally {\n      buttons.forEach((btn) => {\n        btn.disabled = false;\n        btn.removeAttribute('aria-busy');\n      });\n    }\n  };\n\n  // Capture phase (como na TCA): bloqueia Alphazz / submit nativo / redirect\n  if (!window.__ipaxBuyCaptureBound) {\n    window.__ipaxBuyCaptureBound = true;\n    document.addEventListener(\n      'click',\n      (event) => {\n        const buyButton = event.target.closest?.('[data-ipax-buy-button]');\n        if (!buyButton || buyButton.disabled) return;\n\n        const form = buyButton.closest('form') || document.getElementById('ipax-product-form');\n        if (!form) return;\n\n        event.preventDefault();\n        event.stopPropagation();\n        if (typeof event.stopImmediatePropagation === 'function') {\n          event.stopImmediatePropagation();\n        }\n\n        addToCartAndShowPanel(form, buyButton).catch((error) => {\n          console.warn('[iPax Product Cart]', error);\n          window.alert(error.message || 'N\u00E3o foi poss\u00EDvel adicionar ao carrinho.');\n        });\n      },\n      true\n    );\n  }\n\n  document.querySelectorAll('#ipax-product-form').forEach((form) => {\n    if (form.dataset.ipaxCartBound === 'true') return;\n    form.dataset.ipaxCartBound = 'true';\n\n    // Evita POST nativo do Shopify para /cart\n    form.setAttribute('action', '#');\n\n    form.addEventListener(\n      'submit',\n      (event) => {\n        event.preventDefault();\n        event.stopPropagation();\n        if (typeof event.stopImmediatePropagation === 'function') {\n          event.stopImmediatePropagation();\n        }\n\n        const submitter = event.submitter || form.querySelector('[data-ipax-buy-button]');\n        addToCartAndShowPanel(form, submitter).catch((error) => {\n          console.warn('[iPax Product Cart]', error);\n          window.alert(error.message || 'N\u00E3o foi poss\u00EDvel adicionar ao carrinho.');\n        });\n      },\n      true\n    );\n  });\n}\n\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', bootIpaxProductUi);\n} else {\n  bootIpaxProductUi();\n}\n"],
  "mappings": "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",
  "names": ["picker"]
}
