PageSourceSearch

https://topofthemornincoffee.com/cdn/shop/t/189/assets/revflare.js?v=117339355724849737401789635872

js topofthemornincoffee.com collected 2026-09-24 18:31:28 UTC 179,427 bytes, 48 lines download raw bytes

1if(!window.__REV_FLARE_LOADED__){let updateArrivesByDates2=function(){const monthNames=["Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"],dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function formatDate(date){const d=new Date(date);return monthNames[d.getMonth()]+" "+d.getDate()}function formatDateWithDay(date){const d=new Date(date);return dayNames[d.getDay()]+", "+monthNames[d.getMonth()]+" "+d.getDate()}function addBusinessDays(startDate,days){for(var result=new Date(startDate),added=0;added<days;){result.setDate(result.getDate()+1);var dow=result.getDay();dow!==0&&dow!==6&&added++}return result}function getZonedNow(tz){for(var now=new Date,dtf=new Intl.DateTimeFormat("en-US",{timeZone:tz,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}),parts=dtf.formatToParts(now),out={},i=0;i<parts.length;i++)parts[i].type==="year"&&(out.year=Number(parts[i].value)),parts[i].type==="month"&&(out.month=Number(parts[i].value)),parts[i].type==="day"&&(out.day=Number(parts[i].value)),parts[i].type==="hour"&&(out.hour=Number(parts[i].value)),parts[i].type==="minute"&&(out.minute=Number(parts[i].value));return out.date=new Date(out.year,out.month-1,out.day),out.dow=out.date.getDay(),out}document.querySelectorAll(".rev-arrives-by").forEach(function(el){var mode=el.dataset.arrivesByMode||"range";if(mode==="range"){var daysDelivery=parseInt(el.dataset.arrivesByDaysDelivery,10),daysLatest=parseInt(el.dataset.arrivesByDaysLatest,10);if(isNaN(daysDelivery)||isNaN(daysLatest))return;var dateEst=new Date;dateEst.setDate(dateEst.getDate()+daysDelivery);var dateLatest=new Date;dateLatest.setDate(dateLatest.getDate()+daysLatest);var estSpan=el.querySelector(".rev-arrives-date-est"),latestSpan=el.querySelector(".rev-arrives-date-latest");estSpan&&(estSpan.textContent=formatDate(dateEst)),latestSpan&&(latestSpan.textContent=formatDate(dateLatest))}else if(mode==="cutoff"){var tz=el.dataset.arrivesByCutoffTz||"America/New_York",cutoffTime=el.dataset.arrivesByCutoffTime||"10:00",expeditedDays=parseInt(el.dataset.arrivesByCutoffExpedited,10)||1,standardDays=parseInt(el.dataset.arrivesByCutoffStandard,10)||2,cutoffParts=cutoffTime.split(":"),cutoffHour=parseInt(cutoffParts[0],10)||10,cutoffMinute=parseInt(cutoffParts[1],10)||0,zoned=getZonedNow(tz),currentMinutes=zoned.hour*60+zoned.minute,cutoffMinutes=cutoffHour*60+cutoffMinute,isBeforeCutoff=currentMinutes<cutoffMinutes,businessDays=isBeforeCutoff?expeditedDays:standardDays,arrivalDate=addBusinessDays(zoned.date,businessDays),cutoffUtcMs=(function(){for(var guess=Date.UTC(zoned.year,zoned.month-1,zoned.day,cutoffHour,cutoffMinute,0),probe=new Date(guess),dtf2=new Intl.DateTimeFormat("en-US",{timeZone:tz,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}),pp=dtf2.formatToParts(probe),pv={},j=0;j<pp.length;j++)pp[j].type==="year"&&(pv.year=Number(pp[j].value)),pp[j].type==="month"&&(pv.month=Number(pp[j].value)),pp[j].type==="day"&&(pv.day=Number(pp[j].value)),pp[j].type==="hour"&&(pv.hour=Number(pp[j].value)),pp[j].type==="minute"&&(pv.minute=Number(pp[j].value));var zonedAsUtc=Date.UTC(pv.year,pv.month-1,pv.day,pv.hour,pv.minute,0),offset=zonedAsUtc-guess;return Date.UTC(zoned.year,zoned.month-1,zoned.day,cutoffHour,cutoffMinute,0)-offset})(),cutoffLocal=new Date(cutoffUtcMs),cutoffDisplay=cutoffLocal.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),msgSpan=el.querySelector(".rev-arrives-cutoff-msg");if(msgSpan)if(isBeforeCutoff){var tomorrow=new Date(zoned.date);tomorrow.setDate(tomorrow.getDate()+1);var isTomorrow=arrivalDate.getTime()===tomorrow.getTime();isTomorrow?msgSpan.textContent="Order by "+cutoffDisplay+" to get it tomorrow":msgSpan.textContent="Order by "+cutoffDisplay+" to get it by "+formatDateWithDay(arrivalDate)}else msgSpan.textContent="Arrives by "+formatDateWithDay(arrivalDate)}})},variantMatches2=function(v,selected){return selected.every((val,idx)=>val?v[`option${idx+1}`]===val:!0)},getValidValuesByOption2=function(variants,selected){const valid=[new Set,new Set,new Set];for(let optIdx=0;optIdx<3;optIdx++){const partial=selected.slice();
1partial[optIdx]=null,variants.forEach(v=>{if(!variantMatches2(v,partial))return;const val=v[`option${optIdx+1}`];val!=null&&valid[optIdx].add(val)})}return valid},updateOptionDisables2=function(selectorEl,validSets){selectorEl.querySelectorAll("input[data-option-position]").forEach(input=>{const idx=parseInt(input.dataset.optionPosition,10)-1,isValid=validSets[idx]?.has(input.value);input.dataset.revInvalid=(!isValid).toString();const wrap=input.closest(".rev-swatch-option");wrap&&(wrap.classList.toggle("rev-swatch-disabled",!isValid),wrap.setAttribute("aria-disabled",(!isValid).toString()))}),selectorEl.querySelectorAll("select[data-option-position]").forEach(select=>{const idx=parseInt(select.dataset.optionPosition,10)-1,isPrimary=idx===0;Array.from(select.options).forEach(opt=>{if(!opt.value)return;const isValid=validSets[idx]?.has(opt.value);opt.disabled=!isPrimary&&!isValid})})},applyVariantToUI2=function(selectorEl,variant){const vals=[variant.option1,variant.option2,variant.option3];selectorEl.querySelectorAll('input[type="radio"][data-option-position]').forEach(inp=>{const idx=parseInt(inp.dataset.optionPosition,10)-1;inp.checked=inp.value===vals[idx]}),selectorEl.querySelectorAll("select[data-option-position]").forEach(sel=>{const idx=parseInt(sel.dataset.optionPosition,10)-1;vals[idx]!=null&&(sel.value=vals[idx])}),selectorEl.querySelectorAll(".rev-swatch-option").forEach(el=>el.classList.remove("rev-option-active")),selectorEl.querySelectorAll('input[type="radio"]:checked').forEach(inp=>inp.closest(".rev-swatch-option")?.classList.add("rev-option-active"))},readSelectedFromUI2=function(selectorEl){const selected=[];return selectorEl.querySelectorAll("[data-option-position]").forEach(el=>{const idx=parseInt(el.dataset.optionPosition,10)-1;el.type==="radio"&&el.checked&&(selected[idx]=el.value),el.tagName==="SELECT"&&(selected[idx]=el.value)}),selected},recomputeAndApplyDisables2=function(selectorEl,variants){const selected=readSelectedFromUI2(selectorEl),validSets=getValidValuesByOption2(variants,selected);updateOptionDisables2(selectorEl,validSets)},updateOptionStockStatus2=function(selectorEl,variants,selected){const allStatuses=["in-stock","preorder","oos"];selectorEl.querySelectorAll("input[data-option-position]").forEach(input=>{const idx=parseInt(input.dataset.optionPosition,10)-1,testSelected=selected.slice();testSelected[idx]=input.value;const match=variants.find(v=>testSelected.every((val,i)=>val==null||v[`option${i+1}`]===val)),status=match?match.stock_status||"in-stock":"oos",wrap=input.closest(".rev-swatch-option");
1wrap&&(allStatuses.forEach(s=>wrap.classList.remove(`rev-option-stock-status-${s}`)),wrap.classList.add(`rev-option-stock-status-${status}`))}),selectorEl.querySelectorAll("select[data-option-position]").forEach(select=>{const idx=parseInt(select.dataset.optionPosition,10)-1;Array.from(select.options).forEach(opt=>{if(!opt.value)return;const testSelected=selected.slice();testSelected[idx]=opt.value;const match=variants.find(v=>testSelected.every((val,i)=>val==null||v[`option${i+1}`]===val));opt.dataset.stockStatus=match?match.stock_status||"in-stock":"oos"})})},findMediaProxyVariant2=function(variants,selected,changedIdx){if(!selected[changedIdx])return null;const candidates=variants.filter(v=>v.feat_media||v.feat_media_url);if(!candidates.length)return null;const order=changedIdx===0?[0,1,2]:[0,changedIdx,...[0,1,2].filter(i=>i!==0&&i!==changedIdx)],score=v=>{let s=0;return order.forEach((idx,pos)=>{const want=selected[idx];want!=null&&v[`option${idx+1}`]===want&&(s+=4>>pos)}),s},compare=(a,b)=>{const scoreDiff=score(b)-score(a);return scoreDiff!==0?scoreDiff:!!a.available!=!!b.available?a.available?-1:1:(a.id||0)-(b.id||0)};return candidates.slice().sort(compare)[0]},getActiveGalleryMediaId2=function(galleryEl){if(!galleryEl)return null;const activeThumb=galleryEl.querySelector(".rev-gallery-thumbnail-active[data-media-id]");if(activeThumb)return activeThumb.dataset.mediaId;const activeBullet=galleryEl.querySelector(".rev-gallery-slide-bullet-active[data-media-id]");return activeBullet?activeBullet.dataset.mediaId:null},autoscrollGalleryToFeatMedia2=function(contextEl,featMedia,{allowPageScroll=!0}={}){!contextEl||!featMedia||setTimeout(()=>{const gallery=contextEl.querySelector(".rev-product-gallery");if(!gallery)return;const targetMediaId=featMedia.toString(),mediaElements=gallery.querySelectorAll("[data-media-id]");let targetIndex=-1,targetElement=null;for(let i=0;i<mediaElements.length;i++)if(mediaElements[i].dataset.mediaId===targetMediaId){targetIndex=parseInt(mediaElements[i].dataset.index,10),targetElement=mediaElements[i];break}if(targetIndex===-1||getActiveGalleryMediaId2(gallery)===targetMediaId)return;
1const isSlider=gallery.classList.contains("rev-product-gallery-slider");if(window.matchMedia("(max-width: 749px)").matches||isSlider){const galleryInstance=gallery._revGalleryInstance;galleryInstance&&typeof galleryInstance.scrollToIndex=="function"&&galleryInstance.scrollToIndex(targetIndex,"smooth")}else if(allowPageScroll&&targetElement){const scrollTarget=targetElement.getBoundingClientRect().top+window.scrollY-250;window.scrollTo({top:Math.max(0,scrollTarget),behavior:"smooth"})}},150)},updateQuickviewImage2=function(contextEl,variant){if(!contextEl||!variant?.feat_media_url)return;const qvMedia=contextEl.querySelector(".rev-quickview__media img");if(!qvMedia)return;const makeSrc=(url,w)=>url.replace(/width=\d+/,`width=${w}`);qvMedia.srcset=`${makeSrc(variant.feat_media_url,180)} 180w, ${makeSrc(variant.feat_media_url,360)} 360w`,qvMedia.src=makeSrc(variant.feat_media_url,360)},initVariantSelectorState2=function(root=document){root.querySelectorAll(".rev-variant-selector").forEach(selectorEl=>{const cfgScript=selectorEl.querySelector(".rev-cfg");if(!cfgScript)return;let cfg;try{cfg=JSON.parse(cfgScript.textContent.trim())}catch{return}recomputeAndApplyDisables2(selectorEl,cfg.variants);const initSelected=readSelectedFromUI2(selectorEl);updateOptionStockStatus2(selectorEl,cfg.variants,initSelected)})},revShowSwatchMedia2=function(card,optionValue){const cardMedia=card.querySelector(".rev-card-media");if(cardMedia&&(cardMedia.querySelectorAll(".rev-card-swatch-media").forEach(m=>m.classList.remove("active")),optionValue)){const target=cardMedia.querySelector(`.rev-card-swatch-media[data-swatch-value="${CSS.escape(optionValue)}"]`);target&&target.classList.add("active")}},revSelectCardSwatch2=function(swatch){const card=swatch.closest(".rev-product-card");if(!card)return;const group=swatch.closest(".rev-card-swatches");if(!group||swatch.classList.contains("rev-card-swatch-active"))return;group.querySelectorAll(".rev-card-swatch").forEach(s=>s.classList.remove("rev-card-swatch-active")),swatch.classList.add("rev-card-swatch-active"),revShowSwatchMedia2(card,swatch.dataset.optionValue);const cfgScript=card.querySelector("script.rev-card-cfg");if(!cfgScript)return;let cfg;try{cfg=JSON.parse(cfgScript.textContent.trim())}catch{return}const selected={};card.querySelectorAll(".rev-card-swatches").forEach(g=>{const pos=parseInt(g.dataset.optionPosition,10),active=g.querySelector(".rev-card-swatch-active");active&&pos&&(selected[pos]=active.dataset.optionValue)});const match=cfg.v.find(v=>v.o.every((opt,i)=>!selected[i+1]||opt===selected[i+1]));if(match){const quickAddBtn=card.querySelector(".rev-card-quick-add");quickAddBtn&&(quickAddBtn.dataset.variantId=String(match.id))}},getSubscriptionSelection2=function(contextEl){const fieldset=contextEl.querySelector("[data-subscription-plan]");if(!fieldset)return{hasSubscriptionUI:!1,purchaseOption:"onetime",sellingPlanId:null};const purchaseOption=(fieldset.querySelector('input[name="purchase_option"]:checked')?.value||"onetime").toLowerCase();let sellingPlanId=null;if(purchaseOption==="subscription"){const select=fieldset.querySelector('select[name="selling_plan"]');sellingPlanId=select?.value?String(select.value):null}return{hasSubscriptionUI:!0,purchaseOption,sellingPlanId}},getCartDrawerSectionId2=function(){const CART_DRAWER_SELECTORS=["cart-drawer","cart-drawer-drawer","#CartDrawer",'[id*="CartDrawer"]',"[data-cart-drawer]"];for(const sel of CART_DRAWER_SELECTORS){const el=document.querySelector(sel);if(!el)continue;if(el.dataset.id)return el.dataset.id;const wrapper=el.closest('[id^="shopify-section-"]');if(wrapper)return wrapper.id.replace("shopify-section-","")}return null},revShowCartError2=function(message){var defaultMsg="Something went wrong. Please try again.",text=typeof message=="string"&&message.trim()?message.trim():defaultMsg,toast=document.getElementById("rev-cart-toast");toast||(toast=document.createElement("div"),toast.id="rev-cart-toast",toast.className="rev-cart-toast",toast.setAttribute("role","alert"),toast.setAttribute("aria-live","assertive"),toast.innerHTML='<svg class="rev-cart-toast__icon" viewB
1ox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="1.5"/><path d="M12 8v5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><circle cx="12" cy="16" r="1" fill="currentColor"/></svg><span class="rev-cart-toast__message"></span><button type="button" class="rev-cart-toast__close" aria-label="Dismiss"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button>',document.body.appendChild(toast),toast.querySelector(".rev-cart-toast__close").addEventListener("click",function(){toast.classList.remove("rev-cart-toast--visible")})),toast.querySelector(".rev-cart-toast__message").textContent=text,toast._dismissTimer&&clearTimeout(toast._dismissTimer),toast.classList.remove("rev-cart-toast--visible"),toast.offsetWidth,toast.classList.add("rev-cart-toast--visible"),toast._dismissTimer=setTimeout(function(){toast.classList.remove("rev-cart-toast--visible")},5e3)},revInitCharCounters2=function(){},revInitPlaceholderCycle2=function(scope){var root=scope||document,inputs=root.querySelectorAll("[data-rev-suggestions]");inputs.forEach(function(input){if(input._revCycleBound)return;input._revCycleBound=!0;var raw=input.getAttribute("data-rev-suggestions");if(!raw)return;var suggestions=raw.split(",").map(function(s){return s.trim()}).filter(Boolean);if(suggestions.length===0)return;var currentIndex=0,charIndex=0,isTyping=!0,isPaused=!1,fallbackPlaceholder=input.placeholder||"Type here...";input.addEventListener("focus",function(){isPaused=!0,input.placeholder=fallbackPlaceholder}),input.addEventListener("blur",function(){input.value.length===0&&(isPaused=!1)});function tick(){if(isPaused){requestAnimationFrame(function(){setTimeout(tick,200)});return}var word=suggestions[currentIndex];if(isTyping){if(charIndex++,input.placeholder=word.substring(0,charIndex),charIndex>=word.length){isTyping=!1,setTimeout(tick,2e3);return}setTimeout(tick,80)}else{if(charIndex--,charIndex<=0){isTyping=!0,currentIndex=(currentIndex+1)%suggestions.length,setTimeout(tick,300);return}input.placeholder=word.substring(0,charIndex),setTimeout(tick,40)}}setTimeout(tick,800)})},ensureCurrencyLib2=function(){return window.Currency?.convert?Promise.resolve():__revCurrencyLibPromise||(__revCurrencyLibPromise=new Promise((resolve,reject)=>{const script=document.createElement("script");script.src="https://cdn.shopify.com/s/javascripts/currencies.js",script.async=!0,script.onload=()=>resolve(),script.onerror=()=>reject(new Error("Failed to load currencies.js")),document.head.appendChild(script)}),__revCurrencyLibPromise)},revBundleBuilderAutoInit2=function(){const section=document.querySelector("[data-rev-bundle-builder]");section&&(RevBundleBuilder.init(section),revInitPlaceholderCycle2(section))},revSyncAccordionItem2=function(item){if(!item||!item.classList.contains("rev-bundle-builder__item--accordion"))return;const trigger=item.querySelector("[data-accordion-trigger]"),initialState=item.querySelector('[data-state="initial"]');if(!trigger||!initialState)return;const selected=item.dataset.selected==="true",skipped=item.dataset.skipped==="true",updating=item.dataset.updating==="true",shouldOpen=!selected&&!skipped&&!updating;item.classList.toggle("is-open",shouldOpen),trigger.setAttribute("aria-expanded",String(shouldOpen)),initialState.hidden=!shouldOpen};var updateArrivesByDates=updateArrivesByDates2,variantMatches=variantMatches2,getValidValuesByOption=getValidValuesByOption2,updateOptionDisables=updateOptionDisables2,applyVariantToUI=applyVariantToUI2,readSelectedFromUI=readSelectedFromUI2,recomputeAndApplyDisables=recomputeAndApplyDisables2,updateOptionStockStatus=updateOptionStockStatus2,findMediaProxyVariant=findMediaProxyVariant2,getActiveGalleryMediaId=getActiveGalleryMediaId2,autoscrollGalleryToFeatMedia=autoscrollGalleryToFeatMedia2,updateQuickviewImage=updateQuickviewImage2,initVariantSelectorState=initVariantSelectorState2,revShowSwatchMedia=revShowSwatchMedia2,revSelectCardSwatch=revSelectCardSwatch2,getSubscriptionSelection=getSubscriptionSelection2,getCartDrawerSectionId=getCartDrawerSectionId2,revShowCartError=revShowCartError2,revInitCharCounters=revInitCharCounters2,revInitPlaceholderCycle=revInitPlaceholderCycle2,ensureCurrencyLib=ensureCurrencyLib2,revBundleBuilderAutoInit=revBundleBuilderAutoInit2,revSyncAccordionItem=revSyncAccordionItem2;window.__REV_FLARE_LOADED__=!0;const REV_DEBUG=!1;document.addEventListener("click",function(e){const btn=e.target.closest(".rev-play");if(!btn)return;const wrap=btn.closest(".rev-media");if(!wrap)return;const video=wrap.querySelector("video");if(!video)return;video.hasAttribute("controls")||video.setAttribute("controls","controls");try{video.muted=!1}catch{}
1const p=video.play();p&&typeof p.catch=="function"&&p.catch(()=>{}),btn.style.display="none",video.addEventListener("ended",function handleEnd(){video.removeAttribute("controls"),btn.hidden=!1,video.currentTime=0,video.pause(),video.removeEventListener("ended",handleEnd)},{once:!0})},{passive:!0}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",updateArrivesByDates2):requestAnimationFrame(updateArrivesByDates2);const RevRerender=(()=>{const abortMap=new WeakMap;async function rerender({contextEl,targets=[],url,params={},incomingScopeSelector=null}){if(!contextEl||!targets.length)return;const controller=new AbortController;abortMap.get(contextEl)?.abort(),abortMap.set(contextEl,controller);const finalUrl=buildUrl(url,params);if(!finalUrl)return;const res=await fetch(finalUrl,{headers:{"X-Requested-With":"XMLHttpRequest"},signal:controller.signal});if(!res.ok)return;const html=await res.text(),doc=new DOMParser().parseFromString(html,"text/html"),incomingRoot=incomingScopeSelector?doc.querySelector(incomingScopeSelector):doc;incomingRoot&&targets.forEach(selector=>{const current=contextEl.querySelector(selector);if(!current)return;const incoming=incomingRoot.querySelector(selector);incoming&&current.replaceWith(incoming)})}function buildUrl(url,params){if(!url)return null;if(typeof url=="function")return url(params);const u=new URL(url,window.location.origin);return Object.entries(params).forEach(([k,v])=>{v!=null&&u.searchParams.set(k,v)}),u.toString()}return{rerender}})(),RevClientUpdate=(()=>{function price(contextEl,variant,parentSelector=""){if(!contextEl||!variant)return;const selector=parentSelector?`${parentSelector} .rev-price-wrapper`:".rev-price-wrapper",wrapper=contextEl.querySelector(selector);if(!wrapper)return;const cfgScript=wrapper.querySelector("script.rev-cfg");if(!cfgScript)return;let cfg;try{cfg=JSON.parse(cfgScript.textContent)}catch{return}const variantData=cfg.variants.find(v=>v.id===variant.id);if(!variantData)return;const priceValue=wrapper.querySelector(".rev-price-value");priceValue&&(priceValue.textContent=variantData.price,priceValue.classList.toggle("rev-price-sale",variantData.slash));const slashEl=wrapper.querySelector(".rev-price-slash");slashEl&&(slashEl.textContent=variantData.compare_at,slashEl.style.display=variantData.slash?"":"none");const savingsEl=wrapper.querySelector(".rev-savings");if(savingsEl){const showSaving=variantData.slash&&cfg.showSaving;savingsEl.style.display=showSaving?"":"none",savingsEl.textContent=variantData.saving}}function inventory(contextEl,variant,parentSelector=""){if(!contextEl||!variant)return;const selector=parentSelector?`${parentSelector} .rev-inventory`:".rev-inventory",wrapper=contextEl.querySelector(selector);if(!wrapper)return;const cfgScript=wrapper.querySelector("script.rev-cfg");if(!cfgScript)return;let cfg;try{cfg=JSON.parse(cfgScript.textContent)}catch{return}const variantData=cfg.variants.find(v=>v.id===variant.id);if(!variantData)return;["in-stock","med","low","preorder","oos"].forEach(s=>wrapper.classList.remove(`rev-inventory-${s}`)),wrapper.classList.add(`rev-inventory-${variantData.status}`);const textEl=wrapper.querySelector(".rev-inventory-text");textEl&&(textEl.textContent=variantData.text);const progressBar=wrapper.querySelector(".rev-inventory-bar");progressBar&&(progressBar.value=variantData.qty,progressBar.textContent=variantData.qty)}function klaviyoBis(contextEl,variant){!contextEl||!variant||contextEl.querySelectorAll(".rev-kl-bis").forEach(wrapper=>{const cfgScript=wrapper.querySelector("script.rev-cfg");if(!cfgScript)return;let cfg;try{cfg=JSON.parse(cfgScript.textContent)}catch{return}const variantData=cfg.variants.find(v=>v.id===variant.id),trigger=wrapper.querySelector(".klaviyo-bis-trigger");if(!trigger)return;if(!variantData){trigger.dataset.variant="",trigger.style.setProperty("display","none","important"),wrapper.classList.add("rev-kl-bis-hidden");return}trigger.dataset.variant=variant.id;const show=!!variantData.show;trigger.style.setProperty("display",show?"block":"none","important"),wrapper.classList.toggle("rev-kl-bis-hidden",!show)})}function klaviyoBisReset(contextEl){(contextEl&&contextEl.querySelector(".rev-kl-bis")?contextEl:document).querySelectorAll(".rev-kl-bis").forEach(wrapper=>{wrapper.classList.add("rev-kl-bis-hidden");const trigger=wrapper.querySelector(".klaviyo-bis-trigger");trigger&&(trigger.style.setProperty("display","none","important"),trigger.dataset.variant="")})}function buyButtons(contextEl,variant,parentSelector=""){if(!contextEl)return;const selector=parentSelector?`${parentSelector} .rev-buy-buttons`:".rev-buy-buttons",wrapper=contextEl.querySelector(selector);if(!wrapper)return;const cfgScript=wrapper.querySelector("script.rev-cfg");if(!cfgScript)return;let cfg;
1try{cfg=JSON.parse(cfgScript.textContent)}catch{return}const variantData=cfg.variants.find(v=>v.id===variant.id);if(!variantData)return;const status=variantData.status,label=variantData.label,button=wrapper.querySelector(".rev-atc-button");if(button){const labelSpan=button.querySelector("span");labelSpan&&(labelSpan.textContent=label),button.setAttribute("aria-label",label),button.classList.remove("rev-button-status-atc","rev-button-status-preorder","rev-button-status-oos"),button.classList.add(`rev-button-status-${status}`),button.disabled=status==="oos",button.classList.toggle("rev-button-oos",status==="oos"),button.dataset.variantId=variant.id}const dynamicCheckout=wrapper.querySelector(".rev-dynamic-checkout");dynamicCheckout&&(dynamicCheckout.style.display=status==="oos"?"none":"");const subtextEl=wrapper.querySelector("[data-rev-button-subtext-preorder]");if(subtextEl){const subtext=variantData.subtext||"";subtext?(subtextEl.textContent=subtext,subtextEl.style.display=""):(subtextEl.textContent="",subtextEl.style.display="none")}const recs=wrapper.querySelector(".rev-oos-recommendations");recs&&(recs.style.display=status==="oos"?"block":"none")}function buyButtonsUnavailable(contextEl,parentSelector=""){if(!contextEl)return;const selector=parentSelector?`${parentSelector} .rev-buy-buttons`:".rev-buy-buttons",wrapper=contextEl.querySelector(selector);if(!wrapper)return;let oosLabel="Unavailable";const cfgScript=wrapper.querySelector("script.rev-cfg");if(cfgScript)try{const oosVariant=JSON.parse(cfgScript.textContent).variants.find(v=>v.status==="oos");oosVariant?.label&&(oosLabel=oosVariant.label)}catch{}const button=wrapper.querySelector(".rev-atc-button");if(button){const labelSpan=button.querySelector("span");labelSpan&&(labelSpan.textContent=oosLabel),button.setAttribute("aria-label",oosLabel),button.classList.remove("rev-button-status-atc","rev-button-status-preorder","rev-button-status-oos"),button.classList.add("rev-button-status-oos"),button.disabled=!0,button.classList.add("rev-button-oos"),button.dataset.variantId=""}const dynamicCheckout=wrapper.querySelector(".rev-dynamic-checkout");dynamicCheckout&&(dynamicCheckout.style.display="none");const subtextEl=wrapper.querySelector("[data-rev-button-subtext-preorder]");subtextEl&&(subtextEl.textContent="",subtextEl.style.display="none");const recs=wrapper.querySelector(".rev-oos-recommendations");recs&&(recs.style.display="block")}function gallery(contextEl,variant){if(!contextEl||!variant)return;const galleryEl=contextEl.querySelector(".rev-product-gallery");if(!galleryEl)return;const cfgScript=galleryEl.querySelector(".rev-cfg");if(!cfgScript)return;let cfg;try{cfg=JSON.parse(cfgScript.textContent)}catch{return}const variantData=cfg.variants.find(v=>v.id===variant.id);if(!variantData||!variantData.media)return;const playButtonSvg='<span class="rev-play-button"><svg aria-hidden="true" focusable="false" viewBox="0 0 24 24" class="rev-icon rev-icon-play" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24 12L6 22.3923L6 1.60769L24 12Z" fill="currentColor"/></svg></span>',thumbnails=galleryEl.querySelector(".rev-gallery-thumbnails");thumbnails&&(thumbnails.innerHTML=variantData.media.map((m,i)=>`
2        <div class="rev-gallery-thumbnail-item rev-media${i===0?" rev-gallery-thumbnail-active":""}" data-index="${i}" data-media-id="${m.id}">
3          ${m.type==="video"?playButtonSvg:""}
4          ${m.thumbnail}
5        </div>
6      `).join(""));const track=galleryEl.querySelector(".rev-gallery-track");track&&(track.innerHTML=variantData.media.map((m,i)=>`
7        <div class="rev-media" data-index="${i}" data-media-id="${m.id}">
8          ${m.main}
9          ${m.type==="video"?`<button type="button" class="rev-play" aria-label="Play video">${playButtonSvg}</button>`:""}
10        </div>
11      `).join(""));const bulletContainer=galleryEl.querySelector(".rev-gallery-slide-indicator");bulletContainer&&(bulletContainer.innerHTML=variantData.media.map((m,i)=>`
12        <button type="button" class="rev-gallery-slide-bullet${i===0?" rev-gallery-slide-bullet-active":""}" data-index="${i}" data-media-id="${m.id}" aria-label="Go to slide ${i+1}"></button>
13      `).join(""));const zoomImagesContainer=galleryEl.querySelector(".rev-gallery-zoom-images");if(zoomImagesContainer&&(zoomImagesContainer.innerHTML=variantData.media.map(m=>`
14        <div class="rev-gallery-zoom-item rev-media">
15          ${m.type==="video"?playButtonSvg:""}
16          ${m.main}
17        </div>
18      `).join("")),galleryEl.removeAttribute("data-rev-gallery-init"),galleryEl.removeAttribute("data-rev-zoom-init"),galleryEl._revGalleryInstance=null,window.RevGallery?.init&&window.RevGallery.init(galleryEl),window.RevGalleryZoom?.init){const wrapper=galleryEl.closest(".rev-product-gallery-wrapper")||galleryEl.closest("[data-section-id]")||galleryEl.parentElement;wrapper&&window.RevGalleryZoom.init(wrapper)}}function sku(contextEl,variant){if(!contextEl||!variant)return;const skuEl=contextEl.querySelector("[data-rev-sku]");skuEl&&(skuEl.textContent=variant.sku||"")}return{price,inventory,klaviyoBis,klaviyoBisReset,buyButtons,buyButtonsUnavailable,gallery,sku}})();window.RevClientUpdate=RevClientUpdate,document.addEventListener("DOMContentLoaded",()=>{const main=document.querySelector(".rev-product-main");if(!main||!window.location.pathname.includes("/products/"))return;const variantId=main.querySelector(".rev-block-buy-buttons form.rev-product-form")?.querySelector('input[name="id"], [data-rev-variant-id]')?.value;if(!variantId)return;const url=new URL(window.location.href);
18url.searchParams.get("variant")||(url.searchParams.set("variant",String(variantId)),window.history.replaceState({},"",url.toString())),initVariantSelectorState2(document);const cfgScript=main.querySelector('.rev-variant-selector[data-context="main"]')?.querySelector(".rev-cfg");if(cfgScript){let cfg;try{cfg=JSON.parse(cfgScript.textContent.trim())}catch{return}const variant=cfg.variants.find(v=>v.id===parseInt(variantId,10));variant?.feat_media&&setTimeout(()=>{const gallery=main.querySelector(".rev-product-gallery");if(!gallery)return;const targetMediaId=variant.feat_media.toString(),mediaElements=gallery.querySelectorAll("[data-media-id]");let targetIndex=-1;for(let i=0;i<mediaElements.length;i++)if(mediaElements[i].dataset.mediaId===targetMediaId){targetIndex=parseInt(mediaElements[i].dataset.index,10);break}if(targetIndex===-1)return;const galleryInstance=gallery._revGalleryInstance;galleryInstance&&typeof galleryInstance.scrollToIndex=="function"&&galleryInstance.scrollToIndex(targetIndex,"auto")},150)}}),document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".rev-product-main").forEach(main=>{const variantId=main.querySelector(".rev-block-buy-buttons form.rev-product-form")?.querySelector('input[name="id"], [data-rev-variant-id]')?.value;if(!variantId)return;const cfgScript=main.querySelector('.rev-variant-selector[data-context="main"]')?.querySelector(".rev-cfg");if(!cfgScript)return;let cfg;try{cfg=JSON.parse(cfgScript.textContent.trim())}catch{return}const variant=cfg.variants.find(v=>v.id===parseInt(variantId,10));if(!variant?.feat_media)return;const waitForGallery=(attempts=0)=>{if(attempts>50)return;const gallery=main.querySelector(".rev-product-gallery");if(!gallery||!gallery._revGalleryInstance){setTimeout(()=>waitForGallery(attempts+1),50);return}const targetMediaId=variant.feat_media.toString(),mediaElements=gallery.querySelectorAll("[data-media-id]");let targetIndex=-1;for(let i=0;i<mediaElements.length;i++)if(mediaElements[i].dataset.mediaId===targetMediaId){targetIndex=parseInt(mediaElements[i].dataset.index,10);break}if(targetIndex===-1)return;const galleryInstance=gallery._revGalleryInstance;galleryInstance&&typeof galleryInstance.scrollToIndex=="function"&&galleryInstance.scrollToIndex(targetIndex,"auto")};setTimeout(()=>waitForGallery(),50)})}),document.addEventListener("change",function(e){if(e.target.type==="radio"&&e.target.closest(".rev-variant-selector")){const radioInput=e.target,variantSelector=radioInput.closest(".rev-variant-selector"),radioName=radioInput.name;variantSelector.querySelectorAll(`input[type="radio"][name="${radioName}"]`).forEach(function(radio){const swatchOption=radio.closest(".rev-swatch-option");swatchOption&&swatchOption.classList.remove("rev-option-active")});const selectedSwatchOption=radioInput.closest(".rev-swatch-option");selectedSwatchOption&&selectedSwatchOption.classList.add("rev-option-active")}}),document.addEventListener("change",function(e){const selector=e.target.closest(".rev-variant-selector");if(!selector)return;const context=selector.dataset.context;if(!context)return;const isMainContext=context==="main",isQuickview=context==="quickview",isBundle=context==="bundle";let contextEl;if(isMainContext?contextEl=selector.closest(".rev-product-main"):isQuickview?contextEl=selector.closest("[data-rev-quickview]"):isBundle?contextEl=selector.closest(".rev-bundle-builder__variant-wrap"):contextEl=selector.closest(".rev-product-card"),!contextEl)return;const cfgScript=selector.querySelector(".rev-cfg");if(!cfgScript)return;let cfg;try{cfg=JSON.parse(cfgScript.textContent.trim())}catch{return}const variants=cfg.variants,selected=[];selector.querySelectorAll("[data-option-position]").forEach(el=>{const pos=parseInt(el.dataset.optionPosition,10)-1;el.type==="radio"&&el.checked&&(selected[pos]=el.value),el.tagName==="SELECT"&&(selected[pos]=el.value)});const changedEl=e.target.closest("[data-option-position]"),changedIdx=changedEl?parseInt(changedEl.dataset.optionPosition,10)-1:0;if(changedEl&&(changedEl.type==="radio"&&(selected[changedIdx]=changedEl.value),changedEl.tagName==="SELECT"&&(selected[changedIdx]=changedEl.value)),selected.every(v=>v==null))return;const validSets=getValidValuesByOption2(variants,selected);updateOptionDisables2(selector,validSets);let variant=variants.find(v=>(selected[0]==null||v.option1===selected[0])&&(selected[1]==null||v.option2===selected[1])&&(selected[2]==null||v.option3===selected[2]));if(!variant){let form;isMainContext?form=contextEl.querySelector(".rev-block-buy-buttons form.rev-product-form"):isQuickview?form=contextEl.querySelector(".rev-quickview__actions form.rev-product-form"):form=contextEl.querySelector("form.rev-product-form");const idInput=form?.querySelector('input[name="id"], [data-rev-variant-id]');if(idInput&&(idInput.value=""),isMainContext){RevClientUpdate.buyButtonsUnavailable(contextEl,".rev-block-buy-buttons");const stickyBtn=contextEl.querySelector("[data-rev-sticky-atc] .rev-atc-button");if(stickyBtn){const mainBtn=contextEl.querySelector(".rev-block-buy-buttons .rev-atc-button");if(mainBtn){stickyBtn.dataset.variantId="",stickyBtn.disabled=!0,stickyBtn.setAttribute("aria-label",mainBtn.getAttribute("aria-label")),stickyBtn.classList.remove("rev-button-status-atc","rev-button-status-preorder","rev-button-status-oos"),stickyBtn.classList.add("rev-button-status-oos","rev-button-oos");const mainLabel=mainBtn.querySelector("span"),stickyLabel=stickyBtn.querySelector("span");mainLabel&&stickyLabel&&(stickyLabel.textContent=mainLabel.textContent)}}}else isQuickview?RevClientUpdate.buyButtonsUnavailable(contextEl,".rev-quickview__actions"):isBundle||RevClientUpdate.buyButtonsUnavailable(contextEl);if(selector.querySelectorAll(".rev-legend span").forEach((span,idx)=>{selected[idx]&&(span.textContent=selected[idx])}),updateOptionStockStatus2(selector,variants,selected),RevClientUpdate.klaviyoBisReset(contextEl),!isBundle){const proxyVariant=findMediaProxyVariant2(variants,selected,changedIdx);if(proxyVariant){const gallery=contextEl.querySelector(".rev-product-gallery"),variantMetadata=gallery?.dataset.variantMetadata==="true";if(gallery&&variantMetadata&&proxyVariant.feat_media){const targetMediaId=proxyVariant.feat_media.toString();getActiveGalleryMediaId2(gallery)!==targetMediaId&&RevClientUpdate.gallery(contextEl,proxyVariant)}autoscrollGalleryToFeatMedia2(contextEl,proxyVariant.feat_media,{allowPageScroll:!1}
18),isQuickview&&updateQuickviewImage2(contextEl,proxyVariant)}}return}if(!isBundle)if(isMainContext){const idInput=contextEl.querySelector(".rev-block-buy-buttons form.rev-product-form")?.querySelector('input[name="id"], [data-rev-variant-id]');idInput&&(idInput.value=variant.id)}else if(isQuickview){const idInput=contextEl.querySelector(".rev-quickview__actions form.rev-product-form")?.querySelector('input[name="id"], [data-rev-variant-id]');idInput&&(idInput.value=variant.id)}else{const idInput=contextEl.querySelector("form.rev-product-form")?.querySelector('input[name="id"], [data-rev-variant-id]');idInput&&(idInput.value=variant.id)}if(isMainContext&&window.location.pathname.includes("/products/")){const url=new URL(window.location.href);url.searchParams.set("variant",variant.id),window.history.replaceState({},"",url.toString())}if(selector.querySelectorAll(".rev-legend span").forEach((span,idx)=>{selected[idx]&&(span.textContent=selected[idx])}),updateOptionStockStatus2(selector,variants,selected),isBundle){if(RevClientUpdate.price(contextEl,variant),variant.feat_media_url){const bundleItem=contextEl.closest("[data-bundle-item]"),cfgScript2=bundleItem?.querySelector(".rev-bundle-item-cfg");let itemCfg=null;if(cfgScript2)try{itemCfg=JSON.parse(cfgScript2.textContent.trim())}catch{}const overlayEnabled=!!itemCfg?.customInput?.overlayEnabled,overlayMedia=itemCfg?.customInput?.overlayMedia;if(!(overlayEnabled&&overlayMedia)){const itemImg=bundleItem?.querySelector('[id^="bundle-item-img-"]');if(itemImg){const makeSrc=(url,w)=>url.replace(/width=\d+/,`width=${w}`);itemImg.srcset=`${makeSrc(variant.feat_media_url,200)} 200w, ${makeSrc(variant.feat_media_url,400)} 400w`,itemImg.src=makeSrc(variant.feat_media_url,400)}}}}else if(isMainContext){RevClientUpdate.price(contextEl,variant,".rev-block-price"),RevClientUpdate.buyButtons(contextEl,variant,".rev-block-buy-buttons"),RevClientUpdate.inventory(contextEl,variant,".rev-block-inventory"),RevClientUpdate.klaviyoBis(contextEl,variant),RevClientUpdate.sku(contextEl,variant);const subPlan=contextEl.querySelector("[data-subscription-plan]");subPlan&&subPlan.querySelectorAll("[data-rev-sub-option]").forEach(opt=>{RevClientUpdate.price(opt,variant)});const stickyBtn=contextEl.querySelector("[data-rev-sticky-atc] .rev-atc-button");if(stickyBtn){const mainBtn=contextEl.querySelector(".rev-block-buy-buttons .rev-atc-button");if(mainBtn){stickyBtn.dataset.variantId=mainBtn.dataset.variantId,stickyBtn.disabled=mainBtn.disabled,stickyBtn.setAttribute("aria-label",mainBtn.getAttribute("aria-label")),stickyBtn.classList.remove("rev-button-status-atc","rev-button-status-preorder","rev-button-status-oos"),["rev-button-status-atc","rev-button-status-preorder","rev-button-status-oos"].forEach(cls=>{mainBtn.classList.contains(cls)&&stickyBtn.classList.add(cls)}),stickyBtn.classList.toggle("rev-button-oos",mainBtn.classList.contains("rev-button-oos"));const mainLabel=mainBtn.querySelector("span"),stickyLabel=stickyBtn.querySelector("span");mainLabel&&stickyLabel&&(stickyLabel.textContent=mainLabel.textContent)}const stickyPrice=contextEl.querySelector("[data-rev-sticky-price]"),mainPrice=contextEl.querySelector(".rev-block-price .rev-price-value");stickyPrice&&mainPrice&&(stickyPrice.textContent=mainPrice.textContent)}}else isQuickview?(RevClientUpdate.price(contextEl,variant,".rev-quickview__price"),RevClientUpdate.buyButtons(contextEl,variant,".rev-quickview__actions"),updateQuickviewImage2(contextEl,variant)):(RevClientUpdate.price(contextEl,variant),RevClientUpdate.buyButtons(contextEl,variant));!isQuickview&&!isBundle&&(contextEl.querySelector(".rev-product-gallery")?.dataset.variantMetadata==="true"&&RevClientUpdate.gallery(contextEl,variant),autoscrollGalleryToFeatMedia2(contextEl,variant.feat_media))}),document.addEventListener("click",function(e){const upsell=e.target.closest(".rev-checkbox");if(!upsell)return;e.preventDefault(),e.stopPropagation();const input=upsell.querySelector(".rev-checkbox__toggle");input&&(input.checked=!input.checked,input.dispatchEvent(new Event("change",{bubbles:!0})))}),document.addEventListener("click",function(e){const btn=e.target.closest(".rev-card-quick-add");if(!btn||(e.preventDefault(),e.stopPropagation(),btn.dataset.revBusy))return;btn.dataset.revBusy="1";
18const card=btn.closest(".rev-product-card");if(!card){delete btn.dataset.revBusy;return}const isSingle=btn.dataset.singleVariant==="true",variantId=btn.dataset.variantId,cfgScript=card.querySelector("script.rev-card-cfg");let cfg=null;if(cfgScript)try{cfg=JSON.parse(cfgScript.textContent.trim())}catch{}let resolvedVariantId=null;if(isSingle)resolvedVariantId=variantId;else if(cfg){const swatchGroups=card.querySelectorAll(".rev-card-swatches"),selected={};swatchGroups.forEach(group=>{const pos=parseInt(group.dataset.optionPosition,10),active=group.querySelector(".rev-card-swatch-active");active&&pos&&(selected[pos]=active.dataset.optionValue)});const optionCount=cfg.v[0].o.length;if(Object.keys(selected).length>=optionCount){const match=cfg.v.find(v=>v.o.every((opt,i)=>!selected[i+1]||opt===selected[i+1])&&v.a);match&&(resolvedVariantId=String(match.id))}else if(optionCount===1){const activeSwatch=card.querySelector(".rev-card-swatch-active");if(activeSwatch){const optVal=activeSwatch.dataset.optionValue,match=cfg.v.find(v=>v.o[0]===optVal&&v.a);match&&(resolvedVariantId=String(match.id))}}}if(resolvedVariantId){const atcBtn=card.querySelector(".rev-atc-button");addToCart({variantId:resolvedVariantId,quantity:1,btn:atcBtn||btn,contextEl:card,isMainContext:!1,action:"add_to_cart"}).finally(()=>{delete btn.dataset.revBusy})}else{delete btn.dataset.revBusy;const productUrl=card.dataset.productUrl;if(!productUrl)return;const qvOverlay=card.closest("[data-section-id]")?.querySelector("[data-rev-quickview]");if(!qvOverlay){window.location.href=productUrl;return}revQuickview.open(qvOverlay,productUrl)}});const revQuickview=(()=>{let activeOverlay=null,_overlayOriginalParent=null,_scrollbarWidth=0;function lockScroll(){_scrollbarWidth=window.innerWidth-document.documentElement.clientWidth,document.documentElement.style.overflow="hidden",document.body.style.overflow="hidden",_scrollbarWidth>0&&(document.body.style.paddingRight=_scrollbarWidth+"px")}function unlockScroll(){document.documentElement.style.overflow="",document.body.style.overflow="",document.body.style.paddingRight=""}async function open(overlay,productUrl){activeOverlay=overlay,overlay.parentElement!==document.body&&(_overlayOriginalParent=overlay.parentElement,document.body.appendChild(overlay)),overlay.classList.add("active"),lockScroll();const body=overlay.querySelector("[data-rev-quickview-body]");body&&(body.style.transition="none",body.style.opacity="1",body.innerHTML=`
19        <div class="rev-quickview__skeleton">
20          <div class="rev-quickview__skeleton-row">
21            <div class="rev-quickview__skeleton-media"></div>
22            <div class="rev-quickview__skeleton-info">
23              <div class="rev-quickview__skeleton-line rev-quickview__skeleton-line--title"></div>
24              <div class="rev-quickview__skeleton-line rev-quickview__skeleton-line--type"></div>
25              <div class="rev-quickview__skeleton-line rev-quickview__skeleton-line--price"></div>
26            </div>
27          </div>
28          <div class="rev-quickview__skeleton-line rev-quickview__skeleton-line--options"></div>
29          <div class="rev-quickview__skeleton-line rev-quickview__skeleton-line--options"></div>
30          <div class="rev-quickview__skeleton-line rev-quickview__skeleton-line--btn"></div>
31        </div>
32      `);const sectionId=overlay.dataset.sectionId;if(!sectionId||!productUrl)return;await RevRerender.rerender({contextEl:overlay,targets:["[data-rev-quickview-body]"],url:productUrl,params:{section_id:sectionId},incomingScopeSelector:"[data-rev-quickview]"});const freshBody=overlay.querySelector("[data-rev-quickview-body]");freshBody&&(freshBody.style.transition="none",freshBody.style.opacity="0",requestAnimationFrame(()=>{freshBody.style.transition="opacity 0.25s ease",freshBody.style.opacity="1"})),initVariantSelectorState2(overlay)}function close(){if(!activeOverlay)return;activeOverlay.classList.remove("active"),unlockScroll();const overlayToReturn=activeOverlay,parentToReturn=_overlayOriginalParent;setTimeout(()=>{parentToReturn&&overlayToReturn.parentElement===document.body&&parentToReturn.appendChild(overlayToReturn)},350),activeOverlay=null,_overlayOriginalParent=null}function getActive(){return activeOverlay}return{open,close,getActive}})();document.addEventListener("click",function(e){e.target.closest("[data-rev-quickview-close]")&&(e.preventDefault(),revQuickview.close())}),document.addEventListener("click",function(e){const overlay=e.target.closest("[data-rev-quickview]");overlay&&overlay.classList.contains("active")&&e.target===overlay&&revQuickview.close()}),document.addEventListener("keydown",function(e){e.key==="Escape"&&revQuickview.close()}),document.addEventListener("click",function(e){const atcBtn=e.target.closest(".rev-quickview__actions .rev-atc-button");if(!atcBtn||!atcBtn.closest("[data-rev-quickview]"))return;let closed=!1;function doClose(){closed||(closed=!0,document.documentElement.removeEventListener("cart:updated",onCartUpdated),observer&&observer.disconnect(),revQuickview.close())}function onCartUpdated(){doClose()}document.documentElement.addEventListener("cart:updated",onCartUpdated);let observer=null;typeof MutationObserver<"u"&&(observer=new MutationObserver(()=>{!atcBtn.classList.contains("loading")&&!atcBtn.disabled&&setTimeout(doClose,300)}),observer.observe(atcBtn,{attributes:!0,attributeFilter:["class","disabled"]})),setTimeout(doClose,8e3)}),document.addEventListener("mouseover",function(e){const swatch=e.target.closest(".rev-card-swatch");swatch&&revSelectCardSwatch2(swatch)}),document.addEventListener("click",function(e){const swatch=e.target.closest(".rev-card-swatch");swatch&&(e.preventDefault(),e.stopPropagation(),revSelectCardSwatch2(swatch))}),document.addEventListener("DOMContentLoaded",()=>{const main=document.querySelector(".rev-product-main");if(!main)return;const stickyBar=main.querySelector("[data-rev-sticky-atc]");if(!stickyBar)return;const buyBlock=main.querySelector(".rev-block-buy-buttons");if(!buyBlock)return;new IntersectionObserver(([entry])=>{stickyBar.classList.toggle("rev-sticky-atc-visible",!entry.isIntersecting)},{threshold:0}).observe(buyBlock)}),document.addEventListener("change",function(e){const isPurchaseOption=e.target.matches('input[name="purchase_option"]'),isSellingPlan=e.target.matches('select[name="selling_plan"]');if(!isPurchaseOption&&!isSellingPlan)return;const main=e.target.closest(".rev-product-main");if(!main)return;const stickyBtn=main.querySelector("[data-rev-sticky-atc] .rev-atc-button");stickyBtn&&requestAnimationFrame(()=>{const mainBtn=main.querySelector(".rev-block-buy-buttons .rev-atc-button");if(mainBtn){stickyBtn.dataset.variantId=mainBtn.dataset.variantId,stickyBtn.disabled=mainBtn.disabled,stickyBtn.setAttribute("aria-label",mainBtn.getAttribute("aria-label")),stickyBtn.classList.remove("rev-button-status-atc","rev-button-status-preorder","rev-button-status-oos"),["rev-button-status-atc","rev-button-status-preorder","rev-button-status-oos"].forEach(cls=>{mainBtn.classList.contains(cls)&&stickyBtn.classList.add(cls)}),stickyBtn.classList.toggle("rev-button-oos",mainBtn.classList.contains("rev-button-oos"));const mainLabel=mainBtn.querySelector("span"),stickyLabel=stickyBtn.querySelector("span");mainLabel&&stickyLabel&&(stickyLabel.textContent=mainLabel.textContent)}const stickyPrice=main.querySelector("[data-rev-sticky-price]");if(stickyPrice){const mainPrice=main.querySelector(".rev-block-price .rev-price-value");mainPrice&&(stickyPrice.textContent=mainPrice.textContent)}})}),document.addEventListener("click",function(e){const btn=e.target.closest(".rev-atc-button");if(!btn)return;REV_DEBUG&&console.log("[REV ATC] fired | product:",btn.getAttribute("data-product-title"),"| discountCode:",JSON.stringify(btn.dataset.discountCode));const card=btn.closest(".rev-product-card"),main=btn.closest(".rev-product-main"),qv=btn.closest(".rev-quickview"),contextEl=card||main||qv,isMainContext=!!main,isPopupContext=!!btn.closest(".rev-popup-overlay");if(REV_DEBUG&&console.log("[REV ATC] context:",contextEl?.className,"| isMain:",isMainContext,"| isPopup:",isPopupContext),!contextEl||btn.dataset.revBusy==="1")return;btn.dataset.revBusy="1";let form;qv?form=contextEl.querySelector(".rev-quickview__actions form.rev-product-form"):main?form=contextEl.querySelector(".rev-block-buy-buttons form.rev-product-form"):form=contextEl.querySelector("form.rev-product-form");const variantId=form?.querySelector('input[name="id"]')?.value||btn.dataset.variantId;if(!variantId){delete btn.dataset.revBusy;return}const action=(btn.dataset.action||"add_to_cart").toLowerCase();if(isMainContext){const requiredInputs=main.querySelectorAll('.rev-custom-input__field[data-rev-required="true"]');let hasValidationError=!1;
32if(requiredInputs.forEach(input=>{const wrapper=input.closest(".rev-custom-input");(!input.value||input.value.trim()==="")&&(hasValidationError=!0,wrapper.classList.add("rev-validation-error"),input.addEventListener("input",function clearError(){wrapper.classList.remove("rev-validation-error"),input.removeEventListener("input",clearError)},{once:!0}))}),hasValidationError){console.warn("Please fill in all required fields"),delete btn.dataset.revBusy;return}}let quantity=1;if(isMainContext){const qtySelector=main.querySelector(".rev-qty-selector");if(qtySelector){const qtyInput=qtySelector.querySelector('input[type="number"]');qtyInput&&(quantity=parseInt(qtyInput.value,10)||1)}}addToCart({variantId,quantity,btn,contextEl,isMainContext,isPopupContext,action})},{passive:!1});async function addToCart({variantId,quantity,btn,contextEl,isMainContext,isPopupContext,action}){try{btn.disabled=!0,btn.classList.add("loading");const items=[{id:variantId,quantity}],{hasSubscriptionUI,purchaseOption,sellingPlanId}=getSubscriptionSelection2(contextEl);if(hasSubscriptionUI&&purchaseOption==="subscription"&&(sellingPlanId?items[0].selling_plan=sellingPlanId:console.warn("Subscription selected but no selling plan found.")),isMainContext){const mainProductProperties={};contextEl.querySelectorAll(".rev-custom-input__field").forEach(input=>{if(input.value&&input.value.trim()!==""){const match=(input.getAttribute("name")||"").match(/properties\[([^\]]+)\]/);if(match&&match[1]){const propertyName=match[1];mainProductProperties[propertyName]=input.value.trim()}}}),Object.keys(mainProductProperties).length>0&&(items[0].properties=mainProductProperties);const mainProductTitle=contextEl.querySelector('.rev-block-title, h1[class*="heading"]'),mainProductTitleText=mainProductTitle?mainProductTitle.textContent.trim():"Product";contextEl.querySelectorAll('.rev-checkbox-upsell input[type="checkbox"]:checked').forEach(checkbox=>{const upsellVariantId=checkbox.dataset.variantId;upsellVariantId&&items.push({id:upsellVariantId,quantity:1,properties:{"Added with":mainProductTitleText}})}),contextEl.querySelectorAll('.rev-bundle-builder__item[data-bundle-selected="true"][data-bundle-variant-id]').forEach(bundleItem=>{const bundleVariantId=bundleItem.dataset.bundleVariantId;if(!bundleVariantId)return;const bundleCartItem={id:Number(bundleVariantId),quantity:1,properties:{"Added with":mainProductTitleText,_bundle_selector:"true"}},customValue=bundleItem.dataset.bundleCustomInput,customPropName=bundleItem.dataset.bundleCustomInputPropertyName;customValue&&customPropName&&(bundleCartItem.properties[customPropName]=customValue),(bundleItem.classList.contains("rev-bundle-buy-box__engraving-item")||bundleItem.hasAttribute("data-is-customization"))&&(bundleCartItem._isCustomization=!0),items.push(bundleCartItem)});const engravingCheckbox=contextEl.querySelector(".rev-bundle-buy-box__engraving-checkbox:checked");if(engravingCheckbox){const engravingVariantId=engravingCheckbox.dataset.variantId,engravingTextInput=contextEl.querySelector(".rev-bundle-buy-box__engraving-input"),engravingText=engravingTextInput?engravingTextInput.value.trim():"";engravingVariantId&&(items.push({id:Number(engravingVariantId),quantity:1,properties:{"Added with":mainProductTitleText,Engraving:engravingText||"Yes"},_isCustomization:!0}),engravingText&&(items[0].properties||(items[0].properties={}),items[0].properties["Engraving Text"]=engravingText))}const displayRadio=contextEl.querySelector(".rev-bundle-buy-box__display-radio:checked");if(displayRadio){const displayVariantId=displayRadio.value;displayVariantId&&items.push({id:Number(displayVariantId),quantity:1,properties:{"Added with":mainProductTitleText,_bundle_display:"true"}})}contextEl.querySelectorAll(".rev-bundle-buy-box__touch-checkbox:checked").forEach(checkbox=>{const touchVariantId=checkbox.value;touchVariantId&&items.push({id:Number(touchVariantId),quantity:1,properties:{"Added with":mainProductTitleText,_bundle_touch:"true"}})})}if(items.length>1){const bundleGroupId=`group_${Date.now()}_${Math.floor(Math.random()*1e6)}`,hasCustomization=items.some(item=>
32item._isCustomization),customizationId=hasCustomization?`cust_${Date.now()}_${Math.floor(Math.random()*1e6)}`:null;hasCustomization&&(items[0].properties||(items[0].properties={}),items[0].properties._customization_id=customizationId),items.forEach((item,index)=>{item.properties||(item.properties={}),item.properties._bundle_group_id=bundleGroupId,index===0?item.properties._bundle_role="parent":item.properties._bundle_role="child",item._isCustomization&&(item.properties._customization_parent_id=customizationId,delete item._isCustomization)})}const cartDrawerSectionId=getCartDrawerSectionId2(),body={items};cartDrawerSectionId&&(body.sections=[cartDrawerSectionId],body.sections_url=window.location.pathname);const fetchHeaders={"Content-Type":"application/json"};isPopupContext&&(fetchHeaders["X-REV-POPUP-ATC"]="1");const res=await fetch("/cart/add.js",{method:"POST",headers:fetchHeaders,body:JSON.stringify(body)});if(!res.ok){const errorData=await res.json().catch(()=>({}));throw new Error(errorData.description||errorData.message||"Could not add item to cart.")}const parsedState=await res.json(),couponCheckbox=contextEl.querySelector(".amazon-coupon-checkbox:checked[data-discount-code]");if(couponCheckbox){const discountCode=couponCheckbox.dataset.discountCode;if(discountCode&&discountCode.trim()!=="")try{const discountUrl=`/discount/${encodeURIComponent(discountCode.trim())}?redirect=${encodeURIComponent(window.location.pathname)}`;await fetch(discountUrl,{method:"GET",credentials:"include",redirect:"follow"}),await new Promise(resolve=>setTimeout(resolve,150))}catch(err){console.warn("Failed to apply discount code:",err)}}const btnDiscountCode=btn.dataset.discountCode;if(REV_DEBUG&&console.log("[REV ATC] discount check | code:",JSON.stringify(btnDiscountCode)),btnDiscountCode&&btnDiscountCode.trim()!==""){REV_DEBUG&&console.log("[REV ATC] applying discount:",btnDiscountCode.trim());try{const discountCode=btnDiscountCode.trim();REV_DEBUG&&console.log("[REV ATC] applying discount via cart/update.js:",discountCode);const discRes=await fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json","X-REV-Internal":"true"},body:JSON.stringify({discount:discountCode})});if(REV_DEBUG&&console.log("[REV ATC] discount update response \u2014 status:",discRes.status,"ok:",discRes.ok),!discRes.ok){const text=await discRes.text().catch(()=>"");throw new Error(text||"Failed to apply discount code.")}if(await new Promise(resolve=>setTimeout(resolve,150)),REV_DEBUG)try{const cartAfterDiscount=await fetch("/cart.js",{credentials:"include"}).then(r=>r.json());console.log("[REV ATC] cart after discount:",{total_discount:cartAfterDiscount.total_discount,total_price:cartAfterDiscount.total_price,original_total_price:cartAfterDiscount.original_total_price,cart_level_discount_applications:cartAfterDiscount.cart_level_discount_applications,discount_applications:cartAfterDiscount.discount_applications,items:(cartAfterDiscount.items||[]).map(item=>({title:item.title,quantity:item.quantity,original_line_price:item.original_line_price,final_line_price:item.final_line_price,discounts:item.discounts,discount_allocations:item.discount_allocations}))})}catch(err){console.warn("[REV ATC] failed to fetch cart after discount:",err)}if(REV_DEBUG&&console.log("[REV ATC] cartDrawerSectionId:",cartDrawerSectionId),cartDrawerSectionId)try{const root=window.Shopify?.routes?.root||"/",freshHtml=await(await fetch(`${root}?section_id=${cartDrawerSectionId}`)).text();parsedState.sections?parsedState.sections[cartDrawerSectionId]=freshHtml:parsedState.sections={[cartDrawerSectionId]:freshHtml},REV_DEBUG&&console.log("[REV ATC] re-fetched cart drawer section with discount")}catch{REV_DEBUG&&console.warn("[REV ATC] failed to re-fetch cart drawer section")}else parsedState.sections=null,REV_DEBUG&&console.warn("[REV ATC] no cartDrawerSectionId, forcing re-fetch in revOpenCartDrawer")}catch(err){REV_DEBUG&&console.error("[REV ATC] discount fetch failed:",err)}}else REV_DEBUG&&console.warn("[REV ATC] skipping discount \u2014 code empty/missing");if(document.body.classList.add("rev-item-added"),document.documentElement.dispatchEvent(new CustomEvent("cart:updated",{bubbles:!0})),document.dispatchEvent(new CustomEvent("ajaxProduct:added",{bubbles:!0})),document.dispatchEvent(new CustomEvent("product-ajax:added",{bubbles:!0})),fetch("/cart.js").then(r=>r.json()).then(cartJson=>{parsedState.sections&&(cartJson.sections=parsedState.sections),document.dispatchEvent(new CustomEvent("cart-update",{bubbles:!0,detail:{cart:cartJson,source:"product-form",productVariantId:variantId}}))}).catch(()=>{}),action==="buy_now"?window.location.assign("/checkout"):await revOpenCartDrawer(parsedState.sections),isPopupContext){const popupOverlay=contextEl.closest(".rev-popup-overlay");if(popupOverlay){const sectionId=popupOverlay.getAttribute("data-section-id");sectionId&&setTimeout(()=>window.RevFlarePopups?.[sectionId]?.close?.(),150)}}}catch(err){console.error("Error adding to cart:",err),revShowCartError2(err.message)}finally{delete btn.dataset.revBusy,btn.disabled=!1,btn.classList.remove("loading")}}async function revParseCartError(res){try{var data=await res.json();return data.description||data.message||"Could not add item to cart."}catch{return"Could not add item to cart."}}document.addEventListener("input",function(e){var input=e.target.closest("[data-rev-char-input]");if(input){var wrapper=input.closest(".rev-bundle-builder__custom-input-wrapper")||input.parentElement;if(wrapper){var countEl=wrapper.querySelector("[data-rev-char-count]");countEl&&(countEl.textContent=input.value.length)}}}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){revInitPlaceholderCycle2()}):requestAnimationFrame(function(){revInitPlaceholderCycle2()});async function revOpenCartDrawer(sections){if(document.getElementById("ufl-cart"))return!0;
32const CART_DRAWER_SELECTORS=["cart-drawer","cart-drawer-drawer","#CartDrawer",'[id*="CartDrawer"]',"[data-cart-drawer]"];let drawerEl=null;for(const sel of CART_DRAWER_SELECTORS)if(drawerEl=document.querySelector(sel),drawerEl)break;if(drawerEl){const sectionId=getCartDrawerSectionId2();if(sectionId)try{let html=sections?.[sectionId];if(!html){const root=window.Shopify?.routes?.root||"/";html=await(await fetch(`${root}?section_id=${sectionId}`)).text()}const sectionWrapper=document.getElementById(`shopify-section-${sectionId}`);if(sectionWrapper&&html){const newWrapper=new DOMParser().parseFromString(html,"text/html").getElementById(`shopify-section-${sectionId}`);sectionWrapper.innerHTML=newWrapper?newWrapper.innerHTML:html,drawerEl=null;for(const sel of CART_DRAWER_SELECTORS)if(drawerEl=document.querySelector(sel),drawerEl)break}}catch{}if(drawerEl)try{if(typeof drawerEl.show=="function")return drawerEl.show(),!0;if(typeof drawerEl.open=="function")return drawerEl.open(),!0}catch{}return!0}const triggers=['button[aria-controls="CartDrawer"]','button[aria-controls="cart-drawer"]',"button[data-cart-toggle]",'button[data-drawer-trigger="cart"]','button[name="cart"]',"button.header__icon--cart","button.site-header__cart","button.cart-link"];for(const sel of triggers){const el=document.querySelector(sel);if(el)return el.dispatchEvent(new PointerEvent("pointerdown",{bubbles:!0,cancelable:!0})),el.dispatchEvent(new MouseEvent("mousedown",{bubbles:!0,cancelable:!0})),el.click(),!0}return window.location.href="/cart",!1}let __revCurrencyLibPromise=null;async function convertCents(cents,from,to){const amount=Number(cents||0);if(!from||!to||from===to||(await ensureCurrencyLib2(),!window.Currency?.rates?.[from]||!window.Currency?.rates?.[to]))return amount;const major=amount/100,convertedMajor=Currency.convert(major,from,to);return Math.round(convertedMajor*100)}const __revFxCache=new Map;async function convertCentsCached(cents,from,to){const key=`${from}->${to}:${cents}`;if(__revFxCache.has(key))return __revFxCache.get(key);const v=await convertCents(cents,from,to);return __revFxCache.set(key,v),v}(function(){if(window.__REV_POPUP_ENGINE__)return;window.__REV_POPUP_ENGINE__=!0;const instances=new Map,triggers=new Map;let globalListenersBound=!1;function parseConfig(overlay){const cfgEl=overlay.querySelector(".rev-popup-config");if(!cfgEl)return null;try{const cfg=JSON.parse(cfgEl.textContent.trim());return cfg.sectionId?cfg:null}catch{return null}}function makeStorageKeys(sectionId){return{popupShown:`revPopupShown_${sectionId}`,pageviews:`revPopupPageviews_${sectionId}`,visitorFirstSeen:"revPopupFirstVisit",trafficSource:"revPopupTrafficSource"}}function getTrafficSource(cfg){const keys=makeStorageKeys(cfg.sectionId),stored=localStorage.getItem(keys.trafficSource);if(stored)return stored;const params=new URLSearchParams(window.location.search),utm_source=(params.get("utm_source")||"").toLowerCase(),utm_medium=(params.get("utm_medium")||"").toLowerCase(),referrer=(document.referrer||"").toLowerCase();let source="unknown";return(utm_source||utm_medium)&&(utm_source.includes("facebook")||utm_source.includes("instagram")||utm_source.includes("fb")||utm_source.includes("ig")?source="meta":utm_source.includes("google")||utm_medium.includes("cpc")||utm_medium.includes("ppc")?source="google":utm_source.includes("klaviyo")||utm_source.includes("email")?source="klaviyo":utm_source.includes("tiktok")?source="tiktok":(utm_source.includes("snapchat")||utm_source.includes("snap"))&&(source="snapchat")),source==="unknown"&&(referrer?referrer.includes("facebook.com")||referrer.includes("instagram.com")?source="meta":referrer.includes("google.com")||referrer.includes("google.")?source="google":referrer.includes("tiktok.com")?source="tiktok":referrer.includes("snapchat.com")&&(source="snapchat"):source="direct"),localStorage.setItem(keys.trafficSource,source),source}function passesFilters(inst){const cfg=inst.config;if(!cfg.filteringEnabled)return!0;if(cfg.filterDevice&&cfg.filterDevice!=="all"){const isMobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);if(cfg.filterDevice==="mobile"&&!isMobile||cfg.filterDevice==="desktop"&&isMobile)return!1}if(cfg.filterVisitorStatus&&cfg.filterVisitorStatus!=="all"){const keys=inst.storageKeys,first
32Visit=localStorage.getItem(keys.visitorFirstSeen),isNew=!firstVisit;if(firstVisit||localStorage.setItem(keys.visitorFirstSeen,Date.now().toString()),cfg.filterVisitorStatus==="new"&&!isNew||cfg.filterVisitorStatus==="returning"&&isNew)return!1}if(cfg.filterTrafficSource){const source=getTrafficSource(cfg),allowed=[];if(cfg.filterTrafficUnknown&&allowed.push("unknown"),cfg.filterTrafficDirect&&allowed.push("direct"),cfg.filterTrafficMeta&&allowed.push("meta"),cfg.filterTrafficGoogle&&allowed.push("google"),cfg.filterTrafficKlaviyo&&allowed.push("klaviyo"),cfg.filterTrafficTikTok&&allowed.push("tiktok"),cfg.filterTrafficSnapchat&&allowed.push("snapchat"),allowed.length&&!allowed.includes(source))return!1}return!0}async function getCartInfo(){try{const cart=await(await fetch("/cart.js")).json();return{total:Number(cart.total_price||0),currency:cart.currency||null}}catch{return{total:0,currency:null}}}async function getPopupThresholdInCartCurrency(inst,cartCurrency){if(!inst?.config?.triggerATC)return null;const raw=Number(inst.config.cartThreshold||0);if(!raw||raw<=0)return null;const from=inst.config.shopCurrency,to=cartCurrency;return from&&to&&from!==to?await convertCentsCached(raw,from,to):raw}async function refreshThresholdTriggerButtons(){const els=document.querySelectorAll("[data-rev-popup-open][data-rev-popup-requires-threshold]");if(!els.length)return;const{total,currency:cartCurrency}=await getCartInfo(),thresholdCache=new Map;for(const el of els){const key=(el.getAttribute("data-rev-popup-open")||"").trim();if(!key)continue;const sectionId=triggers.get(key),inst=instances.get(sectionId);if(!inst){el.style.display="none";continue}let threshold=thresholdCache.get(key);if(threshold===void 0&&(threshold=await getPopupThresholdInCartCurrency(inst,cartCurrency),thresholdCache.set(key,threshold)),threshold===null){el.style.display="block";continue}el.style.display=total>=threshold?"block":"none"}}function debounce(fn,wait=150){let t=null;return(...args)=>{clearTimeout(t),t=setTimeout(()=>fn(...args),wait)}}function observeTriggerRerenders(){const refreshDebounced=debounce(()=>{refreshThresholdTriggerButtons()},200);refreshDebounced();const observer=new MutationObserver(mutations=>{for(const m of mutations){if(m.type==="childList"&&(m.addedNodes?.length||m.removedNodes?.length)){for(const node of m.addedNodes)if(node.nodeType===1){if(node.matches?.("[data-rev-popup-open][data-rev-popup-requires-threshold]")){refreshDebounced();return}if(node.querySelector?.("[data-rev-popup-open][data-rev-popup-requires-threshold]")){refreshDebounced();return}}}if(m.type==="attributes"&&m.target?.matches?.("[data-rev-popup-open][data-rev-popup-requires-threshold]")&&(m.attributeName==="style"||m.attributeName==="class"||m.attributeName==="data-rev-popup-open"||m.attributeName==="data-rev-popup-requires-threshold")){refreshDebounced();return}}});observer.observe(document.body,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","class","data-rev-popup-open","data-rev-popup-requires-threshold"]}),window.__REV_POPUP_TRIGGER_OBSERVER__=observer}function hasBeenShown(inst){return inst.config.showOnce?localStorage.getItem(inst.storageKeys.popupShown)==="true":!1}function markShown(inst){inst.config.showOnce&&localStorage.setItem(inst.storageKeys.popupShown,"true")}function log(inst,msg,data){inst.config.enableConsoleLog&&console.log(`[RevFlare Popup ${inst.config.sectionId}] ${msg}`,data||"")}function show(inst,force=!1){if(!force&&hasBeenShown(inst))return;const overlay=inst.overlay;if(!overlay)return;overlay.style.display="flex",overlay.offsetWidth;const cs=window.getComputedStyle(overlay);if(cs.display==="none"||cs.visibility==="hidden"){log(inst,"Popup suppressed by CSS (A/B test). Skipping show."),overlay.style.display="none";return}const delay=force?0:inst.config.displayDelay||0;window.setTimeout(()=>{overlay.classList.add("active"),document.body.style.overflow="hidden";const cs2=window.getComputedStyle(overlay);if(cs2.display==="none"||cs2.visibility==="hidden"){log(inst,"Popup suppressed after activation. Reverting."),overlay.classList.remove("active"),overlay.style.display="none",document.querySelectorAll(".rev-popup-overlay.active").length>0||(document.body.style.overflow="");return}force||markShown(inst),log(inst,"Popup displayed",force?"(forced)":"")},delay)}function hide(inst){const overlay=inst.overlay;overlay&&(overlay.classList.add("closing"),overlay.classList.remove("active"),window.setTimeout(()=>{overlay.classList.remove("closing"),overlay.style.display="none",document.querySelectorAll(".rev-popup-overlay.active").length>0||(document.body.style.overflow="")},600))}function revealThresholdButtonsForKey(triggerKey){const key=(triggerKey||"").trim();key&&document.querySelectorAll(`[data-rev-popup-open="${CSS.escape(key)}"][data-rev-popup-requires-threshold]`).forEach(el=>{el.style.display="block"})}async function checkAndShow(inst,triggerSource){if(log(inst,"Checking popup conditions",{triggerSource}),!hasBeenShown(inst)&&passesFilters(inst)){if((triggerSource==="atc"||triggerSource==="cart_change")&&inst.config.triggerATC){const{total,currency:cartCurrency}=await getCartInfo();let threshold=Number(inst.config.cartThreshold||0);const from=inst.config.shopCurrency,to=cartCurrency;
32if(from&&to&&from!==to&&(threshold=await convertCentsCached(threshold,from,to)),total<threshold)return;revealThresholdButtonsForKey(inst.config.triggerKey)}show(inst,!1)}}function bindPerInstanceUI(inst){const sectionId=inst.config.sectionId,closeBtn=inst.overlay.querySelector(`#revPopupClose-${CSS.escape(sectionId)}`);closeBtn&&closeBtn.addEventListener("click",()=>hide(inst)),inst.overlay.addEventListener("click",e=>{e.target===inst.overlay&&hide(inst)})}function registerAll(){document.querySelectorAll(".rev-popup-overlay[data-section-id]").forEach(overlay=>{const cfg=parseConfig(overlay);if(!cfg)return;const sectionId=cfg.sectionId;if(instances.has(sectionId))return;const inst={overlay,config:cfg,storageKeys:makeStorageKeys(sectionId),state:{scrollTriggered:!1,exitIntentTriggered:!1,timeTriggered:!1}};instances.set(sectionId,inst);const key=(cfg.triggerKey||"").trim();if(key&&triggers.set(key,sectionId),bindPerInstanceUI(inst),cfg.triggerPageview){const key2=inst.storageKeys.pageviews,count=(parseInt(localStorage.getItem(key2)||"0",10)||0)+1;localStorage.setItem(key2,String(count)),count>=(cfg.pageviewThreshold||0)&&checkAndShow(inst,"pageview")}cfg.triggerTime&&(cfg.timeThreshold||0)>0&&window.setTimeout(()=>
32{inst.state.timeTriggered||(inst.state.timeTriggered=!0,checkAndShow(inst,"time_delay"))},cfg.timeThreshold)}),window.RevFlarePopups||(window.RevFlarePopups={}),instances.forEach((inst,sectionId)=>{window.RevFlarePopups[sectionId]={open:()=>show(inst,!0),close:()=>hide(inst),reset:()=>{localStorage.removeItem(inst.storageKeys.popupShown),inst.state.scrollTriggered=!1,inst.state.exitIntentTriggered=!1,inst.state.timeTriggered=!1},resetPageviews:()=>localStorage.removeItem(inst.storageKeys.pageviews),getSectionId:()=>sectionId}}),window.RevFlarePopup||(window.RevFlarePopup={get:sectionId=>window.RevFlarePopups?.[sectionId],getAll:()=>window.RevFlarePopups,openById:sectionId=>window.RevFlarePopups?.[sectionId]?.open?.(),closeAll:()=>Object.values(window.RevFlarePopups||{}).forEach(p=>p.close?.()),resetAll:()=>Object.values(window.RevFlarePopups||{}).forEach(p=>p.reset?.())})}function bindGlobalListenersOnce(){if(globalListenersBound)return;globalListenersBound=!0,document.addEventListener("click",e=>{const el=e.target.closest("[data-rev-popup-open]");if(!el)return;const key=(el.getAttribute("data-rev-popup-open")||"").trim();if(!key)return;const sectionId=triggers.get(key);(window.RevFlarePopups?.[sectionId]||window.RevFlarePopups?.[key])?.open?.()});let scrollTimeout;window.addEventListener("scroll",()=>{scrollTimeout||(scrollTimeout=window.setTimeout(()=>{const scrollPercent=window.scrollY/(document.documentElement.scrollHeight-window.innerHeight)*100;instances.forEach(inst=>{const cfg=inst.config;if(cfg.triggerScrollDepth&&!inst.state.scrollTriggered&&scrollPercent>=(cfg.scrollDepthThreshold||0)&&(inst.state.scrollTriggered=!0,checkAndShow(inst,"scroll_depth")),cfg.triggerExitIntent&&!inst.state.exitIntentTriggered&&/Android|webOS|iPhone|iPad|iPod/i.test(navigator.userAgent)){inst._lastScrollY=inst._lastScrollY??window.scrollY;const last=inst._lastScrollY,current=window.scrollY;last-current>60&&current<150&&(inst.state.exitIntentTriggered=!0,checkAndShow(inst,"exit_intent")),inst._lastScrollY=current}}),scrollTimeout=null},200))}),document.addEventListener("mouseout",e=>{e.clientY<=0&&e.relatedTarget===null&&instances.forEach(inst=>{inst.config.triggerExitIntent&&!inst.state.exitIntentTriggered&&(inst.state.exitIntentTriggered=!0,checkAndShow(inst,"exit_intent"))})}),document.addEventListener("cart:updated",()=>{instances.forEach(inst=>inst.config.triggerATC&&checkAndShow(inst,"atc")),refreshThresholdTriggerButtons()}),document.addEventListener("product:added",()=>{instances.forEach(inst=>inst.config.triggerATC&&checkAndShow(inst,"atc")),refreshThresholdTriggerButtons()});const originalFetch=window.fetch;window.fetch=function(...args){const url=args?.[0],opts=args?.[1];let addedVariantId=null;try{if(typeof url=="string"&&url.includes("/cart/add")&&opts?.body){const body=typeof opts.body=="string"?JSON.parse(opts.body):opts.body,id=body?.items?.[0]?.id||body?.id;id&&(addedVariantId=String(id))}}catch{}return originalFetch.apply(this,args).then(res=>{try{if(typeof url=="string"&&res&&res.ok){const cleanUrl=url.split("?")[0],isCartAdd=cleanUrl.includes("/cart/add"),isCartChange=cleanUrl.includes("/cart/change")||cleanUrl.includes("/cart/update")||cleanUrl.includes("/cart/clear");if(isCartAdd||isCartChange){let isPopupATC=!1;const isRevInternal=!!(opts?.headers&&(opts.headers.get&&opts.headers.get("X-REV-Internal")||opts.headers["X-REV-Internal"]||opts.headers["x-rev-internal"]));isCartAdd&&(isPopupATC=!!(opts?.headers&&(opts.headers.get&&opts.headers.get("X-REV-POPUP-ATC")||opts.headers["X-REV-POPUP-ATC"]||opts.headers["x-rev-popup-atc"]))),window.setTimeout(()=>{!isRevInternal&&(!isCartAdd||!isPopupATC)&&instances.forEach(inst=>inst.config.triggerATC&&checkAndShow(inst,isCartChange?"cart_change":"atc")),refreshThresholdTriggerButtons()},400)}}}catch{}return res})},window.jQuery&&!window.__REV_POPUP_JQ_BOUND__&&(window.__REV_POPUP_JQ_BOUND__=!0,window.jQuery(document).ajaxComplete(function(event,xhr,settings){settings?.url&&settings.url.includes("/cart/add")&&window.setTimeout(()=>{instances.forEach(inst=>inst.config.triggerATC&&checkAndShow(inst,"atc")),refreshThresholdTriggerButtons()},500)}))}
32function init(){registerAll(),bindGlobalListenersOnce(),refreshThresholdTriggerButtons(),observeTriggerRerenders()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",init):init()})(),(function(){function initScroller(root){if(!root||root.dataset.revInit==="1")return;const track=root.querySelector("[data-rev-track]"),viewport=root.querySelector(".rev-scroll-viewport"),baseGroup=root.querySelector('[data-rev-group="base"]'),cloneGroup=root.querySelector('[data-rev-group="clone"]');if(!track||!viewport||!baseGroup||!cloneGroup)return;root.dataset.revInit="1";const maxDupes=40;function clearBaseDupes(){baseGroup.querySelectorAll('[data-rev-item-dupe="1"]').forEach(n=>n.remove())}function ensureFilled(){clearBaseDupes();const baseItems=Array.from(baseGroup.querySelectorAll("[data-rev-item]")).filter(el=>el.getAttribute("data-rev-item-dupe")!=="1");if(!baseItems.length)return;let i=0;for(;baseGroup.scrollWidth<viewport.clientWidth*1.2&&i<maxDupes;)baseItems.forEach(item=>{const dupe=item.cloneNode(!0);dupe.setAttribute("aria-hidden","true"),dupe.setAttribute("data-rev-item-dupe","1"),baseGroup.appendChild(dupe)}),i++;cloneGroup.innerHTML=baseGroup.innerHTML,cloneGroup.setAttribute("aria-hidden","true")}function updateDuration(){const loopDistance=baseGroup.scrollWidth;if(!loopDistance)return;const isMobile=window.innerWidth<=989,pxPerSec=parseFloat(getComputedStyle(root).getPropertyValue(isMobile?"--rev-speed-mob":"--rev-speed-desk"));if(!pxPerSec||pxPerSec<=0)return;const duration=loopDistance/pxPerSec,varName=isMobile?"--rev-duration-mob":"--rev-duration-desk";root.style.setProperty(varName,duration+"s")}function refresh(){ensureFilled(),updateDuration()}refresh(),"ResizeObserver"in window?new ResizeObserver(refresh).observe(viewport):window.addEventListener("resize",refresh),window.addEventListener("resize",refresh)}function initAll(scope){(scope||document).querySelectorAll("[data-rev-scroller]").forEach(initScroller)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>initAll(document)):initAll(document),document.addEventListener("shopify:section:load",e=>initAll(e.target))})(),window.RevGallery=window.RevGallery||(()=>{const clamp=(n,min,max)=>Math.max(min,Math.min(max,n)),isDesktop=()=>window.matchMedia("(min-width: 769px)").matches;function resetVideoInSlide(slideEl){if(!slideEl)return;const video=slideEl.querySelector("video");if(!video)return;try{video.pause()}catch{}try{video.currentTime=0}catch{}video.removeAttribute("controls");const btn=slideEl.querySelector(".rev-play");btn&&(btn.style.display="",btn.hidden=!1)}function setActiveUI({thumbs,bullets,counterEl,totalSlides,index}){thumbs?.length&&thumbs.forEach(t=>t.classList.toggle("is-active",Number(t.dataset.index)===index)),bullets?.length&&(bullets.forEach(b=>b.classList.toggle("rev-gallery-slide-bullet-active",Number(b.dataset.index)===index)),setNextBulletUI({bullets,index})),counterEl&&(counterEl.textContent=`${index+1} / ${totalSlides}`)}function nearestIndexByScrollLeft(main,slides){const x=main.scrollLeft;let best=0,bestDist=1/0;for(let i=0;i<slides.length;i++){const d=Math.abs(slides[i].offsetLeft-x);d<bestDist&&(bestDist=d,best=i)}return best}function applyThumbsHeightAndReveal(root){const thumbsWrap=root.querySelector(".rev-gallery-thumbnails");if(!thumbsWrap)return;if(!isDesktop()){thumbsWrap.classList.remove("is-ready"),thumbsWrap.style.removeProperty("--rev-thumbs-h");return}if(root.classList.contains("rev-thumbnails-bottom")){thumbsWrap.classList.contains("is-ready")||requestAnimationFrame(()=>thumbsWrap.classList.add("is-ready"));return}const mainViewport=root.querySelector(".rev-gallery-main[data-rev-main]");if(!mainViewport)return;const h=Math.round(mainViewport.getBoundingClientRect().height);if(!h||h<60)return;const prev=parseInt(getComputedStyle(thumbsWrap).getPropertyValue("--rev-thumbs-h"))||0;if(prev&&Math.abs(prev-h)<6){thumbsWrap.classList.contains("is-ready")||requestAnimationFrame(()=>thumbsWrap.classList.add("is-ready"));return}thumbsWrap.style.setProperty("--rev-thumbs-h",`${h}px`),thumbsWrap.classList.contains("is-ready")||requestAnimationFrame(()=>thumbsWrap.classList.add("is-ready"))}function scrollThumbToIndex({thumbsWrap,thumbByIndex,index,behavior="smooth"}){if(!thumbsWrap)return;const el=thumbByIndex.get(index);if(!el)return;if(thumbsWrap.closest(".rev-thumbnails-bottom")!==null){const wrapW=thumbsWrap.clientWidth;if(!wrapW)return;const elLeft=el.offsetLeft,elW=el.offsetWidth||0,target=elLeft-wrapW*.45+elW/2,maxScroll=thumbsWrap.scrollWidth-wrapW,nextLeft=clamp(target,0,Math.max(0,maxScroll));if(Math.abs(thumbsWrap.scrollLeft-nextLeft)<2)return;thumbsWrap.scrollTo({left:nextLeft,behavior})}else{const wrapH=thumbsWrap.clientHeight;if(!wrapH)return;const elTop=el.offsetTop,elH=el.offsetHeight||0,target=elTop-wrapH*.45+elH/2,maxScroll=thumbsWrap.scrollHeight-wrapH,nextTop=clamp(target,0,Math.max(0,maxScroll));if(Math.abs(thumbsWrap.scrollTop-nextTop)<2)return;thumbsWrap.scrollTo({top:nextTop,behavior})}}function setNextBulletUI({bullets,index}){if(!bullets?.length)return;
32bullets.forEach(b=>b.classList.remove("rev-bullet-next"));const nextIndex=(index+1)%bullets.length,nextBullet=bullets.find(b=>Number(b.dataset.index)===nextIndex)||bullets[0];nextBullet&&nextBullet.classList.add("rev-bullet-next")}function init(root){if(!root||root.dataset.revGalleryInit==="1")return;const main=root.querySelector("[data-rev-main]"),track=root.querySelector("[data-rev-track-main]");if(!main||!track)return;const slides=Array.from(track.querySelectorAll(".rev-media[data-index]"));if(!slides.length)return;const thumbsWrap=root.querySelector(".rev-gallery-thumbnails"),thumbs=Array.from(root.querySelectorAll(".rev-gallery-thumbnail-item[data-index]")),bullets=Array.from(root.querySelectorAll(".rev-gallery-slide-bullet[data-index]")),counterEl=root.querySelector("[data-rev-gallery-counter]"),btnPrev=root.querySelector(".rev-gallery-button-prev"),btnNext=root.querySelector(".rev-gallery-button-next"),thumbByIndex=new Map;thumbs.forEach(t=>thumbByIndex.set(Number(t.dataset.index),t)),root.dataset.revGalleryInit="1",root._revGalleryInstance={setActive,scrollToIndex};let index=0,prevIndex=0,isProgrammaticScroll=!1,progTimer=null;function lockProgrammaticScroll(ms=350){isProgrammaticScroll=!0,window.clearTimeout(progTimer),progTimer=window.setTimeout(()=>{isProgrammaticScroll=!1},ms)}function setActive(i,{thumbBehavior="smooth"}={}){prevIndex=index,index=clamp(i,0,slides.length-1),prevIndex!==index&&resetVideoInSlide(slides[prevIndex]),setActiveUI({thumbs,bullets,counterEl,totalSlides:slides.length,index}),thumbsWrap&&thumbs.length&&isDesktop()&&thumbsWrap.classList.contains("is-ready")&&scrollThumbToIndex({thumbsWrap,thumbByIndex,index,behavior:thumbBehavior}),typeof startAutoswipe=="function"&&startAutoswipe()}function scrollToIndex(i,behavior="smooth"){const next=clamp(i,0,slides.length-1),target=slides[next];target&&(lockProgrammaticScroll(behavior==="smooth"?450:50),main.scrollTo({left:target.offsetLeft,behavior}),setActive(next,{thumbBehavior:"auto"}))}const autoplayRaw=root.getAttribute("data-autoplay"),autoswipeEnabled=autoplayRaw!=null,autoswipeSeconds=autoswipeEnabled?clamp(parseInt(autoplayRaw,10)||0,2,14):0,isSliderMode=()=>isDesktop()?root.classList.contains("rev-product-gallery-slider"):!0;let autoTimer=null,autoRaf=null,autoStartTs=0,autoPaused=!1;function setProgress(p){const clamped=Math.min(1,Math.max(0,p));root.style.setProperty("--rev-autoswipe-progress",clamped)}function clearAutoswipe(){clearTimeout(autoTimer),cancelAnimationFrame(autoRaf),autoTimer=null,autoRaf=null,setProgress(0)}function pauseAutoswipe(delay=2500){autoswipeEnabled&&(autoPaused=!0,root.classList.remove("is-autoswiping"),clearAutoswipe(),setTimeout(()=>{autoPaused=!1,startAutoswipe()},delay))}function waitForVideo(slide){return new Promise(resolve=>{const video=slide?.querySelector("video");if(!video||video.paused||video.ended)return resolve();const done=()=>{video.removeEventListener("ended",done),video.removeEventListener("pause",done),resolve()};video.addEventListener("ended",done,{once:!0}),video.addEventListener("pause",done,{once:!0})})}function tickProgress(){const elapsed=performance.now()-autoStartTs;setProgress(elapsed/(autoswipeSeconds*1e3)),autoRaf=requestAnimationFrame(tickProgress)}async function advanceSlide(){await waitForVideo(slides[index]),!autoPaused&&(scrollToIndex((index+1)%slides.length,"smooth"),startAutoswipe())}function startAutoswipe(){if(!autoswipeEnabled||!isSliderMode()||autoPaused||slides.length<2||document.hidden){clearAutoswipe(),root.classList.remove("is-autoswiping");return}clearAutoswipe(),root.classList.add("is-autoswiping"),autoStartTs=performance.now(),autoRaf=requestAnimationFrame(tickProgress),autoTimer=setTimeout(advanceSlide,autoswipeSeconds*1e3)}autoswipeEnabled&&(["pointerdown","touchstart","wheel","keydown"].forEach(evt=>{root.addEventListener(evt,()=>pauseAutoswipe(),{passive:!0})}),[btnPrev,btnNext].forEach(btn=>{btn&&btn.addEventListener("click",()=>pauseAutoswipe())}),bullets.forEach(b=>b.addEventListener("click",()=>pauseAutoswipe())),thumbs.forEach(t=>t.addEventListener("click",()=>pauseAutoswipe())),document.addEventListener("visibilitychange",()=>{document.hidden?clearAutoswipe():startAutoswipe()}),window.addEventListener("resize",()=>{clearTimeout(root._revAutoswipeResizeT),root._revAutoswipeResizeT=setTimeout(startAutoswipe,150)}
32)),autoswipeEnabled&&startAutoswipe(),thumbs.forEach(t=>{t.addEventListener("click",()=>scrollToIndex(Number(t.dataset.index),"smooth"))}),bullets.forEach(b=>{b.addEventListener("click",()=>scrollToIndex(Number(b.dataset.index),"smooth"))}),btnPrev&&btnPrev.addEventListener("click",()=>scrollToIndex(index-1,"smooth")),btnNext&&btnNext.addEventListener("click",()=>scrollToIndex(index+1,"smooth"));let raf=null;main.addEventListener("scroll",()=>{isProgrammaticScroll||raf||(raf=requestAnimationFrame(()=>{raf=null;const best=nearestIndexByScrollLeft(main,slides);setActive(best,{thumbBehavior:"smooth"})}))},{passive:!0});const scheduleReveal=()=>requestAnimationFrame(()=>applyThumbsHeightAndReveal(root));if(thumbsWrap&&isDesktop()&&(thumbsWrap.classList.remove("is-ready"),thumbsWrap.style.setProperty("--rev-thumbs-h","0px")),scheduleReveal(),window.setTimeout(scheduleReveal,30),window.setTimeout(scheduleReveal,120),window.setTimeout(scheduleReveal,250),root.querySelectorAll(".rev-gallery-main img").forEach(img=>{img.complete||(img.addEventListener("load",scheduleReveal,{once:!0}),img.addEventListener("error",scheduleReveal,{once:!0}))}),root.querySelectorAll(".rev-gallery-main video").forEach(v=>{v.readyState>=1||(v.addEventListener("loadedmetadata",scheduleReveal,{once:!0}),v.addEventListener("loadeddata",scheduleReveal,{once:!0}))}),"ResizeObserver"in window){const mainViewport=root.querySelector(".rev-gallery-main[data-rev-main]");mainViewport&&new ResizeObserver(()=>scheduleReveal()).observe(mainViewport)}else window.addEventListener("resize",scheduleReveal);setActive(0,{thumbBehavior:"auto"}),requestAnimationFrame(()=>{scrollToIndex(0,"auto"),scheduleReveal()})}function initAll(scope){(scope||document).querySelectorAll(".rev-product-gallery").forEach(init)}function destroy(root){root&&(root.dataset.revGalleryInit="0")}return{init,initAll,destroy}})(),(function(){function boot(scope){window.RevGallery?.initAll(scope||document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>boot(document)):boot(document),document.addEventListener("shopify:section:load",e=>boot(e.target))})(),document.addEventListener("rev:variant:change",async e=>{const variantId=e.detail?.variantId;variantId&&(await RevRerender.rerender({contextEl:document,targets:[".rev-product-gallery"],url:window.location.pathname,params:{variant:variantId},incomingScopeSelector:"main"}),window.RevGallery?.initAll(document))}),window.RevGalleryZoom=window.RevGalleryZoom||(()=>{const isDesktop=()=>window.matchMedia("(min-width: 769px)").matches;function syncPreviewAspectToImage(img,zoomPreview){if(!img||!zoomPreview)return;const imgRect=img.getBoundingClientRect();if(!imgRect.width||!imgRect.height)return;const aspect=imgRect.width/imgRect.height,previewRect=zoomPreview.getBoundingClientRect();if(!previewRect.width)return;const desiredHeight=Math.round(previewRect.width/aspect);zoomPreview.style.setProperty("--rev-zoom-preview-h",`${desiredHeight}px`)}function init(root){if(!root||!isDesktop())return;const galleryRoot=root.querySelector(".rev-product-gallery");if(!galleryRoot||galleryRoot.dataset.revZoomInit==="1")return;const mainViewport=root.querySelector(".rev-gallery-main[data-rev-main]"),track=root.querySelector("[data-rev-track-main]"),zoomPreview=root.querySelector(".rev-gallery-zoom-preview"),zoomOverlay=root.querySelector(".rev-gallery-zoom-overlay"),zoomBox=root.querySelector(".rev-gallery-zoom-box");if(!mainViewport||!track||!zoomPreview||!zoomOverlay||!zoomBox)return;galleryRoot.dataset.revZoomInit="1";const slides=Array.from(track.querySelectorAll(".rev-media[data-index]"));if(!slides.length)return;const carouselControls=root.querySelector(".rev-gallery-carousel-controls"),zoomButton=root.querySelector(".rev-gallery-button-zoom"),linesIndicator=root.querySelector(".rev-gallery-slide-indicator-lines"),DEADZONE_PX=40;function isNearControl(el,ev){if(!el||el.offsetParent===null)return!1;const r=el.getBoundingClientRect();return ev.clientX>=r.left-DEADZONE_PX&&ev.clientX<=r.right+DEADZONE_PX&&ev.clientY>
32=r.top-DEADZONE_PX&&ev.clientY<=r.bottom+DEADZONE_PX}function getVisibleImage(){let bestIndex=0,bestDist=1/0;for(let i=0;i<slides.length;i++){const dist=Math.abs(slides[i].offsetLeft-mainViewport.scrollLeft);dist<bestDist&&(bestDist=dist,bestIndex=i)}const visibleSlide=slides[bestIndex];if(!visibleSlide)return null;const img=visibleSlide.querySelector("img"),video=visibleSlide.querySelector("video");return img||video}function getImageUrl(img){return img&&(img.src||img.currentSrc)||null}mainViewport.addEventListener("mousemove",e=>{if(isNearControl(carouselControls,e)||isNearControl(zoomButton,e)||isNearControl(linesIndicator,e)){zoomPreview.style.display="none",zoomOverlay.style.display="none";return}const img=getVisibleImage();if(!img)return;const imgUrl=getImageUrl(img);if(!imgUrl)return;syncPreviewAspectToImage(img,zoomPreview);const imgRect=img.getBoundingClientRect();if(e.clientX<imgRect.left||e.clientX>imgRect.right||e.clientY<imgRect.top||e.clientY>imgRect.bottom){zoomPreview.style.display="none",zoomOverlay.style.display="none";return}const x=e.clientX-imgRect.left,y=e.clientY-imgRect.top,xPercent=x/imgRect.width*100,yPercent=y/imgRect.height*100,overlayLeft=Math.max(0,Math.min(60,xPercent-40/2)),overlayTop=Math.max(0,Math.min(60,yPercent-40/2));zoomPreview.style.display="block",zoomOverlay.style.display="block",zoomOverlay.style.left=overlayLeft+"%",zoomOverlay.style.top=overlayTop+"%",zoomOverlay.style.width="40%",zoomOverlay.style.height="40%";const magnification=100/40,bgX=overlayLeft/60*100,bgY=overlayTop/60*100;zoomBox.style.backgroundImage=`url('${imgUrl}')`,zoomBox.style.backgroundSize=`${magnification*100}% ${magnification*100}%`,zoomBox.style.backgroundPosition=`${bgX}% ${bgY}%`}),mainViewport.addEventListener("mouseleave",()=>{zoomPreview.style.display="none",zoomOverlay.style.display="none"})}function initAll(scope){(scope||document).querySelectorAll(".rev-product-gallery").forEach(gallery=>{const wrapper=gallery.closest(".rev-product-gallery-wrapper")||gallery.closest("[data-section-id]")||gallery.parentElement;wrapper&&init(wrapper)})}return{init,initAll}})(),(function(){function boot(scope){window.RevGalleryZoom?.initAll(scope||document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>boot(document)):boot(document),document.addEventListener("shopify:section:load",e=>boot(e.target))})(),(function(){function initScrollLock(){document.querySelectorAll(".rev-gallery-zoom-modal").forEach(modal=>{if(modal.dataset.scrollLockInit==="1")return;modal.dataset.scrollLockInit="1";let scrollY=0;modal.addEventListener("toggle",e=>{if(e.newState==="open"){scrollY=window.scrollY,document.body.style.position="fixed",document.body.style.top=`-${scrollY}px`,document.body.style.width="100%",document.body.style.overflow="hidden";const content2=modal.querySelector(".rev-gallery-zoom-content");content2&&(content2.style.overflowY="auto",content2.style.webkitOverflowScrolling="touch",content2.style.overscrollBehavior="contain")}else e.newState==="closed"&&(document.body.style.position="",document.body.style.top="",document.body.style.width="",document.body.style.overflow="",window.scrollTo(0,scrollY))});const content=modal.querySelector(".rev-gallery-zoom-content");if(content){let startY=0;content.addEventListener("touchstart",e=>{startY=e.touches[0].clientY},{passive:!0}),content.addEventListener("touchmove",e=>{const currentY=e.touches[0].clientY,isScrollingUp=currentY>startY,isScrollingDown=currentY<startY,isAtTop=content.scrollTop===0,isAtBottom=content.scrollHeight-content.scrollTop===content.clientHeight;(isAtTop&&isScrollingUp||isAtBottom&&isScrollingDown)&&e.preventDefault()},{passive:!1})}})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initScrollLock):initScrollLock(),document.addEventListener("shopify:section:load",initScrollLock)})(),window.RevMiniSlider=window.RevMiniSlider||(()=>{const instances=new WeakMap;function setActiveBullet(bullets,index){bullets.forEach((b,i)=>b.classList.toggle("active",i===index))}function clamp(n,min,max){return Math.max(min,Math.min(max,n))}function init(root){if(!root||instances.has(root))return;const track=root.querySelector("[data-rev-mini-slider-track]"),pagination=root.querySelector("[data-rev-mini-slider-pagination]");if(!track||!pagination)return;const slides=Array.from(track.children).filter(el=>el.classList.contains("rev-mini-slide")),bullets=Array.from(pagination.querySelectorAll("[data-rev-mini-slider-bullet]")),total=slides.length,inst={stop:()=>{},start:()=>{},goTo:()=>{}};if(instances.set(root,inst),total<=1){bullets.length&&setActiveBullet(bullets,0);return}const speedSecRaw=track.dataset.revMiniSliderSpeed,speedSec=clamp(Number(speedSecRaw)||2.5,.5,60),intervalMs=Math.round(speedSec*1e3);let index=0,timer=null;function goTo(i,{behavior="smooth"}={}){index=(i+total)%total,track.scrollTo({left:track.clientWidth*index,behavior}),bullets.length&&setActiveBullet(bullets,index)}function stop(){timer&&window.clearInterval(timer),timer=null}function start(){stop(),timer=window.setInterval(()=>goTo(index+1,{behavior:"smooth"}),intervalMs)}root.addEventListener("mouseenter",stop),root.addEventListener("mouseleave",start),bullets.forEac
32h((b,i)=>{b.addEventListener("click",()=>{goTo(i,{behavior:"smooth"}),start()})});let raf=null;track.addEventListener("scroll",()=>{raf||(raf=requestAnimationFrame(()=>{raf=null;const w=track.clientWidth||1,next=clamp(Math.round(track.scrollLeft/w),0,total-1);next!==index&&(index=next,bullets.length&&setActiveBullet(bullets,index))}))},{passive:!0}),inst.stop=stop,inst.start=start,inst.goTo=goTo,bullets.length&&setActiveBullet(bullets,0),goTo(0,{behavior:"auto"}),start()}function initAll(scope){(scope||document).querySelectorAll("[data-rev-mini-slider]").forEach(init)}function destroy(root){const inst=instances.get(root);if(inst){try{inst.stop?.()}catch{}instances.delete(root)}}return{init,initAll,destroy}})(),(function(){function boot(scope){window.RevMiniSlider?.initAll(scope||document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>boot(document)):boot(document),document.addEventListener("shopify:section:load",e=>boot(e.target))})(),(function(){if(window.__REV_POPULARITY__)return;window.__REV_POPULARITY__=!0;const inited=new Set;function clampInt(n,fallback){const x=parseInt(n,10);return Number.isFinite(x)?x:fallback}function randInt(min,max){const a=Math.min(min,max),b=Math.max(min,max);return Math.floor(Math.random()*(b-a+1))+a}function initOne(el){if(!el)return;const id=el.getAttribute("data-rev-pop-id")||"";if(id&&inited.has(id))return;id&&inited.add(id);const min=clampInt(el.dataset.revPopMin,20),max=clampInt(el.dataset.revPopMax,50),numEl=el.querySelector("[data-rev-pop-number]");numEl&&(numEl.textContent=randInt(min,max))}function initAll(scope){(scope||document).querySelectorAll("[data-rev-pop]").forEach(initOne)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>initAll(document)):initAll(document),document.addEventListener("shopify:section:load",e=>initAll(e.target))})(),window.RevTimer=window.RevTimer||(()=>{const instances=new WeakMap,pad2=n=>String(n).padStart(2,"0");function getVisitorTimeZone(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}catch{return"UTC"}}function getZonedParts(date,timeZone){const parts=new Intl.DateTimeFormat("en-US",{timeZone,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(date),out={};for(const p of parts)p.type==="year"&&(out.year=Number(p.value)),p.type==="month"&&(out.month=Number(p.value)),p.type==="day"&&(out.day=Number(p.value)),p.type==="hour"&&(out.hour=Number(p.value)),p.type==="minute"&&(out.minute=Number(p.value)),p.type==="second"&&(out.second=Number(p.value));return out}function zonedWallTimeToUtcMs({year,month,day,hour,minute,second},timeZone){let guess=Date.UTC(year,month-1,day,hour,minute,second);const p1=getZonedParts(new Date(guess),timeZone),offset1=Date.UTC(p1.year,p1.month-1,p1.day,p1.hour,p1.minute,p1.second)-guess;let corrected=Date.UTC(year,month-1,day,hour,minute,second)-offset1;const p2=getZonedParts(new Date(corrected),timeZone),offset2=Date.UTC(p2.year,p2.month-1,p2.day,p2.hour,p2.minute,p2.second)-corrected;return corrected=Date.UTC(year,month-1,day,hour,minute,second)-offset2,corrected}function parseDateTimeFields(el){const d=(el.getAttribute("data-rev-timer-end-date")||"").trim(),t=(el.getAttribute("data-rev-timer-end-time")||"").trim();if(!d||!t)return null;const mD=d.match(/^(\d{4})-(\d{2})-(\d{2})$/),mT=t.match(/^(\d{2}):(\d{2})(?::(\d{2}))?$/);return!mD||!mT?null:{year:Number(mD[1]),month:Number(mD[2]),day:Number(mD[3]),hour:Number(mT[1]),minute:Number(mT[2]),second:Number(mT[3]||"0")}}function boolAttr(el,name,fallback=!1){const v=el.getAttribute(name);return v==null?fallback:v===""||v==="true"||v==="1"}function parseCsvSet(el,name){const raw=(el.getAttribute(name)||"").trim().toLowerCase();return raw?new Set(raw.split(",").map(s=>s.trim()).filter(Boolean)):new Set}function parseEndMs(el){const fields=parseDateTimeFields(el);if(fields){let tz=(el.getAttribute("data-rev-timer-tz")||"").trim();tz||(tz="UTC"),tz==="visitor"&&(tz=getVisitorTimeZone());try{return zonedWallTimeToUtcMs(fields,tz)}catch{}}const raw=(el.getAttribute("data-rev-timer-end")||"").trim();if(!raw)return null;if(/^\d{10,}$/.test(raw))return Number(raw);const t=Date.parse(raw);return Number.isFinite(t)?t:null}function getEvergreenEndMs(el){const durSec=parseInt(el.getAttribute("data-rev-timer-duration")||"",10);if(!durSec)return null;
32const key=(el.getAttribute("data-rev-timer-key")||"").trim()||el.id||null;if(!key)return Date.now()+durSec*1e3;const storageKey=`revTimer_${key}`;let end=parseInt(localStorage.getItem(storageKey)||"",10);if(!end||end<Date.now()){end=Date.now()+durSec*1e3;try{localStorage.setItem(storageKey,String(end))}catch{}}return end}function split(msLeft){const total=Math.max(0,Math.floor(msLeft/1e3)),days=Math.floor(total/86400),hours=Math.floor(total%86400/3600),mins=Math.floor(total%3600/60),secs=total%60;return{total,days,hours,mins,secs}}function formatMmss(parts,pad){const minutesTotal=Math.floor(parts.total/60),mm=pad?pad2(minutesTotal):String(minutesTotal),ss=pad?pad2(parts.secs):String(parts.secs);return`${mm}:${ss}`}function formatDhms(parts,pad,cfg){const hardHide=cfg.hideSet,hideZero=cfg.hideZeroSet,collapse=cfg.collapse,unitVals={days:parts.days,hours:parts.hours,mins:parts.mins,secs:parts.secs};function shouldHide(unit){if(hardHide.has(unit)||hideZero.has(unit)&&unitVals[unit]===0)return!0;if(collapse){if(unit==="days")return unitVals.days===0;if(unit==="hours")return unitVals.days===0&&unitVals.hours===0;if(unit==="mins")return unitVals.days===0&&unitVals.hours===0&&unitVals.mins===0}return!1}const d=shouldHide("days")?null:`${unitVals.days}d`,h=shouldHide("hours")?null:`${pad?pad2(unitVals.hours):unitVals.hours}h`,m=shouldHide("mins")?null:`${pad?pad2(unitVals.mins):unitVals.mins}m`,s=shouldHide("secs")?null:`${pad?pad2(unitVals.secs):unitVals.secs}s`,partsOut=[d,h,m,s].filter(Boolean);if(partsOut.length)return partsOut.join(" ");const mm=pad?pad2(Math.floor(parts.total/60)):String(Math.floor(parts.total/60)),ss=pad?pad2(parts.secs):String(parts.secs);return`${mm}:${ss}`}function applySplitVisibility(root,parts,cfg,formatMode){const wrap=unit=>root.querySelector(`[data-rev-timer-unit="${unit}"]`),wDays=wrap("days"),wHours=wrap("hours"),wMins=wrap("mins"),wSecs=wrap("secs"),hardHide=cfg.hideSet,hideZero=cfg.hideZeroSet,collapse=cfg.collapse,val={days:parts.days,hours:parts.hours,mins:parts.mins,secs:parts.secs};function shouldHide(unit){if(hardHide.has(unit)||hideZero.has(unit)&&val[unit]===0)return!0;if(collapse){if(unit==="days")return val.days===0;if(unit==="hours")return val.days===0&&val.hours===0;if(unit==="mins")return val.days===0&&val.hours===0&&val.mins===0}return formatMode==="mmss"&&(unit==="days"||unit==="hours")}wDays&&(wDays.style.display=shouldHide("days")?"none":""),wHours&&(wHours.style.display=shouldHide("hours")?"none":""),wMins&&(wMins.style.display=shouldHide("mins")?"none":""),wSecs&&(wSecs.style.display=shouldHide("secs")?"none":"")}function initOne(el){if(!el||el.nodeType!==1||instances.has(el))return;if(boolAttr(el,"data-rev-timer-sync",!1)){const primaryTimer=Array.from(document.querySelectorAll("[data-rev-timer]")).find(timer=>timer!==el&&!boolAttr(timer,"data-rev-timer-sync",!1));if(primaryTimer&&instances.has(primaryTimer)){const primaryData=instances.get(primaryTimer);["data-rev-timer-end-date","data-rev-timer-end-time","data-rev-timer-tz","data-rev-timer-duration","data-rev-timer-key","data-rev-timer-format","data-rev-timer-pad","data-rev-timer-collapse","data-rev-timer-hide","data-rev-timer-hide-zero"].forEach(attr=>{const val=primaryTimer.getAttribute(attr);val!==null&&el.setAttribute(attr,val)}),primaryData.endMs&&(el._syncedEndMs=primaryData.endMs)}}const out=el.querySelector("[data-rev-timer-out]"),ddEl=el.querySelector("[data-rev-timer-dd]"),hhEl=el.querySelector("[data-rev-timer-hh]"),mmEl=el.querySelector("[data-rev-timer-mm]"),ssEl=el.querySelector("[data-rev-timer-ss]"),hasSplit=!!(ddEl||hhEl||mmEl||ssEl),formatMode=(el.getAttribute("data-rev-timer-format")||"auto").trim().toLowerCase(),pad=boolAttr(el,"data-rev-timer-pad",!0),cfg={collapse:boolAttr(el,"data-rev-timer-collapse",!1),hideSet:parseCsvSet(el,"data-rev-timer-hide"),hideZeroSet:parseCsvSet(el,"data-rev-timer-hide-zero"),expiredText:(el.getAttribute("data-rev-timer-expired-text")||"Expired").trim(),hideExpired:boolAttr(el,"data-rev-timer-hide-expired",!1)};let endMs=el._syncedEndMs||parseEndMs(el);if(endMs||(endMs=getEvergreenEndMs(el)),!endMs)return;let lastSec=null;function stop(){clearInterval(id)}function render(parts){if(hasSplit){if(formatMode==="mmss"){const minutesTotal=Math.floor(parts.total/60);mmEl&&(mmEl.textContent=pad?pad2(minutesTotal):String(minutesTotal)),ssEl&&(ssEl.textContent=pad?pad2(parts.secs):String(parts.secs)),ddEl&&(d
32dEl.textContent=String(parts.days)),hhEl&&(hhEl.textContent=pad?pad2(parts.hours):String(parts.hours)),applySplitVisibility(el,parts,cfg,"mmss");return}ddEl&&(ddEl.textContent=String(parts.days)),hhEl&&(hhEl.textContent=pad?pad2(parts.hours):String(parts.hours)),mmEl&&(mmEl.textContent=pad?pad2(parts.mins):String(parts.mins)),ssEl&&(ssEl.textContent=pad?pad2(parts.secs):String(parts.secs)),applySplitVisibility(el,parts,cfg,formatMode);return}out&&(formatMode==="mmss"?out.textContent=formatMmss(parts,pad):out.textContent=formatDhms(parts,pad,cfg))}function tick(){if(!document.contains(el))return stop();const msLeft=endMs-Date.now();if(msLeft<=0)return cfg.hideExpired?el.style.display="none":out&&(out.textContent=cfg.expiredText),el.dispatchEvent(new CustomEvent("rev:timer:expired",{bubbles:!0})),stop();const parts=split(msLeft),sec=parts.total;sec!==lastSec&&(lastSec=sec,render(parts))}const id=setInterval(tick,250);instances.set(el,{stop,endMs}),tick()}function initAll(scope){(scope||document).querySelectorAll("[data-rev-timer]").forEach(initOne)}function boot(){initAll(document),document.addEventListener("shopify:section:load",e=>initAll(e.target));const mo=new MutationObserver(muts=>{for(const m of muts)for(const n of m.addedNodes||[])n.nodeType===1&&(n.matches?.("[data-rev-timer]")&&initOne(n),n.querySelectorAll?.("[data-rev-timer]").forEach(initOne))});mo.observe(document.body,{childList:!0,subtree:!0}),window.__REV_TIMER_OBSERVER__=mo}return document.readyState==="loading"?document.addEventListener("DOMContentLoaded",boot):boot(),{initAll}})();const RevCardSlider={init(){document.querySelectorAll("[data-rev-card-slider-container]:not([data-rev-card-slider-init])").forEach(container=>{this.setupSlider(container),container.setAttribute("data-rev-card-slider-init","true")})},setupSlider(container){const wrap=container.querySelector("[data-rev-card-slider]"),track=container.querySelector("[data-rev-card-slider-track]"),prevBtn=container.querySelector(".rev-card-slider-prev"),nextBtn=container.querySelector(".rev-card-slider-next"),arrowsContainer=container.querySelector(".rev-card-slider-arrows"),indicatorContainer=container.querySelector("[data-rev-card-slider-indicator]"),items=track.querySelectorAll(".rev-card-slider__item");if(!items.length)return;let currentIndex=0,isScrolling=!1;const totalItems=items.length,indicatorStyle=container.getAttribute("data-rev-indicator-style")||"dots",showDesktop=container.getAttribute("data-rev-show-indicator")==="true",showMobile=container.getAttribute("data-rev-show-indicator-mob")==="true",isMobile=()=>window.innerWidth<=768,getSliderType=()=>indicatorStyle==="lines"?"progress_bar":indicatorStyle,shouldShow=()=>isMobile()?showMobile:showDesktop,allItemsVisible=()=>wrap.scrollWidth<=wrap.clientWidth+1,buildIndicator=()=>{if(!indicatorContainer)return;if(indicatorContainer.innerHTML="",indicatorContainer.className="rev-card-slider-indicator",!shouldShow()||allItemsVisible()){indicatorContainer.style.display="none";return}const type=getSliderType();indicatorContainer.style.display="",indicatorContainer.classList.add("rev-card-slider-indicator-"+type);const visibleCount=this.getVisibleCount(track,items),pageCount=Math.ceil(totalItems/visibleCount);if(type==="dots"||type==="squares")for(let i=0;i<pageCount;i++){const bullet=document.createElement("button");bullet.type="button",bullet.className="rev-card-slider-bullet"+(i===0?" rev-card-slider-bullet-active":""),bullet.dataset.index=i,bullet.setAttribute("aria-label",`Go to page ${i+1}`),bullet.addEventListener("click",()=>scrollToPage(i)),indicatorContainer.appendChild(bullet)}else if(type==="counter")indicatorContainer.textContent=`1 / ${pageCount}`;else if(type==="progress_bar"){const fill=document.createElement("div");fill.className="rev-card-slider-progress-fill",fill.style.width=pageCount>1?`${1/pageCount*100}%`:"100%",indicatorContainer.appendChild(fill)}},getPageIndex=()=>{const visibleCount=this.getVisibleCount(track,items),maxIndex=totalItems-visibleCount;return currentIndex>=maxIndex?Math.ceil(totalItems/visibleCount)-1:Math.floor(currentIndex/visibleCount)},updateIndicator=()=>{if(!indicatorContainer||!shouldShow())return;const type=getSliderType(),visibleCount=this.getVisibleCount(track,items),pageCount=Math.ceil(totalItems/visibleCount),pageIndex=getPageIndex();if(type==="dots"||type==="squares")indicatorContainer.querySelectorAll(".rev-card-slider-bullet").forEach((bullet,index)=>{bullet.classList.toggle("rev-card-slider-bullet-active",index===pageIndex)});else if(type==="counter")indicatorContainer.textContent=`${pageIndex+1} / ${pageCount}`;else if(type==="progress_bar"){const fill=indicatorContainer.querySelector(".rev-card-slider-progress-fill");fill&&(fill.style.width=pageCount>1?`${(pageIndex+1)/pageCount*100}%`:"100%")}},updateButtons=()=>{const visibleCount=this.getVisibleCount(track,items),noScroll=allItemsVisible();arrowsContainer&&(arrowsContainer.style.display=noScroll?"none":""),prevBtn&&(prevBtn.disabled=currentIndex===0),nextBtn&&(nextBtn.disabled=currentIndex>=totalItems-visibleCount)},scrollToIndex=index=>{const item=items[index];item&&(isScrolling=!0,wrap.scrollTo({left:item.offsetLeft,behavior:"smooth"}),currentIndex=index,updateButtons(),updateIndicator(),setTimeout(()=>{isScrolling=!1},350))},scrollToPage=pageIndex=>{const visibleCount=this.getVisibleCount(track,items),targetIndex=Math.min(pageIndex*visibleCount,totalItems-visibleCount);scrollToIndex(Math.max(0,targetIndex))};prevBtn&&prevBtn.addEventListener("click",()=>{const visibleCount=this.getVisibleCount(track,items),currentPage=currentIndex>=totalItems-visibleCount?Math.ceil(totalItems/visibleCount)-1:Math.floor(currentIndex/visibleCount),targetIndex=Math.max(0,currentPage-1)*visibleCount;scrollToIndex(targetIndex)}),nextBtn&&nextBtn.addEventListener("click",()=>{const visibleCount=this.getVisibleCount(track,items),targetPage=(currentIndex>=totalItems-visibleCount?Math.ceil(totalItems/visibleCount)-1:Math.floor(currentIndex/visibleCount))+1,maxStartIndex=totalItems-visibleCount,targetIndex=Math.min(targetPage*visibleCount,maxStartIndex);scrollToIndex(targetIndex)}),wrap.addEventListener("scroll",()=>{if(isScrolling)return;const scrollLeft=wrap.scrollLeft,itemWidth=items[0].offsetWidth+parseInt(getComputedStyle(track).gap||0),newIndex=Math.round(scrollLeft/itemWidth);newIndex!==currentIndex&&(currentIndex=newIndex,updateButtons(),updateIndicator())});let resizeTimeout,lastWasMobile=isMobile();window.addEventListener("resize",()=>{clearTimeout(resizeTimeout),resizeTimeout=setTimeout(()=>{lastWasMobile=isMobile(),buildIndicator(),updateButtons()},150)}),buildIndicator(),updateButtons()},getVisibleCount(track,items){if(!items||!items.length)return 1;const trackWidth=track.offsetWidth,itemWidth=items[0].offsetWidth,gap=parseInt(getComputedStyle(track).gap||0);return Math.max(1,Math.floor((trackWidth+gap)/(itemWidth+gap)))}};document.addEventListener("DOMContentLoaded",()=>RevCardSlider.init()),(function(){if(window.__REV_PRODUCT_FORM_SYNC__)return;window.__REV_PRODUCT_FORM_SYNC__=!0;const inited=new WeakSet;function initProductFormSync(el){if(!el||el.nodeType!==1||inited.has(el))return;inited.add(el);const form=el.querySelector("form.rev-product-form");if(!form)return;const variantSelector=el.querySelector(".rev-variant-selector"),variantHiddenInput=form.querySelector("[data-rev-variant-id]");variantSelector&&variantHiddenInput&&variantSelector.addEventListener("change",function(){const cfgScript=variantSelector.querySelector(".rev-cfg");if(!cfgScript)return;let cfg;
32try{cfg=JSON.parse(cfgScript.textContent.trim())}catch{return}const selected=[];variantSelector.querySelectorAll(".rev-option").forEach(function(optionDiv,idx){const checked=optionDiv.querySelector('input[type="radio"]:checked'),selectEl=optionDiv.querySelector("select");checked?selected[idx]=checked.value:selectEl&&(selected[idx]=selectEl.value)});const variant=cfg.variants.find(function(v){return(v.option1===selected[0]||!selected[0])&&(v.option2===selected[1]||!selected[1])&&(v.option3===selected[2]||!selected[2])});variant&&variant.id&&(variantHiddenInput.value=variant.id)});const qtySelector=el.querySelector(".rev-qty-selector"),qtyHiddenInput=form.querySelector("[data-rev-quantity]");if(qtySelector&&qtyHiddenInput){const qtyInput=qtySelector.querySelector('input[type="number"]');qtyInput&&(qtyHiddenInput.value=qtyInput.value||1,qtyInput.addEventListener("change",function(){qtyHiddenInput.value=qtyInput.value||1}),qtyInput.addEventListener("input",function(){qtyHiddenInput.value=qtyInput.value||1}))}}function initAll(scope){(scope||document).querySelectorAll("[data-product-form-sync]").forEach(initProductFormSync)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>initAll(document)):initAll(document),document.addEventListener("shopify:section:load",e=>initAll(e.target))})(),window.RevVideoCarousel=window.RevVideoCarousel||(()=>{function init(root){if(!root||root.dataset.revVideoCarouselInit==="1")return;const track=root.querySelector("[data-rev-video-carousel-track]"),originalSlides=Array.from(root.querySelectorAll(".rev-video-review-carousel__slide")),prevBtn=root.querySelector("[data-rev-video-carousel-prev]"),nextBtn=root.querySelector("[data-rev-video-carousel-next]");if(!track||originalSlides.length===0)return;root.dataset.revVideoCarouselInit="1";let slides=[...originalSlides],currentIndex=0,isAnimating=!1;const slideCount=originalSlides.length;if(slideCount>=1){const clonesNeeded=Math.max(3,Math.ceil(5/slideCount));for(let c=0;c<clonesNeeded;c++)[...originalSlides].reverse().forEach((slide,i)=>{const clone=slide.cloneNode(!0);clone.classList.add("is-clone"),clone.classList.remove("is-active"),clone.setAttribute("data-clone","prepend"),clone.setAttribute("data-original-index",slideCount-1-i),track.insertBefore(clone,track.firstChild)});for(let c=0;c<clonesNeeded;c++)originalSlides.forEach((slide,i)=>{const clone=slide.cloneNode(!0);clone.classList.add("is-clone"),clone.classList.remove("is-active"),clone.setAttribute("data-clone","append"),clone.setAttribute("data-original-index",i),track.appendChild(clone)});slides=Array.from(track.querySelectorAll(".rev-video-review-carousel__slide")),slides.forEach(sli
32de=>{if(slide.classList.contains("is-clone")){const video=slide.querySelector("video");video&&video.load()}}),currentIndex=clonesNeeded*slideCount}function getSlideWidth(){const slide=slides[0];if(!slide)return 280;const style=getComputedStyle(slide),width=slide.offsetWidth,marginLeft=parseInt(style.marginLeft)||0,marginRight=parseInt(style.marginRight)||0;return width+marginLeft+marginRight}function positionTrack(animate=!0){const slideWidth=getSlideWidth(),centerOffset=root.offsetWidth/2-slideWidth/2,targetX=-(currentIndex*slideWidth)+centerOffset;track.style.transition=animate?"transform 0.5s cubic-bezier(0.25, 0.1, 0.25, 1)":"none",track.style.transform=`translateX(${targetX}px)`}function updateSlideClasses(){slides.forEach((slide,i)=>{slide.classList.remove("is-active"),i===currentIndex&&slide.classList.add("is-active")})}function handleVideoPlayback(){slides.forEach((slide,i)=>{const video=slide.querySelector("video");video&&(i===currentIndex?(video.currentTime=0,video.muted=!0,slide.setAttribute("data-muted","true"),video.play().catch(()=>{})):video.pause())})}function setupVideoEndListeners(){slides.forEach((slide,i)=>{const video=slide.querySelector("video");video&&video.addEventListener("ended",()=>{i===currentIndex&&next()})})}function goTo(index,animate=!0){isAnimating||(currentIndex=index,updateSlideClasses(),positionTrack(animate),handleVideoPlayback(),animate&&(isAnimating=!0,setTimeout(()=>{isAnimating=!1;const clonesPerSide=(slides.length-slideCount)/2;currentIndex>=slides.length-clonesPerSide?(currentIndex=clonesPerSide+(currentIndex-clonesPerSide)%slideCount,positionTrack(!1),updateSlideClasses()):currentIndex<clonesPerSide&&(currentIndex=slides.length-clonesPerSide-(clonesPerSide-currentIndex),positionTrack(!1),updateSlideClasses())},520)))}function next(){goTo(currentIndex+1)}function prev(){goTo(currentIndex-1)}
32function setupVolumeToggles(){slides.forEach(slide=>{const volumeBtn=slide.querySelector("[data-rev-volume-toggle]"),video=slide.querySelector("video");!volumeBtn||!video||(slide.setAttribute("data-muted","true"),volumeBtn.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const isMuted=video.muted;video.muted=!isMuted,slide.setAttribute("data-muted",isMuted?"false":"true")}))})}prevBtn&&prevBtn.addEventListener("click",prev),nextBtn&&nextBtn.addEventListener("click",next);let touchStartX=0,touchEndX=0;track.addEventListener("touchstart",e=>{touchStartX=e.changedTouches[0].screenX},{passive:!0}),track.addEventListener("touchend",e=>{touchEndX=e.changedTouches[0].screenX;const diff=touchStartX-touchEndX;Math.abs(diff)>50&&(diff>0?next():prev())},{passive:!0}),slides.forEach((slide,i)=>{slide.addEventListener("click",()=>{i!==currentIndex&&!slide.classList.contains("is-active")&&goTo(i)})}),document.addEventListener("visibilitychange",()=>{document.hidden?slides.forEach(slide=>{const video=slide.querySelector("video");video&&video.pause()}):handleVideoPlayback()});let resizeTimer;window.addEventListener("resize",()=>{clearTimeout(resizeTimer),resizeTimer=setTimeout(()=>{positionTrack(!1)},100)}),setupVolumeToggles(),setupVideoEndListeners(),updateSlideClasses(),requestAnimationFrame(()=>{positionTrack(!1),setTimeout(handleVideoPlayback,100)})}function initAll(scope){(scope||document).querySelectorAll("[data-rev-video-carousel]").forEach(init)}return document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>initAll(document)):initAll(document),document.addEventListener("shopify:section:load",e=>initAll(e.target)),{init,initAll}})();const RevBundleBuilder=(function(){"use strict";let state={section:null,itemsRequired:3,discountType:"percent",discountValue:0,items:new Map,skippedItems:new Set,confirmEnabled:!1,confirmPending:!1},els={};function decodeHtml(str){const txt=document.createElement("textarea");return txt.innerHTML=str,txt.value}function init(sectionEl){sectionEl&&(state.section=sectionEl,state.itemsRequired=parseInt(sectionEl.dataset.itemsRequired)||3,state.discountType=sectionEl.dataset.discountType||"percent",state.discountValue=parseFloat(sectionEl.dataset.discountValue)||0,state.confirmEnabled=sectionEl.dataset.confirmModal==="true",cacheElements(),bindEvents(),updateUI(),initAutoSelectItems())}function initAutoSelectItems(){state.section.querySelectorAll('[data-auto-select="true"]').forEach(selectingState=>{const item=selectingState.closest("[data-bundle-item]");if(!item)return;const activeWrap=item.querySelector('.rev-bundle-builder__variant-wrap:not([style*="display: none"])');if(activeWrap){typeof initVariantSelectorState2=="function"&&initVariantSelectorState2(activeWrap);const selector=activeWrap.querySelector(".rev-variant-selector");selector&&trackVariantChange(item,selector)}})}function cacheElements(){els={progressBar:state.section.querySelector("[data-progress-fill]"),progressCount:state.section.querySelector("[data-progress-count]"),progressHint:state.section.querySelector("[data-progress-hint]"),bundleItems:state.section.querySelectorAll("[data-bundle-item]"),originalPrice:state.section.querySelector("[data-original-price]"),bundlePrice:state.section.querySelector("[data-bundle-price]"),savingsBadge:state.section.querySelector("[data-savings-badge]"),statusCount:state.section.querySelector("[data-status-count]"),statusHint:state.section.querySelector("[data-status-hint]"),addButton:state.section.querySelector("[data-add-bundle]"),confirmModal:state.section.querySelector("[data-confirm-modal-el]"),confirmItems:state.section.querySelector("[data-confirm-items]"),confirmSubtotal:state.section.querySelector("[data-confirm-subtotal]"),confirmDiscount:state.section.querySelector("[data-confirm-discount]"),confirmDiscountLabel:state.section.querySelector("[data-confirm-discount-label]"),confirmTotal:state.section.querySelector("[data-confirm-total]"),confirmAdd:state.section.querySelector("[data-confirm-add]")}}function bindEvents(){els.bundleItems.forEach(item=>{const selectBtn=item.querySelector("[data-select-trigger]"),confirmBtn=item.querySelector("[data-confirm-trigger]"),editBtn=item.querySelector("[data-edit-trigger]"),swapBtn=item.querySelector("[data-swap-trigger]");selectBtn&&selectBtn.addEventListener("click",()=>showSelectingState(item)),confirmBtn&&confirmBtn.addEventListener("click",()=>confirmSelection(item)),editBtn&&editBtn.addEventListener("click",()=>showSelectingState(item)),swapBtn&&swapBtn.addEventListener("click",()=>{item.dataset.updating="true",item.dataset.selected="false";const status=item.querySelector("[data-item-status]");status&&(status.textContent="UPDATING"),showItemState(item,"initial")}),item.addEventListener("change",e=>{const selector=e.target.closest(".rev-variant-selector");selector&&trackVariantChange(item,selector)}),item.querySelectorAll("[data-choice-index]").forEach(choice=>{choice.addEventListener("click",()=>handleChoiceClick(item,parseInt(choice.dataset.choiceIndex)))});const backBtn=item.querySelector("[data-back-trigger]");backBtn&&backBtn.addEventListener("click",()=>showItemState(item,"initial"));const skipBtn=item.querySelector("[data-skip-trigger]");skipBtn&&skipBtn.addEventListener("click",()=>skipItem(item));const unskipBtn=item.querySelector("[data-unskip-trigger]");unskipBtn&&unskipBtn.addEventListener("click",()=>unskipItem(item))}),els.addButton&&els.addButton.addEventListener("click",addBundleToCart),state.section.querySelectorAll("[data-confirm-close]").forEach(el=>{el.addEventListener("click",closeConfirmModal)}),els.confirmAdd&&els.confirmAdd.addEventListener("click",executeAddToCart)}function showSelectingState(item){item.querySelectorAll("[data-state]").forEach(s=>s.style.display="none");const selectingState=item.querySelector('[data-state="selecting"]');selectingState&&(selectingState.style.display="flex");const status=item.querySelector("[data-item-status]");status&&(status.textContent="IN PROGRESS");const editBtn=item.querySelector("[data-edit-trigger]"),swapBtn=item.querySelector("[data-swap-trigger]");editBtn&&(editBtn.style.display="none"),swapBtn&&(swapBtn.style.display="none");const backBtn=item.querySelector("[data-back-trigger]"),cfg=getItemConfig(item);backBtn&&(backBtn.style.display=cfg&&cfg.hasAlternatives?"flex":"none");const activeWrap=item.querySelector('.rev-bundle-builder__variant-wrap:not([style*="display: none"])');if(activeWrap){typeof initVariantSelectorState2=="function"&&initVariantSelectorState2(activeWrap);const selector=activeWrap.querySelector(".rev-variant-selector");selector&&trackVariantChange(item,selector)}}function trackVariantChange(item,selector){const cfgScript=selector.querySelector(".rev-cfg");if(!cfgScript)return;let config;
32try{config=JSON.parse(cfgScript.textContent.trim())}catch{return}const selected=[];selector.querySelectorAll("[data-option-position]").forEach(el=>{const pos=parseInt(el.dataset.optionPosition,10)-1;el.type==="radio"&&el.checked&&(selected[pos]=el.value),el.tagName==="SELECT"&&(selected[pos]=el.value)});const variant=config.variants.find(v=>selected.every((val,idx)=>val==null||v[`option${idx+1}`]===val));if(item._bundleVariant=variant||null,item._bundleSelectedOptions=selected.filter(Boolean),variant&&variant.feat_media_url){const bundleCfgScript=(item.closest("[data-bundle-item]")||item).querySelector(".rev-bundle-item-cfg");let bundleItemCfg=null;if(bundleCfgScript)try{bundleItemCfg=JSON.parse(bundleCfgScript.textContent.trim())}catch{}const overlayEnabled=!!bundleItemCfg?.customInput?.overlayEnabled,overlayMedia=bundleItemCfg?.customInput?.overlayMedia;if(!(overlayEnabled&&overlayMedia)){const itemImg=item.querySelector('[id^="bundle-item-img-"]');if(itemImg){const makeSrc=(url,w)=>url.replace(/width=\d+/,`width=${w}`);itemImg.srcset=`${makeSrc(variant.feat_media_url,200)} 200w, ${makeSrc(variant.feat_media_url,400)} 400w`,itemImg.src=makeSrc(variant.feat_media_url,400)}}}}function confirmSelection(item){const itemIndex=item.dataset.bundleItem,cfg=getItemConfig(item);if(!cfg)return;const variant=item._bundleVariant,selectedOptions=item._bundleSelectedOptions||[];if(!variant){alert("Please select all options before confirming.");return}const customInputEl=item.querySelector("[data-custom-input]");let customInputValue="",customInputPropertyName="";if(cfg.customInput&&cfg.customInput.enabled&&(customInputValue=customInputEl?customInputEl.value.trim():"",customInputPropertyName=cfg.customInput.propertyName||"Personalization",cfg.customInput.required&&!customInputValue)){alert("Please fill in the required field before confirming."),customInputEl&&customInputEl.focus();return}const bundleVariant=cfg.variants.find(v=>v.id===variant.id),price=bundleVariant?bundleVariant.price:0,priceFormatted=bundleVariant?bundleVariant.priceFormatted:"$0.00",confirmedImage=cfg.customInput&&cfg.customInput.overlayEnabled&&cfg.customInput.overlayMedia?cfg.customInput.overlayMedia:variant.feat_media_url||cfg.productImage;state.items.set(itemIndex,{productId:cfg.productId,variantId:variant.id,price,priceFormatted,title:cfg.productTitle,options:selectedOptions,image:confirmedImage,customInput:customInputValue,customInputPropertyName}),item.querySelectorAll("[data-custom-overlay-text]").forEach(function(el){el.textContent=customInputValue||""}),item.dataset.bundleSelected="true",item.dataset.bundleVariantId=String(variant.id),item.dataset.bundleProductId=String(cfg.productId||""),item.dataset.bundleTitle=String(decodeHtml(cfg.productTitle||"")),item.dataset.bundlePriceFormatted=String(priceFormatted||""),customInputValue&&customInputPropertyName?(item.dataset.bundleCustomInput=String(customInputValue),item.dataset.bundleCustomInputPropertyName=String(customInputPropertyName)):(delete item.dataset.bundleCustomInput,delete item.dataset.bundleCustomInputPropertyName),item.dataset.selected="true",item.dataset.updating="false",item.querySelectorAll("[data-state]").forEach(s=>s.style.display="none");const confirmedState=item.querySelector('[data-state="confirmed"]');confirmedState&&(confirmedState.style.display="flex");const confirmedTitle=item.querySelector("[data-confirmed-title]"),confirmedOptions=item.querySelector("[data-confirmed-options]"),confirmedPrice=item.querySelector("[data-confirmed-price]"),confirmedImg=item.querySelector('[id^="bundle-confirmed-img-"]');if(confirmedTitle&&(confirmedTitle.textContent=decodeHtml(cfg.productTitle)),confirmedOptions){let detailParts=[selectedOptions.join(" / ")];customInputValue&&detailParts.push(customInputValue),confirmedOptions.textContent=detailParts.join(" \xB7 ")}confirmedPrice&&(confirmedPrice.textContent=priceFormatted),confirmedImg&&(confirmedImg.src=confirmedImage,confirmedImg.srcset="");const status=item.querySelector("[data-item-status]");status&&(status.textContent="CONFIRMED");const editBtn=item.querySelector("[data-edit-trigger]"),swapBtn=item.querySelector("[data-swap-trigger]");editBtn&&(editBtn.style.display="inline-flex"),swapBtn&&cfg.hasAlternatives&&(swapBtn.style.display="inline-flex"),updateUI()}function skipItem(item){const itemIndex=item.dataset.bundleItem;state.items.has(itemIndex)&&state.items.delete(itemIndex),item.querySelectorAll("[data-custom-overlay-text]").forEach(function(el){el.textContent=""});const customInput=item.querySelector("[data-custom-input]");customInput&&(customInput.value=""),delete item.dataset.bundleSelected,delete item.dataset.bundleVariantId,delete item.dataset.bundleProductId,delete item.dataset.bundleTitle,delete item.dataset.bundlePriceFormatted,delete item.dataset.bundleCustomInput,delete item.dataset.bundleCustomInputPropertyName,state.skippedItems.add(itemIndex),item.dataset.selected="true",item.dataset.ski
32pped="true",item.dataset.updating="false",item.querySelectorAll("[data-state]").forEach(s=>s.style.display="none");const skippedState=item.querySelector('[data-state="skipped"]');skippedState&&(skippedState.style.display="flex");const status=item.querySelector("[data-item-status]");status&&(status.textContent="SKIPPED");const editBtn=item.querySelector("[data-edit-trigger]"),swapBtn=item.querySelector("[data-swap-trigger]"),unskipBtn=item.querySelector("[data-unskip-trigger]");editBtn&&(editBtn.style.display="none"),swapBtn&&(swapBtn.style.display="none"),unskipBtn&&(unskipBtn.style.display="inline-flex"),updateUI()}function unskipItem(item){const itemIndex=item.dataset.bundleItem;state.skippedItems.delete(itemIndex),item.dataset.selected="false",item.dataset.skipped="false",item.dataset.updating="false",item.querySelectorAll("[data-custom-overlay-text]").forEach(function(el){el.textContent=""});const customInput=item.querySelector("[data-custom-input]");customInput&&(customInput.value=""),delete item.dataset.bundleSelected,delete item.dataset.bundleVariantId,delete item.dataset.bundleProductId,delete item.dataset.bundleTitle,delete item.dataset.bundlePriceFormatted,delete item.dataset.bundleCustomInput,delete item.dataset.bundleCustomInputPropertyName,showItemState(item,"initial");const status=item.querySelector("[data-item-status]");status&&(status.textContent="NOT SELECTED");const unskipBtn=item.querySelector("[data-unskip-trigger]");unskipBtn&&(unskipBtn.style.display="none"),updateUI()}function showItemState(item,stateName){item.querySelectorAll("[data-state]").forEach(s=>s.style.display="none");const targetState=item.querySelector(`[data-state="${stateName}"]`);targetState&&(targetState.style.display="flex");const editBtn=item.querySelector("[data-edit-trigger]");editBtn&&(editBtn.style.display=stateName==="confirmed"?"inline-flex":"none")}function getItemConfig(item){const script=item.querySelector(".rev-bundle-item-cfg");if(!script)return null;try{return JSON.parse(script.textContent)}catch(e){return console.error("Failed to parse item config:",e),null}}function getDiscountLabel(){return state.discountType==="none"?"":state.discountType==="percent"?`${state.discountValue}%`:formatMoney(state.discountValue*100)}function calculateSavings(originalTotal){return state.discountType==="none"||state.discountValue<=0?0:state.discountType==="percent"?Math.round(originalTotal*(state.discountValue/100)):Math.round(state.discountValue*100)}function updateUI(){const selectedCount=state.items.size,skippedCount=state.skippedItems.size,completedCount=selectedCount+skippedCount,totalItems=els.bundleItems.length,isComplete=completedCount>=state.itemsRequired;let originalTotal=0;state.items.forEach(item=>{originalTotal+=item.price});const savings=selectedCount>0?calculateSavings(originalTotal):0,bundleTotal=originalTotal-savings,discountLabel=getDiscountLabel(),progressPercent=Math.min(completedCount/state.itemsRequired*100,100);if(els.progressBar&&(els.progressBar.style.width=`${progressPercent}%`),els.progressCount&&(els.progressCount.textContent=`${completedCount} / ${state.itemsRequired} Items`),els.progressHint){const remaining=state.itemsRequired-completedCount;if(completedCount===0)els.progressHint.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg> Select your first item to start building your bundle';else if(isComplete){const completeMsg=discountLabel?`${discountLabel} savings applied.`:"Ready to add to cart.";els.progressHint.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg> Bundle Complete! ${completeMsg}`}else{const remainingMsg=discountLabel?`to unlock ${discountLabel} savings`:"to complete your bundle";els.progressHint.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
32ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 13V2l8 4-8 4"/><path d="M20.561 10.222a9 9 0 1 1-12.55-5.29"/><path d="M8.002 9.997a5 5 0 1 0 8.9 2.02"/></svg> Add ${remaining} more item${remaining>1?"s":""} ${remainingMsg}`}}els.originalPrice&&(els.originalPrice.textContent=formatMoney(originalTotal)),els.bundlePrice&&(els.bundlePrice.textContent=formatMoney(bundleTotal)),els.savingsBadge&&(isComplete&&savings>0?(els.savingsBadge.textContent=`Save ${formatMoney(savings)}`,els.savingsBadge.style.display="inline-block"):els.savingsBadge.style.display="none"),els.statusCount&&(els.statusCount.textContent=`${completedCount} of ${state.itemsRequired} items selected`),els.addButton&&(els.addButton.disabled=!isComplete),state.section?.dataset.bundleSequentialLock==="true"?els.bundleItems.forEach((item,idx)=>{if(idx===0){item.dataset.locked="false";return}const prevItem=els.bundleItems[idx-1],prevDone=prevItem.dataset.selected==="true"||prevItem.dataset.skipped==="true";item.dataset.locked=prevDone?"false":"true"}):els.bundleItems.forEach(item=>{item.dataset.locked="false"})}function formatMoney(cents){return typeof Shopify<"u"&&Shopify.formatMoney?Shopify.formatMoney(cents):"$"+(cents/100).toFixed(2)}async function addBundleToCart(){if(state.items.size+state.skippedItems.size<state.itemsRequired)return;if(state.confirmEnabled&&!state.confirmPending){showConfirmModal();return}state.confirmPending=!1,els.addButton.disabled=!0,els.addButton.classList.add("loading"),els.confirmAdd&&(els.confirmAdd.disabled=!0,els.confirmAdd.classList.add("loading"));const items=[];if(state.items.forEach((item,index)=>{if(!item.variantId){console.error("Missing variantId for item:",index,item);return}const cartItem={id:Number(item.variantId),quantity:1,properties:{_bundle:"true",_bundle_discount:getDiscountLabel()+(state.discountType==="amount"?" off":"")}};item.customInput&&item.customInputPropertyName&&(cartItem.properties[item.customInputPropertyName]=item.customInput),items.push(cartItem)}),items.length===0){console.error("No valid items to add to cart"),alert("Please select variants for all items before adding to cart."),resetButtonState();return}if(items.length>1){const bundleGroupId=`group_${Date.now()}_${Math.floor(Math.random()*1e6)}`;items.forEach(item=>{item.properties||(item.properties={}),item.properties._bundle_group_id=bundleGroupId})}console.log("Adding bundle to cart:",JSON.stringify(items,null,2));try{const cartBody={items};if(typeof getCartDrawerSectionId2=="function"){const cartDrawerSectionId=getCartDrawerSectionId2();cartDrawerSectionId&&(cartBody.sections=[cartDrawerSectionId],cartBody.sections_url=window.location.pathname)}const res=await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(cartBody)});if(!res.ok){const errorData=await res.json().catch(()=>({}));throw new Error(errorData.description||errorData.message||`Failed to add (${res.status})`)}const parsedState=await res.json(),discountCode=els.addButton.dataset.discountCode;if(discountCode&&discountCode.trim()){const discountUrl=`/discount/${encodeURIComponent(discountCode.trim())}?redirect=${encodeURIComponent(window.location.pathname)}`;await fetch(discountUrl,{method:"GET",credentials:"include",redirect:"follow"}).catch(e=>console.warn("Failed to apply bundle discount",e)),await new Promise(r=>setTimeout(r,200))}document.body.classList.add("rev-item-added"),document.documentElement.dispatchEvent(new CustomEvent("cart:updated",{bubbles:!0})),document.dispatchEvent(new CustomEvent("ajaxProduct:added",{bubbles:!0})),document.dispatchEvent(new CustomEvent("product-ajax:added",{bubbles:!0})),closeConfirmModal(),resetButtonState();const uflCart=document.getElementById("ufl-cart");if(uflCart)try{const[cartRes,htmlRes]=await Promise.all([fetch("/cart.js").then(r=>r.json()),fetch(window.location.href).then(r=>r.text())]);if(cartRes.item_count>0){const newContent=new DOMParser().parseFromString(htmlRes,"text/html").querySelector("#ufl-cart .ufl-cart-content"),currentContent=uflCart.querySelector(".ufl-cart-content");currentContent&&newContent&&(currentContent.innerHTML=newContent.innerHTML),uflCart.style.visibility="visible",uflCart.removeAttribute("inert"),uflCart.classList.remove("ufl-cart-hidden"),uflCart.setAttribute("tabindex","-1"),uflCart.focus()}}catch{}else typeof revOpenCartDrawer=="function"?await revOpenCartDrawer(parsedState.sections):window.location.href="/cart"}catch(error){console.error("Add to cart error:",error),revShowCartError2(error.message),resetButtonState()}}function resetButtonState(){els.addButton&&(els.addButton.disabled=!1,els.addButton.classList.remove("loading")),els.confirmAdd&&(els.c
32onfirmAdd.disabled=!1,els.confirmAdd.classList.remove("loading"))}function switchToProduct(item,newProduct,currentCfg){const itemIndex=item.dataset.bundleItem;state.items.has(itemIndex)&&state.items.delete(itemIndex),item.querySelectorAll("[data-custom-overlay-text]").forEach(function(el){el.textContent=""});const customInput=item.querySelector("[data-custom-input]");customInput&&(customInput.value=""),delete item.dataset.bundleSelected,delete item.dataset.bundleVariantId,delete item.dataset.bundleProductId,delete item.dataset.bundleTitle,delete item.dataset.bundlePriceFormatted,delete item.dataset.bundleCustomInput,delete item.dataset.bundleCustomInputPropertyName;const cfgScript=item.querySelector(".rev-bundle-item-cfg");if(cfgScript){const newConfig={productId:newProduct.id,productHandle:newProduct.handle,productTitle:newProduct.title,productUrl:newProduct.url,productImage:newProduct.image,variants:newProduct.variants,options:newProduct.options,optionsWithValues:newProduct.optionsWithValues,hasAlternatives:!0,alternatives:currentCfg.alternatives};cfgScript.textContent=JSON.stringify(newConfig)}item.dataset.productId=newProduct.id,item.dataset.selected="false";const selectingState=item.querySelector('[data-state="selecting"]');if(selectingState){const img=selectingState.querySelector(".rev-bundle-builder__item-img");img&&(img.src=newProduct.image,img.srcset=newProduct.image.replace(/width=\d+/,"width=200")+" 200w, "+newProduct.image+" 400w");const title=selectingState.querySelector("[data-selecting-title]");title&&(title.textContent=decodeHtml(newProduct.title)),item.querySelectorAll(".rev-bundle-builder__variant-wrap").forEach(wrap=>{wrap.style.display=wrap.dataset.variantProduct==newProduct.id?"":"none"});const activeWrap=item.querySelector('.rev-bundle-builder__variant-wrap[data-variant-product="'+newProduct.id+'"]');activeWrap&&typeof initVariantSelectorState2=="function"&&initVariantSelectorState2(activeWrap)}const confirmedState=item.querySelector('[data-state="confirmed"]');if(confirmedState){const img=confirmedState.querySelector(".rev-bundle-builder__confirmed-img");img&&(img.src=newProduct.image,img.srcset="");const title=confirmedState.querySelector("[data-confirmed-title]");title&&(title.textContent=decodeHtml(newProduct.title))}const statusEl=item.querySelector("[data-item-status]");statusEl&&(statusEl.textContent="NOT SELECTED"),item._bundleVariant=null,item._bundleSelectedOptions=null}function handleChoiceClick(item,choiceIndex){const cfg=getItemConfig(item);if(!cfg)return;const chosenProduct=choiceIndex===0?{id:cfg.productId,title:cfg.productTitle,image:cfg.productImage,variants:cfg.variants,options:cfg.options,optionsWithValues:cfg.optionsWithValues}:cfg.alternatives[choiceIndex-1];if(!chosenProduct)return;chosenProduct.id!==cfg.productId&&switchToProduct(item,chosenProduct,cfg);const selectingState=item.querySelector('[data-state="selecting"]');if(selectingState){const overlayEnabled=!!cfg.customInput?.overlayEnabled,overlayMedia=cfg.customInput?.overlayMedia;if(!(overlayEnabled&&overlayMedia)){const img=selectingState.querySelector(".rev-bundle-builder__item-img");img&&(img.src=chosenProduct.image,img.srcset=chosenProduct.image.replace(/width=\d+/,"width=200")+" 200w, "+chosenProduct.image+" 400w")}const title=selectingState.querySelector("[data-selecting-title]");title&&(title.textContent=decodeHtml(chosenProduct.title)),item.querySelectorAll(".rev-bundle-builder__variant-wrap").forEach(wrap=>{wrap.style.display=wrap.dataset.variantProduct==chosenProduct.id?"":"none"})}showSelectingState(item)}function showConfirmModal(){populateConfirmModal(),els.confirmModal.style.display="flex",document.body.style.overflow="hidden"}function populateConfirmModal(){if(!els.confirmItems)return;els.confirmItems.innerHTML="";let originalTotal=0;state.items.forEach((item,itemIndex)=>{originalTotal+=item.price;const bundleItemEl=state.section.querySelector(`[data-bundle-item="${itemIndex}"]`),cfg=bundleItemEl?getItemConfig(bundleItemEl):null,hasAlts=cfg&&cfg.hasAlternatives,row=document.createElement("div");row.className="rev-bundle-builder__confirm-item";let swapHtml="";hasAlts&&(swapHtml=`
33                    <button class="rev-bundle-builder__confirm-item-swap" type="button" data-confirm-swap="${itemIndex}">
34                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
35                            <path d="M7 16l-4-4m0 0l4-4m-4 4h18M17 8l4 4m0 0l-4 4m4-4H3"/>
36                        </svg>
37                        Swap
38                    </button>
39                `),row.innerHTML=`
40                <img src="${item.image}" alt="${item.title}" class="rev-bundle-builder__confirm-item-img" />
41                <div class="rev-bundle-builder__confirm-item-info">
42                    <p class="rev-bundle-builder__confirm-item-title">${item.title}</p>
43                    <p class="rev-bundle-builder__confirm-item-variant">${item.options.join(" / ")}</p>
44                </div>
45                <span class="rev-bundle-builder__confirm-item-price">${item.priceFormatted}</span>
46                ${swapHtml}
47            `;const swapBtn=row.querySelector("[data-confirm-swap]");swapBtn&&swapBtn.addEventListener("click",()=>{closeConfirmModal();const targetItem=state.section.querySelector(`[data-bundle-item="${itemIndex}"]`);if(targetItem){showSelectingState(targetItem),targetItem.classList.add("is-open");const trigger=targetItem.querySelector("[data-accordion-trigger]");trigger&&trigger.setAttribute("aria-expanded","true");const initialState=targetItem.querySelector('[data-state="initial"]');initialState&&(initialState.hidden=!0)}}),els.confirmItems.appendChild(row)});const savings=calculateSavings(originalTotal),bundleTotal=originalTotal-savings;els.confirmSubtotal&&(els.confirmSubtotal.textContent=formatMoney(originalTotal)),els.confirmDiscountLabel&&(els.confirmDiscountLabel.textContent=`Bundle Discount (${getDiscountLabel()})`),els.confirmDiscount&&(els.confirmDiscount.textContent="-"+formatMoney(savings)),els.confirmTotal&&(els.confirmTotal.textContent=formatMoney(bundleTotal))}function closeConfirmModal(){els.confirmModal&&(els.confirmModal.style.display="none"),document.body.style.overflow=""}function executeAddToCart(){state.confirmPending=!0,addBundleToCart()}return{init}})();window.RevBundleBuilder=RevBundleBuilder,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",revBundleBuilderAutoInit2):revBundleBuilderAutoInit2(),(function(){function debounce(fn,delay){var timer;return function(){var args=arguments,context=this;clearTimeout(timer),timer=setTimeout(function(){fn.apply(context,args)},delay)}}function getSectionId(el){var wrapper=el.closest('[id^="shopify-section-"]');return wrapper?wrapper.id.replace("shopify-section-",""):null}function setLoading(section,loading){var products=section.querySelector("[data-rev-collection-products]");products&&(loading?products.classList.add("rev-collection-loading"):products.classList.remove("rev-collection-loading"))}function syncSwatchMedia(section){section.querySelectorAll(".rev-product-card").forEach(function(card){var activeSwatch=card.querySelector(".rev-card-swatch-active");if(activeSwatch){var optionValue=activeSwatch.dataset.optionValue;if(optionValue){var cardMedia=card.querySelector(".rev-card-media");if(cardMedia){cardMedia.querySelectorAll(".rev-card-swatch-media").forEach(function(m){m.classList.remove("active")});var target=cardMedia.querySelector('.rev-card-swatch-media[data-swatch-value="'+optionValue+'"]');target&&target.classList.add("active")}}}})}function rerenderCollection(section,newUrl){var sectionId=getSectionId(section);if(!sectionId){window.location.href=newUrl;return}setLoading(section,!0),history.pushState({},"",newUrl);var fetchUrl=new URL(newUrl,window.location.origin);fetchUrl.searchParams.set("section_id",sectionId),fetch(fetchUrl.toString(),{headers:{"X-Requested-With":"XMLHttpRequest"}}).then(function(res){if(!res.ok)throw new Error(res.status);return res.text()}).then(function(html){var doc=new DOMParser().parseFromString(html,"text/html"),newContainer=doc.querySelector(".rev-container")||doc.querySelector("[data-rev-collection-main] .rev-container"),currentContainer=section.querySelector(".rev-container");if(currentContainer&&newContainer){var searchInput=currentContainer.querySelector("[data-rev-collection-search-input]"),savedSearchQuery=searchInput?searchInput.value:"";if(currentContainer.innerHTML=newContainer.innerHTML,savedSearchQuery){var restoredInput=currentContainer.querySelector("[data-rev-collection-search-input]");restoredInput&&(restoredInput.value=savedSearchQuery,restoredInput.focus(),restoredInput.setSelectionRange(savedSearchQuery.length,savedSearchQuery.length)),typeof applyCollectionSearch=="function"&&applyCollectionSearch(section,savedSearchQuery)}}setLoading(section,!1),typeof initVariantSelectorState2=="function"&&initVariantSelectorState2(section),syncSwatchMedia(section);var infiniteTrigger=section.querySelector("[data-rev-infinite-scroll]");infiniteTrigger&&bindInfiniteScroll(infiniteTrigger),section.scrollIntoView({behavior:"smooth",block:"start"})}).catch(function(){setLoading(section,!1),window.location.href=newUrl})}function applyPriceFilters(section,form){var url=new URL(window.location.href),keysToRemove=[];
47url.searchParams.forEach(function(val,key){key.indexOf("filter.v.price")===0&&keysToRemove.push(key)}),keysToRemove.forEach(function(k){url.searchParams.delete(k)}),url.searchParams.delete("page"),form.querySelectorAll("[data-rev-price-filter]").forEach(function(input){if(input.value&&input.value!==""){var cents=Math.round(parseFloat(input.value)*100);!isNaN(cents)&&cents>0&&url.searchParams.set(input.name,cents.toString())}}),rerenderCollection(section,url.toString())}var debouncedPriceApply=debounce(function(section,form){applyPriceFilters(section,form)},1e3);function bindInfiniteScroll(trigger){var isLoading=!1,observer=new IntersectionObserver(function(entries){entries.forEach(function(entry){if(!(!entry.isIntersecting||isLoading)){var nextUrl=trigger.getAttribute("data-next-url");if(!nextUrl){observer.disconnect();return}isLoading=!0,fetch(nextUrl).then(function(res){return res.text()}).then(function(html){var doc=new DOMParser().parseFromString(html,"text/html"),newGrid=doc.querySelector("[data-rev-collection-products] .rev-card-grid"),currentGrid=trigger.closest("[data-rev-collection-products]").querySelector(".rev-card-grid");if(newGrid&&currentGrid)for(;newGrid.children.length>0;)currentGrid.appendChild(newGrid.children[0]);if(typeof initVariantSelectorState2=="function"){var section=trigger.closest("[data-rev-collection-main]");section&&initVariantSelectorState2(section)}var newTrigger=doc.querySelector("[data-rev-infinite-scroll]");newTrigger?trigger.setAttribute("data-next-url",newTrigger.getAttribute("data-next-url")):(trigger.removeAttribute("data-next-url"),observer.disconnect()),isLoading=!1}).catch(function(){isLoading=!1})}})},{rootMargin:"200px"});observer.observe(trigger)}document.addEventListener("change",function(e){var select=e.target.closest("[data-rev-sort-select]");if(select){var section=select.closest("[data-rev-collection-main]");if(section){var url=new URL(window.location.href);url.searchParams.set("sort_by",select.value),url.searchParams.delete("page"),rerenderCollection(section,url.toString())}}}),document.addEventListener("change",function(e){var input=e.target.closest('[data-rev-filter-input][type="checkbox"]');if(input){var section=input.closest("[data-rev-collection-main]");if(section){var targetUrl=input.checked?input.getAttribute("data-url-add"):input.getAttribute("data-url-remove");targetUrl&&rerenderCollection(section,targetUrl)}}}),document.addEventListener("click",function(e){var btn=e.target.closest("[data-rev-price-btn]");if(btn){var section=btn.closest("[data-rev-collection-main]");if(section){var url=new URL(window.location.href),minParam=btn.dataset.minParam,maxParam=btn.dataset.maxParam;btn.classList.contains("rev-collection-filter-price-btn--active")?(url.searchParams.delete(minParam),url.searchParams.delete(maxParam)):(url.searchParams.set(minParam,btn.dataset.min),url.searchParams.set(maxParam,btn.dataset.max)),url.searchParams.delete("page"),rerenderCollection(section,url.toString())}}}),document.addEventListener("input",function(e){var input=e.target.closest("[data-rev-price-filter]");if(input){var section=input.closest("[data-rev-collection-main]"),form=input.closest("[data-rev-filter-form]");section&&form&&debouncedPriceApply(section,form)}}),document.addEventListener("submit",function(e){var form=e.target.closest("[data-rev-filter-form]");if(form){e.preventDefault();var section=form.closest("[data-rev-collection-main]");section&&applyPriceFilters(section,form)}}),document.addEventListener("click",function(e){var toggle=e.target.closest("[data-rev-filter-toggle]");if(toggle){var section=toggle.closest("[data-rev-collection-main]");if(section){var sidebar=section.querySelector("[data-rev-filter-sidebar]"),overlay=section.querySelector("[data-rev-filter-overlay]");sidebar&&(sidebar.classList.add("rev-is-open"),overlay&&overlay.classList.add("rev-is-open"),document.body.style.overflow="hidden")}}}),document.addEventListener("click",function(e){var closeBtn=e.target.closest("[data-rev-filter-close]"),overlayEl=e.target.closest("[data-rev-filter-overlay]"),trigger=closeBtn||overlayEl;if(trigger){var section=trigger.closest("[data-rev-collection-main]");if(section){var sidebar=section.querySelector("[data-rev-filter-sidebar]"),overlay=section.querySelector("[data-rev-filter-overlay]");sidebar&&sidebar.classList.remove("rev-is-open"),overlay&&overlay.classList.remove("rev-is-open"),document.body.style.overflow=""}}}),document.addEventListener("click",function(e){var pill=e.target.closest(".rev-collection-active-filter");if(pill){e.preventDefault();var section=pill.closest("[data-rev-collection-main]");section&&rerenderCollection(section,pill.getAttribute("href"))}}),document.addEventListener("click",function(e){var link=e.target.closest(".rev-collection-active-filters__clear");if(link){e.preventDefault();var section=link.closest("[data-rev-collection-main]");section&&rerenderCollection(section,link.getAttribute("href"))}}),document.addEventListener("click",function(e){var pageLink=e.target.closest(".rev-pagination__btn[href]");if(pageLink){e.preventDefault();var section=pageLink.closest("[data-rev-collection-main]");section&&rerenderCollection(section,pageLink.getAttribute("href"))}}),document.addEventListener("click",function(e){var btn=e.target.closest("[data-rev-load-more]");if(btn){var nextUrl=btn.getAttribute("data-next-url");if(nextUrl){var label=btn.querySelector("span"),originalLabel=label?label.textContent:"Load More";btn.setAttribute("disabled","true"),label&&(label.textContent="Loading..."),fetch(nextUrl).then(function(res){return res.text()}).then(function(html){var doc=new DOMParser().parseFromString(html,"text/html"),newGrid=doc.querySelector("[data-rev-collection-
47products] .rev-card-grid"),currentGrid=btn.closest("[data-rev-collection-products]").querySelector(".rev-card-grid");if(newGrid&&currentGrid)for(;newGrid.children.length>0;)currentGrid.appendChild(newGrid.children[0]);if(typeof initVariantSelectorState2=="function"){var section=btn.closest("[data-rev-collection-main]");section&&initVariantSelectorState2(section)}var newBtn=doc.querySelector("[data-rev-load-more]");if(newBtn)btn.setAttribute("data-next-url",newBtn.getAttribute("data-next-url")),btn.removeAttribute("disabled"),label&&(label.textContent=originalLabel);else{var wrapper=btn.closest(".rev-collection-load-more");wrapper&&(wrapper.style.display="none")}}).catch(function(){btn.removeAttribute("disabled"),label&&(label.textContent=originalLabel)})}}}),window.addEventListener("popstate",function(){document.querySelectorAll("[data-rev-collection-main]").forEach(function(section){rerenderCollection(section,window.location.href)})});function initInfiniteScroll(){document.querySelectorAll("[data-rev-infinite-scroll]").forEach(function(trigger){trigger._revObserverBound||(trigger._revObserverBound=!0,bindInfiniteScroll(trigger))})}function initSwatchMediaSync(){document.querySelectorAll("[data-rev-collection-main]").forEach(function(section){syncSwatchMedia(section)})}function initAll(){initInfiniteScroll(),initSwatchMediaSync()}var productCache={};function searchMatch(needle,haystack){needle=needle.toLowerCase(),haystack=haystack.toLowerCase();for(var words=needle.split(/\s+/),i=0;i<words.length;i++)if(words[i]&&haystack.indexOf(words[i])===-1)return!1;return!0}function fetchAllProducts(handle,callback){if(productCache[handle]){callback(productCache[handle]);return}var results=[],page=1;function fetchPage(){fetch("/collections/"+handle+"/products.json?limit=250&page="+page).then(function(res){return res.json()}).then(function(data){!data.products||!data.products.length?(productCache[handle]=results,callback(results)):(results=results.concat(data.products),data.products.length===250?(page++,fetchPage()):(productCache[handle]=results,callback(results)))}).catch(function(){productCache[handle]=results,callback(results)})}fetchPage()}function updateProductCount(section,count,total){var countEls=section.querySelectorAll("[data-rev-product-count]"),text=count===total?total+" "+(total===1?"product":"products"):count+" of "+total+" "+(total===1?"product":"products");countEls.forEach(function(el){el.textContent=text})}function applyCollectionSearch(section,query){var searchWrapper=section.querySelector("[data-rev-collection-search]");if(searchWrapper){var handle=searchWrapper.getAttribute("data-collection-handle"),totalCount=parseInt(searchWrapper.getAttribute("data-products-count"),10)||0;fetchAllProducts(handle,function(products){var gridItems=section.querySelectorAll("[data-rev-collection-products] .rev-card-grid__item");if(!query){gridItems.forEach(function(item){item.style.display=""}),updateProductCount(section,totalCount,totalCount);return}var matchedHandles={};products.forEach(function(p){var skus=(p.variants||[]).map(function(v){return v.sku||""}).join(" "),searchable=[p.title||"",p.product_type||"",p.vendor||"",(p.tags||[]).join(" ")].join(" ");searchMatch(query,searchable)&&(matchedHandles[p.handle]=!0)});var visibleCount=0;gridItems.forEach(function(item){var card=item.querySelector("[data-product-handle]");if(card){var cardHandle=card.getAttribute("data-product-handle"),isMatch=!!matchedHandles[cardHandle];item.style.display=isMatch?"":"none",isMatch&&visibleCount++}}),updateProductCount(section,visibleCount,totalCount)})}}document.addEventListener("focusin",function(e){var input=e.target.closest("[data-rev-collection-search-input]");if(input){var searchWrapper=input.closest("[data-rev-collection-search]");if(searchWrapper){var handle=searchWrapper.getAttribute("data-collection-handle");fetchAllProducts(handle,function(){})}}}),document.addEventListener("input",function(e){var input=e.target.closest("[data-rev-collection-search-input]");if(input){var section=input.closest("[data-rev-collection-main]");if(section){var query=input.value.trim(),currentUrl=new URL(window.location.href),currentPage=currentUrl.searchParams.get("page");
47if(currentPage&&currentPage!=="1"&&query){var searchWrapper=section.querySelector("[data-rev-collection-search]"),handle=searchWrapper?searchWrapper.getAttribute("data-collection-handle"):"";rerenderCollection(section,"/collections/"+handle);return}applyCollectionSearch(section,query)}}}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initAll):initAll()})(),document.addEventListener("click",function(e){const trigger=e.target.closest("[data-accordion-trigger]");if(!trigger||e.target.closest("[data-edit-trigger]")||e.target.closest("[data-unskip-trigger]")||e.target.closest("[data-swap-trigger]"))return;const item=trigger.closest(".rev-bundle-builder__item--accordion");if(!item)return;const initialState=item.querySelector('[data-state="initial"]');if(!initialState)return;const isOpen=item.classList.contains("is-open");item.classList.toggle("is-open",!isOpen),trigger.setAttribute("aria-expanded",String(!isOpen)),initialState.hidden=isOpen}),document.addEventListener("keydown",function(e){const trigger=e.target.closest("[data-accordion-trigger]");trigger&&(e.key!=="Enter"&&e.key!==" "||(e.preventDefault(),trigger.click()))}),document.addEventListener("click",function(e){const choice=e.target.closest(".rev-bundle-builder__choice");if(!choice)return;const item=choice.closest(".rev-bundle-builder__item--accordion");item&&requestAnimationFrame(()=>{revSyncAccordionItem2(item)})}),document.addEventListener("click",function(e){if(!e.target.closest("[data-swap-trigger]")&&!e.target.closest("[data-edit-trigger]")&&!e.target.closest("[data-unskip-trigger]"))return;const item=e.target.closest(".rev-bundle-builder__item--accordion");item&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{revSyncAccordionItem2(item)})})}),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".rev-bundle-builder__item--accordion").forEach(revSyncAccordionItem2)}),document.addEventListener("input",function(e){const input=e.target.closest("[data-custom-input]");if(!input)return;const item=input.closest("[data-bundle-item]");if(!item)return;const value=input.value||"";item.querySelectorAll("[data-custom-overlay-text]").forEach(function(el){el.textContent=value})}),(function(){"use strict";if(customElements.get("rev-header-nav"))return;class RevHeaderNav extends HTMLElement{constructor(){super(),this._sticky=this.dataset.revSticky==="true",this._transparent=this.dataset.revTransparent==="true",this._hoverMenu=this.dataset.revHoverMenu==="true",this._header=null,this._placeholder=null,this._activeMegamenu=null,this._drawer=null,this._overlay=null,this._headerHeight=0,this._originalPosition=0,this._isSticky=!1,this._resizeTimeout=null,this._boundOnScroll=this._onScroll.bind(this),this._boundOnResize=this._onResize.bind(this),this._boundCloseAll=this._closeAll.bind(this)}connectedCallback(){if(!this._initialized){this.querySelector(".rev-header")?this._init():(this._waitObserver=new MutationObserver(()=>{this.querySelector(".rev-header")&&(this._waitObserver.disconnect(),this._waitObserver=null,this._init())}),this._waitObserver.observe(this,{childList:!0,subtree:!0}),this._waitTimeout=setTimeout(()=>{this._waitObserver&&(this._waitObserver.disconnect(),this._waitObserver=null,this.querySelector(".rev-header")&&this._init())},5e3));var self=this;this._sectionLoadHandler=function(e){e.target&&(e.target===self||e.target.contains(self))&&(self._initialized=!1,self._init())},document.addEventListener("shopify:section:load",this._sectionLoadHandler)}}_init(){this._initialized||(this._header=this.querySelector(".rev-header"),this._placeholder=this.querySelector(".rev-header__placeholder"),this._drawer=this.querySelector(".rev-header__drawer"),this._overlay=this.querySelector(".rev-header__overlay"),this._searchOverlay=this.querySelector("[data-rev-search-overlay]"),this._header&&(this._initialized=!0,this._bindMegamenuTriggers(),this._bindMegamenuTabs(),this._bindHamburger(),this._bindDrawerClose(),this._bindOverlay(),this._bindLocalization(),this._bindSearch(),this._bindKeyboard(),this._initSearchSuggestions(),this._sticky&&(requestAnimationFrame(()=>{this._calculateDimensions(),this._onScroll()}),window.addEventListener("scroll",this._boundOnScroll,{passive:!0}),window.addEventListener("resize",this._boundOnResize,{passive:!0}))))}disconnectedCallback(){this._waitObserver&&(this._waitObserver.disconnect(),this._waitObserver=null),this._waitTimeout&&(clearTimeout(this._waitTimeout),this._waitTimeout=null),this._sectionLoadHandler&&(document.removeEventListener("shopify:section:load",this._sectionLoadHandler),this._sectionLoadHandler=null),window.removeEventListener("scroll",this._boundOnScroll),window.removeEventListener("resize",this._boundOnResize),document.removeEventListener("click",this._boundCloseAll)}_measureHeader(){this._headerHeight=this._header.offsetHeight}_calculateDimensions(){if(this._header){var wasSticky=this._isSticky;wasSticky&&(this._header.classList.remove("is-sticky"),this._placeholder.style.height="0px");var rect=this._header.getBoundingClientRect();this._originalPosition=rect.top+(window.pageYOffset||0),this._headerHeight=rect.height,wasSticky&&(this._header.classList.add("is-sticky"),this._placeholder.style.height=this._headerHeight+"px")}}_onScroll(){if(!(!this._header||!this._placeholder)){var scrollTop=window.pageYOffset||0,shouldBeSticky=scrollTop>this._originalPosition;shouldBeSticky&&!this._isSticky?(this._placeholder.style.height=this._headerHeight+"px",this._header.classList.add("is-sticky"),this._isSticky=!0):!shouldBeSticky&&this._isSticky&&(this._header.classList.remove("is-sticky"),this._placeholder.style.height="0px",this._isSticky=!1)}}_onResize(){clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(()=>{this._calculateDimensions(),this._onScroll()},16)}_bindMegamenuTriggers(){var self=this;if(this.addEventListener("click",function(e){var trigger=e.target.closest&&e.target.closest("[data-rev-megamenu-trigger]");if(!(!trigger||!self.contains(trigger))){e.stopPropagation();var index=trigger.getAttribute("data-rev-megamenu-trigger"),sectionId=self.dataset.revSectionId,panelId="rev-megamenu-"+sectionId+"-"+index,panel=self.querySelector("#"+panelId);if(panel){var isOpen=panel.getAttribute("aria-hidden")==="false";self._closeMegamenus(),isOpen||self._openMegamenu(panel,trigger)}}}),this._hoverMenu){var hoverTimeout=null,closeTimeout=null;this.addEventListener("mouseover",function(e){if(!(window.innerWidth<769)){var trigger=e.target.closest&&e.target.closest("[data-rev-megamenu-trigger]"),panel=e.target.closest&&e.target.closest(".rev-megamenu");if(trigger&&self.contains(trigger)){var index=trigger.getAttribute("data-rev-megamenu-trigger"),sectionId=self.dataset.revSectionId,panelId="rev-megamenu-"+sectionId+"-"+index,targetPanel=self.querySelector("#"+panelId);if(!targetPanel)return;clearTimeout(closeTimeout),clearTimeout(hoverTimeout),hoverTimeout=setTimeout(function(){self._closeMegamenus(),self._openMegamenu(targetPanel,trigger)},150)}else panel&&clearTimeout(closeTimeout)}}),this.addEventListener("mouseout",function(e){if(!(window.innerWidth<769)){var trigger=e.target.closest&&e.target.closest("[data-rev-megamenu-trigger]"),panel=e.target.closest&&e.target.closest(".rev-megamenu");if(!(!trigger&&!panel)){var related=e.relatedTarget;related&&related.closest&&(related.closest("[data-rev-megamenu-trigger]")||related.closest(".rev-megamenu"))||(clearTimeout(hoverTimeout),closeTimeout=setTimeout(function(){self._closeMegamenus()},200))}}})}document.addEventListener("click",function(e){self.contains(e.target)||e.target.closest&&e.target.closest(".rev-megamenu")||self._closeMegamenus()})}_openMegamenu(panel,trigger){var headerRect=this._header.getBoundingClientRect();panel.style.top=headerRect.bottom+"px",panel.setAttribute("aria-hidden","false"),trigger.setAttribute("aria-expanded","true"),this._activeMegamenu={panel,trigger},this._header.classList.add("rev-header--megamenu-open")}_closeMegamenus(){var panels=this.querySelectorAll(".rev-megamenu");
47panels.forEach(function(p){p.setAttribute("aria-hidden","true")});var triggers=this.querySelectorAll("[data-rev-megamenu-trigger]");triggers.forEach(function(t){t.setAttribute("aria-expanded","false")}),this._activeMegamenu=null,this._header.classList.remove("rev-header--megamenu-open")}_bindHamburger(){var self=this;this.addEventListener("click",function(e){var btn=e.target.closest&&e.target.closest(".rev-header__hamburger");!btn||!self.contains(btn)||self._openDrawer()})}_bindDrawerClose(){var self=this;this.addEventListener("click",function(e){var btn=e.target.closest&&e.target.closest(".rev-header__drawer-close");!btn||!self.contains(btn)||self._closeDrawer()})}_bindOverlay(){var self=this;this.addEventListener("click",function(e){var overlay=e.target.closest&&e.target.closest(".rev-header__overlay");!overlay||!self.contains(overlay)||self._closeAll()})}_openDrawer(){if(this._drawer){this._drawer.setAttribute("aria-hidden","false"),this._overlay&&this._overlay.setAttribute("aria-hidden","false"),this._scrollY=window.pageYOffset||0,document.documentElement.style.overflow="hidden",document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.top="-"+this._scrollY+"px",document.body.style.width="100%";var closeBtn=this._drawer.querySelector(".rev-header__drawer-close");closeBtn&&closeBtn.focus();var hamburgers=this.querySelectorAll(".rev-header__hamburger");hamburgers.forEach(function(btn){btn.setAttribute("aria-expanded","true")})}}_closeDrawer(){if(this._drawer&&this._drawer.getAttribute("aria-hidden")!=="true"){this._drawer.setAttribute("aria-hidden","true"),this._overlay&&this._overlay.setAttribute("aria-hidden","true"),document.documentElement.style.overflow="",document.body.style.overflow="",document.body.style.position="",document.body.style.top="",document.body.style.width="",window.scrollTo(0,this._scrollY||0);var hamburgers=this.querySelectorAll(".rev-header__hamburger");hamburgers.forEach(function(btn){btn.setAttribute("aria-expanded","false")})}}_closeAll(){this._closeMegamenus(),this._closeDrawer()}_bindMegamenuTabs(){var self=this;this.addEventListener("click",function(e){var tab=e.target.closest&&e.target.closest(".rev-megamenu__tab");if(!(!tab||!self.contains(tab))){var container=tab.closest(".rev-megamenu__tabs-container");if(container){var allTabs=container.querySelectorAll(".rev-megamenu__tab");allTabs.forEach(function(t){t.setAttribute("aria-selected","false")});var allPanels=container.querySelectorAll(".rev-megamenu__tab-panel");allPanels.forEach(function(p){p.hidden=!0}),tab.setAttribute("aria-selected","true");var panelId=tab.getAttribute("aria-controls"),panel=container.querySelector("#"+panelId);panel&&(panel.hidden=!1)}}})}_bindLocalization(){var disclosures=this.querySelectorAll("[data-rev-localization]");if(disclosures.length){var self=this;disclosures.forEach(function(disclosure){var form=disclosure.closest("form");if(form){var buttons=disclosure.querySelectorAll(".rev-localization__option-btn");buttons.forEach(function(btn){btn.addEventListener("click",function(){var value=btn.getAttribute("data-value"),hiddenInput=form.querySelector('input[type="hidden"]');hiddenInput&&(hiddenInput.value=value,form.submit())})}),document.addEventListener("click",function(e){disclosure.contains(e.target)||disclosure.removeAttribute("open")})}})}}_bindKeyboard(){var self=this;document.addEventListener("keydown",function(e){e.key==="Escape"&&(self._closeAll(),self._closeSearchOverlay())})}_bindSearch(){var self=this;this._searchOverlay&&(this.addEventListener("click",function(e){var btn=e.target.closest&&e.target.closest("[data-rev-search-toggle]");!btn||!self.contains(btn)||(e.stopPropagation(),self._searchOverlay.classList.contains("rev-search-overlay--open")?self._closeSearchOverlay():self._openSearchOverlay())}),document.addEventListener("click",function(e){var btn=e.target.closest&&e.target.closest("[data-rev-search-close]");btn&&(!self._searchOverlay||!self._searchOverlay.contains(btn)||self._closeSearchOverlay())}),document.addEventListener("click",function(e){self._searchOverlay.classList.contains("rev-search-overlay--open")&&(self._searchOverlay.contains(e.target)||e.target.closest("[data-rev-search-toggle]")||e.target.closest("[data-rev-search-inline]")||e.target.closest(".rev-header__search-bar")||self._closeSearchOverlay())}),this._bindPersistentSearch())}_initSearchSuggestions(){var raw=this.getAttribute("data-rev-search-suggestions");
47if(!raw)return;var suggestions=raw.split(",").map(function(s){return s.trim()}).filter(Boolean);if(suggestions.length===0)return;var inputs=this.querySelectorAll('input[type="search"]');if(!inputs.length)return;var currentIndex=0,charIndex=0,isTyping=!0,isPaused=!1;inputs.forEach(function(input){input.addEventListener("focus",function(){isPaused=!0,inputs.forEach(function(inp){inp.placeholder="Search..."})}),input.addEventListener("blur",function(){input.value.length===0&&(isPaused=!1)})});function setPlaceholder(text){inputs.forEach(function(inp){document.activeElement!==inp&&(inp.placeholder=text)})}function tick(){if(isPaused){requestAnimationFrame(function(){setTimeout(tick,200)});return}var word=suggestions[currentIndex];if(isTyping){if(charIndex++,setPlaceholder(word.substring(0,charIndex)),charIndex>=word.length){isTyping=!1,setTimeout(tick,2e3);return}setTimeout(tick,80)}else{if(charIndex--,charIndex<=0){isTyping=!0,currentIndex=(currentIndex+1)%suggestions.length,setTimeout(tick,300);return}setPlaceholder(word.substring(0,charIndex)),setTimeout(tick,40)}}setTimeout(tick,1e3)}_bindPersistentSearch(){var self=this,overlayInput=this._searchOverlay.querySelector('input[type="search"]');if(overlayInput){var persistentInputs=this.querySelectorAll('.rev-header__search-inline input[type="search"], .rev-header__search-bar input[type="search"]');persistentInputs.length&&(persistentInputs.forEach(function(input){input.addEventListener("focus",function(){self._searchOverlay.classList.contains("rev-search-overlay--open")||self._openSearchOverlay(!0)}),input.addEventListener("input",function(){var query=input.value;self._searchOverlay.classList.contains("rev-search-overlay--open")||self._openSearchOverlay(!0),overlayInput.value=query,overlayInput.dispatchEvent(new Event("input",{bubbles:!0}))}),input.addEventListener("keydown",function(e){if(e.key==="Enter"){e.preventDefault();var query=input.value.trim();query.length>0&&(window.location.href="/search?q="+encodeURIComponent(query)+"&options[prefix]=last")}})}),this._persistentInputs=persistentInputs)}}_openSearchOverlay(skipFocus){if(this._searchOverlay&&(this._closeAll(),this._searchOverlay.classList.add("rev-search-overlay--open"),this._searchOverlay.setAttribute("aria-hidden","false"),!skipFocus)){var input=this._searchOverlay.querySelector('input[type="search"]');input&&setTimeout(function(){input.focus({preventScroll:!0})},100)}}_closeSearchOverlay(){if(this._searchOverlay){var isMobileBar=this.getAttribute("data-rev-search-mobile")==="bar"&&window.innerWidth<=768;if(isMobileBar){var results=this._searchOverlay.querySelector(".rev-search__results");results&&(results.innerHTML="",results.style.display="none");var searchEl=this._searchOverlay.querySelector("rev-predictive-search");searchEl&&searchEl.classList.remove("rev-search--open");return}this._searchOverlay.contains(document.activeElement)&&document.activeElement.blur(),this._searchOverlay.classList.remove("rev-search-overlay--open"),this._searchOverlay.setAttribute("aria-hidden","true");var input=this._searchOverlay.querySelector('input[type="search"]');input&&(input.value="");var results=this._searchOverlay.querySelector(".rev-search__results");results&&(results.innerHTML="",results.style.display="none");var searchEl=this._searchOverlay.querySelector("rev-predictive-search");searchEl&&searchEl.classList.remove("rev-search--open"),this._persistentInputs&&this._persistentInputs.forEach(function(pInput){pInput.value="";var clearBtn=pInput.closest(".rev-search").querySelector(".rev-search__clear");clearBtn&&(clearBtn.hidden=!0)})}}}customElements.define("rev-header-nav",RevHeaderNav)})(),(function(){"use strict";if(customElements.get("rev-predictive-search"))return;class RevPredictiveSearch extends HTMLElement{constructor(){super(),this._input=null,this._results=null,this._clearBtn=null,this._form=null,this._loading=null,this._abortController=null,this._debounceTimer=null,this._isOpen=!1,this._cachedResults={}}connectedCallback(){if(!this.classList.contains("rev-search--persistent")){var init=()=>{this._initialized||(this._input=this.querySelector('input[type="search"]'),this._results=this.querySelector(".rev-search__results"),this._clearBtn=this.querySelector(".rev-search__clear"),this._form=this.querySelector("form"),this._loading=this.querySelector(".rev-search__loading"),!(!this._input||!this._results)&&(this._initialized=!0,this._bindEvents()))};requestAnimationFrame(()=>
47{this.querySelector('input[type="search"]')?init():document.readyState==="loading"?document.addEventListener("DOMContentLoaded",init):setTimeout(init,50)})}}disconnectedCallback(){this._abortController&&this._abortController.abort(),clearTimeout(this._debounceTimer)}_bindEvents(){var self=this;this._input.addEventListener("input",function(){clearTimeout(self._debounceTimer);var query=self._input.value.trim();if(self._clearBtn&&(self._clearBtn.hidden=query.length===0),query.length===0){self._close();return}query.length<2||(self._debounceTimer=setTimeout(function(){self._fetchResults(query)},300))}),this._clearBtn&&this._clearBtn.addEventListener("click",function(){self._input.value="",self._clearBtn.hidden=!0,self._close(),self._input.focus()}),this._form.addEventListener("submit",function(e){var query=self._input.value.trim();query.length===0&&e.preventDefault()}),this.classList.contains("rev-search--overlay")||document.addEventListener("click",function(e){self._isOpen&&!self.contains(e.target)&&self._close()}),this._input.addEventListener("keydown",function(e){e.key==="Escape"?(self._close(),self._input.blur()):e.key==="ArrowDown"&&(e.preventDefault(),self._focusFirstResult())}),this._results.addEventListener("keydown",function(e){if(e.key==="Escape"){self._close(),self._input.focus();return}var focusable=self._results.querySelectorAll("a, button"),current=document.activeElement,index=Array.prototype.indexOf.call(focusable,current);e.key==="ArrowDown"?(e.preventDefault(),index<focusable.length-1&&focusable[index+1].focus()):e.key==="ArrowUp"&&(e.preventDefault(),index>0?focusable[index-1].focus():self._input.focus())}),this._input.addEventListener("focus",function(){var query=self._input.value.trim();query.length>=2&&self._results.innerHTML.trim().length>0&&self._open()})}_fetchResults(query){var self=this;if(this._cachedResults[query]){this._renderResults(this._cachedResults[query]);return}this._abortController&&this._abortController.abort(),this._abortController=new AbortController,this._setLoading(!0);var root=window.Shopify&&window.Shopify.routes&&window.Shopify.routes.root?window.Shopify.routes.root:"/",url=root+"search/suggest?q="+encodeURIComponent(query)+"&resources[type]=product,collection,page,article,query&resources[options][fields]=title,vendor,product_type,variants.title,variants.sku,tag&resources[limit]=10&resources[limit_scope]=each&resources[options][unavailable_products]=last&section_id=rev-predictive-search";fetch(url,{signal:this._abortController.signal}).then(function(response){if(!response.ok)throw new Error(response.status);return response.text()}).then(function(text){var parsed=new DOMParser().parseFromString(text,"text/html"),section=parsed.querySelector("#shopify-section-rev-predictive-search"),html=section?section.innerHTML:"";self._cachedResults[query]=html,self._renderResults(html)}).catch(function(error){error.name!=="AbortError"&&self._close()}).finally(function(){self._setLoading(!1)})}_renderResults(html){this._results.innerHTML=html,html.trim().length>0?(this._open(),this._bindTabs(),this._initProductCards()):this._close()}_initProductCards(){typeof initVariantSelectorState2=="function"&&initVariantSelectorState2(this._results)}_bindTabs(){var results=this._results,tabs=results.querySelectorAll("[data-rev-search-tab]");
47tabs.length&&tabs.forEach(function(tab){tab.addEventListener("click",function(){var target=tab.getAttribute("data-rev-search-tab");results.querySelectorAll("[data-rev-search-tab]").forEach(function(t){t.classList.remove("rev-search__tab--active"),t.setAttribute("aria-selected","false")}),results.querySelectorAll("[data-rev-search-panel]").forEach(function(p){p.classList.remove("rev-search__tab-panel--active")}),tab.classList.add("rev-search__tab--active"),tab.setAttribute("aria-selected","true");var panel=results.querySelector('[data-rev-search-panel="'+target+'"]');panel&&panel.classList.add("rev-search__tab-panel--active")})})}_open(){this._isOpen=!0,this._results.style.display="block",this._input.setAttribute("aria-expanded","true"),this.classList.add("rev-search--open")}_close(){this._isOpen=!1,this._results.style.display="none",this._input.setAttribute("aria-expanded","false"),this.classList.remove("rev-search--open")}_setLoading(state){this._loading&&(this._loading.style.display=state?"flex":"none")}_focusFirstResult(){var first=this._results.querySelector("a, button");first&&first.focus()}}customElements.define("rev-predictive-search",RevPredictiveSearch)})(),(()=>{class RevQuiz{constructor(container){this.container=container,this.steps=Array.from(this.container.querySelectorAll(".rev-quiz-step")),this.progressBar=this.container.querySelector(".rev-quiz-progress-bar"),this.stepCurrentEl=this.container.querySelector(".rev-step-current"),this.stepPercentageEl=this.container.querySelector(".rev-step-percentage"),this.prevBtn=this.container.querySelector(".rev-quiz-prev"),this.questionsContainer=this.container.querySelector(".rev-quiz-questions"),this.currentStep=0,this.answers={},this.resultLink=null,this.init()}init(){if(this.steps.length===0)return;this.updateUI(),this.container.querySelectorAll(".rev-quiz-option").forEach(option=>{option.addEventListener("click",e=>{const stepIndex=parseInt(e.currentTarget.closest(".rev-quiz-step").dataset.step);this.answers[stepIndex]=e.currentTarget.dataset.value;const resultLink=e.currentTarget.dataset.resultLink;resultLink&&(this.resultLink=resultLink),e.currentTarget.parentElement.querySelectorAll(".rev-quiz-option").forEach(sib=>sib.classList.remove("rev-selected")),e.currentTarget.classList.add("rev-selected"),setTimeout(()=>this.nextStep(),150)})}),this.prevBtn&&this.prevBtn.addEventListener("click",()=>this.prevStep());const klaviyoForm=this.container.querySelector(".rev-quiz-klaviyo-form");klaviyoForm&&klaviyoForm.addEventListener("submit",e=>{e.preventDefault();const selectionsInput=klaviyoForm.querySelector(".rev-quiz-selections-input");selectionsInput&&(selectionsInput.value=JSON.stringify(this.answers));const submitBtn=klaviyoForm.querySelector('button[type="submit"]'),originalText=submitBtn.innerHTML;submitBtn.innerHTML="<span>Submitting...</span>",submitBtn.disabled=!0;const klaviyoListId=klaviyoForm.querySelector('input[name="g"]'),hasKlaviyo=klaviyoListId&&klaviyoListId.value.trim()!=="",emailInput=klaviyoForm.querySelector('input[name="email"]'),email=emailInput?emailInput.value.trim():"",formattedSelections=Object.keys(this.answers).map(key=>`Step ${parseInt(key)+1}: ${this.answers[key]}`).join(" | ");if(hasKlaviyo){const formData=new URLSearchParams;for(const pair of new FormData(klaviyoForm))formData.append(pair[0],pair[1]);fetch(klaviyoForm.action,{method:"POST",body:formData,headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(res=>{this.handleLeadCaptureSuccess(klaviyoForm)}).catch(err=>{console.error("Klaviyo submission error",err),this.handleLeadCaptureSuccess(klaviyoForm)}).finally(()=>{submitBtn.innerHTML=originalText,submitBtn.disabled=!1})}else{const shopifyData=new URLSearchParams;shopifyData.append("form_type","customer"),shopifyData.append("utf8","\u2713"),shopifyData.append("customer[email]",email),shopifyData.append("customer[tags]","newsletter,quiz"),formattedSelections&&shopifyData.append("customer[note]","Quiz Selections: "+formattedSelections),fetch("/contact#contact_form",{method:"POST",body:shopifyData,headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(res=>{this.handleLeadCaptureSuccess(klaviyoForm)}
47).catch(err=>{console.error("Shopify customer signup error",err),this.handleLeadCaptureSuccess(klaviyoForm)}).finally(()=>{submitBtn.innerHTML=originalText,submitBtn.disabled=!1})}})}handleLeadCaptureSuccess(form){if(this.resultLink){window.location.href=this.resultLink;return}const step=form.closest(".rev-quiz-step"),successMsg=step.querySelector(".rev-quiz-lead-success"),leadContent=step.querySelector(".rev-quiz-lead-content");successMsg&&(leadContent&&(leadContent.style.display="none"),successMsg.style.display="block",this.progressBar&&(this.progressBar.style.width="100%"),this.stepPercentageEl&&(this.stepPercentageEl.textContent="100"),this.prevBtn&&(this.prevBtn.style.display="none"))}nextStep(){const selectionsInput=this.container.querySelector(".rev-quiz-selections-input");if(selectionsInput){const formattedAnswers=Object.keys(this.answers).map(key=>`Step ${parseInt(key)+1}: ${this.answers[key]}`).join(" | ");selectionsInput.value=formattedAnswers}this.currentStep<this.steps.length-1&&(this.currentStep++,this.updateUI())}prevStep(){this.currentStep>0&&(this.currentStep--,this.updateUI())}updateUI(){this.steps.forEach((step,index)=>{index===this.currentStep?step.classList.add("rev-active"):step.classList.remove("rev-active")});const progress=this.currentStep/this.steps.length*100;this.progressBar&&(this.progressBar.style.width=`${progress}%`),this.stepCurrentEl&&(this.stepCurrentEl.textContent=this.currentStep+1),this.stepPercentageEl&&(this.stepPercentageEl.textContent=Math.round(progress)),this.prevBtn&&(this.prevBtn.style.display=this.currentStep>0?"inline-flex":"none")}}const initQuizzes=()=>{document.querySelectorAll(".rev-quiz-section:not(.rev-quiz-initialized)").forEach(quiz=>{quiz.classList.add("rev-quiz-initialized"),new RevQuiz(quiz)})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initQuizzes):initQuizzes(),window.Shopify&&window.Shopify.designMode&&document.addEventListener("shopify:section:load",initQuizzes)})()}
48//# sourceMappingURL=/cdn/shop/t/189/assets/revflare.js.map?v=117339355724849737401789635872

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.