{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/nodia-theme.js?rev=20260818-app-panel"],
  "sourcesContent": ["/* ============================================================\n   NODIA RING \u2014 Theme JavaScript\n   Handles: Header scroll, Mobile nav, Cart drawer, Animations\n   ============================================================ */\n(function () {\n  'use strict';\n\n  /* \u2500\u2500 Scroll-reveal (IntersectionObserver) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function initAOS() {\n    const targets = document.querySelectorAll('[data-aos]');\n    if (!targets.length) return;\n\n    const io = new IntersectionObserver(\n      (entries) => {\n        entries.forEach((entry) => {\n          if (entry.isIntersecting) {\n            entry.target.classList.add('aos-visible');\n            io.unobserve(entry.target);\n          }\n        });\n      },\n      { threshold: 0.12 }\n    );\n    targets.forEach((el) => io.observe(el));\n  }\n\n  /* \u2500\u2500 Header: automatically adapt to the Hero underneath \u2500\u2500\u2500\u2500\u2500 */\n  function initHeader() {\n    const header = document.getElementById('site-header');\n    if (!header) return;\n\n    const whiteLogo = document.getElementById('header-logo-white');\n    const blackLogo = document.getElementById('header-logo-black');\n    const hero = document.querySelector('.hero, .sizing-hero, .np2-hero, .nfc-hero, [data-header-hero]');\n    const hasHero = !!hero;\n    let heroIsDark = true;\n\n    function swapLogos(useDarkLogo) {\n      if (!whiteLogo || !blackLogo) return;\n      whiteLogo.style.display = useDarkLogo ? 'none' : 'block';\n      blackLogo.style.display = useDarkLogo ? 'block' : 'none';\n    }\n\n    function luminance(r, g, b) {\n      return (0.299 * r) + (0.587 * g) + (0.114 * b);\n    }\n\n    function colorLuminance(color) {\n      const match = color && color.match(/[\\\\d.]+/g);\n      if (!match || match.length < 3) return null;\n      const alpha = match.length > 3 ? Number(match[3]) : 1;\n      if (alpha === 0) return null;\n      return luminance(Number(match[0]), Number(match[1]), Number(match[2]));\n    }\n\n    function detectHeroTone() {\n      if (!hero) {\n        heroIsDark = false;\n        return;\n      }\n\n      // A solid Hero background is the most reliable first signal.\n      const heroColor = colorLuminance(getComputedStyle(hero).backgroundColor);\n      if (heroColor !== null) heroIsDark = heroColor < 150;\n\n      // For image/video Heroes, sample the rendered media when same-origin/CORS allows it.\n      const media = hero.querySelector('img, video');\n      if (!media) {\n        header.dataset.heroTone = heroIsDark ? 'dark' : 'light';\n        return;\n      }\n\n      if (media.tagName === 'VIDEO') {\n        const poster = media.getAttribute('poster');\n        if (poster) sampleImage(poster);\n      } else if (media.currentSrc || media.src) {\n        // Use a fresh CORS-enabled image so canvas sampling works even when\n        // the Hero image element was already loaded before this initializer.\n        sampleImage(media.currentSrc || media.src);\n      }\n      header.dataset.heroTone = heroIsDark ? 'dark' : 'light';\n    }\n\n    function sampleImage(src, imageEl) {\n      const image = imageEl || new Image();\n      image.crossOrigin = 'anonymous';\n      image.onload = function () {\n        try {\n          const canvas = document.createElement('canvas');\n          canvas.width = 24; canvas.height = 24;\n          const ctx = canvas.getContext('2d', { willReadFrequently: true });\n          ctx.drawImage(image, 0, 0, 24, 24);\n          const pixels = ctx.getImageData(0, 0, 24, 24).data;\n          let total = 0; let count = 0;\n          for (let i = 0; i < pixels.length; i += 4) {\n            if (pixels[i + 3] > 20) {\n              total += luminance(pixels[i], pixels[i + 1], pixels[i + 2]);\n              count++;\n            }\n          }\n          if (count) heroIsDark = (total / count) < 150;\n          header.dataset.heroTone = heroIsDark ? 'dark' : 'light';\n          tick();\n        } catch (e) {\n          // If a remote image blocks canvas sampling, retain the CSS-color result.\n        }\n      };\n      if (!imageEl) image.src = src;\n    }\n\n    function applyTone() {\n      header.classList.toggle('site-header--tone-dark', heroIsDark);\n      header.classList.toggle('site-header--tone-light', !heroIsDark);\n      header.dataset.heroTone = heroIsDark ? 'dark' : 'light';\n      swapLogos(!heroIsDark);\n    }\n\n    function tick() {\n      const overHero = hasHero && window.scrollY < Math.max(hero.offsetHeight - 72, 56);\n      header.classList.toggle('site-header--hero', overHero);\n      header.classList.toggle('site-header--scrolled', !overHero);\n      if (overHero) applyTone();\n      else {\n        header.classList.remove('site-header--tone-dark');\n        header.classList.add('site-header--tone-light');\n        swapLogos(true);\n      }\n    }\n\n    window.addEventListener('scroll', tick, { passive: true });\n    window.addEventListener('resize', tick, { passive: true });\n    detectHeroTone();\n    applyTone();\n    tick();\n  }\n\n  /* \u2500\u2500 Sidebar Navigation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function initSidebar() {\n    const btn     = document.getElementById('menu-btn');\n    const sidebar = document.getElementById('header-sidebar');\n    const overlay = document.getElementById('sidebar-overlay');\n    const closeEl = document.getElementById('sidebar-close');\n    if (!btn || !sidebar) return;\n\n    function open() {\n      sidebar.classList.add('is-open');\n      if (overlay) overlay.classList.add('is-open');\n      document.body.classList.add('no-scroll');\n      btn.setAttribute('aria-expanded', 'true');\n      sidebar.querySelectorAll('.sidebar-link').forEach(l => l.setAttribute('tabindex', '0'));\n    }\n\n    function close() {\n      sidebar.classList.remove('is-open');\n      if (overlay) overlay.classList.remove('is-open');\n      document.body.classList.remove('no-scroll');\n      btn.setAttribute('aria-expanded', 'false');\n      sidebar.querySelectorAll('.sidebar-link').forEach(l => l.setAttribute('tabindex', '-1'));\n    }\n\n    btn.addEventListener('click', open);\n    if (closeEl) closeEl.addEventListener('click', close);\n    if (overlay) overlay.addEventListener('click', close);\n    sidebar.addEventListener('click', (e) => {\n      if (e.target.tagName === 'A') close();\n    });\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape' && sidebar.classList.contains('is-open')) close();\n    });\n  }\n\n  /* \u2500\u2500 Search panel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function initSearch() {\n    const panel = document.getElementById('site-search-panel');\n    const overlay = document.getElementById('site-search-overlay');\n    const input = document.getElementById('SiteSearchInput');\n    const openers = document.querySelectorAll('[data-search-open]');\n    const closers = document.querySelectorAll('[data-search-close]');\n    if (!panel || !openers.length) return;\n\n    function open() {\n      panel.classList.add('is-open');\n      if (overlay) overlay.classList.add('is-open');\n      panel.setAttribute('aria-hidden', 'false');\n      openers.forEach((el) => el.setAttribute('aria-expanded', 'true'));\n      document.body.classList.add('no-scroll');\n      window.setTimeout(() => { if (input) input.focus(); }, 180);\n    }\n    function close() {\n      panel.classList.remove('is-open');\n      if (overlay) overlay.classList.remove('is-open');\n      panel.setAttribute('aria-hidden', 'true');\n      openers.forEach((el) => el.setAttribute('aria-expanded', 'false'));\n      document.body.classList.remove('no-scroll');\n    }\n    openers.forEach((el) => el.addEventListener('click', open));\n    closers.forEach((el) => el.addEventListener('click', close));\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape' && panel.classList.contains('is-open')) close();\n    });\n  }\n\n  /* \u2500\u2500 Cart drawer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  var cartOpen = false;\n\n  function initCartDrawer() {\n    const drawer  = document.getElementById('cart-drawer');\n    const overlay = document.getElementById('cart-overlay');\n    const closeEl = document.getElementById('cart-drawer-close');\n    const triggers = document.querySelectorAll('[data-cart-open]');\n    if (!drawer) return;\n\n    triggers.forEach((t) => t.addEventListener('click', openCart));\n    if (closeEl)  closeEl.addEventListener('click', closeCart);\n    if (overlay)  overlay.addEventListener('click', closeCart);\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape' && cartOpen) closeCart();\n    });\n  }\n\n  function openCart() {\n    const drawer  = document.getElementById('cart-drawer');\n    const overlay = document.getElementById('cart-overlay');\n    if (!drawer) return;\n    drawer.classList.add('is-open');\n    if (overlay) overlay.classList.add('is-open');\n    document.body.classList.add('no-scroll');\n    drawer.removeAttribute('aria-hidden');\n    cartOpen = true;\n    refreshCart();\n  }\n\n  function closeCart() {\n    const drawer  = document.getElementById('cart-drawer');\n    const overlay = document.getElementById('cart-overlay');\n    if (!drawer) return;\n    drawer.classList.remove('is-open');\n    if (overlay) overlay.classList.remove('is-open');\n    document.body.classList.remove('no-scroll');\n    drawer.setAttribute('aria-hidden', 'true');\n    cartOpen = false;\n  }\n\n  function refreshCart() {\n    fetch('/cart.js')\n      .then((r) => r.json())\n      .then(renderCart)\n      .catch(() => {\n        const body = document.getElementById('cart-body');\n        if (body) body.innerHTML = '<p style=\"text-align:center;color:var(--ink-45);padding:32px 0\">Unable to load cart</p>';\n      });\n  }\n\n  function renderCart(cart) {\n    updateCartBadge(cart.item_count);\n\n    const body     = document.getElementById('cart-body');\n    const subtotal = document.getElementById('cart-subtotal');\n    const foot     = document.getElementById('cart-drawer-foot');\n\n    if (!body) return;\n\n    if (cart.item_count === 0) {\n      body.innerHTML = `\n        <div class=\"cart-empty\">\n          <svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <circle cx=\"9\" cy=\"21\" r=\"1\"/><circle cx=\"20\" cy=\"21\" r=\"1\"/>\n            <path d=\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\"/>\n          </svg>\n          <p>Your selection is empty</p>\n          <a href=\"/collections/all\" class=\"btn btn--secondary btn--sm\" style=\"margin-top:8px\">Explore Collection</a>\n        </div>`;\n      if (foot) foot.style.display = 'none';\n      return;\n    }\n\n    if (foot) foot.style.display = '';\n    if (subtotal) subtotal.textContent = formatMoney(cart.total_price);\n\n    body.innerHTML = cart.items.map((item) => `\n      <div class=\"cart-item\" data-key=\"${item.key}\">\n        <img class=\"cart-item__img\" src=\"${item.image || ''}\" alt=\"${escHtml(item.product_title)}\">\n        <div class=\"cart-item__info\">\n          <div class=\"cart-item__title\">${escHtml(item.product_title)}</div>\n          ${item.variant_title ? `<div class=\"cart-item__variant\">${escHtml(item.variant_title)}</div>` : ''}\n          <div class=\"cart-item__price\">${formatMoney(item.line_price)}</div>\n          <div class=\"cart-item__actions\">\n            <span class=\"cart-item__qty\">Qty: ${item.quantity}</span>\n            <button class=\"cart-item__remove\" data-remove=\"${item.key}\">Remove</button>\n          </div>\n        </div>\n      </div>`).join('');\n\n    body.querySelectorAll('[data-remove]').forEach((btn) => {\n      btn.addEventListener('click', () => removeCartItem(btn.dataset.remove));\n    });\n  }\n\n  function removeCartItem(key) {\n    fetch('/cart/change.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ id: key, quantity: 0 }),\n    })\n      .then((r) => r.json())\n      .then(renderCart)\n      .catch(console.error);\n  }\n\n  function updateCartBadge(count) {\n    document.querySelectorAll('.cart-badge').forEach((el) => {\n      el.textContent = count;\n      if (count > 0) {\n        el.removeAttribute('hidden');\n        el.classList.add('cart-badge--bump');\n        setTimeout(() => el.classList.remove('cart-badge--bump'), 350);\n      } else {\n        el.setAttribute('hidden', '');\n      }\n    });\n  }\n\n  /* \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function formatMoney(cents) {\n    return (window.Shopify && window.Shopify.formatMoney)\n      ? window.Shopify.formatMoney(cents)\n      : '$' + (cents / 100).toFixed(2);\n  }\n\n  function escHtml(str) {\n    return String(str)\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;');\n  }\n\n  /* \u2500\u2500 Smooth anchor links \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function initSmoothLinks() {\n    document.querySelectorAll('a[href^=\"#\"]').forEach((a) => {\n      a.addEventListener('click', (e) => {\n        const target = document.querySelector(a.getAttribute('href'));\n        if (target) {\n          e.preventDefault();\n          target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n        }\n      });\n    });\n  }\n\n  /* \u2500\u2500 Auto-update cart badge on Shopify add-to-cart events \u2500\u2500 */\n  document.addEventListener('cart:updated', () => {\n    fetch('/cart.js')\n      .then((r) => r.json())\n      .then((c) => updateCartBadge(c.item_count))\n      .catch(() => {});\n  });\n\n  /* \u2500\u2500 Collection Split Slider \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function initCollectionSlider(root) {\n    const sections = root && root.matches && root.matches('[data-collection-slider]')\n      ? [root]\n      : document.querySelectorAll('[data-collection-slider]');\n\n    sections.forEach((section) => {\n      if (section.dataset.sliderReady === 'true') return;\n\n      // Shopify can retain old homepage block data after a schema migration.\n      // Hydrate the four additional design slides client-side when only slide 1 exists.\n      const slideCopy = [\n        ['Meet Your People, Naturally', 'Discover nearby people who share your interests, values, and curiosity\u2014without forcing the moment.'],\n        ['Turn Shared Interests Into Conversation', 'Let a quiet signal reveal common ground, so the first hello already has somewhere meaningful to go.'],\n        ['Feel the Connection Before You Speak', 'A subtle vibration lets you know when someone compatible is close, while your attention stays in the room.'],\n        ['Start Something Meaningful Together', 'From a new friendship to a creative collaboration, Nodia helps promising connections begin naturally.']\n      ];\n      const slidesHost = section.querySelector('.collection-split__slides');\n      const rightHost = section.querySelector('.collection-split__right');\n      const navHost = section.querySelector('.collection-split__nav');\n      const firstSlide = section.querySelector('.collection-split__slide[data-slide=\"1\"]');\n      const firstLifestyle = section.querySelector('.collection-split__lifestyle-wrap[data-slide=\"1\"]');\n\n      if (slidesHost && rightHost && navHost && firstSlide && firstLifestyle && section.querySelectorAll('.collection-split__slide').length === 1) {\n        slideCopy.forEach((copy, index) => {\n          const number = index + 2;\n          const slide = firstSlide.cloneNode(true);\n          slide.classList.remove('is-active');\n          slide.dataset.slide = String(number);\n          const heading = slide.querySelector('.collection-split__name');\n          const description = slide.querySelector('.collection-split__desc');\n          const productImage = slide.querySelector('.collection-split__product-img');\n          if (heading) heading.textContent = copy[0];\n          if (description) description.textContent = copy[1];\n          if (productImage) productImage.alt = copy[0];\n          slidesHost.appendChild(slide);\n\n          const lifestyle = firstLifestyle.cloneNode(true);\n          lifestyle.classList.remove('is-active');\n          lifestyle.dataset.slide = String(number);\n          rightHost.appendChild(lifestyle);\n\n          const control = document.createElement('button');\n          control.type = 'button';\n          control.className = 'collection-split__nav-line';\n          control.dataset.slideTo = String(number);\n          control.setAttribute('aria-label', `Show slide ${number}`);\n          control.setAttribute('aria-selected', 'false');\n          control.innerHTML = `<span class=\"sr-only\">Slide ${number}</span>`;\n          navHost.appendChild(control);\n        });\n      }\n\n      const slides = Array.from(section.querySelectorAll('.collection-split__slide'));\n      const lifestyleSlides = Array.from(section.querySelectorAll('.collection-split__lifestyle-wrap'));\n      const controls = Array.from(section.querySelectorAll('.collection-split__nav-line'));\n      if (!slides.length) return;\n\n      section.dataset.sliderReady = 'true';\n      let current = 1;\n      let timer = null;\n      let progressFrame = null;\n      let progressStartedAt = 0;\n      const autoplaySeconds = Number(section.dataset.autoplay) || 0;\n      const autoplayMs = autoplaySeconds > 0 ? autoplaySeconds * 1000 : 0;\n\n      function clearProgress() {\n        controls.forEach((control) => control.style.setProperty('--collection-progress', '0'));\n      }\n\n      function tickProgress(now) {\n        if (!autoplayMs) return;\n        const activeControl = controls.find((control) => Number(control.dataset.slideTo) === current);\n        if (!activeControl) return;\n        const elapsed = now - progressStartedAt;\n        const progress = Math.max(0, Math.min(1, elapsed / autoplayMs));\n        activeControl.style.setProperty('--collection-progress', progress.toFixed(4));\n        if (progress < 1) {\n          progressFrame = window.requestAnimationFrame(tickProgress);\n        }\n      }\n\n      function startProgress() {\n        if (progressFrame) window.cancelAnimationFrame(progressFrame);\n        clearProgress();\n        if (!autoplayMs || slides.length <= 1) return;\n        progressStartedAt = performance.now();\n        progressFrame = window.requestAnimationFrame(tickProgress);\n      }\n\n      function setActive(target) {\n        if (target < 1) target = slides.length;\n        if (target > slides.length) target = 1;\n        if (target === current) return;\n\n        slides.forEach((slide) => {\n          slide.classList.toggle('is-active', Number(slide.dataset.slide) === target);\n        });\n        lifestyleSlides.forEach((slide) => {\n          slide.classList.toggle('is-active', Number(slide.dataset.slide) === target);\n        });\n        controls.forEach((control) => {\n          const active = Number(control.dataset.slideTo) === target;\n          control.classList.toggle('is-active', active);\n          control.setAttribute('aria-selected', active ? 'true' : 'false');\n        });\n        current = target;\n        startProgress();\n      }\n\n      function restartAutoplay() {\n        if (timer) window.clearInterval(timer);\n        if (progressFrame) {\n          window.cancelAnimationFrame(progressFrame);\n          progressFrame = null;\n        }\n        clearProgress();\n        if (autoplayMs > 0 && slides.length > 1) {\n          startProgress();\n          timer = window.setInterval(() => setActive(current + 1), autoplayMs);\n        }\n      }\n\n      controls.forEach((control) => {\n        control.addEventListener('click', () => {\n          setActive(Number(control.dataset.slideTo));\n          restartAutoplay();\n        });\n      });\n\n      let startX = 0;\n      section.addEventListener('touchstart', (event) => {\n        startX = event.touches[0].clientX;\n      }, { passive: true });\n      section.addEventListener('touchend', (event) => {\n        const distance = event.changedTouches[0].clientX - startX;\n        if (Math.abs(distance) < 55) return;\n        setActive(current + (distance < 0 ? 1 : -1));\n        restartAutoplay();\n      }, { passive: true });\n\n      section.addEventListener('keydown', (event) => {\n        if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n        event.preventDefault();\n        setActive(current + (event.key === 'ArrowRight' ? 1 : -1));\n        restartAutoplay();\n      });\n\n      restartAutoplay();\n    });\n  }\n\n  /* \u2500\u2500 Experience video fallback for saved homepage snapshots \u2500\u2500 */\n  function initExperienceVideo() {\n    const sections = document.querySelectorAll('#experience.experience');\n    sections.forEach((section) => {\n      if (section.dataset.videoReady === 'true') return;\n      const visual = section.querySelector('.experience__visual');\n      const content = section.querySelector('.experience__text');\n      if (!visual || !content) return;\n\n      const video = document.createElement('video');\n      video.className = 'experience-video__video';\n      video.autoplay = true;\n      video.muted = true;\n      video.loop = true;\n      video.playsInline = true;\n      video.preload = 'metadata';\n      video.poster = 'https://cdn.shopify.com/s/files/1/0735/4043/6054/files/nodia-video-fallback-v2.webp?v=1784710757';\n      video.innerHTML = '<source src=\"https://cdn.shopify.com/videos/c/o/v/a404ffa8c34242f9b5f9748863088b3f.mp4\" type=\"video/mp4\">';\n      const fallback = document.createElement('picture');\n      fallback.className = 'experience-video__fallback';\n      fallback.innerHTML = '<source media=\"(max-width: 768px)\" srcset=\"https://cdn.shopify.com/s/files/1/0735/4043/6054/files/nodia-video-fallback-mobile-v2.webp?v=1784710757\"><img src=\"https://cdn.shopify.com/s/files/1/0735/4043/6054/files/nodia-video-fallback-v2.webp?v=1784710757\" alt=\"\" aria-hidden=\"true\">';\n      visual.replaceChildren(fallback, video);\n      visual.appendChild(Object.assign(document.createElement('div'), { className: 'experience-video__overlay' }));\n      section.classList.add('experience-video-ready');\n      section.dataset.videoReady = 'true';\n      video.play().catch(() => {});\n    });\n  }\n\n  function initFooterSocial() {\n    document.querySelectorAll('.footer-social-toggle').forEach(function (toggle) {\n      if (toggle.dataset.bound) return;\n      toggle.dataset.bound = 'true';\n      const panel = document.getElementById(toggle.getAttribute('aria-controls'));\n      if (!panel) return;\n      toggle.addEventListener('click', function () {\n        const open = toggle.getAttribute('aria-expanded') === 'true';\n        toggle.setAttribute('aria-expanded', String(!open));\n        toggle.classList.toggle('is-open', !open);\n        if (!open) {\n          panel.hidden = false;\n          requestAnimationFrame(() => panel.classList.add('is-visible'));\n        } else {\n          panel.classList.remove('is-visible');\n          panel.addEventListener('transitionend', () => { if (!panel.classList.contains('is-visible')) panel.hidden = true; }, { once: true });\n        }\n      });\n    });\n  }\n\n  function initTrustPanelsAppCopy(root) {\n    const scope = root && root.querySelector ? root : document;\n    scope.querySelectorAll('.trust-panels.nodia-section#scenes').forEach(function (section) {\n      const firstPanel = section.querySelector('.trust-panels__grid .trust-panel');\n      if (!firstPanel) return;\n\n      const label = firstPanel.querySelector('.trust-panel__label');\n      const title = firstPanel.querySelector('.trust-panel__title');\n      const body = firstPanel.querySelector('.trust-panel__body');\n      const cta = firstPanel.querySelector('.trust-panel__cta');\n      if (!label || !title || !body || !cta) return;\n\n      const icon = firstPanel.querySelector('.trust-panel__icon');\n\n      label.textContent = 'INTEREST COMMUNITY APP';\n      title.textContent = 'Download the Nodia Community App';\n      body.textContent = 'A social app built around interests, discovery, and meeting like-minded people \u2014 think of it as an international Xiaohongshu-style community. The app is currently in invite-only registration, so downloads and sign-ups are opening gradually through invitation codes.';\n      cta.setAttribute('href', '/pages/contact');\n      cta.innerHTML = 'GET INVITE ACCESS<span aria-hidden=\"true\">\u2192</span>';\n      if (icon) {\n        icon.innerHTML = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"7\" y=\"2.75\" width=\"10\" height=\"18.5\" rx=\"2.5\"></rect><path d=\"M10 6.5h4\"></path><path d=\"M10 16h4\"></path><circle cx=\"12\" cy=\"19\" r=\"0.9\"></circle><path d=\"M18.75 8.25c1.35.45 2.25 1.28 2.25 2.25 0 1.43-1.94 2.59-4.33 2.59-.24 0-.47-.01-.69-.04\"></path><path d=\"M5.25 8.25C3.9 8.7 3 9.53 3 10.5c0 1.43 1.94 2.59 4.33 2.59.24 0 .47-.01.69-.04\"></path></svg>';\n      }\n      firstPanel.classList.add('trust-panel--app');\n    });\n  }\n\n  /* \u2500\u2500 Init \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  document.addEventListener('DOMContentLoaded', function () {\n    initAOS();\n    initHeader();\n    initSidebar();\n    initSearch();\n    initCartDrawer();\n    initSmoothLinks();\n    initCollectionSlider();\n    initExperienceVideo();\n    initFooterSocial();\n    initTrustPanelsAppCopy();\n\n    // Re-initialize after Shopify theme-editor section reloads\n    document.addEventListener('shopify:section:load', function (event) {\n      initCollectionSlider(event.target.querySelector('[data-collection-slider]'));\n      initTrustPanelsAppCopy(event.target);\n    });\n\n    // Load cart count on page load\n    fetch('/cart.js')\n      .then((r) => r.json())\n      .then((c) => updateCartBadge(c.item_count))\n      .catch(() => {});\n  });\n\n})();\n"],
  "mappings": "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",
  "names": []
}
