PageSourceSearch

https://deboerswim.com/cdn/shop/t/38/compiled_assets/scripts.js?v=176388328866232865891790110034

js deboerswim.com collected 2026-10-06 09:04:14 UTC 186,359 bytes, 12 lines download raw bytes

1(function(){var __sections__={};(function(){for(var i=0,s=document.getElementById("sections-script").getAttribute("data-sections").split(",");i<s.length;i++)__sections__[s[i]]=!0})(),(function(){if(!(!__sections__["deboer-accessories"]&&!Shopify.designMode))try{if(!customElements.get("deboer-giftcard")){class DeboerGiftcard extends HTMLElement{constructor(){super(),this.dens=Array.prototype.slice.call(this.querySelectorAll(".den")),this.gval=this.querySelector("[data-gval]"),this.add=this.querySelector("[data-gadd]"),this.variant=this.getAttribute("data-variant")||"",this.amount=parseInt(this.getAttribute("data-default"),10)||0,this.defaultLabel=this.add?this.add.textContent:"",this.dens.forEach(d=>{d.addEventListener("click",()=>this.select(d))}),this.add&&this.add.addEventListener("click",()=>this.addToCart())}priceLabel(){const on=this.dens.find(d=>d.classList.contains("on"));return on&&on.dataset.label||"$"+this.amount}select(el){this.dens.forEach(x=>x.classList.remove("on")),el.classList.add("on"),this.amount=parseInt(el.getAttribute("data-v"),10)||0;const price=this.priceLabel();this.gval&&(this.gval.textContent=price+" \xB7 "+(this.dataset.tGiftCard||"Gift card")),this.add&&(this.add.classList.remove("added"),this.add.textContent=(this.dataset.tAdd||"Add to cart \u2014 [price]").replace("[price]",price))}flash(){if(!this.add)return;const price=this.priceLabel();this.add.classList.add("added"),this.add.textContent=(this.dataset.tAdded||"\u2713 Added \u2014 [price] gift card").replace("[price]",price),setTimeout(()=>{this.add.classList.remove("added"),this.add.textContent=(this.dataset.tAdd||"Add to cart \u2014 [price]").replace("[price]",price)},2200)}flashError(msg){if(!this.add)return;const price=this.priceLabel();this.add.classList.remove("added"),this.add.classList.add("failed"),this.add.textContent=msg||this.dataset.tAddError||"Could not add \u2014 please try again",setTimeout(()=>{this.add.classList.remove("failed"),this.add.textContent=(this.dataset.tAdd||"Add to cart \u2014 [price]").replace("[price]",price)},3200)}addToCart(){if(!this.variant){if(window.Shopify&&Shopify.designMode){this.flash();return}this.flashError(this.dataset.tGiftUnavailable||"Gift cards are not available right now");return}const body={items:[{id:Number(this.variant),quantity:1,properties:{Amount:"$"+this.amount}}]};fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(body)}).then(r=>r.json().then(data=>({ok:r.ok,data}))).then(({ok,data})=>{if(!ok){this.flashError(data&&(data.description||data.message)||void 0);return}this.flash(),document.dispatchEvent(new CustomEvent("cart:refresh",{bubbles:!0}))}).catch(()=>this.flashError())}}customElements.define("deboer-giftcard",DeboerGiftcard)}}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-anfi"]&&!Shopify.designMode))try{if(!customElements.get("deboer-anfi-week")){class DeboerAnfiWeek extends HTMLElement{connectedCallback(){if(this._init)return;this._init=!0;const tabs=Array.from(this.querySelectorAll(".anfi-wk__tab")),panels=Array.from(this.querySelectorAll(".anfi-wk__panel")),select=tab=>{tabs.forEach(t=>{const on=t===tab;t.classList.toggle("is-on",on),t.setAttribute("aria-selected",String(on)),t.tabIndex=on?0:-1}),panels.forEach(p=>{const on=p.dataset.panel===tab.dataset.day;p.classList.toggle("is-on",on),p.hidden=!on})};tabs.forEach((t,i)=>{t.addEventListener("click",()=>select(t)),t.addEventListener("keydown",e=>{if(e.key!=="ArrowLeft"&&e.key!=="ArrowRight")return;e.preventDefault();const dir=e.key==="ArrowRight"?1:-1,next=tabs[(i+dir+tabs.length)%tabs.length];select(next),next.focus()})})}}customElements.define("deboer-anfi-week",DeboerAnfiWeek)}}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-announcement"]&&!Shopify.designMode))try{(function(){if(customElements.get("deboer-announcement"))return;class DeboerAnnouncement extends HTMLElement{connectedCallback(){var std=parseInt(this.getAttribute("data-std-days")||"8",10),now=new Date;now.setHours(0,0,0,0);var lang=document.documentElement.lang||"en",fmt;try{var dtf=new Intl.DateTimeFormat(lang,{month:"short",day:"numeric"});fmt=function(d){return dtf.format(d)}}catch{fmt=function(d){return d.getMonth()+1+"/"+d.getDate()}}var races=[].slice.call(this.querySelectorAll("[data-ann-race]")),picked=null;
1if(races.forEach(function(li){var d=new Date(li.getAttribute("data-date")+"T00:00:00"),s=new Date(d);if(s.setDate(s.getDate()-std),!picked&&d>=now&&s>=now){picked=li;var a=li.querySelector("[data-ann-race-text]");a.textContent=a.textContent.replace("[std]",fmt(s)),li.hidden=!1}else li.remove()}),this.classList.toggle("has-race",!!picked),!this.querySelector("[data-ann-item]")){this.remove();return}}}customElements.define("deboer-announcement",DeboerAnnouncement)})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-athlete-grid"]&&!Shopify.designMode))try{class DeboerAthleteGrid extends HTMLElement{constructor(){if(super(),this.chips=Array.from(this.querySelectorAll(".ath__chip")),this.cards=Array.from(this.querySelectorAll(".ath__card")),this.empty=this.querySelector(".ath__empty"),!this.chips.length)return;this.countChips(),this.chips.forEach(c=>c.addEventListener("click",()=>this.filter(c.dataset.sport)));const want=new URLSearchParams(location.search).get("tab")||location.hash.replace("#","");(want==="swim"||want==="tri")&&this.filter(want)}countChips(){this.chips.forEach(chip=>{const s=chip.dataset.sport,n=s==="all"?this.cards.length:this.cards.filter(c=>c.dataset.sport===s).length,el=chip.querySelector(".ath__chip-n");el&&(el.textContent=n)})}filter(sport){this.chips.forEach(c=>{const on=c.dataset.sport===sport;c.classList.toggle("is-on",on),c.setAttribute("aria-pressed",String(on))});let shown=0;this.cards.forEach(card=>{const match=sport==="all"||card.dataset.sport===sport;card.hidden=!match,match&&shown++}),this.empty&&(this.empty.hidden=shown!==0)}}customElements.define("deboer-athlete-grid",DeboerAthleteGrid)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-athletes-hero"]&&!Shopify.designMode))try{document.querySelectorAll('.ahero__cta a[href^="#"]').forEach(a=>{a.addEventListener("click",e=>{const target=document.querySelector(a.getAttribute("href"));if(!target)return;e.preventDefault();const reduce=window.matchMedia("(prefers-reduced-motion: reduce)").matches;target.scrollIntoView({behavior:reduce?"auto":"smooth",block:"start"})})})}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-blog-archive"]&&!Shopify.designMode))try{(function(){var root=document.querySelector("[data-deboer-archive]");if(!root)return;var q=root.querySelector("[data-arch-q]"),yearsWrap=root.querySelector("[data-arch-years]"),countEl=root.querySelector("[data-arch-count]"),emptyEl=root.querySelector("[data-arch-empty]"),groups=Array.prototype.slice.call(root.querySelectorAll("[data-arch-group]")),rows=Array.prototype.slice.call(root.querySelectorAll("[data-arch-row]")),total=rows.length,curYear="all";if(yearsWrap){var years=groups.map(function(g){return g.getAttribute("data-arch-group")});yearsWrap.innerHTML=years.map(function(y){return'<button class="yrbtn" type="button" data-arch-year="'+y+'">'+y+"</button>"}).join("")}function render(){var term=(q&&q.value||"").toLowerCase().trim(),visible=0;rows.forEach(function(r){var okYear=curYear==="all"||r.getAttribute("data-year")===curYear,okTerm=!term||(r.getAttribute("data-search")||"").indexOf(term)>-1,show=okYear&&okTerm;r.hidden=!show,show&&visible++}),groups.forEach(function(g){var vis=g.querySelectorAll("[data-arch-row]:not([hidden])").length;g.hidden=vis===0;var c=g.querySelector("[data-arch-groupcount]");c&&(c.textContent=vis+(vis===1?" post":" posts"))}),countEl&&(countEl.textContent=visible+" of "+total+" posts"),emptyEl&&(emptyEl.hidden=visible!==0)}root.addEventListener("click",function(e){var b=e.target.closest("[data-arch-year]");b&&(root.querySelectorAll("[data-arch-year]").forEach(function(x){x.classList.toggle("is-on",x===b)}),curYear=b.getAttribute("data-arch-year"),render())}),q&&q.addEventListener("input",render),render()})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-bundle"]&&!Shopify.designMode))try{class DeboerBundle extends HTMLElement{connectedCallback(){if(this._wired)return;this._wired=!0;const root=this,moneyFormat=root.dataset.moneyformat||"$",order=["gender","training","performance","cap","care","review"],state={gender:null,discipline:"racing",training:null,performance:null,cap:null,care:null,current:"gender"};let intlMoney=null;try{if(window.Shopify&&Shopify.currency&&Shopify.currency.active){const nf=new Intl.NumberFormat(document.documentElement.lang||"en",{style:"currency",currency:Shopify.currency.active});intlMoney=cents=>nf.format(cents/100)}}catch{}const formatMoneyLegacy=cents=>{const value=cents/100,fmt=moneyFormat,withComma=(n,decimals)=>{const parts=n.toFixed(decimals).split(".");return parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),parts.join(".")},replacer=(match,type)=>{switch(type){case"amount":return withComma(value,2);case"amount_no_decimals":return withComma(value,0);case"amount_with_comma_separator":return value.toFixed(2).replace(".",",").replace(/\B(?=(\d{3})+(?!\d))/g,".");case"amount_no_decimals_with_comma_separator":return Math.round(value).toString().replace(/\B(?=(\d{3})+(?!\d))/g,".");default:return withComma(value,2)}};return/\{\{\s*(\w+)\s*\}\}/.test(fmt)?fmt.replace(/\{\{\s*(\w+)\s*\}\}/g,replacer):"$"+withComma(value,2)},formatMoney=cents=>intlMoney?intlMoney(cents):formatMoneyLegacy(cents),genderOf=card=>card.dataset.bnGender||"both",allCards=Array.from(root.querySelectorAll("[data-bn-card]")),applyGenderFilter=()=>{const g=state.gender;root.querySelectorAll("[data-bn-pool]").forEach(pool=>{let visible=0;pool.querySelectorAll("[data-bn-card]").forEach(card=>{const cg=genderOf(card),show=!g||cg==="both"||cg===g;card.hidden=!show,show&&visible++,!show&&card.classList.contains("on")&&
1clearSelection(card.dataset.bnGroup)});const key=pool.dataset.bnPool,empty=root.querySelector('[data-bn-empty="'+key+'"]');empty&&(empty.hidden=visible!==0)})},clearSelection=group=>{root.querySelectorAll('[data-bn-card][data-bn-group="'+group+'"]').forEach(c=>{c.classList.remove("on"),c.querySelectorAll("[data-bn-vbtn]").forEach(v=>v.classList.remove("on"))}),state[group]=null,refresh()},pickVariant=(card,vbtn)=>{const group=card.dataset.bnGroup;card.querySelectorAll("[data-bn-vbtn]").forEach(v=>v.classList.remove("on")),vbtn.classList.add("on"),state[group]={productId:card.dataset.bnProduct,title:card.dataset.bnTitle,image:card.dataset.bnImage||"",variantId:vbtn.dataset.bnVariant,variantTitle:vbtn.dataset.bnVtitle,price:parseInt(vbtn.dataset.bnPrice,10)||0},refresh()};allCards.forEach(card=>{const group=card.dataset.bnGroup,vbtns=Array.from(card.querySelectorAll("[data-bn-vbtn]"));card.querySelector("[data-bn-card-pick]").addEventListener("click",()=>{if(card.dataset.bnUnavailable)return;if(root.querySelectorAll('[data-bn-card][data-bn-group="'+group+'"]').forEach(c=>{c!==card&&(c.classList.remove("on"),c.querySelectorAll("[data-bn-vbtn]").forEach(v=>v.classList.remove("on")))}),card.classList.contains("on")){clearSelection(group);return}card.classList.add("on");const avail=vbtns.filter(v=>!v.disabled);avail.length===1?pickVariant(card,avail[0]):(state[group]=null,refresh())}),vbtns.forEach(vbtn=>{vbtn.disabled||vbtn.addEventListener("click",e=>{e.stopPropagation(),card.classList.contains("on")||(root.querySelectorAll('[data-bn-card][data-bn-group="'+group+'"]').forEach(c=>{c!==card&&(c.classList.remove("on"),c.querySelectorAll("[data-bn-vbtn]").forEach(v=>v.classList.remove("on")))}),card.classList.add("on")),pickVariant(card,vbtn)})})}),root.querySelectorAll("[data-bn-gender]").forEach(btn=>{btn.addEventListener("click",()=>{root.querySelectorAll("[data-bn-gender]").forEach(b=>{b.classList.remove("on"),b.setAttribute("aria-checked","false")}),btn.classList.add("on"),btn.setAttribute("aria-checked","true"),state.gender=btn.dataset.bnGender,applyGenderFilter(),refresh()})});const discPanes=root.querySelectorAll("[data-bn-disc-pane]");root.querySelectorAll("[data-bn-disc]").forEach(btn=>{btn.addEventListener("click",()=>{root.querySelectorAll("[data-bn-disc]").forEach(b=>{b.classList.remove("on"),b.setAttribute("aria-checked","false")}),btn.classList.add("on"),btn.setAttribute("aria-checked","true");const disc=btn.dataset.bnDisc;if(disc!==state.discipline){clearSelection("performance"),state.care=null;const careAddon=root.querySelector('[data-bn-addon="care"]');careAddon&&careAddon.classList.remove("on")}state.discipline=disc,discPanes.forEach(p=>{p.hidden=p.dataset.bnDiscPane!==disc}),refresh()})}),root.querySelectorAll("[data-bn-addon]").forEach(addon=>{const key=addon.dataset.bnAddon,yes=addon.querySelector("[data-bn-addon-yes]"),no=addon.querySelector("[data-bn-addon-no]");yes&&yes.addEventListener("click",()=>{addon.classList.add("on");const nm=addon.querySelector(".deboer-bn__addon-name");state[key]={title:nm?nm.textContent.trim():key==="cap"?"Cap":"deboer Care",variantId:root.dataset[key+"Id"],price:parseInt(root.dataset[key+"Price"],10)||0},refresh()}),no&&no.addEventListener("click",()=>{addon.classList.remove("on"),state[key]=null,refresh()})});const steps={};root.querySelectorAll("[data-bn-step]").forEach(s=>{steps[s.dataset.bnStep]=s});const psteps={};root.querySelectorAll("[data-bn-pstep]").forEach(p=>{psteps[p.dataset.bnPstep]=p});const activeSteps=()=>{const careOn=state.discipline==="tri"&&!!state.performance&&!!root.dataset.careId;return order.filter(s=>s!=="care"||careOn)},headerEl=document.querySelector(".db-nav-wrap"),configEl=root.querySelector(".deboer-bn__config"),scrollToStep=()=>{const target=configEl||root,stickyH=headerEl&&getComputedStyle(headerEl).position==="sticky"?headerEl.offsetHeight:0,top=target.getBoundingClientRect().top+window.pageYOffset-stickyH-16;window.scrollTo({top:Math.max(0,top),behavior:"smooth"})},showStep=(name,doScroll=!0)=>{const list=activeSteps();list.indexOf(name)===-1&&(name="review"),state.current=name,window.deboer&&deboer.track&&deboer.track("build_kit_step",{step:name,step_index:list.indexOf(name)+1}
1),Object.keys(steps).forEach(k=>{steps[k].hidden=k!==name});const careOn=activeSteps().indexOf("care")!==-1;psteps.care&&(psteps.care.hidden=!careOn);const idx=list.indexOf(name);list.forEach((k,i)=>{const p=psteps[k];p&&(p.classList.toggle("on",i===idx),p.classList.toggle("done",i<idx))}),doScroll&&scrollToStep(),refresh()},canAdvance=name=>name==="gender"?!!state.gender:name==="training"?!!state.training:name==="performance"?!!state.performance:!0;root.querySelectorAll("[data-bn-next]").forEach(btn=>{btn.addEventListener("click",()=>{const list=activeSteps(),i=list.indexOf(state.current);i<list.length-1&&showStep(list[i+1])})}),root.querySelectorAll("[data-bn-back]").forEach(btn=>{btn.addEventListener("click",()=>{const list=activeSteps(),i=list.indexOf(state.current);i>0&&showStep(list[i-1])})}),root.querySelectorAll("[data-bn-pstep]").forEach(p=>{p.addEventListener("click",()=>{const target=p.dataset.bnPstep,list=activeSteps(),ti=list.indexOf(target),ci=list.indexOf(state.current);if(ti!==-1){if(ti<=ci){showStep(target);return}for(let k=0;k<ti;k++)if(!canAdvance(list[k]))return;showStep(target)}})});const summaryEl=root.querySelector("[data-bn-summary]"),sumEmpty=root.querySelector("[data-bn-sum-empty]"),totalEl=root.querySelector("[data-bn-total]"),reviewEl=root.querySelector("[data-bn-review]"),railBtn=root.querySelector("[data-bn-rail-checkout]"),lineItems=()=>{const order2=["training","performance","cap","care"],labels={training:"Training suit",performance:state.discipline==="tri"?"Wetsuit":"Racing suit",cap:"Cap",care:"Coverage"};return order2.filter(k=>state[k]).map(k=>({key:k,label:labels[k],...state[k]}))},refresh=()=>{const items=lineItems();items.length===0?summaryEl.innerHTML='<li class="deboer-bn__sum-empty" data-bn-sum-empty>Nothing selected yet \u2014 start with your fit.</li>':summaryEl.innerHTML=items.map(it=>'<li><span class="deboer-bn__sum-name">'+escapeHtml(it.title)+(it.variantTitle&&it.variantTitle!=="Default Title"?'<span class="deboer-bn__sum-size">'+escapeHtml(it.variantTitle)+"</span>":"")+'</span><span class="deboer-bn__sum-price">'+formatMoney(it.price)+"</span></li>").join("");const total=items.reduce((sum,it)=>sum+(it.price||0),0);totalEl.textContent=formatMoney(total),reviewEl&&(items.length===0?reviewEl.innerHTML='<li class="deboer-bn__review-empty">Your kit is empty \u2014 go back and pick a suit.</li>':reviewEl.innerHTML=items.map(it=>"<li>"+(it.image?'<img class="deboer-bn__review-thumb" src="'+it.image+'" alt="" width="56" height="70" loading="lazy">':'<span class="deboer-bn__review-thumb"></span>')+'<span class="deboer-bn__review-meta"><span class="deboer-bn__review-name">'+escapeHtml(it.title)+'</span><span class="deboer-bn__review-sub">'+escapeHtml(it.label)+(it.variantTitle&&it.variantTitle!=="Default Title"?" \xB7 "+escapeHtml(it.variantTitle):"")+'</span></span><span class="deboer-bn__review-price">'+formatMoney(it.price)+"</span></li>").join(""));const ready=items.length>0;railBtn&&(railBtn.disabled=!ready);const reviewBtn=root.querySelector("[data-bn-checkout]");reviewBtn&&(reviewBtn.disabled=!ready);const cur=steps[state.current];if(cur){const next=cur.querySelector("[data-bn-next]");next&&(next.disabled=!canAdvance(state.current))}},escapeHtml=s=>String(s??"").replace(/[&<>"']/g,c=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[c]),msgEl=root.querySelector("[data-bn-msg]"),showMsg=text=>{msgEl&&(msgEl.textContent=text,msgEl.hidden=!text)},doCheckout=triggerBtn=>{const items=lineItems().filter(it=>it.variantId);if(items.length===0){showMsg("Pick at least one suit before checking out.");return}showMsg("");const payload={items:items.map(it=>({id:Number(it.variantId),quantity:1}))};triggerBtn&&triggerBtn.classList.add("is-loading");const target=root.dataset.checkoutTarget==="cart"?"/cart":"/checkout";fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(payload)}).then(res=>res.json().then(data=>({ok:res.ok,status:res.status,data}))).then(({ok,data})=>{if(!ok){const desc=data&&(data.description||data.message)||"Something went wrong adding your kit.";showMsg(desc+" Please adjust your selection and try again."),triggerBtn&&triggerBtn.classList.remove("is-loading");return}window.deboer&&deboer.track&&deboer.track("build_kit_add",{count:items.length}),window.location.href=target}).catch(()=>{showMsg("Network error \u2014 could not reach the cart. Please try again."),triggerBtn&&triggerBtn.classList.remove("is-loading")})};root.querySelectorAll("[data-bn-checkout]").forEach(b=>b.addEventListener("click",()=>doCheckout(b))),railBtn&&railBtn.addEventListener("click",()=>{doCheckout(railBtn)}),showStep("gender",!1),refresh()}}customElements.get("deboer-bundle")||customElements.define("deboer-bundle",DeboerBun
1dle)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-compare"]&&!Shopify.designMode))try{class DeboerCompare extends HTMLElement{constructor(){super(),this.SETS={wet:{cols:[{nm:"Fjord 4.0",cat:"Wetsuit \xB7 High buoyancy",pr:"$799",img:"suit-fjord40.png",href:"/products/mens-fjord-4-0",flag:"Flagship"},{nm:"Tidal",cat:"Wetsuit \xB7 Balanced buoyancy",pr:"$599",img:"suit-tidal.png",href:"/products/mens-tidal-wetsuit"},{nm:"Tsunami",cat:"Wetsuit \xB7 Sleeveless",pr:"$399",img:"suit-tsunami.png",href:"/products/mens-tsunami-4-0"}],rows:[{l:"In one line",v:["The fastest suit we\u2019ve built","The forgiving everyday suit","Total shoulder freedom"]},{l:"Buoyancy",v:["High \xB7 4mm core","Balanced \xB7 3mm core","Core & hip \xB7 sleeveless"]},{l:"Lift",bar:[95,70,55]},{l:"Shoulder freedom",bar:[80,75,100]},{l:"Warmth",bar:[85,75,45]},{l:"Construction",v:["Single-seam front panel","Single-seam front panel","Single-seam front panel"]},{l:"Shoulders",v:["1.5mm sleeve","1.5mm sleeve","Open \xB7 unrestricted"]},{l:"Water temp",v:["10\u201324\xB0C","14\u201324\xB0C","20\xB0C and up"]},{l:"Best for",v:["Racing open water \xB7 triathlon","First seasons \xB7 open water","Warm water \xB7 stroke-first swimmers"]},{l:"Sizes",v:["XS\u2013XL \xB7 7 sizes","XS\u2013XL \xB7 7 sizes","XS\u2013XL \xB7 7 sizes"]}]},race:{cols:[{nm:"Speed 1.0",cat:"Signature jammer \xB7 Men",pr:"$450",img:"suit-speed10.png",href:"/products/caeleb-dressels-speed-1-0-technical-racing-swimsuit",flag:"Signature"},{nm:"Mix 1.0",cat:"Signature jammer \xB7 Men",pr:"Coming soon",img:"suit-mix10.jpg",href:"/collections/swim-racing",flag:"New \xB7 Coming soon",cta:"See race suits \u2192"},{nm:"Swell",cat:"Kneeskin \xB7 Open back",pr:"$549",img:"suit-swell.png",href:"/products/womens-3dium-openback"},{nm:"Glide",cat:"Kneeskin \xB7 Closed back",pr:"$549",img:"suit-glide.png",href:"/products/womens-3dium-closed-back-tech-suit"},{nm:"Cove",cat:"Race jammer \xB7 Men",pr:"$389",img:"suit-cove.png",href:"/products/mens-3dium-jammer-tech-suit"}],rows:[{l:"In one line",v:["Our flagship signature jammer","Our newest \u2014 re-tuned panel map, signal-blue stitch","Open back \u2014 the stroke stays yours","Closed back \u2014 maximum hold","Race-tight, club-priced"]},{l:"Cut",v:["Jammer \xB7 Men","Jammer \xB7 Men","Kneeskin \xB7 Women","Kneeskin \xB7 Women","Jammer \xB7 Men"]},{l:"Compression",v:["Maximum","Maximum \xB7 re-tuned map","High","Maximum hold","High"]},{l:"Compression",bar:[100,100,80,95,80],skipLabelDupe:!0},{l:"Construction",v:["Bonded seam","Bonded seam \xB7 blue stitch","Bonded seam","Bonded seam","Bonded seam"]},{l:"Approval",v:["World Aquatics","World Aquatics","World Aquatics","World Aquatics","World Aquatics"]},{l:"Best for",v:["Sprint \xB7 finals","The full program \xB7 sprint to middle","Fly & back \xB7 stroke-heavy events","Sprint & middle distance","Club racing \xB7 every event"]},{l:"Worn by",v:["The pro roster","The pro roster","Torri Huske","Claire Curzan","Daniel Wiffen"]},{l:"Sizes",v:["22\u201332 waist","22\u201332 waist","22\u201332","22\u201332","22\u201332 waist"]}]}},this.grid=this.querySelector("[data-grid]"),this.tabs=Array.prototype.slice.call(this.querySelectorAll(".tab")),this.diffT=this.querySelector("[data-diff]"),this.assetBase=this.getAttribute("data-asset-base")||"",this.compact=this.hasAttribute("data-compact");try{const island=this.querySelector("[data-cmp-products]"),live=island?JSON.parse(island.textContent):null;live&&["wet","race"].forEach(set=>{(live[set]||[]).forEach((ov,i)=>{ov&&this.SETS[set].cols[i]&&Object.assign(this.SETS[set].cols[i],ov)})})}catch{}const def=this.getAttribute("data-default-set")==="race"?"race":"wet",param=this.compact?null:new URLSearchParams(location.search).get("set");this.cur=param==="race"?"race":param==="wet"?"wet":def,this.tabs.forEac
1h(t=>{t.addEventListener("click",()=>this.setTab(t.getAttribute("data-set"))),t.addEventListener("keydown",e=>{if(e.key!=="ArrowLeft"&&e.key!=="ArrowRight")return;e.preventDefault();const other=this.tabs.find(x=>x!==t);other&&(this.setTab(other.getAttribute("data-set")),other.focus())})}),this.diffT&&(this.diffT.addEventListener("click",()=>this.toggleDiff()),this.diffT.addEventListener("keydown",e=>{(e.key===" "||e.key==="Enter")&&(e.preventDefault(),this.toggleDiff())})),this.setTab(this.cur)}esc(s){return String(s).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}imgUrl(file){return this.assetBase+file}render(){const S=this.SETS[this.cur],n=S.cols.length;this.grid.style.gridTemplateColumns="170px repeat("+n+",1fr)";let h="";h+='<div class="cmp__cell cmp__lab cmp__head--lab"></div>',S.cols.forEach(c=>{h+='<div class="cmp__cell cmp__head"><div class="phd'+(/signature/i.test(c.cat||"")?" phd--sig":"")+'"><a class="phd__img" href="'+this.esc(c.href)+'">'+(c.flag?'<span class="phd__flag">'+this.esc(c.flag)+"</span>":"")+'<img src="'+this.esc(this.imgUrl(c.img))+'" alt="'+this.esc(c.nm)+'" loading="lazy" /></a><div class="phd__b"><div class="phd__cat">'+this.esc(c.cat)+'</div><h3 class="phd__nm">'+this.esc(c.nm)+'</h3><div class="phd__row"><span class="phd__pr">'+this.esc(c.pr)+'</span><a class="phd__go" href="'+this.esc(c.href)+'">'+this.esc(c.cta||"Shop \u2192")+"</a></div></div></div></div>"});let rows=S.rows;if(this.compact){const keep=["In one line","Cut","Best for","Worn by"];rows=S.rows.filter(r=>r.bar||keep.indexOf(r.l)!==-1)}rows.forEach(r=>{let same;r.bar?same=r.bar.every(x=>x===r.bar[0]):same=r.v.every(x=>x===r.v[0]);const cls=same?" row-same":"";h+='<div class="cmp__cell cmp__lab'+cls+'">'+this.esc(r.l)+"</div>",r.bar?r.bar.forEach(val=>{h+='<div class="cmp__cell'+cls+'"><div class="bar"><i style="width:'+Number(val)+'%"></i></div></div>'}):r.v.forEach(val=>{h+='<div class="cmp__cell'+cls+'">'+this.esc(val)+"</div>"})}),this.grid.innerHTML=h}
1setTab(k){if(this.cur=k==="race"?"race":"wet",this.tabs.forEach(t=>{const on=t.getAttribute("data-set")===this.cur;t.classList.toggle("is-on",on),t.setAttribute("aria-selected",String(on)),t.tabIndex=on?0:-1}),!this.compact)try{const u=new URL(location.href);u.searchParams.set("set",this.cur),history.replaceState(null,"",u)}catch{}this.render()}toggleDiff(){const on=this.diffT.classList.toggle("is-on");this.diffT.setAttribute("aria-checked",on?"true":"false"),this.grid.classList.toggle("is-diff",on),window.deboer&&deboer.track&&deboer.track("compare_diff",{state:on?"on":"off"})}}customElements.get("deboer-compare")||customElements.define("deboer-compare",DeboerCompare)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-fit-guide"]&&!Shopify.designMode))try{(function(){var TAG="deboer-fit-guide",S=window.deboerStrings||{};function esc(s){return String(s??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function slug(s){return String(s??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}var CHART_M=[{k:"XS",h:[156,164],w:[54,65],c:[92,96]},{k:"S",h:[166,172],w:[64,72],c:[94,98]},{k:"ST",h:[172,178],w:[66,72],c:[96,100]},{k:"M",h:[172,178],w:[72,78],c:[98,104]},{k:"MT",h:[178,184],w:[72,78],c:[98,104]},{k:"MT+",h:[182,188],w:[74,80],c:[98,104]},{k:"L",h:[178,184],w:[78,84],c:[104,108]},{k:"LT",h:[184,190],w:[78,84],c:[104,108]},{k:"LT+",h:[190,200],w:[78,86],c:[104,108]},{k:"XL",h:[184,190],w:[84,90],c:[108,116]},{k:"XL+",h:[191,203],w:[86,95],c:[108,116]},{k:"XXL",h:[185,203],w:[95,110],c:[116,124]}],CHART_W=[{k:"FXS",h:[152,158],w:[48,56],c:[88,94]},{k:"FS",h:[158,168],w:[56,62],c:[92,96]},{k:"FST",h:[168,174],w:[56,62],c:[92,96]},{k:"FM",h:[168,174],w:[62,68],c:[94,102]},{k:"FMT",h:[174,180],w:[62,68],c:[94,104]},{k:"FL",h:[174,180],w:[68,74],c:[102,110]},{k:"FXL",h:[178,200],w:[74,110],c:[110,130]}];function rangeDist(v,r){return v<r[0]?r[0]-v:v>r[1]?v-r[1]:0}function sizeRec(gender,h,w,c){var chart=gender==="women"?CHART_W:CHART_M,scored=chart.map(function(r){return{k:r.k,r,s:rangeDist(h,r.h)/4+rangeDist(w,r.w)/3+(c?rangeDist(c,r.c)/4:0)}}).sort(function(a,b){return a.s-b.s}),best=scored[0],second=scored[1],between=best.s>.01||second.s-best.s<.34,offChart=best.s>2.5;return{primary:best.k,row:best.r,secondary:between&&!offChart?second.k:null,between,offChart}}function cutNote(k){return k?/\+$/.test(k)?"<b>"+esc(k)+"</b> is a Tall+ cut \u2014 the same build volume in our longest length, for the height band above "+esc(k.replace("+",""))+".":/T$/.test(k)&&k!=="FXL"?"<b>"+esc(k)+"</b> is a Tall cut \u2014 the same volume as "+esc(k.slice(0,-1))+", with a longer torso and legs for your height.":"":""}class DeboerFitGuide extends HTMLElement{focusStep(){if(!(Date.now()-(this._nav||0)>1200)){var h=this.stage.querySelector(".step__q");h&&(h.setAttribute("tabindex","-1"),h.focus({preventScroll:!0}))}}connectedCallback(){if(!this._init){this._init=!0,this.addEventListener("click",()=>{this._nav=Date.now()},!0),this.addEventListener("submit",()=>{this._nav=Date.now()},!0);var cfgEl=this.querySelector('[data-fg="config"]');try{this.cfg=JSON.parse(cfgEl.textContent)}catch{this.cfg=null}if(this.cfg){this.suitMap={},(this.cfg.suits||[]).forEach(function(su){su&&su.key&&(this.suitMap[su.key]=su)},this),this.stage=this.querySelector('[data-fg="stage"]'),this.count=this.querySelector('[data-fg="count"]'),this.back=this.querySelector('[data-fg="back"]'),this.segs=[].slice.call(this.querySelectorAll(".fg__seg")),this.state={discipline:null,gender:null,q3:null,size:null,sizeBetween:null,sizeBasis:null,sizeSkipped:!1,sizeRow:null,metrics:null},this.metric=!0;var params=new URLSearchParams(location.search);if(params.get("restart")==="1")try{localStorage.removeItem("deboer_fit")}catch{}else try{var sv=JSON.parse(localStorage.getItem("deboer_fit")||"null");sv&&(this.state.discipline=sv.discipline||null,this.state.gender=sv.gender||null,this.state.q3=sv.q3||null,sv.done&&(this.state.size=sv.size||null,this.state.sizeSkipped=!!(sv.sizeSkipped||sv.size),this.state.sizeBasis=sv.sizeBasis||null,this.state.sizeBetween=sv.sizeBetween||null,this.state.trainNum=sv.trainNum||null))}catch{}var preset=this.cfg.preset||this.getAttribute("data-preset")||params.get("sport");
1(preset==="swim"||preset==="tri")&&(this.state.discipline=preset);var self=this;this.back.addEventListener("click",function(){self.state.size!==null||self.state.sizeSkipped?(self.state.size=null,self.state.sizeBetween=null,self.state.sizeSkipped=!1,self.state.sizeRow=null,self.state.metrics=null,self.state.sizeBasis=null,self.state.trainNum=null):self.state.q3!==null?self.state.q3=null:self.state.gender!==null?self.state.gender=null:self.state.discipline!==null&&(self.state.discipline=null),self.render()}),this.render(),window.deboer&&deboer.track&&deboer.track("fit_quiz_start",{preset:preset||"none"})}}}totalSteps(){return this.state.discipline==="tri"||this.state.discipline==="train"?4:3}currentStepNum(){return this.state.discipline?this.state.gender?this.state.q3?(this.state.discipline==="tri"||this.state.discipline==="train")&&!this.state.size&&!this.state.sizeSkipped?4:5:3:2:1}trainChart(){var labels=["XXS","XS","S","M","L","XL","XXL"],nums=[24,26,28,30,32,34,36],women={bust:[[72,82],[82,86],[86,90],[90,94],[94,98],[98,102],[102,106]],waist:[[60,64],[64,68],[68,72],[72,76],[76,80],[80,84],[84,88]],hips:[[84,88],[88,92],[92,96],[96,100],[100,104],[104,108],[108,112]]},men={waist:[[68,72],[72,76],[76,80],[80,84],[84,88],[88,92],[92,96]],hips:[[83,87],[87,91],[91,95],[95,99],[99,103],[103,107],[107,111]]};return{labels,nums,ranges:this.state.gender==="women"?women:men}}trainSizeRec(m){var ch=this.trainChart(),best=[];if(ch.labels.forEach(function(lab,i){var d=0,n=0;Object.keys(m).forEach(function(k){if(!(!m[k]||!ch.ranges[k])){var r=ch.ranges[k][i];n++,m[k]<r[0]?d+=r[0]-m[k]:m[k]>r[1]&&(d+=m[k]-r[1])}}),n&&best.push({i,lab,num:ch.nums[i],d})}),!best.length)return null;best.sort(function(a,b){return a.d-b.d||a.i-b.i});var top=best[0],second=best[1];return{primary:top.lab,num:top.num,secondary:second&&second.d-top.d<=2&&second.d>0?second.lab:null,row:ch.ranges,idx:top.i,offChart:top.d>8}}renderTrainSize(){var self=this,T=this.cfg.trainSize,metric=this.metric,women=this.state.gender==="women",unit=metric?"cm":"in",field=function(id,label){return'<div class="sf__field"><label for="'+self._id(id)+'">'+esc(label)+" <em>"+unit+" \xB7 "+esc(S.fitOptional||"optional")+'</em></label><input id="'+self._id(id)+'" type="number" inputmode="decimal" placeholder="'+(metric?id==="tB"?"90":id==="tW"?"74":"98":id==="tB"?"35":id==="tW"?"29":"38.5")+'" /></div>'};this.stage.innerHTML='<div class="step sizef"><span class="step__ey">'+esc(T.ey)+'</span><h2 class="step__q">'+esc(T.q)+'</h2><p class="step__sub">'+esc(T.sub)+' <a href="'+esc(this.cfg.size.chartUrl)+'">'+esc(this.cfg.size.chartLinkText)+'</a>.</p><div class="unitseg"><button type="button" data-fg="uMet" aria-pressed="'+(metric?"true":"false")+'" class="'+(metric?"on":"")+'">cm</button><button type="button" data-fg="uImp" aria-pressed="'+(metric?"false":"true")+'" class="'+(metric?"":"on")+'">in</button></div><form data-fg="sizeForm"><div class="sizef__grid">'+(women?field("tB",T.bust):"")+field("tW",T.waist)+field("tH",T.hips)+'<div class="sf__field sf__field--hint"><div class="sf__hint">'+esc(T.hint)+'</div></div></div><div class="sf__err" data-fg="sfErr" role="alert" aria-live="assertive">'+esc(T.err)+'</div><div class="sizef__foot"><button class="deboer-btn deboer-btn--ink" type="submit">'+esc(T.submit)+' <span class="ar">\u2192</span></button><button class="sf__skip" type="button" data-fg="sfSkip">'+esc(T.skip)+"</button></div></form></div>",this.focusStep(),this.stage.querySelector('[data-fg="uMet"]').addEventListener("click",function(){self.metric=!0,self.renderTrainSize()}),this.stage.querySelector('[data-fg="uImp"]').addEventListener("click",function(){self.metric=!1,self.renderTrainSize()}),this.stage.querySelector('[data-fg="sfSkip"]').addEventListener("click",function(){self.state.sizeSkipped=!0,window.deboer&&deboer.track&&deboer.track("fit_quiz_step",{step:"train_size",answer:"skipped"}),self.render()}),this.stage.querySelector('[data-fg="sizeForm"]').addEventListener("submit",function(e){e.preventDefault();var g=function(id){var el=self.stage.querySelector("#"+self._id(id)),v=el?parseFloat(el.value):NaN;return v?self.metric?v:v*2.54:0},m={bust:women?g("tB"):0,waist:g("tW"),hips:g("tH")};if(!m.bust&&!m.waist&&!m.hips){self.stage.querySelector('[data-fg="sfErr"]').classList.add("show");return}var rec=self.trainSizeRec(m);self.state.size=rec&&!rec.offChart?rec.primary:null,self.state.sizeBetween=rec?rec.secondary:null,self.state.sizeSkipped=!self.state.size,self.state.trainNum=rec?rec.num:null,self.state.metrics=null,self.state.sizeRow=null,self.state.sizeBasis=[m.bust?Math.round(m.bust)+"cm bust":"",m.waist?Math.round(m.waist)+"cm waist":"",m.hips?Math.round(m.hips)+"cm hips":""].filter(
1Boolean).join(" \xB7 "),window.deboer&&deboer.track&&deboer.track("fit_quiz_step",{step:"train_size",answer:self.state.size||"off_chart"}),self.render()})}setProgress(){var n=this.currentStepNum(),total=this.totalSteps();this.segs.forEach(function(seg,i){seg.classList.toggle("hide",i>=total),seg.classList.toggle("on",n>4?!0:i<n-1)}),this.count.textContent=n>4?S.fitYourMatch||"Your match":(S.fitStepOf||"Step [n] of [total]").replace("[n]",Math.min(n,total)).replace("[total]",total),this.back.classList.toggle("show",n>1)}persist(){try{var n=this.currentStepNum(),done=n>4,result=null;if(done){var su=this.resolve();if(su){var vId=su.variants&&this.state.size&&su.variants[this.state.size]||"";result={nm:su.nm,size:this.state.size||"",price:su.price||"",url:su.url||"",variant:vId}}}localStorage.setItem("deboer_fit",JSON.stringify({discipline:this.state.discipline,gender:this.state.gender,q3:this.state.q3,size:this.state.size,sizeSkipped:this.state.sizeSkipped,sizeBasis:this.state.sizeBasis,sizeBetween:this.state.sizeBetween,trainNum:this.state.trainNum||null,step:Math.min(n,4),done,result,ts:Date.now()}))}catch{}}step1Def(){return this.cfg.step1}step2Def(){var swim=this.state.discipline==="swim",s2=this.cfg.step2,v=swim?s2.swim:this.state.discipline==="train"?s2.train||s2.swim:s2.tri;return{ey:v.ey,q:s2.q,sub:v.sub,cols:"two",opts:[{key:"men",set:"gender",k:"A",l:s2.menLabel,d:v.menDesc,tag:""},{key:"women",set:"gender",k:"B",l:s2.womenLabel,d:v.womenDesc,tag:""}]}}step3Def(){var s3=this.cfg.step3;return this.state.discipline==="swim"&&this.state.gender==="men"?s3.swimMen:this.state.discipline==="swim"&&this.state.gender==="women"?s3.swimWomen:this.state.discipline==="train"?this.state.gender==="women"?s3.trainWomen:s3.trainMen:s3.tri}resolve(){var su=this.suitMap[this.state.q3];if(!su)return null;if(this.state.gender!=="women"||!su.w)return su;var out={},k;for(k in su)Object.prototype.hasOwnProperty.call(su,k)&&(out[k]=su[k]);for(k in su.w)if(Object.prototype.hasOwnProperty.call(su.w,k)){var v=su.w[k];v===""||v===null||v===void 0||(out[k]=v)}return out}optionHTML(o){return'<button class="opt" type="button" data-set="'+esc(o.set)+'" data-key="'+esc(o.key)+'"><span class="opt__ar">\u2192</span><span class="opt__k">'+esc(o.k)+'</span><span class="opt__l">'+esc(o.l)+'</span><span class="opt__d">'+esc(o.d)+"</span>"+(o.tag?'<span class="opt__tag">'+esc(o.tag)+"</span>":"")+"</button>"}renderStep(def){var self=this;this.stage.innerHTML='<div class="step"><span class="step__ey">'+esc(def.ey)+'</span><h2 class="step__q">'+esc(def.q)+'</h2><p class="step__sub">'+esc(def.sub)+'</p><div class="opts '+esc(def.cols)+'">'+def.opts.map(function(o){return self.optionHTML(o)}).join("")+"</div></div>",this.focusStep(),[].slice.call(this.stage.querySelectorAll(".opt")).forEac
1h(function(btn){btn.addEventListener("click",function(){var setName=btn.getAttribute("data-set"),key=btn.getAttribute("data-key");self.state[setName]=key,window.deboer&&deboer.track&&deboer.track("fit_quiz_step",{step:setName,answer:key}),self.render()})})}renderSize(){var self=this,SZ=this.cfg.size,metric=this.metric,tHeight=S.fitHeight||"Height",tWeight=S.fitWeight||"Weight",tChest=S.fitChest||"Chest circumference",heightField=metric?'<div class="sf__field"><label for="'+this._id("inH")+'">'+esc(tHeight)+' <em>cm</em></label><input id="'+this._id("inH")+'" type="number" inputmode="decimal" min="120" max="220" placeholder="178" /></div>':'<div class="sf__field"><label for="'+this._id("inHft")+'">'+esc(tHeight)+' <em>ft / in</em></label><div class="sf__row"><input id="'+this._id("inHft")+'" type="number" inputmode="numeric" min="4" max="7" placeholder="5" aria-label="'+esc(S.feet||"feet")+'" /><input id="'+this._id("inHin")+'" type="number" inputmode="decimal" min="0" max="11" placeholder="10" aria-label="'+esc(S.inches||"inches")+'" /></div></div>',weightField=metric?'<div class="sf__field"><label for="'+this._id("inW")+'">'+esc(tWeight)+' <em>kg</em></label>
1<input id="'+this._id("inW")+'" type="number" inputmode="decimal" min="35" max="150" placeholder="75" /></div>':'<div class="sf__field"><label for="'+this._id("inW")+'">'+esc(tWeight)+' <em>lbs</em></label><input id="'+this._id("inW")+'" type="number" inputmode="decimal" min="80" max="330" placeholder="165" /></div>';this.stage.innerHTML='<div class="step sizef"><span class="step__ey">'+esc(SZ.ey)+'</span><h2 class="step__q">'+esc(SZ.q)+'</h2><p class="step__sub">'+SZ.subHtml+' <a href="'+esc(SZ.chartUrl)+'">'+esc(SZ.chartLinkText)+'</a>.</p><div class="unitseg"><button type="button" data-fg="uMet" aria-pressed="'+(metric?"true":"false")+'" class="'+(metric?"on":"")+'">cm \xB7 kg</button><button type="button" data-fg="uImp" aria-pressed="'+(metric?"false":"true")+'" class="'+(metric?"":"on")+'">ft \xB7 lbs</button></div><form data-fg="sizeForm"><div class="sizef__grid">'+heightField+weightField+'<div class="sf__field"><label for="'+this._id("inC")+'">'+esc(tChest)+" <em>"+(metric?"cm":"in")+" \xB7 "+esc(S.fitOptional||"optional")+'</em></label><input id="'+this._id("inC")+'" type="number" inputmode="decimal" placeholder="'+(metric?"100":"39")+'" /><div class="sf__hint">'+esc(SZ.heightHint)+'</div></div></div><div class="sf__err" data-fg="sfErr" role="alert" aria-live="assertive">'+esc(SZ.errText)+'</div><div class="sizef__foot"><button class="deboer-btn deboer-btn--ink" type="submit">'+esc(SZ.submitLabel)+' <span class="ar">\u2192</span></button><button class="sf__skip" type="button" data-fg="sfSkip">'+esc(SZ.skipLabel)+"</button></div></form></div>",this.focusStep(),this.stage.querySelector('[data-fg="uMet"]').addEventListener("click",function(){self.metric=!0,self.renderSize()}),this.stage.querySelector('[data-fg="uImp"]').addEventListener("click",function(){self.metric=!1,self.renderSize()}),this.stage.querySelector('[data-fg="sfSkip"]').addEventListener("click",function(){self.state.sizeSkipped=!0,self.render()}),this.stage.querySelector('[data-fg="sizeForm"]').addEventListener("submit",function(e){e.preventDefault();var h,w,c;if(self.metric)h=parseFloat((self.stage.querySelector("#"+self._id("inH"))||{}).value),w=parseFloat(self.stage.querySelector("#"+self._id("inW")).value),c=parseFloat(self.stage.querySelector("#"+self._id("inC")).value);else{var ft=parseFloat((self.stage.querySelector("#"+self._id("inHft"))||{}).value),inch=parseFloat((self.stage.querySelector("#"+self._id("inHin"))||{}).value||0);h=ft?ft*30.48+inch*2.54:NaN,w=parseFloat(self.stage.querySelector("#"+self._id("inW")).value)*.4536,c=parseFloat(self.stage.querySelector("#"+self._id("inC")).value)*2.54}if(!h||!w||h<120||h>230||w<30||w>160){self.stage.querySelector('[data-fg="sfErr"]').classList.add("show");return}var rec=sizeRec(self.state.gender,h,w,c||null);self.state.size=rec.offChart?null:rec.primary,self.state.sizeBetween=rec.secondary,self.state.sizeSkipped=rec.offChart,self.state.sizeRow=rec.offChart?null:rec.row,self.state.metrics={h,w,c:c||null},self.state.sizeBasis=Math.round(h)+"cm \xB7 "+Math.round(w)+"kg"+(c?" \xB7 "+Math.round(c)+"cm chest":""),window.deboer&&deboer.track&&deboer.track("fit_quiz_step",{step:"size",answer:self.state.size||"off_chart"}),self.render()})}_id(base){return"fg-"+(this.getAttribute("data-section-id")||"0")+"-"+base}fitMail(su){var s=this.state,em=this.cfg.experience.email,subject="Size check \u2014 "+su.nm+(s.size?" ("+s.size+(s.sizeBetween?" / "+s.sizeBetween:"")+"?)":""),body=`Hi deboer Experience Team,
2
3Please confirm my size before I order.
4
5Gender: `+(s.gender==="men"?"Male":"Female")+`
6`+(s.sizeBasis?"Height / weight / chest: "+s.sizeBasis+`
7`:`Height (cm) / weight (kg) / chest (cm): 
8`)+"Wetsuit model considering: "+su.nm+`
9Full-body photo (in trisuit or swimwear): attached
10
11Thanks!`;return"mailto:"+em+"?subject="+encodeURIComponent(subject)+"&body="+encodeURIComponent(body)}fitViz(){var s=this.state,R=this.cfg.result;if(!s.size||!s.sizeRow||!s.metrics)return"";var rows=[{l:S.fitHeight||"Height",v:s.metrics.h,r:s.sizeRow.h,u:"cm"},{l:S.fitWeight||"Weight",v:s.metrics.w,r:s.sizeRow.w,u:"kg"}];s.metrics.c&&rows.push({l:S.fitChestShort||"Chest",v:s.metrics.c,r:s.sizeRow.c,u:"cm"});var html=rows.map(function(o){var span=o.r[1]-o.r[0],lo=o.r[0]-span*.7,hi=o.r[1]+span*.7,pct=Math.max(3,Math.min(97,(o.v-lo)/(hi-lo)*100)),l0=(o.r[0]-lo)/(hi-lo)*100,l1=(o.r[1]-lo)/(hi-lo)*100,inR=o.v>=o.r[0]&&o.v<=o.r[1];return'<div class="fv__row"><span class="fv__l">'+esc(o.l)+'</span><div class="fv__bar"><span class="fv__range" style="left:'+l0+"%;width:"+(l1-l0)+'%"></span><span class="fv__dot'+(inR?"":" out")+'" style="left:'+pct+'%"></span></div><span class="fv__v">'+Math.round(o.v)+" <em>/ "+o.r[0]+"\u2013"+o.r[1]+esc(o.u)+"</em></span></div>"}).join(""),note=cutNote(s.size),chartUrl=this.cfg.size.chartUrl,sep=chartUrl.indexOf("?")===-1?"?":"&";return'<div class="fitviz"><div class="fitviz__t">'+esc(R.fitVizTitlePrefix)+" "+esc(s.size)+" band</div>"+html+'<div class="fv__cap">'+(note?note+" ":"")+'<a href="'+esc(chartUrl+sep+"hl="+encodeURIComponent(s.size))+'">'+esc(R.fitVizLinkText)+"</a></div></div>"}sizeBlock(su){var s=this.state,T=this.cfg.trainSize;if(s.discipline==="train"){if(!s.size)return"";var chartUrl=this.cfg.size.chartUrl,sep=chartUrl.indexOf("?")===-1?"?":"&";return'<div class="res__size res__size--basis">
11'+(s.sizeBetween?'<div><span class="lab">'+esc(S.fitRecommendedSize||"Recommended size")+'</span><div class="sz">'+esc(s.size+" / "+s.sizeBetween)+"</div></div>":"")+'<div class="basis">'+(s.sizeBasis?esc(T.basis.replace("[basis]",s.sizeBasis))+"<br/>":"")+(s.sizeBetween?esc(T.between.replace("[a]",s.size).replace("[b]",s.sizeBetween))+" ":"")+'<a href="'+esc(chartUrl+sep+"hl="+encodeURIComponent(s.size))+'">'+esc(T.chartRow)+"</a></div></div>"}if(s.discipline!=="tri")return"";if(s.size){var between=!!s.sizeBetween;return'<div class="res__size res__size--basis">'+(between?'<div><span class="lab">'+esc(S.fitRecommendedSize||"Recommended size")+'</span><div class="sz">'+esc(s.size+" / "+s.sizeBetween)+"</div></div>":"")+'<div class="basis">'+(s.sizeBasis?esc((S.fitBasedOn||"Based on [basis].").replace("[basis]",s.sizeBasis))+"<br/>":"")+esc(between?S.fitBetween||"You sit between sizes \u2014 send the Experience Team a full-body photo (trisuit or swimwear) before ordering and they\u2019ll call it.":S.fitCleanMatch||"A clean match on the chart. A quick photo to the Experience Team makes it certain.")+"</div></div>"+this.fitViz()}return'<div class="res__size"><div><span class="lab">'+esc(S.fitSizing||"Sizing")+'</span><div class="sz">'+esc(S.fitExperienceTeam||"Experience Team")+'</div></div><div class="basis">'+esc(s.sizeBasis?S.fitOffChart||"Your stats sit outside the standard chart \u2014 the Experience Team will size you personally.":S.fitSendStats||"Send gender, height, weight, chest and a full-body photo (trisuit or swimwear) \u2014 they\u2019ll confirm your size within 24h.")+"</div></div>"}specRow(su,sz){var L=this.cfg.labels,cells=[];return sz&&cells.push('<div class="spec__c"><span class="spec__l">'+esc(L.specSize||"Your size")+'</span><b class="spec__v">'+esc(sz+(this.state.discipline==="train"&&this.state.trainNum?" \xB7 "+this.state.trainNum:""))+"</b></div>"),su.water&&cells.push('<div class="spec__c"><span class="spec__l">'+esc(L.specWater||"Water")+'</span><b class="spec__v">'+esc(su.water)+"</b></div>"),su.price&&cells.push('<div class="spec__c"><span class="spec__l">'+esc(L.specPrice||"Price")+'</span><b class="spec__v">'+esc(su.price)+"</b></div>"),cells.length?'<div class="res__spec">'+cells.join("")+"</div>":""}consultBlock(su){var L=this.cfg.labels;return'<div class="res__consult"><span class="res__consult-ey">'+esc(L.consultEy||"")+'</span><h4 class="res__consult-h">'+esc(L.consultH||"")+'</h4><p class="res__consult-b">'+esc(L.consultBody||"")+'</p><a class="deboer-btn deboer-btn--ghost-lt" href="'+esc(this.fitMail(su))+'" data-fg="consult">'+esc(L.consultCta||"Confirm my size")+"</a></div>"}goneBadge(su){var L=this.cfg.labels,txt=su.eta?(L.goneBadge||"Back [date]").replace("[date]",su.eta):L.goneBadgeNoDate||"Between runs";return'<span class="res__gone-badge">'+esc(txt)+"</span>"}goneBlock(su,sz,allGone){var L=this.cfg.labels,html='<p class="res__gone-intro">'+esc(L.goneIntro||"")+'</p><div class="res__gone">';html+='<div class="res__gone-opt" data-fg="reserve-slot"><h4 class="res__gone-h">'+esc(L.goneReserveH||"")+'</h4><p class="res__gone-b">'+esc((L.goneReserveBody||"").replace("[size]",sz||""))+"</p></div>";var alt=su.alt;if(alt&&alt.variants){var altVariant=sz?alt.variants[sz]:null,anyAlt=altVariant||Object.keys(alt.variants).filter(function(k){return k!=="_"}).length;if(anyAlt){var delta=(alt.priceCents||0)-(su.priceCents||0),deltaTxt="";if(delta&&su.priceCents){var abs=Math.abs(delta)/100,money=(S.currencyFmt||"$[amount]").replace("[amount]",abs%1===0?abs.toFixed(0):abs.toFixed(2));deltaTxt=(delta>0?L.goneAltDelta||"[delta] more than the [suit]":L.goneAltDeltaLess||"[delta] less than the [suit]").replace("[delta]",money).replace("[suit]",su.nm)}var altHref=altVariant?(L.cartAddUrl||"/cart/add")+"?id="+altVariant+"&quantity=1":alt.url;html+='<div class="res__gone-opt res__gone-opt--alt"><span class="res__gone-ey">'+esc(L.goneAltEy||"")+'</span><h4 class="res__gone-h">'+esc(alt.nm)+(altVariant?", "+esc((S.fitSizeWord||"size")+" "+sz):"")+" \u2014 "+esc(S.fitInStock||"in stock")+'</h4><p class="res__gone-b">'+esc(alt.why||L.goneAltBody||"")+'</p><div class="res__gone-price"><b>'+esc(alt.price)+"</b>"+(deltaTxt?" <span>"+esc(deltaTxt)+"</span>":"")+'</div><a class="deboer-btn deboer-btn--signal" data-track="select_item" data-track-source="fit_quiz_alt" data-track-item-name="'+esc(alt.nm)+'" href="'+esc(altHref)+'">'+esc((L.goneAltCta||"Add the [alt] instead").replace("[alt]",alt.nm))+' <span class="ar">\u2192</span></a></div>'}}return html+"</div>"}needsReveal(){var L=this.cfg.labels;if((L.captureGate||"reveal")!=="reveal"||this._revealDone)return!1;try{if(sessionStorage.getItem("deboer_fit_skip")==="1")return!1}catch{}return!this.querySelector(".fg__cap-ok")}renderReveal(){var self=this,L=this.cfg.labels,su=this.resolve(),s=this.state,disc=s.discipline==="tri"?(this.cfg.step1.opts[1]||{}).l:s.discipline==="swim"?(this.cfg.step1.opts[0]||{}).l:(this.cfg.step1.opts[2]||{}).l,fit=s.gender==="women"?this.cfg.step2.womenLabel:this.cfg.step2.menLabel,summary=(L.revealSummary||"[discipline] \xB7 [fit][size]").replace("[discipline]",disc||"").replace("[fit]",fit||"").replace("[size]",s.size?" \xB7 "+(S.fitSizeWord||"size")+" "+s.size:"");this.stage.innerHTML='<div class="step reveal"><span class="step__ey">'+esc(L.revealEy)+'</span><h2 class="step__q">'+esc(L.revealH)+'</h2><p class="reveal__sum">'+esc(summary)+(su&&su.nm?" <b>\u2192 "+esc(su.nm)+"</b>":"")+'</p><p class="step__sub">'+esc(L.revealBody)+'</p><div data-fg="reveal-slot"></div><button class="reveal__skip" type="button" data-fg="reveal-skip">'+esc(L.revealSkip)+' <span class="ar">\u2192</span></button></div>';var cap=this.querySelector('[data-fg="capture"]');if(cap){var slot=this.stage.querySelector('[data-fg="reveal-slot"]');slot.appendChild(cap),cap.hidden=!1,cap.classList.add("fg__capture--reveal");var tags="fit:"+(su&&su.key||"unknown")+(s.size?", fit-size:"+(su&&su.key||"unknown")+":"+slug(s.size):""),tagsEl=cap.querySelector('[data-fg="capture-tags"]');tagsEl&&(tagsEl.value=tags);var btn=cap.querySelector('[data-fg="capture-btn"]');btn&&(btn.innerHTML=esc(L.revealButton)+' <span class="ar">\u2192</span>');var lab=cap.querySelector('[data-fg="capture-label"]');lab&&(lab.hidden=!0);var sub=cap.querySelector('[data-fg="capture-sub"]');sub&&(sub.hidden=!0);var inp=cap.querySelector('input[type="email"]');inp&&setTimeout(function(){try{inp.focus()}catch{}},50)}window.deboer&&deboer.track&&deboer.track("fit_quiz_capture_shown",{recommendation:su?su.nm:"",size:s.size||""}),this.stage.querySelector('[data-fg="reveal-skip"]').addEventListener("click",function(){try{
11sessionStorage.setItem("deboer_fit_skip","1")}catch{}self._revealDone=!0;var capEl=self.querySelector('[data-fg="capture"]');capEl&&(capEl.hidden=!0,self.appendChild(capEl)),window.deboer&&deboer.track&&deboer.track("fit_quiz_capture_skip",{recommendation:su?su.nm:""}),self.render()}),this.focusStep()}renderResult(){var su=this.resolve(),L=this.cfg.labels,R=this.cfg.result,tri=this.state.discipline==="tri";if(!su){this.stage.innerHTML='<div class="res"><div class="res__head"><span class="res__ey">'+esc(L.resultEyebrow)+'</span><h2 class="res__h">'+esc(S.fitNoMatch||"No match configured for this answer.")+'</h2></div><div class="res__after"><button class="res__restart" type="button" data-fg="restart">'+esc(L.restart)+"</button></div></div>",this.bindRestart();return}var media;su.img?media='<div class="res__media'+(su.cover?" cover":"")+'">'+(su.flag?'<span class="res__flag">'+esc(su.flag)+"</span>":"")+'<img src="'+esc(su.img)+'" alt="'+esc(su.nm)+'" width="1000" height="1250" loading="lazy" /></div>':media='<div class="res__media">'+(su.flag?'<span class="res__flag">'+esc(su.flag)+"</span>":"")+'<div class="ph ph--dk"><span>'+esc(su.nm||"Suit image")+"</span></div></div>";var why=(su.why||[]).map(function(w){return"<li>"+esc(w)+"</li>"}).join(""),ctaUrl=su.url,sz=this.state.size||"",variantId=su.variants&&sz&&su.variants[sz]||"";if(!variantId&&su.variants&&sz&&this.state.discipline==="train"&&this.state.trainNum){var n=String(this.state.trainNum);variantId=su.variants[n]||su.variants[n+" ("+sz+")"]||su.variants[sz+" ("+n+")"]||""}variantId&&(ctaUrl+=(ctaUrl.indexOf("?")>-1?"&":"?")+"variant="+variantId);var addUrl=variantId?(L.cartAddUrl||"/cart/add")+"?id="+variantId+"&quantity=1":"",ctaLabel=variantId?(L.addSize||"Add size [size] to cart").replace("[size]",sz):su.cta,ctaHref=addUrl||ctaUrl,oos=su.oos||[],allGone=su.inStock===!1,sizeGone=!allGone&&sz&&oos.indexOf(sz)>-1;if(this._stock={allGone,sizeGone,size:sz,suit:su},this.stage.innerHTML='<div class="res"><div class="res__head"><span class="res__ey">'+esc(L.resultEyebrow)+'</span><h2 class="res__h">'+esc(L.resultHeading)+'</h2></div><div class="res__card">'+media+'<div class="res__body"><div class="res__hex hex"></div><div class="res__bc">'+(su.line?'<span class="res__line">'+esc(su.line)+"</span>":"")+'<h3 class="res__nm">'+esc(su.nm)+(sz&&!allGone?'<span class="res__nm-sz">, '+esc((S.fitSizeWord||"size")+" "+sz)+".</span>":"")+"</h3>"+(su.cat?'<p class="res__cat">'+esc(su.cat)+"</p>":"")+(allGone||sizeGone?this.goneBadge(su):"")+this.specRow(su,sz)+this.sizeBlock(su)+(why?'<ul class="res__why">'+why+"</ul>":"")+(allGone||sizeGone?this.goneBlock(su,sz,allGone):'<div class="res__foot"><a class="deboer-btn deboer-btn--signal res__add" data-track="select_item" data-track-source="fit_quiz" data-track-item-name="'+esc(su.nm)+'" href="'+esc(ctaHref)+'">'+esc(ctaLabel)+' <span class="ar">\u2192</span></a>'+(tri?"":this.state.discipline==="train"?'<a class="deboer-btn deboer-btn--ghost-lt" href="'+esc(this.cfg.size.chartUrl)+'">'+esc(L.trainChart||"See the size chart")+"</a>":L.secondaryCta?'<a class="deboer-btn deboer-btn--ghost-lt" href="'+esc(L.secondaryCtaUrl)+'">'+esc(L.secondaryCta)+"</a>":"")+"</div>"+(addUrl?'<p class="res__addnote">'+esc(L.addSizeNote||"")+"</p>":"")+(tri?this.consultBlock(su):""))+'</div></div></div><div class="res__after"><button class="res__restart" type="button" data-fg="restart">'+esc(L.restart)+"</button>"+(tri?'<span class="res__help">'+esc(S.fitHelpBetween||"Between sizes or unsure?")+' <a href="'+esc(this.fitMail(su))+'">'+esc(S.fitHelpEmail||"Email the Experience Team")+" \u2192</a></span>":L.help?'<span class="res__help">'+L.help+"</span>":"")+"</div></div>",window.deboer&&deboer.track){var answers=this.state||{},params={recommendation:su.nm,recommendation_url:su.url,recommended_size:sz,source:"fit_quiz",stock:allGone?"product_sold_out":sizeGone?"size_sold_out":"in_stock"};["discipline","gender","q3"].forEach(function(k){params["answer_"+k]=answers[k]}),deboer.track("fit_quiz_complete",params)}this.mountCapture(su),this.bindRestart()}mountCapture(su){var L=this.cfg.labels||{},cap=this.querySelector('[data-fg="capture"]');if(cap){if((this.cfg.labels.captureGate||"reveal")==="off"&&!(this._stock&&(this._stock.allGone||this._stock.sizeGone))){cap.hidden=!0;return}var after=this.stage.querySelector(".res__after");if(after){var st=this._stock||{},waitlist=!!(st.allGone||st.sizeGone),slot=waitlist?this.stage.querySelector('[data-fg="reserve-slot"]'):null,foot=this.stage.querySelector(".res__bc");cap.classList.remove("fg__capture--reveal");var lab0=cap.querySelector('[data-fg="capture-label"]');lab0&&(lab0.hidden=!1);var btn0=cap.querySelector('[data-fg="capture-btn"]');btn0&&!(this._stock&&(this._stock.allGone||this._stock.sizeGone))&&(btn0.innerHTML=esc(L.captureButton||"Send it")+' <sp
11an class="ar">\u2192</span>');var sub0=cap.querySelector('[data-fg="capture-sub"]');sub0&&(sub0.hidden=!1),slot?slot.appendChild(cap):foot?(cap.classList.add("fg__capture--inline"),foot.appendChild(cap)):after.parentNode.insertBefore(cap,after),cap.hidden=!1;var handle=su.handle||"",tags;waitlist&&handle?(tags="waitlist:"+handle,st.sizeGone&&st.size&&(tags+=", waitlist-size:"+handle+":"+slug(st.size)),tags+=", fit:"+(su.key||"unknown")):(tags="fit:"+(su.key||"unknown"),st.size&&(tags+=", fit-size:"+(su.key||"unknown")+":"+slug(st.size)));var tagsEl=cap.querySelector('[data-fg="capture-tags"]');tagsEl&&(tagsEl.value=tags);var labelEl=cap.querySelector('[data-fg="capture-label"]'),subEl=cap.querySelector('[data-fg="capture-sub"]'),btnEl=cap.querySelector('[data-fg="capture-btn"]');waitlist?(cap.classList.add("fg__capture--waitlist"),labelEl&&(labelEl.textContent=L.waitlistLabel||S.fitWaitlistLabel||"Tell me when it\u2019s back"),subEl&&(subEl.textContent=st.sizeGone&&st.size?(L.waitlistSubSize||S.fitWaitlistSubSize||"We\u2019ll email you the moment size [size] returns \u2014 before it goes back on the site.").replace("[size]",st.size):L.waitlistSub||S.fitWaitlistSub||"We\u2019ll email you the moment it returns \u2014 before it goes back on the site."),btnEl&&(btnEl.innerHTML=esc(st.size?(L.goneReserveCta||"Reserve size [size]").replace("[size]",st.size):L.waitlistButton||S.fitWaitlistButton||"Join the waitlist")+' <span class="ar">\u2192</span>')):cap.classList.remove("fg__capture--waitlist");var ok=cap.querySelector(".fg__cap-ok");ok&&!this._captureCounted&&(this._captureCounted=!0,this.captureDone(waitlist))}}}captureDone(waitlist){if(window.deboer&&deboer.track){var st=this._stock||{};deboer.track(waitlist?"fit_quiz_waitlist":"fit_quiz_capture",{item:st.suit&&st.suit.handle||void 0,size:st.size||void 0,scope:st.allGone?"product":st.sizeGone?"variant":"none",source:"fit_quiz"})}}bindRestart(){var self=this,r=this.stage.querySelector('[data-fg="restart"]');r&&r.addEventListener("click",function(){self.state={discipline:null,gender:null,q3:null,size:null,sizeBetween:null,sizeBasis:null,sizeSkipped:!1,sizeRow:null,metrics:null,trainNum:null};try{localStorage.removeItem("deboer_fit")}catch{}self.render()})}render(){var capKeep=this.querySelector('[data-fg="capture"]');capKeep&&this.stage.contains(capKeep)&&(capKeep.hidden=!0,this.appendChild(capKeep)),this.setProgress();var n=this.currentStepNum();n===1?this.renderStep(this.step1Def()):n===2?this.renderStep(this.step2Def()):n===3?this.renderStep(this.step3Def()):n===4?this.state.discipline==="train"?this.renderTrainSize():this.renderSize():this.needsReveal()?this.renderReveal():this.renderResult(),this.persist()}}customElements.get(TAG)||customElements.define(TAG,DeboerFitGuide)})()}catch(e){console.error(e)}})(),(function(){if(__sections__["deboer-header"])try{class DeboerHeader extends HTMLElement{constructor(){super(),this.burger=this.querySelector(".db-burger"),this.drawer=this.querySelector(".db-navm"),this.bar=this.querySelector(".db-nav"),this.burger&&this.drawer&&this.burger.addEventListener("click",this.toggle.bind(this)),this.setHeaderHeight(),window.addEventListener("resize",this.setHeaderHeight.bind(this))}setHeaderHeight(){this.bar&&document.documentElement.style.setProperty("--header-height",`${this.bar.offsetHeight}px`)}toggle(){const open=this.drawer.classList.toggle("open");this.burger.classList.toggle("x",open),this.burger.setAttribute("aria-expanded",open?"true":"false"),document.body.style.overflow=open?"hidden":""}}customElements.define("deboer-header",DeboerHeader)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-hero-carousel"]&&!Shopify.designMode))try{class DeboerHeroCarousel extends HTMLElement{constructor(){if(super(),this.slides=Array.from(this.querySelectorAll(".chero__slide")),this.btns=Array.from(this.querySelectorAll(".chero__btn")),this.i=0,this.timer=null,this.interval=parseInt(this.dataset.interval,10)||6e3,this.autoplay=this.dataset.autoplay==="true",this.reduce=window.matchMedia("(prefers-reduced-motion: reduce)").matches,this.style.setProperty("--dur",this.interval/1e3+"s"),this.slides.length<=1)return;this.btns.forEach(b=>b.addEventListener("click",()=>{this.go(parseInt(b.dataset.i,10)),this.schedule()})),this.addEventListener("mouseenter",()=>this.pause()),this.addEventListener("mouseleave",()=>this.schedule()),this.addEventListener("focusin",()=>this.pause()),this.addEventListener("focusout",()=>this.schedule()),this.userPaused=!1;const pbtn=this.querySelector("[data-chero-pause]");pbtn&&pbtn.addEventListener("click",()=>{this.userPaused=!this.userPaused,pbtn.setAttribute("aria-pressed",String(this.userPaused)),pbtn.setAttribute("aria-label",this.userPaused?this.dataset.playLabel||"Play":this.dataset.pauseLabel||"Pause"),this.setAttribute("data-anim",this.userPaused?"off":"on"),this.userPaused?this.pause():this.schedule()}),this.autoplay&&!this.reduce&&(this.setAttribute("data-anim","on"),this.schedule())}go(n){if(n=(n+this.slides.length)%this.slides.length,this.slides[this.i]&&this.slides[this.i].classList.remove("on"),this.slides[this.i]&&this.slides[this.i].setAttribute("aria-hidden","true"),this.btns[this.i]&&this.btns[this.i].classList.remove("on"),this.btns[this.i]&&this.btns[this.i].removeAttribute("aria-current"),this.i=n,this.slides[this.i].classList.add("on"),this.slides[this.i].removeAttribute("aria-hidden"),this.btns[this.i]){const bar=this.btns[this.i].querySelector(".bar i");bar&&(bar.style.animation="none",bar.offsetWidth,bar.style.animation=""),this.btns[this.i].classList.add("on"),this.btns[this.i].setAttribute("aria-current","true")}
11this.slides.forEach((sl,idx)=>{sl.querySelectorAll("deboer-bg-video").forEach(el=>{typeof el.setActive=="function"&&el.setActive(idx===this.i)})})}schedule(){!this.autoplay||this.reduce||this.userPaused||this.slides.length<=1||(this.pause(),this.timer=setTimeout(()=>{this.go(this.i+1),this.schedule()},this.interval))}pause(){this.timer&&(clearTimeout(this.timer),this.timer=null)}}customElements.define("deboer-hero-carousel",DeboerHeroCarousel)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-kit-builder"]&&!Shopify.designMode))try{(function(){var TAG="deboer-kit-builder";if(customElements.get(TAG))return;var S=window.deboerStrings||{};function esc(s){return String(s??"").replace(/[&<>"']/g,function(c){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[c]})}function track(n,p){try{window.deboer&&deboer.track&&deboer.track(n,p||{})}catch{}}function money(cents,cur){var f=S.currencyFmt||"$[amount]",v=cents/100;return f.replace("[amount]",v%1===0?v.toFixed(0):v.toFixed(2))}var ROLE_W={first:{first:100,everyday:80,flagship:60,thermal:40,swimskin:10},returning:{flagship:100,everyday:85,first:70,thermal:50,swimskin:30}};class DeboerKitBuilder extends HTMLElement{connectedCallback(){var cfgEl=this.querySelector('[data-kb="config"]');try{this.cfg=JSON.parse(cfgEl.textContent)}catch{this.cfg=null}if(this.cfg){var C=this.cfg;["races","bands","wetsuits","items","pros","catalog"].forEach(function(k){C[k]=(C[k]||[]).filter(Boolean)}),C.catalog.forEach(function(g2){g2.products=(g2.products||[]).filter(Boolean)}),C.items.forEach(function(it){it.swaps=(it.swaps||[]).filter(Boolean)}),this.$=function(k){return this.querySelector('[data-kb="'+k+'"]')}.bind(this),this.stage=this.$("stage"),this.strip=this.$("strip"),this.panel=this.$("panel"),this.bar=this.$("bar"),this.after=this.getAttribute("data-after")||"/cart",this.addUrl=this.getAttribute("data-add-url")||"/cart/add.js",this.updateUrl=this.getAttribute("data-update-url")||"/cart/update.js",this.state={mode:null,water:null,waterSrc:null,race:null,gender:null,wetsuit:null,wetsuitSize:null,skipWetsuit:!1,picks:{},sizes:{},swaps:{},showOptional:!1,extras:{},openGroups:{}};try{var sv=JSON.parse(localStorage.getItem("deboer_kit")||"null");sv&&sv.v===1&&Object.assign(this.state,sv.state)}catch{}var params=new URLSearchParams(location.search);params.get("restart")==="1"&&this.reset(!1),(params.get("mode")==="first"||params.get("mode")==="returning")&&(this.state.mode=params.get("mode")),(C.mode==="first"||C.mode==="returning")&&(this.state.mode=this.state.mode||C.mode);try{var fit=JSON.parse(localStorage.getItem("deboer_fit")||"null");fit&&fit.gender&&!this.state.gender&&(this.state.gender=fit.gender),fit&&fit.size&&fit.discipline==="tri"&&!this.state.wetsuitSize&&(this.state.wetsuitSize=fit.size,this.state.sizeFromQuiz=!0)}catch{}if(!this.state.gender&&window.deboer&&deboer.gender){var g=deboer.gender.get();g&&g.g&&(this.state.gender=g.g)}var self=this;this.$("add").addEventListener("click",function(){self.addKit()}),this.$("bar-add").addEventListener("click",function(){self.addKit()}),this.$("save-open").addEventListener("click",function(){self.openSave()}),this.$("save-close").addEventListener("click",function(){self.$("save").hidden=!0}),this.$("save").addEventListener("click",function(e){e.target===self.$("save")&&(self.$("save").hidden=!0)}),this.strip.addEventListener("click",function(e){var li=e.target.closest("li[data-step]");li&&li.classList.contains("is-done")&&self.goto(parseInt(li.getAttribute("data-step"),10))}),this.querySelector(".kitb__save-ok")&&(this.$("save").hidden=!1,track("kit_save",{mode:this.state.mode})),this.render(),track("kit_view",{mode:this.state.mode||"ask"})}}persist(){try{localStorage.setItem("deboer_kit",JSON.stringify({v:1,state:this.state,ts:Date.now()}))}catch{}}reset(rerender){this.state={mode:null,water:null,waterSrc:null,race:null,gender:null,wetsuit:null,wetsuitSize:null,skipWetsuit:!1,picks:{},sizes:{},swaps:{},showOptional:!1,extras:{},openGroups:{}};try{localStorage.removeItem("deboer_kit")}catch{}rerender!==!1&&this.render()}step(){var s=this.state;return s.mode?s.mode==="returning"?s.gender&&(s.wetsuit||s.skipWetsuit||s.water!==null)&&s._openPack?4:3:s.water===null&&!s.waterSrc?1:s.gender?!s.wetsuit&&!s.skipWetsuit?3:4:2:0}goto(n){var s=this.state;
11n<=0&&(s.mode=null),n<=1&&(s.water=null,s.waterSrc=null,s.race=null),n<=2&&(s.gender=null),n<=3&&(s.wetsuit=null,s.skipWetsuit=!1,s._openPack=!1),this.render()}render(){var n=this.step();this.renderStrip(n),n===0?this.renderMode():n===1?this.renderWater():n===2?this.renderGender():n===3?this.renderWetsuit():this.renderPack(),this.renderPanel(),this.persist();try{window.scrollTo({top:Math.max(0,this.offsetTop-20),behavior:"smooth"})}catch{}}renderStrip(n){var C=this.cfg,s=this.state,labels=C.copy.strip,self=this,meta=["",s.waterSrc==="race"&&s.race?s.race:s.water!==null?s.water+"\xB0C":"",s.gender?s.gender==="women"?C.copy.s2.women:C.copy.s2.men:"",s.wetsuit?(this.suit(s.wetsuit)||{}).title:s.skipWetsuit?C.copy.s3.notToday:"",""],ret=s.mode==="returning";this.strip.innerHTML=labels.map(function(l,i){if(ret&&(i===1||i===2))return'<li class="is-hidden" data-step="'+i+'"><b>'+esc(l)+"</b></li>";var cls=i<n?"is-done":i===n?"is-now":"",m=i<n&&meta[i]||"";return'<li class="'+cls+'" data-step="'+i+'"><b>'+esc(l)+"</b>"+(m?"<em>"+esc(m)+" \xB7 "+esc(C.copy.change)+"</em>":"")+"</li>"}).join("")}head(step,q,sub,back){return(back?'<button class="kitb__back" type="button" data-kb="back">'+esc(this.cfg.copy.back)+"</button>":"")+'<span class="kitb__ey">'+esc(step.ey)+'</span><h2 class="kitb__q">'+esc(q||step.q)+'</h2><p class="kitb__sub">'+esc(sub||step.sub)+"</p>"}bindBack(n){var b=this.stage.querySelector('[data-kb="back"]'),self=this;b&&b.addEventListener("click",function(){self.goto(n-1)})}renderMode(){var c=this.cfg.copy.s0,self=this;this.stage.innerHTML='<div class="kitb__step">'+this.head(c)+'<div class="kitb__opts"><button class="kitb__opt" type="button" data-mode="first"><span class="kitb__opt-k">01</span><span class="kitb__opt-l">'+esc(c.first.l)+'</span><span class="kitb__opt-d">'+esc(c.first.d)+'</span></button><button class="kitb__opt" type="button" data-mode="returning"><span class="kitb__opt-k">02</span><span class="kitb__opt-l">'+esc(c.returning.l)+'</span><span class="kitb__opt-d">'+esc(c.returning.d)+"</span></button></div></div>",[].slice.call(this.stage.querySelectorAll("[data-mode]")).forEach(function(b){b.addEventListener("click",function(){self.state.mode=b.getAttribute("data-mode"),track("kit_step",{step:"mode",answer:self.state.mode}),self.render()})})}daysTo(d){var t=Date.parse(d);return t?Math.round((t-Date.now())/864e5):null}waterChips(sel){var C=this.cfg,s=this.state,c=C.copy.s1,races=C.races.map(function(r){var d=self_days(r.date);return'<button class="kitb__chip'+(s.waterSrc==="race"&&s.race===r.name?" is-on":"")+'" type="button" data-race="'+esc(r.name)+'">'+esc(r.name)+"<small>"+esc(r.loc)+(d!==null&&d>=0?" \xB7 "+esc(c.days.replace("[n]",d)):"")+" \xB7 "+esc(c.water.replace("[t]",r.water))+"</small></button>"}).join(""),bands=C.bands.map(function(b){return'<button class="kitb__chip'+(s.waterSrc==="band"&&s.water===Math.round((b.min+b.max)/2)?" is-on":"")+'" type="button" data-band="'+b.min+","+b.max+'">'+esc(b.label)+"<small>"+esc(b.sub||b.min+"\u2013"+b.max+"\xB0C")+"</small></button>"}).join("");function self_days(d){var t=Date.parse(d);return t?Math.round((t-Date.now())/864e5):null}return(races?'<div class="kitb__group"><p class="kitb__group-l">'+esc(c.racesLabel)+'</p><div class="kitb__chips">'+races+"</div></div>":"")+(bands?'<div class="kitb__group"><p class="kitb__group-l">'+esc(c.bandsLabel)+'</p><div class="kitb__chips">'+bands+"</div></div>":"")+'<button class="kitb__unknown" type="button" data-unknown>'+esc(c.unknown)+"<small>"+esc(c.unknownSub)+"</small></button>"}bindWater(after){var self=this,C=this.cfg;[].slice.call(this.stage.querySelectorAll("[data-race]")).forEach(function(b){b.addEventListener("click",function(){var r=C.races.filter(function(x){return x.name===b.getAttribute("data-race")})[0];self.state.water=r.water,self.state.waterSrc="race",self.state.race=r.name,self.state.raceSlug=r.slug,track("kit_step",{step:"water",answer:"race:"+r.slug,water:r.water}),after()})}),[].slice.call(this.stage.querySelectorAll("[data-band]")).forEach(function(b){b.addEventListener("click",function(){var p=b.getAttribute("data-band").split(",").map(Number);self.state.water=Math.round((p[0]+p[1])/2),self.state.waterSrc="band",self.state.race=null,track("kit_step",{step:"water",answer:"band",water:self.state.water}),after()})});var u=this.stage.querySelector("[data-unknown]");u&&u.addEventListener("click",function(){self.state.water=null,self.state.waterSrc="unknown",self.state.race=null,track("kit_step",{step:"water",answer:"unknown"}),after()})}renderWater(){var self=this;this.stage.innerHTML='<div class="kitb__step">'+this.head(this.cfg.copy.s1,null,null,!0)+this.waterChips()+"</div>",this.bindBack(1),this.bindWater(function(){self.render()})}renderGender(){var c=this.cfg.copy.s2,self=this;this.stage.innerHTML='<div class="kitb__step">
11'+this.head(c,null,null,!0)+'<div class="kitb__opts"><button class="kitb__opt" type="button" data-g="men"><span class="kitb__opt-k">A</span><span class="kitb__opt-l">'+esc(c.men)+'</span></button><button class="kitb__opt" type="button" data-g="women"><span class="kitb__opt-k">B</span><span class="kitb__opt-l">'+esc(c.women)+"</span></button></div></div>",this.bindBack(2),[].slice.call(this.stage.querySelectorAll("[data-g]")).forEach(function(b){b.addEventListener("click",function(){self.state.gender=b.getAttribute("data-g");try{window.deboer&&deboer.gender&&deboer.gender.set(self.state.gender)}catch{}track("kit_step",{step:"gender",answer:self.state.gender}),self.render()})})}suit(handle){return this.cfg.wetsuits.filter(function(w){return w.handle===handle})[0]||null}rankSuits(){var s=this.state,mode=s.mode==="returning"?"returning":"first",W=ROLE_W[mode],g=s.gender||"men";return this.cfg.wetsuits.filter(function(w){return w.gender===g||w.gender==="all"}).map(function(w){var fits=s.water===null?!0:s.water>=w.tmin&&s.water<=w.tmax,score=(W[w.role]||50)+(fits?200:0);return s.water===null&&(score+=w.tmax-w.tmin),{w,fits,score}}).sort(function(a,b){return b.score-a.score})}sizeSelect(variants,sel,attr){return'<select class="kitb__sel" '+attr+'><option value="">'+esc(this.cfg.copy.s3.size)+"</option>"+variants.map(function(v){return'<option value="'+v.id+'" data-size="'+esc(v.size)+'"'+(v.size===sel?" selected":"")+(v.avail?"":" disabled")+">"+esc(v.size)+(v.avail?"":" \u2014 "+esc((S.fitAllGone,"sold out")))+"</option>"}).join("")+"</select>"}renderWetsuit(){var C=this.cfg,s=this.state,c=C.copy.s3,self=this,ret=s.mode==="returning",ranked=this.rankSuits(),fitting=ranked.filter(function(r){return r.fits}),list=(fitting.length,ranked),cards=list.map(function(r,i){var w=r.w,on=s.wetsuit===w.handle,tag=i===0?c.recommended:r.fits?s.mode!=="returning"&&w.role==="flagship"?c.stepUp:c.alsoFits:"";return'<div class="kitb__suit'+(on?" is-on":"")+(i===0?" is-rec":"")+'" data-suit="'+esc(w.handle)+'"><img src="'+esc(w.img)+'" alt="" width="120" height="150" loading="lazy"><div>'+(tag?'<span class="kitb__suit-tag">'+esc(tag)+"</span>":"")+'<h3 class="kitb__suit-nm">'+esc(w.title)+"</h3>"+(w.sub?'<p class="kitb__suit-sub">'+esc(w.sub)+"</p>":"")+'<p class="kitb__suit-m">'+esc(c.waterFit.replace("[min]",w.tmin).replace("[max]",w.tmax))+'</p><div class="kitb__suit-row"><span class="kitb__suit-p">'+esc(w.priceFmt)+"</span>"+self.sizeSelect(w.variants,on?s.wetsuitSize:s.wetsuitSize||"",'data-suit-size="'+esc(w.handle)+'"')+(s.sizeFromQuiz&&s.wetsuitSize?'<span class="kitb__note">'+esc(c.sizeFromQuiz)+"</span>":'<a class="kitb__sizehelp" href="'+esc(C.quizUrl)+'">'+esc(c.sizeHelp)+"</a>")+'<button class="deboer-btn '+(on?"deboer-btn--ink":"deboer-btn--ghost")+'" type="button" data-choose="'+esc(w.handle)+'">'+esc(on?c.chosen:c.choose)+"</button></div>"+(C.gwp.on&&w.gwp&&C.gwp.gift?'<p class="kitb__suit-gwp">'+esc(c.backpack.replace("[gift]",C.gwp.gift))+"</p>":"")+"</div></div>"}).join(""),waterBlock=ret?'<div class="kitb__group"><p class="kitb__group-l">'+esc(C.copy.s1.q)+"</p>"+this.waterChips()+'</div><div class="kitb__group"><p class="kitb__group-l">'+esc(C.copy.s2.q)+'</p><div class="kitb__chips"><button class="kitb__chip'+(s.gender==="men"?" is-on":"")+'" type="button" data-g="men">'+esc(C.copy.s2.men)+'</button><button class="kitb__chip'+(s.gender==="women"?" is-on":"")+'" type="button" data-g="women">'+esc(C.copy.s2.women)+"</button></div></div>":"";this.stage.innerHTML='<div class="kitb__step">'+this.head(c,null,ret?c.subReturning:c.subFirst,!ret)+waterBlock+this.prosHTML("wetsuit")+(cards?'<div class="kitb__suits">'+cards+"</div>":'<p class="kitb__note">'+esc(c.none)+"</p>")+'<div class="kitb__foot"><button class="deboer-btn deboer-btn--ghost" type="button" data-skip>'+esc(c.notToday)+"</button>"+(s.wetsuit?'<button class="deboer-btn deboer-btn--signal" type="button" data-continue>'+esc(C.copy.continue)+' <span class="ar">\u2192</span></button>':"")+"</div></div>",this.bindBack(3),ret&&(this.bindWater(function(){self.renderWetsuit(),self.renderStrip(self.step()),self.persist()}
11),[].slice.call(this.stage.querySelectorAll("[data-g]")).forEach(function(b){b.addEventListener("click",function(){s.gender=b.getAttribute("data-g");try{window.deboer&&deboer.gender&&deboer.gender.set(s.gender)}catch{}self.renderWetsuit(),self.persist()})})),[].slice.call(this.stage.querySelectorAll("[data-suit-size]")).forEach(function(sel){sel.addEventListener("change",function(){var o=sel.options[sel.selectedIndex];s.wetsuitSize=o?o.getAttribute("data-size"):null,s.sizeFromQuiz=!1,s.wetsuit===sel.getAttribute("data-suit-size")&&self.renderPanel(),self.persist()})}),[].slice.call(this.stage.querySelectorAll("[data-choose]")).forEach(function(b){b.addEventListener("click",function(){var h=b.getAttribute("data-choose"),sel=self.stage.querySelector('[data-suit-size="'+h+'"]'),o=sel&&sel.options[sel.selectedIndex];if(!o||!o.value){sel.focus(),sel.classList.add("is-err");return}s.wetsuit=h,s.wetsuitSize=o.getAttribute("data-size"),s.skipWetsuit=!1,track("kit_step",{step:"wetsuit",answer:h,size:s.wetsuitSize,water:s.water}),ret&&(s._openPack=!0),self.render()})});var sk=this.stage.querySelector("[data-skip]");sk&&sk.addEventListener("click",function(){s.wetsuit=null,s.skipWetsuit=!0,s._openPack=!0,track("kit_skip_wetsuit",{mode:s.mode,water:s.water}),self.render()});var co=this.stage.querySelector("[data-continue]");co&&co.addEventListener("click",function(){s._openPack=!0,self.render()})}itemProduct(it){var g=this.state.gender,p=g==="women"&&it.women?it.women:it.men,sw=this.state.swaps[it.key];if(sw){var alt=it.swaps.filter(function(x){return x.handle===sw})[0];alt&&(p=alt)}return p}itemVisible(it){var s=this.state,mode=s.mode==="returning"?"returning":"first";return!(it.showFor!=="both"&&it.showFor!==mode||s.water!==null&&(s.water<it.minT||s.water>it.maxT))}prosHTML(step){var c=this.cfg.copy.pros,list=this.cfg.pros.filter(function(p){return p.step===step});return list.length?'<div class="kitb__pros"><span class="kitb__pros-ey">'+esc(c.ey)+'</span><div class="kitb__pros-row">'+list.map(function(p){return'<figure class="kitb__pro">'+(p.img?'<img src="'+esc(p.img)+'" alt="" width="72" height="72" loading="lazy">':"")+"<figcaption><b>"+esc(p.name)+"</b><span>"+esc(p.role)+"</span>"+(p.quote?"<q>"+esc(p.quote)+"</q>":"")+(p.packs?"<em>"+esc(p.packs)+"</em>":"")+"</figcaption></figure>"}).join("")+"</div></div>":""}catalogHTML(){var C=this.cfg,s=this.state,c=C.copy.catalog,self=this,g=s.gender;if(!C.catalog.length)return"";var groups=C.catalog.map(function(grp,gi){var inKit={};C.items.forEach(function(it){inKit[it.men.handle]=1,it.women&&(inKit[it.women.handle]=1),(it.swaps||[]).forEach(function(x){inKit[x.handle]=1})});var prods=grp.products.filter(function(p){return(p.gender==="all"||!g||p.gender===g)&&!inKit[p.handle]});if(!prods.length)return"";var open=!!s.openGroups[grp.handle],rows=prods.map(function(p){var picked=s.extras[p.handle],sized=p.variants.length>1;return'<div class="kitb__cat-row'+(picked?" is-on":"")+(p.avail?"":" is-dead")+'" data-cat="'+esc(p.handle)+'"><img src="'+esc(p.img)+'" alt="" width="48" height="60" loading="lazy"><div><p class="kitb__cat-nm">'+esc(p.title)+'</p><span class="kitb__cat-m">'+esc(p.type||"")+" \xB7 "+esc(p.priceFmt)+"</span></div>"+(p.avail?'<div class="kitb__cat-ctl">'+(sized?self.sizeSelect(p.variants,picked?picked.size:"",'data-cat-size="'+esc(p.handle)+'"'):"")+'<button class="deboer-btn '+(picked?"deboer-btn--ink":"deboer-btn--ghost")+' kitb__cat-add" type="button" data-cat-add="'+esc(p.handle)+'">'+esc(picked?c.added:c.add)+"</button></div>":'<span class="kitb__cat-dead">'+esc(c.soldOut)+"</span>")+"</div>"}).join(""),preview=open?"":'<span class="kitb__cat-prev">'+prods.slice(0,4).map(function(p){return'<img src="'+esc(p.img)+'" alt="" width="28" height="36" loading="lazy">'}).join("")+"</span>",inKitN=prods.filter(function(p){return s.extras[p.handle]}).length;return'<div class="kitb__cat-group'+(open?" is-open":"")+'"><button class="kitb__cat-head" type="button" data-cat-group="'+esc(grp.handle)+'" aria-expanded="'+(open?"true":"false")+'">'+preview+'<span class="kitb__cat-t"><b>'+esc(grp.title)+"</b><small>"+esc((c.count||"[n] items").replace("[n]",prods.length))+(inKitN?" \xB7 "+inKitN+" "+esc(c.inKit||"in your kit"):"")+'</small></span><span class="kitb__cat-tog">'+esc(open?c.hide:c.show)+" <i>"+(open?"\u25B4":"\u25BE")+'</i></span></button><div class="kitb__cat-rows"'+(open?"":" hidden")+">"+rows+"</div></div>"}).join("");return'<div class="kitb__catalog"><h3 class="kitb__q kitb__q--sm">'+esc(c.h)+'</h3><p class="kitb__sub">'+esc(c.sub)+"</p>"+groups+"</div>"}bindCatalog(){var s=this.state,self=this;[].slice.call(this.stage.querySelectorAll("[data-cat-group]")).forEac
11h(function(b){b.addEventListener("click",function(){var k=b.getAttribute("data-cat-group");s.openGroups[k]=!s.openGroups[k],self.renderPack(),self.persist()})}),[].slice.call(this.stage.querySelectorAll("[data-cat-add]")).forEach(function(b){b.addEventListener("click",function(){var h=b.getAttribute("data-cat-add");if(s.extras[h]){delete s.extras[h],track("kit_step",{step:"catalog",answer:"off:"+h}),self.renderPack(),self.renderPanel(),self.persist();return}var p=self.catProduct(h);if(p){var sel=self.stage.querySelector('[data-cat-size="'+h+'"]'),v=null;if(sel){var o=sel.options[sel.selectedIndex];if(!o||!o.value){sel.focus();return}v={id:parseInt(o.value,10),size:o.getAttribute("data-size")}}else{var fa=p.variants.filter(function(x){return x.avail})[0];if(!fa)return;v={id:fa.id,size:""}}s.extras[h]={id:v.id,size:v.size,title:p.title,price:p.price,handle:h},track("kit_step",{step:"catalog",answer:"on:"+h}),self.renderPack(),self.renderPanel(),self.persist()}})})}catProduct(h){var out=null;return this.cfg.catalog.forEach(function(g){g.products.forEach(function(p){p.handle===h&&(out=p)})}),out}itemOn(it){var p=this.state.picks[it.key];return p===void 0?!it.optional&&it.defaultOn:p}rowHTML(it){var c=this.cfg.copy.s4,s=this.state,p=this.itemProduct(it),on=p.avail&&this.itemOn(it),sized=p.variants.length>1,sel=s.sizes[it.key]||"";return'<div class="kitb__row'+(on?" is-on":" is-off")+(p.avail?"":" is-dead")+'" data-item="'+esc(it.key)+'"><button class="kitb__chk" type="button" data-toggle aria-pressed="'+(on?"true":"false")+'" aria-label="'+esc(p.title)+'"'+(p.avail?"":" disabled")+">"+(on?"\u2713":"")+'</button><img src="'+esc(p.img)+'" alt="" width="64" height="80" loading="lazy"><div><span class="kitb__row-role">'+esc(it.role)+'</span><p class="kitb__row-nm">'+esc(p.title)+'</p><p class="kitb__row-why">'+esc(it.why)+'</p><div class="kitb__row-ctl">'+(p.avail?sized?this.sizeSelect(p.variants,sel,"data-item-size"):"":'<span class="kitb__cat-dead">'+esc(c.soldOut)+"</span>")+(it.swaps.length?'<button class="kitb__swap" type="button" data-swap>'+esc(c.swap)+"</button>":"")+'</div><div class="kitb__swaplist" data-swaplist hidden></div></div><span class="kitb__row-p">'+esc(p.priceFmt)+"</span></div>"}renderPack(){var C=this.cfg,s=this.state,c=C.copy.s4,self=this,ret=s.mode==="returning",vis=C.items.filter(function(it){return self.itemVisible(it)}),rec=vis.filter(function(it){return!it.optional}),opt=vis.filter(function(it){return it.optional}),w=s.wetsuit?this.suit(s.wetsuit):null,suitRow=w?'<div class="kitb__row is-on" data-wetsuit><span class="kitb__chk" aria-hidden="true">\u2713</span><img src="'+esc(w.img)+'" alt="" width="64" height="80"><div><span class="kitb__row-role">'+esc(C.copy.strip[3])+'</span><p class="kitb__row-nm">'+esc(w.title)+" \xB7 "+esc(s.wetsuitSize||"")+'</p><p class="kitb__row-why">'+esc(C.copy.s3.waterFit.replace("[min]",w.tmin).replace("[max]",w.tmax))+'</p><div class="kitb__row-ctl"><button class="kitb__swap" type="button" data-change-suit>'+esc(C.copy.change)+"</button></div>"+(C.gwp.on&&w.gwp&&C.gwp.gift?'<p class="kitb__suit-gwp">'+esc(C.copy.s3.backpack.replace("[gift]",C.gwp.gift))+"</p>":"")+'</div><span class="kitb__row-p">'+esc(w.priceFmt)+"</span></div>":"";this.stage.innerHTML='<div class="kitb__step">'+this.head(c,null,ret?c.subReturning:c.subFirst,!0)+'<p class="kitb__group-l">'+esc(c.recommended)+'</p><div class="kitb__rows">'+suitRow+rec.map(function(it){return self.rowHTML(it)}).join("")+"</div>"+(opt.length?'<button class="kitb__optional" type="button" data-optional aria-expanded="'+(s.showOptional?"true":"false")+'"><span><b>+ '+opt.length+" "+esc(c.optional)+"</b><br><small>"+esc(opt.map(function(it){return self.itemProduct(it).title}).join(", "))+"</small></span><span>"+esc(s.showOptional?c.hide:c.show)+'</span></button><div class="kitb__rows kitb__optional-rows"'+(s.showOptional?"":" hidden")+">"+opt.map(function(it){return self.rowHTML(it)}).join("")+"</div>":"")+this.prosHTML("pack")+this.catalogHTML()+"</div>",this.bindBack(ret?3:4),this.bindCatalog();var cs=this.stage.querySelector("[data-change-suit]");cs&&cs.addEventListener("click",function(){s.wetsuit=null,s.skipWetsuit=!1,s._openPack=!1,self.render()});var ob=this.stage.querySelector("[data-optional]");ob&&ob.addEventListener("click",function(){s.showOptional=!s.showOptional,self.renderPack(),self.persist()}),[].slice.call(this.stage.querySelectorAll("[data-item]")).forEac
11h(function(row){var key=row.getAttribute("data-item"),it=C.items.filter(function(x){return x.key===key})[0];row.querySelector("[data-toggle]").addEventListener("click",function(){s.picks[key]=!self.itemOn(it),track("kit_step",{step:"pack",answer:(s.picks[key]?"on:":"off:")+self.itemProduct(it).handle}),self.renderPack(),self.renderPanel(),self.persist()});var sel=row.querySelector("[data-item-size]");sel&&sel.addEventListener("change",function(){var o=sel.options[sel.selectedIndex];s.sizes[key]=o?o.getAttribute("data-size"):"",!self.itemOn(it)&&o&&o.value&&(s.picks[key]=!0),self.renderPack(),self.renderPanel(),self.persist()});var sw=row.querySelector("[data-swap]");sw&&sw.addEventListener("click",function(){var list=row.querySelector("[data-swaplist]");if(!list.hidden){list.hidden=!0;return}var cur=self.itemProduct(it),base=s.gender==="women"&&it.women?it.women:it.men,opts=[base].concat(it.swaps).filter(function(p){return p.handle!==cur.handle});list.innerHTML='<div class="kitb__chips">'+opts.map(function(p){return'<button class="kitb__chip" type="button" data-swap-to="'+esc(p.handle)+'">'+esc(p.title)+"<small>"+esc(p.priceFmt)+"</small></button>"}).join("")+"</div>",list.hidden=!1,[].slice.call(list.querySelectorAll("[data-swap-to]")).forEach(function(b){b.addEventListener("click",function(){var h=b.getAttribute("data-swap-to");s.swaps[key]=h===base.handle?null:h,s.sizes[key]="",track("kit_step",{step:"swap",answer:h}),self.renderPack(),self.renderPanel(),self.persist()})})})})}lines(){var s=this.state,C=this.cfg,self=this,out=[];if(s.wetsuit){var w=this.suit(s.wetsuit),v=w&&w.variants.filter(function(x){return x.size===s.wetsuitSize&&x.avail})[0];w&&v&&out.push({id:v.id,handle:w.handle,title:w.title,size:s.wetsuitSize,price:w.price,role:"wetsuit"})}return(this.step()>=4||s.mode==="returning")&&(C.items.forEach(function(it){if(!(!self.itemVisible(it)||!self.itemOn(it))){var p=self.itemProduct(it);if(p.avail){var v2=p.variants.length>1?p.variants.filter(function(x){return x.size===s.sizes[it.key]&&x.avail})[0]:p.variants.filter(function(x){return x.avail})[0];out.push({id:v2?v2.id:null,handle:p.handle,title:p.title,size:p.variants.length>1&&s.sizes[it.key]||"",price:p.price,role:it.role,needsSize:p.variants.length>1&&!v2})}}}),Object.keys(s.extras||{}).forEach(function(h){var x=s.extras[h];out.push({id:x.id,handle:h,title:x.title,size:x.size||"",price:x.price,role:"extra"})})),out}ladder(ls){var L=this.cfg.ladder;if(!L.enabled)return null;var hasSuit=ls.some(function(l){return l.role==="wetsuit"}),distinct={};ls.forEach(function(l){distinct[l.handle]=1});var n=Object.keys(distinct).length,pct=hasSuit?Math.min(L.cap,L.step*Math.max(0,n-1)):0,next=hasSuit?Math.min(L.cap,L.step*n):0;return{pct,next,hasSuit,n}}renderPanel(){var C=this.cfg,s=this.state,c=C.copy.panel,ls=this.lines(),n=this.step(),show=n>=3||s.mode==="returning";if(this.panel.hidden=!show,this.bar.hidden=!show,!!show){var total=ls.reduce(function(a,l){return a+(l.price||0)},0),ready=ls.length>0&&ls.every(function(l){return l.id&&!l.needsSize}),count=c.items.replace("[n]",ls.length);this.$("ptotal").textContent=money(total),this.$("pmeta").textContent=c.meta.replace("[mode]",s.mode==="returning"?c.modeReturning:c.modeFirst).replace("[water]",s.water!==null?s.water+"\xB0C":c.waterUnknown),this.$("plist").innerHTML=ls.map(function(l){return"<li><span>"+esc(l.title)+(l.size?" \xB7 "+esc(l.size):"")+(l.needsSize?" \xB7 <u>"+esc(C.copy.s4.size)+"</u>":"")+"</span><span>"+esc(money(l.price))+"</span></li>"}).join("");var lad=this.ladder(ls),disc=this.$("pdisc"),bdisc=this.$("bar-disc"),txt="";lad&&(lad.hasSuit?lad.pct>0?txt=c.disc.replace("[amount]",money(Math.round(total*lad.pct/100))).replace("[pct]",lad.pct)+(lad.next>lad.pct?" \xB7 "+c.discNext.replace("[pct]",lad.next):""):txt=c.discNext.replace("[pct]",lad.next):txt=c.discNoWetsuit),disc.hidden=!txt,disc.textContent=txt,bdisc.hidden=!txt,bdisc.textContent=txt,this.$("add").disabled=!ready,this.$("bar-add").disabled=!ready,this.$("bar-count").textContent=count,this.$("bar-total").textContent=money(total)}}addKit(){var self=this,s=this.state,C=this.cfg,c=C.copy.panel,ls=this.lines();if(!(!ls.length||ls.some(function(l){return!l.id}
11))){var nonce="tri"+Date.now().toString(36)+Math.random().toString(36).slice(2,5),mode=s.mode==="returning"?"returning":"first",btns=[this.$("add"),this.$("bar-add")];btns.forEach(function(b){b.disabled=!0,b.textContent=c.adding});var items=ls.map(function(l){return{id:l.id,quantity:1,properties:{_kit:nonce,_kit_mode:mode,_kit_role:l.role}}});fetch(this.addUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({items})}).then(function(r){if(!r.ok)throw new Error("add failed");return r.json()}).then(function(){var attrs={deboer_kit:mode+":"+(s.water===null?"-":s.water)+":"+(s.gender==="women"?"w":"m")+(s.raceSlug?":"+s.raceSlug:"")};return fetch(self.updateUrl,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes:attrs})}).catch(function(){})}).then(function(){track("kit_add",{count:ls.length,total:ls.reduce(function(a,l){return a+l.price},0)/100,mode,water:s.water,wetsuit:s.wetsuit||"none",race:s.raceSlug||""});try{localStorage.removeItem("deboer_kit")}catch{}location.href=self.after}).catch(function(){btns.forEach(function(b,i){b.disabled=!1,b.innerHTML=""+esc(self.$("add").getAttribute("data-label")||"Add the kit")+" \u2192"}),alert(c.error)})}}openSave(){var s=this.state,tags=["kit:tri-"+(s.mode==="returning"?"returning":"first")];s.raceSlug&&tags.push("race:"+s.raceSlug),s.wetsuit&&tags.push("kit-suit:"+s.wetsuit+(s.wetsuitSize?":"+String(s.wetsuitSize).toLowerCase():""));var t=this.$("save-tags");t&&(t.value=tags.join(", ")),this.$("save").hidden=!1;var inp=this.$("save").querySelector('input[type="email"]');inp&&inp.focus(),track("kit_save_open",{mode:s.mode})}}customElements.define(TAG,DeboerKitBuilder)})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-main-product"]&&!Shopify.designMode))try{(function(){if(window.__deboerPdpWired)return;window.__deboerPdpWired=!0;var busy=!1,swapped=!1;document.addEventListener("click",function(e){if(e.target.closest){var thumb=e.target.closest(".gal__thumb");if(thumb){var pdp=thumb.closest(".pdp");if(pdp){var i=thumb.getAttribute("data-i");pdp.querySelectorAll(".gal__stage-img").forEach(function(im){im.classList.toggle("on",im.getAttribute("data-i")===i)}),pdp.querySelectorAll(".gal__thumb").forEach(function(t){t.classList.toggle("on",t.getAttribute("data-i")===i)})}return}var fit=e.target.closest("[data-fit-swap]");fit&&(e.preventDefault(),swapFit(fit))}});function swapFit(link){var url=link.getAttribute("href"),info=link.closest("product-info");if(!(busy||!url)){if(!info){window.location=url;return}busy=!0,info.classList.add("is-swapping"),fetch(url,{headers:{"X-Requested-With":"fetch"}}).then(function(r){return r.text()}).then(function(html){var doc=new DOMParser().parseFromString(html,"text/html"),fresh=doc.querySelector("product-info");if(!fresh){window.location=url;return}var node=document.importNode(fresh,!0);info.replaceWith(node),window.deboer&&window.deboer.init?window.deboer.init(node):(node.querySelectorAll(".deboer-reveal:not(.in)").forEach(function(el){el.classList.add("in")}),node.querySelectorAll("[data-rev]:not(.is-in)").forEach(function(el){el.classList.add("is-in")}));var freshTitle=node.querySelector(".buy__title");freshTitle&&(freshTitle.setAttribute("tabindex","-1"),freshTitle.focus({preventScroll:!0}),window.deboer&&window.deboer.announce&&window.deboer.announce(freshTitle.textContent.trim())),doc.title&&(document.title=doc.title),history.pushState({fitSwap:!0},"",url),swapped=!0,busy=!1}).catch(function(){window.location=url})}}window.addEventListener("popstate",function(){swapped&&window.location.reload()});function cwParse(map){var o={};return(map||"").split(",").forEach(function(kv){var i=kv.indexOf(":");i>0&&(o[kv.slice(0,i)]=kv.slice(i+1))}),o}function cwUpdate(size,currentAvailable){var box=document.querySelector("[data-cw]");if(box){size=size||box.getAttribute("data-cw-size")||"",box.setAttribute("data-cw-size",size);var haveIt=[];if(box.querySelectorAll("[data-cw-chip]").forEach(function(chip){var map=cwParse(chip.getAttribute("data-cw-map")),id=size?map[size]:"",url=chip.getAttribute("data-cw-url");chip.href=id?url+(url.indexOf("?")>-1?"&":"?")+"variant="+id:url;var out=size&&!id;chip.classList.toggle("is-out",out),chip.setAttribute("aria-disabled",out?"true":"false"),id&&!chip.classList.contains("on")&&haveIt.push(chip.getAttribute("data-cw-name"))}),currentAvailable===void 0&&size){var me=box.querySelector("[data-cw-chip].on");me&&(currentAvailable=!!cwParse(me.getAttribute("data-cw-map"))[size])}var nudge=box.querySelector("[data-cw-nudge]");if(nudge)if(size&&currentAvailable===!1){if(nudge.textContent=(haveIt.length?nudge.getAttribute("data-tpl"):nudge.getAttribute("data-tpl-one")).replace("[size]",size).replace("[prints]",haveIt.join(", ")),nudge.hidden=!1,nudge.getAttribute("data-tracked")!==size){nudge.setAttribute("data-tracked",size);var me=box.querySelector("[data-cw-chip].on");try{window.deboer&&deboer.track&&deboer.track("colorway_nudge",{size,item:me?me.getAttribute("data-cw-url").split("/").pop():"",to:haveIt.join(",")})}catch{}}}else nudge.hidden=!0}}function cwInit(){var box=document.querySelector("[data-cw]");if(box){var checked=document.querySelector('product-info input[type="radio"]:checked, product-info variant-selects input:checked'),size=checked?checked.value:box.getAttribute("data-cw-size"),atc=document.querySelector('product-info [name="add"]');cwUpdate(size,atc?!atc.disabled:void 0)}}window.subscribe&&window.PUB_SUB_EVENTS&&subscribe(PUB_SUB_EVENTS.variantChange,function(ev){var v=ev&&ev.data&&ev.data.variant;v&&cwUpdate(v.title,v.available)}),document.addEventListener("change",function(e){var r=e.target;if(!(!r.matches||!r.matches('product-info input[type="radio"]'))){var box=document.querySelector("[data-cw]");box&&cwUpdate(r.value,void 0)}}),document.readyState!=="loading"?cwInit():document.addEventListener("DOMContentLoaded",cwInit),new MutationObserver(function(ms){ms.forEac
11h(function(m){[].forEach.call(m.addedNodes,function(n){n.nodeType===1&&(n.matches("product-info")||n.querySelector&&n.querySelector("[data-cw]"))&&setTimeout(cwInit,0)})})}).observe(document.documentElement,{childList:!0,subtree:!0})})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-nitro-upsell"]&&!Shopify.designMode))try{if(!customElements.get("deboer-nitro-upsell")){class DeboerNitroUpsell extends HTMLElement{connectedCallback(){const track=(n,p)=>{window.deboer&&window.deboer.track&&window.deboer.track(n,p)};this.querySelectorAll("[data-nu-card]").forEach(card=>this.wireCard(card,track)),this.querySelectorAll("[data-nu-checkout]").forEach(b=>b.addEventListener("click",()=>track("nitro_upsell_checkout",{})));const noBtn=this.querySelector("[data-nu-decline]");noBtn&&noBtn.addEventListener("click",()=>track("nitro_upsell_decline",{}));const bar=this.querySelector("[data-nu-gated]");if(bar){const firstCard=this.querySelector("[data-nu-card]");if(!firstCard||typeof IntersectionObserver>"u")bar.classList.add("is-shown");else{const io=new IntersectionObserver(entries=>{entries.forEach(e=>{!e.isIntersecting&&e.boundingClientRect.top<0&&(bar.classList.add("is-shown"),io.disconnect())})});io.observe(firstCard)}}const copyBtn=this.querySelector("[data-nu-copy]"),shareBtn=this.querySelector("[data-nu-share]");if(copyBtn){const sharePath=(copyBtn.dataset.nuSharePath||"").trim()||"/pages/nitro",shareUrl=/^https?:/i.test(sharePath)?sharePath:location.origin+sharePath;shareBtn&&navigator.share&&(shareBtn.hidden=!1,shareBtn.addEventListener("click",()=>{navigator.share({title:document.title,url:shareUrl}).then(()=>track("nitro_upsell_share",{method:"share"})).catch(()=>{})}));const copyLabel=copyBtn.textContent;copyBtn.addEventListener("click",()=>{navigator.clipboard&&navigator.clipboard.writeText(shareUrl).then(()=>{copyBtn.textContent=copyBtn.dataset.copiedLabel||"link copied",setTimeout(()=>{copyBtn.textContent=copyLabel},2200),track("nitro_upsell_share",{method:"copy"})}).catch(()=>{})})}this.refreshCartLine();const memberEmail=(this.dataset.nuMemberEmail||"").trim().toLowerCase();memberEmail&&fetch(this.dataset.nuProxy||"/apps/nitro/reserve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({guardianEmail:memberEmail,check:!0})}).then(r=>r.ok?r.json():null).then(d=>{if(d&&d.eligible&&typeof d.allowance=="number"){let prev=null;try{prev=JSON.parse(sessionStorage.getItem("deboerNitroAllow")||"null")}catch{}sessionStorage.setItem("deboerNitroAllow",JSON.stringify({allowance:d.allowance,used:d.used||0,tiers:d.tiers&&d.tiers.basic&&d.tiers.premium?d.tiers:prev&&prev.tiers||null,backpackVariantId:prev&&prev.backpackVariantId||null})),this.refreshCartLine()}}).catch(()=>{})}wireCard(card,track){const addBtn=card.querySelector("[data-nu-add]"),hint=card.querySelector("[data-nu-hint]"),memberEl=card.querySelector("[data-nu-member]"),fullEl=card.querySelector("[data-nu-full]"),pct=Number(this.dataset.pct||30),mapEl=card.querySelector("[data-nu-variants]"),variants=mapEl?JSON.parse(mapEl.textContent):null,optRows=Array.from(card.querySelectorAll("[data-nu-opt]")),sel={};optRows.forEach(row=>{sel[row.dataset.nuOpt]=null});const money=cents=>{try{const fmt=window.Shopify&&Shopify.currency&&Shopify.currency.active||"USD";return new Intl.NumberFormat(void 0,{style:"currency",currency:fmt}).format(cents/100)}catch{return"$"+(cents/100).toFixed(2)}},matches=(v,ignoreIdx)=>{for(const idx of Object.keys(sel)){if(idx===ignoreIdx||sel[idx]===null)continue;if((idx==="1"?v.o1:v.o2)!==sel[idx])return!1}return!0},resolved=()=>!variants||Object.values(sel).some(v=>v===null)?null:variants.find(v=>v.avail&&matches(v))||null,refresh=()=>{optRows.forEach(row=>{const idx=row.dataset.nuOpt;row.querySelectorAll("[data-nu-val]").forEach(btn=>{const val=btn.dataset.nuVal,ok=variants.some(v2=>v2.avail&&(idx==="1"?v2.o1:v2.o2)===val&&matches(v2,idx));btn.disabled=!ok,ok||btn.classList.remove("on")})});const v=resolved();addBtn&&!card.dataset.nuUnavailable&&(addBtn.disabled=!v&&!card.dataset.nuSingle),hint&&(hint.hidden=!!(v||card.dataset.nuSingle)),v&&memberEl&&fullEl&&(fullEl.textContent=money(v.price),memberEl.textContent=money(Math.round(v.price*(100-pct)/100)))};if(optRows.forEach(row=>{row.querySelectorAll("[data-nu-val]").forEach(btn=>{btn.classList.contains("on")&&(sel[row.dataset.nuOpt]=btn.dataset.nuVal),btn.addEventListener("click",()=>{row.querySelectorAll("[data-nu-val]").forEach(b=>b.classList.remove("on")),btn.classList.add("on"),sel[row.dataset.nuOpt]=btn.dataset.nuVal,refresh()})});const btns=row.querySelectorAll("[data-nu-val]");btns.length===1&&(btns[0].classList.add("on"),sel[row.dataset.nuOpt]=btns[0].dataset.nuVal)}),variants&&refresh(),addBtn){const label=addBtn.textContent;addBtn.addEventListener("click",()=>{const v=resolved(),id=v?v.id:Number(card.dataset.nuSingle||0);id&&(addBtn.disabled=!0,fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({id:Number(id),quantity:1})}).then(r=>r.json().then(data=>({ok:r.ok,data}))).then(({ok,data})=>{if(!ok){addBtn.classList.add("is-err"),addBtn.textContent=data&&(data.description||data.message)||"Could not add \u2014 try again",setTimeout(()=>{addBtn.classList.remove("is-err"),addBtn.textContent=label,addBtn.disabled=!1},3200);return}track("nitro_upsell_add",{item:card.dataset.nuTitle||""}),addBtn.textContent="\u2713 Added",setTimeout(()=>{addBtn.textContent=label,addBtn.disabled=!1},2200),this.refreshCartLine(),document.dispatchEvent(new CustomEvent("cart:refresh",{bubbles:!0}))}).catch(()=>{addBtn.classList.add("is-err"),addBtn.textContent="Network error \u2014 try again",setTimeout(()=>{addBtn.classList.remove("is-err"),addBtn.textContent=label,addBtn.disabled=!1},3200)}))})}}refreshCartLine(){const lines=this.querySelectorAll("[data-nu-cartline]"),mores=this.querySelectorAll("[data-nu-more]");!lines.length&&!mores.length||fetch("/cart.js",{headers:{Accept:"application/json"}}).then(r=>r.json()).then(cart=>{const n=cart.item_count||0,text=n+(n===1?" item":" items")+" in y
11our cart \xB7 welcome pack free at checkout";if(lines.forEach(el=>{el.textContent=text}),mores.length)try{const a=JSON.parse(sessionStorage.getItem("deboerNitroAllow")||"null"),bpId=a&&a.backpackVariantId?Number(a.backpackVariantId):null,groups={};(cart.items||[]).forEach(it=>{const p=it.properties||{};p._claim&&(groups[p._claim]=groups[p._claim]||bpId!==null&&Number(it.variant_id)===bpId)});const claimIds=Object.keys(groups),legacy=(cart.items||[]).filter(it=>(it.handle||"").indexOf("nitro-welcome-pack")===0),legacyUnits=legacy.reduce((s,it)=>s+(it.quantity||1),0),inCart=claimIds.length+legacyUnits,left=a?(a.allowance||1)-(a.used||0)-inCart:0,tiers=a&&a.tiers;let split=null;if(tiers&&tiers.basic&&tiers.premium&&Number(tiers.basic.allowance)>0&&Number(tiers.premium.allowance)>0){const inP=claimIds.filter(k=>groups[k]).length+legacy.filter(it=>(it.handle||"").indexOf("premium")!==-1).reduce((s,it)=>s+(it.quantity||1),0),inB=inCart-inP;split={b:Math.max(0,(Number(tiers.basic.remaining)||0)-inB),p:Math.max(0,(Number(tiers.premium.remaining)||0)-inP)}}mores.forEach(more=>{if(more.hidden=!(left>0),left>0){const em=more.querySelector("[data-nu-more-n]");em&&(em.textContent=left);const word=more.querySelector("[data-nu-more-word]");word&&(word.textContent=(left===1?"pack":"packs")+(split&&split.b+split.p>0?" ("+split.b+" basic, "+split.p+" premium)":""))}})}catch{}}).catch(()=>{})}}customElements.define("deboer-nitro-upsell",DeboerNitroUpsell)}}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-pack-checkout"]&&!Shopify.designMode))try{class DeboerPackCheckout extends HTMLElement{connectedCallback(){if(this._wired)return;this._wired=!0;const root=this,tpls=Array.from(root.querySelectorAll("[data-pc-items]")),sumName=root.querySelector("[data-pc-summary-name]"),sumItems=root.querySelector("[data-pc-summary-items]"),note=root.querySelector("[data-pc-pack-note]"),requested=root.querySelector("[data-pc-requested]"),locSel=root.querySelector("[data-pc-loc]"),grpSel=root.querySelector("[data-pc-group]");if(!tpls.length||!requested)return;const basicTpl=tpls[0],premiumTpl=tpls[tpls.length-1],hasTwoTiers=tpls.length>1,lines=tpl=>tpl?(tpl.innerHTML||"").split(/\r?\n/).map(s=>s.trim()).filter(Boolean):[],nameOf=tpl=>tpl&&tpl.getAttribute("data-pc-name")||"",isBasic=()=>{let satBasic=!1;if(locSel){const o=locSel.options[locSel.selectedIndex];satBasic=o&&o.getAttribute("data-pc-satellite")==="true"}let grpBasic=!1;if(grpSel){const o=grpSel.options[grpSel.selectedIndex];grpBasic=o&&o.getAttribute("data-pc-basic")==="true"}return satBasic||grpBasic},render=()=>{const tpl=hasTwoTiers?isBasic()?basicTpl:premiumTpl:basicTpl,name=nameOf(tpl);sumName&&name&&(sumName.textContent=name),sumItems&&(sumItems.innerHTML=lines(tpl).map(i=>"<li>"+i+"</li>").join("")),requested&&(requested.value=name),note&&(hasTwoTiers?(isBasic(),note.textContent="Based on your club and group, you qualify for the "+name+"."):note.textContent="")};locSel&&locSel.addEventListener("change",render),grpSel&&grpSel.addEventListener("change",render),render()}}customElements.get("deboer-pack-checkout")||customElements.define("deboer-pack-checkout",DeboerPackCheckout)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-pro-am"]&&!Shopify.designMode))try{(function(){var hero=document.querySelector("[data-pam-upload]"),form=document.getElementById("proam-apply-form");if(!(!hero||!form)){var endpoint=hero.getAttribute("data-pam-upload"),submit=form.querySelector(".pam-form__submit"),inflight=0,MAX=8*1024*1024,gate=function(){submit&&(submit.disabled=inflight>0)};form.querySelectorAll("[data-pam-photo]").forEach(function(input){var which=input.getAttribute("data-pam-photo"),urlField=form.querySelector('[data-pam-photo-url="'+which+'"]'),state=form.querySelector('[data-pam-photo-state="'+which+'"]'),say=function(msg,cls){state&&(state.textContent=msg,state.className="pam-form__upl"+(cls?" "+cls:""))};input.addEventListener("change",function(){var file=input.files&&input.files[0];if(urlField&&(urlField.value=""),!file){say("","");return}if(file.size>MAX){say("Too large \u2014 keep it under 8 MB.","is-err"),input.value="";return}
11if(!endpoint){say("Uploads are off right now \u2014 email the photo to [email protected].","is-err");return}var fd=new FormData;fd.append("file",file),fd.append("which",which);var emailEl=form.querySelector('[name="contact[email]"]');fd.append("email",emailEl?emailEl.value:""),inflight++,gate(),say("Uploading\u2026",""),fetch(endpoint,{method:"POST",body:fd}).then(function(r){return r.ok?r.json():r.json().then(function(d){throw new Error(d.error||"HTTP "+r.status)})}).then(function(d){if(!d||!d.url)throw new Error("no url");urlField&&(urlField.value=d.url),say("Uploaded \u2713 "+(file.name||""),"is-ok"),window.deboer&&deboer.track&&deboer.track("proam_photo_upload",{which})}).catch(function(e){say("Upload failed ("+(e&&e.message?e.message:"network")+") \u2014 you can still submit and email it later.","is-err")}).then(function(){inflight--,gate()})})})}})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-proam-kit"]&&!Shopify.designMode))try{if(!customElements.get("deboer-proam-kit")){class DeboerProamKit extends HTMLElement{connectedCallback(){const root=this,track=(n,p)=>{window.deboer&&deboer.track&&deboer.track(n,p||{})};if(root.dataset.autoRedirect==="1"&&root.dataset.loginUrl&&!/[?&]back=1/.test(window.location.search)){track("proam_login_redirect",{}),setTimeout(()=>{window.location.replace(root.dataset.loginUrl)},350);return}if(!root.dataset.role)return;const year=root.dataset.year||"",needsWetsuit=!1,moneyFormat=root.dataset.moneyformat||"";let intlMoney=null;try{if(window.Shopify&&Shopify.currency&&Shopify.currency.active){const nf=new Intl.NumberFormat(document.documentElement.lang||"en",{style:"currency",currency:Shopify.currency.active});intlMoney=c=>nf.format(c/100)}}catch{}const money=cents=>{if(intlMoney)return intlMoney(cents);const v=cents/100,wc=(n,d)=>{const p=n.toFixed(d).split(".");return p[0]=p[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),p.join(".")};return/\{\{\s*\w+\s*\}\}/.test(moneyFormat)?moneyFormat.replace(/\{\{\s*(\w+)\s*\}\}/g,(m,t)=>t==="amount_no_decimals"?wc(v,0):wc(v,2)):"$"+wc(v,2)},parseJSON=el=>{try{return el?JSON.parse(el.textContent):null}catch{return null}},fits=(g,want)=>!g||g==="any"||!want||g===want,SIZE_NAME=/size|taille|talla|gr(ö|oe|o)(ß|ss)e|taglia|maat|tamanho|storlek/i,SIZE_VAL=/^(\d*x{0,3}[sl]|m|\d{1,3}|one size|os)$/i,sizeIndex=p=>{const on=p.on||[];let i=on.findIndex(n=>SIZE_NAME.test(String(n)));return i===-1&&(i=on.findIndex((n,k)=>(p.v||[]).some(v=>SIZE_VAL.test(String((v.o||[])[k]||"").trim())))),i===-1?Math.max(0,on.length-1):i},norm=s=>String(s??"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/\s*\/\s*/g,"/").replace(/\s+/g," ").trim(),matchFixed=(p,fixed)=>{const want=fixed.map(norm).filter(Boolean);return want.length?(p.v||[]).filter(v=>{const keys=[v.t,v.s,v.id].concat(v.o||[]).map(norm);return want.some(w=>keys.indexOf(w)!==-1)}):[]},resetBtn=root.querySelector("[data-pak-reset]");resetBtn&&resetBtn.addEventListener("click",async()=>{resetBtn.disabled=!0;try{const cart=await fetch("/cart.js",{headers:{Accept:"application/json"}}).then(r=>r.json()),updates={};(cart.items||[]).forEach(it=>{it.properties&&it.properties._proam&&(updates[it.key]=0)}),Object.keys(updates).length&&await fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({updates})}),track("proam_kit_reset",{}),window.location.reload()}catch{resetBtn.disabled=!1}});const ref=root.querySelector("[data-pak-ref]");if(ref){const base=(ref.dataset.pakRefEndpoint||"").replace(/\/$/,""),me=ref.dataset.pakRefEmail||"",myName=ref.dataset.pakRefName||"",closeLabel=ref.dataset.pakRefClose||"",list=ref.querySelector("[data-pak-ref-list]"),rows=ref.querySelector("[data-pak-ref-rows]"),left=ref.querySelector("[data-pak-ref-left]"),form=ref.querySelector("[data-pak-ref-form]"),err=ref.querySelector("[data-pak-ref-error]"),ok=ref.querySelector("[data-pak-ref-ok]"),btn=ref.querySelector("[data-pak-ref-submit]"),cap=3,render=(used,friends)=>{list&&(list.innerHTML=(friends||[]).map(f=>`<li><b>${(f.name||"").replace(/</g,"&lt;")||"\u2014"}</b> <span>${(f.email||"").replace(/</g,"&lt;")}</span> <small>sent</small></li>`).join(""),list.hidden=!(friends&&friends.length));const room=Math.max(0,cap-used);rows&&(rows.innerHTML=Array.from({length:room},(_,i)=>`<div class="pak-ref__row"><input type="text" placeholder="Friend's name" autocomplete="off" data-ref-name="${i}"><input type="email" placeholder="[email protected]" autocomplete="off" data-ref-email="${i}"></div>`).join("")),left&&(left.textContent=room?`${room} of ${cap} referral${cap===1?"":"s"} left`:"all three referrals sent \u2014 thank you"),form&&(form.hidden=!room)};fetch(`${base}/referral/count?email=${encodeURIComponent(me)}`).then(r=>r.ok?r.json():null).then(d=>{render(d?d.used:0,d?d.friends:[])}).catch(()=>render(0,[])),form&&form.addEventListener("submit",async e=>{e.preventDefault();const friends=[];if(ref.querySelectorAll("[data-ref-email]").forEach(inp=>{const i=inp.dataset.refEmail,nm=ref.querySelector(`[data-ref-name="${i}"]`);inp.value.trim()&&friends.push({name:nm?nm.value.trim():"",email:inp.value.trim()})}),err&&(err.hidden=!0),ok&&(ok.hidden=!0),!friends.length){err&&(err.textContent="Add at least one friend's email.",err.hidden=!1);return}btn.disabled=!0;try{const r=await fetch(`${base}/referral`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({referrerEmail:me,referrerName:myName,friends})}),d=await r.json().catch(()=>({}));if(!r.ok||!d.ok)throw new Error(d.error==="cap"?`You have ${d.room||0} referral${d.room===1?"":"s"} left.`:d.error==="closed"?closeLabel?`Referrals closed on ${closeLabel}.`:"Referrals are closed.":d.error==="not_a_member"?"Referrals are for returning athletes.":d.error==="self_referral"?"That's your own email.":d.error==="bad_friend_email"?`Check the email ${d.email||""}.`:"Could not send \u2014 try again.");track("proam_referral",{count:(d.added||[]).length}),ok&&(ok.textContent=`${(d.added||[]).length} referral${(d.added||[]).length===1?"":"s"} sent${(d.duplicates||[]).length?" (already had: "+d.duplicates.join(", ")+")":""}.`,ok.hidden=!1);const c=await fetch(`${base}/referral/count?email=${encodeURIComponent(me)}`).then(x=>x.json()).catch(()=>null);render(c?c.used:d.used,c?c.friends:[])}catch(e2){err&&(err.textContent=e2.message,err.hidden=!1)}btn.disabled=!1})}const shell=root.querySelector("[data-pak-shell]");if(!shell)return;const rebuildBtn=root.querySelector("[data-pak-rebuild]");rebuildBtn&&rebuildBtn.addEventListener("click",()=>{const panel=root.querySelector("[data-pak-bought]");panel&&(panel.hidden=!0),shell.classList.remove("is-hidden"),track("proam_kit_rebuild",{}),shell.scrollIntoView({behavior:"smooth"})});const state={gender:null,current:"athlete",membership:null,wetsuit:null,items:{}},order=["athlete","required","sizes","review"],memEl=root.querySelector("[data-pak-membership]"),memData=memEl?parseJSON(memEl.querySelector("[data-pak-product]")):null,memSel=root.querySelector("[data-pak-membership-variant]"),resolveMembership=()=>
11{if(!memData){state.membership=null;return}if(memData.single||memData.v.length===1)state.membership={id:memData.v[0].id,price:memData.v[0].p,title:memData.t,sub:""};else if(memSel&&memSel.value){const v=memData.v.find(x=>String(x.id)===memSel.value);state.membership=v?{id:v.id,price:v.p,title:memData.t,sub:v.t}:null}else state.membership=null};memSel&&memSel.addEventListener("change",()=>{resolveMembership(),refresh()});const wetEl=root.querySelector("[data-pak-wetsuit]"),wetOpts=wetEl?Array.from(wetEl.querySelectorAll("[data-pak-wet-opt]")):[],wetSizeWrap=wetEl&&wetEl.querySelector("[data-pak-wet-size-wrap]"),wetSize=wetEl&&wetEl.querySelector("[data-pak-wet-size]"),wetEmpty=wetEl&&wetEl.querySelector("[data-pak-wet-empty]");let wetPick=null;const filterWet=()=>{let shown=0;wetOpts.forEach(o=>{const d=parseJSON(o.querySelector("[data-pak-product]")),ok=d&&fits(d.g,state.gender);if(o.hidden=!ok,ok&&shown++,!ok){const r=o.querySelector("input");r&&r.checked&&(r.checked=!1,wetPick=null,state.wetsuit=null,wetSizeWrap&&(wetSizeWrap.hidden=!0))}}),wetEmpty&&(wetEmpty.hidden=shown>0)};wetOpts.forEach(o=>{const r=o.querySelector("input");r&&r.addEventListener("change",()=>{wetOpts.forEach(x=>x.classList.remove("on")),o.classList.add("on"),wetPick=parseJSON(o.querySelector("[data-pak-product]")),state.wetsuit=null,wetSize&&wetPick&&(wetSize.innerHTML='<option value="">Choose\u2026</option>'+wetPick.v.map(v=>`<option value="${v.id}"${v.a?"":" disabled"}>${v.t}${v.a?"":" \u2014 sold out"}</option>`).join(""),wetSizeWrap&&(wetSizeWrap.hidden=!1),wetPick.v.length===1&&wetPick.v[0].a&&(wetSize.value=String(wetPick.v[0].id)),syncWet()),refresh()})});const syncWet=()=>{if(!wetPick||!wetSize||!wetSize.value){state.wetsuit=null;return}const v=wetPick.v.find(x=>String(x.id)===wetSize.value);state.wetsuit=v?{id:v.id,price:v.p,title:wetPick.t,sub:v.t}:null};wetSize&&wetSize.addEventListener("change",()=>{syncWet(),refresh()});const items=Array.from(root.querySelectorAll("[data-pak-item]")).map((el,i)=>{const alts=parseJSON(el.querySelector("[data-pak-alts]")),single=parseJSON(el.querySelector("[data-pak-product]"));return{i,el,alts:alts?alts.filter(Boolean):null,product:single,qty:parseInt(el.dataset.qty,10)||1,allColors:el.dataset.allColors==="1",fixed:(el.dataset.variants||"").split(",").map(x=>x.trim().toLowerCase()).filter(Boolean),autoNote:el.dataset.autoNote||"added automatically",gender:el.dataset.gender||"any",label:el.dataset.label||"",ctl:el.querySelector("[data-pak-item-ctl]"),img:el.querySelector("[data-pak-item-img]"),pick:null,variant:null,variants:[]}}),sizeLabel=(root.querySelector("[data-pak-wet-size-wrap] span")||{}).textContent||"Size",renderItem=it=>{if(it.el.hidden=!fits(it.gender,state.gender),it.el.hidden){it.variant=null;return}const pool=it.alts?it.alts.filter(p2=>fits(p2.g,state.gender)):it.product?[it.product]:[];it.alts&&(!it.pick||!pool.some(p2=>p2.h===it.pick.h))&&(it.pick=pool.length===1?pool[0]:null),it.alts||(it.pick=it.product),it.variant=null;let html="";it.alts&&(html+=`<label class="pak-fld"><span>Choose</span><select data-pak-alt><option value="">Choose\u2026</option>${pool.map(p2=>`<option value="${p2.h}"${it.pick&&it.pick.h===p2.h?" selected":""}>${p2.t}</option>`).join("")}</select></label>`);const p=it.pick;if(p){if(it.fixed.length&&!p.single){const vs=matchFixed(p,it.fixed).filter(v=>v.a);it.variants=vs.map(v=>({id:v.id,price:v.p,title:p.t,sub:v.t})),it.variant=it.variants[0]||null,html+=`<p class="pak-item__auto">${it.autoNote}${it.qty>1?" \xD7"+it.qty:""}${vs.length?" \xB7 "+vs.map(v=>v.t).join(" + "):""}</p>`,vs.length||(html+='<p class="pak-empty">None of the named variants is available.</p>')}else if(p.single||p.v.length===1){const v=p.v[0];it.variant={id:v.id,price:v.p,title:p.t,sub:""},it.variants=[it.variant],html+=`<p class="pak-item__auto">${it.autoNote}${it.qty>1?" \xD7"+it.qty:""}</p>`}else if(it.allColors&&p.on&&p.on.length>1){const si=sizeIndex(p),sizes=[...new Set(p.v.map(v=>v.o[si]))];html+=`<label class="pak-fld"><span>${sizeLabel}</span><select data-pak-size-all><option value="">Choose\u2026</option>${sizes.map(sz2=>{const ok=p.v.filter(v=>v.o[si]===sz2).every(v=>v.a);return`<option value="${sz2}"${ok?"":" disabled"}>${sz2}${ok?"":" \u2014 sold out"}</option>`}).join("")}</select></label>`;const others=(p.on||[]).map((n,k)=>k===si?"":[...new Set(p.v.map(v=>
11(v.o||[])[k]||""))].filter(Boolean).join(" + ")).filter(Boolean);html+=`<p class="pak-item__auto">one of each colour: ${others.join(" \xB7 ")}</p>`}else{const optName=p.on&&p.on.length===1?p.on[0]:sizeLabel;html+=`<label class="pak-fld"><span>${optName}</span><select data-pak-size><option value="">Choose\u2026</option>${p.v.map(v=>`<option value="${v.id}"${v.a?"":" disabled"}>${v.t}${v.a?"":" \u2014 sold out"}</option>`).join("")}</select></label>`}it.img&&p.img&&(it.img.innerHTML=`<img src="${p.img}" alt="" loading="lazy">`)}else it.alts||(html+='<p class="pak-empty">This item isn\u2019t published yet.</p>');it.ctl.innerHTML=html;const alt=it.ctl.querySelector("[data-pak-alt]");alt&&alt.addEventListener("change",()=>{it.pick=pool.find(x=>x.h===alt.value)||null,renderItem(it),refresh()});const sz=it.ctl.querySelector("[data-pak-size]");sz&&sz.addEventListener("change",()=>{const v=p.v.find(x=>String(x.id)===sz.value);it.variant=v?{id:v.id,price:v.p,title:p.t,sub:v.t}:null,it.variants=it.variant?[it.variant]:[],refresh()});const szAll=it.ctl.querySelector("[data-pak-size-all]");szAll&&szAll.addEventListener("change",()=>{const si=sizeIndex(p),vs=szAll.value?p.v.filter(v=>v.o[si]===szAll.value&&v.a):[];it.variants=vs.map(v=>({id:v.id,price:v.p,title:p.t,sub:v.t})),it.variant=it.variants[0]||null,refresh()}),it.el.classList.toggle("is-done",!!it.variant)},renderItems=()=>items.forEach(renderItem),modal=root.querySelector("[data-pak-modal]"),modalBody=modal&&modal.querySelector("[data-pak-modal-body]"),chartUrl=root.dataset.sizeChart||"/pages/size-chart";let chartLoaded=!1;const loadChart=()=>{chartLoaded||!modalBody||(chartLoaded=!0,fetch(chartUrl,{credentials:"same-origin"}).then(r=>r.text()).then(html=>{const doc=new DOMParser().parseFromString(html,"text/html"),main=doc.querySelector("#MainContent, main")||doc.body;main.querySelectorAll("script, noscript, iframe, form").forEach(n=>n.remove()),modalBody.innerHTML=main.innerHTML,modalBody.querySelectorAll(".deboer-reveal, .js-reveal").forEach(n=>{n.classList.add("is-in"),n.style.opacity="1",n.style.transform="none"});try{window.deboer&&deboer.init&&deboer.init(modalBody)}catch{}}).catch(()=>{modalBody.innerHTML=`<p class="pak-modal__loading">Couldn\u2019t load the chart. <a href="${chartUrl}" target="_blank" rel="noopener">Open it in a new tab \u2192</a></p>`,chartLoaded=!1}))},openChart=()=>{if(!modal){window.open(chartUrl,"_blank","noopener");return}loadChart(),modal.hidden=!1,document.body.style.overflow="hidden",track("proam_size_chart",{})},closeChart=()=>{modal&&(modal.hidden=!0,document.body.style.overflow="")};modal&&(modal.querySelectorAll("[data-pak-modal-close]").forEach(b=>b.addEventListener("click",closeChart)),document.addEventListener("keydown",e=>{e.key==="Escape"&&!modal.hidden&&closeChart()}));const addSizeLinks=()=>{root.querySelectorAll("select[data-pak-size], select[data-pak-size-all], select[data-pak-wet-size]").forEach(sel=>{const lab=sel.closest("label");if(!lab||lab.parentNode.querySelector('.pak-sizelink[data-for="'+(sel.id||lab.dataset.sl||"")+'"]')||lab.nextElementSibling&&lab.nextElementSibling.classList&&lab.nextElementSibling.classList.contains("pak-sizelink"))return;const b=document.createElement("button");b.type="button",b.className="pak-sizelink",b.textContent=root.dataset.sizeChartLabel||"size chart",b.addEventListener("click",openChart),lab.insertAdjacentElement("afterend",b)})},_renderItemsWithLinks=renderItems;root.querySelectorAll("[data-pak-gender]").forEach(btn=>{btn.addEventListener("click",()=>{root.querySelectorAll("[data-pak-gender]").forEach(b=>{b.classList.remove("on"),b.setAttribute("aria-checked","false")}),btn.classList.add("on"),btn.setAttribute("aria-checked","true");const changed=state.gender!==btn.dataset.pakGender;state.gender=btn.dataset.pakGender;try{localStorage.setItem("deboer_proam_fit",state.gender)}catch{}changed&&(filterWet(),renderItems()),refresh()})});const steps={};root.querySelectorAll("[data-pak-step]").forEach(s=>{steps[s.dataset.pakStep]=s});const psteps={};root.querySelectorAll("[data-pak-pstep]").forEach(p=>{psteps[p.dataset.pakPstep]=p});const visibleItems=()=>items.filter(it=>!it.el.hidden),canAdvance=name=>{if(name==="athlete")return!!state.gender;if(name==="required")return!!state.membership&&(!needsWetsuit||!!state.wetsuit);if(name==="sizes"){const vis=visibleItems();return vis.length>0&&vis.every(it=>!!it.variant)}return!0},headerEl=document.querySelector(".db-nav-wrap"),scrollTo=()=>{const stickyH=headerEl&&getComputedStyle(headerEl).position==="sticky"?headerEl.offsetHeight:0,top=shell.getBoundingClientRect().top+window.pageYOffset-stickyH-8;window.scrollTo({top:Math.max(0,top),behavior:"smooth"})},showStep=(name,doScroll)=>{state.current=name,track("proam_kit_step",{step:name,step_index:order.indexOf(name)+1,role:root.dataset.role}
11),Object.keys(steps).forEach(k=>{steps[k].hidden=k!==name});const idx=order.indexOf(name);order.forEach((k,i)=>{psteps[k]&&psteps[k].classList.toggle("on",i===idx),psteps[k]&&psteps[k].classList.toggle("done",i<idx)}),doScroll&&scrollTo(),refresh()};root.querySelectorAll("[data-pak-next]").forEach(b=>b.addEventListener("click",()=>{const i=order.indexOf(state.current);canAdvance(state.current)&&i<order.length-1&&showStep(order[i+1],!0)})),root.querySelectorAll("[data-pak-back]").forEach(b=>b.addEventListener("click",()=>{const i=order.indexOf(state.current);i>0&&showStep(order[i-1],!0)})),root.querySelectorAll("[data-pak-pstep]").forEach(p=>p.addEventListener("click",()=>{const ti=order.indexOf(p.dataset.pakPstep),ci=order.indexOf(state.current);if(ti<=ci){showStep(order[ti],!0);return}for(let k=0;k<ti;k++)if(!canAdvance(order[k]))return;showStep(order[ti],!0)}));const lines=()=>{const out=[];return state.membership&&out.push({key:"membership",label:"Membership pack",qty:1,...state.membership}),needsWetsuit&&state.wetsuit&&out.push({key:"wetsuit",label:"Technical wetsuit",qty:1,...state.wetsuit}
11),visibleItems().forEach(it=>{(it.variants&&it.variants.length?it.variants:it.variant?[it.variant]:[]).forEach((v,k)=>out.push({key:"item"+it.i+"-"+k,label:it.label,qty:it.qty,...v}))}),out},total=()=>lines().reduce((s,l)=>s+l.price*l.qty,0),reviewEl=root.querySelector("[data-pak-review]"),totalEl=root.querySelector("[data-pak-total]"),stickyCount=root.querySelector("[data-pak-sticky-count]"),stickyTotal=root.querySelector("[data-pak-sticky-total]"),stickyGo=root.querySelector("[data-pak-sticky-go]"),submitBtn=root.querySelector("[data-pak-submit]"),errEl=root.querySelector("[data-pak-error]"),refresh=()=>{Object.keys(steps).forEach(k=>{const b=steps[k].querySelector("[data-pak-next]");b&&(b.disabled=!canAdvance(k))}),memEl&&memEl.classList.toggle("is-done",!!state.membership),wetEl&&wetEl.classList.toggle("is-done",!!state.wetsuit),items.forEach(it=>it.el.classList.toggle("is-done",!!it.variant));const ls=lines(),n=ls.reduce((s,l)=>s+l.qty,0);if(stickyCount&&(stickyCount.textContent=n+(n===1?" item":" items")),stickyTotal&&(stickyTotal.textContent=money(total())),totalEl&&(totalEl.textContent=money(total())),stickyGo){const last=state.current==="review";stickyGo.disabled=!canAdvance(state.current),stickyGo.innerHTML=(last?submitBtn?submitBtn.textContent.replace(/[→\s]+$/,"").trim():"Add my kit":"Continue")+' <span class="ar">&rarr;</span>'}reviewEl&&state.current==="review"&&(reviewEl.innerHTML=ls.map(l=>`<li><span>${l.title}${l.qty>1?" \xD7"+l.qty:""}<small>${l.label}${l.sub?" \xB7 "+l.sub:""}</small></span><b>${l.price?money(l.price*l.qty):"included"}</b></li>`).join(""))};stickyGo&&stickyGo.addEventListener("click",()=>{if(state.current==="review")submit();else{const i=order.indexOf(state.current);canAdvance(state.current)&&showStep(order[i+1],!0)}});let busy=!1;const submit=async()=>{if(busy)return;const ls=lines();if(!ls.length||!canAdvance("required")||!canAdvance("sizes"))return;busy=!0,submitBtn&&(submitBtn.disabled=!0),stickyGo&&(stickyGo.disabled=!0),errEl&&(errEl.hidden=!0);const nonce="k"+Date.now().toString(36)+Math.random().toString(36).slice(2,6),payload={items:ls.map(l=>({id:Number(l.id),quantity:l.qty,properties:{_proam:year,_kit:nonce,_proam_fit:state.gender||"","ProAm kit":(l.key==="wetsuit"?"Required suit ":"Base ")+year}}))};try{const r=await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(payload)}),d=await r.json().catch(()=>({}));if(!r.ok)throw new Error(d.description||d.message||"Could not add the kit.");track("proam_kit_add",{count:ls.length,total:total()/100,role:root.dataset.role,wetsuit:!!state.wetsuit}),window.location.href=root.dataset.after||"/cart"}catch(e){busy=!1,submitBtn&&(submitBtn.disabled=!1),stickyGo&&(stickyGo.disabled=!1),errEl&&(errEl.textContent=e&&e.message||"Could not add the kit. Try again.",errEl.hidden=!1)}};submitBtn&&submitBtn.addEventListener("click",submit),resolveMembership(),filterWet(),renderItems(),addSizeLinks(),new MutationObserver(()=>addSizeLinks()).observe(root.querySelector("[data-pak-items]")||root,{childList:!0,subtree:!0}),showStep("athlete",!1)}}customElements.define("deboer-proam-kit",DeboerProamKit)}}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-proam-upsell"]&&!Shopify.designMode))try{if(!customElements.get("deboer-proam-upsell")){class DeboerProamUpsell extends HTMLElement{connectedCallback(){const track=(n,p)=>{window.deboer&&window.deboer.track&&window.deboer.track(n,p)};if(this.querySelectorAll("[data-pau-card]").forEach(card=>this.wireCard(card,track)),this.suitHandles=(this.dataset.pauSuitHandles||"").split("|").filter(Boolean),this.suitRequired=this.dataset.pauSuitRequired==="true",this.suitRow=this.querySelector("[data-pau-suit-row]"),this.dataset.pauFitKnown!=="1"){let saved=null;try{saved=localStorage.getItem("deboer_proam_fit")}catch{}(saved==="mens"||saved==="womens")&&(this.dataset.pauFit=saved)}const syncFit=()=>this.querySelectorAll("[data-pau-fit-btn]").forEach(b=>b.setAttribute("aria-pressed",b.dataset.pauFitBtn===this.dataset.pauFit?"true":"false"));syncFit(),this.querySelectorAll("[data-pau-fit-btn]").forEach(b=>b.addEventListener("click",()=>{this.dataset.pauFit=b.dataset.pauFitBtn;try{localStorage.setItem("deboer_proam_fit",this.dataset.pauFit)}catch{}syncFit(),track("proam_upsell_fit",{fit:this.dataset.pauFit})})),this.suitRow&&this.dataset.pauSuitInCart&&this.suitRow.classList.add("has-suit"),this.querySelectorAll("[data-pau-checkout]").forEach(b=>b.addEventListener("click",e=>{if(b.classList.contains("is-blocked")){e.preventDefault();const r=this.querySelector("[data-pau-suit-row]");r&&r.scrollIntoView({behavior:"smooth"});return}track("proam_upsell_checkout",{})}));const noBtn=this.querySelector("[data-pau-decline]");noBtn&&noBtn.addEventListener("click",()=>track("proam_upsell_decline",{}));const bar=this.querySelector("[data-pau-gated]");if(bar){const firstCard=this.querySelector("[data-pau-card]");if(!firstCard||typeof IntersectionObserver>"u")bar.classList.add("is-shown");else{const io=new IntersectionObserver(entries=>
11{entries.forEach(e=>{!e.isIntersecting&&e.boundingClientRect.top<0&&(bar.classList.add("is-shown"),io.disconnect())})});io.observe(firstCard)}}const copyBtn=this.querySelector("[data-pau-copy]"),shareBtn=this.querySelector("[data-pau-share]");if(copyBtn){const sharePath=(copyBtn.dataset.pauSharePath||"").trim()||"/pages/pro-am-kit",shareUrl=/^https?:/i.test(sharePath)?sharePath:location.origin+sharePath;shareBtn&&navigator.share&&(shareBtn.hidden=!1,shareBtn.addEventListener("click",()=>{navigator.share({title:document.title,url:shareUrl}).then(()=>track("proam_upsell_share",{method:"share"})).catch(()=>{})}));const copyLabel=copyBtn.textContent;copyBtn.addEventListener("click",()=>{navigator.clipboard&&navigator.clipboard.writeText(shareUrl).then(()=>{copyBtn.textContent=copyBtn.dataset.copiedLabel||"link copied",setTimeout(()=>{copyBtn.textContent=copyLabel},2200),track("proam_upsell_share",{method:"copy"})}).catch(()=>{})})}this.refreshCartLine();const memberEmail=(this.dataset.pauMemberEmail||"").trim().toLowerCase();memberEmail&&this.dataset.pauProxy&&fetch(this.dataset.pauProxy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({guardianEmail:memberEmail,check:!0})}).then(r=>r.ok?r.json():null).then(d=>{if(d&&d.eligible&&typeof d.allowance=="number"){let prev=null;try{prev=JSON.parse(sessionStorage.getItem("deboerProamAllow")||"null")}catch{}sessionStorage.setItem("deboerProamAllow",JSON.stringify({allowance:d.allowance,used:d.used||0,tiers:d.tiers&&d.tiers.basic&&d.tiers.premium?d.tiers:prev&&prev.tiers||null,backpackVariantId:prev&&prev.backpackVariantId||null})),this.refreshCartLine()}}).catch(()=>{})}wireCard(card,track){const addBtn=card.querySelector("[data-pau-add]"),hint=card.querySelector("[data-pau-hint]"),memberEl=card.querySelector("[data-pau-member]"),fullEl=card.querySelector("[data-pau-full]"),pct=Number(card.dataset.pauPct||this.dataset.pct||30),mapEl=card.querySelector("[data-pau-variants]"),variants=mapEl?JSON.parse(mapEl.textContent):null,optRows=Array.from(card.querySelectorAll("[data-pau-opt]")),sel={};optRows.forEach(row=>{sel[row.dataset.pauOpt]=null});const money=cents=>{try{const fmt=window.Shopify&&Shopify.currency&&Shopify.currency.active||"USD";return new Intl.NumberFormat(void 0,{style:"currency",currency:fmt}).format(cents/100)}catch{return"$"+(cents/100).toFixed(2)}},matches=(v,ignoreIdx)=>{for(const idx of Object.keys(sel)){if(idx===ignoreIdx||sel[idx]===null)continue;if((idx==="1"?v.o1:v.o2)!==sel[idx])return!1}return!0},resolved=()=>!variants||Object.values(sel).some(v=>v===null)?null:variants.find(v=>v.avail&&matches(v))||null,refresh=()=>{optRows.forEach(row=>{const idx=row.dataset.pauOpt;row.querySelectorAll("[data-pau-val]").forEach(btn=>{const val=btn.dataset.pauVal,ok=variants.some(v2=>v2.avail&&(idx==="1"?v2.o1:v2.o2)===val&&matches(v2,idx));btn.disabled=!ok,ok||btn.classList.remove("on")})});const v=resolved();addBtn&&!card.dataset.pauUnavailable&&(addBtn.disabled=!v&&!card.dataset.pauSingle),hint&&(hint.hidden=!!(v||card.dataset.pauSingle)),v&&memberEl&&fullEl&&(fullEl.textContent=money(v.price),memberEl.textContent=money(Math.round(v.price*(100-pct)/100)))};if(optRows.forEach(row=>{row.querySelectorAll("[data-pau-val]").forEach(btn=>{btn.classList.contains("on")&&(sel[row.dataset.pauOpt]=btn.dataset.pauVal),btn.addEventListener("click",()=>{row.querySelectorAll("[data-pau-val]").forEach(b=>b.classList.remove("on")),btn.classList.add("on"),sel[row.dataset.pauOpt]=btn.dataset.pauVal,refresh()})});const btns=row.querySelectorAll("[data-pau-val]");btns.length===1&&(btns[0].classList.add("on"),sel[row.dataset.pauOpt]=btns[0].dataset.pauVal)}),variants&&refresh(),addBtn){const label=addBtn.textContent;addBtn.addEventListener("click",()=>{const v=resolved(),id=v?v.id:Number(card.dataset.pauSingle||0);if(!id)return;const doAdd=()=>this.addVariant(card,addBtn,label,id,track);if(card.dataset.pauSuit&&window.deboer&&window.deboer.consult&&!window.deboer.consult.acked()){window.deboer.consult.ask({name:card.dataset.pauTitle||"",fitUrl:this.dataset.pauFitUrl||"",fitEmail:this.dataset.pauFitEmail||"",surface:"proam_upsell"},doAdd);return}doAdd()})}}addVariant(card,addBtn,label,id,track){if(this._adding)return;this._adding=!0;const release=()=>{this._adding=!1};addBtn.disabled=!0,this.postAdd(card,addBtn,label,id,track).finally(release)}postAdd(card,addBtn,label,id,track){return fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({id:Number(id),quantity:1})}).then(r=>r.json().then(data=>({ok:r.ok,data}))).then(({ok,data})=>{if(!ok){addBtn.classList.add("is-err"),addBtn.textContent=data&&(data.description||data.message)||"Could not add \u2014 try again",setTimeout(()=>{addBtn.classList.remove("is-err"),addBtn.textContent=label,addBtn.disabled=!1},3200);return}track("proam_upsell_add",{item:card.dataset.pauTitle||""}),addBtn.textContent="\u2713 Added",setTimeout(()=>{addBtn.textContent=label,addBtn.disabled=!1},2200),this.refreshCartLine(),document.dispatchEvent(new CustomEvent("cart:refresh",{bubbles:!0}))}).catch(()=>{addBtn.classList.add("is-err"),addBtn.textContent="Network error \u2014 try again",setTimeout(()=>{addBtn.classList.remove("is-err"),addBtn.textContent=label,addBtn.disabled=!1},3200)})}refreshCartLine(){const lines=this.querySelectorAll("[data-pau-cartline]"),mores=this.querySelectorAll("[data-pau-more]");!lines.length&&!mores.length||fetch("/cart.js",{headers:{Accept:"application/json"}}).then(r=>r.json()).then(cart=>{const n=cart.item_count||0,hasKit=(cart.items||[]).some(it=>it.properties&&it.properties._proam),text=n===0?this.dataset.pauEmptyLine||"your cart is empty \u2014 build your kit first":n+(n===1?" item":" items")+" in y
11our cart"+(hasKit?" \xB7 "+(this.dataset.pauLineSuffix||"welcome pack free at checkout"):"");lines.forEach(el=>{el.textContent=text});const suits=(cart.items||[]).filter(it=>this.suitHandles.indexOf(it.handle)!==-1),suit=suits[0],suitBlocked=this.suitRequired&&!suit,emptyBlocked=this.dataset.pauReturn==="1"&&!hasKit&&n===0,blocked=suitBlocked||emptyBlocked,declineBtn=this.querySelector("[data-pau-decline]");if(declineBtn&&(declineBtn.hidden=blocked||this.dataset.pauReturn==="1"&&!hasKit),this.querySelectorAll("[data-pau-checkout]").forEach(a=>{a.classList.toggle("is-blocked",blocked),blocked?a.setAttribute("aria-disabled","true"):a.removeAttribute("aria-disabled");const lab=a.querySelector("[data-pau-checkout-label]");lab&&(lab.textContent=suitBlocked?this.dataset.pauSuitBlockLabel||"add your wetsuit to continue":blocked?this.dataset.pauEmptyLabel||"add something to your cart first":this.dataset.pauContinueLabel||"Continue to checkout")}),this.suitRow){this.suitRow.classList.toggle("has-suit",!!suit);const st=this.suitRow.querySelector("[data-pau-suit-state]"),stt=this.suitRow.querySelector("[data-pau-suit-state-text]");st&&(st.hidden=!suit),suit&&stt&&(stt.textContent=(suits.length>1?"your wetsuits: ":"your wetsuit: ")+suits.map(s=>s.product_title+(s.variant_title&&s.variant_title!=="Default Title"?" \xB7 "+s.variant_title:"")+(s.quantity>1?" \xD7"+s.quantity:"")).join(", ")+" \u2014 add another below, or change sizes in the cart.")}if(mores.length&&this.dataset.pauProxy)try{const a=JSON.parse(sessionStorage.getItem("deboerProamAllow")||"null"),bpId=a&&a.backpackVariantId?Number(a.backpackVariantId):null,groups={};(cart.items||[]).forEach(it=>{const p=it.properties||{};p._claim&&(groups[p._claim]=groups[p._claim]||bpId!==null&&Number(it.variant_id)===bpId)});const claimIds=Object.keys(groups),legacy=(cart.items||[]).filter(it=>(it.handle||"").indexOf("proam-legacy-never")===0),legacyUnits=legacy.reduce((s,it)=>s+(it.quantity||1),0),inCart=claimIds.length+legacyUnits,left=a?(a.allowance||1)-(a.used||0)-inCart:0,tiers=a&&a.tiers;let split=null;if(tiers&&tiers.basic&&tiers.premium&&Number(tiers.basic.allowance)>0&&Number(tiers.premium.allowance)>0){const inP=claimIds.filter(k=>groups[k]).length+legacy.filter(it=>(it.handle||"").indexOf("premium")!==-1).reduce((s,it)=>s+(it.quantity||1),0),inB=inCart-inP;split={b:Math.max(0,(Number(tiers.basic.remaining)||0)-inB),p:Math.max(0,(Number(tiers.premium.remaining)||0)-inP)}}mores.forEach(more=>{if(more.hidden=!(left>0),left>0){const em=more.querySelector("[data-pau-more-n]");em&&(em.textContent=left);const word=more.querySelector("[data-pau-more-word]");word&&(word.textContent=(left===1?"pack":"packs")+(split&&split.b+split.p>0?" ("+split.b+" basic, "+split.p+" premium)":""))}})}catch{}}).catch(()=>{})}}customElements.define("deboer-proam-upsell",DeboerProamUpsell)}}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-race-week"]&&!Shopify.designMode))try{(function(){var TAG="deboer-race-week";if(customElements.get(TAG))return;var S=window.deboerStrings||{};function track(n,p){try{window.deboer&&deboer.track&&deboer.track(n,p||{})}catch{}}function esc(s){return String(s??"").replace(/[&<>"']/g,function(c){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[c]})}function money(cents){var f=S.currencyFmt||"$[amount]",v=cents/100;return f.replace("[amount]",v%1===0?v.toFixed(0):v.toFixed(2))}var lang=document.documentElement.lang||"en",dtf;try{dtf=new Intl.DateTimeFormat(lang,{month:"short",day:"numeric"})}catch{}function fmt(d){return dtf?dtf.format(d):d.getMonth()+1+"/"+d.getDate()}class DeboerRaceWeek extends HTMLElement{connectedCallback(){var self=this;this.$=function(k2){return this.querySelector('[data-rw="'+k2+'"]')}.bind(this),this.stdDays=parseInt(this.getAttribute("data-std-days")||"8",10),this.expDays=parseInt(this.getAttribute("data-exp-days")||"4",10),this.race=null;var now=new Date;now.setHours(0,0,0,0),this.now=now,[].slice.call(this.querySelectorAll("[data-race]")).forEach(function(b2){var d=new Date((b2.getAttribute("data-race")==="",b2.getAttribute("data-date")+"T00:00:00")),days=Math.round((d-now)/864e5);if(days<0){b2.hidden=!0;return}var el=b2.querySelector("[data-race-days]");el&&(el.textContent=days===1?S.raceDayOne||"1 day to go":(S.raceDays||"[count] days to go").replace("[count]",days)),b2.addEventListener("click",function(){self.pick({name:b2.getAttribute("data-name"),slug:b2.getAttribute("data-slug"),date:d,water:parseInt(b2.getAttribute("data-water"),10),note:b2.getAttribute("data-note")},b2)})});var od=this.$("other-date"),on=this.$("other-name"),ol=this.$("other-loc"),ow=this.$("other-water"),otherPick=function(){if(!(!od||!od.value)){var nm=on&&on.value.trim()||"";self.pick({name:nm,slug:nm?nm.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,40):"other",date:new Date(od.value+"T00:00:00"),water:ow&&ow.value?parseInt(ow.value,10):NaN,note:"",loc:ol&&ol.value.trim()||"",free:!0},null)}};od&&od.addEventListener("change",otherPick),ow&&ow.addEventListener("change",otherPick),on&&on.addEventListener("change",otherPick),[].slice.call(this.querySelectorAll("[data-item]")).forEac
11h(function(row){var t=row.querySelector("[data-toggle]");t&&t.addEventListener("click",function(){var on2=!row.classList.contains("is-on");row.classList.toggle("is-on",on2),t.setAttribute("aria-pressed",on2?"true":"false"),t.innerHTML=on2?"&#10003;":"",self.sum()});var s=row.querySelector("select[data-size]");s&&s.addEventListener("change",function(){s.value&&!row.classList.contains("is-on")?t.click():self.sum()})}),this.$("add").addEventListener("click",function(){self.add()});var capRace=this.$("cap-race"),capOther=this.$("cap-other");capRace&&capRace.addEventListener("change",function(){capOther.hidden=capRace.value!=="other"});var form=this.querySelector(".rwk__form");form&&form.addEventListener("submit",function(){self.stampTags()},!0);try{if(window.deboer&&deboer.gender){var g=deboer.gender.get().g;g&&[].slice.call(this.querySelectorAll("[data-item][data-gender]")).forEach(function(r){var rg=r.getAttribute("data-gender");rg!=="all"&&rg!==g&&(r.hidden=!0,r.classList.remove("is-on"))})}}catch{}var params=new URLSearchParams(location.search),want=params.get("race");if(!want)try{var k=JSON.parse(localStorage.getItem("deboer_kit")||"null");want=k&&k.state&&k.state.raceSlug}catch{}if(want){var b=this.querySelector('[data-race][data-slug="'+want+'"]');b&&!b.hidden&&b.click()}this.sum(),track("race_week_view",{})}pick(r,btn){this.race=r,[].slice.call(this.querySelectorAll("[data-race]")).forEach(function(b){b.classList.toggle("is-on",b===btn)});var std=new Date(r.date);std.setDate(std.getDate()-this.stdDays);var exp=new Date(r.date);exp.setDate(exp.getDate()-this.expDays);var box=this.$("deadlines");box.hidden=!1,this.$("std").textContent=fmt(std),this.$("exp").textContent=fmt(exp);var stdOpen=std>=this.now,expOpen=exp>=this.now,weeks=Math.max(0,Math.round((r.date-this.now)/864e5/7)),note=this.$("dl-note"),closed=this.$("dl-closed");closed.hidden=expOpen,note.hidden=!stdOpen,stdOpen&&(note.innerHTML=esc(S.raceWeekNote||"Order by [std] and you get [weeks] weeks to swim in it before race day \u2014 which is what we\u2019d actually recommend.").replace("[std]","<b>"+esc(fmt(std))+"</b>").replace("[weeks] ","<b>"+weeks+"</b> "));var wn=this.$("water-note");wn.hidden=!0,[].slice.call(this.querySelectorAll("[data-item][data-tmin]")).forEach(function(row){var f=row.querySelector("[data-water-flag]");if(f){if(isNaN(r.water)){f.hidden=!0;return}var tmin=parseInt(row.getAttribute("data-tmin"),10),tmax=parseInt(row.getAttribute("data-tmax"),10),bad=r.water<tmin||r.water>tmax;if(f.hidden=!bad,bad){var kitA=document.querySelector(".rwk__sum-btns a");f.innerHTML=esc((S.raceWaterFlag||"Forecast water is about [t]\xB0C \u2014 outside this suit\u2019s band.").replace("[t]",r.water))+' <a href="'+esc(kitA?kitA.getAttribute("href"):"#")+'">'+esc(S.raceWaterFlagLink||"See what fits it better \u2192")+"</a>"}}}),r.note&&(wn.hidden=!1,wn.textContent=r.note);var capRace=this.$("cap-race");if(capRace){var opt=[].slice.call(capRace.options).filter(function(o){return o.getAttribute("data-slug")===r.slug})[0];capRace.value=opt?opt.value:"other",this.$("cap-other").hidden=!!opt,!opt&&this.$("cap-date")&&(this.$("cap-date").value=r.date.toISOString().slice(0,10)),r.loc&&this.$("cap-loc")&&(this.$("cap-loc").value=r.loc)}var capName=this.$("cap-race-name");capName&&(capName.value=r.free?r.name:""),track("race_week_pick",{race:r.slug||"other",days:Math.round((r.date-this.now)/864e5),std_open:stdOpen,exp_open:expOpen});try{window.scrollTo({top:box.getBoundingClientRect().top+window.scrollY-90,behavior:"smooth"})}catch{}}lines(){return[].slice.call(this.querySelectorAll("[data-item].is-on:not([hidden])")).map(function(row){var s=row.querySelector("[data-size]");return{id:s?s.value:"",price:parseInt(row.getAttribute("data-price"),10)||0,handle:row.getAttribute("data-handle"),needsSize:!!(s&&s.tagName==="SELECT"&&!s.value)}})}sum(){var ls=this.lines(),total=ls.reduce(function(a,l){return a+l.price},0),ready=ls.length>0&&ls.every(function(l){return l.id&&!l.needsSize}),std="";if(this.race){var d=new Date(this.race.date);d.setDate(d.getDate()-this.stdDays),d>=this.now&&(std=fmt(d))}this.$("sum").innerHTML="<b>"+esc((S.raceWeekSum||"[n] selected \u2014 [total]").replace("[n]",ls.length).replace("[total]",money(total)))+"</b>
11"+(std?" \xB7 "+esc((S.raceWeekSumStd||"order by [std] on standard").replace("[std]",std)):""),this.$("add").disabled=!ready}add(){var self=this,ls=this.lines(),btn=this.$("add");!ls.length||ls.some(function(l){return!l.id})||(btn.disabled=!0,fetch(this.getAttribute("data-add-url"),{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({items:ls.map(function(l){return{id:l.id,quantity:1,properties:{_race:self.race&&self.race.slug||"other",_kit:"race"+Date.now().toString(36)}}})})}).then(function(r){if(!r.ok)throw new Error("add");return r.json()}).then(function(){track("race_week_add",{count:ls.length,race:self.race&&self.race.slug||"none"}),location.href=self.getAttribute("data-cart-url")||"/cart"}).catch(function(){btn.disabled=!1,alert(S.raceWeekAddError||"Something didn\u2019t add \u2014 try again.")}))}stampTags(){var tags=["aud:wetsuit","int:race"],capRace=this.$("cap-race"),capDate=this.$("cap-date"),capLoc=this.$("cap-loc"),opt=capRace&&capRace.options[capRace.selectedIndex],slug=opt&&opt.getAttribute("data-slug"),date=opt&&opt.getAttribute("data-date");if(capRace&&capRace.value==="other"){var cn=this.$("cap-race-name");slug=cn&&cn.value.trim()?cn.value.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,40):"other",date=capDate&&capDate.value}slug&&tags.push("race:"+slug),date&&tags.push("racedate:"+date);var loc=capLoc&&capLoc.value.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,40);loc&&tags.push("race-loc:"+loc);var t=this.$("cap-tags");t&&(t.value=tags.join(", "))}}customElements.define(TAG,DeboerRaceWeek)})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-race-widget"]&&!Shopify.designMode))try{class RaceWidget extends HTMLElement{connectedCallback(){if(!this._done){this._done=!0;var data;try{data=JSON.parse(this.querySelector(".racew-data").textContent)}catch{return}var filter=this.getAttribute("data-filter")||"";filter==="all"&&(filter="");var now=new Date;now.setHours(0,0,0,0);var lang=document.documentElement.lang||"en",fmtD;try{var dtf=new Intl.DateTimeFormat(lang,{month:"short",day:"numeric"});fmtD=function(d2){return dtf.format(d2)}}catch{fmtD=function(d2){return d2.getMonth()+1+"/"+d2.getDate()}}for(var race=null,rd=null,i=0;i<data.length;i++){var d=new Date(data[i].date+"T00:00:00");if(d>=now&&(!filter||data[i].type===filter)){race=data[i],rd=d;break}}if(!race){this.remove();return}var days=Math.round((rd-now)/864e5),std=new Date(rd);std.setDate(std.getDate()-8);var exp=new Date(rd);exp.setDate(exp.getDate()-4);var T=this.dataset,ship=std>=now?(T.tOrderBy||"Order by [std] standard \xB7 [exp] express").replace("[std]",fmtD(std)).replace("[exp]",fmtD(exp)):exp>=now?(T.tExpressOnly||"Standard window closed \u2014 order express by [exp]").replace("[exp]",fmtD(exp)):T.tClosed||"Shipping window closed for this race",daysText=days===1?T.tDayOne||"1 day to go":(T.tDays||"[count] days to go").replace("[count]",days),ey=this.getAttribute("data-eyebrow")||"",esc=function(s){return(s||"").replace(/&/g,"&amp;").replace(/</g,"&lt;")},cta=race.href?'<a class="racew__cta" href="'+race.href+'">'+esc(race.cta)+" &rarr;</a>":"";this.innerHTML='<div class="racew"><div class="racew__in"><span class="racew__ey">'+esc(ey)+'</span><span class="racew__race">'+esc(race.nm)+" <span>\xB7 "+esc(race.loc)+" \xB7 "+fmtD(rd)+'</span></span><span class="racew__count">'+daysText+'</span><span class="racew__ship">'+esc(ship)+"</span>"+cta+"</div></div>"}}}customElements.get("race-widget")||customElements.define("race-widget",RaceWidget)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-science-flume"]&&!Shopify.designMode))try{(function(){function initFlux(root){for(var figs=root.querySelectorAll('.flumetoy .fig[data-toy="flux"]'),i=0;i<figs.length;i++){var fig=figs[i];fig._fluxInit||(fig._fluxInit=!0,(function(fig2){var el=function(name){return fig2.querySelector('[data-toy-el="'+name+'"]')},sl=el("fxSlider");if(!sl)return;var cx=260,cy=200,r=70,edge=600;function P(a){var rad=a*Math.PI/180;return[cx+r*Math.cos(rad),cy+r*Math.sin(rad)]}function arc(a1,a2){var p1=P(a1),p2=P(a2);return"M "+p1[0].toFixed(1)+" "+p1[1].toFixed(1)+" A "+r+" "+r+" 0 0 "+(a2>a1?1:0)+" "+p2[0].toFixed(1)+" "+p2[1].toFixed(1)}function upd(){var t=sl.value/100,sepA=-76+44*t,s1=P(sepA),s2=P(-sepA),wh=88-56*t,flare=22*(1-t);el("fxWake").setAttribute("d","M "+s1[0].toFixed(1)+" "+s1[1].toFixed(1)+" C "+(s1[0]+70).toFixed(1)+" "+(s1[1]-flare).toFixed(1)+" "+(edge-130)+" "+(cy-wh).toFixed(1)+" "+edge+" "+(cy-wh).toFixed(1)+" L "+edge+" "+(cy+wh).toFixed(1)+" C "+(edge-130)+" "+(cy+wh).toFixed(1)+" "+(s2[0]+
1170).toFixed(1)+" "+(s2[1]+flare).toFixed(1)+" "+s2[0].toFixed(1)+" "+s2[1].toFixed(1)+" Z"),el("fxArcT").setAttribute("d",arc(-150,sepA)),el("fxArcB").setAttribute("d",arc(150,-sepA)),el("fxArcT").setAttribute("opacity",(.15+.85*t).toFixed(2)),el("fxArcB").setAttribute("opacity",(.15+.85*t).toFixed(2)),el("fxSepT").setAttribute("cx",s1[0].toFixed(1)),el("fxSepT").setAttribute("cy",s1[1].toFixed(1)),el("fxSepB").setAttribute("cx",s2[0].toFixed(1)),el("fxSepB").setAttribute("cy",s2[1].toFixed(1)),el("fxTex").setAttribute("opacity",t.toFixed(2)),el("fxEddies").setAttribute("opacity",(1-.75*t).toFixed(2)),el("fxPct").textContent=Math.round(27*t),el("fxTitle").textContent=t<.15?"SMOOTH FABRIC":t>.85?"DEBOER 3DIUM\u2122":"TEXTURING\u2026 "+sl.value+"%",el("fxWakeLab").textContent=t>.6?"THIN WAKE":"THICK WAKE";var bl=el("fxBL"),sp=el("fxSep"),wk=el("fxWk");bl.textContent=t>.6?"Turbulent \xB7 attached":t>.25?"Transitioning":"Laminar \xB7 fragile",sp.textContent=t>.6?"Late":t>.25?"Sliding back":"Early",wk.textContent=t>.6?"Thin":t>.25?"Narrowing":"Thick",bl.className=sp.className=wk.className=t>.6?"good":""}sl.addEventListener("input",upd),upd()})(fig))}}function boot(){initFlux(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",boot):boot(),document.addEventListener("shopify:section:load",function(e){initFlux(e.target)})})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-science-principle"]&&!Shopify.designMode))try{(function(){function initToys(root){for(var figs=root.querySelectorAll(".principle .fig[data-toy]"),i=0;i<figs.length;i++)initToy(figs[i]);function initToy(fig){if(!fig._toyInit){fig._toyInit=!0;var kind=fig.getAttribute("data-toy"),el=function(name){return fig.querySelector('[data-toy-el="'+name+'"]')};kind==="vel"?(function(){var sl=el("vSlider");if(!sl)return;var X0=64,X1=604,Y0=300,Y1=40,vmin=1,vmax=2.2,base=1.2,dmax=Math.pow(vmax/base,2);function sx(v2){return X0+(v2-vmin)/(vmax-vmin)*(X1-X0)}function sy(rel){return Y0-rel/dmax*(Y0-Y1)}for(var d="",v=vmin;v<=vmax+1e-6;v+=.04)d+=(d?" L":"M")+sx(v).toFixed(1)+" "+sy(Math.pow(v/base,2)).toFixed(1);el("vCurve").setAttribute("d",d);function upd(){for(var vv=sl.value/100,rel=Math.pow(vv/base,2),px=sx(vv),py=sy(rel),f="M "+X0+" "+Y0,t=vmin;t<=vv+1e-6;t+=.04)f+=" L "+sx(t).toFixed(1)+" "+sy(Math.pow(t/base,2)).toFixed(1);f+=" L "+px.toFixed(1)+" "+Y0+" Z",el("vFill").setAttribute("d",f),el("vDot").setAttribute("cx",px.toFixed(1)),el("vDot").setAttribute("cy",py.toFixed(1));var g=el("vGuide");g.setAttribute("x1",px.toFixed(1)),g.setAttribute("y1",py.toFixed(1)),g.setAttribute("x2",px.toFixed(1)),g.setAttribute("y2",Y0),el("vRel").textContent=rel.toFixed(2),el("vSpd").textContent=vv.toFixed(2)+" m/s";var sec=100/vv,mm=Math.floor(sec/60),ss=Math.round(sec%60);el("vPace").textContent=mm+":"+(ss<10?"0":"")+ss}sl.addEventListener("input",upd),upd()})():kind==="buoy"?(function(){var sl=el("bSlider");if(!sl)return;
11var px=135,py=150,bodyLen=248,thick=30,maxAng=16,body=el("bBody"),lift=el("bLift");function upd(){var b=sl.value/100,ang=maxAng*(1-b);body.setAttribute("transform","rotate("+ang.toFixed(2)+" "+px+" "+py+")");var rad=ang*Math.PI/180,proj=thick*Math.cos(rad)+bodyLen*Math.sin(rad),srel=proj/thick;el("bRel").textContent=srel.toFixed(2),el("bAng").textContent=ang<.5?"Level":"\u2212"+ang.toFixed(0)+"\xB0",el("bHip").textContent=b>.6?"At surface":b>.3?"Lifting":"Sunk";var dr=el("bDrag");dr.textContent=b>.7?"Low":b>.35?"Medium":"High",dr.className=b>.7?"good":"",lift.setAttribute("opacity",b.toFixed(2))}sl.addEventListener("input",upd),upd()})():kind==="rho"&&(function(){var sl=el("denSlider");if(!sl)return;for(var dotsG=el("denDots"),N=260,dots=[],NS="http://www.w3.org/2000/svg",i2=0;i2<N;i2++){var c=document.createElementNS(NS,"circle"),x=28+i2*53%566+i2*17%18,y=22+i2*97%256;c.setAttribute("cx",x),c.setAttribute("cy",y),c.setAttribute("r",i2%5===0?2.4:1.7),c.setAttribute("fill","#0A0A0A"),c.setAttribute("opacity","0"),dotsG.appendChild(c),dots.push(c)}var arrow=el("denArrow");function upd(){for(var t=sl.value/100,k=Math.round(t*N),i3=0;i3<N;i3++)dots[i3].setAttribute("opacity",i3<k?"0.32":"0");var dens=1.2*Math.pow(997/1.2,t),ratio=Math.round(dens/1.2);el("denRel").textContent=ratio.toLocaleString(),el("denMed").textContent=t<.04?"Air":t>.96?"Water":"\u2191 denser",el("denDens").textContent=(dens<10?dens.toFixed(1):Math.round(dens).toLocaleString())+" kg/m\xB3";var L=18+t*120;arrow.setAttribute("d","M "+(392+L).toFixed(0)+" 150 L 392 150 M 406 141 L 392 150 L 406 159"),arrow.setAttribute("opacity",(.25+.75*t).toFixed(2))}sl.addEventListener("input",upd),upd()})()}}}function boot(){initToys(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",boot):boot(),document.addEventListener("shopify:section:load",function(e){initToys(e.target)})})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-science-weave"]&&!Shopify.designMode))try{(function(){function initWeave(root){for(var sections=root.querySelectorAll("[data-weave]"),i=0;i<sections.length;i++){var sec=sections[i];sec._weaveInit||(sec._weaveInit=!0,(function(sec2){var cv=sec2.querySelector("[data-weave-cv]");if(!cv)return;var ctx=cv.getContext("2d"),W=0,H=0,dpr=Math.min(window.devicePixelRatio||1,2);function size(){W=cv.clientWidth,H=cv.clientHeight,cv.width=W*dpr,cv.height=H*dpr,ctx.setTransform(dpr,0,0,dpr,0,0)}size(),window.addEventListener("resize",size);var N=88,Pts=[];function reset(p2,atStart){p2.x=atStart?Math.random()*W:-Math.random()*60,p2.y=Math.random()*H,p2.v=1+Math.random()*1.9,p2.len=18+Math.random()*42,p2.hot=Math.random()<.12}for(var k=0;k<N;k++){var p={};reset(p,!0),Pts.push(p)}function hex(cx,cy,r){ctx.beginPath();for(var a=0;a<6;a++){var ang=Math.PI/180*(60*a-30),x=cx+r*Math.cos(ang),y=cy+r*Math.sin(ang);a?ctx.lineTo(x,y):ctx.moveTo(x,y)}ctx.closePath(),ctx.stroke()}function hexes(){ctx.strokeStyle="rgba(227,244,6,0.10)",ctx.lineWidth=1;for(var r=13,h=r*Math.sqrt(3),yy=H*.64,row=0;yy<H+h;yy+=h*.5,row++)for(var xx=row%2?r*1.5:0;xx<W+r*3;xx+=r*3)hex(xx,yy,r)}function frame(){ctx.fillStyle="#0A0A0A",ctx.fillRect(0,0,W,H),hexes();for(var j=0;j<N;j++){var pp=Pts[j];pp.x+=pp.v;var amp=pp.y>H*.6?3:1.4,y=pp.y+Math.sin(pp.x*.012+pp.y*.05)*amp;ctx.strokeStyle=pp.hot?"rgba(227,244,6,0.85)":"rgba(244,242,238,0.26)",ctx.lineWidth=pp.hot?2:1.2,ctx.beginPath(),ctx.moveTo(pp.x,y),ctx.lineTo(pp.x-pp.len,y),ctx.stroke(),pp.x-pp.len>W&&reset(pp,!1)}}var raf=null,visible=!1,reduce=window.matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches;function loop(){frame(),raf=requestAnimationFrame(loop)}function start(){reduce||raf||!visible||document.hidden||loop()}function stop(){raf&&(cancelAnimationFrame(raf),raf=null)}reduce?frame():"IntersectionObserver"in window?(new IntersectionObserver(function(es){es.forEach(function(e){visible=e.isIntersecting,visible?start():stop()})},{threshold:.01}).observe(cv),document.addEventListener("visibilitychange",function(){document.hidden?stop():start()})):(visible=!0,start(),document.addEventListener("visibilitychange",function(){document.hidden?stop():start()}))})(sec))}}function boot(){initWeave(document)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",boot):boot(),document.addEventListener("shopify:section:load",function(e){initWeave(e.target)})})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-statement-hero"]&&!Shopify.designMode))try{class DheroCarousel extends HTMLElement{constructor(){if(super(),this.slides=Array.from(this.querySelectorAll(".dhero__slide")),this.slides.length<2||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;this.i=Math.max(0,this.slides.findIndex(s=>s.classList.contains("is-active")));const interval=parseInt(this.dataset.interval,10)||6e3;this.timer=setInterval(()=>this.advance(),interval);const host=this.closest(".dhero"),pbtn=host&&host.querySelector("[data-dhero-pause]");pbtn&&pbtn.addEventListener("click",()=>{const pausing=!!this.timer;pausing?(clearInterval(this.timer),this.timer=null):this.timer=setInterval(()=>this.advance(),interval),pbtn.setAttribute("aria-pressed",String(pausing)),pbtn.setAttribute("aria-label",pausing?pbtn.dataset.playLabel||"Play":pbtn.dataset.pauseLabel||"Pause")})}advance(){this.slides[this.i].classList.remove("is-active"),this.i=(this.i+1)%this.slides.length,this.slides[this.i].classList.add("is-active")}disconnectedCallback(){this.timer&&clearInterval(this.timer)}}customElements.define("dhero-carousel",DheroCarousel)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-support"]&&!Shopify.designMode))try{if(!customElements.get("deboer-accordion")){class DeboerAccordion extends HTMLElement{constructor(){super(),this.addEventListener("click",e=>{const btn=e.target.closest(".qa__q");
11if(!btn)return;const qa=btn.parentNode,a=qa.querySelector(".qa__a"),isOpen=qa.classList.contains("open");this.querySelectorAll(".qa.open").forEach(o=>{o.classList.remove("open");const oa=o.querySelector(".qa__a");oa&&(oa.style.maxHeight="0");const ob=o.querySelector(".qa__q");ob&&ob.setAttribute("aria-expanded","false")}),isOpen||(qa.classList.add("open"),a.style.maxHeight=a.scrollHeight+"px",btn.setAttribute("aria-expanded","true"))})}}customElements.define("deboer-accordion",DeboerAccordion)}(function(){var claimForm=document.getElementById("WarrantyClaimForm");if(claimForm){var posted=window.location.hash==="#WarrantyClaimForm",okContact=document.querySelector('[data-form-ok="contact"]'),okClaim=document.querySelector('[data-form-ok="claim"]');okClaim&&!posted&&(okClaim.style.display="none"),okContact&&posted&&(okContact.style.display="none");var order=claimForm.querySelector('[name="contact[Order number]"]'),mail=claimForm.querySelector("[data-claim-mail]"),sync=function(){var n=order&&order.value.trim()?order.value.trim():"____";mail&&(mail.href=mail.getAttribute("data-claim-mail")+"?subject="+encodeURIComponent("Warranty claim photos \u2014 order "+n))};order&&order.addEventListener("input",sync),sync()}})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-team-pitch"]&&!Shopify.designMode))try{(function(){if(!document.querySelector(".dtm-egbox")){var links=document.querySelectorAll("[data-dtm-eg]");if(links.length){var box=document.createElement("div");box.className="dtm-egbox",box.innerHTML='<div class="dtm-egbox__in"><button class="dtm-egbox__x" type="button" aria-label="Close">&#10005;</button><img alt=""><span class="dtm-egbox__cap"></span></div>',document.body.appendChild(box);var img=box.querySelector("img"),cap=box.querySelector(".dtm-egbox__cap"),inBox=box.querySelector(".dtm-egbox__in"),hasDlg=window.deboer&&window.deboer.dialog,hide=function(){box.classList.remove("open"),document.body.style.overflow=""},close=function(){hasDlg?window.deboer.dialog.close(inBox):hide()};box.addEventListener("click",function(e){(e.target===box||e.target.closest(".dtm-egbox__x"))&&close()}),hasDlg||document.addEventListener("keydown",function(e){e.key==="Escape"&&close()}),links.forEach(function(a){a.addEventListener("click",function(e){e.preventDefault(),img.src=a.getAttribute("href"),img.alt=a.getAttribute("data-eg-caption")||"",cap.textContent=a.getAttribute("data-eg-caption")||"",box.classList.add("open"),document.body.style.overflow="hidden",hasDlg&&window.deboer.dialog.open(inBox,{onClose:hide})})})}}})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["deboer-team-portal"]&&!Shopify.designMode))try{class DeboerTeamPortal extends HTMLElement{connectedCallback(){if(this._wired)return;this._wired=!0;const root=this,sats=Array.from(root.querySelectorAll("[data-tp-sat]")),groupSel=root.querySelector("[data-tp-group]"),packTitle=root.querySelector("[data-tp-pack-title]"),packValue=root.querySelector("[data-tp-pack-value]"),packList=root.querySelector("[data-tp-pack-list]"),packNote=root.querySelector("[data-tp-pack-note]"),basicTpl=root.querySelector("[data-tp-basic-items]"),premiumTpl=root.querySelector("[data-tp-premium-items]"),reqPack=root.querySelector("[data-tp-requested]"),reqLoc=root.querySelector("[data-tp-req-loc]"),reqGroup=root.querySelector("[data-tp-req-group]");if(!packList)return;const lines=tpl=>tpl?(tpl.innerHTML||"").split(/\r?\n/).map(s=>s.trim()).filter(Boolean):[],basicItems=lines(basicTpl),premiumItems=lines(premiumTpl),basicName=root.dataset.basicName||"Hoodie + Tee",premiumName=root.dataset.premiumName||"Backpack",activeSat=()=>sats.find(b=>b.classList.contains("on"))||sats[0],isBasic=()=>{const sat=activeSat(),satBasic=sat&&sat.getAttribute("data-tp-satellite")==="true";let grpBasic=!1;if(groupSel){const opt=groupSel.options[groupSel.selectedIndex];grpBasic=opt&&opt.getAttribute("data-tp-basic")==="true"}return satBasic||grpBasic},render=()=>{const basic=isBasic(),items=basic?basicItems:premiumItems,packName=basic?basicName:premiumName;packTitle&&(packTitle.textContent="Your welcome pack \u2014 "+packName),packValue&&(packValue.textContent=(basic?root.dataset.basicValue:root.dataset.premiumValue)||""),packList.innerHTML=items.map(i=>"<li>"+i+"</li>").join("");const sat=activeSat(),locName=sat&&sat.getAttribute("data-tp-locname")||"",satBasic=sat&&sat.getAttribute("data-tp-satellite")==="true";packNote&&(satBasic?packNote.textContent=locName+" is a satellite site \u2014 "+basicName.toLowerCase()+" pack.":basic?packNote.textContent="This group receives the "+basicName.toLowerCase()+" pack.":packNote.textContent="Premium tier at "+locName+" \u2014 your pack includes the "+premiumName.toLowerCase()+"."),reqPack&&(reqPack.value=packName);const tierEl=root.querySelector("[data-tp-tier]");if(tierEl&&(tierEl.value=basic?"basic":"premium"),reqLoc&&(reqLoc.value=locName),reqGroup&&groupSel){const opt=groupSel.options[groupSel.selectedIndex];reqGroup.value=opt?opt.textContent.trim():""}},filterGroups=()=>
11{if(!groupSel)return;const sat=activeSat(),loc=sat?(sat.getAttribute("data-tp-locname")||"").trim().toLowerCase():"";let selVisible=!1;if(Array.from(groupSel.options).forEach(o=>{const locs=(o.getAttribute("data-tp-locs")||"").split(",").map(s=>s.trim().toLowerCase()).filter(Boolean),show=!locs.length||locs.indexOf(loc)!==-1;o.hidden=!show,o.disabled=!show,show&&o.selected&&(selVisible=!0)}),!selVisible){const first=Array.from(groupSel.options).find(o=>!o.hidden);first&&(groupSel.value=first.value)}};sats.forEach(b=>{b.addEventListener("click",()=>{sats.forEach(x=>x.classList.remove("on")),b.classList.add("on"),filterGroups(),render()})}),groupSel&&groupSel.addEventListener("change",render),filterGroups(),render();const claimEmail=root.querySelector("[data-tp-claim-email]");if(claimEmail){const claimCk=root.querySelector("[data-tp-claim-ck]"),eligMsg=root.querySelector("[data-tp-elig]"),gated=root.querySelector("[data-tp-gated]"),lockHint=root.querySelector("[data-tp-lockhint]"),famInput=root.querySelector("[data-tp-fam-input]"),famAdd=root.querySelector("[data-tp-fam-add]"),famCk=root.querySelector("[data-tp-fam-ck]"),famChips=root.querySelector("[data-tp-fam-chips]"),famHidden=root.querySelector("[data-tp-fam-hidden]"),teeSel=root.querySelector("[data-tp-size-tee]"),hoodSel=root.querySelector("[data-tp-size-hoodie]"),submitBtn=root.querySelector("[data-tp-submit]"),tagFam=root.querySelector("[data-tp-tag-fam]"),tagGuard=root.querySelector("[data-tp-tag-guard]"),okText=root.dataset.eligOk||"Eligible.",badText=root.dataset.eligBad||"Not on the roster.",S=window.deboerStrings||{},tpTrack=(n,p)=>{window.deboer&&window.deboer.track&&window.deboer.track(n,p)},validEmail=v=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v),cleanEmail=v=>(v||"").replace(/\s+/g,"").toLowerCase(),scrub=el=>{if(!el||!/\s/.test(el.value))return;const v=el.value.replace(/\s+/g,""),pos=el.selectionStart;if(el.value=v,pos!=null)try{el.setSelectionRange(Math.min(pos-1,v.length),Math.min(pos-1,v.length))}catch{}},FAM_MAX=3;let famEmails=[];const renderFam=()=>{if(famChips&&(famChips.textContent="",famEmails.forEach(em=>{const chip=document.createElement("span");chip.className="deboer-tp__famchip",chip.appendChild(document.createTextNode(em));const x=document.createElement("button");x.type="button",x.className="deboer-tp__famchip-x",x.setAttribute("aria-label","Remove "+em),x.textContent="\xD7",x.addEventListener("click",()=>{famEmails=famEmails.filter(e=>e!==em),renderFam(),updateBtn()}),chip.appendChild(x),famChips.appendChild(chip)})),tagFam){tagFam.textContent="";const label=tagFam.getAttribute("data-tag-label")||"Nitro";famEmails.forEach(em=>{const row=document.createElement("div");row.className="deboer-tp__tagcard-row";const emEl=document.createElement("span");emEl.className="deboer-tp__tag-em",emEl.textContent=em;const pill=document.createElement("span");pill.className="deboer-tp__tag-pill",pill.textContent="Family \xB7 "+label,row.appendChild(emEl),row.appendChild(pill),tagFam.appendChild(row)})}famHidden&&(famHidden.value=famEmails.join(", "));const full=famEmails.length>=FAM_MAX;famInput&&(famInput.disabled=full,full&&(famInput.value="")),famAdd&&(famAdd.disabled=full)},commitFam=()=>{if(!famInput)return!0;const raw=(famInput.value||"").trim();if(!raw)return famCk&&(famCk.className="deboer-tp__ck deboer-tp__ck--fam"),!0;const parts=raw.split(",").map(cleanEmail).filter(Boolean);if(!parts.length||!parts.every(validEmail))return famCk&&(famCk.className="deboer-tp__ck deboer-tp__ck--fam is-bad"),!1;const guardian=cleanEmail(claimEmail.value);return parts.forEach(v=>{v!==guardian&&famEmails.indexOf(v)===-1&&famEmails.length<FAM_MAX&&famEmails.push(v)}),famInput.value="",famCk&&(famCk.className="deboer-tp__ck deboer-tp__ck--fam"),renderFam(),updateBtn(),!0};let eligible=!1,rosterTier=null,rosterTiers=null,lastAllow=null,cartClaims={basic:0,premium:0};const packBackpackId=(()=>{try{const m=root.querySelector("[data-tp-pack-map]"),pm=m?JSON.parse(m.textContent):null;return pm&&pm.backpack?Number(pm.backpack):null}catch{return null}})(),refreshCartClaims=async()=>{try{const cart=await(await fetch("/cart.js")).json(),premiumGroups={};
11(cart.items||[]).forEach(it=>{const p=it.properties||{};!p._guardianEmail||!p._claim||(premiumGroups[p._claim]=premiumGroups[p._claim]||packBackpackId!==null&&Number(it.variant_id)===packBackpackId)});const next={basic:0,premium:0};Object.keys(premiumGroups).forEach(k=>{next[premiumGroups[k]?"premium":"basic"]++}),cartClaims=next,updateTierWarn()}catch{}};let rosterPool=null;const satRow=root.querySelector("[data-tp-satrow]"),lockNote=root.querySelector("[data-tp-locknote]"),satForPool=pool=>sats.find(b=>(b.getAttribute("data-tp-locname")||"").trim().toLowerCase()===String(pool||"").trim().toLowerCase())||null,unlockPool=()=>{sats.forEach(b=>{b.disabled=!1}),satRow&&satRow.classList.remove("is-locked"),lockNote&&(lockNote.textContent="",lockNote.classList.add("is-hidden"))},lockPool=()=>{const target=satForPool(rosterPool);if(!target){unlockPool();return}target.classList.contains("on")||(sats.forEach(x=>x.classList.remove("on")),target.classList.add("on"),filterGroups(),render()),sats.forEach(b=>{b.disabled=b!==target}),satRow&&satRow.classList.add("is-locked"),lockNote&&(lockNote.textContent=(S.portalPoolLocked||"Location set from your team roster: [name].").replace("[name]",target.getAttribute("data-tp-locname")||rosterPool),lockNote.classList.remove("is-hidden"))},requestedTier=()=>{const tierEl=root.querySelector("[data-tp-tier]");return tierEl?tierEl.value:""},tierMismatch=()=>{if(!eligible||!requestedTier())return!1;if(rosterTiers){const b=rosterTiers[requestedTier()];return!b||(Number(b.allowance)||0)===0}return!!(rosterTier&&requestedTier()!==rosterTier)},tierExhausted=()=>{if(!eligible||!rosterTiers)return!1;const t=requestedTier(),b=rosterTiers[t];if(!b||(Number(b.allowance)||0)===0)return!1;const o=rosterTiers[t==="premium"?"basic":"premium"],otherLeft=o?Math.max(0,(Number(o.remaining)||0)-cartClaims[t==="premium"?"basic":"premium"]):0;return Math.max(0,(Number(b.remaining)||0)-cartClaims[t])===0&&otherLeft>0},snapTier=()=>{if(!groupSel)return;let offered=null;if(rosterTiers){const hasB=Number(rosterTiers.basic.allowance)>0,hasP=Number(rosterTiers.premium.allowance)>0;if(hasB&&hasP)return;offered=hasP?"premium":hasB?"basic":null}else rosterTier&&(offered=rosterTier);if(!offered||requestedTier()===offered)return;const want=offered==="basic"?"true":"false",opt=Array.from(groupSel.options).find(o=>!o.hidden&&o.getAttribute("data-tp-basic")===want);!opt||groupSel.value===opt.value||(groupSel.value=opt.value,render(),updateTierWarn(),tpTrack("nitro_tier_snapped",{tier:offered}))},packsLeft=()=>!lastAllow||typeof lastAllow.remaining!="number"?null:lastAllow.remaining-(cartClaims.basic+cartClaims.premium),cartExhausted=()=>{const left=packsLeft();return left!==null&&left<=0},tierName=t=>((t==="premium"?premiumName:basicName)||t).toLowerCase(),eligOkMessage=()=>{if(rosterTiers&&Number(rosterTiers.basic.allowance)>0&&Number(rosterTiers.premium.allowance)>0){const bLeft=Math.max(0,(Number(rosterTiers.basic.remaining)||0)-cartClaims.basic),pLeft=Math.max(0,(Number(rosterTiers.premium.remaining)||0)-cartClaims.premium);return(S.portalTiersLeft||"Eligible \u2014 your family can still claim [b] [bn] pack(s) and [p] [pn] pack(s). One claim per swimmer.").replace("[b]",bLeft).replace("[bn]",tierName("basic")).replace("[p]",pLeft).replace("[pn]",tierName("premium"))}return lastAllow&&lastAllow.allowance>1&&typeof lastAllow.remaining=="number"?(S.portalPacksLeft||"Eligible \u2014 [r] of [n] welcome packs left for your family. One claim per swimmer.").replace("[r]",Math.max(0,packsLeft())).replace("[n]",lastAllow.allowance):okText},sizesOk=()=>(!teeSel||teeSel.value!=="")&&(!hoodSel||hoodSel.value!==""),updateBtn=()=>{const f=famInput?famInput.value.trim():"",parts=f?f.split(",").map(cleanEmail).filter(Boolean):[],famOk=!f||parts.every(validEmail);submitBtn&&(submitBtn.disabled=!(eligible&&famOk&&sizesOk()&&!tierMismatch()&&!tierExhausted()&&!cartExhausted()))},updateTierWarn=()=>{if(!eligMsg||!eligible){updateBtn();return}if(tierMismatch())eligMsg.className="deboer-tp__elig is-bad",eligMsg.textContent=S.portalTierMismatch||"You don't qualify for this pack. Please confirm your group or contact your team administrator.";else if(tierExhausted()){const t=requestedTier(),o=t==="premium"?"basic":"premium",left=Math.max(0,(Number((rosterTiers[o]||{}).remaining)||0)-cartClaims[o]);eligMsg.className="deboer-tp__elig is-bad",eligMsg.textContent=(S.portalTierExhausted||"Your family\u2019s [t] packs are all claimed \u2014 [n] [o] pack(s) still available. Switch your training group above to claim it.").replace("[t]",tierName(t)).replace("[n]",left).replace("[o]",tierName(o))}else cartExhausted()?(eligMsg.className="deboer-tp__elig is-bad",eligMsg.textContent=S.portalCartHasPacks||"Your family\u2019s welcome packs are already in your cart \u2014 check out to claim them."):(eligMsg.className="deboer-tp__elig is-ok",eligMsg.textContent=eligOkMessage());updateBtn()},setEligible=ok=>{eligible=ok,gated&&gated.classList.toggle("is-locked",!ok),lockHint&&lockHint.classList.toggle("is-hidden",ok),updateBtn()};let checkTimer,checkSeq=0,lastChecked=null;const checkClaim=()=>{scrub(claimEmail);const v=cleanEmail(claimEmail.value);if(v===lastChecked)return;if(lastChecked=v,famEmails.indexOf(v)!==-1&&(famEmails=famEmails.filter(e=>e!==v),renderFam()),clearTimeout(checkTimer),!validEmail(v)){claimCk.className=v?"deboer-tp__ck is-bad":"deboer-tp__ck",eligMsg&&(eligMsg.className=v?"deboer-tp__elig is-bad":"deboer-tp__elig",eligMsg.textContent=v?S.portalEmailInvalid||"That doesn\u2019t look like an email address \u2014 check for typos.":""),setEligible(!1);return}claimCk.className="deboer-tp__ck",eligMsg&&(eligMsg.className="deboer-tp__elig",eligMsg.textContent=S.portalChecking||"Checking the roster\u2026"),setEligible(!1);const seq=++checkSeq;checkTimer=setTimeout(async()=>{try{const res=await fetch(root.dataset.tpProxy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({guardianEmail:v,check:!0})});if(!res.ok)throw new Error("proxy "+res.status);const data=await res.json();if(seq!==checkSeq)return;if(data&&data.eligible&&data.remaining===0){claimCk.className="deboer-tp__ck",eligMsg&&(eligMsg.className="deboer-tp__elig",eligMsg.textContent="");const claimedMsg=data.allowance>1?(S.portalAllClaimed||"All [n] welcome packs for this family have been claimed.").replace("[n]",data.allowance):S.portalClaimed||"This pack has already been claimed for your family.";setEligible(!1),enterReturning("precheck",claimedMsg),tpTrack("nitro_check",{result:"all_claimed"})}else data&&data.eligible?(claimCk.className="deboer-tp__ck is-ok",rosterTier=data.tier==="premium"||data.tier==="basic"?data.tier:null,rosterTiers=data.tiers&&data.tiers.basic&&data.tiers.premium?data.tiers:null,rosterPool=typeof data.pool=="string"&&data.pool.trim()?data.pool.trim():null,rosterPool?lockPool():unlockPool(),lastAllow={allowance:data.allowance,remaining:data.remaining},tagGuard&&(tagGuard.querySelector(".deboer-tp__tag-em").textContent=v,tagGuard.style.display="flex"),setEligible(!0),snapTier(),updateTierWarn(),refreshCartClaims(),tpTrack("nitro_check",{result:"eligible",remaining:typeof data.remaining=="number"?data.remaining:void 0})):(claimCk.className="deboer-tp__ck is-bad",eligMsg&&(eligMsg.className="deboer-tp__elig is-bad",eligMsg.textContent=badText),setEligible(!1),tpTrack("nitro_check",{result:"not_on_roster"}))}catch{if(seq!==checkSeq)return;claimCk.className="deboer-tp__ck is-bad",eligMsg&&(eligMsg.className="deboer-tp__elig is-bad",eligMsg.textContent=S.portalVerifyError||"Could not verify \u2014 please try again."),setEligible(!1),tpTrack("nitro_check",{result:"error"})}},150)},resetClaim=()=>{clearTimeout(checkTimer),checkSeq++,lastChecked=null,rosterTier=null,rosterTiers=null,lastAllow=null,rosterPool=null,unlockPool(),claimCk.className="deboer-tp__ck",eligMsg&&(eligMsg.className="deboer-tp__elig",eligMsg.textContent=""),setEligible(!1)},returnPanel=root.querySelector("[data-tp-return]"),heroCta=root.querySelector("[data-tp-pack-cta]"),heroCtaHref=heroCta?heroCta.getAttribute("href"):"",heroCtaHtml=heroCta?heroCta.innerHTML:"",enterReturning=(reason,detailMsg)=>{if(root.classList.add("deboer-tp--returned"),returnPanel){returnPanel.classList.remove("is-hidden");const det=returnPanel.querySelector("[data-tp-return-detail]");if(det&&detailMsg&&(det.textContent=detailMsg,det.hidden=!1),reason!=="member"){const rst=returnPanel.querySelector("[data-tp-return-reset]");rst&&(rst.hidden=!1),returnPanel.scrollIntoView({behavior:"smooth",block:"center"})}}if(heroCta){heroCta.setAttribute("href","#deboer-tp-return-"+root.dataset.sectionId),heroCta.classList.add("is-revealed"),heroCta.innerHTML="",heroCta.appendChild(document.createTextNode(root.dataset.returnHeroLabel||"shop your 30%"));const ar=document.createElement("span");ar.className="ar",ar.innerHTML="&rarr;",heroCta.appendChild(document.createTextNode(" ")),heroCta.appendChild(ar)}tpTrack("nitro_returning_state",{reason})},exitReturning=()=>{root.classList.remove("deboer-tp--returned"),returnPanel&&returnPanel.classList.add("is-hidden"),heroCta&&(heroCta.setAttribute("href",heroCtaHref),heroCta.innerHTML=heroCtaHtml,heroCta.classList.remove("is-revealed"))},returnResetBtn=root.querySelector("[data-tp-return-reset]");returnResetBtn&&returnResetBtn.addEventListener("click",()=>{exitReturning(),claimEmail.value="",resetClaim();const sec=root.querySelector("[data-tp-pack-sec]");sec&&sec.scrollIntoView({behavior:"smooth",block:"start"}),claimEmail.focus()});const returnShopBtn=root.querySelector("[data-tp-return-shop]");returnShopBtn&&returnShopBtn.addEventListener("click",e=>{const rows=document.querySelector(".deboer-nu__row");rows&&(e.preventDefault(),rows.scrollIntoView({behavior:"smooth",block:"start"}))});const btnLabel=submitBtn?submitBtn.textContent:"Reserve",form=root.querySelector(".deboer-tp__form"),proxy=root.dataset.tpProxy;let busy=!1;const fail=msg=>{eligMsg&&(eligMsg.className="deboer-tp__elig is-bad",eligMsg.textContent=msg),submitBtn&&(submitBtn.disabled=!1,submitBtn.textContent=btnLabel),busy=!1},doReserve=async()=>
11{if(busy||!eligible||!proxy)return;if(!sizesOk())return fail(S.portalSizeMissing||"Choose a t-shirt and hoodie size first.");const signedIn=(root.dataset.tpSignedIn||"").trim().toLowerCase(),claimNorm=cleanEmail(claimEmail.value);if(signedIn&&claimNorm&&signedIn!==claimNorm){if(tpTrack("nitro_reserve_error",{reason:"signed_in_mismatch"}),fail((S.portalSignedInMismatch||"You\u2019re signed in as [signed], but this pack would be reserved under [email]. Welcome packs check out free only under the reservation email \u2014 sign out to reserve as a guest, or reserve under [signed] if that\u2019s the email on the roster.").replace(/\[signed\]/g,signedIn).replace(/\[email\]/g,claimNorm)),eligMsg&&root.dataset.tpLogout){const a=document.createElement("a");a.href=root.dataset.tpLogout,a.className="deboer-tp__elig-link",a.textContent=S.portalSignOut||"Sign out",eligMsg.appendChild(document.createTextNode(" ")),eligMsg.appendChild(a)}return}if(!commitFam())return fail(S.portalFamilyInvalid||"Check the family email \u2014 it doesn't look valid.");busy=!0;const phoneEl=root.querySelector("[data-tp-phone]"),tierEl=root.querySelector("[data-tp-tier]"),satSel=activeSat(),payload={guardianEmail:cleanEmail(claimEmail.value),phone:phoneEl?phoneEl.value.trim():"",tier:tierEl?tierEl.value:"",pool:rosterPool||satSel&&satSel.getAttribute("data-tp-locname")||"",poolSelected:satSel&&satSel.getAttribute("data-tp-locname")||""};submitBtn&&(submitBtn.disabled=!0,submitBtn.textContent=S.portalVerifying||"Verifying\u2026");try{const res=await fetch(proxy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload)}),data=await res.json();if(data&&data.error==="already_claimed"){tpTrack("nitro_reserve_error",{reason:"already_claimed"});const claimedMsg=data.allowance>1?(S.portalAllClaimed||"All [n] welcome packs for this family have been claimed.").replace("[n]",data.allowance):S.portalClaimed||"This pack has already been claimed for your family.";busy=!1,submitBtn&&(submitBtn.disabled=!0,submitBtn.textContent=btnLabel),setEligible(!1),enterReturning("reserve",claimedMsg);return}if(data&&data.error==="rate_limited")return tpTrack("nitro_reserve_error",{reason:"rate_limited"}),fail(S.portalRateLimited||"Too many attempts \u2014 please wait a minute and try again.");if(data&&data.error==="tier_mismatch"){rosterTier=data.rosterTier==="premium"||data.rosterTier==="basic"?data.rosterTier:rosterTier,data.tiers&&data.tiers.basic&&data.tiers.premium&&(rosterTiers=data.tiers),tpTrack("nitro_reserve_error",{reason:"tier_mismatch"}),snapTier(),tierMismatch()?(fail(S.portalTierMismatch||"You don't qualify for this pack. Please confirm your group or contact your team administrator."),updateBtn()):fail(S.portalTierSnapped||"Your training group has been set to match your team roster \u2014 please try Reserve again.");return}if(data&&data.error==="tier_exhausted"){data.tiers&&data.tiers.basic&&data.tiers.premium&&(rosterTiers=data.tiers),tpTrack("nitro_reserve_error",{reason:"tier_exhausted"});const reqT=payload.tier==="premium"?"premium":"basic",othT=reqT==="premium"?"basic":"premium",othLeft=rosterTiers?Math.max(0,(Number((rosterTiers[othT]||{}).remaining)||0)-cartClaims[othT]):0;fail((S.portalTierExhausted||"Your family\u2019s [t] packs are all claimed \u2014 [n] [o] pack(s) still available. Switch your training group above to claim it.").replace("[t]",tierName(reqT)).replace("[n]",othLeft).replace("[o]",tierName(othT))),updateBtn();return}if(data&&data.error==="pool_mismatch")return rosterPool=typeof data.rosterPool=="string"&&data.rosterPool.trim()?data.rosterPool.trim():rosterPool,rosterPool&&lockPool(),tpTrack("nitro_reserve_error",{reason:"pool_mismatch"}),fail((S.portalPoolMismatch||"Your swimmer is registered at [name] \u2014 your location has been set to match. Please try Reserve again.").replace("[name]",rosterPool||"your team site"));if(!res.ok)return claimCk&&(claimCk.className="deboer-tp__ck is-bad"),tpTrack("nitro_reserve_error",{reason:"proxy_"+res.status}),fail(S.portalVerifyError||"Could not verify \u2014 please try again.");if(!(data&&data.eligible&&data.variantId))return claimCk&&(claimCk.className="deboer-tp__ck is-bad"),tpTrack("nitro_reserve_error",{reason:data&&(data.error||data.reason)||"not_eligible"}),fail(badText);const tier=data.tier==="basic"||data.tier==="premium"?data.tier:payload.tier||"basic",props={_swimmerEmail:famEmails.join(","),_pool:payload.pool||"",_guardianEmail:(payload.guardianEmail||"").toLowerCase(),_claim:"c"+Date.now().toString(36)+Math.random().toString(36).slice(2,8)};props["Welcome pack"]=tier==="premium"?"Premium":"Basic";let packMap=null;try{const mapEl=root.querySelector("[data-tp-pack-map]");packMap=mapEl?JSON.parse(mapEl.textContent):null}catch{}const teeId=packMap&&packMap.tee&&teeSel?packMap.tee[teeSel.value]:null,hoodieId=packMap&&packMap.hoodie&&hoodSel?packMap.hoodie[hoodSel.value]:null,backpackId=packMap?packMap.backpack:null;let items;if(teeId&&hoodieId&&(tier!=="premium"||backpackId))items=[{id:Number(teeId),quantity:1,properties:props},{id:Number(hoodieId),quantity:1,properties:props}],tier==="premium"&&items.push({id:Number(backpackId),quantity:1,properties:props});else{const legacyProps={_swimmerEmail:props._swimmerEmail,_pool:props._pool,_guardianEmail:props._guardianEmail};teeSel&&teeSel.value&&(legacyProps["T-shirt size"]=teeSel.value),hoodSel&&hoodSel.value&&(legacyProps["Hoodie size"]=hoodSel.value),items=[{id:Number(data.variantId),quantity:1,properties:legacyProps}]}const add=await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({items})});if(!add.ok){let why="";try{const j=await add.json();why=String(j&&(j.description||j.message)||"").trim(),/^cart error$/i.test(why)&&(why="")}catch{}return tpTrack("nitro_reserve_error",{reason:"cart_add_failed",status:add.status}),fail(why||S.portalPackError||"Your pack couldn\u2019t be added \u2014 the team has been notified. Please try again later.")}tpTrack("nitro_reserve_success",{tier:payload.tier||void 0});try{typeof data.allowance=="number"&&sessionStorage.setItem("deboerNitroAllow",JSON.stringify({allowance:data.allowance,used:data.used||0,tiers:data.tiers&&data.tiers.basic&&data.tiers.premium?data.tiers:null,backpackVariantId:packMap&&packMap.backpack?Number(packMap.backpack):null}))}catch{}window.location.href=root.dataset.tpAfter||window.routes&&window.routes.cart_url||"/cart"}catch{tpTrack("nitro_reserve_error",{reason:"network"}),fail(S.portalGenericError||"Something went wrong \u2014 please try again.")}};submitBtn&&submitBtn.addEventListener("click",doReserve),sats.forEac
11h(b=>b.addEventListener("click",updateTierWarn)),groupSel&&groupSel.addEventListener("change",updateTierWarn),form&&form.addEventListener("submit",e=>{e.preventDefault(),doReserve()}),claimEmail.addEventListener("input",resetClaim),claimEmail.addEventListener("change",checkClaim),claimEmail.addEventListener("blur",checkClaim),famInput&&(famInput.addEventListener("keydown",e=>{(e.key==="Enter"||e.key===",")&&(e.preventDefault(),commitFam())}),famInput.addEventListener("blur",commitFam),famInput.addEventListener("input",()=>{if(famCk&&(famCk.className="deboer-tp__ck deboer-tp__ck--fam"),scrub(famInput),famInput.value.indexOf(",")!==-1){commitFam();return}updateBtn()})),famAdd&&famAdd.addEventListener("click",commitFam),teeSel&&teeSel.addEventListener("change",updateBtn),hoodSel&&hoodSel.addEventListener("change",updateBtn),refreshCartClaims(),window.addEventListener("pageshow",e=>{e.persisted&&refreshCartClaims()}),setEligible(!1);const memberEmail=(root.dataset.tpMemberEmail||"").trim().toLowerCase();memberEmail&&validEmail(memberEmail)?fetch(root.dataset.tpProxy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({guardianEmail:memberEmail,check:!0})}).then(r=>r.ok?r.json():null).then(d=>{if(!(d&&d.eligible&&typeof d.remaining=="number"&&d.remaining>0)){enterReturning("member");return}exitReturning(),root.querySelectorAll(".deboer-tp__sec--member-hidden").forEach(el=>el.classList.add("is-revealed")),root.querySelectorAll("[data-tp-qa-locked]").forEach(a=>{const url=a.getAttribute("data-tp-qa-url");url&&url!=="#"&&a.setAttribute("href",url),a.classList.remove("deboer-tp__qa-locked"),a.removeAttribute("aria-disabled"),a.removeAttribute("tabindex");const body=a.querySelector("[data-tp-qa-body]");body&&(body.textContent=(S.portalMoreToClaim||"[r] of [n] welcome packs left \u2014 claim for your next swimmer").replace("[r]",d.remaining).replace("[n]",d.allowance));const ar=a.querySelector(".deboer-tp__qa-ar");ar&&(ar.classList.remove("deboer-tp__qa-ar--done"),ar.innerHTML="&rarr;")}),claimEmail.value=memberEmail,checkClaim(),tpTrack("nitro_member_reclaim_offered",{remaining:d.remaining})}).catch(()=>{enterReturning("member")}):root.classList.contains("deboer-tp--returned")&&enterReturning("member")}}}customElements.get("deboer-team-portal")||customElements.define("deboer-team-portal",DeboerTeamPortal)}catch(e){console.error(e)}})(),(function(){if(__sections__.header)try{class StickyHeader extends HTMLElement{constructor(){super()}connectedCallback(){this.header=document.querySelector(".section-header"),this.headerIsAlwaysSticky=this.getAttribute("data-sticky-type")==="always"||this.getAttribute("data-sticky-type")==="reduce-logo-size",this.headerBounds={},this.setHeaderHeight(),window.matchMedia("(max-width: 990px)").addEventListener("change",this.setHeaderHeight.bind(this)),this.headerIsAlwaysSticky&&this.header.classList.add("shopify-section-header-sticky"),this.currentScrollTop=0,this.preventReveal=!1,this.predictiveSearch=this.querySelector("predictive-search"),this.onScrollHandler=this.onScroll.bind(this),this.hideHeaderOnScrollUp=()=>this.preventReveal=!0,this.addEventListener("preventHeaderReveal",this.hideHeaderOnScrollUp),window.addEventListener("scroll",this.onScrollHandler,!1),this.createObserver()}setHeaderHeight(){document.documentElement.style.setProperty("--header-height",`${this.header.offsetHeight}px`)}disconnectedCallback(){this.removeEventListener("preventHeaderReveal",this.hideHeaderOnScrollUp),window.removeEventListener("scroll",this.onScrollHandler)}createObserver(){new IntersectionObserver((entries,observer2)=>{this.headerBounds=entries[0].intersectionRect,observer2.disconnect()}).observe(this.header)}onScroll(){const scrollTop=window.pageYOffset||document.documentElement.scrollTop;if(!(this.predictiveSearch&&this.predictiveSearch.isOpen)){if(scrollTop>this.currentScrollTop&&scrollTop>this.headerBounds.bottom){if(this.header.classList.add("scrolled-past-header"),this.preventHide)return;requestAnimationFrame(this.hide.bind(this))}else scrollTop<this.currentScrollTop&&scrollTop>this.headerBounds.bottom?(this.header.classList.add("scrolled-past-header"),this.preventReveal?(window.clearTimeout(this.isScrolling),this.isScrolling=setTimeout(()=>{this.preventReveal=!1},66),requestAnimationFrame(this.hide.bind(this))):requestAnimationFrame(this.reveal.bind(this))):scrollTop<=this.headerBounds.top&&(this.header.classList.remove("scrolled-past-header"),requestAnimationFrame(this.reset.bind(this)));this.currentScrollTop=scrollTop}}hide(){this.headerIsAlwaysSticky||(this.header.classList.add("shopify-section-header-hidden","shopify-section-header-sticky"),this.closeMenuDisclosure(),this.closeSearchModal())}reveal(){this.headerIsAlwaysSticky||(this.header.classList.add("shopify-section-header-sticky","animate"),this.header.classList.remove("shopify-section-header-hidden"))}reset(){this.headerIsAlwaysSticky||this.header.classList.remove("shopify-section-header-hidden","shopify-section-header-sticky","animate")}closeMenuDisclosure(){this.disclosures=this.disclosures||this.header.querySelectorAll("header-menu"),this.disclosures.forEac
11h(disclosure=>disclosure.close())}closeSearchModal(){this.searchModal=this.searchModal||this.header.querySelector("details-modal"),this.searchModal.close(!1)}}customElements.define("sticky-header",StickyHeader)}catch(e){console.error(e)}})()})();
12//# sourceMappingURL=/cdn/shop/t/38/compiled_assets/scripts.js.map?v=176388328866232865891790110034

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.