{
  "version": 3,
  "sources": ["/cdn/shop/t/30/assets/theme.js?cv=1"],
  "sourcesContent": ["/**\n * NAIVAR Theme \u2014 Main JavaScript\n * Shopify Online Store 2.0\n * Premium e-commerce theme for North American market\n */\n\n'use strict';\n\n/* ============================================================================\n   1. Utilities\n   ============================================================================ */\nconst NAIVAR = window.NAIVAR || {};\n\nNAIVAR.utils = {\n  /**\n   * Format money using Shopify money format\n   */\n  formatMoney(cents, format) {\n    if (!format) format = NAIVAR.moneyFormat || '${{amount}}';\n    const value = (cents / 100).toFixed(2);\n    return format.replace('{{amount}}', value).replace('{{amount_no_decimals}}', Math.floor(cents / 100));\n  },\n\n  /**\n   * Debounce function\n   */\n  debounce(fn, wait) {\n    let t;\n    return (...args) => {\n      clearTimeout(t);\n      t = setTimeout(() => fn.apply(this, args), wait);\n    };\n  },\n\n  /**\n   * Throttle function\n   */\n  throttle(fn, limit) {\n    let inThrottle;\n    return (...args) => {\n      if (!inThrottle) {\n        fn.apply(this, args);\n        inThrottle = true;\n        setTimeout(() => (inThrottle = false), limit);\n      }\n    };\n  },\n\n  /**\n   * Fetch with JSON\n   */\n  async fetchJSON(url, options = {}) {\n    const res = await fetch(url, {\n      headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n      ...options,\n    });\n    if (!res.ok) throw new Error(`HTTP ${res.status}`);\n    return res.json();\n  },\n\n  /**\n   * Show toast notification\n   */\n  showToast(message, type = 'success', duration = 3500) {\n    const toast = document.getElementById('toast-notification');\n    if (!toast) return;\n    toast.textContent = message;\n    toast.className = `toast toast--${type} is-visible`;\n    setTimeout(() => toast.classList.remove('is-visible'), duration);\n  },\n\n  /**\n   * Lock body scroll\n   */\n  lockScroll() {\n    document.body.style.overflow = 'hidden';\n    document.body.style.paddingRight = `${window.innerWidth - document.documentElement.clientWidth}px`;\n  },\n\n  unlockScroll() {\n    document.body.style.overflow = '';\n    document.body.style.paddingRight = '';\n  },\n\n  /**\n   * Trap focus within element\n   */\n  trapFocus(element) {\n    const focusable = element.querySelectorAll(\n      'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n    );\n    const first = focusable[0];\n    const last = focusable[focusable.length - 1];\n    element.addEventListener('keydown', (e) => {\n      if (e.key !== 'Tab') return;\n      if (e.shiftKey) {\n        if (document.activeElement === first) { e.preventDefault(); last.focus(); }\n      } else {\n        if (document.activeElement === last) { e.preventDefault(); first.focus(); }\n      }\n    });\n    if (first) first.focus();\n  },\n};\n\n/* ============================================================================\n   2. Cart API\n   ============================================================================ */\nNAIVAR.cart = {\n  async getCart() {\n    return NAIVAR.utils.fetchJSON('/cart.js');\n  },\n\n  async addItem(variantId, quantity = 1, properties = {}) {\n    return NAIVAR.utils.fetchJSON('/cart/add.js', {\n      method: 'POST',\n      body: JSON.stringify({ id: variantId, quantity, properties }),\n    });\n  },\n\n  async updateItem(line, quantity) {\n    return NAIVAR.utils.fetchJSON('/cart/change.js', {\n      method: 'POST',\n      body: JSON.stringify({ line, quantity }),\n    });\n  },\n\n  async removeItem(line) {\n    return this.updateItem(line, 0);\n  },\n\n  async updateNote(note) {\n    return NAIVAR.utils.fetchJSON('/cart/update.js', {\n      method: 'POST',\n      body: JSON.stringify({ note }),\n    });\n  },\n};\n\n/* ============================================================================\n   3. Cart Drawer\n   ============================================================================ */\nNAIVAR.cartDrawer = {\n  drawer: null,\n  isOpen: false,\n\n  init() {\n    this.drawer = document.getElementById('cart-drawer');\n    if (!this.drawer) return;\n\n    // Open cart buttons\n    document.querySelectorAll('[data-open-cart]').forEach((btn) => {\n      btn.addEventListener('click', () => this.open());\n    });\n\n    // Close cart buttons\n    document.querySelectorAll('[data-close-cart]').forEach((btn) => {\n      btn.addEventListener('click', () => this.close());\n    });\n\n    // ESC key\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape' && this.isOpen) this.close();\n    });\n  },\n\n  async open() {\n    if (!this.drawer) return;\n    this.isOpen = true;\n    this.drawer.classList.add('is-open');\n    NAIVAR.utils.lockScroll();\n    await this.renderCart();\n    NAIVAR.utils.trapFocus(this.drawer);\n  },\n\n  close() {\n    if (!this.drawer) return;\n    this.isOpen = false;\n    this.drawer.classList.remove('is-open');\n    NAIVAR.utils.unlockScroll();\n  },\n\n  async renderCart() {\n    const cart = await NAIVAR.cart.getCart();\n    this.updateCount(cart.item_count);\n    this.renderItems(cart);\n    this.renderFooter(cart);\n    if (NAIVAR.settings.showShippingProgress) {\n      this.renderShippingProgress(cart.total_price);\n    }\n  },\n\n  renderItems(cart) {\n    const container = document.getElementById('cart-items');\n    if (!container) return;\n\n    if (cart.item_count === 0) {\n      container.innerHTML = `\n        <div class=\"cart-drawer__empty\">\n          <div class=\"cart-drawer__empty-icon\">\uD83D\uDED2</div>\n          <p>${NAIVAR.cartStrings.empty}</p>\n          <a href=\"/collections/all\" class=\"btn btn--primary\" onclick=\"NAIVAR.cartDrawer.close()\">Shop Now</a>\n        </div>\n      `;\n      return;\n    }\n\n    container.innerHTML = cart.items.map((item, i) => `\n      <div class=\"cart-drawer__item\" data-line=\"${i + 1}\">\n        <div class=\"cart-drawer__item-image\">\n          ${item.image ? `<img src=\"${item.image}\" alt=\"${item.title}\" loading=\"lazy\">` : ''}\n        </div>\n        <div class=\"cart-drawer__item-details\">\n          <div class=\"cart-drawer__item-title\">\n            <a href=\"${item.url}\">${item.product_title}</a>\n          </div>\n          ${item.variant_title && item.variant_title !== 'Default Title' ? `<div class=\"cart-drawer__item-variant\">${item.variant_title}</div>` : ''}\n          <div class=\"cart-drawer__item-price\">${NAIVAR.utils.formatMoney(item.final_line_price)}</div>\n          <div class=\"cart-drawer__item-actions\">\n            <div class=\"qty-selector\">\n              <button class=\"qty-selector__btn\" data-cart-qty-decrease data-line=\"${i + 1}\" aria-label=\"Decrease\">\u2212</button>\n              <input type=\"number\" class=\"qty-selector__input\" value=\"${item.quantity}\" min=\"0\" data-line=\"${i + 1}\" aria-label=\"Quantity\">\n              <button class=\"qty-selector__btn\" data-cart-qty-increase data-line=\"${i + 1}\" aria-label=\"Increase\">+</button>\n            </div>\n            <button class=\"cart-drawer__remove\" data-cart-remove data-line=\"${i + 1}\">Remove</button>\n          </div>\n        </div>\n      </div>\n    `).join('');\n\n    // Bind events\n    container.querySelectorAll('[data-cart-remove]').forEach((btn) => {\n      btn.addEventListener('click', async (e) => {\n        const line = parseInt(e.currentTarget.dataset.line);\n        await NAIVAR.cart.removeItem(line);\n        await this.renderCart();\n      });\n    });\n\n    container.querySelectorAll('[data-cart-qty-decrease]').forEach((btn) => {\n      btn.addEventListener('click', async (e) => {\n        const line = parseInt(e.currentTarget.dataset.line);\n        const input = container.querySelector(`.qty-selector__input[data-line=\"${line}\"]`);\n        const newQty = Math.max(0, parseInt(input.value) - 1);\n        await NAIVAR.cart.updateItem(line, newQty);\n        await this.renderCart();\n      });\n    });\n\n    container.querySelectorAll('[data-cart-qty-increase]').forEach((btn) => {\n      btn.addEventListener('click', async (e) => {\n        const line = parseInt(e.currentTarget.dataset.line);\n        const input = container.querySelector(`.qty-selector__input[data-line=\"${line}\"]`);\n        const newQty = parseInt(input.value) + 1;\n        await NAIVAR.cart.updateItem(line, newQty);\n        await this.renderCart();\n      });\n    });\n  },\n\n  renderFooter(cart) {\n    const footer = document.getElementById('cart-footer');\n    if (!footer) return;\n\n    if (cart.item_count === 0) {\n      footer.innerHTML = '';\n      return;\n    }\n\n    footer.innerHTML = `\n      <div class=\"cart-drawer__subtotal\">\n        <span>${NAIVAR.cartStrings.subtotal}</span>\n        <span>${NAIVAR.utils.formatMoney(cart.total_price)}</span>\n      </div>\n      <p class=\"cart-drawer__taxes\">${NAIVAR.cartStrings.taxes_and_shipping}</p>\n      <div class=\"cart-drawer__checkout\">\n        <a href=\"/checkout\" class=\"btn btn--primary btn--full btn--large\">\n          \uD83D\uDD12 ${NAIVAR.cartStrings.checkout}\n        </a>\n        <a href=\"/cart\" class=\"btn btn--secondary btn--full\">View Cart</a>\n      </div>\n    `;\n  },\n\n  renderShippingProgress(totalPrice) {\n    const container = document.getElementById('cart-shipping-progress');\n    if (!container) return;\n\n    const threshold = NAIVAR.settings.freeShippingThreshold;\n    const remaining = threshold - totalPrice;\n\n    if (remaining <= 0) {\n      container.innerHTML = `<p style=\"color:var(--color-success);font-weight:600;font-size:0.875rem;\">\uD83C\uDF89 ${NAIVAR.cartStrings.free_shipping_unlocked}</p>`;\n    } else {\n      const percent = Math.min((totalPrice / threshold) * 100, 100);\n      const remainingFormatted = NAIVAR.utils.formatMoney(remaining);\n      container.innerHTML = `\n        <p style=\"font-size:0.8125rem;color:var(--color-text-secondary);\">\n          ${NAIVAR.cartStrings.free_shipping_message.replace('{{ amount }}', remainingFormatted)}\n        </p>\n        <div class=\"shipping-progress__bar\">\n          <div class=\"shipping-progress__fill\" style=\"width:${percent}%\"></div>\n        </div>\n      `;\n    }\n  },\n\n  updateCount(count) {\n    document.querySelectorAll('[data-cart-count]').forEach((el) => {\n      el.textContent = count;\n      el.setAttribute('data-count', count);\n    });\n  },\n};\n\n/* ============================================================================\n   4. Add to Cart\n   ============================================================================ */\nNAIVAR.addToCart = {\n  init() {\n    // Product page ATC form\n    document.querySelectorAll('[data-type=\"add-to-cart-form\"]').forEach((form) => {\n      form.addEventListener('submit', async (e) => {\n        e.preventDefault();\n        const btn = form.querySelector('.product-atc');\n        const variantInput = form.querySelector('[name=\"id\"]');\n        const qtyInput = form.querySelector('[name=\"quantity\"]');\n        if (!variantInput) return;\n\n        const variantId = variantInput.value;\n        const quantity = qtyInput ? parseInt(qtyInput.value) : 1;\n\n        btn?.classList.add('is-loading');\n        const textEl = btn?.querySelector('.product-atc__text');\n        const loadingEl = btn?.querySelector('.product-atc__loading');\n        if (textEl) textEl.style.display = 'none';\n        if (loadingEl) loadingEl.style.display = 'flex';\n\n        try {\n          await NAIVAR.cart.addItem(variantId, quantity);\n          NAIVAR.utils.showToast('Added to cart! \uD83D\uDED2', 'success');\n\n          if (NAIVAR.settings.cartType === 'drawer') {\n            await NAIVAR.cartDrawer.open();\n          } else {\n            window.location.href = '/cart';\n          }\n        } catch (err) {\n          NAIVAR.utils.showToast('Could not add to cart. Please try again.', 'error');\n          console.error(err);\n        } finally {\n          btn?.classList.remove('is-loading');\n          if (textEl) textEl.style.display = '';\n          if (loadingEl) loadingEl.style.display = 'none';\n        }\n      });\n    });\n\n    // Quick Add buttons on product cards\n    document.addEventListener('click', async (e) => {\n      const btn = e.target.closest('[data-quick-add]');\n      if (!btn) return;\n      e.preventDefault();\n\n      const variantId = btn.dataset.variantId;\n      if (!variantId) return;\n\n      btn.classList.add('is-loading');\n      btn.textContent = 'Adding...';\n\n      try {\n        await NAIVAR.cart.addItem(variantId, 1);\n        NAIVAR.utils.showToast('Added to cart! \uD83D\uDED2', 'success');\n        if (NAIVAR.settings.cartType === 'drawer') {\n          await NAIVAR.cartDrawer.open();\n        }\n      } catch (err) {\n        NAIVAR.utils.showToast('Could not add to cart.', 'error');\n      } finally {\n        btn.classList.remove('is-loading');\n        btn.innerHTML = `\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\"></path><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><path d=\"M16 10a4 4 0 0 1-8 0\"></path></svg>\n          Add to Cart\n        `;\n      }\n    });\n  },\n};\n\n/* ============================================================================\n   5. Product Variant Selector\n   ============================================================================ */\nNAIVAR.variantSelector = {\n  init() {\n    const forms = document.querySelectorAll('[data-type=\"add-to-cart-form\"]');\n    forms.forEach((form) => {\n      const radios = form.querySelectorAll('.product-option__value input[type=\"radio\"]');\n      radios.forEach((radio) => {\n        radio.addEventListener('change', () => {\n          this.updateSelectedLabel(form, radio);\n          this.updateVariant(form);\n        });\n      });\n      this.updateVariant(form);\n    });\n  },\n\n  updateSelectedLabel(form, radio) {\n    const position = radio.closest('[data-option-position]').dataset.optionPosition;\n    const label = form.querySelector(`[data-option-selected=\"${position}\"]`);\n    if (label) label.textContent = radio.value;\n\n    // Update active state\n    radio.closest('[data-option-position]').querySelectorAll('.product-option__value').forEach((l) => {\n      l.classList.toggle('is-active', l.querySelector('input').checked);\n    });\n  },\n\n  updateVariant(form) {\n    const selected = [];\n    form.querySelectorAll('[data-option-position]').forEach((group) => {\n      const checked = group.querySelector('input:checked');\n      if (checked) selected.push(checked.value);\n    });\n\n    const variantData = window.__naivarVariants;\n    if (!variantData) return;\n\n    const match = variantData.find((v) =>\n      v.options.every((opt, i) => opt === selected[i])\n    );\n\n    if (match) {\n      const variantInput = form.querySelector('[name=\"id\"]');\n      if (variantInput) variantInput.value = match.id;\n\n      const atcBtn = form.querySelector('.product-atc');\n      if (atcBtn) {\n        const textEl = atcBtn.querySelector('.product-atc__text');\n        if (match.available) {\n          atcBtn.removeAttribute('disabled');\n          if (textEl) textEl.textContent = 'Add to Cart';\n        } else {\n          atcBtn.setAttribute('disabled', 'disabled');\n          if (textEl) textEl.textContent = 'Sold Out';\n        }\n      }\n    }\n  },\n};\n\n/* ============================================================================\n   6. Product Media Gallery\n   ============================================================================ */\nNAIVAR.productMedia = {\n  init() {\n    const viewer = document.getElementById('product-media-viewer');\n    if (!viewer) return;\n\n    // Thumbnail clicks\n    document.querySelectorAll('[data-thumb-id]').forEach((thumb) => {\n      thumb.addEventListener('click', () => {\n        const id = thumb.dataset.thumbId;\n        this.showMedia(id);\n\n        document.querySelectorAll('[data-thumb-id]').forEach((t) => t.classList.remove('is-active'));\n        thumb.classList.add('is-active');\n      });\n    });\n\n    // Navigation arrows\n    const prevBtn = viewer.querySelector('[data-media-prev]');\n    const nextBtn = viewer.querySelector('[data-media-next]');\n    const items = viewer.querySelectorAll('.product-media__item');\n\n    prevBtn?.addEventListener('click', () => {\n      const active = viewer.querySelector('.product-media__item.is-active');\n      const idx = Array.from(items).indexOf(active);\n      const prevIdx = (idx - 1 + items.length) % items.length;\n      this.showMediaByIndex(prevIdx, items);\n    });\n\n    nextBtn?.addEventListener('click', () => {\n      const active = viewer.querySelector('.product-media__item.is-active');\n      const idx = Array.from(items).indexOf(active);\n      const nextIdx = (idx + 1) % items.length;\n      this.showMediaByIndex(nextIdx, items);\n    });\n\n    // Touch/swipe support\n    let startX = 0;\n    viewer.addEventListener('touchstart', (e) => { startX = e.touches[0].clientX; }, { passive: true });\n    viewer.addEventListener('touchend', (e) => {\n      const diff = startX - e.changedTouches[0].clientX;\n      if (Math.abs(diff) > 50) {\n        const active = viewer.querySelector('.product-media__item.is-active');\n        const idx = Array.from(items).indexOf(active);\n        if (diff > 0) {\n          this.showMediaByIndex((idx + 1) % items.length, items);\n        } else {\n          this.showMediaByIndex((idx - 1 + items.length) % items.length, items);\n        }\n      }\n    }, { passive: true });\n  },\n\n  showMedia(id) {\n    const viewer = document.getElementById('product-media-viewer');\n    if (!viewer) return;\n    viewer.querySelectorAll('.product-media__item').forEach((item) => {\n      item.classList.toggle('is-active', item.dataset.mediaId === id);\n    });\n  },\n\n  showMediaByIndex(idx, items) {\n    items.forEach((item, i) => item.classList.toggle('is-active', i === idx));\n    const thumbs = document.querySelectorAll('[data-thumb-id]');\n    thumbs.forEach((t, i) => t.classList.toggle('is-active', i === idx));\n  },\n};\n\n/* ============================================================================\n   7. Header \u2014 Sticky, Search, Mobile Menu\n   ============================================================================ */\nNAIVAR.header = {\n  init() {\n    this.initSticky();\n    this.initSearch();\n    this.initMobileMenu();\n    this.initAnnouncement();\n  },\n\n  initSticky() {\n    const header = document.getElementById('site-header');\n    if (!header) return;\n\n    const sticky = header.dataset.sticky;\n    if (sticky === 'none') return;\n\n    // Calcula e define o offset do sticky header (inclui announcement bar + category bar)\n    const updateStickyOffset = () => {\n      // Usa o wrapper do Shopify como refer\u00EAncia (inclui tudo que \u00E9 sticky)\n      const stickySection = document.querySelector('.shopify-section.section-site-header');\n      const el = stickySection || header;\n      const h = el.getBoundingClientRect().height;\n      document.documentElement.style.setProperty('--sticky-header-offset', h + 'px');\n    };\n\n    updateStickyOffset();\n    window.addEventListener('resize', NAIVAR.utils.throttle(updateStickyOffset, 200), { passive: true });\n\n    let lastScrollY = window.scrollY;\n\n    const onScroll = NAIVAR.utils.throttle(() => {\n      const currentY = window.scrollY;\n\n      if (sticky === 'always') {\n        header.classList.toggle('site-header--shadow', currentY > 10);\n      } else if (sticky === 'on-scroll') {\n        if (currentY < 100) {\n          header.classList.remove('site-header--hidden', 'site-header--shadow');\n        } else if (currentY > lastScrollY) {\n          header.classList.add('site-header--hidden');\n          header.classList.remove('site-header--shadow');\n        } else {\n          header.classList.remove('site-header--hidden');\n          header.classList.add('site-header--shadow');\n        }\n      }\n      lastScrollY = currentY;\n    }, 100);\n\n    window.addEventListener('scroll', onScroll, { passive: true });\n  },\n\n  initSearch() {\n    // Desktop: search bar sempre vis\u00EDvel\n    const searchInput = document.querySelector('.site-header__search-input');\n\n    // Mobile: bot\u00E3o lupa abre/fecha painel de pesquisa\n    const mobileSearchBtn = document.querySelector('[data-toggle-mobile-search]');\n    const mobileSearchPanel = document.getElementById('header-mobile-search');\n    const mobileSearchInput = document.getElementById('mobile-search-input');\n\n    if (mobileSearchBtn && mobileSearchPanel) {\n      mobileSearchBtn.addEventListener('click', () => {\n        const isOpen = mobileSearchPanel.classList.toggle('is-open');\n        mobileSearchBtn.setAttribute('aria-expanded', isOpen);\n        mobileSearchPanel.setAttribute('aria-hidden', !isOpen);\n        if (isOpen && mobileSearchInput) {\n          setTimeout(() => mobileSearchInput.focus(), 50);\n        }\n      });\n    }\n\n    // Fechar predictive ao clicar fora\n    document.addEventListener('click', (e) => {\n      const searchBar = document.querySelector('.site-header__search-bar');\n      if (searchBar && !searchBar.contains(e.target)) {\n        const predictive = document.getElementById('predictive-search');\n        if (predictive) predictive.style.display = 'none';\n      }\n      // Fechar mobile search ao clicar fora\n      if (mobileSearchPanel && mobileSearchPanel.classList.contains('is-open')) {\n        if (!mobileSearchPanel.contains(e.target) && !mobileSearchBtn?.contains(e.target)) {\n          mobileSearchPanel.classList.remove('is-open');\n          mobileSearchPanel.setAttribute('aria-hidden', 'true');\n          mobileSearchBtn?.setAttribute('aria-expanded', 'false');\n        }\n      }\n    });\n\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape') {\n        const predictive = document.getElementById('predictive-search');\n        if (predictive) predictive.style.display = 'none';\n        if (mobileSearchPanel) {\n          mobileSearchPanel.classList.remove('is-open');\n          mobileSearchPanel.setAttribute('aria-hidden', 'true');\n          mobileSearchBtn?.setAttribute('aria-expanded', 'false');\n        }\n      }\n    });\n\n    // Predictive search (desktop)\n    if (NAIVAR.settings?.predictiveSearch && searchInput) {\n      this.initPredictiveSearch(searchInput);\n    }\n  },\n\n  initPredictiveSearch(input) {\n    const resultsContainer = document.getElementById('predictive-search');\n    if (!resultsContainer) return;\n\n    const search = NAIVAR.utils.debounce(async (query) => {\n      if (query.length < 2) {\n        resultsContainer.style.display = 'none';\n        return;\n      }\n\n      try {\n        const limit = NAIVAR.settings.searchResultsLimit || 6;\n        const url = `${NAIVAR.routes.predictive_search_url}?q=${encodeURIComponent(query)}&resources[type]=product&resources[limit]=${limit}&section_id=predictive-search`;\n        const res = await fetch(url);\n        const text = await res.text();\n\n        // Extract results from response\n        const parser = new DOMParser();\n        const doc = parser.parseFromString(text, 'text/html');\n        const items = doc.querySelectorAll('.predictive-search__item, [data-search-result]');\n\n        if (items.length === 0) {\n          // Fallback: manual render\n          await this.renderPredictiveResults(query, resultsContainer, limit);\n        } else {\n          resultsContainer.innerHTML = text;\n          resultsContainer.style.display = 'block';\n        }\n      } catch (err) {\n        console.error('Predictive search error:', err);\n      }\n    }, 300);\n\n    input.addEventListener('input', (e) => search(e.target.value));\n    input.addEventListener('focus', (e) => { if (e.target.value.length >= 2) search(e.target.value); });\n  },\n\n  async renderPredictiveResults(query, container, limit) {\n    try {\n      const url = `/search/suggest.json?q=${encodeURIComponent(query)}&resources[type]=product&resources[limit]=${limit}`;\n      const data = await NAIVAR.utils.fetchJSON(url);\n      const products = data?.resources?.results?.products || [];\n\n      if (products.length === 0) {\n        container.style.display = 'none';\n        return;\n      }\n\n      container.innerHTML = `\n        <div class=\"predictive-search__section-title\">Products</div>\n        ${products.map((p) => `\n          <a href=\"${p.url}\" class=\"predictive-search__item\">\n            <img src=\"${p.image}\" alt=\"${p.title}\" class=\"predictive-search__item-image\" width=\"48\" height=\"48\">\n            <div>\n              <div class=\"predictive-search__item-title\">${p.title}</div>\n              <div class=\"predictive-search__item-price\">${p.price}</div>\n            </div>\n          </a>\n        `).join('')}\n        <a href=\"/search?q=${encodeURIComponent(query)}&type=product\" class=\"predictive-search__view-all\">\n          View all results for \"${query}\"\n        </a>\n      `;\n      container.style.display = 'block';\n    } catch (err) {\n      container.style.display = 'none';\n    }\n  },\n\n  initMobileMenu() {\n    const openBtn = document.querySelector('[data-open-menu]');\n    const closeBtn = document.querySelectorAll('[data-close-menu]');\n    const menu = document.getElementById('mobile-menu');\n    if (!openBtn || !menu) return;\n\n    openBtn.addEventListener('click', () => {\n      menu.classList.add('is-open');\n      openBtn.setAttribute('aria-expanded', 'true');\n      NAIVAR.utils.lockScroll();\n    });\n\n    closeBtn.forEach((btn) => {\n      btn.addEventListener('click', () => {\n        menu.classList.remove('is-open');\n        openBtn.setAttribute('aria-expanded', 'false');\n        NAIVAR.utils.unlockScroll();\n      });\n    });\n\n    // Expand/collapse submenus\n    menu.querySelectorAll('.mobile-menu__expand').forEach((btn) => {\n      btn.addEventListener('click', () => {\n        const item = btn.closest('.mobile-menu__item');\n        item.classList.toggle('is-expanded');\n      });\n    });\n\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape' && menu.classList.contains('is-open')) {\n        menu.classList.remove('is-open');\n        NAIVAR.utils.unlockScroll();\n      }\n    });\n  },\n\n  initAnnouncement() {\n    const closeBtn = document.querySelector('[data-close-announcement]');\n    const bar = document.getElementById('announcement-bar');\n    if (!closeBtn || !bar) return;\n\n    closeBtn.addEventListener('click', () => {\n      bar.style.display = 'none';\n      sessionStorage.setItem('naivar-announcement-closed', '1');\n    });\n\n    if (sessionStorage.getItem('naivar-announcement-closed') === '1') {\n      bar.style.display = 'none';\n    }\n  },\n};\n\n/* ============================================================================\n   8. Tabs\n   ============================================================================ */\nNAIVAR.tabs = {\n  init() {\n    document.querySelectorAll('.tabs').forEach((tabGroup) => {\n      tabGroup.querySelectorAll('.tab__btn').forEach((btn) => {\n        btn.addEventListener('click', () => {\n          const tabId = btn.dataset.tab;\n          const parent = tabGroup.closest('.product-tabs, .tabs-wrapper') || tabGroup.parentElement;\n\n          tabGroup.querySelectorAll('.tab__btn').forEach((b) => {\n            b.classList.remove('is-active');\n            b.setAttribute('aria-selected', 'false');\n          });\n\n          btn.classList.add('is-active');\n          btn.setAttribute('aria-selected', 'true');\n\n          parent.querySelectorAll('.tab__panel').forEach((panel) => {\n            panel.classList.remove('is-active');\n          });\n\n          const target = parent.querySelector(`#tab-${tabId}`);\n          if (target) target.classList.add('is-active');\n        });\n      });\n    });\n  },\n};\n\n/* ============================================================================\n   9. Accordion\n   ============================================================================ */\nNAIVAR.accordion = {\n  init() {\n    document.querySelectorAll('.accordion__header').forEach((header) => {\n      header.addEventListener('click', () => {\n        const item = header.closest('.accordion__item');\n        const isOpen = item.classList.contains('is-open');\n\n        // Close all in same group\n        const group = item.closest('.accordion');\n        if (group) {\n          group.querySelectorAll('.accordion__item.is-open').forEach((openItem) => {\n            openItem.classList.remove('is-open');\n          });\n        }\n\n        if (!isOpen) item.classList.add('is-open');\n      });\n    });\n  },\n};\n\n/* ============================================================================\n   10. Quantity Selectors\n   ============================================================================ */\nNAIVAR.quantitySelectors = {\n  init() {\n    document.addEventListener('click', (e) => {\n      const decreaseBtn = e.target.closest('[data-qty-decrease]');\n      const increaseBtn = e.target.closest('[data-qty-increase]');\n\n      if (decreaseBtn) {\n        const selector = decreaseBtn.closest('.qty-selector');\n        const input = selector?.querySelector('.qty-selector__input');\n        if (input) {\n          const min = parseInt(input.min) || 1;\n          input.value = Math.max(min, parseInt(input.value) - 1);\n          input.dispatchEvent(new Event('change'));\n        }\n      }\n\n      if (increaseBtn) {\n        const selector = increaseBtn.closest('.qty-selector');\n        const input = selector?.querySelector('.qty-selector__input');\n        if (input) {\n          input.value = parseInt(input.value) + 1;\n          input.dispatchEvent(new Event('change'));\n        }\n      }\n    });\n  },\n};\n\n/* ============================================================================\n   11. Filter Groups (Collection sidebar)\n   ============================================================================ */\nNAIVAR.filterGroups = {\n  init() {\n    document.querySelectorAll('.filter-group__header').forEach((header) => {\n      header.addEventListener('click', () => {\n        const group = header.closest('.filter-group');\n        const isOpen = group.classList.toggle('is-open');\n        header.setAttribute('aria-expanded', isOpen);\n      });\n    });\n  },\n};\n\n/* ============================================================================\n   12. View Toggle (Grid/List)\n   ============================================================================ */\nNAIVAR.viewToggle = {\n  init() {\n    document.querySelectorAll('.view-toggle__btn').forEach((btn) => {\n      btn.addEventListener('click', () => {\n        const view = btn.dataset.view;\n        document.querySelectorAll('.view-toggle__btn').forEach((b) => b.classList.remove('is-active'));\n        btn.classList.add('is-active');\n\n        const grid = document.getElementById('product-grid');\n        if (!grid) return;\n\n        if (view === 'list') {\n          grid.classList.add('view--list');\n          grid.classList.remove('view--grid');\n          // Garante que o gridTemplateColumns inline n\u00E3o sobrescreva o CSS\n          grid.style.gridTemplateColumns = '';\n        } else {\n          grid.classList.remove('view--list');\n          grid.classList.add('view--grid');\n          grid.style.gridTemplateColumns = '';\n        }\n\n        // Salvar prefer\u00EAncia\n        try { localStorage.setItem('naivar-view', view); } catch(e) {}\n      });\n    });\n\n    // Restaurar prefer\u00EAncia salva\n    try {\n      const saved = localStorage.getItem('naivar-view');\n      if (saved) {\n        const btn = document.querySelector(`.view-toggle__btn[data-view=\"${saved}\"]`);\n        if (btn) btn.click();\n      }\n    } catch(e) {}\n  },\n};\n\n/* ============================================================================\n   13. Scroll Animations (Reveal on Scroll)\n   ============================================================================ */\nNAIVAR.scrollAnimations = {\n  init() {\n    if (!NAIVAR.settings?.animationsEnabled) return;\n\n    const type = NAIVAR.settings.animationsType || 'fade-up';\n    const elements = document.querySelectorAll('.reveal-on-scroll');\n\n    if (!elements.length) return;\n\n    elements.forEach((el) => el.classList.add(type));\n\n    const observer = new IntersectionObserver(\n      (entries) => {\n        entries.forEach((entry) => {\n          if (entry.isIntersecting) {\n            entry.target.classList.add('is-visible');\n            observer.unobserve(entry.target);\n          }\n        });\n      },\n      { threshold: 0.1, rootMargin: '0px 0px -50px 0px' }\n    );\n\n    elements.forEach((el) => observer.observe(el));\n  },\n};\n\n/* ============================================================================\n   14. Cart Page (non-drawer)\n   ============================================================================ */\nNAIVAR.cartPage = {\n  init() {\n    // Quantity change on cart page\n    document.querySelectorAll('[data-cart-qty-decrease], [data-cart-qty-increase]').forEach((btn) => {\n      btn.addEventListener('click', async (e) => {\n        const line = parseInt(btn.dataset.line);\n        const row = document.querySelector(`.cart-item[data-line=\"${line}\"]`);\n        const input = row?.querySelector('.qty-selector__input');\n        if (!input) return;\n\n        const isDecrease = btn.hasAttribute('data-cart-qty-decrease');\n        const newQty = isDecrease\n          ? Math.max(0, parseInt(input.value) - 1)\n          : parseInt(input.value) + 1;\n\n        input.value = newQty;\n        await NAIVAR.cart.updateItem(line, newQty);\n        window.location.reload();\n      });\n    });\n\n    // Remove items\n    document.querySelectorAll('[data-cart-remove]').forEach((btn) => {\n      btn.addEventListener('click', async (e) => {\n        const line = parseInt(btn.dataset.line);\n        await NAIVAR.cart.removeItem(line);\n        window.location.reload();\n      });\n    });\n  },\n};\n\n/* ============================================================================\n   15. Initialize Everything\n   ============================================================================ */\ndocument.addEventListener('DOMContentLoaded', () => {\n  NAIVAR.cartDrawer.init();\n  NAIVAR.addToCart.init();\n  NAIVAR.variantSelector.init();\n  NAIVAR.productMedia.init();\n  NAIVAR.header.init();\n  NAIVAR.tabs.init();\n  NAIVAR.accordion.init();\n  NAIVAR.quantitySelectors.init();\n  NAIVAR.filterGroups.init();\n  NAIVAR.viewToggle.init();\n  NAIVAR.scrollAnimations.init();\n\n  // Cart page (only on cart template)\n  if (document.body.classList.contains('template-cart')) {\n    NAIVAR.cartPage.init();\n  }\n\n  // Init cart count on load\n  NAIVAR.cart.getCart().then((cart) => {\n    NAIVAR.cartDrawer.updateCount(cart.item_count);\n  }).catch(() => {});\n});\n\n// Shopify Design Mode (Theme Editor)\ndocument.addEventListener('shopify:section:load', () => {\n  NAIVAR.tabs.init();\n  NAIVAR.accordion.init();\n  NAIVAR.filterGroups.init();\n  NAIVAR.scrollAnimations.init();\n});\n"],
  "mappings": "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",
  "names": []
}
