/* @license Concept by RoarTheme (https://roartheme.co) Access unminified JS in assets/theme.js Use this event listener to run your own JS outside of this file. Documentation - https://roartheme.co/blogs/concept/javascript-events-for-developers document.addEventListener('page:loaded', function() { // Page has loaded and theme assets are ready }); */window.theme=window.theme||{},window.Shopify=window.Shopify||{},theme.config={hasSessionStorage:!0,hasLocalStorage:!0,mqlSmall:!1,mediaQuerySmall:"screen and (max-width: 767px)",motionReduced:window.matchMedia("(prefers-reduced-motion: reduce)").matches,isTouch:"ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0,rtl:document.documentElement.getAttribute("dir")==="rtl"},theme.supportsPassive=!1;try{const opts=Object.defineProperty({},"passive",{get:function(){theme.supportsPassive=!0}});window.addEventListener("testPassive",null,opts),window.removeEventListener("testPassive",null,opts)}catch{}document.documentElement.classList.add(theme.config.isTouch?"touch":"no-touch"),console.log(theme.settings.themeName+" theme ("+theme.settings.themeVersion+") by RoarTheme | Learn more at https://roartheme.co"),function(){theme.DOMready=function(callback){document.readyState!="loading"?callback():document.addEventListener("DOMContentLoaded",callback)},theme.headerGroup={rounded:()=>Array.from(document.querySelectorAll(".shopify-section-group-header-group .section--rounded")),sections:()=>Array.from(document.querySelectorAll(".shopify-section-group-header-group")),init:()=>{let previousSection=null;const rounded=theme.headerGroup.rounded(),sections=theme.headerGroup.sections();sections.forEach((shopifySection,index)=>{const section=shopifySection.querySelector(".section");if(section){if(section.classList.remove("section--next-rounded"),section.classList.remove("section--first-rounded"),section.classList.remove("section--last-rounded"),section.classList.contains("section--rounded")&&(index===0&§ion.classList.add("section--first-rounded"),index===rounded.length-1&§ion.classList.add("section--last-rounded"),previousSection&&previousSection.classList.contains("section--rounded")&&previousSection.classList.add("section--next-rounded")),index===sections.length-1){const nextSection=document.querySelector(".main-content .shopify-section:first-child .section");nextSection&&nextSection.classList.contains("section--rounded")&§ion.classList.add("section--next-rounded")}previousSection=section}})}},theme.a11y={trapFocusHandlers:{},getFocusableElements:container=>Array.from(container.querySelectorAll('summary, a[href], button:enabled, [tabindex]:not([tabindex^="-"]), [draggable], area, input:not([type=hidden]):enabled, select:enabled, textarea:enabled, object, iframe')),trapFocus:(container,elementToFocus=container)=>{const elements=theme.a11y.getFocusableElements(container),first=elements[0],last=elements[elements.length-1];theme.a11y.removeTrapFocus(),theme.a11y.trapFocusHandlers.focusin=event=>{event.target!==container&&event.target!==last&&event.target!==first||document.addEventListener("keydown",theme.a11y.trapFocusHandlers.keydown)},theme.a11y.trapFocusHandlers.focusout=function(){document.removeEventListener("keydown",theme.a11y.trapFocusHandlers.keydown)},theme.a11y.trapFocusHandlers.keydown=function(event){event.code.toUpperCase()==="TAB"&&(event.target===last&&!event.shiftKey&&(event.preventDefault(),first.focus()),(event.target===container||event.target===first)&&event.shiftKey&&(event.preventDefault(),last.focus()))},document.addEventListener("focusout",theme.a11y.trapFocusHandlers.focusout),document.addEventListener("focusin",theme.a11y.trapFocusHandlers.focusin),elementToFocus.focus(),elementToFocus.tagName==="INPUT"&&["search","text","email","url"].includes(elementToFocus.type)&&elementToFocus.value&&elementToFocus.setSelectionRange(0,elementToFocus.value.length)},removeTrapFocus:(elementToFocus=null)=>{document.removeEventListener("focusin",theme.a11y.trapFocusHandlers.focusin),document.removeEventListener("focusout",theme.a11y.trapFocusHandlers.focusout),document.removeEventListener("keydown",theme.a11y.trapFocusHandlers.keydown),elementToFocus&&typeof elementToFocus.focus=="function"&&elementToFocus.focus()}},theme.utils={throttle:callback=>{let requestId=null,lastArgs;const later=context=>()=>{requestId=null,callback.apply(context,lastArgs)},throttled=(...args)=>{lastArgs=args,requestId===null&&(requestId=requestAnimationFrame(later(this)))};return throttled.cancel=()=>{cancelAnimationFrame(requestId),requestId=null},throttled},debounce:(fn,wait)=>{let timer;return(...args)=>{clearTimeout(timer),timer=setTimeout(()=>fn.apply(this,args),wait)}},waitForEvent:(element,eventName)=>new Promise(resolve=>{const done=event=>{event.target===element&&(element.removeEventListener(eventName,done),resolve(event))};element.addEventListener(eventName,done)}),fetchConfig:(type="json",method="POST")=>({method,headers:{"Content-Type":"application/json",Accept:`application/${type}`}}),postLink:(path,options)=>{options=options||{};const method=options.method||"post",params=options.parameters||{},form=document.createElement("form");form.setAttribute("method",method),form.setAttribute("action",path);for(const key in params){const hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden"),hiddenField.setAttribute("name",key),hiddenField.setAttribute("value",params[key]),form.appendChild(hiddenField)}document.body.appendChild(form),form.submit(),document.body.removeChild(form)},postLink2:(path,options)=>{options=options||{};const method=options.method||"post",params=options.parameters||{},form=document.createElement("form");form.setAttribute("method",method),form.setAttribute("action",path);for(const key in params)if(typeof params[key]=="string"){const hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden"),hiddenField.setAttribute("name",key),hiddenField.setAttribute("value",params[key]),form.appendChild(hiddenField)}else for(const index in params[key])for(const key2 in params[key][index]){const hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden"),hiddenField.setAttribute("name",`${key}[${index}][${key2}]`),hiddenField.setAttribute("value",params[key][index][key2]),form.appendChild(hiddenField)}document.body.appendChild(form),form.submit(),document.body.removeChild(form)},sectionId:element=>element.hasAttribute("data-section-id")?element.getAttribute("data-section-id"):(element=element.classList.contains("shopify-section")?element:element.closest(".shopify-section"),element.id.replace("shopify-section-","")),imageLoaded:imageOrArray=>imageOrArray?(imageOrArray=imageOrArray instanceof Element?[imageOrArray]:Array.from(imageOrArray),Promise.all(imageOrArray.map(image=>new Promise(resolve=>{image.tagName==="IMG"&&image.complete||!image.offsetParent?resolve():image.onload=()=>resolve()})))):Promise.resolve(),visibleMedia:media=>Array.from(media).find(item=>window.getComputedStyle(item).display!=="none"),setScrollbarWidth:()=>{const scrollbarWidth=window.innerWidth-document.body.clientWidth;document.documentElement.style.setProperty("--scrollbar-width",`${scrollbarWidth>0?scrollbarWidth:0}px`)},externalLinksNewTab:()=>{theme.settings.externalLinksNewTab&&document.addEventListener("click",evt=>{const link=evt.target.tagName==="A"?evt.target:evt.target.closest("a");link&&link.tagName==="A"&&window.location.hostname!==new URL(link.href).hostname&&(link.target="_blank")})}},theme.HTMLUpdateUtility={viewTransition:(oldNode,newContent,preProcessCallbacks=[],postProcessCallbacks=[])=>{preProcessCallbacks?.forEach(callback=>callback(newContent));const newNodeWrapper=document.createElement("div");theme.HTMLUpdateUtility.setInnerHTML(newNodeWrapper,newContent.outerHTML);const newNode=newNodeWrapper.firstChild,uniqueKey=Date.now();oldNode.querySelectorAll("[id], [form]").forEach(element=>{element.id&&(element.id=`${element.id}-${uniqueKey}`),element.form&&element.setAttribute("form",`${element.form.getAttribute("id")}-${uniqueKey}`)}),oldNode.parentNode.insertBefore(newNode,oldNode),oldNode.style.display="none",postProcessCallbacks?.forEach(callback=>callback(newNode)),setTimeout(()=>oldNode.remove(),500)},setInnerHTML:(element,html)=>{element.innerHTML=html,element.querySelectorAll("script").forEach(oldScriptTag=>{const newScriptTag=document.createElement("script");Array.from(oldScriptTag.attributes).forEach(attribute=>{newScriptTag.setAttribute(attribute.name,attribute.value)}),newScriptTag.appendChild(document.createTextNode(oldScriptTag.innerHTML)),oldScriptTag.parentNode.replaceChild(newScriptTag,oldScriptTag)})}},theme.Currency={formatMoney:(cents,format="")=>{typeof cents=="string"&&(cents=cents.replace(".",""));const placeholderRegex=/\{\{\s*(\w+)\s*\}\}/,formatString=format||window.themeVariables.settings.moneyFormat;function defaultTo(value2,defaultValue){return value2==null||value2!==value2?defaultValue:value2}function formatWithDelimiters(number,precision,thousands,decimal){if(precision=defaultTo(precision,2),thousands=defaultTo(thousands,","),decimal=defaultTo(decimal,"."),isNaN(number)||number==null)return 0;number=(number/100).toFixed(precision);let parts=number.split("."),dollarsAmount=parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+thousands),centsAmount=parts[1]?decimal+parts[1]:"";return dollarsAmount+centsAmount}let value="";switch(formatString.match(placeholderRegex)[1]){case"amount":value=formatWithDelimiters(cents,2);break;case"amount_no_decimals":value=formatWithDelimiters(cents,0);break;case"amount_with_space_separator":value=formatWithDelimiters(cents,2," ",".");break;case"amount_with_comma_separator":value=formatWithDelimiters(cents,2,".",",");break;case"amount_with_apostrophe_separator":value=formatWithDelimiters(cents,2,"'",".");break;case"amount_no_decimals_with_comma_separator":value=formatWithDelimiters(cents,0,".",",");break;case"amount_no_decimals_with_space_separator":value=formatWithDelimiters(cents,0," ");break;case"amount_no_decimals_with_apostrophe_separator":value=formatWithDelimiters(cents,0,"'");break;default:value=formatWithDelimiters(cents,2);break}return formatString.indexOf("with_comma_separator")!==-1,formatString.replace(placeholderRegex,value)}},theme.pubsub={PUB_SUB_EVENTS:{cartUpdate:"cartUpdate",quantityUpdate:"quantityUpdate",variantChange:"variantChange",cartError:"cartError",facetUpdate:"facetUpdate",quantityRules:"quantityRules",quantityBoundries:"quantityBoundries",optionValueSelectionChange:"optionValueSelectionChange"},subscribers:{},subscribe:(eventName,callback)=>(theme.pubsub.subscribers[eventName]===void 0&&(theme.pubsub.subscribers[eventName]=[]),theme.pubsub.subscribers[eventName]=[...theme.pubsub.subscribers[eventName],callback],function(){theme.pubsub.subscribers[eventName]=theme.pubsub.subscribers[eventName].filter(cb=>cb!==callback)}),publish:(eventName,data)=>{theme.pubsub.subscribers[eventName]&&theme.pubsub.subscribers[eventName].forEach(callback=>{callback(data)})}},theme.scrollShadow={Updater:function(){class Updater{constructor(targetElement){this.cb=()=>this.update(targetElement),this.rO=new ResizeObserver(this.cb),this.mO=new MutationObserver(()=>this.on(this.el))}on(element){this.el&&(this.el.removeEventListener("scroll",this.cb),this.rO.disconnect(),this.mO.disconnect()),element&&(element.nodeName==="TABLE"&&!/scroll|auto/.test(getComputedStyle(element).getPropertyValue("overflow"))&&(this.rO.observe(element),element=element.tBodies[0]),element.addEventListener("scroll",this.cb),[element,...element.children].forEach(el=>this.rO.observe(el)),this.mO.observe(element,{childList:!0}),this.el=element)}update(targetElement){const scrollTop=this.el.scrollTop,scrollBottom=this.el.scrollHeight-this.el.offsetHeight-this.el.scrollTop,scrollLeft=this.el.scrollLeft,scrollRight=this.el.scrollWidth-this.el.offsetWidth-this.el.scrollLeft*(theme.config.rtl?-1:1);let cssText=`--t: ${Math.floor(scrollTop)>0?1:0}; --b: ${Math.floor(scrollBottom)>0?1:0}; --l: ${Math.floor(scrollLeft)>0?1:0}; --r: ${Math.floor(scrollRight)>0?1:0};`;if(this.el.nodeName==="TBODY"){const clientRect=this.el.getBoundingClientRect(),rootClientRect=this.el.parentElement.getBoundingClientRect();cssText+=`top: ${clientRect.top-rootClientRect.top}px; bottom: ${rootClientRect.bottom-clientRect.bottom}px; left: ${clientRect.left-rootClientRect.left}px; right: ${rootClientRect.right-clientRect.right}px;`}requestAnimationFrame(()=>{targetElement.style.cssText=cssText})}}return Updater}()},theme.cookiesEnabled=function(){let cookieEnabled=navigator.cookieEnabled;return cookieEnabled||(document.cookie="testcookie",cookieEnabled=document.cookie.indexOf("testcookie")!==-1),cookieEnabled},theme.isStorageSupported=function(type){if(window.self!==window.top)return!1;const testKey="test";let storage;type==="session"&&(storage=window.sessionStorage),type==="local"&&(storage=window.localStorage);try{return storage.setItem(testKey,"1"),storage.removeItem(testKey),!0}catch{return!1}},theme.getElementWidth=function(element,value){const style=window.getComputedStyle(element),text=document.createElement("span");text.style.fontFamily=style.fontFamily,text.style.fontSize=style.fontSize,text.style.fontWeight=style.fontWeight,text.style.visibility="hidden",text.style.position="absolute",text.innerHTML=value,document.body.appendChild(text);const width=text.getBoundingClientRect().width;return text.remove(),width},theme.HoverButton=function(){class HoverButton2{constructor(container){this.container=container}get btnFill(){return this.container.querySelector("[data-fill]")}load(){theme.config.isTouch||document.body.getAttribute("data-button-hover")==="none"||(this.container.addEventListener("mouseenter",this.onEnterHandler.bind(this)),this.container.addEventListener("mouseleave",this.onLeaveHandler.bind(this)))}onEnterHandler(){this.btnFill&&Motion.animate(this.btnFill,{y:["76%","0%"]},{duration:.6})}onLeaveHandler(){this.btnFill&&Motion.animate(this.btnFill,{y:"-76%"},{duration:.6})}unload(){}}return HoverButton2}(),theme.MagnetButton=function(){const config={magnet:10};class MagnetButton2{constructor(container){this.container=container,this.magnet=container.hasAttribute("data-magnet")?parseInt(container.getAttribute("data-magnet")):config.magnet}get btnText(){return this.container.querySelector("[data-text]")}get bounding(){return this.container.getBoundingClientRect()}load(){theme.config.isTouch||document.body.getAttribute("data-button-hover")==="none"||(this.container.addEventListener("mousemove",this.onMoveHandler.bind(this)),this.container.addEventListener("mouseleave",this.onLeaveHandler.bind(this)))}onMoveHandler(event){theme.config.motionReduced||this.magnet!==0&&(this.btnText?Motion.animate(this.btnText,{x:((event.clientX-this.bounding.left)/this.container.offsetWidth-.5)*this.magnet,y:((event.clientY-this.bounding.top)/this.container.offsetHeight-.5)*this.magnet},{duration:1.5,easing:Motion.spring()}):Motion.animate(this.container,{x:((event.clientX-this.bounding.left)/this.container.offsetWidth-.5)*this.magnet,y:((event.clientY-this.bounding.top)/this.container.offsetHeight-.5)*this.magnet},{duration:1.5,easing:Motion.spring()}))}onLeaveHandler(){theme.config.motionReduced||this.magnet!==0&&(this.btnText?Motion.animate(this.btnText,{x:0,y:0},{duration:1.5,easing:Motion.spring()}):Motion.animate(this.container,{x:0,y:0},{duration:1.5,easing:Motion.spring()}))}unload(){}}return MagnetButton2}(),theme.RevealButton=function(){const config={magnet:25};class RevealButton{constructor(container){this.container=container,this.magnet=container.hasAttribute("data-magnet")?parseInt(container.getAttribute("data-magnet")):config.magnet}get btnText(){return this.container.querySelector("[data-text]")}get btnReveal(){return this.container.querySelector("[data-reveal]")}get bounding(){return this.container.getBoundingClientRect()}load(){theme.config.isTouch||(this.container.addEventListener("mousemove",this.onMoveHandler.bind(this)),this.container.addEventListener("mouseleave",this.onLeaveHandler.bind(this)))}onMoveHandler(event){this.btnReveal?Motion.animate(this.btnReveal,{opacity:1,x:((event.clientX-this.bounding.left)/this.container.offsetWidth-.5)*this.magnet,y:((event.clientY-this.bounding.top)/this.container.offsetHeight-.5)*this.magnet},{duration:.2,easing:"steps(2, start)"}):this.btnText?Motion.animate(this.btnText,{x:((event.clientX-this.bounding.left)/this.container.offsetWidth-.5)*this.magnet,y:((event.clientY-this.bounding.top)/this.container.offsetHeight-.5)*this.magnet},{duration:1.5,easing:Motion.spring()}):Motion.animate(this.container,{x:((event.clientX-this.bounding.left)/this.container.offsetWidth-.5)*this.magnet,y:((event.clientY-this.bounding.top)/this.container.offsetHeight-.5)*this.magnet},{duration:1.5,easing:Motion.spring()})}onLeaveHandler(){this.btnReveal?Motion.animate(this.btnReveal,{x:0,y:0,opacity:0},{duration:.2,easing:[.61,1,.88,1]}):this.btnText?Motion.animate(this.btnText,{x:0,y:0},{duration:1.5,easing:Motion.spring()}):Motion.animate(this.container,{x:0,y:0},{duration:1.5,easing:Motion.spring()})}unload(){}}return RevealButton}(),theme.Animation=function(){class Animation{constructor(container){this.container=container}get immediate(){return this.container.hasAttribute("data-immediate")}get media(){return Array.from(this.container.querySelectorAll("img, iframe, svg, g-map"))}get type(){return this.container.hasAttribute("data-animate")?this.container.getAttribute("data-animate"):"fade-up"}get delay(){return this.container.hasAttribute("data-animate-delay")?parseInt(this.container.getAttribute("data-animate-delay"))/1e3:0}get paused(){return this.container.hasAttribute("paused")}beforeLoad(){if(!(this.type==="none"||this.paused))switch(this.type){case"fade-in":Motion.animate(this.container,{opacity:0},{duration:0});break;case"fade-up":Motion.animate(this.container,{transform:"translateY(min(2rem, 90%))",opacity:0},{duration:0});break;case"fade-up-large":Motion.animate(this.container,{transform:"translateY(90%)",opacity:0},{duration:0});break;case"zoom-out":Motion.animate(this.container,{transform:"scale(1.3)"},{duration:0});break}}async load(){if(!(this.type==="none"||this.paused)){switch(this.type){case"fade-in":await Motion.animate(this.container,{opacity:1},{duration:1.5,delay:this.delay,easing:[.16,1,.3,1]}).finished;break;case"fade-up":await Motion.animate(this.container,{transform:"translateY(0)",opacity:1},{duration:1.5,delay:this.delay,easing:[.16,1,.3,1]}).finished;break;case"fade-up-large":await Motion.animate(this.container,{transform:"translateY(0)",opacity:1},{duration:1,delay:this.delay,easing:[.16,1,.3,1]}).finished;break;case"zoom-out":await Motion.animate(this.container,{transform:"scale(1)"},{duration:1.3,delay:this.delay,easing:[.16,1,.3,1]}).finished;break}this.container.classList.add("animate")}}async reset(duration){if(this.type!=="none"){switch(this.type){case"fade-in":await Motion.animate(this.container,{opacity:0},{duration:duration||1.5,delay:this.delay,easing:duration?"none":[.16,1,.3,1]}).finished;break;case"fade-up":await Motion.animate(this.container,{transform:"translateY(max(-2rem, -90%))",opacity:0},{duration:duration||1.5,delay:this.delay,easing:duration?"none":[.16,1,.3,1]}).finished;break;case"fade-up-large":await Motion.animate(this.container,{transform:"translateY(-90%)",opacity:0},{duration:duration||1,delay:this.delay,easing:duration?"none":[.16,1,.3,1]}).finished;break;case"zoom-out":await Motion.animate(this.container,{transform:"scale(0)"},{duration:duration||1.3,delay:this.delay,easing:duration?"none":[.16,1,.3,1]}).finished;break}this.container.classList.remove("animate")}}reload(){this.type!=="none"&&(this.container.removeAttribute("paused"),this.beforeLoad(),this.load())}unload(){}}return Animation}(),theme.Carousel=function(){class Carousel{constructor(container,options,navigation){this.container=container,this.options=options,this.prevButton=navigation.previous,this.nextButton=navigation.next}load(){this.slider=new Flickity(this.container,this.options),this.prevButton.addEventListener("click",this.onPrevButtonClick.bind(this)),this.nextButton.addEventListener("click",this.onNextButtonClick.bind(this)),this.slider.on("dragStart",this.onDragStartHandler.bind(this)),this.slider.on("select",this.onSelectHandler.bind(this))}onDragStartHandler(){this.prevRemoveTransform(),this.nextRemoveTransform()}onSelectHandler(){this.slider.slides[this.slider.selectedIndex-1]?this.slider.slides[this.slider.selectedIndex+1]?(this.prevButton.disabled=!1,this.nextButton.disabled=!1):(this.prevButton.disabled=!1,this.nextButton.disabled=!0):(this.prevButton.disabled=!0,this.nextButton.disabled=!1)}onPrevButtonClick(event){event.preventDefault(),this.slider.previous(),this.nextRemoveTransform()}onNextButtonClick(event){event.preventDefault(),this.slider.next(),this.prevRemoveTransform()}prevRemoveTransform(){this.prevButton.style.transform=null,this.prevButton.querySelector("[data-fill]").style.transform=null}nextRemoveTransform(){this.nextButton.style.transform=null,this.nextButton.querySelector("[data-fill]").style.transform=null}unload(){}}return Carousel}(),theme.initWhenVisible=function(){class ScriptLoader{constructor(callback,delay=5e3){this.callback=callback,this.triggered=!1,this.timeoutId=null,this.interactionEvents=["click","mousemove","keydown","touchstart","touchmove","wheel"],this.handleInteraction=this.handleInteraction.bind(this),this.interactionEvents.forEach(eventType=>{window.addEventListener(eventType,this.handleInteraction,{passive:!0})}),this.timeoutId=setTimeout(()=>{this.triggered||this.handleInteraction({type:"timeout"})},delay)}handleInteraction(event){this.triggered||(this.triggered=!0,this.callback(event),this.cleanup())}cleanup(){this.interactionEvents.forEach(eventType=>{window.removeEventListener(eventType,this.handleInteraction,{passive:!0})}),clearTimeout(this.timeoutId),this.timeoutId=null,this.callback=null}}return ScriptLoader}(),new theme.initWhenVisible(()=>{document.body.removeAttribute("data-page-rendering")}),theme.windowWidth=window.innerWidth,window.addEventListener("resize",()=>{const{innerWidth}=window;innerWidth!==theme.windowWidth&&(theme.windowWidth=innerWidth,document.dispatchEvent(new CustomEvent("window:resize")))}),theme.DOMready(theme.headerGroup.init),theme.DOMready(theme.utils.setScrollbarWidth),theme.DOMready(theme.utils.externalLinksNewTab),document.addEventListener("window:resize",theme.utils.throttle(theme.utils.setScrollbarWidth)),theme.config.hasSessionStorage=theme.isStorageSupported("session"),theme.config.hasLocalStorage=theme.isStorageSupported("local");const mql=window.matchMedia(theme.config.mediaQuerySmall);theme.config.mqlSmall=mql.matches,mql.onchange=mql2=>{mql2.matches?(theme.config.mqlSmall=!0,document.dispatchEvent(new CustomEvent("matchSmall"))):(theme.config.mqlSmall=!1,document.dispatchEvent(new CustomEvent("unmatchSmall")))},window.addEventListener("DOMContentLoaded",()=>{document.body.classList.add("loaded"),document.dispatchEvent(new CustomEvent("page:loaded"))}),window.addEventListener("pageshow",event=>{event.persisted&&document.body.classList.remove("unloading")}),window.addEventListener("beforeunload",()=>{document.body.classList.add("unloading")})}(),new theme.initWhenVisible(()=>{var e=!1,t;document.body.addEventListener("touchstart",function(i){if(!i.target.closest(".flickity-slider"))return e=!1;e=!0,t={x:i.touches[0].pageX,y:i.touches[0].pageY}},theme.supportsPassive?{passive:!0}:!1),document.body.addEventListener("touchmove",function(i){if(e&&i.cancelable){var n={x:i.touches[0].pageX-t.x,y:i.touches[0].pageY-t.y};Math.abs(n.x)>Flickity.defaults.dragThreshold&&i.preventDefault()}},theme.supportsPassive?{passive:!1}:!1)});class LoadingBar extends HTMLElement{constructor(){super(),document.addEventListener("page:loaded",()=>{Motion.animate(this,{opacity:0},{duration:1}).finished.then(()=>{this.hidden=!0})})}}customElements.define("loading-bar",LoadingBar);class MouseCursor extends HTMLElement{constructor(){super(),!theme.config.isTouch&&(this.config={posX:0,posY:0},document.addEventListener("mousemove",event=>{this.config.posX+=(event.clientX-this.config.posX)/4,this.config.posY+=(event.clientY-this.config.posY)/4,this.style.setProperty("--x",`${this.config.posX}px`),this.style.setProperty("--y",`${this.config.posY}px`)}))}}customElements.define("mouse-cursor",MouseCursor);class CustomHeader extends HTMLElement{constructor(){super()}get allowTransparent(){return!!document.querySelector(".shopify-section:first-child [allow-transparent-header]")}get headerSection(){return document.querySelector(".header-section")}connectedCallback(){if(this.init(),window.ResizeObserver&&new ResizeObserver(this.setHeight.bind(this)).observe(this),Shopify.designMode){const section=this.closest(".shopify-section");section.addEventListener("shopify:section:load",this.init.bind(this)),section.addEventListener("shopify:section:unload",this.init.bind(this)),section.addEventListener("shopify:section:reorder",this.init.bind(this))}}init(){this.setHeight(),this.allowTransparent?(this.headerSection.classList.add("header-transparent"),this.headerSection.classList.add("no-animate"),setTimeout(()=>{this.headerSection.classList.remove("no-animate")},500)):this.headerSection.classList.remove("header-transparent")}setHeight(){requestAnimationFrame(()=>{document.documentElement.style.setProperty("--header-height",Math.round(this.clientHeight)+"px"),this.classList.contains("header--center")&&document.documentElement.style.getPropertyValue("--header-nav-height").length===0&&document.documentElement.style.setProperty("--header-nav-height",Math.round(document.getElementById("MenuToggle")?.clientHeight)+"px")})}}customElements.define("custom-header",CustomHeader,{extends:"header"});class StickyHeader extends CustomHeader{constructor(){super()}get isAlwaysSticky(){return this.getAttribute("data-sticky-type")==="always"}connectedCallback(){super.connectedCallback(),this.currentScrollTop=0,this.firstScrollTop=window.scrollY,this.headerBounds=this.headerSection.getBoundingClientRect(),this.beforeInit()}beforeInit(){this.headerSection.classList.add("header-sticky"),this.headerSection.setAttribute("data-sticky-type",this.getAttribute("data-sticky-type")),this.isAlwaysSticky&&this.headerSection.classList.add("header-sticky"),window.addEventListener("scroll",theme.utils.throttle(this.onScrollHandler.bind(this)),!1)}onScrollHandler(){const scrollTop=window.scrollY;scrollTop>this.headerBounds.top+this.firstScrollTop+this.headerBounds.height?(this.headerSection.classList.add("header-scrolled"),document.documentElement.style.setProperty("--sticky-header-height",Math.round(this.clientHeight)+"px"),document.dispatchEvent(new CustomEvent("header:scrolled",{bubbles:!0,detail:{scrolled:!0}})),scrollTop>this.headerBounds.top+this.firstScrollTop+this.headerBounds.height*2&&(this.headerSection.classList.add("header-nav-scrolled"),this.headerSection.querySelectorAll("details").forEach(details=>{details.hasAttribute("open")&&(details.open=!1)}))):(this.headerSection.classList.remove("header-scrolled"),this.headerSection.classList.remove("header-nav-scrolled"),document.dispatchEvent(new CustomEvent("header:scrolled",{bubbles:!0,detail:{scrolled:!1}}))),scrollTop>this.headerBounds.bottom+this.firstScrollTop+100?scrollTop>this.currentScrollTop?this.headerSection.classList.add("header-hidden"):this.headerSection.classList.remove("header-hidden"):this.headerSection.classList.remove("header-hidden"),this.currentScrollTop=scrollTop}}customElements.define("sticky-header",StickyHeader,{extends:"header"});class RevealLink extends HTMLAnchorElement{constructor(){super(),this.revealButton=new theme.RevealButton(this),this.revealButton.load()}}customElements.define("reveal-link",RevealLink,{extends:"a"});class HoverLink extends HTMLAnchorElement{constructor(){super(),this.hoverButton=new theme.HoverButton(this),this.hoverButton.load()}}customElements.define("hover-link",HoverLink,{extends:"a"});class MagnetLink extends HoverLink{constructor(){super(),this.magnetButton=new theme.MagnetButton(this),this.magnetButton.load()}}customElements.define("magnet-link",MagnetLink,{extends:"a"});class HoverButton extends HTMLButtonElement{constructor(){super(),this.hoverButton=new theme.HoverButton(this),this.hoverButton.load(),this.type==="submit"&&this.form&&this.form.addEventListener("submit",()=>this.setAttribute("aria-busy","true")),window.addEventListener("pageshow",()=>this.removeAttribute("aria-busy")),Motion.inView(this,this.init.bind(this))}static get observedAttributes(){return["aria-busy"]}get contentElement(){return this._contentElement=this._contentElement||this.querySelector(".btn-text")}get animationElement(){return this._animationElement=this._animationElement||document.createRange().createContextualFragment(` `).firstElementChild}get controlledElement(){return this.hasAttribute("aria-controls")?document.getElementById(this.getAttribute("aria-controls")):null}init(){this.append(this.animationElement)}async attributeChangedCallback(name,oldValue,newValue){newValue==="true"?(Motion.timeline([[this.contentElement,{opacity:0},{duration:.15}],[this.animationElement,{opacity:1},{duration:.15}]]),Motion.animate(this.animationElement.children,{transform:["scale(1.6)","scale(0.6)"]},{duration:.35,delay:Motion.stagger(.35/2),direction:"alternate",repeat:1/0})):Motion.timeline([[this.animationElement,{opacity:0},{duration:.15}],[this.contentElement,{opacity:1},{duration:.15}]])}}customElements.define("hover-button",HoverButton,{extends:"button"});class MagnetButton extends HoverButton{constructor(){super(),this.magnetButton=new theme.MagnetButton(this),this.magnetButton.load()}}customElements.define("magnet-button",MagnetButton,{extends:"button"});class HoverElement extends HTMLElement{constructor(){super(),this.hoverButton=new theme.HoverButton(this),this.hoverButton.load()}}customElements.define("hover-element",HoverElement);class MagnetElement extends HoverElement{constructor(){super(),this.magnetButton=new theme.MagnetButton(this),this.magnetButton.load()}}customElements.define("magnet-element",MagnetElement);class AnimateElement extends HTMLElement{constructor(){super()}connectedCallback(){theme.config.motionReduced||(this.animation=new theme.Animation(this),this.animation.beforeLoad(),Motion.inView(this,async()=>{!this.immediate&&this.media&&await theme.utils.imageLoaded(this.media),this.animation.load()}))}reset(){this.animation?.reset()}refresh(){this.animation?.reload()}}customElements.define("animate-element",AnimateElement);class AnimatePicture extends HTMLPictureElement{constructor(){super()}connectedCallback(){theme.config.motionReduced||(this.animation=new theme.Animation(this),this.animation.beforeLoad(),Motion.inView(this,async()=>{!this.immediate&&this.media&&await theme.utils.imageLoaded(this.media),this.animation.load()}))}}customElements.define("animate-picture",AnimatePicture,{extends:"picture"});class AnnouncementBar extends HTMLElement{constructor(){super(),!theme.config.isTouch||Shopify.designMode?Motion.inView(this,this.init.bind(this),{margin:"200px 0px 200px 0px"}):new theme.initWhenVisible(this.init.bind(this))}get items(){return this._items=this._items||Array.from(this.children)}get autoplay(){return this.hasAttribute("autoplay")}get speed(){return this.hasAttribute("autoplay")?parseInt(this.getAttribute("autoplay-speed"))*1e3:5e3}init(){this.initialized||(this.initialized=!0,this.items.length>1&&(this.slider=new Flickity(this,{accessibility:!1,fade:!0,pageDots:!1,prevNextButtons:!1,wrapAround:!0,rightToLeft:theme.config.rtl,autoPlay:this.autoplay?this.speed:!1,on:{ready:function(){setTimeout(()=>this.element.setAttribute("loaded",""))}}}),this.slider.on("change",this.onChange.bind(this)),this.addEventListener("slider:previous",()=>this.slider.previous()),this.addEventListener("slider:next",()=>this.slider.next()),this.addEventListener("slider:play",()=>this.slider.playPlayer()),this.addEventListener("slider:pause",()=>this.slider.pausePlayer()),Shopify.designMode&&this.addEventListener("shopify:block:select",event=>this.slider.select(this.items.indexOf(event.target)))))}disconnectedCallback(){this.slider&&this.slider.destroy()}onChange(){this.dispatchEvent(new CustomEvent("slider:change",{bubbles:!0,detail:{currentPage:this.slider.selectedIndex}}))}}customElements.define("announcement-bar",AnnouncementBar);class AccordionsDetails extends HTMLElement{constructor(){super(),this.addEventListener("toggle",this.onToggle)}get items(){return this._items=this._items||Array.from(this.querySelectorAll('details[is="accordion-details"]'))}onToggle(event){const{current:target,open}=event.detail;if(this.items.forEach(item=>{item!==target&&item.close()}),open){let headerHeight=0;!theme.config.mqlSmall&&document.querySelector("header.header")&&(headerHeight=Math.round(document.querySelector("header.header").clientHeight)),setTimeout(()=>{window.scrollTo({top:target.getBoundingClientRect().top+window.scrollY-headerHeight,behavior:theme.config.motionReduced?"auto":"smooth"})},250)}}}customElements.define("accordions-details",AccordionsDetails);class AccordionDetails extends HTMLDetailsElement{constructor(){super(),this._open=this.hasAttribute("open"),this.summaryElement=this.querySelector("summary"),this.contentElement=this.querySelector("summary + *"),this.setAttribute("aria-expanded",this._open?"true":"false"),this.summaryElement.addEventListener("click",this.onSummaryClick.bind(this)),Shopify.designMode&&(this.addEventListener("shopify:block:select",()=>{this.designModeActive&&(this.open=!0)}),this.addEventListener("shopify:block:deselect",()=>{this.designModeActive&&(this.open=!1)}))}get designModeActive(){return!0}get controlledElement(){return this.closest("accordions-details")}static get observedAttributes(){return["open"]}attributeChangedCallback(name,oldValue,newValue){name==="open"&&this.setAttribute("aria-expanded",newValue===""?"true":"false")}get open(){return this._open}set open(value){value!==this._open&&(this._open=value,this.isConnected?this.transition(value):value?this.setAttribute("open",""):this.removeAttribute("open")),this.setAttribute("aria-expanded",value?"true":"false"),this.dispatchEventHandler()}onSummaryClick(event){event.preventDefault(),this.open=!this.open}close(){this._open=!1,this.transition(!1)}async transition(value){this.style.overflow="hidden",value?(this.setAttribute("open",""),await Motion.timeline([[this,{height:[`${this.summaryElement.clientHeight}px`,`${this.scrollHeight}px`]},{duration:.25,easing:"ease"}],[this.contentElement,{opacity:[0,1],transform:["translateY(10px)","translateY(0)"]},{duration:.15,at:"-0.1"}]]).finished):(await Motion.timeline([[this.contentElement,{opacity:0},{duration:.15}],[this,{height:[`${this.clientHeight}px`,`${this.summaryElement.clientHeight}px`]},{duration:.25,at:"<",easing:"ease"}]]).finished,this.removeAttribute("open")),this.style.height="auto",this.style.overflow="visible"}dispatchEventHandler(){(this.controlledElement??this).dispatchEvent(new CustomEvent("toggle",{bubbles:!0,detail:{current:this,open:this.open}}))}}customElements.define("accordion-details",AccordionDetails,{extends:"details"});class FooterDetails extends AccordionDetails{constructor(){super(),this.load(),document.addEventListener("matchSmall",this.load.bind(this)),document.addEventListener("unmatchSmall",this.load.bind(this))}get designModeActive(){return theme.config.mqlSmall}get openDefault(){return this.hasAttribute("data-opened")}load(){!theme.config.mqlSmall||this.openDefault?this.open=!0:this.open&&!this.openDefault&&(this.open=!1)}}customElements.define("footer-details",FooterDetails,{extends:"details"});class GestureElement extends HTMLElement{constructor(){super(),this.config={thresholdY:Math.max(25,Math.floor(.15*window.innerHeight)),velocityThreshold:10,disregardVelocityThresholdY:Math.floor(.5*this.clientHeight),pressThreshold:8,diagonalSwipes:!1,diagonalLimit:Math.tan(45*1.5/180*Math.PI),longPressTime:500},this.handlers={panstart:[],panmove:[],panend:[],swipeup:[],swipedown:[],longpress:[]},Motion.inView(this,this.init.bind(this))}init(){this.addEventListener("touchstart",this.onTouchStart.bind(this),theme.supportsPassive?{passive:!0}:!1),this.addEventListener("touchmove",this.onTouchMove.bind(this),theme.supportsPassive?{passive:!0}:!1),this.addEventListener("touchend",this.onTouchEnd.bind(this),theme.supportsPassive?{passive:!0}:!1)}on(type,fn){if(this.handlers[type])return this.handlers[type].push(fn),{type,fn,cancel:()=>this.off(type,fn)}}off(type,fn){if(this.handlers[type]){const idx=this.handlers[type].indexOf(fn);idx!==-1&&this.handlers[type].splice(idx,1)}}fire(type,event){for(let i=0;ithis.fire("longpress",event),this.config.longPressTime),this.fire("panstart",event)}onTouchMove(event){const touchMoveY=event.changedTouches[0].screenY-(this.touchStartY??0);this.velocityY=touchMoveY-(this.touchMoveY??0),this.touchMoveY=touchMoveY;const absTouchMoveY=Math.abs(this.touchMoveY);this.swipingVertical=absTouchMoveY>this.thresholdY,this.swipingDirection=this.swipingVertical?"vertical":"pre-vertical",absTouchMoveY>this.config.pressThreshold&&clearTimeout(this.longPressTimer??void 0),this.fire("panmove",event)}onTouchEnd(event){this.touchEndY=event.changedTouches[0].screenY,this.fire("panend",event),clearTimeout(this.longPressTimer??void 0);const y=this.touchEndY-(this.touchStartY??0),absY=Math.abs(y);absY>this.thresholdY&&(this.swipedVertical=this.config.diagonalSwipes?y<=this.config.diagonalLimit:absY>this.thresholdY,this.swipedVertical&&(y<0?((this.velocityY??0)<-this.config.velocityThreshold||y<-this.disregardVelocityThresholdY)&&this.fire("swipeup",event):((this.velocityY??0)>this.config.velocityThreshold||y>this.disregardVelocityThresholdY)&&this.fire("swipedown",event)))}}customElements.define("gesture-element",GestureElement);class OverlayElement extends HTMLElement{constructor(){super(),this.addEventListener("mousemove",this.onMouseMove),this.addEventListener("mouseleave",this.onMouseLeave),this.addEventListener("mousedown",this.onMouseDown),this.addEventListener("mouseup",this.onMouseUp)}get cursor(){return document.querySelector("mouse-cursor")}onMouseMove(){this.cursor.classList.add("active")}onMouseLeave(){this.cursor.classList.remove("active")}onMouseDown(){this.cursor.classList.add("pressed")}onMouseUp(){this.cursor.classList.remove("pressed")}}customElements.define("overlay-element",OverlayElement);const lockLayerCount=new WeakMap;class ModalElement extends HTMLElement{constructor(){super(),this.events={afterHide:"modal:afterHide",afterShow:"modal:afterShow",closeAll:"modal:closeAll"},this.classes={open:"has-modal-open",opening:"has-modal-opening"}}static get observedAttributes(){return["id","open"]}get shouldLock(){return!1}get shouldAppendToBody(){return!1}get shouldCloseAll(){return!1}get open(){return this.hasAttribute("open")}get controls(){return Array.from(document.querySelectorAll(`[aria-controls="${this.id}"]`))}get overlay(){return this._overlay=this._overlay||this.querySelector(".fixed-modal")}get gesture(){return this._gesture=this._gesture||this.querySelector("gesture-element")}get designMode(){return this.hasAttribute("shopify-design-mode")}get focusElement(){return this.querySelector("button")}connectedCallback(){if(this.abortController=new AbortController,this.controls.forEach(button=>button.addEventListener("click",this.onButtonClick.bind(this),{signal:this.abortController.signal})),document.addEventListener("keyup",event=>event.code==="Escape"&&this.hide(),{signal:this.abortController.signal}),document.addEventListener(this.events.closeAll,()=>this.hide(),{signal:this.abortController.signal}),this.gesture&&(this.gestureConfig={animationFrame:null,moveY:0,maxGestureDistance:0,endPoint:0,layerHeight:null},this.gestureWrap=this.gesture.parentElement,setTimeout(()=>{this.gesture.on("panstart",this.onPanStart.bind(this)),this.gesture.on("panmove",this.onPanMove.bind(this)),this.gesture.on("panend",this.onPanEnd.bind(this))},75)),Shopify.designMode&&this.designMode){const section=this.closest(".shopify-section");section.addEventListener("shopify:section:select",event=>this.show(null,!event.detail.load),{signal:this.abortController.signal}),section.addEventListener("shopify:section:deselect",this.hide.bind(this),{signal:this.abortController.signal})}}disconnectedCallback(){this.abortController?.abort(),Shopify.designMode&&document.body.classList.remove(this.classes.open)}attributeChangedCallback(name,oldValue,newValue){switch(name){case"open":this.controls.forEach(button=>button.setAttribute("aria-expanded",newValue===null?"false":"true")),oldValue===null&&(newValue===""||newValue==="immediate")?(this.hidden=!1,this.removeAttribute("inert"),this.originalParentBeforeAppend=null,this.shouldAppendToBody&&this.parentElement!==document.body&&(this.originalParentBeforeAppend=this.parentElement,document.body.append(this)),(this.showTransition(newValue!=="immediate")||Promise.resolve()).then(()=>{this.afterShow(),this.dispatchEvent(new CustomEvent(this.events.afterShow,{bubbles:!0}))})):oldValue!==null&&newValue===null&&(this.setAttribute("inert",""),(this.hideTransition()||Promise.resolve()).then(()=>{this.afterHide(),this.hasAttribute("inert")&&(this.parentElement===document.body&&this.originalParentBeforeAppend&&(this.originalParentBeforeAppend.appendChild(this),this.originalParentBeforeAppend=null),this.dispatchEvent(new CustomEvent(this.events.afterHide,{bubbles:!0})),this.hidden=!0)})),this.dispatchEvent(new CustomEvent("toggle",{bubbles:!0}));break}}onButtonClick(event){event.preventDefault(),this.open?this.hide():this.show(event.currentTarget)}hide(){if(this.open)return this.beforeHide(),this.resetGesture(),this.removeAttribute("open"),theme.utils.waitForEvent(this,this.events.afterHide)}show(activeElement=null,animate=!0){if(!this.open)return this.shouldCloseAll&&document.dispatchEvent(new CustomEvent(this.events.closeAll),{bubbles:!0}),this.beforeShow(),this.activeElement=activeElement,this.setAttribute("open",animate?"":"immediate"),this.shouldLock&&document.body.classList.add(this.classes.opening),theme.utils.waitForEvent(this,this.events.afterShow)}beforeHide(){}beforeShow(){}afterHide(){setTimeout(()=>{theme.a11y.removeTrapFocus(this.activeElement),this.shouldLock&&(lockLayerCount.set(ModalElement,lockLayerCount.get(ModalElement)-1),document.body.classList.toggle(this.classes.open,lockLayerCount.get(ModalElement)>0))})}afterShow(){theme.a11y.trapFocus(this,this.focusElement),this.shouldLock&&(lockLayerCount.set(ModalElement,lockLayerCount.get(ModalElement)+1),document.body.classList.remove(this.classes.opening),document.body.classList.add(this.classes.open))}showTransition(){return setTimeout(()=>{this.setAttribute("active","")},75),new Promise(resolve=>{const computedStyle=window.getComputedStyle(this.overlay);if(!(computedStyle.transitionProperty!=="none"&&parseFloat(computedStyle.transitionDuration)>0)){resolve();return}this.overlay.addEventListener("transitionend",resolve,{once:!0})})}hideTransition(){return this.removeAttribute("active"),new Promise(resolve=>{this.overlay.addEventListener("transitionend",resolve,{once:!0})})}resetGesture(){this.gesture&&(this.gestureWrap.style.transform="",this.gestureWrap.style.transition="",this.overlay.style.opacity="",this.overlay.style.transition="")}onPanStart(){this.removeTransition(this.gestureWrap,"transform"),this.hasAttribute("open")&&(this.gestureConfig.layerHeight===null&&(this.gestureConfig.layerHeight=this.gestureWrap.getBoundingClientRect().height),this.gestureConfig.maxGestureDistance=this.gestureConfig.layerHeight-50,this.gestureConfig.endPoint=this.gestureConfig.layerHeight*.3)}onPanMove(){this.gestureConfig.animationFrame||(this.gestureConfig.animationFrame=requestAnimationFrame(()=>{const clamp=(a,min=0,max=1)=>Math.min(max,Math.max(min,a)),invlerp=(x,y,a)=>clamp((a-x)/(y-x));this.gestureWrap.style.transition="transform .1s linear",this.overlay.style.transition="opacity .1s linear",this.hasAttribute("open")&&(this.gestureConfig.layerHeight===null&&(this.gestureConfig.layerHeight=this.gestureWrap.getBoundingClientRect().height),this.gestureConfig.moveY=this.gesture.touchMoveY,this.gestureConfig.maxGestureDistance=this.gestureConfig.layerHeight-50,this.gestureConfig.moveY>=0?(this.gestureWrap.style.transform=`translateY(${Math.min(this.gestureConfig.moveY,this.gestureConfig.maxGestureDistance)}px)`,this.overlay.style.opacity=invlerp(this.gestureConfig.layerHeight,0,this.gestureConfig.moveY)):(this.gestureWrap.style.transform="translateY(0)",this.gestureWrap.style.transition="",this.overlay.style.opacity="1")),this.gestureConfig.animationFrame=null}))}onPanEnd(){this.gestureConfig.animationFrame===null||cancelAnimationFrame(this.gestureConfig.animationFrame),this.gestureConfig.animationFrame=null,this.gestureWrap.style.transition="transform .1s linear",this.gestureConfig.layerHeight===null&&(this.gestureConfig.layerHeight=this.gestureWrap.getBoundingClientRect().height),this.gestureConfig.endPoint=this.gestureConfig.layerHeight*.3,this.hasAttribute("open")&&(this.gestureConfig.moveY=this.gesture.touchMoveY,this.gestureConfig.moveY{this.hide()},{once:!0})))}removeTransition(node,transition){const match=node.style.transition.match(new RegExp("(?:^|,)\\s*"+transition+"(?:$|\\s|,)[^,]*","i"));if(match){const transitionArray=node.style.transition.split("");transitionArray.splice(match.index,match[0].length),node.style.transition=transitionArray.join("")}}whichTransitionEvent(){let t;const el=document.createElement("fakeelement"),transitions={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",MSTransition:"msTransitionEnd",OTransition:"oTransitionEnd",transition:"transitionEnd"};for(t in transitions)if(el.style[t]!==void 0)return transitions[t]}}customElements.define("modal-element",ModalElement),lockLayerCount.set(ModalElement,0);class DrawerElement extends ModalElement{constructor(){super(),this.events={afterHide:"drawer:afterHide",afterShow:"drawer:afterShow"}}get shouldLock(){return!0}get shouldAppendToBody(){return!0}}customElements.define("drawer-element",DrawerElement);class MenuDrawer extends DrawerElement{constructor(){super()}get menuItems(){return this._menuItems=this._menuItems||this.querySelectorAll(".drawer__menu:not(.active)>li")}beforeShow(){super.beforeShow(),setTimeout(()=>{Motion.animate(this.menuItems,{transform:["translateX(-20px)","translateX(0)"],opacity:[0,1]},{duration:.6,easing:[.075,.82,.165,1],delay:Motion.stagger(.1)}).finished.then(()=>{this.menuItems.forEach(item=>item.removeAttribute("style"))})},300)}beforeHide(){super.beforeHide(),setTimeout(()=>{this.querySelectorAll("details[is=menu-details]").forEach(subMenu=>{subMenu.onCloseButtonClick()})},300)}}customElements.define("menu-drawer",MenuDrawer);class ShareDrawer extends DrawerElement{constructor(){super()}get menuItems(){return this._menuItems=this._menuItems||this.querySelectorAll(".share-buttons>li")}get urlToShare(){const urlInput=this.querySelector("input[type=hidden]");return urlInput?urlInput.value:document.location.href}connectedCallback(){navigator.share?this.controls.forEach(button=>button.addEventListener("click",this.shareTo.bind(this))):super.connectedCallback()}async shareTo(event){event.preventDefault();try{await navigator.share({url:this.urlToShare,title:document.title})}catch(error){error.name==="AbortError"?console.log("Share canceled by user"):console.error(error)}}beforeShow(){super.beforeShow(),setTimeout(()=>{Motion.animate(this.menuItems,{transform:["translateY(2.5rem)","translateY(0)"],opacity:[0,1]},{duration:.6,easing:[.075,.82,.165,1],delay:Motion.stagger(.1)}).finished.then(()=>{this.menuItems.forEach(item=>item.removeAttribute("style"))})},300)}}customElements.define("share-drawer",ShareDrawer);class BackInStockDrawer extends DrawerElement{constructor(){super(),!theme.config.isTouch||Shopify.designMode?this.init():new theme.initWhenVisible(this.init.bind(this))}get submited(){return this.querySelector(".alert")!==null}init(){this.initialized||(this.initialized=!0,this.submited&&setTimeout(()=>{this.show()},1e3))}}customElements.define("back-in-stock-drawer",BackInStockDrawer);class MenuDetails extends HTMLDetailsElement{constructor(){super(),this.summary.addEventListener("click",this.onSummaryClick.bind(this)),this.closeButton.addEventListener("click",this.onCloseButtonClick.bind(this))}get parent(){return this.closest("[data-parent]")}get summary(){return this.querySelector("summary")}get closeButton(){return this.querySelector("[data-close]")}onSummaryClick(event){event.preventDefault(),this.setAttribute("open",""),setTimeout(()=>{this.parent.classList.add("active"),this.classList.add("active"),this.summary.setAttribute("aria-expanded",!0)},100)}onCloseButtonClick(){this.parent.classList.remove("active"),this.classList.remove("active"),this.summary.setAttribute("aria-expanded",!1),this.closeAnimation()}closeAnimation(){let animationStart;const handleAnimation=time=>{animationStart===void 0&&(animationStart=time),time-animationStart<400?requestAnimationFrame(handleAnimation):this.removeAttribute("open")};requestAnimationFrame(handleAnimation)}}customElements.define("menu-details",MenuDetails,{extends:"details"});class QuantityLabel extends HTMLLabelElement{constructor(){super()}connectedCallback(){this.querySelector(".quantity__rules-cart").append(this.animationElement)}static get observedAttributes(){return["aria-busy"]}get contentElement(){return this._contentElement=this._contentElement||this.querySelector(".quantity-cart")}get animationElement(){return this._animationElement=this._animationElement||document.createRange().createContextualFragment(` `).firstElementChild}async attributeChangedCallback(name,oldValue,newValue){newValue==="true"?(Motion.timeline([[this.contentElement,{opacity:0},{duration:.15}],[this.animationElement,{opacity:1},{duration:.15}]]),Motion.animate(this.animationElement.children,{transform:["scale(1.6)","scale(0.6)"]},{duration:.35,delay:Motion.stagger(.35/2),direction:"alternate",repeat:1/0})):Motion.timeline([[this.animationElement,{opacity:0},{duration:.15}],[this.contentElement,{opacity:1},{duration:.15}]])}}customElements.define("quantity-label",QuantityLabel,{extends:"label"});class QuantityInput extends HTMLElement{quantityUpdateUnsubscriber=void 0;quantityBoundriesUnsubscriber=void 0;quantityRulesUnsubscriber=void 0;constructor(){super()}get sectionId(){return this.getAttribute("data-section-id")}get productId(){return this.getAttribute("data-product-id")}get input(){return this.querySelector("input")}get value(){return this.input.value}connectedCallback(){this.abortController=new AbortController,this.buttons=Array.from(this.querySelectorAll("button")),this.changeEvent=new Event("change",{bubbles:!0}),this.input.addEventListener("change",this.onInputChange.bind(this)),this.input.addEventListener("focus",()=>setTimeout(()=>this.input.select())),this.buttons.forEach(button=>button.addEventListener("click",this.onButtonClick.bind(this)),{signal:this.abortController.signal}),this.validateQtyRules(),this.quantityUpdateUnsubscriber=theme.pubsub.subscribe(theme.pubsub.PUB_SUB_EVENTS.quantityUpdate,this.validateQtyRules.bind(this)),this.quantityBoundriesUnsubscriber=theme.pubsub.subscribe(theme.pubsub.PUB_SUB_EVENTS.quantityBoundries,this.setQuantityBoundries.bind(this)),this.quantityRulesUnsubscriber=theme.pubsub.subscribe(theme.pubsub.PUB_SUB_EVENTS.quantityRules,this.updateQuantityRules.bind(this))}disconnectedCallback(){this.abortController.abort(),this.quantityUpdateUnsubscriber&&this.quantityUpdateUnsubscriber(),this.quantityBoundriesUnsubscriber&&this.quantityBoundriesUnsubscriber(),this.quantityRulesUnsubscriber&&this.quantityRulesUnsubscriber()}onButtonClick(event){event.preventDefault();const previousValue=this.input.value;event.currentTarget.name==="plus"?parseInt(this.input.getAttribute("data-min"))>parseInt(this.input.step)&&this.input.value==0?this.input.value=this.input.getAttribute("data-min"):this.input.stepUp():this.input.stepDown(),previousValue!==this.input.value&&this.input.dispatchEvent(this.changeEvent),this.input.getAttribute("data-min")===previousValue&&event.currentTarget.name==="minus"&&(this.input.value=parseInt(this.input.min))}onInputChange(){this.input.value===""&&(this.input.value=parseInt(this.input.min)),this.validateQtyRules()}validateQtyRules(){const value=parseInt(this.input.value);if(this.input.min){const buttonMinus=this.querySelector('button[name="minus"]');buttonMinus&&buttonMinus.toggleAttribute("disabled",parseInt(value)<=parseInt(this.input.min))}if(this.input.max){const buttonPlus=this.querySelector('button[name="plus"]');buttonPlus&&buttonPlus.toggleAttribute("disabled",parseInt(value)>=parseInt(this.input.max))}}updateQuantityRules({data:{sectionId,productId,parsedHTML}}){if(sectionId!==this.sectionId||productId!==this.productId)return;const selectors=[".quantity__input",".quantity__rules",".quantity__label"],quantityFormUpdated=parsedHTML.getElementById(`QuantityForm-${sectionId}-${this.productId}`),quantityForm=this.closest(`#QuantityForm-${sectionId}-${this.productId}`);for(let selector of selectors){const current=quantityForm.querySelector(selector),updated=quantityFormUpdated.querySelector(selector);if(!(!current||!updated))if(selector===".quantity__input"){const attributes=["data-cart-quantity","data-min","data-max","step"];for(let attribute of attributes){const valueUpdated=updated.getAttribute(attribute);valueUpdated!==null?current.setAttribute(attribute,valueUpdated):current.removeAttribute(attribute)}}else current.innerHTML=updated.innerHTML}}setQuantityBoundries({data:{sectionId,productId}}){if(sectionId!==this.sectionId||productId!==this.productId)return;const data={cartQuantity:this.input.hasAttribute("data-cart-quantity")?parseInt(this.input.getAttribute("data-cart-quantity")):0,min:this.input.hasAttribute("data-min")?parseInt(this.input.getAttribute("data-min")):1,max:this.input.hasAttribute("data-max")?parseInt(this.input.getAttribute("data-max")):null,step:this.input.hasAttribute("step")?parseInt(this.input.getAttribute("step")):1};let min=data.min;const max=data.max===null?data.max:data.max-data.cartQuantity;max!==null&&(min=Math.min(min,max)),data.cartQuantity>=data.min&&(min=Math.min(min,data.step)),this.input.min=min,max?this.input.max=max:this.input.removeAttribute("max"),this.input.value=min,theme.pubsub.publish(theme.pubsub.PUB_SUB_EVENTS.quantityUpdate,void 0)}reset(){this.input.value=this.input.defaultValue}}customElements.define("quantity-input",QuantityInput);class CartCount extends HTMLElement{constructor(){super()}cartUpdateUnsubscriber=void 0;connectedCallback(){this.cartUpdateUnsubscriber=theme.pubsub.subscribe(theme.pubsub.PUB_SUB_EVENTS.cartUpdate,this.onCartUpdate.bind(this))}disconnectedCallback(){this.cartUpdateUnsubscriber&&this.cartUpdateUnsubscriber()}get itemCount(){return parseInt(this.innerText)}onCartUpdate(event){event.cart.errors||(this.innerText=event.cart.item_count,this.hidden=this.itemCount===0)}}customElements.define("cart-count",CartCount);class RecentlyViewed extends HTMLElement{constructor(){if(super(),!theme.config.hasLocalStorage){this.hidden=!0;return}Motion.inView(this,this.init.bind(this),{margin:"600px 0px 600px 0px"})}init(){fetch(this.getAttribute("data-url")+this.getQueryString()).then(response=>response.text()).then(responseText=>{const recommendations=new DOMParser().parseFromString(responseText,"text/html").querySelector(".shopify-section").querySelector("recently-viewed");recommendations&&recommendations.innerHTML.trim().length?(this.innerHTML=recommendations.innerHTML,this.dispatchEvent(new CustomEvent("recentlyViewed:loaded"))):(this.closest(".recently-section")?.remove(),this.dispatchEvent(new CustomEvent("is-empty")))}).catch(e=>{console.error(e)})}getQueryString(){let recentlyViewed="[]";theme.config.hasLocalStorage&&(recentlyViewed=window.localStorage.getItem(`${theme.settings.themeName}:recently-viewed`)||"[]");const items=new Set(JSON.parse(recentlyViewed));return this.hasAttribute("data-product-id")&&items.delete(parseInt(this.getAttribute("data-product-id"))),Array.from(items.values(),item=>`id:${item}`).slice(0,this.hasAttribute("data-limit")?parseInt(this.getAttribute("data-limit")):4).join(" OR ")}}customElements.define("recently-viewed",RecentlyViewed);class ProductRecommendations extends HTMLElement{constructor(){super(),Motion.inView(this,this.init.bind(this),{margin:"600px 0px 600px 0px"})}init(){fetch(this.getAttribute("data-url")).then(response=>response.text()).then(responseText=>{const sectionInnerHTML=new DOMParser().parseFromString(responseText,"text/html").querySelector(".shopify-section");if(sectionInnerHTML===null)return;const recommendations=sectionInnerHTML.querySelector("product-recommendations");recommendations&&recommendations.innerHTML.trim().length?(this.innerHTML=recommendations.innerHTML,this.dispatchEvent(new CustomEvent("recommendations:loaded"))):(this.setAttribute("hidden",""),this.closest(".recommendations-section")?.remove(),this.dispatchEvent(new CustomEvent("is-empty")))}).catch(e=>{console.error(e)})}}customElements.define("product-recommendations",ProductRecommendations);class ProductComplementary extends HTMLElement{constructor(){super()}get container(){return this.closest("product-recommendations")}get prevButton(){return this.container.querySelector("[data-prev-button]")}get nextButton(){return this.container.querySelector("[data-next-button]")}connectedCallback(){this.innerHTML.trim().length?this.classList.contains("flickity")&&(this.carousel=new theme.Carousel(this,{prevNextButtons:!1,adaptiveHeight:!0,pageDots:!1,contain:!0,cellAlign:"center",rightToLeft:theme.config.rtl},{previous:this.prevButton,next:this.nextButton}),this.carousel.load()):this.container.hidden=!0}disconnectedCallback(){this.carousel&&this.carousel.unload()}}customElements.define("product-complementary",ProductComplementary);class MediaElement extends HTMLElement{constructor(){super()}get parallax(){return this.hasAttribute("data-parallax")?parseFloat(this.getAttribute("data-parallax")):!1}get direction(){return this.hasAttribute("data-parallax-dir")?this.getAttribute("data-parallax-dir"):"vertical"}get media(){return Array.from(this.querySelectorAll("picture>img, video, iframe, svg, video-media, g-map"))}connectedCallback(){theme.config.motionReduced||!this.parallax||this.setupParallax()}setupParallax(){const[scale,translate]=[1+this.parallax,this.parallax*100/(1+this.parallax)];this.direction==="vertical"?Motion.scroll(Motion.animate(this.media,{transform:[`scale(${scale}) translateY(0)`,`scale(${scale}) translateY(${translate}%)`],transformOrigin:["bottom","bottom"]},{easing:"linear"}),{target:this,offset:["start end","end start"]}):this.direction==="horizontal"?Motion.scroll(Motion.animate(this.media,{transform:[`scale(${scale}) translateX(0)`,`scale(${scale}) translateX(${translate}%)`],transformOrigin:["right","right"]},{easing:"linear"}),{target:this,offset:["start end","end start"]}):Motion.scroll(Motion.animate(this.media,{transform:["scale(1)",`scale(${scale})`],transformOrigin:["center","center"]},{easing:"linear"}),{target:this,offset:["start end","end start"]})}}customElements.define("media-element",MediaElement);class SplitWords extends HTMLElement{constructor(){super()}connectedCallback(){if(theme.config.motionReduced||!document.body.hasAttribute("data-title-animation"))return;Splitting({target:this,by:"words"})[0].words.forEach((item,index)=>{const wrapper=document.createElement("animate-element");wrapper.className="block",wrapper.setAttribute("data-animate",this.getAttribute("data-animate")),wrapper.setAttribute("data-animate-delay",(this.hasAttribute("data-animate-delay")?parseInt(this.getAttribute("data-animate-delay")):0)+index*30);for(const itemContent of item.childNodes)wrapper.appendChild(itemContent);item.appendChild(wrapper)})}}customElements.define("split-words",SplitWords);class HighlightedText extends HTMLElement{constructor(){super(),Motion.inView(this,this.init.bind(this))}init(){this.classList.add("animate")}}customElements.define("highlighted-text",HighlightedText,{extends:"em"});class MarqueeElement extends HTMLElement{constructor(){super(),!theme.config.motionReduced&&(!theme.config.isTouch||Shopify.designMode?Motion.inView(this,this.init.bind(this),{margin:"200px 0px 200px 0px"}):new theme.initWhenVisible(this.init.bind(this)))}get childElement(){return this.firstElementChild}get speed(){return this.hasAttribute("data-speed")?parseInt(this.getAttribute("data-speed")):16}get maximum(){return this.hasAttribute("data-maximum")?parseInt(this.getAttribute("data-maximum")):Math.ceil(this.parentWidth/this.childElementWidth)+2}get direction(){return this.hasAttribute("data-direction")?this.getAttribute("data-direction"):"left"}get parallax(){return!theme.config.isTouch&&this.hasAttribute("data-parallax")?parseFloat(this.getAttribute("data-parallax")):!1}get parentWidth(){return this.getWidth(this)}get childElementWidth(){return this.getWidth(this.childElement)}init(){if(!this.initialized){if(this.initialized=!0,this.childElementCount===1){this.childElement.classList.add("animate");for(let index=0;indexmedia.classList.remove("loading"));this.style.setProperty("--duration",`${(33-this.speed)*Math.min(2.5,Math.ceil(this.childElementWidth/this.parentWidth))}s`)}if(this.parallax){let translate=this.parallax*100/(1+this.parallax);this.direction==="right"&&(translate=translate*-1),theme.config.rtl&&(translate=translate*-1),Motion.scroll(Motion.animate(this,{transform:[`translateX(${translate}%)`,"translateX(0)"]},{easing:"linear"}),{target:this,offset:["start end","end start"]})}else new IntersectionObserver((entries,_observer)=>{entries.forEach(entry=>{entry.isIntersecting?this.classList.remove("paused"):this.classList.add("paused")})},{rootMargin:"0px 0px 50px 0px"}).observe(this)}}getWidth(element){const rect=element.getBoundingClientRect();return rect.right-rect.left}}customElements.define("marquee-element",MarqueeElement);class ScrolledImages extends HTMLElement{constructor(){super(),Motion.inView(this,this.init.bind(this),{margin:"200px 0px 200px 0px"})}get parallax(){return this.hasAttribute("data-parallax")?parseFloat(this.getAttribute("data-parallax")):!1}get template(){return this.querySelector("template")}get images(){return Array.from(this.template.content.querySelectorAll(".scrolled-images__item"))}init(){this.beforeInit(),!(theme.config.motionReduced||!this.parallax)&&this.setupParallax()}beforeInit(){const main=this.querySelector(".scrolled-images__main");for(let i=0;i<3;i++){let images=this.shuffle(this.images);if(images.length<8){let start=0;for(;images.length<8;)images.push(images[start].cloneNode(!0)),start++}const row=document.createElement("div");row.classList="scrolled-images__row",images.forEach(item=>row.appendChild(item.cloneNode(!0))),main.appendChild(row)}}setupParallax(){Array.from(this.querySelectorAll(".scrolled-images__row")).forEach((element,index)=>{let translate=-1*this.parallax*100/(1+this.parallax);theme.config.rtl&&(translate=translate*-1),index%2===0?Motion.scroll(Motion.animate(element,{transform:[`translateX(${translate}%)`,"translateX(0)"]},{easing:"linear"}),{target:this,offset:Motion.ScrollOffset.Any}):Motion.scroll(Motion.animate(element,{transform:["translateX(0)",`translateX(${translate}%)`]},{easing:"linear"}),{target:this,offset:Motion.ScrollOffset.Any})})}shuffle(arr){return arr.sort(()=>Math.random()-.5)}}customElements.define("scrolled-images",ScrolledImages);class DropdownElement extends HTMLElement{constructor(){super(),this.classes={bodyClass:"has-dropdown"},this.events={afterHide:"dropdown:afterHide",afterShow:"dropdown:afterShow"},this.detectHoverListener=this.detectHover.bind(this),this.controls.forEach(button=>{button.addEventListener("click",this.onToggleClicked.bind(this)),button.addEventListener("mouseenter",this.detectHoverListener.bind(this)),button.addEventListener("mouseleave",this.detectHoverListener.bind(this))}),this.detectClickOutsideListener=this.detectClickOutside.bind(this),this.detectEscKeyboardListener=this.detectEscKeyboard.bind(this),this.detectFocusOutListener=this.detectFocusOut.bind(this)}static get observedAttributes(){return["id","open"]}get open(){return this.hasAttribute("open")}get controls(){return Array.from(document.querySelectorAll(`[aria-controls="${this.id}"]`))}get container(){return this.querySelector("*:first-child")}attributeChangedCallback(name,oldValue,newValue){switch(name){case"open":this.controls.forEach(button=>button.setAttribute("aria-expanded",newValue===null?"false":"true"));break}}show(){return document.body.classList.add(this.classes.bodyClass),this.setAttribute("open",""),document.addEventListener("click",this.detectClickOutsideListener),document.addEventListener("keydown",this.detectEscKeyboardListener),document.addEventListener("focusout",this.detectFocusOutListener),this.afterShow(),theme.utils.waitForEvent(this,this.events.afterShow)}hide(){return document.body.classList.remove(this.classes.bodyClass),this.removeAttribute("open"),document.removeEventListener("click",this.detectClickOutsideListener),document.removeEventListener("keydown",this.detectEscKeyboardListener),document.removeEventListener("focusout",this.detectFocusOutListener),this.afterHide(),theme.utils.waitForEvent(this,this.events.afterHide)}onToggleClicked(event){event?.preventDefault(),this.open?this.hide():this.show()}afterShow(){Motion.animate(this,{opacity:[0,1],visibility:"visible"},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1]}),Motion.animate(this.container,{transform:["translateY(-105%)","translateY(0)"]},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1]})}afterHide(){Motion.animate(this,{opacity:0,visibility:"hidden"},{duration:theme.config.motionReduced?0:.3,easing:[.7,0,.2,1]}),Motion.animate(this.container,{transform:"translateY(-105%)"},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1]})}detectClickOutside(event){this.parentElement.contains(event.target)||this.hide()}detectEscKeyboard(event){event.code==="Escape"&&this.hide()}detectFocusOut(event){event.relatedTarget&&!this.contains(event.relatedTarget)&&this.hide()}detectHover(event){theme.config.isTouch||(event.type==="mouseenter"?this.show():this.hide())}}customElements.define("dropdown-element",DropdownElement);class DropdownLocalization extends DropdownElement{constructor(){super()}afterShow(){Motion.animate(this,{opacity:[0,1],visibility:"visible"},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1]})}afterHide(){Motion.animate(this,{opacity:0,visibility:"hidden"},{duration:theme.config.motionReduced?0:.3,easing:[.7,0,.2,1]})}}customElements.define("dropdown-localization",DropdownLocalization);const lockDropdownCount=new WeakMap;class DetailsDropdown extends HTMLDetailsElement{constructor(){super(),this.classes={bodyClass:"has-dropdown-menu"},this.events={afterHide:"menu:afterHide",afterShow:"menu:afterShow"},this._open=this.hasAttribute("open"),this.summaryElement.addEventListener("click",this.onSummaryClicked.bind(this)),this.detectClickOutsideListener=this.detectClickOutside.bind(this),this.detectEscKeyboardListener=this.detectEscKeyboard.bind(this),this.detectFocusOutListener=this.detectFocusOut.bind(this),this.hoverTimer=null,this.detectHoverListener=this.detectHover.bind(this),this.addEventListener("mouseenter",this.detectHoverListener.bind(this)),this.addEventListener("mouseleave",this.detectHoverListener.bind(this))}set open(value){value!==this._open&&(this._open=value,this.isConnected?this.transition(value):value?this.setAttribute("open",""):this.removeAttribute("open"))}get summaryElement(){return this.firstElementChild}get contentElement(){return this.lastElementChild}get open(){return this._open}get trigger(){return this.hasAttribute("trigger")?this.getAttribute("trigger"):"click"}get level(){return this.hasAttribute("level")?this.getAttribute("level"):"top"}get controlledElement(){return this.hasAttribute("aria-controls")?document.getElementById(this.getAttribute("aria-controls")):null}onSummaryClicked(event){event.preventDefault(),!theme.config.isTouch&&this.trigger==="hover"&&this.summaryElement.hasAttribute("data-link")&&this.summaryElement.getAttribute("data-link").length>0?window.location.href=this.summaryElement.getAttribute("data-link"):this.open=!this.open}async transition(value){return value?(lockDropdownCount.set(DetailsDropdown,lockDropdownCount.get(DetailsDropdown)+1),document.body.classList.add(this.classes.bodyClass),this.setAttribute("open",""),this.summaryElement.setAttribute("open",""),theme.config.motionReduced?this.contentElement.setAttribute("open",""):setTimeout(()=>this.contentElement.setAttribute("open",""),100),document.addEventListener("click",this.detectClickOutsideListener),document.addEventListener("keydown",this.detectEscKeyboardListener),document.addEventListener("focusout",this.detectFocusOutListener),await this.transitionIn(),this.shouldReverse(),theme.utils.waitForEvent(this,this.events.afterShow)):(lockDropdownCount.set(DetailsDropdown,lockDropdownCount.get(DetailsDropdown)-1),document.body.classList.toggle(this.classes.bodyClass,lockDropdownCount.get(DetailsDropdown)>0),this.summaryElement.removeAttribute("open"),this.contentElement.removeAttribute("open"),document.removeEventListener("click",this.detectClickOutsideListener),document.removeEventListener("keydown",this.detectEscKeyboardListener),document.removeEventListener("focusout",this.detectFocusOutListener),await this.transitionOut(),this.open||this.removeAttribute("open"),theme.utils.waitForEvent(this,this.events.afterHide))}async transitionIn(){Motion.animate(this.contentElement,{opacity:[0,1],visibility:"visible"},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1],delay:theme.config.motionReduced?0:.2});const translateY=this.level==="top"?"-105%":"2rem";return Motion.animate(this.contentElement.firstElementChild,{transform:[`translateY(${translateY})`,"translateY(0)"]},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1]}).finished}async transitionOut(){Motion.animate(this.contentElement,{opacity:0,visibility:"hidden"},{duration:theme.config.motionReduced?0:.3,easing:[.7,0,.2,1]});const translateY=this.level==="top"?"-105%":"2rem";return Motion.animate(this.contentElement.firstElementChild,{transform:`translateY(${translateY})`},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1]}).finished}detectClickOutside(event){!this.contains(event.target)&&!(event.target.closest("details")instanceof DetailsDropdown)&&(this.open=!1)}detectEscKeyboard(event){if(event.code==="Escape"){const targetMenu=event.target.closest("details[open]");targetMenu&&(targetMenu.open=!1)}}detectFocusOut(event){event.relatedTarget&&!this.contains(event.relatedTarget)&&(this.open=!1)}detectHover(event){this.trigger!=="hover"||theme.config.isTouch||(event.type==="mouseenter"?this.open=!0:this.open=!1)}shouldReverse(){this.contentElement.offsetLeft+this.contentElement.clientWidth*2>window.innerWidth&&this.contentElement.classList.add("should-reverse")}}customElements.define("details-dropdown",DetailsDropdown,{extends:"details"}),lockDropdownCount.set(DetailsDropdown,0);class DetailsMega extends DetailsDropdown{constructor(){super(),Shopify.designMode&&(this.addEventListener("shopify:block:select",()=>this.open=!0),this.addEventListener("shopify:block:deselect",()=>this.open=!1))}async transitionIn(){return this.contentElement.querySelector("tabs-element")?.unload(),setTimeout(()=>{this.contentElement.querySelector("tabs-element")?.load()},theme.config.motionReduced?0:450),document.body.classList.add("with-mega"),Motion.animate(this.contentElement.firstElementChild,{visibility:"visible",transform:["translateY(-105%)","translateY(0)"]},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1]}).finished}async transitionOut(){return document.body.classList.remove("with-mega"),Motion.animate(this.contentElement.firstElementChild,{visibility:"hidden",transform:"translateY(-105%)"},{duration:theme.config.motionReduced?0:.6,easing:[.7,0,.2,1]}).finished}}customElements.define("details-mega",DetailsMega,{extends:"details"});class LocalizationListbox extends HTMLFormElement{constructor(){super(),this.items.forEach(item=>item.addEventListener("click",this.onItemClick.bind(this)))}get items(){return this._items=this._items||Array.from(this.querySelectorAll("a"))}get input(){return this.querySelector('input[name="locale_code"], input[name="country_code"]')}get returnTo(){return this.querySelector('input[name="return_to"]')}onItemClick(event){event.preventDefault(),this.input.value=event.currentTarget.getAttribute("data-value"),this.returnTo.value=window.location.pathname,this.submit()}}customElements.define("localization-listbox",LocalizationListbox,{extends:"form"});class LocalizationForm extends HTMLFormElement{constructor(){super(),!theme.config.isTouch||Shopify.designMode?Motion.inView(this,this.init.bind(this)):new theme.initWhenVisible(this.init.bind(this))}init(){this.initialized||(this.initialized=!0,this.addEventListener("change",this.submit))}}customElements.define("localization-form",LocalizationForm,{extends:"form"});const cachedSectionsRenderingAPI=new Map;class APIButton extends HTMLButtonElement{constructor(){super(),Motion.inView(this,this.init.bind(this))}get sectionId(){return this.getAttribute("data-section-id")}get sectionRenderingId(){return this.getAttribute("data-id")}init(){if(this.initialized||(this.initialized=!0,document.getElementById(this.sectionRenderingId)===null||document.getElementById(this.sectionRenderingId).hasAttribute("loaded")))return;const url=`${theme.routes.root_url}?section_id=${this.sectionId}`;cachedSectionsRenderingAPI.has(url)?this.renderSectionFromCache(url):this.renderSectionFromFetch(url),this.sectionsRenderingAPIListener=this.afterSectionsRenderingAPI.bind(this),document.addEventListener("sectionsRenderingAPI:cached",this.sectionsRenderingAPIListener)}renderSectionFromCache(url){const responseText=cachedSectionsRenderingAPI.get(url);responseText.length&&this.updateSectionRendering(responseText)}renderSectionFromFetch(url){cachedSectionsRenderingAPI.set(url,""),fetch(url).then(response=>response.text()).then(responseText=>{this.updateSectionRendering(responseText),cachedSectionsRenderingAPI.set(url,responseText),document.dispatchEvent(new CustomEvent("sectionsRenderingAPI:cached",{detail:{url,sectionId:this.sectionId}}))}).catch(e=>{console.error(e)})}updateSectionRendering(responseText){const parsedHTML=new DOMParser().parseFromString(responseText,"text/html");document.getElementById(this.sectionRenderingId).replaceWith(parsedHTML.getElementById(this.sectionRenderingId)),document.removeEventListener("sectionsRenderingAPI:cached",this.sectionsRenderingAPIListener)}afterSectionsRenderingAPI(event){event.detail.sectionId===this.sectionId&&this.renderSectionFromCache(event.detail.url)}}customElements.define("api-button",APIButton,{extends:"button"});class APIHoverButton extends APIButton{constructor(){super(),this.hoverButton=new theme.HoverButton(this),this.hoverButton.load()}}customElements.define("api-hover-button",APIHoverButton,{extends:"button"});class APIMagnetButton extends APIButton{constructor(){super(),this.magnetButton=new theme.MagnetButton(this),this.magnetButton.load()}}customElements.define("api-magnet-button",APIMagnetButton,{extends:"button"});class StickyElement extends HTMLElement{constructor(){super(),this.endScroll=window.innerHeight-this.offsetHeight-500,this.currPos=window.scrollY,this.screenHeight=window.innerHeight,this.stickyElementHeight=this.offsetHeight,this.bottomGap=this.offsetHeightthis.screenHeight?window.scrollY=this.headerHeight&&stickyElementTop!==this.headerHeight&&(this.style.insetBlockStart=`${this.headerHeight}px`,this.style.setProperty("--inset",`${this.headerHeight}px`)):stickyElementTop>this.endScroll?(this.style.insetBlockStart=`${stickyElementTop+this.currPos-window.scrollY}px`,this.style.setProperty("--inset",`${stickyElementTop+this.currPos-window.scrollY}px`)):stickyElementTop{Motion.animate(this,{transform:"translateY(0)"},{duration:0})})}}customElements.define("footer-parallax",FooterParallax,{extends:"div"});class FooterGroup extends HTMLElement{constructor(){super(),this.init(),Shopify.designMode&&document.addEventListener("shopify:section:load",this.init.bind(this))}get rounded(){return Array.from(this.querySelectorAll(".section--rounded"))}get sections(){return Array.from(this.querySelectorAll(".shopify-section"))}init(){this.sections.forEach((shopifySection,index)=>{const section=shopifySection.querySelector(".section");section&&(section.classList.remove("section--next-rounded"),section.style.zIndex=this.sections.length-index)}),this.rounded.forEach(section=>{let previousShopifySection=section.closest(".shopify-section").previousElementSibling;if(previousShopifySection===null&&(previousShopifySection=document.querySelector(".main-content .shopify-section:last-child")),previousShopifySection){const previousSection=previousShopifySection.querySelector(".section");previousSection&&previousSection.classList.add("section--next-rounded")}})}}customElements.define("footer-group",FooterGroup);class CarouselElement extends HTMLElement{constructor(){super(),Motion.inView(this,this.init.bind(this),{margin:"200px 0px 200px 0px"})}get items(){return this._items=this._items||Array.from(this.children)}get watchCSS(){return this.hasAttribute("watch-css")}get initialIndex(){return parseInt(this.getAttribute("initial-index")||0)}init(){this.items.length>1&&(this.carousel=new Flickity(this,{watchCSS:this.watchCSS,prevNextButtons:!1,adaptiveHeight:!0,wrapAround:!0,rightToLeft:theme.config.rtl,initialIndex:this.initialIndex}),this.addEventListener("control:select",event=>this.select(event.detail.index)),this.carousel.on("change",this.onChange.bind(this)),Shopify.designMode&&this.addEventListener("shopify:block:select",event=>this.carousel.select(this.items.indexOf(event.target))))}disconnectedCallback(){this.carousel&&this.carousel.destroy()}select(index=0,immediate=!1){if(!immediate){const{selectedIndex,slides}=this.carousel;immediate=Math.abs(index-selectedIndex)>3,index===0&&selectedIndex===slides.length-1&&(immediate=!1),index===slides.length-1&&selectedIndex===0&&(immediate=!1)}this.carousel.select(index,!1,immediate)}onChange(index){this.dispatchEvent(new CustomEvent("carousel:change",{bubbles:!0,detail:{index}}))}}customElements.define("carousel-element",CarouselElement);class TestimonialsElement extends CarouselElement{constructor(){super(),Motion.inView(this,()=>{setTimeout(()=>this.update(),600)})}update(){this.carousel&&this.carousel.select(0)}}customElements.define("testimonials-element",TestimonialsElement);class SecondaryMedia extends HTMLElement{constructor(){super(),Motion.inView(this,()=>{setTimeout(()=>this.init())},{margin:"200px 0px 200px 0px"})}get template(){return this.previousElementSibling}disconnectedCallback(){this.carousel&&this.carousel.destroy()}init(){this.appendChild(this.template.content.cloneNode(!0)),this.mediaCount=this.querySelectorAll(".media").length,this.mediaCount>1&&(this.carousel=new Flickity(this,{accessibility:!1,draggable:!1,pageDots:!0,prevNextButtons:!1,wrapAround:!0,rightToLeft:theme.config.rtl}),this.mediaCount===2&&this.classList.add("without-dots"),this.addEventListener("mousemove",this.onMoveHandler),this.addEventListener("mouseleave",this.onLeaveHandler))}onMoveHandler(event){if(this.mediaCount===2)return this.carousel.select(1);const{width}=this.carousel.size,mouseX=event.clientX-this.getBoundingClientRect().left;if(this.mediaCount===3)return mouseX{const rect=item.getBoundingClientRect();rect.top0?visible.push(item):invisible.push(item)}),{visible,invisible}}unload(){const{distance}=this.getAnimationParams(),visibleItems=this.items;Motion.animate(visibleItems,{y:distance,opacity:0,visibility:"hidden"},{duration:0})}load(){const{distance,duration,staggerDelay}=this.getAnimationParams(),{visible:visibleItems,invisible:inVisibleItems}=this.getVisibleItems(this.items);Motion.animate(visibleItems,{y:[distance,0],opacity:[0,1],visibility:["hidden","visible"]},{duration,delay:Motion.stagger(staggerDelay)}).finished,Motion.animate(inVisibleItems,{y:[distance,0],opacity:[0,1],visibility:["hidden","visible"]},{duration})}reload(){const{distance,duration,staggerDelay}=this.getAnimationParams(),{visible:visibleItems,invisible:inVisibleItems}=this.getVisibleItems(this.itemsToShow);Motion.animate(visibleItems,{y:[distance,0],opacity:[0,1],visibility:["hidden","visible"]},{duration,delay:Motion.stagger(staggerDelay)}).finished,Motion.animate(inVisibleItems,{y:[distance,0],opacity:[0,1],visibility:["hidden","visible"]},{duration})}}customElements.define("motion-list",MotionList);class LazyBackground extends HTMLElement{constructor(){super(),this.init()}get image(){const style=window.getComputedStyle(this);return style.backgroundImage?style.backgroundImage.slice(5,-2).replace("width=1","width=720"):!1}async init(){if(!this.image)return;const img=document.createElement("img");img.src=this.image,img.style.visibility="hidden",img.style.position="absolute",await theme.utils.imageLoaded(img),this.style.backgroundImage=`url(${this.image})`,img.remove()}}customElements.define("lazy-background",LazyBackground);class MenuToggle extends MagnetButton{constructor(){super(),this.addEventListener("click",this.onClick)}get controlledElement(){return this.hasAttribute("aria-controls")?document.getElementById(this.getAttribute("aria-controls")):null}get expanded(){return this.getAttribute("aria-expanded")==="true"}onClick(){this.setAttribute("aria-expanded",this.expanded?"false":"true"),this.controlledElement&&this.controlledElement.classList.toggle("active")}}customElements.define("menu-toggle",MenuToggle,{extends:"button"});class ScrollShadow extends HTMLElement{constructor(){super(),Motion.inView(this,this.init.bind(this))}get template(){return this.querySelector("template")}init(){this.attachShadow({mode:"open"}),this.shadowRoot.appendChild(this.template.content.cloneNode(!0)),this.shadowRoot.addEventListener("slotchange",()=>this.load()),this.updater=new theme.scrollShadow.Updater(this.shadowRoot.children[1]),this.load()}load(){this.updater.on(this.children[0])}disconnectedCallback(){this.updater?.on()}}customElements.define("scroll-shadow",ScrollShadow);class CustomSelect extends HTMLSelectElement{constructor(){super(),this.onChange(),this.addEventListener("change",this.onChange)}onChange(){this.value!==""||this.selectedIndex===-1?this.setAttribute("selected",""):this.removeAttribute("selected")}}customElements.define("custom-select",CustomSelect,{extends:"select"});class GMap extends HTMLElement{constructor(){super(),!(!this.hasAttribute("data-api-key")||!this.hasAttribute("data-map-address"))&&(Motion.inView(this,this.prepMapApi.bind(this),{margin:"600px 0px 600px 0px"}),window.gm_authFailure=()=>{Shopify.designMode&&window.mapError(theme.strings.authError)},window.mapError=(error,element)=>{const container=element?element.closest(".shopify-section"):document;container.querySelectorAll(".gmap--error").forEach(error2=>{error2.remove()}),container.querySelectorAll("g-map").forEach(map=>{const message=document.createElement("div");message.classList.add("rte","alert","alert--error","gmap--error"),message.innerHTML=error,map.closest(".with-map").prepend(message)})},window.gmNoop=()=>{})}prepMapApi(){this.loadScript().then(this.initMap.bind(this)).then(()=>{setTimeout(()=>{const container=this.closest(".banner__map");container&&container.previousElementSibling&&container.previousElementSibling.classList.remove("opacity-0")},1e3)})}loadScript(){return new Promise((resolve,reject)=>{const script=document.createElement("script");document.body.appendChild(script),script.onload=resolve,script.onerror=reject,script.async=!0,script.src=`https://maps.googleapis.com/maps/api/js?key=${this.getAttribute("data-api-key")}&callback=gmNoop`})}initMap(){new google.maps.Geocoder().geocode({address:this.getAttribute("data-map-address")},(results,status)=>{if(status!==google.maps.GeocoderStatus.OK){if(Shopify.designMode){let errorMessage;switch(status){case"ZERO_RESULTS":errorMessage=theme.strings.addressNoResults;break;case"OVER_QUERY_LIMIT":errorMessage=theme.strings.addressQueryLimit;break;case"REQUEST_DENIED":errorMessage=theme.strings.authError;break;default:errorMessage=theme.strings.addressError;break}window.mapError(errorMessage,this)}}else{const mapOptions={zoom:parseInt(this.getAttribute("data-zoom")),center:results[0].geometry.location,draggable:!0,clickableIcons:!1,scrollwheel:!1,disableDoubleClickZoom:!0,disableDefaultUI:!0},map=new google.maps.Map(this,mapOptions),center=map.getCenter();map.setCenter(center);const icon={path:"M22.6746 0C10.2174 0 0 8.79169 0 21.5118C0 31.2116 4.33864 38.333 9.26606 42.998C11.7232 45.3243 14.3387 47.0534 16.6674 48.2077C18.9384 49.3333 21.1148 50 22.6746 50C24.2345 50 26.4108 49.3333 28.6818 48.2077C31.0105 47.0534 33.626 45.3243 36.0832 42.998C41.0106 38.333 45.3492 31.2116 45.3492 21.5118C45.3492 8.79169 35.1318 0 22.6746 0ZM29.6514 22.6746C29.6514 26.5278 26.5278 29.6514 22.6746 29.6514C18.8214 29.6514 15.6978 26.5278 15.6978 22.6746C15.6978 18.8214 18.8214 15.6978 22.6746 15.6978C26.5278 15.6978 29.6514 18.8214 29.6514 22.6746Z",fillColor:this.getAttribute("data-marker-color"),fillOpacity:1,anchor:new google.maps.Point(15,55),strokeWeight:0,scale:.7};new google.maps.Marker({map,position:map.getCenter(),icon});const styledMapType=new google.maps.StyledMapType(JSON.parse(this.parentNode.querySelector("[data-gmap-style]").innerHTML));map.mapTypes.set("styled_map",styledMapType),map.setMapTypeId("styled_map")}})}}customElements.define("g-map",GMap);class GMapLocations extends HTMLUListElement{constructor(){super(),this.selectedIndex=this.selectedIndex,this.buttons.forEach((button,index)=>button.addEventListener("click",()=>this.selectedIndex=index)),Shopify.designMode&&this.addEventListener("shopify:block:select",event=>this.selectedIndex=this.buttons.indexOf(event.target))}static get observedAttributes(){return["selected-index"]}get selectedIndex(){return parseInt(this.getAttribute("selected-index"))||0}set selectedIndex(index){this.setAttribute("selected-index",Math.min(Math.max(index,0),this.buttons.length-1).toString())}get buttons(){return this._buttons=this._buttons||Array.from(this.hasAttribute("selector")?this.querySelectorAll(this.getAttribute("selector")):this.children)}get controlledElement(){return this.hasAttribute("aria-controls")?document.getElementById(this.getAttribute("aria-controls")):null}attributeChangedCallback(name,oldValue,newValue){if(this.buttons.forEach((button,index)=>{button.classList.toggle("active",index===parseInt(newValue)),button.querySelector("[data-map-button]")?.classList.toggle("button--secondary",index!==parseInt(newValue))}),name==="selected-index"&&oldValue!==null&&oldValue!==newValue&&this.controlledElement){const button=this.buttons[parseInt(newValue)];this.controlledElement.setAttribute("data-map-address",button.getAttribute("data-map-address")),this.controlledElement.initMap()}}}customElements.define("g-map-locations",GMapLocations,{extends:"ul"});class PreviousButton extends HoverButton{constructor(){super(),this.load()}get controlledElement(){return this.hasAttribute("aria-controls")?document.getElementById(this.getAttribute("aria-controls")):null}load(){this.onClickListener=this.onClick.bind(this),this.addEventListener("click",this.onClickListener),this.controlledElement&&(this.updateStatusListener=this.updateStatus.bind(this),this.controlledElement.addEventListener("slider:previousStatus",this.updateStatusListener))}unload(){this.removeEventListener("click",this.onClickListener),this.controlledElement&&this.controlledElement.removeEventListener("slider:previousStatus",this.updateStatusListener)}onClick(){(this.controlledElement??this).dispatchEvent(new CustomEvent("slider:previous",{bubbles:!0,cancelable:!0}))}updateStatus(event){switch(event.detail.status){case"hidden":this.hidden=!0;break;case"disabled":this.disabled=!0;break;default:this.hidden=!1,this.disabled=!1}}}customElements.define("previous-button",PreviousButton,{extends:"button"});class NextButton extends HoverButton{constructor(){super(),this.load()}get controlledElement(){return this.hasAttribute("aria-controls")?document.getElementById(this.getAttribute("aria-controls")):null}load(){this.onClickListener=this.onClick.bind(this),this.addEventListener("click",this.onClickListener),this.controlledElement&&(this.updateStatusListener=this.updateStatus.bind(this),this.controlledElement.addEventListener("slider:nextStatus",this.updateStatusListener))}unload(){this.removeEventListener("click",this.onClickListener),this.controlledElement&&this.controlledElement.removeEventListener("slider:nextStatus",this.updateStatusListener)}onClick(){(this.controlledElement??this).dispatchEvent(new CustomEvent("slider:next",{bubbles:!0,cancelable:!0}))}updateStatus(event){switch(event.detail.status){case"hidden":this.hidden=!0;break;case"disabled":this.disabled=!0;break;default:this.hidden=!1,this.disabled=!1}}}customElements.define("next-button",NextButton,{extends:"button"});class SliderElement extends HTMLElement{constructor(){super(),Motion.inView(this,this.init.bind(this),{margin:"200px 0px 200px 0px"})}get looping(){return!1}get items(){return this._items=this._items||Array.from(this.hasAttribute("selector")?this.querySelectorAll(this.getAttribute("selector")):this.children)}get itemsToShow(){return Array.from(this.items).filter(element=>element.clientWidth>0)}get itemOffset(){return theme.config.rtl?this.itemsToShow.length>1?this.itemsToShow[0].offsetLeft-this.itemsToShow[1].offsetLeft:0:this.itemsToShow.length>1?this.itemsToShow[1].offsetLeft-this.itemsToShow[0].offsetLeft:0}get perPage(){let elementWidth=this.clientWidth;if(window.matchMedia("screen and (min-width: 1280px)").matches){const styles=window.getComputedStyle(this);elementWidth=this.clientWidth-parseFloat(styles.paddingLeft)-parseFloat(styles.paddingRight)}return Math.floor(elementWidth/this.itemOffset)}get totalPages(){return this.itemsToShow.length-this.perPage+1}reset(){this._items=Array.from(this.hasAttribute("selector")?this.querySelectorAll(this.getAttribute("selector")):this.children)}init(){this.hasPendingOnScroll=!1,this.currentPage=1,this.updateButtons(),this.addEventListener("scroll",theme.utils.debounce(this.update.bind(this),50)),this.addEventListener("scrollend",this.scrollend),this.addEventListener("slider:previous",this.previous),this.addEventListener("slider:next",this.next),Shopify.designMode&&this.addEventListener("shopify:block:select",event=>event.target.scrollIntoView({behavior:"smooth"}))}previous(){this.scrollPosition=this.scrollLeft-this.perPage*this.itemOffset*(theme.config.rtl?-1:1),this.scrollToPosition(this.scrollPosition)}next(){this.scrollPosition=this.scrollLeft+this.perPage*this.itemOffset*(theme.config.rtl?-1:1),this.scrollToPosition(this.scrollPosition)}select(selectedIndex,immediate=!1){this.scrollPosition=this.scrollLeft-(this.currentPage-selectedIndex)*this.itemOffset*(theme.config.rtl?-1:1),this.scrollToPosition(this.scrollPosition,immediate)}selected(selectedIndex){return this.itemsToShow[selectedIndex]}scrollend(){this.hasPendingOnScroll=!1,this.dispatchEventHandler()}update(){window.onscrollend===void 0&&clearTimeout(this.scrollendTimeout);const previousPage=this.currentPage;this.currentPage=Math.round(Math.abs(this.scrollLeft)/this.itemOffset)+1,this.currentPage!==previousPage&&(this.hasPendingOnScroll||this.dispatchEventHandler(),this.itemsToShow.forEach((sliderItem,index)=>{sliderItem.classList.toggle("selected",index+1===this.currentPage)})),window.onscrollend===void 0&&(this.scrollendTimeout=setTimeout(()=>{this.dispatchEvent(new CustomEvent("scrollend",{bubbles:!0,composed:!0}))},75)),!this.looping&&this.updateButtons()}updateButtons(){let previousDisabled=this.currentPage===1,nextDisabled=this.currentPage===this.itemsToShow.length;this.perPage>1&&(previousDisabled=previousDisabled||this.itemsToShow.length>0&&this.isVisible(this.itemsToShow[0])&&this.scrollLeft===0,nextDisabled=nextDisabled||this.itemsToShow.length>0&&this.isVisible(this.itemsToShow[this.itemsToShow.length-1])),this.dispatchEvent(new CustomEvent("slider:previousStatus",{bubbles:!0,detail:{status:previousDisabled?nextDisabled?"hidden":"disabled":"visible"}})),this.dispatchEvent(new CustomEvent("slider:nextStatus",{bubbles:!0,detail:{status:nextDisabled?previousDisabled?"hidden":"disabled":"visible"}}))}isVisible(element,offset=0){const lastVisibleSlide=this.clientWidth+this.scrollLeft-offset;return element.offsetLeft+element.clientWidth<=lastVisibleSlide&&element.offsetLeft>=this.scrollLeft}scrollToPosition(position,immediate=!1){this.hasPendingOnScroll=!immediate,this.scrollTo({left:position,behavior:immediate?"instant":theme.config.motionReduced?"auto":"smooth"})}dispatchEventHandler(){this.dispatchEvent(new CustomEvent("slider:change",{detail:{currentPage:this.currentPage,currentElement:this.itemsToShow[this.currentPage-1]}}))}}customElements.define("slider-element",SliderElement);class SliderDots extends HTMLElement{constructor(){super(),new theme.initWhenVisible(this.init.bind(this))}get controlledElement(){return this.hasAttribute("aria-controls")?document.getElementById(this.getAttribute("aria-controls")):null}get items(){return this._items=this._items||Array.from(this.children)}get itemsToShow(){return Array.from(this.items).filter(element=>element.clientWidth>0)}init(){this.initialized||(this.initialized=!0,this.controlledElement&&(this.controlledElement.addEventListener("slider:change",this.onChange.bind(this)),this.items.forEach(item=>{item.addEventListener("click",this.onButtonClick.bind(this))})))}reset(){this._items=Array.from(this.children)}onChange(event){this.transitionTo(parseInt(event.detail.currentPage)-1),this.itemsToShow.forEach(item=>{item.setAttribute("aria-current",parseInt(item.getAttribute("data-index"))===parseInt(event.detail.currentPage)?"true":"false")})}transitionTo(selectedIndex,immediate=!1){if(this.itemsToShow[selectedIndex]){const scrollElement=this.hasAttribute("align-selected")?this.closest(this.getAttribute("align-selected")):this;scrollElement.scrollTo({left:this.itemsToShow[selectedIndex].offsetLeft-scrollElement.clientWidth/2+this.itemsToShow[selectedIndex].clientWidth/2,top:this.itemsToShow[selectedIndex].offsetTop-scrollElement.clientHeight/2-this.itemsToShow[selectedIndex].clientHeight/2,behavior:immediate?"instant":theme.config.motionReduced?"auto":"smooth"})}}onButtonClick(event){event.preventDefault();const target=event.currentTarget;this.itemsToShow.forEach(item=>{item.setAttribute("aria-current",item.getAttribute("data-index")===target.getAttribute("data-index")?"true":"false")}),this.controlledElement.select(parseInt(target.getAttribute("data-index")))}}customElements.define("slider-dots",SliderDots);class ProgressBar extends HTMLElement{constructor(){super(),!this.hasAttribute("style")&&Motion.inView(this,this.init.bind(this))}init(){this.style.setProperty("--progress",`${parseInt(this.getAttribute("data-value"))*.75*100/parseInt(this.getAttribute("data-max"))}%`)}}customElements.define("progress-bar",ProgressBar);const onYouTubePromise=new Promise(resolve=>{window.onYouTubeIframeAPIReady=()=>resolve()});class DeferredMedia extends HTMLElement{constructor(){super(),this.posterElement&&this.posterElement.addEventListener("click",this.onPosterClick.bind(this)),this.autoplay&&Motion.inView(this,this.init.bind(this))}get posterElement(){return this.querySelector('[id^="DeferredPoster-"]')}get controlledElement(){return this.hasAttribute("aria-controls")?document.getElementById(this.getAttribute("aria-controls")):null}get autoplay(){return this.hasAttribute("autoplay")}get playing(){return this.hasAttribute("playing")}get player(){return this.playerProxy=this.playerProxy||new Proxy(this.playerTarget(),{get:(target,prop)=>async()=>{target=await target,this.playerHandler(target,prop)}})}static get observedAttributes(){return["playing"]}onPosterClick(event){event.preventDefault(),event.stopPropagation(),this.playing?(this.paused=!0,this.pause()):(this.paused=!1,this.play())}init(){return this.paused||this.play(),()=>{this.pause()}}play(){this.playing||this.player.play()}pause(){this.playing&&this.player.pause()}attributeChangedCallback(name,oldValue,newValue){if(name==="playing"){if(oldValue===null&&newValue==="")return this.dispatchEvent(new CustomEvent("video:play",{bubbles:!0}));if(newValue===null)return this.dispatchEvent(new CustomEvent("video:pause",{bubbles:!0}))}}}class VideoMedia extends DeferredMedia{constructor(){super()}playerTarget(){if(this.hasAttribute("host"))return this.setAttribute("loaded",""),this.closest(".media")?.classList.remove("loading"),new Promise(async resolve=>{const templateElement=this.querySelector("template");templateElement&&templateElement.replaceWith(templateElement.content.firstElementChild.cloneNode(!0));const muteVideo=this.hasAttribute("autoplay")||window.matchMedia("screen and (max-width: 1023px)").matches,script=document.createElement("script");if(script.type="text/javascript",this.getAttribute("host")==="youtube"){(!window.YT||!window.YT.Player)&&(script.src="https://www.youtube.com/iframe_api",document.head.appendChild(script),await new Promise(resolve2=>{script.onload=resolve2})),await onYouTubePromise;const player=new YT.Player(this.querySelector("iframe"),{events:{onReady:()=>{muteVideo&&player.mute(),resolve(player)},onStateChange:event=>{event.data===YT.PlayerState.PLAYING?this.setAttribute("playing",""):(event.data===YT.PlayerState.ENDED||event.data===YT.PlayerState.PAUSED)&&this.removeAttribute("playing")}}})}if(this.getAttribute("host")==="vimeo"){(!window.Vimeo||!window.Vimeo.Player)&&(script.src="https://player.vimeo.com/api/player.js",document.head.appendChild(script),await new Promise(resolve2=>{script.onload=resolve2}));const player=new Vimeo.Player(this.querySelector("iframe"));muteVideo&&player.setMuted(!0),player.on("play",()=>{this.setAttribute("playing","")}),player.on("pause",()=>this.removeAttribute("playing")),player.on("ended",()=>this.removeAttribute("playing")),resolve(player)}});{const templateElement=this.querySelector("template");templateElement&&templateElement.replaceWith(templateElement.content.firstElementChild.cloneNode(!0)),this.setAttribute("loaded",""),this.closest(".media")?.classList.remove("loading");const player=this.querySelector("video");return player.addEventListener("play",()=>{this.setAttribute("playing",""),this.removeAttribute("suspended")}),player.addEventListener("pause",()=>{!player.seeking&&player.paused&&this.removeAttribute("playing")}),player}}playerHandler(target,prop){this.getAttribute("host")==="youtube"?prop==="play"?target.playVideo():target.pauseVideo():prop==="play"&&!this.hasAttribute("host")?target.play().catch(error=>{if(error.name==="NotAllowedError"){this.setAttribute("suspended",""),target.controls=!0;const replacementImageSrc=target.previousElementSibling?.currentSrc;replacementImageSrc&&(target.poster=replacementImageSrc)}}):target[prop]()}}customElements.define("video-media",VideoMedia);class ModelMedia extends DeferredMedia{constructor(){super(),this.player,this.closeElement&&this.closeElement.addEventListener("click",this.onCloseClick.bind(this))}get closeElement(){return this.querySelector('[id^="DeferredPosterClose-"]')}onCloseClick(event){event.preventDefault(),event.stopPropagation(),this.modelViewerUI&&this.modelViewerUI.pause()}playerTarget(){return new Promise(()=>{this.setAttribute("loaded",""),Shopify.loadFeatures([{name:"shopify-xr",version:"1.0",onLoad:this.setupShopifyXR.bind(this)},{name:"model-viewer-ui",version:"1.0",onLoad:this.setupModelViewerUI.bind(this)}])})}playerHandler(target,prop){target[prop]()}async setupShopifyXR(){if(!window.ShopifyXR){document.addEventListener("shopify_xr_initialized",this.setupShopifyXR.bind(this));return}document.querySelectorAll('[id^="ProductJSON-"]').forEach(modelJSON=>{window.ShopifyXR.addModels(JSON.parse(modelJSON.textContent)),modelJSON.remove()}),window.ShopifyXR.setupXRElements()}setupModelViewerUI(errors){if(errors)return;const modelViewer=this.querySelector("model-viewer");modelViewer&&!modelViewer.hasAttribute("loaded")&&(modelViewer.setAttribute("loaded",""),modelViewer.addEventListener("shopify_model_viewer_ui_toggle_play",this.modelViewerPlayed.bind(this)),modelViewer.addEventListener("shopify_model_viewer_ui_toggle_pause",this.modelViewerPaused.bind(this)),this.modelViewerUI=new Shopify.ModelViewerUI(modelViewer))}modelViewerPlayed(){this.setAttribute("playing",""),this.closeElement.removeAttribute("hidden"),(this.controlledElement??this).dispatchEvent(new CustomEvent("modelViewer:play",{bubbles:!0}))}modelViewerPaused(){this.removeAttribute("playing"),this.closeElement.setAttribute("hidden",""),(this.controlledElement??this).dispatchEvent(new CustomEvent("modelViewer:pause",{bubbles:!0}))}}customElements.define("model-media",ModelMedia);class VariantSelects extends HTMLElement{constructor(){super()}connectedCallback(){this.addEventListener("change",event=>{const target=this.getInputForEventTarget(event.target);this.updateSelectionMetadata(event.target),theme.pubsub.publish(theme.pubsub.PUB_SUB_EVENTS.optionValueSelectionChange,{data:{event,target,selectedOptionValues:this.selectedOptionValues}})})}updateSelectionMetadata(target){target.tagName==="SELECT"&&target.selectedOptions.length&&(Array.from(target.options).find(option=>option.hasAttribute("selected")).removeAttribute("selected"),target.selectedOptions[0].setAttribute("selected",""))}getInputForEventTarget(target){return target.tagName==="SELECT"?target.selectedOptions[0]:target}get selectedOptionValues(){return Array.from(this.querySelectorAll("select option[selected], fieldset input:checked")).map(selector=>selector.getAttribute("data-option-value-id"))}}customElements.define("variant-selects",VariantSelects);class ProductInfo extends HTMLElement{onVariantChangeUnsubscriber=void 0;cartUpdateUnsubscriber=void 0;abortController=void 0;pendingRequestUrl=null;preProcessHtmlCallbacks=[];postProcessHtmlCallbacks=[];constructor(){super()}get sectionId(){return this.hasAttribute("data-original-section-id")?this.getAttribute("data-original-section-id"):this.getAttribute("data-section-id")}get productId(){return this.getAttribute("data-product-id")}get productForm(){return this.querySelector('form[is="product-form"]')}get productStickyForm(){return document.getElementById(`ProductStickyForm-${this.sectionId}-${this.productId}`)}get pickupAvailability(){return this.querySelector("pickup-availability")}get variantSelectors(){return this.querySelector("variant-selects")}get quantityInput(){return this.querySelector("quantity-input input")}connectedCallback(){this.initProductAnimation(),this.onVariantChangeUnsubscriber=theme.pubsub.subscribe(theme.pubsub.PUB_SUB_EVENTS.optionValueSelectionChange,this.handleOptionValueChange.bind(this)),this.initQuantityHandlers(),this.dispatchEvent(new CustomEvent("product-info:loaded",{bubbles:!0}))}disconnectedCallback(){this.onVariantChangeUnsubscriber(),this.cartUpdateUnsubscriber?.()}initProductAnimation(){theme.config.motionReduced||(this.animation=new theme.Animation(this),this.animation.beforeLoad(),Motion.inView(this,async()=>{!this.immediate&&this.media&&await theme.utils.imageLoaded(this.media),this.animation.load()}))}handleOptionValueChange({data:{event,target,selectedOptionValues}}){if(!this.contains(event.target))return;this.resetProductFormState();const productUrl=target.getAttribute("data-product-url")||this.pendingRequestUrl||this.getAttribute("data-product-url");if(this.pendingRequestUrl=productUrl,this.getAttribute("data-product-url")!==productUrl){window.location.href=productUrl;return}this.renderProductInfo({requestUrl:this.buildRequestUrlWithParams(productUrl,selectedOptionValues),targetId:target.tagName==="OPTION"?target.parentElement.id:target.id,callback:this.handleUpdateProductInfo()})}resetProductFormState(){this.productForm?.handleErrorMessage(),this.productForm?.toggleSubmitButton(!0,""),this.productStickyForm?.handleErrorMessage(),this.productStickyForm?.toggleSubmitButton(!0,"")}renderProductInfo({requestUrl,targetId,callback}){this.abortController?.abort(),this.abortController=new AbortController,fetch(requestUrl,{signal:this.abortController.signal}).then(response=>response.text()).then(responseText=>{if(this.pendingRequestUrl=null,callback!==void 0){const parsedHTML=new DOMParser().parseFromString(responseText,"text/html");callback(parsedHTML)}}).then(()=>{const activeElement=document.getElementById(targetId);activeElement!==null&&(activeElement.hasAttribute("align-selected")&&activeElement.closest(activeElement.getAttribute("align-selected")).scrollTo({left:activeElement.offsetLeft,behavior:"instant"}),setTimeout(()=>{activeElement.focus({preventScroll:!0})},100))}).catch(error=>{error.name==="AbortError"?console.log("Fetch aborted by user"):console.error(error)})}buildRequestUrlWithParams(url,optionValues){const params=[];return params.push(`section_id=${this.sectionId}`),optionValues.length&¶ms.push(`option_values=${optionValues.join(",")}`),`${url}?${params.join("&")}`}handleUpdateProductInfo(){return parsedHTML=>{const variant=this.getSelectedVariant(parsedHTML);if(this.pickupAvailability?.update(variant),this.updateOptionValues(parsedHTML),this.updateURL(variant?.id),this.updateVariantInputs(variant?.id),!variant){this.setUnavailable();return}const updateSourceFromDestination=id=>{const source=parsedHTML.getElementById(`${id}-${this.sectionId}-${this.productId}`),destination=document.querySelector(`#${id}-${this.sectionId}-${this.productId}`);source&&destination&&(destination.innerHTML=source.innerHTML,destination.removeAttribute("hidden"))};updateSourceFromDestination("ProductGallery"),updateSourceFromDestination("Price"),updateSourceFromDestination("BuyButtonPrice"),updateSourceFromDestination("StickyPrice"),updateSourceFromDestination("Sku"),updateSourceFromDestination("Inventory"),updateSourceFromDestination("Volume"),updateSourceFromDestination("PricePerItem"),updateSourceFromDestination("BackInStock"),updateSourceFromDestination("ProductBundle"),this.updateQuantityRules(this.sectionId,this.productId,parsedHTML),updateSourceFromDestination("QuantityRules"),updateSourceFromDestination("QuantityRulesCart"),updateSourceFromDestination("VolumeNote"),this.productForm?.toggleSubmitButton(!variant.available,theme.variantStrings.soldOut),this.productStickyForm?.toggleSubmitButton(!variant.available,theme.variantStrings.soldOut),theme.pubsub.publish(theme.pubsub.PUB_SUB_EVENTS.variantChange,{data:{sectionId:this.sectionId,productId:this.productId,parsedHTML,variant}}),(this.productForm??document).dispatchEvent(new CustomEvent("variant:change",{detail:{variant}}))}}getSelectedVariant(productInfoNode){const selectedVariant=productInfoNode.querySelector("[data-selected-variant]")?.textContent;return selectedVariant?JSON.parse(selectedVariant):null}updateOptionValues(parsedHTML){const variantSelects=parsedHTML.getElementById(`VariantPicker-${this.sectionId}-${this.productId}`);variantSelects&&theme.HTMLUpdateUtility.viewTransition(this.variantSelectors,variantSelects,this.preProcessHtmlCallbacks)}updateURL(variantId){if(!variantId||this.getAttribute("data-update-url")==="false")return;const newUrl=new URL(window.location.href);newUrl.searchParams.set("variant",variantId),window.history.replaceState({path:newUrl.toString()},"",newUrl.toString())}updateVariantInputs(variantId){if(!variantId)return;document.querySelectorAll(`#ProductForm-${this.sectionId}-${this.productId}, #ProductFormInstallment-${this.sectionId}-${this.productId}`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=variantId??"",input.dispatchEvent(new Event("change",{bubbles:!0}))})}setUnavailable(){this.productForm?.toggleSubmitButton(!0,theme.variantStrings.unavailable,!0),this.productStickyForm?.toggleSubmitButton(!0,theme.variantStrings.unavailable,!0);const selectors=["ProductGallery","Price","BuyButtonPrice","StickyPrice","Inventory","Sku","PricePerItem","BackInStock","ProductBundle","VolumeNote","Volume","QuantityRules","QuantityRulesCart"].map(id=>`#${id}-${this.sectionId}-${this.productId}`).join(", ");document.querySelectorAll(selectors).forEach(selector=>selector.setAttribute("hidden",""))}initQuantityHandlers(){this.quantityInput&&(this.setQuantityBoundries(),this.hasAttribute("data-original-section-id")||(this.cartUpdateUnsubscriber=theme.pubsub.subscribe(theme.pubsub.PUB_SUB_EVENTS.cartUpdate,this.fetchQuantityRules.bind(this))))}setQuantityBoundries(){theme.pubsub.publish(theme.pubsub.PUB_SUB_EVENTS.quantityBoundries,{data:{sectionId:this.sectionId,productId:this.productId}})}fetchQuantityRules(){const currentVariantId=this.productForm?.variantIdInput?.value;currentVariantId&&(this.querySelector('label[is="quantity-label"]')?.setAttribute("aria-busy","true"),fetch(`${this.getAttribute("data-product-url")}?variant=${currentVariantId}§ion_id=${this.sectionId}`).then(response=>response.text()).then(responseText=>{const parsedHTML=new DOMParser().parseFromString(responseText,"text/html");this.updateQuantityRules(this.sectionId,this.productId,parsedHTML)}).catch(error=>{console.error(error)}).finally(()=>{this.querySelector('label[is="quantity-label"]')?.removeAttribute("aria-busy")}))}updateQuantityRules(sectionId,productId,parsedHTML){this.quantityInput&&(theme.pubsub.publish(theme.pubsub.PUB_SUB_EVENTS.quantityRules,{data:{sectionId,productId,parsedHTML}}),this.setQuantityBoundries())}}customElements.define("product-info",ProductInfo);class ProductForm extends HTMLFormElement{constructor(){super(),this.variantIdInput.disabled=!1,this.addEventListener("submit",this.onSubmitHandler)}get cartDrawer(){return document.querySelector("cart-drawer")}get submitButton(){return this._submitButton=this._submitButton||this.querySelector('[type="submit"]')}get submitButtons(){return this._submitButtons=this._submitButtons||document.querySelectorAll(`[type="submit"][form="${this.getAttribute("id")}"]`)}get hideErrors(){return this.getAttribute("data-hide-errors")==="true"}get variantIdInput(){return this.querySelector('[name="id"]')}get bundles(){return Array.from(document.querySelectorAll(`[form="${this.getAttribute("id")}"] input[name="bundles"]:checked`))}prepareFormData(formData){const bundlesLength=this.bundles.length,itemsArray=new Array(bundlesLength+1);for(let i=0;i0;if(!Shopify.designMode&&(document.body.classList.contains("template-cart")||theme.settings.cartType==="page")){hasBundles&&(theme.utils.postLink2(theme.routes.cart_add_url,{parameters:{...this.prepareFormData(new FormData(this))}}),event.preventDefault());return}if(event.preventDefault(),this.submitButton.hasAttribute("aria-disabled"))return;this.activeElement=event.submitter||event.currentTarget,this.handleErrorMessage();let sectionsToBundle=[];document.documentElement.dispatchEvent(new CustomEvent("cart:bundled-sections",{bubbles:!0,detail:{sections:sectionsToBundle}}));const config=theme.utils.fetchConfig("javascript");config.headers["X-Requested-With"]="XMLHttpRequest",delete config.headers["Content-Type"];const formData=new FormData(this);if(formData.append("sections",sectionsToBundle),formData.append("sections_url",window.location.pathname),config.body=formData,hasBundles){const allFormData=this.prepareFormData(formData);config.body=JSON.stringify(allFormData),config.headers["Content-Type"]="application/json"}this.submitButton.setAttribute("aria-disabled","true"),this.submitButton.setAttribute("aria-busy","true"),fetch(`${theme.routes.cart_add_url}`,config).then(response=>response.json()).then(async parsedState=>{if(parsedState.status){theme.pubsub.publish(theme.pubsub.PUB_SUB_EVENTS.cartError,{source:"product-form",productVariantId:formData.get("id"),errors:parsedState.errors||parsedState.description,message:parsedState.message}),this.handleErrorMessage(parsedState.description),document.dispatchEvent(new CustomEvent("ajaxProduct:error",{detail:{errorMessage:parsedState.description}}));const submitButtonText=this.submitButton.querySelector(".btn-text>span");if(!submitButtonText||!submitButtonText.hasAttribute("data-sold-out"))return;submitButtonText.innerText=submitButtonText.getAttribute("data-sold-out"),this.submitButton.setAttribute("aria-disabled","true"),this.error=!0;return}if(Shopify.designMode&&(document.body.classList.contains("template-cart")||theme.settings.cartType==="page")){window.location.href=theme.routes.cart_url;return}const cartJson=await(await fetch(theme.routes.cart_url,{...theme.utils.fetchConfig("json","GET")})).json();cartJson.sections=parsedState.sections,theme.pubsub.publish(theme.pubsub.PUB_SUB_EVENTS.cartUpdate,{source:"product-form",productVariantId:formData.get("id"),cart:cartJson}),document.dispatchEvent(new CustomEvent("ajaxProduct:added",{detail:{product:parsedState}})),this.cartDrawer?.show(this.activeElement)}).catch(error=>{console.log(error)}).finally(()=>{this.submitButton.removeAttribute("aria-busy"),this.submitButtons.forEach(submitButton=>submitButton.removeAttribute("aria-busy")),this.error||(this.submitButton.removeAttribute("aria-disabled"),this.submitButtons.forEach(submitButton=>submitButton.removeAttribute("aria-disabled")))})}handleErrorMessage(errorMessage=!1){this.hideErrors||(this.errorMessage=this.errorMessage||this.querySelector(".product-form__error-message"),this.errorMessage&&(this.errorMessage.toggleAttribute("hidden",!errorMessage),this.errorMessage.innerText=errorMessage))}toggleSubmitButton(disable=!0,text,unavailable=!1){if(!this.submitButton)return;this.submitButton.removeAttribute("loading"),this.submitButton.removeAttribute("unavailable");const submitButtonText=this.submitButton.querySelector(".btn-text"),submitButtonTextChild=this.submitButton.querySelector(".btn-text>span");disable?(this.submitButton.setAttribute("disabled",""),unavailable&&this.submitButton.setAttribute("unavailable",""),text?(submitButtonTextChild||submitButtonText).textContent=text:this.submitButton.setAttribute("loading","")):(this.submitButton.removeAttribute("disabled"),(submitButtonTextChild||submitButtonText).textContent=this.submitButton.hasAttribute("data-pre-order")?theme.variantStrings.preOrder:theme.variantStrings.addToCart)}}customElements.define("product-form",ProductForm,{extends:"form"});class ProductStickyForm extends HTMLElement{constructor(){if(super(),this.scopeFrom=document.querySelector(".quick-order-list")||document.getElementById(this.getAttribute("form")),this.scopeTo=document.querySelector(".footer-group"),!this.scopeFrom||!this.scopeTo)return;const intersectionObserver=new IntersectionObserver(this.handleIntersection.bind(this));intersectionObserver.observe(this.scopeFrom),intersectionObserver.observe(this.scopeTo),this.onVariantChangedListener=this.onVariantChanged.bind(this)}get productForm(){return document.forms[this.getAttribute("form")]}get submitButton(){return this._submitButton=this._submitButton||this.querySelector('[type="submit"]')}get productOptions(){return this._productOptions=this._productOptions||this.querySelector("[data-sticky-product-options]")}get productMedia(){return this._productMedia=this._productMedia||this.querySelector("[data-sticky-product-media]")}handleIntersection(entries){entries.forEach(entry=>{entry.target===this.scopeFrom&&(this.scopeFromPassed=entry.boundingClientRect.bottom<0),entry.target===this.scopeTo&&(this.scopeToReached=entry.isIntersecting)}),this.scopeFromPassed&&!this.scopeToReached?Motion.animate(this.firstElementChild,{opacity:1,visibility:"visible",transform:["translateY(15px)","translateY(0)"]},{duration:1,easing:[.16,1,.3,1]}):Motion.animate(this.firstElementChild,{opacity:0,visibility:"hidden",transform:["translateY(0)","translateY(15px)"]},{duration:1,easing:[.16,1,.3,1]})}connectedCallback(){(this.productForm??document).addEventListener("variant:change",this.onVariantChangedListener)}disconnectedCallback(){(this.productForm??document).removeEventListener("variant:change",this.onVariantChangedListener)}onVariantChanged(event){this.updateProductMedia(event.detail.variant),this.updateProductOptions(event.detail.variant)}updateProductMedia(currentVariant){if(!currentVariant||!currentVariant.featured_media)return;const image=this.productMedia.querySelector("img"),newImage=new Image(currentVariant.featured_media.preview_image.width,currentVariant.featured_media.preview_image.height);newImage.alt=currentVariant.featured_media.alt,newImage.src=currentVariant.featured_media.preview_image.src,newImage.srcset=this.generateSrcset(currentVariant.featured_media.preview_image),newImage.sizes=image.sizes,this.productMedia.replaceChildren(newImage)}updateProductOptions(currentVariant){currentVariant&&(this.productOptions.innerText=currentVariant.title)}handleErrorMessage(errorMessage=!1){this.productForm?.hideErrors||(this.errorMessage=this.errorMessage||this.querySelector(".product-form__error-message"),this.errorMessage&&(this.errorMessage.toggleAttribute("hidden",!errorMessage),this.errorMessage.innerText=errorMessage))}toggleSubmitButton(disable=!0,text){if(!this.submitButton)return;const submitButtonText=this.submitButton.querySelector(".btn-text"),submitButtonTextChild=this.submitButton.querySelector(".btn-text>span");disable?(this.submitButton.setAttribute("disabled",""),text&&((submitButtonTextChild||submitButtonText).textContent=text)):(this.submitButton.removeAttribute("disabled"),(submitButtonTextChild||submitButtonText).textContent=this.submitButton.hasAttribute("data-pre-order")?theme.variantStrings.preOrder:theme.variantStrings.addToCart)}generateSrcset(image){return this.productMedia.getAttribute("data-widths").split(",").map(width=>parseInt(width)).filter(width=>width<=image.width).map(width=>`${image.src}&width=${width} ${width}w`).join(", ")}}customElements.define("product-sticky-form",ProductStickyForm);class ProductBundleDetails extends AccordionDetails{constructor(){super()}cartUpdateUnsubscriber=void 0;get productForm(){return document.forms[this.getAttribute("form")]}get bundles(){return Array.from(this.querySelectorAll('input[name="bundles"]:checked'))}connectedCallback(){this.cartUpdateUnsubscriber=theme.pubsub.subscribe(theme.pubsub.PUB_SUB_EVENTS.cartUpdate,this.onCartUpdate.bind(this)),this.onBundleChangeListener=this.onBundleChange.bind(this),this.addEventListener("change",this.onBundleChangeListener)}disconnectedCallback(){this.cartUpdateUnsubscriber&&this.cartUpdateUnsubscriber(),this.removeEventListener("change",this.onBundleChangeListener)}onCartUpdate(event){this.bundles.length!==0&&event.source==="product-form"&&(this.bundles.forEach(input=>{input.disabled||(input.checked=!1)}),this.onBundleChange())}onBundleChange(){(this.productForm??document).dispatchEvent(new CustomEvent("bundle:change",{detail:{items:this.bundles.map(input=>({id:input.value,quantity:1,price:input.getAttribute("data-price")}))}}))}}customElements.define("product-bundle-details",ProductBundleDetails,{extends:"details"});class ProductBuyPrice extends HTMLElement{constructor(){super()}get productForm(){return document.forms[this.getAttribute("form")]}connectedCallback(){this.onBundleChangedListener=this.onBundleChanged.bind(this),(this.productForm??document).addEventListener("bundle:change",this.onBundleChangedListener)}disconnectedCallback(){(this.productForm??document).removeEventListener("bundle:change",this.onBundleChangedListener)}onBundleChanged(event){const{items}=event.detail;let subtotal=parseInt(this.getAttribute("data-price"));items.forEach(({price,quantity})=>{subtotal+=parseInt(price)*parseInt(quantity)}),this.innerHTML=theme.Currency.formatMoney(subtotal,theme.settings.currencyCodeEnabled?theme.settings.moneyWithCurrencyFormat:theme.settings.moneyFormat)}}customElements.define("product-buy-price",ProductBuyPrice);class MediaGallery extends HTMLElement{constructor(){super(),Motion.inView(this,()=>{requestAnimationFrame(()=>this.pauseAllMedia())}),this.addEventListener("lightbox:open",event=>this.openZoom(event.detail.index)),this.sliderGallery.addEventListener("slider:change",this.onSlideChange.bind(this)),this.countMediaGallery()}get viewInSpaceButton(){return this.querySelector("[data-shopify-xr]")}get sliderGallery(){return this.querySelector("slider-element")}get mediaPreview(){return this.querySelector(".product__preview .product__media")}get photoswipe(){if(this._photoswipe)return this._photoswipe;const lightbox=new PhotoSwipeLightbox({arrowPrevSVG:'',arrowNextSVG:'',closeSVG:'',bgOpacity:1,pswpModule:()=>import(theme.settings.pswpModule),arrowPrevTitle:theme.strings.previous,arrowNextTitle:theme.strings.next,closeTitle:theme.strings.close,allowPanToNext:!1,allowMouseDrag:!0,wheelToZoom:!1,returnFocus:!0,zoom:!1});return lightbox.addFilter("thumbEl",(_thumbEl,data)=>data.thumbnailElement),lightbox.on("contentLoad",event=>{const{content}=event;(content.type==="video"||content.type==="external_video"||content.type==="model")&&(event.preventDefault(),content.element=document.createElement("div"),content.element.className="pswp__video-container",content.element.appendChild(content.data.domElement.cloneNode(!0)))}),lightbox.on("change",()=>{this.sliderGallery.select(lightbox.pswp.currIndex+1,!0)}),lightbox.on("close",()=>{const slideSelected=this.sliderGallery.selected(lightbox.pswp.currIndex);lightbox.pswp._lastActiveElement=slideSelected?slideSelected.querySelector("button"):document.activeElement}),lightbox.init(),this._photoswipe=lightbox}onSlideChange(event){const activeMedia=event.detail.currentElement;this.playActiveMedia(activeMedia),this.viewInSpaceButton&&(activeMedia.getAttribute("data-media-type")==="model"?this.viewInSpaceButton.setAttribute("data-shopify-model3d-id",activeMedia.getAttribute("data-media-id")):this.viewInSpaceButton.setAttribute("data-shopify-model3d-id",this.viewInSpaceButton.getAttribute("data-shopify-model3d-default-id")))}playActiveMedia(activeMedia){if(typeof activeMedia>"u")return;const deferredMedia=activeMedia.querySelector(".deferred-media");this.sliderGallery.querySelectorAll(".deferred-media").forEach(media=>{deferredMedia===media?media.play():media.pause()})}pauseAllMedia(){this.sliderGallery.querySelectorAll("[data-media-id]").forEach((media,index)=>{if(index>0){const deferredMedia=media.querySelector(".deferred-media");deferredMedia&&typeof deferredMedia.pause=="function"&&deferredMedia.pause()}})}openZoom(index=0){let dataSource=this.sliderGallery.itemsToShow.map(media=>{const image=media.querySelector("img");if(media.getAttribute("data-media-type")==="image")return{thumbnailElement:image,src:image.src,srcset:image.srcset,msrc:image.currentSrc||image.src,width:parseInt(image.getAttribute("width")),height:parseInt(image.getAttribute("height")),alt:image.alt,thumbCropped:!0};if(media.getAttribute("data-media-type")==="video"||media.getAttribute("data-media-type")==="external_video"||media.getAttribute("data-media-type")==="model"){const video=media.querySelector(".deferred-media");return{thumbnailElement:image,domElement:video,type:media.getAttribute("data-media-type"),src:image.src,srcset:image.srcset,msrc:image.currentSrc||image.src,width:800,height:800/video.getAttribute("data-aspect-ratio"),alt:image.alt,thumbCropped:!0}}});if(this.mediaPreview&&this.mediaPreview.offsetParent&&this.mediaPreview.getAttribute("data-media-type")==="image"){const image=this.mediaPreview.querySelector("img");dataSource.push({thumbnailElement:image,src:image.src,srcset:image.srcset,msrc:image.currentSrc||image.src,width:parseInt(image.getAttribute("width")),height:parseInt(image.getAttribute("height")),alt:image.alt,thumbCropped:!0}),index===-1&&(index=dataSource.length-1)}this.photoswipe.loadAndOpen(index,dataSource)}countMediaGallery(){let mediaCount=0;this.sliderGallery.querySelectorAll("[data-media-id]").forEach(media=>{!media.classList.contains("xl:hidden")&&!media.hasAttribute("hidden")&&mediaCount++}),this.mediaPreview&&mediaCount++,mediaCount>1?this.classList.remove("with-only1"):this.classList.add("with-only1")}}customElements.define("media-gallery",MediaGallery);class MediaLightboxButton extends HTMLButtonElement{constructor(){super(),this.addEventListener("click",this.onButtonClick)}onButtonClick(){const media=this.closest("[data-media-id]"),sliderGallery=this.closest("slider-element"),openIndex=sliderGallery?sliderGallery.itemsToShow.indexOf(media):-1;this.dispatchEvent(new CustomEvent("lightbox:open",{bubbles:!0,detail:{index:openIndex}}))}}customElements.define("media-lightbox-button",MediaLightboxButton,{extends:"button"});class MediaHoverButton extends MediaLightboxButton{constructor(){super()}get zoomRatio(){return 2}onButtonClick(event){if(theme.config.isTouch)super.onButtonClick();else{const media=this.closest('[data-media-type="image"]');if(media){const image=media.querySelector("img");this.gallery=this.closest("slider-element"),this.magnify(image),this.moveWithHover(image,event)}}}createOverlay(image){const overlayImage=document.createElement("img");overlayImage.setAttribute("src",`${image.src}`);const overlay=document.createElement("media-hover-overlay");return this.prepareOverlay(overlay,overlayImage),this.toggleLoadingSpinner(image),overlayImage.onload=()=>{this.toggleLoadingSpinner(image),image.parentElement.insertBefore(overlay,image)},this.gallery&&this.gallery.classList.add("magnify"),overlay}prepareOverlay(container,image){container.setAttribute("class","media z-10 absolute top-0 left-0 w-full h-full"),container.setAttribute("aria-hidden","true"),container.style.backgroundImage=`url('${image.src}')`,container.style.cursor="zoom-out"}toggleLoadingSpinner(image){const loadingSpinner=image.parentElement;loadingSpinner.classList.toggle("loading"),loadingSpinner.classList.toggle("pointer-events-none")}moveWithHover(image,event){const ratio=image.height/image.width,container=event.target.getBoundingClientRect(),xPosition=event.clientX-container.left,yPosition=event.clientY-container.top,xPercent=`${xPosition/(image.clientWidth/100)}%`,yPercent=`${yPosition/(image.clientWidth*ratio/100)}%`;this.overlay.style.backgroundPosition=`${xPercent} ${yPercent}`,this.overlay.style.backgroundSize=`${image.width*this.zoomRatio}px`}magnify(image){this.overlay=this.createOverlay(image),this.overlay.onclick=()=>this.reset(),this.overlay.onmousemove=event=>this.moveWithHover(image,event),this.overlay.onmouseleave=()=>this.reset()}reset(){this.overlay.remove(),this.gallery&&this.gallery.classList.remove("magnify")}}customElements.define("media-hover-button",MediaHoverButton,{extends:"button"});class MediaDots extends SliderDots{constructor(){super()}init(){super.init(),this.resetIndexes()}resetIndexes(){let newIndex=1;this.itemsToShow.forEach((item,index)=>{item.setAttribute("data-index",newIndex),item.setAttribute("aria-current",index===0?"true":"false"),newIndex++})}}customElements.define("media-dots",MediaDots);class XModal extends ModalElement{constructor(){super()}get shouldLock(){return!0}get shouldAppendToBody(){return!0}}customElements.define("x-modal",XModal);class LogoList extends HTMLElement{constructor(){super(),Motion.inView(this,this.init.bind(this),{margin:"200px 0px 200px 0px"})}get childElement(){return this.firstElementChild}get speed(){return this.hasAttribute("data-speed")?parseInt(this.getAttribute("data-speed")):16}get maximum(){return this.hasAttribute("data-maximum")?parseInt(this.getAttribute("data-maximum")):Math.ceil(this.parentWidth/this.childElementWidth)+2}get direction(){return this.hasAttribute("data-direction")?this.getAttribute("data-direction"):"left"}get parentWidth(){return this.getWidth(this)}get childElementWidth(){return this.getWidth(this.childElement)}disconnectedCallback(){this.marquee&&(this.pause(),this.marquee.destroy())}init(){if(this.childElementCount===1){this.childElement.classList.add("animate");for(let index=0;indexmedia.classList.remove("loading"));theme.config.isTouch?this.style.setProperty("--duration",`${33-this.speed}s`):(this.marquee=new Flickity(this,{prevNextButtons:!1,pageDots:!1,wrapAround:!0,freeScroll:!0,rightToLeft:this.direction==="right"}),this.marquee.x=0,this.play(),this.addEventListener("mouseenter",this.pause),this.addEventListener("mouseleave",this.play))}}play(){this.marquee.x-=this.speed*.1,this.marquee.settle(this.marquee.x),this.requestId=requestAnimationFrame(this.play.bind(this))}pause(){this.requestId&&(cancelAnimationFrame(this.requestId),this.requestId=void 0)}getWidth(element){const rect=element.getBoundingClientRect();return rect.right-rect.left}}customElements.define("logo-list",LogoList);class TextScrolling extends HTMLElement{constructor(){super(),this.items.forEach(item=>{const header=item.querySelector(".heading");Motion.scroll(Motion.animate(header,{opacity:[0,0,1,1,1,0,0]}),{target:header,offsets:["33vh","66vh"]})})}get items(){return this._items=this._items||Array.from(this.children)}}customElements.define("text-scrolling",TextScrolling);class TabsElement extends HTMLElement{constructor(){super(),this.selectedIndex=this.selectedIndex,this.buttons.forEach((button,index)=>button.addEventListener("click",()=>this.selectedIndex=index)),Shopify.designMode&&this.addEventListener("shopify:block:select",event=>this.selectedIndex=this.buttons.indexOf(event.target))}static get observedAttributes(){return["selected-index"]}get selectedIndex(){return parseInt(this.getAttribute("selected-index"))||0}set selectedIndex(index){this.setAttribute("selected-index",Math.min(Math.max(index,0),this.buttons.length-1).toString())}get buttons(){return this._buttons=this._buttons||Array.from(this.querySelectorAll('button[role="tab"]'))}get indicators(){return this._indicators=this._indicators||Array.from(this.querySelectorAll(".indicators"))}load(){const toButton=this.buttons[parseInt(this.selectedIndex)];if(toButton===void 0)return;const toPanel=document.getElementById(toButton.getAttribute("aria-controls"));Motion.animate(toPanel,{transform:["translateY(2rem)","translateY(0)"],opacity:[0,1]},{duration:theme.config.motionReduced?0:.15}).finished,toPanel.querySelector("motion-list")?.load()}unload(){const fromButton=this.buttons[parseInt(this.selectedIndex)];if(fromButton===void 0)return;const fromPanel=document.getElementById(fromButton.getAttribute("aria-controls"));Motion.animate(fromPanel,{transform:["translateY(0)","translateY(2rem)"],opacity:[1,0]},{duration:theme.config.motionReduced?0:.15}).finished,fromPanel.querySelector("motion-list")?.unload()}attributeChangedCallback(name,oldValue,newValue){if(this.buttons.forEach((button,index)=>{button.classList.toggle("button--primary",index===parseInt(newValue)),button.classList.toggle("button--secondary",index!==parseInt(newValue)),button.disabled=index===parseInt(newValue)}),this.indicators.forEach((indicators,index)=>{indicators.hidden=index!==parseInt(newValue),index===parseInt(newValue)&&indicators.querySelectorAll("button").forEach(button=>{button.unload(),button.load()})}),name==="selected-index"&&oldValue!==null&&oldValue!==newValue){const fromButton=this.buttons[parseInt(oldValue)],toButton=this.buttons[parseInt(newValue)];this.transition(document.getElementById(fromButton.getAttribute("aria-controls")),document.getElementById(toButton.getAttribute("aria-controls")))}}async transition(fromPanel,toPanel){fromPanel&&await Motion.animate(fromPanel,{transform:["translateY(0)","translateY(2rem)"],opacity:[1,0]},{duration:theme.config.motionReduced?0:.15}).finished,fromPanel.hidden=!0,toPanel.hidden=!1,Motion.animate(toPanel,{transform:["translateY(2rem)","translateY(0)"],opacity:[0,1]},{duration:theme.config.motionReduced?0:.15}).finished,toPanel.querySelector("motion-list")?.load()}}customElements.define("tabs-element",TabsElement);class CountdownTimer extends HTMLElement{constructor(){super(),Motion.inView(this,this.init.bind(this),{margin:"200px 0px 200px 0px"})}get date(){return this._date=this._date||new Date(this.getAttribute("data-expires"))}get isCompact(){return this.getAttribute("data-compact")==="true"||this.getAttribute("data-compact")==="mobile"&&theme.config.mqlSmall}init(){this.calculate(),this.timerInterval=setInterval(this.calculate.bind(this),1e3)}calculate(){const now=new Date,countTo=new Date(this.date),timeDifference=countTo-now;if(timeDifference<0){this.complete();return}const secondsInADay=3600*1e3*24,secondsInAHour=3600*1e3,days=Math.floor(timeDifference/secondsInADay*1),hours=Math.floor(timeDifference%secondsInADay/secondsInAHour*1),mins=Math.floor(timeDifference%secondsInADay%secondsInAHour/(60*1e3)*1),secs=Math.floor(timeDifference%secondsInADay%secondsInAHour%(60*1e3)/1e3*1);if(this.isCompact){const dayHTML=days>0?`

${days}${theme.dateStrings.d}

`:"",hourHTML=`

${hours}${theme.dateStrings.h}

`,minHTML=`

${mins}${theme.dateStrings.m}

`,secHTML=`

${secs}${theme.dateStrings.s}

`;this.innerHTML=dayHTML+hourHTML+minHTML+secHTML}else{const dayHTML=days>0?`

${days}

${days===1?theme.dateStrings.day:theme.dateStrings.days}
`:"",hourHTML=`

${hours}

${hours===1?theme.dateStrings.hour:theme.dateStrings.hours}
`,minHTML=`

${mins}

${mins===1?theme.dateStrings.minute:theme.dateStrings.minutes}
`,secHTML=`

${secs}

${secs===1?theme.dateStrings.second:theme.dateStrings.seconds}
`;this.innerHTML=dayHTML+hourHTML+minHTML+secHTML}}complete(){this.timerInterval&&clearInterval(this.timerInterval),this.hidden=!0}}customElements.define("countdown-timer",CountdownTimer);class ImageComparison extends HTMLElement{constructor(){super(),Motion.inView(this,async()=>{await theme.utils.imageLoaded(this.media),this.init()})}get button(){return this.querySelector("button")}get bounding(){return this.getBoundingClientRect()}get horizontal(){return this.getAttribute("data-layout")==="horizontal"}get media(){return Array.from(this.querySelectorAll("img, svg"))}init(){this.active=!1,this.button.addEventListener("touchstart",this.startHandler.bind(this),theme.supportsPassive?{passive:!1}:!1),document.body.addEventListener("touchend",this.endHandler.bind(this),theme.supportsPassive?{passive:!0}:!1),document.body.addEventListener("touchmove",this.onHandler.bind(this),theme.supportsPassive?{passive:!0}:!1),this.button.addEventListener("mousedown",this.startHandler.bind(this)),document.body.addEventListener("mouseup",this.endHandler.bind(this)),document.body.addEventListener("mousemove",this.onHandler.bind(this)),setTimeout(()=>this.animate(),1e3)}animate(){this.setAttribute("animate",""),this.classList.add("animating"),setTimeout(()=>{this.classList.remove("animating")},1e3)}startHandler(event){event.preventDefault(),this.active=!0,this.classList.add("scrolling")}endHandler(){this.active=!1,this.classList.remove("scrolling")}onHandler(e){if(!this.active)return;const event=e.touches&&e.touches[0]||e;let x=this.horizontal?event.pageX-(this.bounding.left+window.scrollX):event.pageY-(this.bounding.top+window.scrollY);this.scrollIt(x)}scrollIt(x){const distance=this.horizontal?this.clientWidth:this.clientHeight,max=distance-20,mousePercent=Math.max(20,Math.min(x,max))*100/distance;this.style.setProperty("--percent",mousePercent+"%")}}customElements.define("image-comparison",ImageComparison);class LookbookElement extends HTMLElement{constructor(){super(),Motion.inView(this,async()=>{await theme.utils.imageLoaded(this.media),this.init()})}get media(){return Array.from(this.querySelectorAll("img, svg"))}get items(){return this._items=this._items||Array.from(this.querySelectorAll(".hotspot"))}init(){if(this.items.forEach(item=>item.addEventListener("mouseenter",event=>this.select(this.items.indexOf(event.target)))),Shopify.designMode){const section=this.closest(".shopify-section");section.addEventListener("shopify:section:select",this.animate.bind(this)),section.addEventListener("shopify:section:deselect",this.closeAll.bind(this)),this.addEventListener("shopify:block:select",event=>this.open(this.items.indexOf(event.target)))}setTimeout(()=>this.animate(),1e3)}animate(){this.openAll(),this.timer=setTimeout(()=>this.closeAll(),3e3)}open(selectedIndex){this.items.forEach((item,index)=>item.classList.toggle("active",selectedIndex===index))}openAll(){this.items.forEach(item=>item.classList.add("active"))}closeAll(){this.items.forEach(item=>item.classList.remove("active")),clearTimeout(this.timer)}select(selectedIndex){this.items.forEach((item,index)=>item.setAttribute("aria-current",selectedIndex===index?"true":"false")),this.dispatchEvent(new CustomEvent("lookbook:change",{bubbles:!0,detail:{index:selectedIndex}}))}}customElements.define("lookbook-element",LookbookElement);class ShopTheLook extends HTMLElement{constructor(){super(),this.lookbook.addEventListener("lookbook:change",event=>this.carousel.select(event.detail.index)),this.carousel.addEventListener("carousel:change",event=>this.lookbook.select(event.detail.index))}get lookbook(){return this.querySelector("lookbook-element")}get carousel(){return this.querySelector("carousel-element")}}customElements.define("shop-the-look",ShopTheLook);class SpinningText extends HTMLElement{constructor(){super(),!theme.config.isTouch||Shopify.designMode?Motion.inView(this,this.init.bind(this),{margin:"600px 0px 600px 0px"}):new theme.initWhenVisible(this.init.bind(this))}get string(){let string=this.getAttribute("data-string");return string=string.replace(/ +/g," "),"\u2022"+string.replace(/ +/g,"\u2022")}init(){if(this.initialized)return;this.initialized=!0;const canTrig=CSS.supports("(top: calc(sin(1) * 1px))"),OPTIONS={TEXT:this.string,SIZE:2,SPACING:2},HEADING=document.createElement("div"),chars=OPTIONS.TEXT.split("");this.style.setProperty("--char-count",chars.length);for(let c=0;c