{
  "version": 3,
  "sources": ["/cdn/shop/t/20/assets/cf-reveal.js?cfv=58"],
  "sourcesContent": ["/*\n * Reveal-on-scroll for [data-cf-reveal] elements.\n *\n * Two rules shape this:\n *\n * 1. Content defaults to visible. The hidden state is added by JS per element,\n *    never by the stylesheet, so nothing disappears when JS fails, in print, or\n *    in a screenshot.\n * 2. Only elements that start below the fold are ever hidden. Blanking what is\n *    already on screen would flash on a normal load, and during a cross-document\n *    view transition the browser snapshots the incoming page before we could\n *    reveal it again, so the new page would animate in empty.\n */\n(() => {\n  const SELECTOR = '[data-cf-reveal]';\n  const HIDDEN = 'cf-reveal-hidden';\n  const REVEALED = 'cf-revealed';\n\n  if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n  if (!('IntersectionObserver' in window)) return;\n\n  const pending = new Set();\n\n  const reveal = (target) => {\n    const delay = Number(target.dataset.cfRevealDelay || 0);\n    if (delay) target.style.transitionDelay = `${delay}ms`;\n    target.classList.add(REVEALED);\n    observer.unobserve(target);\n    pending.delete(target);\n  };\n\n  const observer = new IntersectionObserver(\n    (entries) => {\n      for (const entry of entries) {\n        if (entry.isIntersecting) reveal(entry.target);\n      }\n    },\n    { rootMargin: '0px 0px -8% 0px', threshold: 0.05 }\n  );\n\n  /*\n   * Safety sweep. Intersection notifications are sampled, so a fast fling or a\n   * jump to an anchor can carry an element through the viewport between two\n   * samples and leave it hidden for good. Anything the scroll has already\n   * passed gets revealed outright.\n   */\n  let sweeping = false;\n  const sweep = () => {\n    sweeping = false;\n    if (!pending.size) return;\n    const fold = window.innerHeight * 0.9;\n    for (const el of [...pending]) {\n      if (el.getBoundingClientRect().top < fold) reveal(el);\n    }\n  };\n\n  const queueSweep = () => {\n    if (sweeping || !pending.size) return;\n    sweeping = true;\n    requestAnimationFrame(sweep);\n  };\n\n  addEventListener('scroll', queueSweep, { passive: true });\n  addEventListener('resize', queueSweep, { passive: true });\n\n  const prepare = (root = document) => {\n    // A little past the fold, so an element peeking into view is treated as\n    // already seen rather than hidden and animated under the user's eyes.\n    const fold = window.innerHeight * 0.9;\n\n    for (const el of root.querySelectorAll(SELECTOR)) {\n      if (el.classList.contains(REVEALED) || el.classList.contains(HIDDEN)) continue;\n\n      if (el.getBoundingClientRect().top < fold) {\n        el.classList.add(REVEALED);\n        continue;\n      }\n\n      el.classList.add(HIDDEN);\n      pending.add(el);\n      observer.observe(el);\n    }\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', () => prepare(), { once: true });\n  } else {\n    prepare();\n  }\n\n  // Sections re-render in the theme editor and on section rendering API swaps\n  document.addEventListener('shopify:section:load', (event) => {\n    const target = event.target;\n    if (target instanceof HTMLElement) prepare(target);\n  });\n})();\n"],
  "mappings": "CAaC,IAAM,CACL,MAAM,SAAW,mBACX,OAAS,mBACT,SAAW,cAGjB,GADI,OAAO,WAAW,kCAAkC,EAAE,SACtD,EAAE,yBAA0B,QAAS,OAEzC,MAAM,QAAU,IAAI,IAEd,OAAU,QAAW,CACzB,MAAM,MAAQ,OAAO,OAAO,QAAQ,eAAiB,CAAC,EAClD,QAAO,OAAO,MAAM,gBAAkB,GAAG,KAAK,MAClD,OAAO,UAAU,IAAI,QAAQ,EAC7B,SAAS,UAAU,MAAM,EACzB,QAAQ,OAAO,MAAM,CACvB,EAEM,SAAW,IAAI,qBAClB,SAAY,CACX,UAAW,SAAS,QACd,MAAM,gBAAgB,OAAO,MAAM,MAAM,CAEjD,EACA,CAAE,WAAY,kBAAmB,UAAW,GAAK,CACnD,EAQA,IAAI,SAAW,GACf,MAAM,MAAQ,IAAM,CAElB,GADA,SAAW,GACP,CAAC,QAAQ,KAAM,OACnB,MAAM,KAAO,OAAO,YAAc,GAClC,UAAW,KAAM,CAAC,GAAG,OAAO,EACtB,GAAG,sBAAsB,EAAE,IAAM,MAAM,OAAO,EAAE,CAExD,EAEM,WAAa,IAAM,CACnB,UAAY,CAAC,QAAQ,OACzB,SAAW,GACX,sBAAsB,KAAK,EAC7B,EAEA,iBAAiB,SAAU,WAAY,CAAE,QAAS,EAAK,CAAC,EACxD,iBAAiB,SAAU,WAAY,CAAE,QAAS,EAAK,CAAC,EAExD,MAAM,QAAU,CAAC,KAAO,WAAa,CAGnC,MAAM,KAAO,OAAO,YAAc,GAElC,UAAW,MAAM,KAAK,iBAAiB,QAAQ,EAC7C,GAAI,KAAG,UAAU,SAAS,QAAQ,GAAK,GAAG,UAAU,SAAS,MAAM,GAEnE,IAAI,GAAG,sBAAsB,EAAE,IAAM,KAAM,CACzC,GAAG,UAAU,IAAI,QAAQ,EACzB,QACF,CAEA,GAAG,UAAU,IAAI,MAAM,EACvB,QAAQ,IAAI,EAAE,EACd,SAAS,QAAQ,EAAE,EAEvB,EAEI,SAAS,aAAe,UAC1B,SAAS,iBAAiB,mBAAoB,IAAM,QAAQ,EAAG,CAAE,KAAM,EAAK,CAAC,EAE7E,QAAQ,EAIV,SAAS,iBAAiB,uBAAyB,OAAU,CAC3D,MAAM,OAAS,MAAM,OACjB,kBAAkB,aAAa,QAAQ,MAAM,CACnD,CAAC,CACH,GAAG",
  "names": []
}
