<!doctype html>
<html lang="en">
    <head >
                <meta charset="utf-8"/><script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},feature_flags:["soft_nav"],distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1120288588",accountID:"1104463",trustKey:"1104463",xpid:"VQcHVVJVCxABVFFSDwIDVVMG",licenseKey:"52276df6f3",applicationID:"1000834377",browserID:"1120288588"};;/*! For license information please see nr-loader-spa-1.316.0.min.js.LICENSE.txt */
(()=>{var e,t,r={384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>a,Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),o=r(1910);const a={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,o.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:a.beacon,errorBeacon:a.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}},733:(e,t,r)=>{"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>c,P3:()=>d,XX:()=>i,Yy:()=>a,df:()=>s,qY:()=>n,v4:()=>o});const n="events",i="jserrors",s="browser/blobs",o="rum",a="browser/logs",c={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},d={[c.pageViewEvent]:1,[c.pageViewTiming]:2,[c.metrics]:3,[c.jserrors]:4,[c.softNav]:5,[c.ajax]:6,[c.sessionTrace]:7,[c.sessionReplay]:8,[c.logging]:9,[c.genericEvents]:10},u={[c.pageViewEvent]:o,[c.pageViewTiming]:n,[c.ajax]:n,[c.softNav]:n,[c.metrics]:i,[c.jserrors]:i,[c.sessionTrace]:s,[c.sessionReplay]:s,[c.logging]:a,[c.genericEvents]:"ins"}},944:(e,t,r)=>{"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>s,ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},s={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},o="log",a=n.K7.logging},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>a,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),o=r(2646);function a(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,a=i.i.handlers;if(s&&!s.aborted&&s.backlog&&a){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=a[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof o.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete a[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},1738:(e,t,r)=>{"use strict";r.d(t,{U:()=>f,Y:()=>l});var n=r(3241),i=r(9908),s=r(1863),o=r(944),a=r(3969),c=r(8362),d=r(860),u=r(4261);function l(e,t,r,s){const l=s||r;!l||l[e]&&l[e]!==c.d.prototype[e]||(l[e]=function(){(0,i.p)(a.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:u.Pl+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,o.R)(23,e)}})}function f(e,t,r,n,o){const a=e.info;null===r?delete a.jsAttributes[t]:a.jsAttributes[t]=r,(o||null===r)&&(0,i.p)(u.Pl+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},1741:(e,t,r)=>{"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e(i.$9,e,t)}start(){return this.#e(i.d3)}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},1910:(e,t,r)=>{"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},2555:(e,t,r)=>{"use strict";r.d(t,{D:()=>a,f:()=>o});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function o(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}const a=e=>(0,i.a)(e,s)},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>s,Wt:()=>n,g:()=>c,iL:()=>a,tS:()=>o,wk:()=>i});const n="NRBA_SESSION::",i=144e5,s=18e5,o={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},a={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},c={OFF:0,FULL:1,ERROR:2}},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},2843:(e,t,r)=>{"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},3241:(e,t,r)=>{"use strict";r.d(t,{W:()=>s});var n=r(6154);const i="newrelic";function s(e={}){try{n.gm.dispatchEvent(new CustomEvent(i,{detail:e}))}catch(e){}}},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function s(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},3333:(e,t,r)=>{"use strict";r.d(t,{$v:()=>u,TZ:()=>n,Xh:()=>c,Zp:()=>i,kd:()=>d,mq:()=>a,nf:()=>o,qN:()=>s});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],s=["focus","blur"],o=4,a=1e3,c=2e3,d=["PageAction","UserAction","BrowserPerformance"],u={RESOURCES:"experimental.resources",REGISTER:"register"}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>u});var n=r(7836),i=r(5607),s=r(5732);const o="nr@original:".concat(i.W),a=50;var c=Object.prototype.hasOwnProperty,d=!1;function u(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,o){r||(r="");const a="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];f(u)||(e[d]=i(u,a?d+r:r,n,d,s,o))}},i.flag=o,i;function i(t,n,i,d,h,p){return f(t)?t:(n||(n=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){l([e],r)}for(var n in e)c.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,c,f,g;let m,v;try{c=this,o=[...arguments],v=p?(0,s.$5)(r):[void 0],f="function"==typeof i?i(o,c):i||{}}catch(t){l([t,"",[o,c,d],f],e)}u(n+"start",[o,c,d,v],f,h);const y=performance.now();let b;try{return g=t.apply(c,o),b=performance.now(),g}catch(e){throw b=performance.now(),u(n+"err",[o,c,e,v],f,h),m=e,m}finally{const e=b-y,t={start:y,end:b,duration:e,isLongTask:e>=a,methodName:d,thrownError:m};t.isLongTask&&u("long-task",[t,c,v],f,h),u(n+"end",[o,c,g,v],f,h)}}}function u(r,n,i,s){if(!d||t){var o=d;d=!0;try{e.emit(r,n,i,t,s)}catch(t){l([t,r,n,i],e)}d=o}}}function l(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function f(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=o;var i=s.handlers={};function s(e,t,r,s){o(s||n.d,i,e,t,r)}function o(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var o=t[s]=t[s]||{};(o[r]=o[r]||[]).push([e,i])}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>a,Lc:()=>d,Rz:()=>u,TZ:()=>n,bD:()=>s,d3:()=>o,jx:()=>l,sl:()=>f,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",s="resource",o="-start",a="-end",c="fn"+o,d="fn"+a,u="pushState",l=1e3,f=3e4},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),o=r(3969),a=r(993);function c(e,t,r={},c=a.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(o.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)(a.ET,[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(a.p_).some(t=>t===e.toUpperCase().trim())}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>l,OV:()=>s,Qu:()=>f,TZ:()=>c,ih:()=>h,pP:()=>a,t1:()=>u,tC:()=>i,wD:()=>d});var n=r(860);const i=["click","keydown","submit"],s="popstate",o="api",a="initialPageLoad",c=n.K7.softNav,d=5e3,u=500,l={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},f={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},h={IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>a,rs:()=>i,xV:()=>o,z_:()=>s});const n=r(860).K7.metrics,i="sm",s="cm",o="storeSupportabilityMetrics",a="storeEventMetrics"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},4261:(e,t,r)=>{"use strict";r.d(t,{$9:()=>u,BL:()=>c,CH:()=>p,Dl:()=>R,Fw:()=>w,PA:()=>v,Pl:()=>n,Pv:()=>x,Tb:()=>f,U2:()=>o,V1:()=>A,Wb:()=>T,bt:()=>b,cD:()=>y,d3:()=>E,dT:()=>d,eY:()=>g,fF:()=>h,hG:()=>s,hw:()=>i,k6:()=>a,nb:()=>m,o5:()=>l});const n="api-",i=n+"ixn-",s="addPageAction",o="addToTrace",a="addRelease",c="finished",d="interaction",u="log",l="noticeError",f="pauseReplay",h="recordCustomEvent",p="recordReplay",g="register",m="setApplicationVersion",v="setCurrentRouteName",y="setCustomAttribute",b="setErrorHandler",w="setPageViewName",R="setUserId",E="start",T="wrapLogger",A="measure",x="consent"},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>o,SR:()=>s,rF:()=>a});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function o(e){return!0===e?.session_replay.preload&&s(e)}function a(e,t){try{if("string"==typeof t?.type){if("password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,Qr:()=>c,sB:()=>a});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(s())return e();const r=(0,i.J)(e),o=setInterval(()=>{s()&&(clearInterval(o),r())},500);(0,n.sp)("load",r,t)}function a(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},5732:(e,t,r)=>{"use strict";r.d(t,{$5:()=>u,B5:()=>d,Ms:()=>s,Ux:()=>a,YA:()=>c,fQ:()=>i,yx:()=>o});var n=r(7508);const i={MFE:"MFE",BA:"BA"};function s(e,t){if(!e||!t?.init.api.register.enabled)return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function o(e,t){if(!e||!t?.init.api.register.enabled)return[];const r=t.runtime.registeredEntities;return r?.filter(t=>t.metadata.timings?.asset?.endsWith(e)).map(e=>e.metadata.target)||[]}function a(e,t){if(!l(t))return{};const r=t.agentRef.runtime.appMetadata.agents[0].entityGuid;return e?e.attributes:{"entity.guid":r,appId:t.agentRef.info.applicationID}}function c(e,t){return d(e,t)?{"child.id":e.id,"child.type":e.type,...a(void 0,t)}:{}}function d(e,t){return!!e&&!!l(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function u(e){if(!e?.init.api.register.enabled)return[void 0];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...o(r[i--],e))}catch(e){}return t.length||t.push(void 0),t}function l(e){return 2===e?.harvestEndpointVersion}},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>d,RI:()=>i,WN:()=>f,bv:()=>s,gm:()=>o,lR:()=>l,m:()=>c,mw:()=>a,sb:()=>u,zk:()=>h});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=Boolean("hidden"===o?.document?.visibilityState),c=""+o?.location,d=/iPad|iPhone|iPod/.test(o.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=o.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)(),h=()=>{const e=o?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<o.performance.now())return e}},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>u,Qb:()=>l,TZ:()=>i,Ug:()=>o,Vh:()=>s,_s:()=>a,bc:()=>d,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,s="errorDuringReplay",o=.12,a={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},d={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},u=5e3,l={API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>o,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function o(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,o;i>0?(s=r.substring(0,i),o=r.substring(i)):(s=r,o="*");let[c]=s.split(":");n.push({hostname:a(c),pathname:a(o,!0)})}}function a(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7508:(e,t,r)=>{"use strict";r.d(t,{AZ:()=>g,Qr:()=>b,QL:()=>m});var n=r(6154),i=r(1863),s=r(9119),o=r(7866);class a{dom=new c;performance=new c;constructor(e){this.url=e}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}let d;try{d=g(m())[0]}catch(e){d=g(e)[0]}const u=e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&e.name.endsWith(".js"),l=new Map;let f=[];function h(e){return l.get(e)}function p(e){const t=h(e);if(t)return t;const r=new a(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=p((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().filter(u).forEach(e=>{const t=p((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e;const r=[];f.forEach(({test:t,addedAt:n},s)=>{(t(e)||(0,i.t)()-n>1e4)&&r.push(s)}),f=f.filter((e,t)=>!r.includes(t))})}).observe({type:"resource",buffered:!0})}function g(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(o.cn)||e.match(o.hB)||e.match(o.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function m(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function v(e,t){return(0,s.L)(e.name)===t}function y(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType}function b(){const e={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown"},t=m();if(!t)return e;const r=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const o=g(t),a=(o.length>1?o.filter(e=>d!==e):o)[0];if(!a)return e;if(r.includes(a))return e.asset=(0,s.L)(r),e.type="inline",e;e.correlation=h(a);const c=e.correlation?.performance.value||performance.getEntriesByType("resource").find(e=>v(e,a));c?y(e,c):function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1}(a)&&(e.asset=a,e.type="preload",f.push({addedAt:(0,i.t)(),test:t=>!!v(t,a)&&(y(e,t),!0)})),Object.defineProperty(e,"scriptStart",{get:()=>e.correlation?.script.start||e.fetchEnd}),Object.defineProperty(e,"scriptEnd",{get:()=>e.correlation?.script.end||e.registeredAt})}catch(e){}return e}},7699:(e,t,r)=>{"use strict";r.d(t,{It:()=>s,KC:()=>a,No:()=>i,qh:()=>o});var n=r(860);const i=16e3,s=1e6,o="SESSION_ERROR",a={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>i});var n=r(6154);const i=e=>n.RI&&!0===e?.privacy.cookies_enabled},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>a,ee:()=>c});var n=r(384),i=r(8990),s=r(2646),o=r(5607);const a="nr@context:".concat(o.W),c=function e(t,r){var n={},o={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var a=h(n);g(e).forEach(e=>{e.apply(a,r)});var d=v()[o[e]];d&&d.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{o[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[o[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,a,()=>new s.y(a)):new s.y(a)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c)},7866:(e,t,r)=>{"use strict";r.d(t,{Nc:()=>s,cn:()=>a,fL:()=>i,h3:()=>n,hB:()=>o});const n=/function (.+?)\s*\(/,i=/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,s=/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,o=/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i,a=/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i},8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let o in s)if(void 0!==e[o])try{if(null===e[o]){r[o]=null;continue}Array.isArray(e[o])&&Array.isArray(t[o])?r[o]=Array.from(new Set([...e[o],...t[o]])):e[o]instanceof Map||e[o]instanceof Set||e[o]instanceof Date||e[o]instanceof RegExp?r[o]=e[o]:"object"==typeof e[o]&&"object"==typeof t[o]?r[o]=i(e[o],t[o]):r[o]=e[o]}catch(e){r[o]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),o=r(6154);const a={},c=o.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(a[t.debugId]++)return t;a[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[d,u],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(o.RI&&h(document,f),c&&h(c.prototype,f),h(o.gm,f)),t.on(d+"-start",function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)&&"newrelic"!==e[0]){var i=(0,s.I)(n,l,function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=e[1]=i}}),t.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},8362:(e,t,r)=>{"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},9119:(e,t,r)=>{"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n,f:()=>i});const n=r(860).K7.ajax,i="ajaxRequest.id"},9324:(e,t,r)=>{"use strict";r.d(t,{AJ:()=>o,F3:()=>i,Xs:()=>s,Yq:()=>a,xv:()=>n});const n="1.316.0",i="PROD",s="CDN",o="@newrelic/rrweb",a="1.1.0"},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>a,ZF:()=>c,bz:()=>o,el:()=>d});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function s(e,t){return e?15&e[t]:16*Math.random()|0}function o(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map(e=>"x"===e?s(t,r++).toString(16):"y"===e?(3&s()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const o=[];for(var a=0;a<e;a++)o.push(s(r,i++).toString(16));return o.join("")}function c(){return a(16)}function d(){return a(32)}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={exports:{}};return r[e](s,s.exports,i),s.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce((t,r)=>(i.f[r](e,t),t),[])),i.u=e=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.316.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.316.0.PROD:",i.l=(r,n,s,o)=>{if(e[r])e[r].push(n);else{var a,c;if(void 0!==s)for(var d=document.getElementsByTagName("script"),u=0;u<d.length;u++){var l=d[u];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+s){a=l;break}}if(!a){c=!0;var f={478:"sha512-/91tZUpAINW5VzLS+EdJpEe0gul6FJd2zTpGwLIhi/mqcTiQPUlhoJmX5zb4EPTwdGqun46DoGQPtDShDBw4bA==",249:"sha512-XqLQgD24Jrw2HFtuRDeuxMcY5WnEXG04tpC98UJOJlIfGqQst/lKUE+G++zwulwEzcM00bl5V0e1kKGq2Nxc1g==",212:"sha512-rOHSN/tvMjFe33yfRKMs44m3dZKgs9foEl0T2tdErrZKsAF8Oe5+OLJKgySrw3WwY4MgvuS4yWEr88MMv5LZaw=="};(a=document.createElement("script")).charset="utf-8",i.nc&&a.setAttribute("nonce",i.nc),a.setAttribute("data-webpack",t+s),a.src=r,0!==a.src.indexOf(window.location.origin+"/")&&(a.crossOrigin="anonymous"),f[o]&&(a.integrity=f[o])}e[r]=[n];var h=(t,n)=>{a.onerror=a.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach(e=>e(n)),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),c&&document.head.appendChild(a)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={38:0,788:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var s=new Promise((r,i)=>n=e[t]=[r,i]);r.push(n[2]=s);var o=i.p+i.u(t),a=new Error;i.l(o,r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var s=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;a.message="Loading chunk "+t+" failed: ("+s+": "+o+")",a.name="ChunkLoadError",a.type=s,a.request=o,n[1](a)}},"chunk-"+t,t)}};var t=(t,r)=>{var n,s,[o,a,c]=r,d=0;if(o.some(t=>0!==e[t])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(c)c(i)}for(t&&t(r);d<o.length;d++)s=o[d],i.o(e,s)&&e[s]&&e[s][0](),e[s]=0},r=self["webpackChunk:NRBA-1.316.0.PROD"]=self["webpackChunk:NRBA-1.316.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(8362),t=i(860);const r=Object.values(t.K7);var n=i(384),s=i(1741);var o=i(2555),a=i(3333);const c=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var d=i(2614),u=i(944),l=i(8122);const f="[data-nr-mask]",h=e=>(0,l.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},api:{register:{get enabled(){return e.feature_flags.includes(a.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(a.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:d.wk,inactiveMs:d.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){c(t)?e.mask_selector="".concat(t,",").concat(f):""===t||null===t?e.mask_selector=f:(0,u.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){c(t)?e.block_selector+=",".concat(t):""!==t&&(0,u.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,u.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}})());var p=i(6154),g=i(9324);let m=0;const v={buildEnv:g.F3,distMethod:g.Xs,version:g.xv,originTime:p.WN},y={consented:!1},b={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||y.consented},set consented(e){y.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,harvester:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++m}};var w=i(7836),R=i(3241);const E={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};function T(e,t={},r,a){let{init:c,info:d,loader_config:u,runtime:f={},exposed:g=!0}=t;if(!d){const e=(0,n.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=h(c||{}),e.loader_config=(m=u||{},(0,l.a)(m,E)),d.jsAttributes??={},p.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,o.D)(d);const y=e.init;e.runtime??=(e=>{const t=(0,l.a)(e,b),r=Object.keys(v).reduce((e,t)=>(e[t]={value:v[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(f),y.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",i.p=t?e:"https://"+e})(y.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,n.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=r,e.ee=w.ee.get(e.agentIdentifier),e.exposed=g,(0,R.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.runtime.configured=!0)}var A=i(9908),x=i(1863),S=i(4261),_=i(1738);var O=i(1687),P=i(4234),k=i(5289),N=i(5270),j=i(7767),C=i(6389),D=i(7699);const L=new WeakSet;class I extends P.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,O.Ak)(e,this.featureName),t()}))}):(0,O.Ak)(e,t)}importAggregator(e,t,r={}){if(this.featAggregate)return;const n=async()=>{if(await this.deferred,this.#t(e),!(0,o.f)(e.info))return(0,u.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);let n;try{if((0,j.V)(e.init)){const{setupAgentSession:t}=await i.e(478).then(i.bind(i,8766));n=t(e)}}catch(e){(0,u.R)(20,e),this.ee.emit("internal-error",[e]),(0,A.p)(D.qh,[e],void 0,this.featureName,this.ee)}try{if(!this.#r(this.featureName,n,e.init))return(0,O.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:i}=await t();this.featAggregate=new i(e,r),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,u.R)(34,e),this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1),this.ee&&this.ee.abort()}};p.RI?(0,k.GG)(()=>n(),!0):n()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,N.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!L.has(e)&&(L.add(e),!(0,o.f)(e.info))){const t=(0,n.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}T(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var M=i(6630);class B extends I{static featureName=M.T;constructor(e){var t;super(e,M.T),this.setupInspectionEvents(),t=e,(0,_.Y)(S.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,A.p)(S.Pl+S.Fw,[(0,x.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>i.e(478).then(i.bind(i,5839)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,R.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,k.sB)(t=>{e(t,"DOMContentLoaded")}),(0,k.GG)(t=>{e(t,"load")}),(0,k.Qr)(t=>{e(t,"navigate")}),this.ee.on(d.tS.UPDATE,(e,t)=>{(0,R.W)({type:"lifecycle",name:"session",data:t})})}}class H extends e.d{constructor(e){var t;(super(),p.gm)?(this.features={},(0,n.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(B),T(this,e,e.loaderType||"agent"),t=this,(0,_.Y)(S.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,_.U)(t,e,r,S.cD,n);(0,u.R)(40,typeof r)}else(0,u.R)(39,typeof e)},t),function(e){(0,_.Y)(S.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,u.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,A.p)(S.Pl+"setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,_.U)(e,"enduser.id",t,S.Dl,!0)},e)}(this),function(e){(0,_.Y)(S.nb,function(t){if("string"==typeof t||null===t)return(0,_.U)(e,"application.version",t,S.nb,!1);(0,u.R)(42,typeof t)},e)}(this),function(e){(0,_.Y)(S.d3,function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,_.Y)(S.Pv,function(t=!0){if("boolean"==typeof t){if((0,A.p)(S.Pl+S.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum()})}}else(0,u.R)(65,typeof t)},e)}(this),this.run()):(0,u.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return r.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),n=[...this.desiredFeatures];n.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),n.forEach(r=>{if(!e[r.featureName]&&r.featureName!==t.K7.pageViewEvent)return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,u.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,u.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,n.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var K=i(2843),W=i(782);class F extends I{static featureName=W.T;constructor(e){super(e,W.T),p.RI&&((0,K.u)(()=>(0,A.p)("docHidden",[(0,x.t)()],void 0,W.T,this.ee),!0),(0,K.G)(()=>(0,A.p)("winPagehide",[(0,x.t)()],void 0,W.T,this.ee)),this.importAggregator(e,()=>i.e(478).then(i.bind(i,9917))))}}var U=i(3969);class V extends I{static featureName=U.TZ;constructor(e){super(e,U.TZ),this.importAggregator(e,()=>i.e(478).then(i.bind(i,6555)))}}var z=i(6774),G=i(3878),Y=i(3304);class Z{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,Y.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function q(e){return J(e)?e:new Z(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function X(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(J(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return q(e.reason)}const r=q(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function Q(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Z(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return J(e.error)?e.error:q(e)}function J(e){return e instanceof Error&&!!e.stack}function ee(e,r,n,i,s=(0,x.t)()){"string"==typeof e&&(e=new Error(e)),(0,A.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,A.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var te=i(5732),re=i(993),ne=i(3785);function ie(e,{customAttributes:t={},level:r=re.p_.INFO}={},n,i,s=(0,x.t)()){(0,ne.R)(n.ee,e,t,r,!1,i,s)}function se(e,r,n,i,s=(0,x.t)()){(0,A.p)(S.Pl+S.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function oe(e,r,n,i,s=(0,x.t)()){const{start:o,end:a,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,u.R)(57);const l=(e,t)=>null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=l(o,0),d.end=l(a,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,u.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,A.p)(S.Pl+S.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,u.R)(58)}}function ae(e,r={},n,i,s=(0,x.t)()){(0,A.p)(S.Pl+S.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var ce=i(7508),de=i(9566);const ue=["name","id","type"],le=new Map([[se,"addPageAction"],[ie,"log"],[oe,"measure"],[ee,"noticeError"],[ae,"recordCustomEvent"]]),fe={experimental:(0,C.J)(()=>(0,u.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,u.R)(55)),invalidTarget:(0,C.J)(e=>(0,u.R)(48,e)),deregistered:(0,C.J)(()=>(0,u.R)(68))};function he(e){(0,_.Y)(S.eY,function(t){return pe(e,t)},e)}function pe(e,r){fe.experimental(),r||={},r.instance=(0,de.LA)(8),r.type=te.fQ.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents[0].entityGuid},type:te.fQ.BA};const n=(0,ce.Qr)(),i={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...i,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||te.fQ.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{ue.includes(e)||(i["source.".concat(e)]=t)});let s=()=>{};const o=e.runtime.registeredEntities,a=e=>{r.blocked=!0,s=e};function c(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||a(fe.disabled),c(r.id)&&c(r.name)||a(()=>fe.invalidTarget(r));const d={addPageAction:(t,n={})=>p(se,[t,{...i,...n},e],r),deregister:()=>{f(),a(fe.deregistered)},log:(t,n={})=>p(ie,[t,{...n,customAttributes:{...i,...n.customAttributes||{}}},e],r),measure:(t,n={})=>p(oe,[t,{...n,customAttributes:{...i,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>p(ee,[t,{...i,...n},e],r),recordCustomEvent:(t,n={})=>p(ae,[t,{...i,...n},e],r),setApplicationVersion:e=>h("application.version",e),setCustomAttribute:(e,t)=>h(e,t),setUserId:e=>h("enduser.id",e),metadata:{get customAttributes(){return i},target:r,timings:n}},l=()=>(r.blocked&&s(),r.blocked);function f(){if(n.reportedAt)return;n.reportedAt=(0,x.t)();const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart;d.recordCustomEvent("MicroFrontEndTiming",{assetUrl:n.asset,assetType:n.type,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,timeToRegister:n.registeredAt})}l()||(o.push(d),(0,K.G)(f));const h=(e,t)=>{l()||(i[e]=t)},p=(r,n,i)=>{if(l()&&r!==pe)return;const s=(0,x.t)(),o=le.get(r)||"unknown";(0,A.p)(U.xV,["API/register/".concat(o,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,u.R)(50,e)}};return d}class ge extends I{static featureName=z.T;constructor(e){var t;super(e,z.T),t=e,(0,_.Y)(S.o5,(e,r)=>ee(e,r,t),t),function(e){(0,_.Y)(S.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,_.Y)(S.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),he(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,A.p)("ierr",[q(t),(0,x.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),p.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,A.p)("err",[X(t),(0,x.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,G.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",t=>{this.abortHandler&&(0,A.p)("err",[Q(t),(0,x.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,G.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>i.e(478).then(i.bind(i,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var me=i(8990);let ve=1;function ye(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,me.I)(e,"nr@id",function(){return ve++})}function be(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,Y.A)(e).length}catch(e){return}}}var we=i(8139),Re=i(3434);const Ee={},Te=["open","send"];function Ae(e,t){var r=e||w.ee;const n=function(e){return(e||w.ee).get("xhr")}(r);if(void 0===p.gm.XMLHttpRequest)return n;if(Ee[n.debugId]++)return n;Ee[n.debugId]=1,(0,we.u)(r);var i=(0,Re.YM)(n),s=p.gm.XMLHttpRequest,o=p.gm.MutationObserver,a=p.gm.Promise,c=p.gm.setInterval,d="readystatechange",l=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=p.gm.XMLHttpRequest=function(e){const r=new s(e),o=n.context(r);o.targets=(0,te.$5)(t);try{n.emit("new-xhr",[r],o),r.addEventListener(d,(a=o,function(){var e=this;e.readyState>3&&!a.resolved&&(a.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,l,"fn-",R)}),(0,G.jT)(!1))}catch(e){(0,u.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var a;return r};function g(e,t){i.inPlace(t,["onreadystatechange"],"fn-",R)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Te,"-xhr-",R),n.on("send-xhr-start",function(e,t){g(e,t),function(e){f.push(e),o&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",g),o){var m=a&&a.resolve();if(!c&&!a){var v=1,y=document.createTextNode(v);new o(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)g(0,f[e]);f.length&&(f=[])}function R(e,t){return t}return n}var xe="fetch-",Se=xe+"body-",_e=["arrayBuffer","blob","json","text","formData"],Oe=p.gm.Request,Pe=p.gm.Response,ke="prototype";const Ne={};function je(e,t){const r=function(e){return(e||w.ee).get("fetch")}(e);if(!(Oe&&Pe&&p.gm.fetch))return r;if(Ne[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},o=(0,te.$5)(t);var a;r.emit(i+"before-start",[e],n),n[w.P]&&n[w.P].dt&&(a=n[w.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,a],c),c.then(function(e){return r.emit(i+"end",[null,e,o],c),e},function(e){throw r.emit(i+"end",[e,void 0,o],c),e})})}return Ne[r.debugId]=1,_e.forEach(e=>{n(Oe[ke],e,Se),n(Pe[ke],e,Se)}),n(p.gm,"fetch",xe),r.on(xe+"end",function(e,t,n){var i=this;if(i.targets=n||[void 0],t){var s=t.headers.get("content-length");null!==s&&(i.rxSize=s),r.emit(xe+"done",[null,t],i)}else r.emit(xe+"done",[e],i)}),r}var Ce=i(7485);class De{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,de.ZF)(),o=(0,de.el)(),a=Date.now(),c={spanId:s,traceId:o,timestamp:a};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,o),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,a,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,o,a,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof p.gm?.btoa))return null;var o={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(o.d.tk=s),btoa((0,Y.A)(o))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ce.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Le=i(9300),Ie=i(7295);function Me(e){return"string"==typeof e?e:e instanceof(0,n.dV)().o.REQ?e.url:p.gm?.URL&&e instanceof URL?e.href:void 0}var Be=["load","error","abort","timeout"],He=Be.length,Ke=(0,n.dV)().o.REQ,We=(0,n.dV)().o.XHR;const Fe="X-NewRelic-App-Data";class Ue extends I{static featureName=Le.T;constructor(e){super(e,Le.T),this.dt=new De(e),this.handler=(e,t,r,n)=>(0,A.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};Ve(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}je(this.ee,e),Ae(this.ee,e),function(e,r,n,i){function s(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){T(t,e)},(0,G.jT)(!1)),p.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,G.jT)(!1))}function o(e){this.params={method:e[0]},Ve(this,e[1]),this.metrics={}}function a(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function c(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var o=be(i);o&&(n.txSize=o)}this.startTime=(0,x.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit("internal-error",[e])}catch(e){}}};for(var a=0;a<He;a++)t.addEventListener(Be[a],this.listener,(0,G.jT)(!1))}function d(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function u(e,t){var r=""+ye(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+ye(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,x.t)()}function h(e,t){t instanceof We&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function g(e,t){t instanceof We&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function m(e,t,r){t instanceof We&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,x.t)()))}function v(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,x.t)()-this.xhrCbStart,this.onload,t],t)}function y(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ce.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)a(e[0].headers,n)&&(this.dt=n);else{var s={};for(var o in r)s[o]=r[o];s.headers=new Headers(r.headers||{}),a(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function a(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function b(e,t){this.params={},this.metrics={},this.startTime=(0,x.t)(),this.dt=t;let[r,n={}]=e;Ve(this,Me(r));const i=(""+(r&&r instanceof Ke&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.body=n.body,this.txSize=be(n.body)||0}function w(e,t){if(this.endTime=(0,x.t)(),this.params||(this.params={}),(0,Ie.iW)(this.params))return;let r;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(r=+this.rxSize);const n={txSize:this.txSize,rxSize:r,duration:(0,x.t)()-this.startTime},i=[this.params,n,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>E(i,this,e))}function R(e){const t=this.params,r=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<He;t++)e.removeEventListener(Be[t],this.listener,!1);if(t.aborted)return;if((0,Ie.iW)(t))return;r.duration=(0,x.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):T(this,e),r.cbTime=this.cbTime;const n=[t,r,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>E(n,this,e))}function E(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function T(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?be(e.response):"text"===r||""===r||void 0===r?be(e.responseText):void 0}(n,e.lastSize);if(i&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(Fe)>=0){var s=n.getResponseHeader(Fe);s&&((0,A.p)(U.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",s),r.on("open-xhr-start",o),r.on("open-xhr-end",a),r.on("send-xhr-start",c),r.on("xhr-cb-time",d),r.on("xhr-load-added",u),r.on("xhr-load-removed",l),r.on("xhr-resolved",f),r.on("addEventListener-end",h),r.on("removeEventListener-end",g),r.on("fn-end",v),r.on("fetch-before-start",y),r.on("fetch-start",b),r.on("fn-start",m),r.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>i.e(478).then(i.bind(i,3845)))}}function Ve(e,t){var r=(0,Ce.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ze={},Ge=["pushState","replaceState"];function Ye(e){const t=function(e){return(e||w.ee).get("history")}(e);return!p.RI||ze[t.debugId]++||(ze[t.debugId]=1,(0,Re.YM)(t).inPlace(window.history,Ge,"-")),t}var Ze=i(3738);function qe(e){(0,_.Y)(S.BL,function(r=Date.now()){const n=r-p.WN;n<0&&(0,u.R)(62,r),(0,A.p)(U.XG,[S.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:S.BL,start:r,origin:"nr"}),(0,A.p)(S.Pl+S.hG,[n,S.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:Xe,bD:$e,d3:Qe,Kp:Je,TZ:et,Lc:tt,uP:rt,Rz:nt}=Ze;class it extends I{static featureName=et;constructor(e){var r;super(e,et),r=e,(0,_.Y)(S.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const n={n:e.name,s:e.start-p.WN,e:(e.end||e.start)-p.WN,o:e.origin||"",t:"api"};n.s<0||n.e<0||n.e<n.s?(0,u.R)(61,{start:n.s,end:n.e}):(0,A.p)("bstApi",[n],void 0,t.K7.sessionTrace,r.ee)},r),qe(e);if(!(0,j.V)(e.init))return void this.deregisterDrain();const n=this.ee;let s;Ye(n),this.eventsEE=(0,we.u)(n),this.eventsEE.on(rt,function(e,t){this.bstStart=(0,x.t)()}),this.eventsEE.on(tt,function(e,r){(0,A.p)("bst",[e[0],r,this.bstStart,(0,x.t)()],void 0,t.K7.sessionTrace,n)}),n.on(nt+Qe,function(e){this.time=(0,x.t)(),this.startPath=location.pathname+location.hash}),n.on(nt+Je,function(e){(0,A.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,n)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,A.p)(Xe,[r],void 0,t.K7.sessionTrace,n)}),s.observe({type:$e,buffered:!0})}catch(e){}this.importAggregator(e,()=>i.e(478).then(i.bind(i,6974)),{resourceObserver:s})}}var st=i(733),ot=i(6344);class at extends I{static featureName=ot.TZ;#i;recorder;constructor(e){var r;let n;super(e,ot.TZ),r=e,(0,_.Y)(S.CH,function(){(0,A.p)(S.CH,[],void 0,t.K7.sessionReplay,r.ee)},r),function(e){(0,_.Y)(S.Tb,function(){(0,A.p)(S.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(d.Wt).concat((0,st.Y)(e.info.licenseKey,e.info.applicationID));try{n=JSON.parse(localStorage.getItem(s))}catch(e){}(0,N.SR)(e.init)&&this.ee.on(S.CH,()=>this.#s()),this.#o(n)&&this.importRecorder().then(e=>{e.startRecording(ot.Qb.PRELOAD,n?.sessionReplayMode)}),this.importAggregator(this.agentRef,()=>i.e(478).then(i.bind(i,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,A.p)(ot.Vh,[e],void 0,this.featureName,this.ee))})}#o(e){return e&&(e.sessionReplayMode===d.g.FULL||e.sessionReplayMode===d.g.ERROR)||(0,N.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([i.e(478),i.e(249)]).then(i.bind(i,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==d.g.FULL&&this.featAggregate.initializeRecording(d.g.FULL,!0,ot.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(ot.Qb.API,d.g.FULL)}))}}var ct=i(3962);class dt extends I{static featureName=ct.TZ;constructor(e){if(super(e,ct.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,_.Y)(S.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},o=this,a="function"==typeof i;return(0,A.p)(U.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((a?"":"no-")+"fn-start",[(0,x.t)(),o,a],s),a)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,x.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{_.Y.apply(this,[r,function(){return(0,A.p)(S.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,_.Y)(S.PA,function(){(0,A.p)(S.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!p.RI||!(0,n.dV)().o.MO)return;const r=Ye(this.ee);try{this.removeOnAbort=new AbortController}catch(e){}ct.tC.forEach(e=>{(0,G.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)});const s=()=>(0,A.p)("newURL",[(0,x.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",s),r.on("replaceState-end",s),(0,G.sp)(ct.OV,e=>{c(e),(0,A.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let o=!1;const a=new((0,n.dV)().o.MO)((e,t)=>{o||(o=!0,requestAnimationFrame(()=>{(0,A.p)("newDom",[(0,x.t)()],void 0,this.featureName,this.ee),o=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,A.p)("newUIEvent",[e],void 0,this.featureName,this.ee),a.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),a.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>i.e(478).then(i.bind(i,4393)),{domObserver:a})}}var ut=i(9119);const lt={},ft=new Set;function ht(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class pt{constructor(e,t){this.timestamp=(0,x.t)(),this.currentUrl=(0,ut.L)(window.location.href),this.socketId=(0,de.LA)(8),this.requestedUrl=(0,ut.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class gt extends I{static featureName=a.TZ;constructor(e){super(e,a.TZ);const r=e.init.feature_flags.includes("websockets"),s=!e.init.feature_flags.includes("no_spv"),o=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,r,s];var c;let d;if(c=e,(0,_.Y)(S.hG,(e,t)=>se(e,t,c),c),function(e){(0,_.Y)(S.fF,(t,r)=>ae(t,r,e),e)}(e),qe(e),he(e),function(e){(0,_.Y)(S.V1,(t,r)=>oe(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},r){const u=function(e){if(!(0,n.dV)().o.WS)return e;const t=e.get("websockets");if(lt[t.debugId]++)return t;lt[t.debugId]=1,(0,K.G)(()=>{const e=(0,x.t)();ft.forEach(r=>{r.nrData.closedAt=e,r.nrData.closeCode=1001,r.nrData.closeReason="Page navigating away",r.nrData.closeWasClean=!1,r.nrData.openedAt&&(r.nrData.connectedDuration=e-r.nrData.openedAt),t.emit("ws",[r.nrData],r)})});class r extends WebSocket{static name="WebSocket";static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return r.name}#a(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new pt(e[0],e[1]),this.addEventListener("open",()=>{this.nrData.openedAt=(0,x.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),ft.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=ht(e.data);this.nrData.messageOrigin??=(0,ut.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,x.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,ft.delete(this),t.emit("ws",[this.nrData],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#a(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#a(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=ht(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#a(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#a(e),e}}}return p.gm.WebSocket=r,t}(this.ee);u.on("ws",e=>{(0,A.p)("ws-complete",[e],void 0,this.featureName,this.ee)})}if(s&&p.gm.addEventListener("securitypolicyviolation",e=>{(0,A.p)("spv",[e],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(!1,this.removeOnAbort.signal)),p.RI){if(je(this.ee,e),Ae(this.ee,e),d=Ye(this.ee),e.init.user_actions.enabled){function l(t){const r=(0,Ce.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function f(){d.emit("navChange")}a.Zp.forEach(e=>(0,G.sp)(e,e=>(0,A.p)("ua",[e],void 0,this.featureName,this.ee),!0)),a.qN.forEach(e=>{const t=(0,C.s)(e=>{(0,A.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,G.sp)(e,t)}),p.gm.addEventListener("error",()=>{(0,A.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{l(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,A.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!l(Me(e[0]))&&(0,A.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",f),d.on("replaceState-end",f),window.addEventListener("hashchange",f,(0,G.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",f,(0,G.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&p.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,A.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}o.some(e=>e)?this.importAggregator(e,()=>i.e(478).then(i.bind(i,8019))):this.deregisterDrain()}}var mt=i(2646);const vt=new Map;function yt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,u.R)(29);const o=function(e){return(e||w.ee).get("logger")}(e),a=(0,Re.YM)(o,void 0,s),c=new mt.y(w.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Re.Jt]||t[r];return vt.set(d,c),a.inPlace(t,[r],"wrap-logger-",()=>vt.get(d),void 0,!0),o}var bt=i(1910);class wt extends I{static featureName=re.TZ;constructor(e){var t;super(e,re.TZ),t=e,(0,_.Y)(S.$9,(e,r)=>ie(e,r,t),t),function(e){(0,_.Y)(S.Wb,(t,r,{customAttributes:n={},level:i=re.p_.INFO}={})=>{yt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),he(e);const r=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,bt.i)(p.gm.console[t]),yt(r,p.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([e],t,n,i=[]){const{level:s,customAttributes:o,autoCaptured:a}=this;i.forEach(t=>{(0,ne.R)(r,e,o,s,a,t)})}),this.importAggregator(e,()=>i.e(478).then(i.bind(i,5288)))}}new H({features:[Ue,B,F,it,at,V,ge,gt,wt,dt],loaderType:"spa"})})()})();</script>
<meta name="title" content="Start Your Annual Wahoo Membership Today | Wahoo Fitness"/>
<meta name="description" content="Wahoo is a training platform built to guide endurance athletes. It helps you evaluate your fitness, understand your progress, and train with purpose."/>
<meta name="robots" content="INDEX,FOLLOW"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="format-detection" content="telephone=no"/>
<title>Start Your Annual Wahoo Membership Today | Wahoo Fitness</title>
<link  rel="stylesheet" type="text/css"  media="all" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/css/styles-m.css" />
<link  rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" type="text/css"  media="all" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/Astound_Affirm/affirm-promo.css" /><noscript><link rel="stylesheet" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/Astound_Affirm/affirm-promo.css"></noscript>
<link  rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" type="text/css"  media="all" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/StripeIntegration_Payments/css/wallets.css" /><noscript><link rel="stylesheet" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/StripeIntegration_Payments/css/wallets.css"></noscript>
<link  rel="stylesheet" type="text/css"  media="screen and (min-width: 768px)" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/css/styles-l.css" />
<link  rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" type="text/css"  media="print" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/css/print.css" /><noscript><link rel="stylesheet" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/css/print.css"></noscript>
















<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/Inter/Inter-Medium.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/Inter/Inter-Light.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/Inter/Inter-Regular.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/Inter/Inter-Bold.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/rbno2.1a-bold-webfont.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/rbno2.1a-book-webfont.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/rbno2.1a-mediumitalic-webfont.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/rbno2.1a-bolditalic-webfont.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/24F9AF_1_0.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/24F9AF_3_0.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/rene_bieder_rbno3.1-black-webfont.woff2" />
<link rel="preload" as="font" crossorigin="anonymous" href="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/fonts/rene_bieder_rbno3.1-medium-webfont.woff2" />
<link  rel="icon" type="image/x-icon" href="https://www.wahoofitness.com/media/favicon/default/wficon.png" />
<link  rel="shortcut icon" type="image/x-icon" href="https://www.wahoofitness.com/media/favicon/default/wficon.png" />
<!-- OneTrust Cookies Consent Notice start for wahoofitness.com -->
 
 
 <!-- OneTrust Cookies Consent Notice end for wahoofitness.com -->
 
 <meta name="p:domain_verify" content="7bc3738bdceee39cc9faf0fc42956fa0"/>
 <meta name="p:domain_verify" content="39udIyKBRJlAjSnxYa8hfm7aX7rLIvko"/>
 <meta name="google-site-verification" content="wdiCihBMzmMk5ljX24n5B8S8wYd3SDsS77NgnWj6XII" />
 <meta name="msvalidate.01" content="DEF4A38B8B5B2F4D37C2DA8EF3D8EB41" />
 
 <!--<meta name="apple-itunes-app" content="app-id=1501733842">-->
 
 
 
 <!-- Roster -->
 
 
 <!--START Digioh Fast Activation Javascript-->
 
 <!--END Digioh Fast Activation Javascript-->        
<link rel="alternate" hreflang="en-US" href="https://www.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="en-GB" href="https://uk.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="en-150" href="https://eu.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="en-AU" href="https://au.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="es-US" href="https://www.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="fr-US" href="https://www.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="es-ES" href="https://es-eu.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="it-IT" href="https://it-eu.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="fr-FR" href="https://fr-eu.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="de-DE" href="https://de-eu.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="en-JP" href="https://en-jp.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="ja-JP" href="https://jp.wahoofitness.com/wahoo-app-subscription" />
<link rel="alternate" hreflang="en-CA" href="https://ca.wahoofitness.com/wahoo-app-subscription" />

<!-- Google Tag Manager by MagePal -->




<!-- End Google Tag Manager by MagePal -->
<!-- REFERSION TRACKING: BEGIN -->


<!-- REFERSION TRACKING: END -->
    

    

<!-- Open Graph -->

    <meta property="og:site_name" content="Wahoo Fitness" />
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://www.wahoofitness.com/wahoo-app-subscription" />
    <meta property="og:title" content="Start Your Annual Wahoo Membership Today " />
    <meta property="og:description" content="Wahoo is a training platform built to guide endurance athletes. It helps you evaluate your fitness, understand your progress, and train with purpose." />
    <meta property="og:image" content="https://www.wahoofitness.com/media/thumbnail.jpg" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:image:alt" content="Wahoo Fitness" />

                <meta property="og:locale" content="en-US" />
                    <meta property="og:locale:alternate" content="en-GB" />
                    <meta property="og:locale:alternate" content="en-150" />
                    <meta property="og:locale:alternate" content="en-AU" />
                    <meta property="og:locale:alternate" content="es-US" />
                    <meta property="og:locale:alternate" content="fr-US" />
                    <meta property="og:locale:alternate" content="es-ES" />
                    <meta property="og:locale:alternate" content="it-IT" />
                    <meta property="og:locale:alternate" content="fr-FR" />
                    <meta property="og:locale:alternate" content="de-DE" />
                    <meta property="og:locale:alternate" content="en-JP" />
                    <meta property="og:locale:alternate" content="ja-JP" />
                    <meta property="og:locale:alternate" content="en-CA" />
        
    <!-- End Open Graph -->


            <link rel="canonical" href="https://www.wahoofitness.com/wahoo-app-subscription"/>
    
                  
        

    </head>
    <body data-container="body"
          data-mage-init='{"loaderAjax": {}, "loader": { "icon": "https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/images/loader-2.gif"}}'
        id="html-body" x-data="{navScroll: true}" class="cms-wahoo-app-subscription page-layout-1column cms-page-view page-layout-cms-full-width">
        
<!-- Google Tag Manager by MagePal -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-56WNQM4"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager by MagePal -->




    <noscript>
        <div class="message global noscript">
            <div class="content">
                <p>
                    <strong>JavaScript seems to be disabled in your browser.</strong>
                    <span>
                        For the best experience on our site, be sure to turn on Javascript in your browser.                    </span>
                </p>
            </div>
        </div>
    </noscript>
                        <!-- hash_002 -->
                        
            






<!-- Start DataLayer by MagePal -->

<!-- Start DataLayer by MagePal  -->

<a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-[9999] focus:px-4 focus:py-2 focus:bg-white focus:text-black focus:underline">Skip to main content</a>
<div class="overlay-menu" aria-hidden="true"></div>
<header class="header-container transition-all md:sticky duration-1000" :class="navScroll ? 'md:top-0' : 'md:-top-full'">
    <div class="header-top">
    <div class="coverup z-[1005]" aria-hidden="true"></div>
      <div class="header-top-container">
      <div class="top-banner-message"> <style>#html-body [data-pb-style=BFFAWHF]{border-style:none;border-width:1px;border-radius:0;margin:0;padding:0}</style><div data-content-type="html" data-appearance="default" data-element="main" data-pb-style="BFFAWHF" data-decoded="true"><div class="ss splide splide_mm relative isolate mx-auto max-w-xl bg-black sm:max-w-[400px] lg:max-w-xl"
     role="region"
     aria-label="Promotional messages"
>
  <div class="splide__track">
    <ul class="splide__list cursor-grab normal-case">
      <li class="splide__slide p-2" role="group" aria-roledescription="slide" aria-label="1 of 2">
        <div class="flex items-center justify-center h-full">
          <p class="text-center text-xs font-semibold tracking-tight text-white leading-snug">
            <a href="/devices/indoor-cycling/certified-reconditioned/view-all"
               class="text-white focus:outline-none focus:ring-2 focus:ring-white font-semibold"
               aria-label="Save now on reconditioned trainers">
              Save Now on Reconditioned Trainers - 
              <span class="whitespace-nowrap hover:underline font-normal">Shop Now</span>
            </a>
          </p>
        </div>
      </li>
      <li class="splide__slide p-2" role="group" aria-roledescription="slide" aria-label="2 of 2">
        <div class="flex items-center justify-center h-full">
          <p class="text-center text-xs font-semibold tracking-tight text-white leading-snug">
            <a href="/hsa-fsa-products"
               class="text-white focus:outline-none focus:ring-2 focus:ring-white font-semibold"
               aria-label="Learn more about HSA and FSA eligible products">
              Your purchase may be HSA or FSA eligible - 
              <span class="whitespace-nowrap hover:underline font-normal">Learn more</span>
            </a>
          </p>
        </div>
      </li>
    </ul>
  </div>
</div>

</div></div>
          <nav class="head-links" aria-label="Utility links">
              <a class="customer-support-link" href="https://support.wahoofitness.com/hc/en-us">Support</a>
              <a class="store-locator-link" href="/store-locator">Store Locator</a>
                                          <div class="country-select-wrap">
                  <style>#html-body [data-pb-style=S96CSWH]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;border-style:none;border-width:1px;border-radius:0;margin-left:0;margin-top:0;margin-right:0}#html-body [data-pb-style=CBLDG09]{border-style:none;border-width:1px;border-radius:0;margin:0;padding:0}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-video-fallback-src="" data-element="inner" data-pb-style="S96CSWH"><div data-content-type="html" data-appearance="default" data-element="main" data-pb-style="CBLDG09" data-decoded="true"><div
  x-data="{ currentDomain: window.location.hostname, curFlag: '' }"
  x-init="() => {
        const countries = [
            {
                domain: 'www.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-US.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>US</span>'
            },
            {
                domain: 'eu.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-EU.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>EU</span>'
            },
            {
                domain: 'uk.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-UK.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>UK</span>'
            },
            {
                domain: 'au.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-AU.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>AU</span>'
            },
            {
                domain: 'en-jp.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-JP.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>JP</span>'
            },
            {
                domain: 'jp.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-JP.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>JP</span>'
            },
            {
                domain: 'ca.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-CA.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>CA</span>'
            },
            {
                domain: 'fr-eu.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-FR.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>FR</span>'
            },
            {
                domain: 'it-eu.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-IT.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>IT</span>'
            },
            {
                domain: 'es-eu.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-ES.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>ES</span>'
            },
            {
                domain: 'de-eu.wahoofitness.com',
                flag: '<span class=\'flag\'><img src=\'https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-DE.png\' alt=\'\' /></span>',
                label: '<span class=\'switcher-header-label\'>DE</span>'
            },
        ];
        
        const currentCountry = countries.find(country => country.domain === currentDomain);
        curFlag = (currentCountry || countries[0]).flag + (currentCountry || countries[0]).label;
    }"
  class="country-selector"
>
  <div class="actions dropdown options switcher-options">
    <span id="curFlag" role="button" tabindex="0" class="action toggle" aria-expanded="false" aria-controls="country-dropdown-options" aria-label="Select your country or region" data-mage-init='{"dropdown":{}}' data-toggle="dropdown" x-html="curFlag"></span>

    <div id="country-dropdown-options" class="dropdown-options-wrapper" data-target="dropdown">
      <div class="left-ctr">
        <ul class="dropdown-options" aria-label="Countries and regions">
          <li class="switcher-option" role="presentation">
            <span class="option-section-header no-topmargin">NORTH AMERICA</span>
          </li>
          <li class="switcher-option">
            <a class="us-link" href="https://www.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-US.png" alt="" /></span>
              <span class="switcher-option-label OneLinkNoTx">United States</span>
              <span class="switcher-header-label" aria-hidden="true">US</span>
            </a>
          </li>
          <li class="switcher-option">
            <a class="us-link" href="https://ca.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-CA.png" alt="" /></span>
              <span class="switcher-option-label OneLinkNoTx">Canada</span>
              <span class="switcher-header-label" aria-hidden="true">CA</span>
            </a>
          </li>

          <li class="switcher-option" role="presentation">
            <span class="option-section-header">EUROPE</span>
          </li>
          <li class="switcher-option">
            <a class="germany-link" href="https://de-eu.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-DE.png" alt="" /></span>
              <span class="switcher-option-label">Germany</span>
            </a>
            <div class="switcher-sub-option" role="group" aria-label="Germany language options">
              <a class="OneLinkKeepLinks" href="https://eu.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-DE.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">English</span>
                <span class="switcher-header-label" aria-hidden="true">EN</span>
              </a>
              <span aria-hidden="true">|</span>
              <a href="https://de-eu.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-DE.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">Deutsch</span>
                <span class="switcher-header-label" aria-hidden="true">EN/DE</span>
              </a>
            </div>
          </li>

          <li class="switcher-option">
            <a class="spain-link" href="https://es-eu.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-ES.png" alt="" /></span>
              <span class="switcher-option-label">Spain</span>
            </a>
            <div class="switcher-sub-option" role="group" aria-label="Spain language options">
              <a class="OneLinkKeepLinks" href="https://eu.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-ES.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">English</span>
                <span class="switcher-header-label" aria-hidden="true">EN</span>
              </a>
              <span aria-hidden="true">|</span>
              <a href="https://es-eu.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-ES.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">Español</span>
                <span class="switcher-header-label" aria-hidden="true">EN/ES</span>
              </a>
            </div>
          </li>

          <li class="switcher-option">
            <a class="france-link" href="https://fr-eu.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-FR.png" alt="" /></span>
              <span class="switcher-option-label">France</span>
            </a>
            <div class="switcher-sub-option" role="group" aria-label="France language options">
              <a class="OneLinkKeepLinks" href="https://eu.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-FR.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">English</span>
                <span class="switcher-header-label" aria-hidden="true">EN</span>
              </a>
              <span aria-hidden="true">|</span>
              <a href="https://fr-eu.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-FR.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">Français</span>
                <span class="switcher-header-label" aria-hidden="true">EN/FR</span>
              </a>
            </div>
          </li>
          <li class="switcher-option">
            <a class="italy-link" href="https://it-eu.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-IT.png" alt="" /></span>
              <span class="switcher-option-label">Italy</span>
            </a>
            <div class="switcher-sub-option" role="group" aria-label="Italy language options">
              <a class="OneLinkKeepLinks" href="https://eu.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-IT.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">English</span>
                <span class="switcher-header-label" aria-hidden="true">EN</span>
              </a>
              <span aria-hidden="true">|</span>
              <a href="https://it-eu.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-IT.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">Italiano</span>
                <span class="switcher-header-label" aria-hidden="true">EN/IT</span>
              </a>
            </div>
          </li>
          <li class="switcher-option">
            <a class="canada-link" href="https://nordic.wahoofitness.com/">
              <span class="flag">
                <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 37 28">
                  <path fill="#c8102e" d="M0,0H37V28H0Z" />
                  <path stroke="#fff" stroke-width="4" d="M0,14h37M14,0v28" />
                </svg>
              </span>
              <span class="switcher-option-label OneLinkNoTx">Denmark</span>
              <span class="switcher-header-label" aria-hidden="true">DK</span>
            </a>
          </li>
          <li class="switcher-option">
            <a class="canada-link" href="https://nordic.wahoofitness.com/">
              <span class="flag">
                <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 11">
                  <rect width="18" height="11" fill="#fff" />
                  <path d="M0,5.5h18M6.5,0v11" stroke="#002F6C" stroke-width="3" />
                </svg>
              </span>
              <span class="switcher-option-label OneLinkNoTx">Finland</span>
              <span class="switcher-header-label" aria-hidden="true">FI</span>
            </a>
          </li>
          <li class="switcher-option">
            <a class="canada-link" href="https://nordic.wahoofitness.com/">
              <span class="flag">
                <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 22 16">
                  <rect width="22" height="16" fill="#ba0c2f" />
                  <path d="M0,8h22M8,0v16" stroke="#fff" stroke-width="4" />
                  <path d="M0,8h22M8,0v16" stroke="#00205b" stroke-width="2" />
                </svg>
              </span>
              <span class="switcher-option-label OneLinkNoTx">Norway</span>
              <span class="switcher-header-label" aria-hidden="true">NO</span>
            </a>
          </li>
          <li class="switcher-option">
            <a class="canada-link" href="https://nordic.wahoofitness.com/">
              <span class="flag">
                <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 5">
                  <path fill="#005293" d="M0,0H8V5H0Z" />
                  <path stroke="#fecb00" d="M0,2.5h8M3,0v5" />
                </svg>
              </span>
              <span class="switcher-option-label OneLinkNoTx">Sweden</span>
              <span class="switcher-header-label" aria-hidden="true">SE</span>
            </a>
          </li>
          <li class="switcher-option">
            <a class="canada-link" href="https://uk.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-UK.png" alt="" /></span>
              <span class="switcher-option-label OneLinkNoTx">United Kingdom</span>
              <span class="switcher-header-label" aria-hidden="true">UK</span>
            </a>
          </li>
          <li class="switcher-option">
            <a class="canada-link" href="https://eu.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-EU.png" alt="" /></span>
              <span class="switcher-option-label">Rest of Europe</span>
              <span class="switcher-header-label" aria-hidden="true">EU</span>
            </a>
          </li>

          <li class="switcher-option" role="presentation">
            <span class="option-section-header">AUSTRALIA</span>
          </li>
          <li class="switcher-option">
            <a class="australia-link" href="https://au.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-AU.png" alt="" /></span>
              <span class="switcher-option-label OneLinkNoTx">Australia</span>
              <span class="switcher-header-label" aria-hidden="true">AU</span>
            </a>
          </li>

          <li class="switcher-option" role="presentation">
            <span class="option-section-header last">ASIA</span>
          </li>
          <li class="switcher-option">
            <a class="japan-link" href="https://jp.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-JP.png" alt="" /></span>
              <span class="switcher-option-label">Japan</span>
            </a>
            <div class="switcher-sub-option" role="group" aria-label="Japan language options">
              <a href="https://jp.wahoofitness.com/?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-JP.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">日本語</span>
                <span class="switcher-header-label" aria-hidden="true">JP</span>
              </a>
              <span aria-hidden="true">|</span>
              <a class="OneLinkKeepLinks" href="https://en-jp.wahoofitness.com/jpenglish?canleave">
                <span class="flag switcher-header-label"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-JP.png" alt="" /></span>
                <span class="switcher-sub-option-label OneLinkNoTx">English</span>
                <span class="switcher-header-label" aria-hidden="true">JP/EN</span>
              </a>
            </div>
          </li>

          <li class="switcher-option">
            <a class="world" href="https://www.wahoofitness.com/?canleave">
              <span class="flag"><img src="https://www.wahoofitness.com/media/wysiwyg/flags/flag-color-World.png" alt="" /></span>
              <span class="switcher-option-label">Rest of the World</span>
              <span class="switcher-header-label" aria-hidden="true">EN</span>
            </a>
          </li>
        </ul>
      </div>
    </div>
  </div>
</div>
</div></div></div>              </div>
                            <a href="/customer/account/login" class="customer-welcome">Sign In</a>


          </nav>
      </div>
  </div>
    <div class="header-main" id="header">
    <div class="header-logo">
      <a href="/" aria-label="Wahoo Fitness – shop indoor bike trainers, GPS bike computers, heart rate monitors, fitness apps, and cycling sensors">
        <svg aria-hidden="true" class="h-full w-auto" width="108" height="26" viewBox="0 0 273 67" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path d="M26.3106 46.6057L36.5976 24.8261H45.2064L55.4935 46.6057L65.7805 24.8261H81.804L60.4393 65.0099H51.0317L40.9061 43.0032L30.7804 65.0099H21.3728L0 24.8261H16.1042L26.3106 46.6057ZM124.364 65.0099H109.849V60.5459H109.688C107.138 64.54 102.112 66.3412 97.3274 66.3412C85.2088 66.3412 76.6726 56.3951 76.6726 44.8827C76.6726 33.3703 85.0475 23.5025 97.166 23.5025C101.87 23.5025 106.816 25.2255 109.841 28.7497V24.8339H124.356V65.0177L124.364 65.0099ZM91.6715 44.961C91.6715 50.0516 95.1005 53.9674 100.998 53.9674C106.896 53.9674 110.325 50.0516 110.325 44.961C110.325 39.8705 106.904 35.8686 100.998 35.8686C95.0924 35.8686 91.6715 40.0272 91.6715 44.961ZM141.203 0V29.9244H141.364C144.712 25.5388 148.779 23.5025 154.443 23.5025C164.81 23.5025 169.829 30.2377 169.829 40.4266V65.0177H155.322V44.4207C155.322 39.7217 154.604 34.8662 148.787 34.8662C142.969 34.8662 141.211 39.7217 141.211 44.4207V65.0177H126.696V0H141.211H141.203ZM220.868 44.961C220.868 58.588 209.379 66.3412 196.228 66.3412C183.077 66.3412 171.588 58.6663 171.588 44.961C171.588 31.2558 183.069 23.5025 196.228 23.5025C209.387 23.5025 220.868 31.2558 220.868 44.961ZM186.901 44.961C186.901 50.0516 190.33 53.9674 196.236 53.9674C202.142 53.9674 205.563 50.0516 205.563 44.961C205.563 39.8705 202.134 35.8686 196.236 35.8686C190.338 35.8686 186.901 40.0272 186.901 44.961ZM272.07 44.961C272.07 58.588 260.589 66.3412 247.429 66.3412C234.27 66.3412 222.789 58.6663 222.789 44.961C222.789 31.2558 234.27 23.5025 247.429 23.5025C260.589 23.5025 272.07 31.2558 272.07 44.961ZM238.102 44.961C238.102 50.0516 241.531 53.9674 247.429 53.9674C253.327 53.9674 256.764 50.0516 256.764 44.961C256.764 39.8705 253.335 35.8686 247.429 35.8686C241.523 35.8686 238.102 40.0272 238.102 44.961Z" fill="black"/>
        </svg>
      </a>
      <a class="logo-link" href="/devices" aria-label="Continue shopping"><span class="sr-only">Continue shopping</span></a>
    </div>
        <div class="header-nav">
        <button type="button" aria-label="Open mobile menu" aria-expanded="false" aria-controls="top_nav_wrapper">
            <div id="hamburger" aria-hidden="true">
                <span></span>
                <span></span>
                <span></span>
                <span></span>
            </div>
        </button>
        <nav id="top_nav_wrapper" aria-label="Main navigation">
            <style>#html-body [data-pb-style=MHA2JYA],#html-body [data-pb-style=RH7B90Y]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=RH7B90Y]{border-style:none;border-width:1px;border-radius:0}#html-body [data-pb-style=MHA2JYA]{width:100%;align-self:stretch}#html-body [data-pb-style=LCXM67Q],#html-body [data-pb-style=MHA2JYA]{border-style:none;border-width:1px;border-radius:0}</style><div class="mega-parent-wrap" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-video-fallback-src="" data-element="main" data-pb-style="RH7B90Y"><div class="row-full-width-inner" data-element="inner"><div class="pagebuilder-column-group" style="display: flex;" data-content-type="column-group" data-grid-size="12" data-element="main"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="MHA2JYA"><div data-content-type="html" data-appearance="default" data-element="main" data-pb-style="LCXM67Q" data-decoded="true"><style>
  .header-container .header-main .header-nav #top_nav>ul>li>ul>li>a:before { display: none }
  @media (max-width: 899px) {
    #top_nav_wrapper #top_nav ul:not(.dropdown-options) li.open>a:not(.mega_menu_sub a):not(.keep) span {
      font-family: "Inter", sans-serif !important;
      font-size: clamp(1.25rem, 2.5vw, 2.25rem) !important;
      line-height: 1.125 !important;
      font-weight: 700 !important;
      text-transform: none !important;
      --tw-text-opacity: 1 !important;
      color: rgb(0 0 0 / var(--tw-text-opacity, 1)) /* #000000 */ !important;
    }
    #top_nav_wrapper #top_nav ul:not(.dropdown-options) li.open>a:not(.mega_menu_sub a):not(.keep) {
      font-family: "Inter", sans-serif !important;
      font-size: clamp(1.25rem, 2.5vw, 2.25rem) !important;
      line-height: 1.125 !important;
      font-weight: 700 !important;
      text-transform: none !important;
      --tw-text-opacity: 1 !important;
      color: rgb(0 0 0 / var(--tw-text-opacity, 1)) /* #000000 */ !important;
      padding: 10px 0 !important;
    }
    .s_top > li.open {
      margin-top:3px !important;
    }
    .s_top > li.open .s_top > li.open {
      margin-top: 15px !important;
    }
    li.open li.open li.open {
      margin-top: 0px !important;
    }
    #top_nav_wrapper #top_nav ul:not(.dropdown-options)>li>*:nth-child(2) {
      padding-top: 1rem !important;
    }
    #top_nav_wrapper #top_nav ul:not(.dropdown-options)>li>a:not(:only-child):after, #top_nav_wrapper #top_nav ul:not(.dropdown-options)>li ul>li>a:not(:only-child):after {
      --tw-border-opacity: 1 !important;
      border-color: rgb(0 0 0 / var(--tw-border-opacity, 1)) /* #000000 */ !important;
    }
  }
</style>

<nav id="top_nav" aria-label="Main navigation">
  <div class="mm_nav" aria-hidden="true"><a href="#"></a><a href="#"></a></div>
  <ul role="menubar">
    <li class="flex-grow-0" role="none">
      <a href="/devices" class="cat menu-step01 no-underline" title="Shop Wahoo products" role="menuitem" aria-haspopup="true" aria-expanded="false"><span class="font-sans text-h3 font-bold normal-case tracking-wide text-black lg:text-base">Shop</span></a>
      <ul x-data="{ openedIndex: 0 }" class="py-6 lg:py-0" role="menu" aria-label="Shop categories">
        <li :class="{ 'opened': openedIndex === 0 }" class="flex-grow-0" role="none">
          <a class="menu-step02 h-auto pt-3 no-underline lg:p-0 lg:px-5" href="/devices/indoor-cycling/view-all" title="Indoor Cycling" role="menuitem" aria-haspopup="true" aria-expanded="false" x-on:click.prevent="openedIndex = (openedIndex === 0 ? null : 0)"><span class="font-sans text-h5 normal-case lg:text-sm">Indoor Cycling</span></a>
          <div class="widget block block-static-block">
    <style>#html-body [data-pb-style=N6Q18G8]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;border-style:none;border-width:1px;border-radius:0}</style><div class="mega_menu_sub" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="N6Q18G8"><div class="row-full-width-inner" data-element="inner"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><style>
  [x-cloak] {display: none !important;}
</style>
<ul class="sub_nav" role="list">
  <!-- Smart Bikes -->
  <li>
    <a class="menu-step03 text-black no-underline" href="/devices/indoor-cycling/smart-bikes" title="Wahoo Smart Bikes">
      <span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Smart Bikes</span>
    </a>
    <div role="group" aria-label="Featured smart bikes">
      <div class="mega_products" role="list" aria-label="Smart bike products">
        <a class="content menu-step04 side no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/smart-bikes/kickr-bike-pro-buy" title="Wahoo KICKR BIKE PRO" role="listitem" aria-label="Shop Wahoo KICKR BIKE PRO — a fully customizable smart bike">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">BIKE PRO</span></p>
            <div class="text-sm font-semibold text-black">$3,999.99</div>
            <p class="text-sm">A fully customizable smart bike that blurs the line between virtual and reality.</p>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_bike_pro_ecomm_00802-01.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR BIKE PRO Smart Bike"></div>
        </a>
        <a x-cloak class="content menu-step04 side no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/smart-bikes/kickr-bike-shift-buy" title="Wahoo KICKR BIKE SHIFT" role="listitem" aria-label="Shop Wahoo KICKR BIKE SHIFT — efficient design with unmatched ride feel">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">BIKE SHIFT</span></p>
            <div class="text-sm font-semibold text-black">$2,549.99</div>
            <p class="text-sm">A powerfully efficient and effective design offering an unmatched ride feel.</p>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/w/a/wahoo_kickr_bike_shift_wfbike2_3.jpeg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR BIKE SHIFT Indoor Bike Trainer"></div>
        </a>
      </div>
      <nav aria-label="Smart bikes quick links">
        <ul class="mega_list" role="list">
          <li x-cloak x-show="['www'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 no-underline lg:whitespace-nowrap font-bold" href="/kickr-indoor-cycling-product-quiz" title="Take our KICKR product quiz" aria-label="Take the Wahoo KICKR product quiz">Take Our KICKR Quiz</a></li>
          <li x-cloak x-show="!['www','uk','eu','ca'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/indoor-cycling/smart-bikes" title="Explore Smart Bikes" aria-label="Explore both Wahoo smart bikes">Explore Both Bikes</a></li>
          <li x-cloak x-show="['www','uk','eu','ca'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/indoor-cycling/smart-bikes" title="Explore KICKR BIKE" aria-label="Explore Wahoo KICKR BIKE">Explore KICKR Bike</a></li>
          <li x-cloak x-show="!['www','uk','eu','ca'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/indoor-cycling/smart-bikes/view-all" title="Shop All Smart Bikes" aria-label="Shop all Wahoo smart bikes">Shop Smart Bikes</a></li>
          <li x-cloak x-show="['www','uk','eu'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/indoor-cycling/certified-reconditioned/view-all" title="Shop Certified Reconditioned" aria-label="Shop Certified Reconditioned">Certified Reconditioned</a></li>
          <li x-cloak x-show="['www','uk','eu','ca'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/indoor-cycling/smart-bikes/kickr-bike-pro-buy" title="Shop KICKR BIKE PRO" aria-label="Shop Wahoo KICKR BIKE PRO">Shop KICKR Bike</a></li>
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/financing" title="Wahoo financing options" aria-label="Explore Wahoo financing options">Financing Options</a></li>
        </ul>
      </nav>
    </div>
  </li>

  <!-- Bike Trainers -->
  <li>
    <a class="menu-step03 text-black no-underline" href="/devices/indoor-cycling/bike-trainers" title="Wahoo Bike Trainers"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Bike Trainers</span></a>
    <div role="group" aria-label="Featured bike trainers">
      <div class="mega_products" role="list" aria-label="Bike trainer products">
        <a class="content menu-step04 flex-shrink no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/bike-trainers/kickr-move-buy" title="Wahoo KICKR MOVE smart trainer" role="listitem" aria-label="Shop Wahoo KICKR MOVE smart trainer">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">MOVE</span></p>
            <div class="text-sm font-semibold text-black">$1,349.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_move_wfbktr123_right_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR MOVE Smart Trainer"></div>
        </a>
        <a x-cloak x-show="!['uk'].some(subdomain => location.hostname.includes(subdomain))" class="content menu-step04 flex-shrink no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/bike-trainers/kickr-buy" title="Wahoo KICKR smart trainer" role="listitem" aria-label="Shop Wahoo KICKR smart trainer">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR</p>
            <div class="text-sm font-semibold text-black">$1,049.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_smart_trainer_v6_1.jpeg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR Smart Trainer"></div>
        </a>
        <a x-cloak x-show="['uk'].some(subdomain => location.hostname.includes(subdomain))" class="content menu-step04 flex-shrink no-underline" href="https://www.wahoofitness.com/catalog/product/view/id/691/s/kickr-buy-standalone-12-speed/" title="Wahoo KICKR smart trainer 12 speed" role="listitem" aria-label="Shop Wahoo KICKR smart trainer — 12 speed">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR - 12 Speed</p>
            <div class="text-sm font-semibold text-black">$1,049.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_zwift_ready_block_2.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR Smart Trainer with 12 Speed Cassette"></div>
        </a>
        <a class="content menu-step04 flex-shrink no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/bike-trainers/kickr-core-2-buy" title="Wahoo KICKR CORE 2 with 11-speed cassette" role="listitem" aria-label="Shop Wahoo KICKR CORE 2 with 11-speed cassette">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">CORE 2</span></p>
            <span>with 11-Speed Cassette</span>
            <div class="text-sm font-semibold text-black">$549.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_core_2.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR CORE 2 with 11-Speed Cassette"></div>
        </a>
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/indoor-cycling/bike-trainers/kickr-core-2-zwift-cog-and-click-buy" title="Wahoo KICKR CORE 2 with Zwift Cog and Click" role="listitem" aria-label="Shop Wahoo KICKR CORE 2 with Zwift Cog and Click">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">CORE 2</span></p>
            <span>with Zwift Cog and Click</span>
            <div class="text-sm font-semibold text-black">$549.99</div>
          </div>
          <div class="img-container mx-auto mt-1 aspect-1 w-max overflow-hidden rounded-xl"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_core_2_zc.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR CORE 2 with Zwift Cog and Click"></div>
        </a>
        <a class="content menu-step04 flex-shrink no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/bike-trainers/kickr-rollr-buy" title="Wahoo KICKR ROLLR bike trainer" role="listitem" aria-label="Shop Wahoo KICKR ROLLR bike trainer">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">ROLLR</span></p>
            <div class="text-sm font-semibold text-black">$699.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_rollr_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR ROLLR Smart Bike Roller Trainer"></div>
        </a>
      </div>
      <nav aria-label="Bike trainers quick links">
        <ul class="mega_list sm:gap-4 lg:gap-6" role="list">
          <li x-cloak x-show="['www'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 no-underline lg:whitespace-nowrap font-bold sm:px-0" href="/kickr-indoor-cycling-product-quiz" title="Take our KICKR product quiz" aria-label="Take the Wahoo KICKR product quiz">Take Our KICKR Quiz</a></li>
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap sm:px-0" href="/devices/indoor-cycling/bike-trainers" title="Explore All Bike Trainers" aria-label="Explore all Wahoo bike trainers">Explore All Trainers</a></li>
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap sm:px-0" href="/devices/indoor-cycling/view-all" title="Shop All Bike Trainers" aria-label="Shop all Wahoo bike trainers">Shop All Trainers</a></li>
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap sm:px-0" href="/devices/indoor-cycling/bike-trainers/compare" title="Compare Wahoo Bike Trainers" aria-label="Compare Wahoo bike trainers">Compare</a></li>
          <li x-cloak x-show="['www','uk','eu'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 no-underline lg:whitespace-nowrap sm:px-0" href="/devices/indoor-cycling/certified-reconditioned/view-all" title="Shop Certified Reconditioned" aria-label="Shop Certified Reconditioned">Certified Reconditioned</a></li>
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap sm:px-0" href="/financing" title="Wahoo financing options" aria-label="Explore Wahoo financing options">Financing Options</a></li>
        </ul>
      </nav>
    </div>
  </li>

  <!-- Bike Trainer Accessories -->
  <li>
    <a class="menu-step03 text-black" href="/devices/indoor-cycling/accessories" title="Wahoo Bike Trainer Accessories"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Bike Trainer Accessories</span></a>
    <div role="group" aria-label="Featured bike trainer accessories">
      <div class="mega_products" role="list" aria-label="Bike trainer accessory products">
        <a class="content menu-step04" href="https://www.wahoofitness.com/devices/indoor-cycling/accessories/kickr-climb-buy" title="Wahoo KICKR CLIMB indoor grade simulator" role="listitem" aria-label="Shop Wahoo KICKR CLIMB indoor grade simulator">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">CLIMB</span></p>
            <div class="text-sm font-semibold text-black">$749.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr-climb-indoor-grade-simulator-1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR Climb Indoor Grade Simulator"></div>
        </a>

        <a x-cloak class="content menu-step04" href="https://www.wahoofitness.com/devices/indoor-cycling/accessories/kickr-headwind-buy-us" title="Wahoo KICKR HEADWIND Bluetooth fan" role="listitem" aria-label="Shop Wahoo KICKR HEADWIND Bluetooth fan" x-show="['www','ca','jp'].some(subdomain => location.hostname.includes(subdomain))">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">HEADWIND</span></p>
            <div class="text-sm font-semibold text-black">$319.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr-headwind-bluetooth-fan-1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR Headwind Bluetooth Fan"></div>
        </a>

        <a x-cloak class="content menu-step04" href="https://www.wahoofitness.com/catalog/product/view/id/242/s/kickr-headwind-buy-uk/" title="Wahoo KICKR HEADWIND Bluetooth fan" role="listitem" aria-label="Shop Wahoo KICKR HEADWIND Bluetooth fan" x-show="['uk'].some(subdomain => location.hostname.includes(subdomain))">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">HEADWIND</span></p>
            <div class="text-sm font-semibold text-black">$199.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr-headwind-bluetooth-fan-1_4.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR Headwind Bluetooth Fan"></div>
        </a>

        <a x-cloak class="content menu-step04" href="https://www.wahoofitness.com/catalog/product/view/id/243/s/kickr-headwind-buy-eu/" title="Wahoo KICKR HEADWIND Bluetooth fan" role="listitem" aria-label="Shop Wahoo KICKR HEADWIND Bluetooth fan" x-show="['eu'].some(subdomain => location.hostname.includes(subdomain))">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">HEADWIND</span></p>
            <div class="text-sm font-semibold text-black">$229.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr-headwind-bluetooth-fan-1_3.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR Headwind Bluetooth Fan"></div>
        </a>

        <a x-cloak class="content menu-step04" href="https://www.wahoofitness.com/devices/indoor-cycling/accessories/kickr-headwind-buy-au" title="Wahoo KICKR HEADWIND Bluetooth fan" role="listitem" aria-label="Shop Wahoo KICKR HEADWIND Bluetooth fan" x-show="['au'].some(subdomain => location.hostname.includes(subdomain))">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">HEADWIND</span></p>
            <div class="text-sm font-semibold text-black">$449.95</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr-headwind-bluetooth-fan-1_2.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR Headwind Bluetooth Fan"></div>
        </a>

        <a class="content menu-step04" href="https://www.wahoofitness.com/devices/indoor-cycling/accessories/kickr-mat-buy" title="Wahoo KICKR Floormat" role="listitem" aria-label="Shop Wahoo KICKR Floormat">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base uppercase text-black">Floormat</span></p>
            <div class="text-sm font-semibold text-black">$89.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr-trainer-floormat-1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR MAT Bike Trainer Floormat"></div>
        </a>
        <a class="content menu-step04" href="https://www.wahoofitness.com/devices/indoor-cycling/accessories/kickr-desk-buy" title="Wahoo KICKR DESK indoor cycling desk" role="listitem" aria-label="Shop Wahoo KICKR DESK indoor cycling desk">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">DESK</span></p>
            <div class="text-sm font-semibold text-black">$229.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_desk_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR Indoor Cycling Desk Stand"></div>
        </a>
      </div>
      <nav aria-label="Bike trainer accessories quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/indoor-cycling/accessories" title="Explore Wahoo Trainer Accessories" aria-label="Explore Wahoo trainer accessories">Explore Trainer Accessories</a></li>
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/indoor-cycling/accessories/view-all" title="Shop All Wahoo Trainer Accessories" aria-label="Shop all Wahoo trainer accessories">Shop All Trainer Accessories</a></li>
        </ul>
      </nav>
    </div>
  </li>

  <!-- Zwift Products -->
  <li>
    <a class="menu-step03 text-black" href="/devices/indoor-cycling/bike-trainer-bundles/zwift-bundles" title="Zwift Products"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Zwift Products</span></a>
    <div role="group" aria-label="Featured Zwift products">
      <div class="mega_products" role="list" aria-label="Zwift product listings">
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/indoor-cycling/bike-trainer-bundles/zwift-bundles/kickr-core-2-zwift-ride-buy" title="Zwift Ride with Wahoo KICKR CORE 2" role="listitem" aria-label="Shop Zwift Ride with Wahoo KICKR CORE 2">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">Zwift Ride</p>
            <span>with KICKR CORE 2</span>
            <div class="text-sm font-semibold text-black">$1,299.99</div>
          </div>
          <div class="img-container mx-auto mt-1 aspect-1 w-max overflow-hidden rounded-xl"><img src="https://www.wahoofitness.com/media/catalog/product/z/w/zwift-ride-kc2-bundle_pdp_2.jpeg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="Zwift Ride with KICKR CORE 2"></div>
        </a>
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/indoor-cycling/bike-trainers/kickr-core-2-zwift-cog-and-click-buy" title="Wahoo KICKR CORE 2 with Zwift Cog and Click" role="listitem" aria-label="Shop Wahoo KICKR CORE 2 with Zwift Cog and Click">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR <span class="font-rbno3 text-base leading-tight text-black">CORE 2</span></p>
            <span>with Zwift Cog and Click</span>
            <div class="text-sm font-semibold text-black">$549.99</div>
          </div>
          <div class="img-container mx-auto mt-1 aspect-1 w-max overflow-hidden rounded-xl"><img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_core_2_zc.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="KICKR CORE 2 with Zwift Cog and Click"></div>
        </a>
        <a x-cloak x-show="['au','jp','ca'].some(subdomain => location.hostname.includes(subdomain))" class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/catalog/product/view/id/718/s/zwift-ride-smart-frame-buy/" title="Zwift Ride Smart Frame" role="listitem" aria-label="Shop Zwift Ride Smart Frame">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">Zwift <span>Ride Smart Frame</span></p>
            <div class="text-sm font-semibold text-black">$450.00</div>
          </div>
          <div class="img-container mx-auto mt-1 aspect-1 w-max overflow-hidden rounded-xl"><img src="https://www.wahoofitness.com/media/catalog/product/z/w/zwift-ride-smart-frame-02.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="Zwift Ride Smart Frame"></div>
        </a>
      </div>
      <nav aria-label="Zwift products quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/indoor-cycling/bike-trainer-bundles/zwift-bundles" title="Shop All Zwift Products" aria-label="Shop all Zwift products">Shop All Zwift Products</a></li>
        </ul>
      </nav>
    </div>
  </li>

  <!-- Parts & Components -->
  <li>
    <a class="menu-step03 text-black" href="/devices/indoor-cycling/parts-components/view-all" title="Wahoo Parts and Components">
      <span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Parts & Components</span>
    </a>
    <div role="group" aria-label="Featured parts and components">
      <div class="mega_products">
        
            <a class="content menu-step04 flex-shrink no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/parts-components/usb-ant-kit-buy" title="USB ANT+ Kit">
              <div class="text">
                <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">USB ANT+ Kit</p>                <div class="text-sm font-semibold text-black">
                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="162" data-price-box="product-id-162">
    <span class="text-sm font-normal text-gray-900">
      

<span class="price-container price-final_price tax weee">
        <span id="product-price-162" data-price-amount="39.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">$39.99</span></span>
        </span>
    </span>

</div>                </div>
              </div>
              <div class="img-container">
                <img src="https://www.wahoofitness.com/media/catalog/product/u/s/usbantkit.png?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" alt="" class="lazyload">
              </div>
            </a>
                    <a class="content menu-step04 flex-shrink no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/parts-components/kickr-thru-axle-kit" title="KICKR Thru Axle Kit">
              <div class="text">
                <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">KICKR Thru Axle Kit</p>                <div class="text-sm font-semibold text-black">
                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="553" data-price-box="product-id-553">
    <span class="text-sm font-normal text-gray-900">
      

<span class="price-container price-final_price tax weee">
        <span id="product-price-553" data-price-amount="34.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">$34.99</span></span>
        </span>
    </span>

</div>                </div>
              </div>
              <div class="img-container">
                <img src="https://www.wahoofitness.com/media/catalog/product/k/i/kickr_thru_axle_kit_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" alt="" class="lazyload">
              </div>
            </a>
                    <a class="content menu-step04 flex-shrink no-underline" href="https://www.wahoofitness.com/devices/indoor-cycling/parts-components/xdr-xd-freehub-buy" title="XDR/XD Freehub Body">
              <div class="text">
                <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">XDR/XD Freehub Body</p>                <div class="text-sm font-semibold text-black">
                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="669" data-price-box="product-id-669">
    <span class="text-sm font-normal text-gray-900">
      

<span class="price-container price-final_price tax weee">
        <span id="product-price-669" data-price-amount="69.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">$69.99</span></span>
        </span>
    </span>

</div>                </div>
              </div>
              <div class="img-container">
                <img src="https://www.wahoofitness.com/media/catalog/product/x/d/xdr-freehub-components_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" alt="" class="lazyload">
              </div>
            </a>
        
      </div>
      <nav aria-label="Parts and components quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/indoor-cycling/parts-components/view-all" title="Shop All Wahoo Parts and Components" aria-label="Shop all Wahoo parts and components">Shop All Parts & Components</a></li>
        </ul>
      </nav>
    </div>
  </li>

  <!-- Nutrition -->
  <li>
    <a class="menu-step03 text-black" href="https://crrnt.app/MOME/xZEEW2Vq" title="Momentous Nutrition" rel="noopener"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Nutrition</span></a>
    <div role="group" aria-label="Featured Momentous nutrition products">
      <div class="mega_products" role="list" aria-label="Momentous supplement products">
        <a class="content menu-step04 flex-shrink" href="https://crrnt.app/MOME/xZEEW2Vq" title="Momentous Creatine supplement" role="listitem" aria-label="Shop Momentous Creatine supplement" rel="noopener">
          <div class="text">
            <p class="OneLinkNoTx block text-xl font-bold leading-tight text-black">Creatine</p>
          </div>
          <div class="img-container">
            <img class="lazyload" src="/media/wysiwyg/cms/partners/momentous/V3_Creatine-90.jpg" alt="Momentous Creatine supplement" title="Momentous Creatine supplement" loading="lazy" width="400" height="300">
          </div>
        </a>
        <a class="content menu-step04 flex-shrink" href="https://crrnt.app/MOME/xZEEW2Vq" title="Momentous Recovery chocolate whey protein" role="listitem" aria-label="Shop Momentous Recovery chocolate whey protein" rel="noopener">
          <div class="text">
            <p class="OneLinkNoTx block text-xl font-bold leading-tight text-black">Recovery</p>
          </div>
          <div class="img-container">
            <img class="lazyload" src="/media/wysiwyg/cms/partners/momentous/V3_Chocolate-Whey-Jar.jpg" alt="Momentous Recovery chocolate whey protein" title="Momentous Recovery chocolate whey protein" loading="lazy" width="400" height="300">
          </div>
        </a>
        <a class="content menu-step04 flex-shrink" href="https://crrnt.app/MOME/xZEEW2Vq" title="Momentous Sleep supplement" role="listitem" aria-label="Shop Momentous Sleep supplement" rel="noopener">
          <div class="text">
            <p class="OneLinkNoTx block text-xl font-bold">Sleep</p>
          </div>
          <div class="img-container">
            <img class="lazyload" src="/media/wysiwyg/cms/partners/momentous/V3_Sleep-With-Pouch.jpg" alt="Momentous Sleep supplement with pouch" title="Momentous Sleep supplement with pouch" loading="lazy" width="400" height="300">
          </div>
        </a>
      </div>
      <nav aria-label="Momentous nutrition quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/partners/momentous" title="Explore Momentous Nutrition" aria-label="Explore Momentous nutrition products">Explore Momentous Nutrition</a></li>
          <li><a class="menu-step04 lg:whitespace-nowrap" href="https://crrnt.app/MOME/xZEEW2Vq" title="Shop All Momentous" aria-label="Shop all Momentous supplements" rel="noopener">Shop All Momentous</a></li>
        </ul>
      </nav>
    </div>
  </li>
</ul></div></div></div></div>

        </li>
        <li :class="{ 'opened': openedIndex === 1 }" class="flex-grow-0" role="none">
          <a class="menu-step02 h-auto no-underline" href="/devices/bike-computers/view-all" title="GPS Bike Computers" role="menuitem" aria-haspopup="true" aria-expanded="false" x-on:click.prevent="openedIndex = (openedIndex === 1 ? null : 1)"><span class="font-sans text-h5 normal-case lg:text-sm">GPS Bike Computers</span></a>
          <div class="widget block block-static-block">
    <style>#html-body [data-pb-style=NACWS8Y]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;border-style:none;border-width:1px;border-radius:0}</style><div class="mega_menu_sub" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="NACWS8Y"><div class="row-full-width-inner" data-element="inner"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><style>
  [x-cloak] {display: none !important;}
</style>
<ul class="sub_nav" role="list">
  <li>
    <a class="menu-step03 text-black no-underline" href="/devices/bike-computers" title="GPS Bike Computers"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">GPS Bike Computers</span></a>
    <div role="group" aria-label="Featured GPS bike computers">
      <div class="mega_products" role="list" aria-label="GPS bike computer products">
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/bike-computers/elemnt-ace-buy" title="Wahoo ELEMNT ACE GPS Bike Computer" role="listitem" aria-label="Shop Wahoo ELEMNT ACE GPS bike computer">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">ELEMNT <span class="font-rbno3 text-base leading-tight text-black">ACE</span></p>
            <div class="font-sans text-sm font-semibold text-black">$499.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/e/l/elemnt_ace_1_nm.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="ELEMNT ACE GPS Bike Computer"></div>
        </a>
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/bike-computers/elemnt-roam-buy" title="Wahoo ELEMNT ROAM 3 GPS Bike Computer" role="listitem" aria-label="Shop Wahoo ELEMNT ROAM 3 GPS bike computer">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">ELEMNT <span class="font-rbno3 text-base leading-tight text-black">ROAM 3</span></p>
            <div class="font-sans text-sm font-semibold text-black">$464.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/e/l/elemnt_roam_compare_mobile_nm.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="ELEMNT ROAM 3 GPS Bike Computer"></div>
        </a>
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/bike-computers/elemnt-bolt-buy" title="Wahoo ELEMNT BOLT 3 GPS Bike Computer" role="listitem" aria-label="Shop Wahoo ELEMNT BOLT 3 GPS bike computer">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">ELEMNT <span class="font-rbno3 text-base leading-tight text-black">BOLT 3</span></p>
            <div class="font-sans text-sm font-semibold text-black">$349.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/e/l/elemnt_bolt_compare_mobile_a.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="ELEMNT BOLT 3 GPS Bike Computer"></div>
        </a>
      </div>
      <nav aria-label="GPS bike computer quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/bike-computers" title="Explore GPS Bike Computers" aria-label="Explore Wahoo GPS bike computers">Explore GPS Bike Computers</a></li>
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/bike-computers/view-all" title="Shop All GPS Bike Computers" aria-label="Shop all Wahoo GPS bike computers">Shop All GPS Bike Computers</a></li>
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/bike-computers#compare-sec" title="Compare GPS Bike Computers" aria-label="Compare Wahoo GPS bike computers">Compare</a></li>
        </ul>
      </nav>
    </div>
  </li>
  <li>
    <a class="menu-step03 text-black no-underline" href="/devices/bike-computers/bike-computer-accessories" title="Bike Computer Accessories"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Accessories</span></a>
    <div role="group" aria-label="Featured bike computer accessories">
      <div class="mega_products" role="list" aria-label="Bike computer accessory products">
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/bike-computers/elemnt-roam-bolt-round-mount-buy" title="Wahoo ELEMNT ROAM 3 and BOLT 3 Out Front Mount" role="listitem" aria-label="Shop out front mount for ELEMNT ROAM 3 and BOLT 3">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">Out Front Mount</p>
            <span>ELEMNT ROAM 3 & BOLT 3</span>
            <div class="font-sans text-sm font-semibold text-black">$29.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/o/u/outfrontmount_20241001_sideprofile-nodevice.jpeg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="ELEMNT ROAM 3 & BOLT 3 Mount - Out Front"></div>
        </a>
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/bike-computers/elemnt-roam-bolt-two-bolt-out-front-mount-buy" title="Wahoo ELEMNT ROAM 3 and BOLT 3 Integrated Handlebar Mount" role="listitem" aria-label="Shop integrated handlebar mount for ELEMNT ROAM 3 and BOLT 3">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">Handlebar Mount</p>
            <span>ELEMNT ROAM 3 & BOLT 3</span>
            <div class="font-sans text-sm font-semibold text-black">$29.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/t/w/twoboltmount_20241001_vertical-nodevice.jpeg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="ELEMNT ROAM 3 & BOLT 3 Mount - Integrated Handlebar"></div>
        </a>
        <a class="content menu-step04 flex-shrink" href="https://www.wahoofitness.com/devices/bike-computers/elemnt-ace-integrated-handlebar-mount-buy" title="Wahoo ELEMNT ACE Integrated Handlebar Mount" role="listitem" aria-label="Shop integrated handlebar mount for ELEMNT ACE">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">Handlebar Mount</p>
            <span>ELEMNT ACE</span>
            <div class="font-sans text-sm font-semibold text-black">$29.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/w/a/wahoo_elemntace_wfcc7_stemmount_1.jpeg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="ELEMNT ACE - Integrated handlebar Mount"></div>
        </a>
      </div>
      <nav aria-label="Bike computer accessories quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/bike-computers/bike-computer-accessories" title="Shop All Bike Computer Accessories" aria-label="Shop all Wahoo bike computer accessories">Shop All Bike Computer Accessories</a></li>
        </ul>
      </nav>
    </div>
  </li>
</ul></div></div></div></div>

        </li>
        <li :class="{ 'opened': openedIndex === 2 }" x-cloak x-show="['www','eu','uk','ca'].some(subdomain => location.hostname.includes(subdomain))" class="flex-grow-0" role="none">
          <a class="menu-step02 h-auto no-underline" href="/devices/bike-computers/view-all" title="GPS Watches" role="menuitem" aria-haspopup="true" aria-expanded="false" x-on:click.prevent="openedIndex = (openedIndex === 2 ? null : 2)"><span class="font-sans text-h5 normal-case lg:text-sm">GPS Watches</span></a>
          <div class="widget block block-static-block">
    <style>#html-body [data-pb-style=SM9M0PA]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div class="mega_menu_sub" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="SM9M0PA"><div class="row-full-width-inner" data-element="inner"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="mega_products" role="list" aria-label="Featured GPS Watches">
  <a class="content menu-step04" href="https://www.wahoofitness.com/devices/coros-gps-running-training-watches/pace-4-buy" title="COROS PACE 4 GPS Watch" role="listitem" aria-label="Shop COROS PACE 4 GPS Watch">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">COROS PACE 4</p>
      <span>GPS Watch</span>
      <div class="font-sans text-sm font-semibold text-black">$249.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/c/o/coros_pace_black_wahoo_main_1_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="COROS PACE 4 GPS Watch"></div>
  </a>
  <a class="content menu-step04" href="https://www.wahoofitness.com/devices/coros-gps-running-training-watches/apex-4-buy" title="COROS APEX 4 GPS Watch" role="listitem" aria-label="Shop COROS APEX 4 GPS Watch">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">COROS APEX 4</p>
      <span>GPS Watch</span>
      <div class="font-sans text-sm font-semibold text-black">$429.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/c/o/coros_apex_wahoo_main.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="COROS APEX 4 GPS Watch"></div>
  </a>
</div>
<nav aria-label="GPS Watches quick links">
  <ul class="mega_list" role="list">
    <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/coros-gps-running-training-watches/view-all" title="Shop All GPS Watches" aria-label="Shop all GPS Watches">Shop All GPS Watches</a></li>
  </ul>
</nav></div></div></div></div>

        </li>
        <li :class="{ 'opened': openedIndex === 3 }" x-cloak x-show="['www','eu','uk','ca'].some(subdomain => location.hostname.includes(subdomain))" class="flex-grow-0" role="none">
          <a href="/devices/running/treadmills/kickr-run-buy" title="Treadmills" role="menuitem" aria-haspopup="true" aria-expanded="false" @click.prevent="openedIndex = (openedIndex === 3 ? null : 3)"><span class="font-sans text-h5 normal-case lg:text-sm">Treadmills</span></a>
          <div class="widget block block-static-block">
    <style>#html-body [data-pb-style=EVDGAJY]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div class="mega_menu_sub" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="EVDGAJY"><div class="row-full-width-inner" data-element="inner"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="mega_products" role="list" aria-label="Featured running products">
  <a class="content menu-step04 side" href="/devices/running/treadmills/kickr-run-buy" title="Wahoo KICKR RUN Treadmill" role="listitem" aria-label="Shop Wahoo KICKR RUN — a revolutionary smart treadmill for indoor running">
    <div class="text">
      <p class="font-rbno3 text-black text-xl OneLinkNoTx leading-snug">KICKR RUN</p>
      <p>A revolutionary rethink of the traditional treadmill experience that brings the freedom and joy of outdoor running into your home, to help you achieve your goals.</p>
    </div>
    <div class="img-container">
      <img src="/media/wysiwyg/cms/run/run_hero.png?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="Wahoo KICKR RUN smart treadmill" title="Wahoo KICKR RUN smart treadmill" loading="lazy" width="350" height="350">
    </div>
  </a>
</div>
<nav aria-label="KICKR RUN quick links">
  <ul class="mega_list" role="list">
    <li x-cloak x-show="['www','uk','eu'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 lg:whitespace-nowrap" href="/devices/running/treadmills" title="Learn more about KICKR RUN" aria-label="Learn more about Wahoo KICKR RUN treadmill">Learn More</a></li>
    <li x-cloak x-show="!['www','uk','eu'].some(subdomain => location.hostname.includes(subdomain))"><a class="menu-step04 lg:whitespace-nowrap" href="/devices/running/treadmills" title="Learn more about KICKR RUN and get exclusive updates" aria-label="Learn more about Wahoo KICKR RUN and get exclusive updates">Click here to learn more & get exclusive updates</a></li>
  </ul>
</nav></div></div></div></div>

        </li>
        <li :class="{ 'opened': openedIndex === 4 }" class="flex-grow-0" role="none">
          <a class="menu-step02 h-auto no-underline" href="/devices/heart-rate-monitors/view-all" title="Heart Rate Monitors" role="menuitem" aria-haspopup="true" aria-expanded="false" x-on:click.prevent="openedIndex = (openedIndex === 4 ? null : 4)"><span class="font-sans text-h5 normal-case lg:text-sm">Heart Rate Monitors</span></a>
          <div class="widget block block-static-block">
    <style>#html-body [data-pb-style=VX7FD9L]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;border-style:none;border-width:1px;border-radius:0}</style><div class="mega_menu_sub" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="VX7FD9L"><div class="row-full-width-inner" data-element="inner"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="mega_products" role="list" aria-label="Featured heart rate monitors">
  <a class="content menu-step04" href="https://www.wahoofitness.com/devices/heart-rate-monitors/trackr-heart-rate-buy" title="Wahoo TRACKR Heart Rate Monitor Chest Strap" role="listitem" aria-label="Shop Wahoo TRACKR Heart Rate Monitor chest strap">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">TRACKR <span class="font-rbno3 text-base leading-tight text-black">HEART RATE</span></p>
      <div class="font-sans text-sm font-semibold text-black">$99.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/z/u/zurich_foldedstrap.jpeg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="TRACKR Heart Rate Monitor Chest Strap"></div>
  </a>
  <a class="content menu-step04" href="https://www.wahoofitness.com/devices/running/heart-rate-monitors/tickr-fit-optical-heart-rate-monitor" title="Wahoo TICKR FIT Optical Heart Rate Monitor" role="listitem" aria-label="Shop Wahoo TICKR FIT optical heart rate monitor armband">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">TICKR <span class="font-rbno3 text-base leading-tight text-black">FIT</span></p>
      <div class="font-sans text-sm font-semibold text-black">$89.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/t/i/tickr-fit-heart-rate-monitor-1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="TICKR Fit Armband Heart Rate Monitor"></div>
  </a>
</div>
<nav aria-label="Heart rate monitor quick links">
  <ul class="mega_list" role="list">
    <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/heart-rate-monitors" title="Explore Heart Rate Monitors" aria-label="Explore Wahoo heart rate monitors">Explore Heart Rate Monitors</a></li>
    <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/heart-rate-monitors/view-all" title="Shop All Heart Rate Monitors" aria-label="Shop all Wahoo heart rate monitors">Shop All Heart Rate Monitors</a></li>
    <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/heart-rate-monitors#comp-sec" title="Compare Heart Rate Monitors" aria-label="Compare Wahoo heart rate monitors">Compare</a></li>
  </ul>
</nav></div></div></div></div>

        </li>
        <li :class="{ 'opened': openedIndex === 5 }" class="flex-grow-0" role="none">
          <a class="menu-step02 h-auto no-underline" href="https://www.livemomentous.com/pages/wahoofitness?mct=xZEEW2Vq" title="Momentous Nutrition" role="menuitem" aria-haspopup="true" aria-expanded="false" rel="noopener" x-on:click.prevent="openedIndex = (openedIndex === 5 ? null : 5)"><span class="font-sans text-h5 normal-case lg:text-sm">Nutrition</span></a>
          <div class="widget block block-static-block">
    <style>#html-body [data-pb-style=R2I0Q93]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div class="mega_menu_sub" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="R2I0Q93"><div class="row-full-width-inner" data-element="inner"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="mega_products" role="list" aria-label="Featured Momentous supplement products">
  <a class="content menu-step04" href="https://crrnt.app/MOME/xZEEW2Vq" title="Momentous Creatine" role="listitem" aria-label="Shop Momentous Creatine supplement" rel="noopener">
    <div class="text">
      <p class="OneLinkNoTx text-xl font-bold text-black block">Creatine</p>
    </div>
    <div class="img-container">
      <img class="lazyload" src="/media/wysiwyg/cms/partners/momentous/V3_Creatine-90.jpg" alt="Momentous Creatine supplement" title="Momentous Creatine supplement" loading="lazy" width="400" height="300">
    </div>
  </a>
  <a class="content menu-step04" href="https://crrnt.app/MOME/xZEEW2Vq" title="Momentous Recovery" role="listitem" aria-label="Shop Momentous Recovery chocolate whey protein" rel="noopener">
    <div class="text">
      <p class="OneLinkNoTx text-xl font-bold text-black block">Recovery</p>
    </div>
    <div class="img-container">
      <img class="lazyload" src="/media/wysiwyg/cms/partners/momentous/V3_Chocolate-Whey-Jar.jpg" alt="Momentous Recovery chocolate whey protein" title="Momentous Recovery chocolate whey protein" loading="lazy" width="400" height="300">
    </div>
  </a>
  <a class="content menu-step04" href="https://crrnt.app/MOME/xZEEW2Vq" title="Momentous Sleep" role="listitem" aria-label="Shop Momentous Sleep supplement" rel="noopener">
    <div class="text">
      <p class="OneLinkNoTx text-xl font-bold block">Sleep</p>
    </div>
    <div class="img-container">
      <img class="lazyload" src="/media/wysiwyg/cms/partners/momentous/V3_Sleep-With-Pouch.jpg" alt="Momentous Sleep supplement with pouch" title="Momentous Sleep supplement with pouch" loading="lazy" width="400" height="300">
    </div>
  </a>
</div>
<nav aria-label="Momentous quick links">
  <ul class="mega_list" role="list">
    <li><a class="menu-step04 lg:whitespace-nowrap" href="/partners/momentous" title="Explore Momentous Nutrition" aria-label="Explore Momentous nutrition products">Explore Momentous Nutrition</a></li>
    <li><a class="menu-step04 lg:whitespace-nowrap" href="https://crrnt.app/MOME/xZEEW2Vq" title="Shop All Momentous" aria-label="Shop all Momentous supplements" rel="noopener">Shop All Momentous</a></li>
  </ul>
</nav></div></div></div></div>

        </li>
        <li :class="{ 'opened': openedIndex === 6 }" class="flex-grow-0" role="none">
          <a class="menu-step02 h-auto no-underline" href="/devices/pedals/view-all" title="SPEEDPLAY Pedals" role="menuitem" aria-haspopup="true" aria-expanded="false" x-on:click.prevent="openedIndex = (openedIndex === 6 ? null : 6)"><span class="font-sans text-h5 normal-case lg:text-sm">Pedals</span></a>
          <div class="widget block block-static-block">
    <style>#html-body [data-pb-style=GVA2SAX]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;border-style:none;border-width:1px;border-radius:0}</style><div class="mega_menu_sub" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="GVA2SAX"><div class="row-full-width-inner" data-element="inner"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><ul class="sub_nav" role="list">
  <li>
    <a class="menu-step03 text-black no-underline" href="/devices/pedals/powrlink" title="Power Pedals"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Power Pedals</span></a>
    <div role="group" aria-label="Featured power pedals">
      <div class="mega_products" role="list" aria-label="Power pedal products">
        <a class="content menu-step04 side no-underline" href="https://www.wahoofitness.com/devices/pedals/speedplay-power/speedplay-power-dual-power-meter-pedal-buy" title="Wahoo SPEEDPLAY POWER DUAL pedals" role="listitem" aria-label="Shop Wahoo SPEEDPLAY POWER DUAL — dual-sided power meter pedals">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">SPEEDPLAY <span class="font-rbno3 text-base leading-tight text-black">POWER DUAL</span></p>
            <div class="font-sans text-sm font-semibold text-black">$849.99</div>
            <p class="text-sm">Dual-sided power meter pedals that deliver accurate power and cadence data, built on the race-proven SPEEDPLAY platform.</p>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_power_dual_main.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY POWER Dual-Sided Power Pedals"></div>
        </a>
        <a class="content menu-step04 side no-underline" href="https://www.wahoofitness.com/devices/pedals/speedplay-power/speedplay-power-single-power-meter-pedal-buy" title="Wahoo SPEEDPLAY POWER SINGLE pedals" role="listitem" aria-label="Shop Wahoo SPEEDPLAY POWER SINGLE — single-sided power meter pedal">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">SPEEDPLAY <span class="font-rbno3 text-base leading-tight text-black">POWER SINGLE</span></p>
            <div class="font-sans text-sm font-semibold text-black">$599.99</div>
            <p class="text-sm">SPEEDPLAY road pedal performance and comfort with single side power and cadence data.</p>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_power_single.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY POWER Single-Sided Bike Power Pedals"></div>
        </a>
      </div>
      <nav aria-label="Power pedals quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/pedals/powrlink" title="Explore All POWER Pedals" aria-label="Explore all Wahoo SPEEDPLAY POWER pedals">Explore All Power Pedals</a></li>
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/pedals/view-all" title="Shop All SPEEDPLAY POWER Pedals" aria-label="Shop all Wahoo SPEEDPLAY POWER pedals">Shop All Power Pedals</a></li>
        </ul>
      </nav>
    </div>
  </li>
  <li>
    <a class="menu-step03 text-black no-underline" href="/devices/pedals/speedplay" title="SPEEDPLAY Road Pedals"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Road Pedals</span></a>
    <div role="group" aria-label="Featured road pedals">
      <div class="mega_products" role="list" aria-label="Road pedal products">
        <a class="content menu-step04 no-underline" href="https://www.wahoofitness.com/devices/pedals/speedplay/speedplay-nano-buy" title="Wahoo SPEEDPLAY NANO titanium pedals" role="listitem" aria-label="Shop Wahoo SPEEDPLAY NANO titanium pedals">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">SPEEDPLAY <span class="font-rbno3 text-base leading-tight text-black">NANO</span></p>
            <span>Titanium Pedals</span>
            <div class="font-sans text-sm font-semibold text-black">$499.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_nano_1_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY NANO Road Bike Pedals"></div>
        </a>
        <a class="content menu-step04 no-underline" href="https://www.wahoofitness.com/devices/pedals/speedplay/speedplay-aero-buy" title="Wahoo SPEEDPLAY AERO stainless steel pedals" role="listitem" aria-label="Shop Wahoo SPEEDPLAY AERO stainless steel pedals">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">SPEEDPLAY <span class="font-rbno3 text-base leading-tight text-black">AERO</span></p>
            <span>Stainless Steel Pedals</span>
            <div class="font-sans text-sm font-semibold text-black">$299.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_aero_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY AERO Pedals for Road Bikes"></div>
        </a>
        <a class="content menu-step04 no-underline" href="https://www.wahoofitness.com/devices/pedals/speedplay/speedplay-zero-buy" title="Wahoo SPEEDPLAY ZERO stainless steel pedals" role="listitem" aria-label="Shop Wahoo SPEEDPLAY ZERO stainless steel pedals">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">SPEEDPLAY <span class="font-rbno3 text-base leading-tight text-black">ZERO</span></p>
            <span>Stainless Steel Pedals</span>
            <div class="font-sans text-sm font-semibold text-black">$214.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_zero_1_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY ZERO Clip-In Road Bike Pedals"></div>
        </a>
        <a class="content menu-step04 no-underline" href="https://www.wahoofitness.com/devices/pedals/speedplay/speedplay-comp-buy" title="Wahoo SPEEDPLAY COMP chromoly pedals" role="listitem" aria-label="Shop Wahoo SPEEDPLAY COMP chromoly pedals">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">SPEEDPLAY <span class="font-rbno3 text-base leading-tight text-black">COMP</span></p>
            <span>Chromoly Pedals</span>
            <div class="font-sans text-sm font-semibold text-black">$129.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_comp_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY COMP Road Bike Clip Pedals"></div>
        </a>
      </div>
      <nav aria-label="Road pedals quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/pedals/speedplay" title="Explore Road Pedals" aria-label="Explore Wahoo SPEEDPLAY road pedals">Explore Road Pedals</a></li>
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/pedals/speedplay#compare-sec" title="Compare SPEEDPLAY Road Pedals" aria-label="Compare Wahoo SPEEDPLAY road pedals">Compare</a></li>
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/pedals/view-all" title="Shop All Road Pedals" aria-label="Shop all Wahoo SPEEDPLAY road pedals">Shop All Road Pedals</a></li>
        </ul>
      </nav>
    </div>
  </li>
  <li>
    <a class="menu-step03 text-black no-underline" href="/devices/pedals/view-all#section-62" title="SPEEDPLAY Cleats and Accessories"><span class="font-sans text-h5 normal-case text-black lg:text-base lg:font-semibold">Cleats & Accessories</span></a>
    <div role="group" aria-label="Featured cleats and accessories">
      <div class="mega_products" role="list" aria-label="Cleat and accessory products">
        <a class="content menu-step04 no-underline" href="https://www.wahoofitness.com/devices/pedals/cleats/road-cleat-standard-tension-buy" title="Wahoo SPEEDPLAY standard tension cycling cleats" role="listitem" aria-label="Shop Wahoo SPEEDPLAY standard tension cycling cleats">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">Standard Tension Cycling Cleats</p>
            <div class="font-sans text-sm font-semibold text-black">$59.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_standard_tension_cleat_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY Standard Tension Cycling Cleats"></div>
        </a>
        <a class="content menu-step04 no-underline" href="https://www.wahoofitness.com/devices/pedals/cleats/road-cleat-easy-tension-buy" title="Wahoo SPEEDPLAY easy tension bike cleats" role="listitem" aria-label="Shop Wahoo SPEEDPLAY easy tension bike cleats">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">Easy Tension Bike Cleats</p>
            <div class="font-sans text-sm font-semibold text-black">$59.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_easy_tension_cleat_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY Easy Tension Bike Cleats"></div>
        </a>
        <a class="content menu-step04 no-underline" href="https://www.wahoofitness.com/devices/pedals/pedal-accessories/speedplay-cleat-cover-buy" title="Wahoo SPEEDPLAY cleat covers" role="listitem" aria-label="Shop Wahoo SPEEDPLAY cleat covers">
          <div class="text">
            <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">Cleat Covers</p>
            <div class="font-sans text-sm font-semibold text-black">$29.99</div>
          </div>
          <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/s/p/speedplay_cleat_cover_1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="SPEEDPLAY Bicycle Cleat Covers"></div>
        </a>
      </div>
      <nav aria-label="Cleats and accessories quick links">
        <ul class="mega_list" role="list">
          <li><a class="menu-step04 no-underline lg:whitespace-nowrap" href="/devices/pedals/view-all#section-62" title="Shop All Pedal Accessories" aria-label="Shop all Wahoo SPEEDPLAY pedal accessories">Shop All Pedals Accessories</a></li>
        </ul>
      </nav>
    </div>
  </li>
</ul></div></div></div></div>

        </li>
        <li :class="{ 'opened': openedIndex === 7 }" class="flex-grow-0" role="none">
          <a class="menu-step02 h-auto no-underline" href="/devices/bike-sensors/view-all" title="Cycling Sensors" role="menuitem" aria-haspopup="true" aria-expanded="false" x-on:click.prevent="openedIndex = (openedIndex === 7 ? null : 7)"><span class="font-sans text-h5 normal-case lg:text-sm">Cycling Sensors</span></a>
          <div class="widget block block-static-block">
    <style>#html-body [data-pb-style=N4OIFP7]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;border-style:none;border-width:1px;border-radius:0}</style><div class="mega_menu_sub" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="main" data-pb-style="N4OIFP7"><div class="row-full-width-inner" data-element="inner"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="mega_products" role="list" aria-label="Featured cycling sensors">
  <a class="content menu-step04" href="https://www.wahoofitness.com/devices/bike-sensors/trackr-radar-buy" title="Wahoo TRACKR RADAR tail light and radar" role="listitem" aria-label="Shop Wahoo TRACKR RADAR — tail light and radar sensor">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">TRACKR <span class="font-rbno3 text-base leading-tight text-black">RADAR</span></p>
      <span>Tail Light and Radar</span>
      <div class="font-sans text-sm font-semibold text-black">$249.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/w/a/wahoo_sp_outdoor_2025_radar_3qtr-off.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="TRACKR RADAR"></div>
  </a>
  <a class="content menu-step04" href="https://www.wahoofitness.com/devices/bike-sensors/trackr-speed-buy" title="Wahoo TRACKR SPEED bike speed sensor" role="listitem" aria-label="Shop Wahoo TRACKR SPEED bike speed sensor">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">TRACKR <span class="font-rbno3 text-base leading-tight text-black">SPEED</span></p>
      <span>Bike Speed Sensor</span>
      <div class="font-sans text-sm font-semibold text-black">$44.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/w/a/wahoo_trackr_speed_wftrackrspd1_v2.2025.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="TRACKR SPEED"></div>
  </a>
  <a class="content menu-step04" href="https://www.wahoofitness.com/devices/bike-sensors/wahoo-rpm-cadence-sensor" title="Wahoo RPM CADENCE cycling cadence sensor" role="listitem" aria-label="Shop Wahoo RPM CADENCE cycling cadence sensor">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">RPM <span class="font-rbno3 text-base leading-tight text-black">CADENCE</span></p>
      <span>Cycling Cadence Sensor</span>
      <div class="font-sans text-sm font-semibold text-black">$44.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/r/p/rpm-cycling-cadence-sensor-1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="RPM Bike Cadence Sensor"></div>
  </a>
  <a x-cloak x-show="['au'].some(subdomain => location.hostname.includes(subdomain))" class="content menu-step04" href="https://www.wahoofitness.com/catalog/product/view/id/124/s/speed-and-cadence-sensors-bundle/" title="Wahoo RPM speed and cadence sensor bundle" role="listitem" aria-label="Shop Wahoo RPM speed and cadence sensor bundle">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">RPM <span class="font-rbno3 text-base leading-tight text-black">BUNDLE</span></p>
      <span>Speed and Cadence Sensor</span>
      <div class="font-sans text-sm font-semibold text-black">$69.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/r/p/rpm-cycling-sensor-bundle-1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="RPM Cycling Sensor Bundle"></div>
  </a>
  <a x-cloak x-show="['eu'].some(subdomain => location.hostname.includes(subdomain))" class="content menu-step04" href="https://www.wahoofitness.com/catalog/product/view/id/12/s/wahoo-blue-sc-speed-and-cadence-sensor/" title="Wahoo BLUE SC speed and cadence sensor" role="listitem" aria-label="Shop Wahoo BLUE SC speed and cadence sensor">
    <div class="text">
      <p class="OneLinkNoTx block font-rbno3 text-xl leading-tight text-black">BLUE <span class="font-rbno3 text-base leading-tight text-black">SC</span></p>
      <span>Speed and Cadence Sensor</span>
      <div class="font-sans text-sm font-semibold text-black">$59.99</div>
    </div>
    <div class="img-container"><img src="https://www.wahoofitness.com/media/catalog/product/b/l/blue-sc-apeed-and-cadence-sensor-1.jpg?optimize=medium&fit=bounds&height=350&width=350&canvas=350:350" class="lazyload" alt="Blue SC Speed and Cadence Sensor"></div>
  </a>
</div>
<nav aria-label="Cycling sensors quick links">
  <ul class="mega_list" role="list">
    <li><a class="menu-step04 lg:whitespace-nowrap" href="/devices/bike-sensors/view-all" title="Shop All Wahoo Cycling Sensors" aria-label="Shop all Wahoo cycling sensors">Shop All Cycling Sensors</a></li>
  </ul>
</nav></div></div></div></div>

        </li>
        <li class="flex-grow-0" role="none">
          <a class="menu-step02 no-underline" href="/devices/accessories/view-all" title="Wahoo Accessories" role="menuitem"><span class="font-sans text-h5 normal-case lg:text-sm">Accessories</span></a>
        </li>
        <li class="flex-grow-0" role="none">
          <a class="menu-step02 h-auto no-underline" href="/devices" title="Shop All Wahoo Products" role="menuitem">
            <span class="font-sans text-h5 font-bold normal-case lg:text-sm">Shop All</span>
          </a>
        </li>
      </ul>
    </li>
    <li class="flex-grow-0" role="none">
      <a href="/devices" class="cat menu-step01" title="Learn about Wahoo products" role="menuitem" aria-haspopup="true" aria-expanded="false"><span class="font-sans text-h3 font-bold normal-case tracking-wide text-black lg:text-base">Learn</span></a>
      <div class="py-6 lg:py-0" role="menu" aria-label="Learn categories">
        <div class="mega_menu_sub">
          <ul class="mega_list border-0 px-0" role="list">
            <li class="link pt-3 lg:p-0 flex-grow-0">
              <a class="menu-step02 h-auto no-underline" href="/devices/indoor-cycling" title="Learn about Indoor Cycling" aria-label="Learn about indoor cycling"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">Indoor Cycling</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step02 h-auto no-underline" href="/devices/indoor-cycling/smart-bikes" title="Learn about Smart Bikes" aria-label="Learn about Wahoo smart bikes"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">Smart Bikes</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step02 h-auto no-underline" href="/devices/indoor-cycling/bike-trainers" title="Learn about Bike Trainers" aria-label="Learn about Wahoo bike trainers">
                <span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">Bike Trainers</span>
              </a>
            </li>
            <li class="link flex-grow-0" x-cloak x-show="['www','uk','eu','ca'].some(subdomain => location.hostname.includes(subdomain))">
              <a href="/devices/running/treadmills" title="Learn about Treadmills" aria-label="Learn about Wahoo KICKR RUN treadmill"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">Treadmills</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step02 h-auto no-underline" href="/devices/bike-computers" title="Learn about GPS Bike Computers" aria-label="Learn about Wahoo GPS bike computers"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">GPS Bike Computers</span></a>
            </li>
            <li class="link flex-grow-0" x-cloak x-show="['www','uk','eu','ca'].some(subdomain => location.hostname.includes(subdomain))">
              <a class="menu-step02 h-auto no-underline" href="/devices/coros-gps-running-training-watches" title="Learn about GPS Watches" aria-label="Learn about Wahoo GPS watches"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">GPS Watches</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step02 h-auto no-underline" href="/partners/momentous" title="Learn about Momentous Nutrition" aria-label="Learn about Momentous nutrition supplements"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">Nutrition</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step02 h-auto no-underline" href="/devices/pedals" title="Learn about SPEEDPLAY Pedals" aria-label="Learn about Wahoo SPEEDPLAY pedals"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">Pedals</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step02 h-auto no-underline" href="/devices/bike-sensors" title="Learn about Cycling Sensors" aria-label="Learn about Wahoo cycling sensors"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">Cycling Sensors</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step02 h-auto no-underline" href="/devices/heart-rate-monitors" title="Learn about Heart Rate Monitors" aria-label="Learn about Wahoo heart rate monitors"><span class="font-sans text-h5 normal-case hover:font-bold lg:text-sm">Heart Rate Monitors</span></a>
            </li>
          </ul>
        </div>
      </div>
    </li>
    <li class="flex-grow-0" role="none">
      <a href="/wahoo-app-subscription" class="cat menu-step01 no-underline" title="Wahoo App" role="menuitem" aria-haspopup="true" aria-expanded="false"><span class="font-sans text-h3 font-bold normal-case tracking-wide text-black lg:text-base">Wahoo App</span></a>
      <div class="py-6 lg:py-0" role="menu" aria-label="Wahoo App options">
        <div class="mega_menu_sub">
          <ul class="mega_list border-0 px-0" role="list">
            <li class="link pt-3 lg:p-0 flex-grow-0">
              <a class="menu-step04 x_link no-underline" href="https://accounts.wahooligan.com/" title="Start a 14 day free trial of Wahoo App" aria-label="Start a 14 day free trial of the Wahoo App" rel="noopener"><span class="font-sans text-h5 normal-case lg:text-sm">Start 14 Day Free Trial</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step04 no-underline lg:whitespace-nowrap" href="/wahoo-app-subscription" title="Learn more about Wahoo App" aria-label="Learn more about the Wahoo App subscription"><span class="font-sans text-h5 normal-case lg:text-sm">Learn More</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step04 no-underline lg:whitespace-nowrap" href="/fitness-apps" title="Download Wahoo fitness apps" aria-label="Download Wahoo fitness apps"><span class="font-sans text-h5 normal-case lg:text-sm">Download</span></a>
            </li>
          </ul>
        </div>
      </div>
    </li>
    <li class="flex-grow-0" role="none">
      <a href="#" class="cat menu-step01 no-underline" title="Discover Wahoo" role="menuitem" aria-haspopup="true" aria-expanded="false"><span class="font-sans text-h3 font-bold normal-case tracking-wide text-black lg:text-base">Discover</span></a>
      <div class="py-6 lg:py-0" role="menu" aria-label="Discover Wahoo">
        <div class="mega_menu_sub">
          <ul class="mega_list border-0 px-0" role="list">
            <li class="link pt-3 lg:p-0 flex-grow-0">
              <a class="menu-step04 no-underline lg:whitespace-nowrap" href="/blog" title="Wahoo Blog" aria-label="Read the Wahoo blog"><span class="font-sans text-h5 normal-case lg:text-sm">Blog</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step04 no-underline lg:whitespace-nowrap" href="/wahoo-presents" title="Wahoo Presents feature films" aria-label="Watch Wahoo Presents feature films"><span class="font-sans text-h5 normal-case lg:text-sm">Wahoo Presents</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step04 no-underline lg:whitespace-nowrap" href="/athletes" title="Wahoo Athletes" aria-label="Meet Wahoo athletes"><span class="font-sans text-h5 normal-case lg:text-sm">Athletes</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step04 no-underline lg:whitespace-nowrap" href="/fitness-apps" title="Wahoo fitness apps" aria-label="Explore Wahoo fitness apps"><span class="font-sans text-h5 normal-case lg:text-sm">Wahoo Apps</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step04 no-underline lg:whitespace-nowrap" href="/partners" title="Wahoo Partners" aria-label="Explore Wahoo partners"><span class="font-sans text-h5 normal-case lg:text-sm">Partners</span></a>
            </li>
            <li class="link flex-grow-0">
              <a class="menu-step04 no-underline lg:whitespace-nowrap" href="/lael-wilcox-world-record-attempt" title="Follow Lael's World Record Attempt" aria-label="Follow Lael's World Record Attempt"><span class="font-sans text-h5 normal-case lg:text-sm">Follow Lael's World Record Attempt</span></a>
            </li>
          </ul>
        </div>
      </div>
    </li>
    <li x-cloak x-show="['au','jp'].some(subdomain => location.hostname.includes(subdomain))" class="flex-grow-0" role="none">
      <a href="/devices/sale" class="cat menu-step01 no-underline" title="Sale items" role="menuitem" aria-label="Shop sale items">
        <span class="font-sans text-h3 font-bold normal-case tracking-wide text-red-600 lg:text-base">Sale</span>
      </a>
    </li>
  </ul>
</nav></div></div></div></div></div>        </nav>
    </div>

    
    <div class="header-links count">
      <div class="block-search">
    <div class="block-title"><strong>Search</strong></div>
    <div class="block-content">
        <form class="form minisearch" id="search_mini_form" action="https://www.wahoofitness.com/catalogsearch/result/" method="get">
            <div class="field search">
                <label class="label" for="search" data-role="minisearch-label">
                    <span>Search</span>
                </label>
                <div class="control">
                    <input id="search"
                           data-mage-init='{"quickSearch":{
                                "formSelector":"#search_mini_form",
                                "url":"https://www.wahoofitness.com/search/ajax/suggest/",
                                "destinationSelector":"#search_autocomplete"}
                           }'
                           type="text"
                           name="q"
                           value=""
                           placeholder="Search Products"
                           class="input-text"
                           maxlength="128"
                           role="combobox"
                           aria-haspopup="false"
                           aria-autocomplete="both"
                           autocomplete="off"
                           aria-expanded="false"/>
                    <div id="search_autocomplete" class="search-autocomplete"></div>
                                    </div>
            </div>
            <div class="actions">
                <button type="submit"
                        title="Search"
                        class="action search">
                    <span>Search</span>
                </button>
            </div>
        </form>
    </div>
</div>
      <a class="mobile-account" href="/customer/account" aria-label="My Account">
        <i class="wf-profile" aria-hidden="true"></i>
    </a>
    <a href="#header-cart" class="skip-link skip-cart action showcart" data-bind="scope: 'cart_qty'"
       aria-label="Shopping Cart" aria-haspopup="dialog" aria-expanded="false" aria-controls="minicart-content-wrapper">
      <span aria-hidden="true">Cart</span>
      <i class="wf-cart" aria-hidden="true"></i>
            <span class="sr-only" data-bind="text: cartData().summary_count ? cartData().summary_count + ' items in cart' : 'Cart is empty'"></span>
            <span aria-hidden="true" class="count cart-qty no-display" data-bind="css: {'no-display': !cartData().summary_count}, 'text': cartData().summary_count"></span>
    </a>
    </div>
      </div>

    
<div data-block="minicart" class="minicart-wrapper">
            <div class="block block-minicart empty"
             role="dialog"
             aria-modal="true"
             aria-labelledby="minicart-title"
             data-role="dropdownDialog"
             data-mage-init='{"dropdownDialog":{
                "appendTo":"[data-block=minicart]",
                "triggerTarget":".showcart",
                "timeout": "2000",
                "closeOnMouseLeave": false,
                "closeOnEscape": true,
                "triggerClass":"active",
                "parentClass":"active",
                "buttons":[]}}'>
            <div id="minicart-content-wrapper" data-bind="scope: 'minicart_content'">
                <!-- ko template: getTemplate() --><!-- /ko -->
            </div>
                    </div>
        
    
</div>


  
</header>

<div id="main-content" class="page-wrapper"><nav aria-label="Breadcrumb" class="breadcrumbs">
    <ul>
                    <li class="home">
                            <a href="https://www.wahoofitness.com/" title="Go to Home Page">
                    Home                </a>
                                        <span aria-hidden="true">/ </span>
                        </li>
                    <li class="cms_page">
                            <strong aria-current="page">Wahoo App Membership</strong>
                                    </li>
            </ul>
</nav>
<div class="page overflow-hidden"><main id="maincontent" class="page-main-full-width"><a id="contentarea" tabindex="-1"></a>
<div class="page messages"><div data-placeholder="messages"></div>
<div data-bind="scope: 'messages'">
    <!-- ko if: cookieMessages && cookieMessages.length > 0 -->
    <div aria-atomic="true" role="alert" data-bind="foreach: { data: cookieMessages, as: 'message' }" class="messages">
        <div data-bind="attr: {
            class: 'message-' + message.type + ' ' + message.type + ' message text-sm font-semibold',
            'data-ui-id': 'message-' + message.type
        }">
            <div data-bind="html: $parent.prepareMessageForHtml(message.text)"></div>
        </div>
    </div>
    <!-- /ko -->

    <!-- ko if: messages().messages && messages().messages.length > 0 -->
    <div aria-atomic="true" role="alert" class="messages" data-bind="foreach: {
        data: messages().messages, as: 'message'
    }">
        <div data-bind="attr: {
            class: 'message-' + message.type + ' ' + message.type + ' message text-sm font-semibold',
            'data-ui-id': 'message-' + message.type
        }">
            <div data-bind="html: $parent.prepareMessageForHtml(message.text)"></div>
        </div>
    </div>
    <!-- /ko -->
</div>


</div><div class="columns"><div class="column main"><input name="form_key" type="hidden" value="W4vzmKc6jIOcmGGT" />



<!-- Yotpo - Add body class -->

<!--/ Yotpo - Add body class -->
<!-- Yotpo - Widget Script -->
    
<!--/ Yotpo - Widget Script -->
<div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><style>
  .min-h-9 {
    min-height: 2.25rem !important;
  }
</style>
<div x-data="{ activeSec: 1 }">
  <section class="bg-white">
    <div class="relative isolate mx-auto max-w-none overflow-x-hidden px-6 py-10 lg:px-8 lg:py-20">
      <div class="mx-auto flex max-w-2xl flex-col gap-8 text-center md:max-w-none">
        <svg class="mx-auto h-20 w-auto md:h-32" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
          <rect width="120" height="120" rx="32" fill="#212121" />
          <path fill-rule="evenodd" clip-rule="evenodd" d="M21.1649 62.894L24.7273 54.9426L27.7891 54.9094L31.5378 62.7736L35.1003 54.8222L40.7977 54.7557L33.3749 69.4336L30.0317 69.471L26.3368 61.5238L22.8323 69.5582L19.485 69.5997L11.7188 55.1004L17.4452 55.0298L21.1649 62.894Z" fill="white" />
          <path fill-rule="evenodd" clip-rule="evenodd" d="M44.3819 62.0247C44.4026 63.8694 45.6409 65.2746 47.7407 65.2497C49.8405 65.2249 51.0415 63.7906 51.0208 61.946C51.0001 60.1594 49.7618 58.6671 47.662 58.692C45.5622 58.7168 44.3612 60.234 44.3819 62.0247ZM56.0984 69.1545L50.938 69.2167L50.9173 67.6001H50.8593C49.9689 69.0592 48.188 69.7307 46.4899 69.7514C42.1744 69.8012 39.0972 66.2321 39.0475 62.0579C38.9978 57.8836 41.9342 54.2731 46.2497 54.2234C47.9188 54.2027 49.6872 54.8037 50.7806 56.068L50.7641 54.6545L55.9245 54.5923L56.0984 69.1545Z" fill="white" />
          <path fill-rule="evenodd" clip-rule="evenodd" d="M61.71 45.4688L61.8383 56.3359H61.8962C63.067 54.7282 64.5026 53.9722 66.5132 53.9514C70.1994 53.9057 72.0114 56.3276 72.0528 60.0289L72.1604 68.9602L67.0014 69.0225L66.9145 61.541C66.8938 59.8336 66.6208 58.0723 64.5522 58.0972C62.5126 58.1221 61.8796 59.8959 61.9003 61.6033L61.9872 69.0848L56.8323 69.143L56.5552 45.5311L61.71 45.4688Z" fill="white" />
          <path fill-rule="evenodd" clip-rule="evenodd" d="M78.2086 61.6606C78.2293 63.5052 79.4659 64.9104 81.5628 64.8855C83.6596 64.8565 84.859 63.4264 84.8384 61.5819C84.8177 59.7912 83.5811 58.299 81.4842 58.3239C79.3873 58.3529 78.1879 59.87 78.2086 61.6606ZM90.277 61.5156C90.3349 66.4565 86.29 69.3166 81.6165 69.3704C76.972 69.4285 72.8278 66.6927 72.7699 61.7228C72.712 56.757 76.7569 53.8969 81.4304 53.843C86.1039 53.7892 90.2191 56.5498 90.277 61.5156Z" fill="white" />
          <path fill-rule="evenodd" clip-rule="evenodd" d="M96.251 61.3562C96.2717 63.2008 97.5086 64.606 99.6018 64.5811C101.699 64.5521 102.903 63.122 102.882 61.2774C102.857 59.4868 101.621 57.9945 99.5274 58.0194C97.43 58.0443 96.2304 59.5655 96.251 61.3562ZM108.318 61.2111C108.38 66.1521 104.33 69.0122 99.6556 69.0661C95.0141 69.12 90.8691 66.3883 90.8112 61.4184C90.7491 56.4526 94.799 53.5924 99.4736 53.5386C104.148 53.4847 108.26 56.2453 108.318 61.2111Z" fill="white" />
        </svg>
        <h1 class="mx-auto max-w-2xl text-balance font-rbno3 text-7xl leading-none text-black">Built to Build Better Athletes</h1>
        <p class="mx-auto max-w-6xl text-balance text-2xl text-black">Wahoo is a training platform built to guide endurance athletes. It helps you evaluate your fitness, understand your progress, and train with purpose.</p>
        <div class="flex flex-col items-center justify-center gap-2 xs:flex-row">
          <a href="/fitness-apps" class="btn-primary inline-block w-full xs:w-auto">Download app</a>
          <a href="https://membership.wahoofitness.com/subscription" class="btn-blue inline-block w-full xs:w-auto">Start free trial</a>
        </div>
      </div>
    </div>
  </section>

  <section class="bg-white" role="region" aria-label="Workout card showcase">
    <div class="relative isolate py-10">
      <!--{ image: 'cardv11.png' },-->
      <div
        class="relative flex flex-col gap-1 overflow-x-hidden md:gap-1.5"
        x-data="{
        woCards: [
          { image: 'cardv1.png' },
          { image: 'cardv2.png' },
          { image: 'cardv3.png' },
          { image: 'cardv4.png' },
          { image: 'cardv5b.png' },
          { image: 'cardv13.png' },
          { image: 'cardv6.png' },
          { image: 'cardv7.png' },
          { image: 'cardv8.png' },
          { image: 'cardv9.png' },
          { image: 'cardv10.png' },
          { image: 'cardv12.png' },
          { image: 'cardv13.png' },
          { image: 'cardv14.png' },
          { image: 'card15.png' },
          { image: 'card16.png' },
          { image: 'card17.png' },
        ]
      }"
        x-init="preloadWOImages(woCards.map(file => file.image))"
      >
        <div class="relative flex overflow-x-hidden">
          <div class="mx-4 flex animate-marquee items-center justify-start gap-1 pr-1 md:gap-1.5 md:pr-2">
            <template x-for="(workout, index) in woCards.slice(0, Math.ceil(woCards.length / 2))" :key="index">
              <figure class="relative h-[118px] w-max flex-shrink-0 overflow-hidden rounded-xl md:h-[200px]">
                <img class="h-full w-auto object-cover" :src="`/media/wysiwyg/cms/wahoox/workouts/${workout.image}`" alt="workout card" />
              </figure>
            </template>
          </div>
          <div class="absolute mx-4 flex animate-marquee2 items-center justify-start gap-1 pr-1 md:gap-1.5 md:pr-2">
            <template x-for="(workout, index) in woCards.slice(0, Math.ceil(woCards.length / 2))" :key="index">
              <figure class="relative h-[118px] w-max flex-shrink-0 overflow-hidden rounded-xl md:h-[200px]">
                <img class="h-full w-auto object-cover" :src="`/media/wysiwyg/cms/wahoox/workouts/${workout.image}`" alt="workout card" />
              </figure>
            </template>
          </div>
        </div>
        <div class="relative flex overflow-x-hidden">
          <div class="flex animate-marqueeL items-center justify-start gap-1 pr-1 md:gap-1.5 md:pr-2">
            <template x-for="(workout, index) in woCards.slice(Math.ceil(woCards.length / 2), Math.ceil((woCards.length / 2) * 2))" :key="index">
              <figure class="relative h-[118px] w-max flex-shrink-0 overflow-hidden rounded-xl md:h-[200px]">
                <img class="h-full w-auto object-cover" :src="`/media/wysiwyg/cms/wahoox/workouts/${workout.image}`" alt="workout card" />
              </figure>
            </template>
          </div>
          <div class="absolute flex animate-marqueeL2 items-center justify-start gap-1 pr-1 md:gap-1.5 md:pr-2">
            <template x-for="(workout, index) in woCards.slice(Math.ceil(woCards.length / 2), Math.ceil((woCards.length / 2) * 2))" :key="index">
              <figure class="relative h-[118px] w-max flex-shrink-0 overflow-hidden rounded-xl md:h-[200px]">
                <img class="h-full w-auto object-cover" :src="`/media/wysiwyg/cms/wahoox/workouts/${workout.image}`" alt="workout card" />
              </figure>
            </template>
          </div>
        </div>
        
      </div>
    </div>
  </section>

  <nav id="scroll-control" x-intersect.margin.-50%="navScroll = false" x-intersect:leave.margin.0.0.-50%.0="navScroll = true" aria-label="Page sections">
    <div class="relative isolate flex w-full items-center overflow-x-scroll border-t-[1px] border-black bg-secondary-light py-4 xl:overflow-x-auto">
      <div class="mx-auto flex h-auto w-full max-w-5xl items-center gap-2 px-6 sm:justify-center lg:px-0">
        <a href="#included-sec" class="btn-transparent-sm text-base py-2" :class="activeSec === 1 ? 'bg-black text-white' : ''" x-on:click="activeSec = 1">What's Included</a>
        <a href="#pricing-sec" class="btn-transparent-sm text-base py-2" :class="activeSec === 2 ? 'bg-black text-white' : ''" x-on:click="activeSec = 2">Compare Plans</a>
        <a href="#faq-sec" class="btn-transparent-sm text-base py-2" :class="activeSec === 3 ? 'bg-black text-white' : ''" x-on:click="activeSec = 3">FAQ</a>
        <a href="https://membership.wahoofitness.com/subscription" class="btn-blue-sm shrink-0 text-base" x-on:click="activeSec = 6">Start Free Trial</a>
      </div>
    </div>
  </nav>

  <div id="included-sec" x-intersect.margin.-50%="activeSec = 1" class="bg-white">
    <div class="relative isolate mx-auto flex max-w-[900px] flex-col gap-4 p-4 lg:gap-0 lg:divide-y lg:border-b lg:p-0">
      <div x-intersect="$el.classList.add('animate-fadeInUpMobile','md:animate-fadeInUp')" class="relative mx-auto flex w-full flex-col items-center justify-between gap-4 overflow-hidden rounded-xl bg-secondary-light p-4 text-center lg:mx-0 lg:max-w-none lg:flex-row lg:rounded-none lg:bg-transparent lg:px-0 lg:py-20 lg:text-left">
        <div class="flex flex-col gap-12">
          <h2 class="order-1 text-balance text-h5 font-bold text-black">Plan with intent.</h2>
          <ul class="featureList lg:max-w-1/2 order-3 flex basis-auto flex-col gap-2 lg:order-2 lg:w-[440px]">
            <li data-image="/media/wysiwyg/cms/wahoox/features/1_1-Discoverb.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px]" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Create a personalized performance profile.</p>
            </li>
            <li data-image="/media/wysiwyg/cms/wahoox/features/1-2-Plan.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px]" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Plan your next ride or workout.</p>
            </li>
            <li data-image="/media/wysiwyg/cms/wahoox/features/1-3-Plan.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px]" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Receive personalized recommendations to improve.</p>
            </li>
          </ul>
        </div>
        <img class="featureImage order-2 mx-auto aspect-[3/2] max-h-[171px] max-w-[90%] self-center rounded-xl object-contain lg:order-3 lg:mx-0 lg:max-h-[275px] lg:w-auto lg:max-w-[450px] lg:self-end" src="/media/wysiwyg/cms/wahoox/features/1_1-Discoverb.png" alt="Plan with intent." />
      </div>
      <div x-intersect="$el.classList.add('animate-fadeInUpMobile','md:animate-fadeInUp')" class="relative mx-auto flex w-full flex-col items-center justify-between gap-4 overflow-hidden rounded-xl bg-secondary-light p-4 text-center lg:mx-0 lg:max-w-none lg:flex-row lg:rounded-none lg:bg-transparent lg:px-0 lg:py-20 lg:text-left">
        <div class="flex flex-col gap-12">
          <h2 class="order-1 max-w-sm text-balance text-h5 font-bold text-black">Perform with purpose.</h2>
          <ul class="featureList lg:max-w-1/2 order-3 flex basis-auto flex-col gap-2 lg:order-2 lg:w-[440px]">
            <li data-image="/media/wysiwyg/cms/wahoox/features/2-1-Perform.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px] stroke-2" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Record workouts indoors and outdoors.</p>
            </li>
            <li data-image="/media/wysiwyg/cms/wahoox/features/2-2-Perform.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px] stroke-2" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Simulate real outdoor routes indoors.</p>
            </li>
            <li data-image="/media/wysiwyg/cms/wahoox/features/2-3-Perform.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px]" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Perform guided structured video-based workouts.</p>
            </li>
          </ul>
        </div>
        <img class="featureImage order-2 mx-auto aspect-[3/2] max-h-[171px] max-w-[90%] self-center rounded-xl object-contain lg:order-3 lg:mx-0 lg:max-h-[275px] lg:w-auto lg:max-w-[450px] lg:self-end" src="/media/wysiwyg/cms/wahoox/features/2-1-Perform.png" alt="Perform with purpose." />
      </div>
      <div x-intersect="$el.classList.add('animate-fadeInUpMobile','md:animate-fadeInUp')" class="relative mx-auto flex w-full flex-col items-center justify-between gap-4 overflow-hidden rounded-xl bg-secondary-light p-4 text-center lg:mx-0 lg:max-w-none lg:flex-row lg:rounded-none lg:bg-transparent lg:px-0 lg:py-20 lg:text-left">
        <div class="flex flex-col gap-12">
          <h2 class="order-1 max-w-sm text-balance text-h5 font-bold text-black lg:whitespace-nowrap">Turn insights into smarter efforts.</h2>
          <ul class="featureList lg:max-w-1/2 order-3 flex basis-auto flex-col gap-2 lg:order-2 lg:w-[440px]">
            <li data-image="/media/wysiwyg/cms/wahoox/features/3-1.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px] stroke-2" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Dig deeper into your performance.</p>
            </li>
            <li data-image="/media/wysiwyg/cms/wahoox/features/3-2.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px] stroke-2" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Understand your fitness capacity trends.</p>
            </li>
            <li data-image="/media/wysiwyg/cms/wahoox/features/3-3.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px]" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Know where you're making progress.</p>
            </li>
          </ul>
        </div>
        <img class="featureImage order-2 mx-auto aspect-[3/2] max-h-[171px] max-w-[90%] self-center rounded-xl object-contain lg:order-3 lg:mx-0 lg:max-h-[275px] lg:w-auto lg:max-w-[450px] lg:self-end" src="/media/wysiwyg/cms/wahoox/features/3-1.png" alt="Turn insights into smarter efforts." />
      </div>
      <div x-intersect="$el.classList.add('animate-fadeInUpMobile','md:animate-fadeInUp')" class="relative mx-auto flex w-full flex-col items-center justify-between gap-4 overflow-hidden rounded-xl bg-secondary-light p-4 text-center lg:mx-0 lg:max-w-none lg:flex-row lg:rounded-none lg:bg-transparent lg:px-0 lg:py-20 lg:text-left">
        <div class="flex flex-col gap-12">
          <h2 class="order-1 max-w-sm text-balance text-h5 font-bold text-black">Come back stronger.</h2>
          <ul class="featureList lg:max-w-1/2 order-3 flex basis-auto flex-col gap-2 lg:order-2 lg:w-[440px]">
            <li data-image="/media/wysiwyg/cms/wahoox/features/4-1-Comeback.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px]" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Know when to go hard or pull back.</p>
            </li>
            <li data-image="/media/wysiwyg/cms/wahoox/features/4-2-Comeback.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px]" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Access guided recovery sessions.</p>
            </li>
            <li data-image="/media/wysiwyg/cms/wahoox/features/4-3-Comeback.png" class="m-0 flex items-center gap-2.5 py-1 pl-2.5 text-left" role="button" tabindex="0" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();this.click();}">
              <div class="flex items-center self-center text-info-light">
                <svg width="16" class="svg-selected hidden rotate-180 -scale-x-100 transform" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <circle class="animate-circleP" cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="38" stroke-linecap="round" stroke-width="2" fill="none" />
                </svg>
                <svg class="img-not-selected h-auto w-[15px]" width="18" height="13" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                  <path d="M6.75 12.5L0 5.74995L1.0605 4.68945L6.75 10.3782L16.9395 0.189453L18 1.24995L6.75 12.5Z" fill="black" fill-opacity="0.7" />
                </svg>
              </div>
              <p class="ml-2 w-full cursor-pointer text-lg text-black/70">Review training trends over time.</p>
            </li>
          </ul>
        </div>
        <img class="featureImage order-2 mx-auto aspect-[3/2] max-h-[171px] max-w-[90%] self-center rounded-xl object-contain lg:order-3 lg:mx-0 lg:max-h-[275px] lg:w-auto lg:max-w-[450px] lg:self-end" src="/media/wysiwyg/cms/wahoox/features/4-1-Comeback.png" alt="Come back stronger." />
      </div>
    </div>
  </div>

  

  <div id="pricing-sec" class="px-6 py-10 lg:px-8 lg:py-20" x-intersect.margin.-50%="activeSec = 2">
    <div class="mx-auto flex max-w-[900px] flex-col gap-8">
      <div>
        <h2 class="mb-3 text-center text-h4 font-bold text-black">Start Free Today. Unlock More When You're Ready.</h2>
        <p class="mx-auto max-w-3xl text-center text-2xl text-black/70">Access core tools for free. Upgrade anytime to get structured plans, adaptive insights, and recovery tools.</p>
      </div>

      <div class="grid grid-cols-1 gap-2 sm:grid-cols-3">
        <div class="flex flex-col items-center justify-between gap-6 rounded-xl border p-6 text-center">
          <div class="flex flex-col gap-2">
            <p class="text-h4 font-bold text-black">Free</p>
            <div class="invisible rounded-md bg-info-main px-2 py-1 text-sm text-white">free</div>
          </div>
          <div>
            <p x-cloak x-show="['www','au'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">$0</p>
            <p x-cloak x-show="['ca'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">CA$0</p>
            <p x-cloak x-show="['eu'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">€0</p>
            <p x-cloak x-show="['uk'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">£0</p>
            <p x-cloak x-show="['jp'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">¥0</p>
            <p class="text-base text-gray-400">/month</p>
          </div>

          <a href="https://membership.wahoofitness.com/subscription" class="btn-secondary-sm inline-block w-full text-base shrink-0">Get Started</a>
          <div class="min-h-9">
            <p class="text-xs text-black/70">
              Get started today with a free plan.<br class="hidden sm:block" />
              Upgrade when you’re ready.
            </p>
          </div>
        </div>
        <div class="flex flex-col items-center justify-between gap-6 rounded-xl border p-6 text-center">
          <div class="flex flex-col gap-2">
            <p class="text-h4 font-bold text-black">Monthly</p>
            <div class="rounded-md bg-info-main px-2 py-1 text-sm text-white">Most flexible</div>
          </div>
          <div>
            <p class="text-5xl font-bold text-black">$17.99</p>
            <p class="text-base text-gray-400">/month</p>
          </div>
          <a href="https://membership.wahoofitness.com/subscription" class="btn-blue-sm inline-block w-full text-base shrink-0">Try Monthly Plan</a>
          <div class="min-h-9">
            <p class="text-xs text-black/70"><span class="cur">$</span>0 for 14 days, then $17.99 per month.</p>
          </div>
        </div>
        <div class="flex flex-col items-center justify-between gap-6 rounded-xl border p-6 text-center">
          <div class="flex flex-col gap-2">
            <p class="text-h4 font-bold text-black">Annual</p>
            <div class="rounded-md bg-black px-2 py-1 text-sm text-white">Save 17%</div>
          </div>
          <div>
            <p x-cloak x-show="['www'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">$15.00</p>
            <p x-cloak x-show="['ca'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">CA$20.83</p>
            <p x-cloak x-show="['au'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">$20.83</p>
            <p x-cloak x-show="['eu'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">€15.00</p>
            <p x-cloak x-show="['uk'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">£12.50</p>
            <p x-cloak x-show="['jp'].some(subdomain => location.hostname.includes(subdomain))" class="text-5xl font-bold text-black OneLinkNoTx">¥2,500</p>
            <p class="text-base text-gray-400">/month</p>
          </div>
          <a href="https://membership.wahoofitness.com/subscription" class="btn-primary-sm inline-block w-full text-base shrink-0">Try Annual Plan</a>
          <div class="min-h-9">
            <p class="text-xs text-black/70"><span class="cur">$</span>0 for 14 days, then $179.99 per year.</p>
          </div>
        </div>
      </div>

      <div class="overflow-x-auto">
        <table class="w-full overflow-hidden rounded-2xl border-2 border-gray-100 shadow-sm">
          <thead>
            <tr>
              <th class="border border-gray-300 bg-gray-200 px-2 py-3 text-left text-base font-bold sm:px-4">Benefit</th>
              <th class="border border-gray-300 bg-gray-200 px-2 py-3 text-center text-base font-bold sm:px-4">Free</th>
              <th class="border border-gray-300 bg-gray-200 px-2 py-3 text-center text-base font-bold sm:px-4">Subscription</th>
            </tr>
          </thead>
          <tbody class="bg-white">
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Wahoo Device Management</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">LiveTrack (real-time location sharing)</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Route Management Tools</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Third-party app integration (Strava, TrainingPeaks, etc.)</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">In-App Workout Recording</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Cycling Athlete Profile via Quiz</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Mental Capacity Assessment</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Interactive Post Activity Details</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Unique Fitness &amp; Training Capacity Score</td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Personalized Cycling Athlete Trends</td>
              <td class="text-center align-middle"></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Access to execute Wahoo Structured workouts</td>
              <td class="text-center align-middle"></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Daily Workout Recommendations</td>
              <td class="text-center align-middle"></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Mental Training &amp; Recovery</td>
              <td class="text-center align-middle"></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Ride or Run Any Outdoor Route—Indoors</td>
              <td class="text-center align-middle"></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
            <tr class="border border-gray-300">
              <td class="px-2 py-3 text-left text-base font-medium text-black sm:px-4">Full Access to Wahoo SYSTM</td>
              <td class="text-center align-middle"></td>
              <td class="text-center align-middle"><span class="inline-block text-2xl text-black">&#10003;</span></td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>

  <section id="steps" class="bg-white">
    <div x-intersect="$el.classList.add('animate-fadeInUpMobile','md:animate-fadeInUp')" class="relative isolate mx-auto max-w-[1200px] px-4 py-6 text-center lg:py-20 xl:px-0">
      <h2 class="text-h4 font-bold capitalize leading-none text-black">How to get started</h2>
      <div class="mx-auto mt-4 grid w-fit gap-4 text-left align-middle sm:grid-cols-2 lg:mt-8 lg:grid-cols-4 lg:gap-y-0">
        <a class="x_link mx-auto h-full w-full cursor-pointer space-y-4 rounded-xl bg-secondary-light p-4 hover:no-underline sm:max-w-[400px] lg:mx-0" href="https://accounts.wahooligan.com/">
          <svg class="w-6.5 h-[28px] text-gray-800 dark:text-white" width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
            <path d="M14 2C20.6 2 26 7.4 26 14C26 20.6 20.6 26 14 26C7.4 26 2 20.6 2 14C2 7.4 7.4 2 14 2ZM14 0C6.3 0 0 6.3 0 14C0 21.7 6.3 28 14 28C21.7 28 28 21.7 28 14C28 6.3 21.7 0 14 0Z" fill="#0081CC" />
            <path d="M22 13H15V6H13V13H6V15H13V22H15V15H22V13Z" fill="#0081CC" />
          </svg>
          <h3 class="leading[26px] inline-block text-xl font-bold text-black">1. <span class="border-b-2 border-black">Sign up</span></h3>
          <p class="text-base text-black">Create a Wahoo Account and activate your 14 day free trial to the Wahoo App</p>
        </a>
        <a class="mx-auto h-full w-full cursor-pointer space-y-4 rounded-xl bg-secondary-light p-4 hover:no-underline sm:max-w-[400px] lg:mx-0" href="/fitness-apps">
          <svg class="w-6.5 h-[28px] text-gray-800 dark:text-white" width="24" height="28" viewBox="0 0 24 28" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
            <path d="M22 22V26H2V22H0V26C0 26.5304 0.210714 27.0391 0.585786 27.4142C0.960859 27.7893 1.46957 28 2 28H22C22.5304 28 23.0391 27.7893 23.4142 27.4142C23.7893 27.0391 24 26.5304 24 26V22H22Z" fill="#0081CC" />
            <path d="M22 12L20.59 10.59L13 18.17V0H11V18.17L3.41 10.59L2 12L12 22L22 12Z" fill="#0081CC" />
          </svg>
          <h3 class="leading[26px] inline-block text-xl font-bold text-black">2. <span class="border-b-2 border-black">Download</span></h3>
          <p class="text-base text-black">Download the apps to your desktop, iOS or Android device</p>
        </a>
        <div class="mx-auto h-full w-full space-y-4 rounded-xl bg-secondary-light p-4 sm:max-w-[400px] lg:mx-0">
          <svg class="w-6.5 h-[28px] text-gray-800 dark:text-white" width="17" height="29" viewBox="0 0 17 29" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
            <path d="M9 29.0002C8.85532 28.9991 8.71239 28.9685 8.58 28.9102C8.40642 28.8298 8.25952 28.7014 8.15672 28.5401C8.05392 28.3788 7.99953 28.1914 8 28.0002V17.4102L1.41 24.0002L0 22.5902L7.59 15.0002L0 7.41017L1.41 6.00017L8 12.5902V2.00017C7.99953 1.8089 8.05392 1.62151 8.15672 1.46022C8.25952 1.29893 8.40642 1.1705 8.58 1.09017C8.75399 1.01007 8.94732 0.981628 9.137 1.00822C9.32669 1.03481 9.50474 1.11532 9.65 1.24017L16.65 7.24017C16.7598 7.33405 16.8479 7.45061 16.9083 7.5818C16.9687 7.713 17 7.85573 17 8.00017C17.0062 8.13844 16.9836 8.2765 16.9337 8.4056C16.8838 8.5347 16.8076 8.65203 16.71 8.75017L10.41 15.0002L16.71 21.2902C16.8027 21.3836 16.876 21.4944 16.9258 21.6163C16.9755 21.7381 17.0008 21.8686 17 22.0002C16.9944 22.1378 16.9604 22.2728 16.9002 22.3967C16.84 22.5206 16.7548 22.6307 16.65 22.7202L9.65 28.7202C9.47471 28.8896 9.24356 28.9892 9 29.0002ZM10 17.4102V25.8302L14.53 21.9402L10 17.4102ZM10 4.17017V12.5902L14.53 8.06017L10 4.17017Z" fill="#0081CC" />
          </svg>
          <h3 class="leading[26px] text-xl font-bold text-black">3. Connect</h3>
          <p class="text-base text-black">Connect your trainer, smart bike or power meter to the app.</p>
        </div>
        <div class="mx-auto h-full w-full space-y-4 rounded-xl bg-secondary-light p-4 sm:max-w-[400px] lg:mx-0">
          <svg class="w-6.5 h-[28px] text-gray-800 dark:text-white" width="29" height="21" viewBox="0 0 29 21" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
            <path d="M1.67771 19.6103V20.1283C1.67771 20.2566 1.53959 20.3605 1.36903 20.3605H0.52248C0.352051 20.3605 0.2138 20.2566 0.2138 20.1283V19.6252C0.242544 19.6309 0.272305 19.6339 0.302575 19.6339H1.53463C1.58474 19.6339 1.63269 19.6254 1.67771 19.6103ZM20.6115 1.56123C21.3551 1.56123 21.8015 1.82336 22.2478 2.64382C22.6935 3.46608 22.0243 4.25032 22.0243 4.25032L19.8306 6.41594L20.5565 7.20321C20.94 7.13279 21.3352 7.09601 21.7389 7.09601C25.3472 7.09601 28.2723 10.0341 28.2723 13.6585C28.2723 17.2829 25.3472 20.221 21.7389 20.221C18.1307 20.221 15.2056 17.2829 15.2056 13.6585C15.2056 12.4413 15.5355 11.3015 16.1104 10.3244L13.4211 13.1809L13.4618 16.0315C13.47 16.5378 13.0786 16.9525 12.5892 16.9594C12.3911 16.9621 12.0663 16.7731 12.0663 16.7731C12.0663 16.7731 11.7043 16.221 11.7043 16.2621C11.7043 16.2946 11.7042 16.3023 11.704 16.2878L11.703 16.1805C11.697 15.4233 11.6738 11.1261 11.6704 10.0205L11.67 9.77947L11.6959 1.69488L16.9453 8.12741C17.1635 8.34559 17.2497 8.65031 17.2027 8.93683C17.6479 8.5039 18.1559 8.13401 18.7109 7.84191C18.3195 7.44189 17.9995 7.11473 17.8608 6.97552C17.3592 6.47107 17.9354 5.78021 17.9354 5.78021L18.7909 4.84724H15.594L12.3969 1.56123H20.6115ZM9.88237 19.3907L10.2965 20.108H8.45979L8.87391 19.3907H9.88237ZM1.49762 17.5544C1.71866 17.5544 1.89787 17.7336 1.89787 17.9546V19.0753C1.89787 19.2964 1.71866 19.4756 1.49762 19.4756H0.400254C0.179205 19.4756 0 19.2964 0 19.0753V17.9546C0 17.7336 0.179205 17.5544 0.400254 17.5544H1.49762ZM3.15724 15.9536C3.20913 15.9536 3.25886 15.9729 3.29714 16.008L5.63342 18.1492L9.9009 18.1493C10.1134 18.1493 10.2858 18.3018 10.2858 18.4898V18.8645C10.2858 19.0524 10.1134 19.2049 9.9009 19.2049H2.11864V18.1493H4.81816L2.9236 16.413C2.8829 16.3757 2.85912 16.3248 2.85683 16.2697C2.85454 16.2147 2.87387 16.162 2.91126 16.1214L3.00462 16.0202C3.0443 15.9772 3.09848 15.9536 3.15724 15.9536ZM22.2036 8.99395L22.5188 9.33869C22.5188 9.33869 23.0617 9.95767 22.3962 10.4855C22.1856 10.6511 21.9922 10.7083 21.827 10.7083C21.4723 10.7083 21.244 10.4482 21.244 10.4482C21.244 10.4482 20.7311 9.91925 20.1004 9.27046C18.3305 9.9357 17.0723 11.6495 17.0723 13.6585C17.0723 16.2473 19.1616 18.346 21.7389 18.346C24.3163 18.346 26.4056 16.2473 26.4056 13.6585C26.4056 11.2272 24.5628 9.22822 22.2036 8.99395ZM2.19576 13.7557C2.21472 14.2141 2.326 14.6489 2.51119 15.0424L1.017 16.9612C0.785781 16.6244 0.6502 16.2166 0.6502 15.7772C0.6502 14.8105 1.30534 13.9971 2.19576 13.7557ZM13.3319 7.05708L13.3833 10.5964L15.0749 8.80196L13.3319 7.05708ZM24.7318 0.333496C25.618 0.333496 26.3368 1.07543 26.3368 1.98668C26.3368 2.90142 25.618 3.64077 24.7318 3.64077C24.3365 3.64077 23.9495 3.4979 23.6963 3.24905L21.0167 0.333496H24.7318ZM7.04275 13.628C7.04275 12.882 6.43594 12.2752 5.68987 12.2752C4.94405 12.2752 4.33712 12.882 4.33712 13.628C4.33712 14.3739 4.94405 14.9809 5.68987 14.9809C6.43594 14.9809 7.04275 14.3739 7.04275 13.628ZM8.91836 13.5479C8.91836 15.3308 7.47289 16.7762 5.68987 16.7762C4.74996 16.7762 3.90418 16.3742 3.31416 15.7332C3.26914 15.7191 3.22233 15.71 3.17413 15.71C3.04249 15.71 2.91594 15.7655 2.82704 15.8623L2.73585 15.9615C2.65063 16.0541 2.60663 16.1744 2.61184 16.3002C2.61718 16.4261 2.67111 16.5422 2.76383 16.6274L3.30081 17.121L2.11861 18.1478V17.7918C2.11861 17.5437 1.91753 17.3425 1.66927 17.3425H0.881602C0.94723 17.2691 1.04148 17.2221 1.14742 17.2221L2.83149 15.0481C2.59569 14.5998 2.46151 14.0895 2.46151 13.5479C2.46151 11.7648 3.90698 10.3194 5.68987 10.3194C7.47289 10.3194 8.91836 11.7648 8.91836 13.5479ZM6.43022 13.628C6.43022 13.2198 6.09814 12.8878 5.68987 12.8878C5.28173 12.8878 4.94965 13.2198 4.94965 13.628C4.94965 14.0361 5.28173 14.3683 5.68987 14.3683C6.09814 14.3683 6.43022 14.0361 6.43022 13.628ZM6.77337 13.628C6.77337 14.2254 6.28739 14.7115 5.68987 14.7115C5.0926 14.7115 4.6065 14.2254 4.6065 13.628C4.6065 13.0306 5.0926 12.5445 5.68987 12.5445C6.28739 12.5445 6.77337 13.0306 6.77337 13.628ZM6.16084 13.628C6.16084 13.8877 5.94958 14.099 5.68987 14.099C5.43028 14.099 5.21903 13.8877 5.21903 13.628C5.21903 13.3683 5.43028 13.157 5.68987 13.157C5.94958 13.157 6.16084 13.3683 6.16084 13.628Z" fill="#0081CC" />
          </svg>
          <h3 class="leading[26px] text-xl font-bold text-black">4. Ride</h3>
          <p class="text-base text-black">Enjoy unlimited access to Wahoo library of workouts and training plans.</p>
        </div>
      </div>
    </div>
  </section>

  <section id="tests" class="bg-white pb-10 lg:pb-20" role="region" aria-label="Member testimonials">
  <div class="splide w-full" id="testimonial-slider">
    <div class="splide__track overflow-visible">
      <ul class="splide__list items-stretch cursor-grab select-none py-6 text-left lg:py-20">
        
        <li class="splide__slide flex flex-col h-auto p-2">
          <div class="flex-1 flex flex-col rounded-xl p-6 shadow-[0_14px_21px_2px_rgba(0,0,0,0.04)] bg-white">
            <div class="flex items-center text-base font-semibold leading-[21px] text-black">
              <div class="flex flex-col">
                New Wahoo Member
                <div class="flex flex-row flex-nowrap gap-0.5 text-info-light" role="img" aria-label="5 out of 5 stars">
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                </div>
              </div>
            </div>
            <p class="mt-4 text-base leading-[22px] text-black">"I’m loving the workouts and they seem to be tailored to my fitness level. I’m certainly seeing an improvement in my fitness without too much stress. I seem to be recovering quite well which for me is very important. So far so bloody good."</p>
          </div>
        </li>

        <li class="splide__slide flex flex-col h-auto p-2">
          <div class="flex-1 flex flex-col rounded-xl p-6 shadow-[0_14px_21px_2px_rgba(0,0,0,0.04)] bg-white">
            <div class="flex items-center text-base font-semibold leading-[21px] text-black">
              <div class="flex flex-col">
                Wahoo App Member
                <div class="flex flex-row flex-nowrap gap-0.5 text-info-light" role="img" aria-label="5 out of 5 stars">
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                </div>
              </div>
            </div>
            <p class="mt-4 text-base leading-[22px] text-black">"I’m completely new to cycling and finding the time to ride outdoors has been difficult as of late due to work and whatnot… I’ve got to say that this has been awesome! The whole video/audio experience has been so great, I haven’t needed to play my music while riding except for a couple of sessions designed to have neither, and of course, the funny Read more about review stating I'm digging this!"</p>
          </div>
        </li>

        <li class="splide__slide flex flex-col h-auto p-2">
          <div class="flex-1 flex flex-col rounded-xl p-6 shadow-[0_14px_21px_2px_rgba(0,0,0,0.04)] bg-white">
            <div class="flex items-center text-base font-semibold leading-[21px] text-black">
              <div class="flex flex-col">
                Wahoo App Member
                <div class="flex flex-row flex-nowrap gap-0.5 text-info-light" role="img" aria-label="5 out of 5 stars">
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                </div>
              </div>
            </div>
            <p class="mt-4 text-base leading-[22px] text-black">"Really impressed with the entire package. The entire range of SUFFERFEST cycling videos is available, along with lots of additional training videos. All completely interactive with suitable Turbo Trainer. Having suffered with a slipped disc for years, also really benefitted from the Yoga videos. The strength videos can be done anywhere as they require little / no equipment. As an all in one fitness package, can't fault it and very good value!"</p>
          </div>
        </li>

        <li class="splide__slide flex flex-col h-auto p-2">
          <div class="flex-1 flex flex-col rounded-xl p-6 shadow-[0_14px_21px_2px_rgba(0,0,0,0.04)] bg-white">
            <div class="flex items-center text-base font-semibold leading-[21px] text-black">
              <div class="flex flex-col">
                Wahoo App Member
                <div class="flex flex-row flex-nowrap gap-0.5 text-info-light" role="img" aria-label="5 out of 5 stars">
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                </div>
              </div>
            </div>
            <p class="mt-4 text-base leading-[22px] text-black">"A great way to build up fitness if you cannot ride physically during the week. Keeps you up to speed for those weekend rides."</p>
          </div>
        </li>

        <li class="splide__slide flex flex-col h-auto p-2">
          <div class="flex-1 flex flex-col rounded-xl p-6 shadow-[0_14px_21px_2px_rgba(0,0,0,0.04)] bg-white">
            <div class="flex items-center text-base font-semibold leading-[21px] text-black">
              <div class="flex flex-col">
                Wahoo App Member
                <div class="flex flex-row flex-nowrap gap-0.5 text-info-light" role="img" aria-label="5 out of 5 stars">
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                </div>
              </div>
            </div>
            <p class="mt-4 text-base leading-[22px] text-black">"I have been doing regular strength training but wanted to do more cardio. I found I wasn’t getting out out on my bike so took the plunge, bought the Wahoo Kickr and subscribed to the Wahoo App. What an amazing product. I am hooked already. I have more science and know how at my disposal than I will ever need and I really enjoy the workouts. I am very happy to recommend for all levels of ability."</p>
          </div>
        </li>

        <li class="splide__slide flex flex-col h-auto p-2">
          <div class="flex-1 flex flex-col rounded-xl p-6 shadow-[0_14px_21px_2px_rgba(0,0,0,0.04)] bg-white">
            <div class="flex items-center text-base font-semibold leading-[21px] text-black">
              <div class="flex flex-col">
                Wahoo App Member
                <div class="flex flex-row flex-nowrap gap-0.5 text-info-light" role="img" aria-label="5 out of 5 stars">
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                  <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z" /></svg>
                </div>
              </div>
            </div>
            <p class="mt-4 text-base leading-[22px] text-black">"Hands down the best tool for the money. Training indoors while watching a graph is very difficult for me. Wahoo makes the suffering somehow more enjoyable. I also have gotten great results. I switched from a full time coach to just using Wahoo App and over 6 months my ftp went up 25watts."</p>
          </div>
        </li>

      </ul>
    </div>
  </div>
</section>



  <section id="faq-sec" class="bg-secondary-light" x-intersect.margin.-50%="activeSec = 3">
    <div class="relative isolate mx-auto p-4 md:px-0 md:py-20">
      <h2 class="text-center text-h4 font-bold capitalize leading-none text-black">Frequently Asked Questions</h2>
      <div class="mx-auto mt-4 flex h-full w-full max-w-[450px] flex-col divide-y overflow-hidden rounded-lg border border-black/10 bg-white text-black md:mt-8 md:max-w-[600px]">
        <div x-data="{ open: true }">
          <h2>
            <div x-on:click="open = !open" @keydown.enter="open = !open" @keydown.space.prevent="open = !open" :aria-expanded="open.toString()" aria-controls="faq-panel-1" role="button" tabindex="0" class="group relative flex w-full cursor-pointer items-center border-0 px-2 py-3.5 text-left text-xl font-bold text-black transition sm:px-4 md:p-6">
              What is the Wahoo App?
              <span class="ml-auto h-5 w-5 shrink-0 transition-transform duration-200 ease-in-out motion-reduce:transition-none" :class="{‘rotate-[-180deg]’: open, ‘rotate-0’: !open}" aria-hidden="true">
                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6" aria-hidden="true">
                  <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" />
                </svg>
              </span>
            </div>
          </h2>
          <div id="faq-panel-1" x-show="open" x-collapse>
            <div class="px-4 pb-6 text-lg font-normal md:p-6 md:pt-0">Wahoo App is Wahoo’s all-in-one membership program for Wahoo SYSTM, offering personalized, immersive workouts designed to make you a more complete athlete. Powered by the proven 4DP® methodology, every workout is tailored to your unique Power Profile, going beyond traditional FTP to target key areas for improvement. With a diverse range of cross-training options, engaging video content, and virtual challenges, Wahoo App keeps you motivated and on track to achieve all-around fitness.</div>
          </div>
        </div>
        <div x-data="{ open: false }">
          <h2>
            <div x-on:click="open = !open" @keydown.enter="open = !open" @keydown.space.prevent="open = !open" :aria-expanded="open.toString()" aria-controls="faq-panel-2" role="button" tabindex="0" class="group relative flex w-full cursor-pointer items-center border-0 px-2 py-3.5 text-left text-xl font-bold text-black transition sm:px-4 md:p-6">
              What are the Wahoo App subscription options?
              <span class="ml-auto h-5 w-5 shrink-0 transition-transform duration-200 ease-in-out motion-reduce:transition-none" :class="{‘rotate-[-180deg]’: open, ‘rotate-0’: !open}" aria-hidden="true">
                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6" aria-hidden="true">
                  <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" />
                </svg>
              </span>
            </div>
          </h2>
          <div id="faq-panel-2" x-show="open" x-collapse>
            <div class="px-4 pb-6 text-lg font-normal md:p-6 md:pt-0">Wahoo App offers two subscription options: a monthly membership for $17.99 and an annual membership for $179.99, offering a savings of 17% compared to the monthly plan. The membership provides access to personalized training plans, daily workout suggestions, and a variety of engaging video content to help you reach your fitness goals.</div>
          </div>
        </div>
        <div x-data="{ open: false }">
          <h2>
            <div x-on:click="open = !open" @keydown.enter="open = !open" @keydown.space.prevent="open = !open" :aria-expanded="open.toString()" aria-controls="faq-panel-3" role="button" tabindex="0" class="group relative flex w-full cursor-pointer items-center border-0 px-2 py-3.5 text-left text-xl font-bold text-black transition sm:px-4 md:p-6">
              What are the training plans available on the Wahoo App?
              <span class="ml-auto h-5 w-5 shrink-0 transition-transform duration-200 ease-in-out motion-reduce:transition-none" :class="{‘rotate-[-180deg]’: open, ‘rotate-0’: !open}" aria-hidden="true">
                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6" aria-hidden="true">
                  <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" />
                </svg>
              </span>
            </div>
          </h2>
          <div id="faq-panel-3" x-show="open" x-collapse>
            <div class="px-4 pb-6 text-lg font-normal md:p-6 md:pt-0">Wahoo App offers a range of personalized training plans based on your 4DP® profile, ensuring that your workouts target the most important areas for improvement. In addition to cycling workouts, there are also yoga, strength, mobility training, and mental training options to enhance overall performance. With daily recommended workouts and virtual challenges, Wahoo App keeps you engaged and consistent.</div>
          </div>
        </div>
        <div x-data="{ open: false }">
          <h2>
            <div x-on:click="open = !open" @keydown.enter="open = !open" @keydown.space.prevent="open = !open" :aria-expanded="open.toString()" aria-controls="faq-panel-4" role="button" tabindex="0" class="group relative flex w-full cursor-pointer items-center border-0 px-2 py-3.5 text-left text-xl font-bold text-black transition sm:px-4 md:p-6">
              How does Wahoo App compare to Zwift and TrainerRoad?
              <span class="ml-auto h-5 w-5 shrink-0 transition-transform duration-200 ease-in-out motion-reduce:transition-none" :class="{‘rotate-[-180deg]’: open, ‘rotate-0’: !open}" aria-hidden="true">
                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6" aria-hidden="true">
                  <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" />
                </svg>
              </span>
            </div>
          </h2>
          <div id="faq-panel-4" x-show="open" x-collapse>
            <div class="px-4 pb-6 text-lg font-normal md:p-6 md:pt-0">Wahoo App offers a more complete and holistic training solution compared to Zwift and TrainerRoad. While Zwift focuses on virtual rides and TrainerRoad provides structured cycling plans, Wahoo App combines cycling workouts with additional cross-training (such as yoga and strength training) and personalized plans based on your 4DP® profile. Wahoo App also includes immersive video content, virtual challenges, and achievements to keep you motivated.</div>
          </div>
        </div>
      </div>
    </div>
  </section>
</div></div></div></div></main></div>





</div><footer class="bg-black" role="contentinfo">
    <style>#html-body [data-pb-style=WRO7FI1]{border-style:none;border-width:1px;border-radius:0;margin:0;padding:0}</style><div data-content-type="html" data-appearance="default" data-element="main" data-pb-style="WRO7FI1" data-decoded="true"><div class="mx-auto max-w-screen-xl px-6 py-10 text-xs text-white/80 lg:px-8 lg:pt-16">

  <div class="mb-8 grid gap-10 lg:grid-cols-6">

    <!-- Nav columns: accordion on mobile, 4-col grid on desktop -->
    <div class="footer-nav-columns order-2 divide-y divide-white/10 lg:order-1 lg:col-span-4">

      <div x-data="{ open: false }" class="py-3 lg:py-0">
        <div @click="open = !open"
             @keydown.enter="open = !open"
             @keydown.space.prevent="open = !open"
             :aria-expanded="open.toString()"
             role="button"
             tabindex="0"
             class="footer-section-toggle flex w-full cursor-pointer items-center justify-between">
          <h2 class="text-sm font-semibold uppercase tracking-wide text-white">Support</h2>
          <svg class="h-3 w-3 shrink-0 text-white/50 transition-transform duration-200 lg:hidden"
               :class="{ 'rotate-180': open }"
               xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true">
            <path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/>
          </svg>
        </div>
        <nav x-show="open"
             x-transition:enter="transition ease-out duration-150"
             x-transition:enter-start="opacity-0 -translate-y-1"
             x-transition:enter-end="opacity-100 translate-y-0"
             x-transition:leave="transition ease-in duration-100"
             x-transition:leave-start="opacity-100"
             x-transition:leave-end="opacity-0"
             class="footer-accordion-body"
             aria-label="Support">
          <ul class="mt-2.5 space-y-2.5">
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="https://support.wahoofitness.com/hc/en-us">Customer Service</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/contact">Contact Us</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="https://support.wahoofitness.com/hc/en-us/p/hardware">GPSR Product Guides &amp; Safety Information</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="https://support.wahoofitness.com/hc/en-us">Product Instructions</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/payment-methods">Payment Methods</a></li>
            <li x-show="['www','es-','it-','de','au'].some(subdomain => location.hostname.includes(subdomain))">
              <a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/financing">Financing</a>
            </li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/shipping-and-delivery">Shipping &amp; Delivery</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/returns-and-warranty">Returns &amp; Warranty</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/store-locator">Store Locator</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/customer/orderlookup">Order Lookup</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/customer/account/login">Account Login</a></li>
            <li x-cloak x-show="['www'].some(subdomain => location.hostname.includes(subdomain))">
              <a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/extend-warranty">Extend Product Protection</a>
            </li>
            <li x-cloak x-show="['www'].some(subdomain => location.hostname.includes(subdomain))">
              <a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/hsa-fsa-products">Pay with HSA/FSA</a>
            </li>
          </ul>
        </nav>
      </div>

      <div x-data="{ open: false }" class="py-3 lg:py-0">
        <div @click="open = !open"
             @keydown.enter="open = !open"
             @keydown.space.prevent="open = !open"
             :aria-expanded="open.toString()"
             role="button"
             tabindex="0"
             class="footer-section-toggle flex w-full cursor-pointer items-center justify-between">
          <h2 class="text-sm font-semibold uppercase tracking-wide text-white">Company</h2>
          <svg class="h-3 w-3 shrink-0 text-white/50 transition-transform duration-200 lg:hidden"
               :class="{ 'rotate-180': open }"
               xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true">
            <path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/>
          </svg>
        </div>
        <nav x-show="open"
             x-transition:enter="transition ease-out duration-150"
             x-transition:enter-start="opacity-0 -translate-y-1"
             x-transition:enter-end="opacity-100 translate-y-0"
             x-transition:leave="transition ease-in duration-100"
             x-transition:leave-start="opacity-100"
             x-transition:leave-end="opacity-0"
             class="footer-accordion-body"
             aria-label="Company">
          <ul class="mt-2.5 space-y-2.5">
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/about-us">About Us</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/press-kit">Media Kit</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/fitness-apps">Wahoo Apps</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/careers">Careers</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/accessibility">Accessibility Statement</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="https://blog.wahoofitness.com/">Blog</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="https://developers.wahooligan.com/">Developers</a></li>
            <li x-show="['www'].some(subdomain => location.hostname.includes(subdomain))">
              <a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/dealer">U.S. Dealers</a>
            </li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/international-dealers">International Dealers</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/wahoopro">Industry Purchase Program</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/wahooligans">Be a Wahooligan</a></li>
          </ul>
        </nav>
      </div>

      <div x-data="{ open: false }" class="py-3 lg:py-0">
        <div @click="open = !open"
             @keydown.enter="open = !open"
             @keydown.space.prevent="open = !open"
             :aria-expanded="open.toString()"
             role="button"
             tabindex="0"
             class="footer-section-toggle flex w-full cursor-pointer items-center justify-between">
          <h2 class="text-sm font-semibold uppercase tracking-wide text-white">Shop</h2>
          <svg class="h-3 w-3 shrink-0 text-white/50 transition-transform duration-200 lg:hidden"
               :class="{ 'rotate-180': open }"
               xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true">
            <path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/>
          </svg>
        </div>
        <nav x-show="open"
             x-transition:enter="transition ease-out duration-150"
             x-transition:enter-start="opacity-0 -translate-y-1"
             x-transition:enter-end="opacity-100 translate-y-0"
             x-transition:leave="transition ease-in duration-100"
             x-transition:leave-start="opacity-100"
             x-transition:leave-end="opacity-0"
             class="footer-accordion-body"
             aria-label="Shop">
          <ul class="mt-2.5 space-y-2.5">
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices/bike-trainers">Smart Bike Trainers</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices/indoor-cycling/smart-bikes">Smart Bikes</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices/indoor-cycling">Indoor Bike Trainers</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices/bike-computers">GPS Bike Computers</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices/heart-rate-monitors">Heart Rate Monitors</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices/pedals/speedplay">SPEEDPLAY Pedals</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices/pedals/cleats">SPEEDPLAY Cleats</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices/bike-sensors">Cycling Sensors</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/devices">All Products</a></li>
          </ul>
        </nav>
      </div>

      <div x-data="{ open: false }" class="py-3 lg:py-0">
        <div @click="open = !open"
             @keydown.enter="open = !open"
             @keydown.space.prevent="open = !open"
             :aria-expanded="open.toString()"
             role="button"
             tabindex="0"
             class="footer-section-toggle flex w-full cursor-pointer items-center justify-between">
          <h2 class="text-sm font-semibold uppercase tracking-wide text-white">Legal</h2>
          <svg class="h-3 w-3 shrink-0 text-white/50 transition-transform duration-200 lg:hidden"
               :class="{ 'rotate-180': open }"
               xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true">
            <path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/>
          </svg>
        </div>
        <nav x-show="open"
             x-transition:enter="transition ease-out duration-150"
             x-transition:enter-start="opacity-0 -translate-y-1"
             x-transition:enter-end="opacity-100 translate-y-0"
             x-transition:leave="transition ease-in duration-100"
             x-transition:leave-start="opacity-100"
             x-transition:leave-end="opacity-0"
             class="footer-accordion-body"
             aria-label="Legal">
          <ul class="mt-2.5 space-y-2.5">
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/privacy-policy">Privacy Policy and Imprint</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="https://privacyportal.onetrust.com/webform/b2b76ae8-d622-4165-97c7-8896261e24b7/b43eda4f-3724-4303-879c-e65dbcfced1d">Do Not Sell/Share My Data</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/terms-of-service">Terms of Service</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/eu-data-act">EU Data Act</a></li>
            <li x-show="['www'].some(subdomain => location.hostname.includes(subdomain))">
              <a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/privacy-notice-for-californians">Privacy Notice for Californians</a>
            </li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/cookie-policy">Cookie Policy</a></li>
            <li x-show="['eu','uk'].some(subdomain => location.hostname.includes(subdomain))">
              <a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/regulatory-notices">E.U. Regulatory Notices</a>
            </li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/patents">Patents</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/regulatory-notices">Regulatory Notices</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/wahoo-api-agreement">Wahoo API Agreement</a></li>
            <li><a class="text-xs text-white/80 transition-colors duration-300 hover:font-medium hover:text-white hover:no-underline" href="/report-a-security-issue">Report a Security Issue</a></li>
          </ul>
        </nav>
      </div>

    </div>

    <!-- Connect With Us: newsletter + social icons + logo -->
    <div class="order-1 lg:order-2 lg:col-span-2">
      <h2 class="text-sm font-semibold uppercase tracking-wide text-white">Connect With Us</h2>
      <div class="mt-2.5 flex flex-wrap gap-x-4 gap-y-5 lg:items-start">

        <form action="https://www.wahoofitness.com/newsletter/subscriber/new/" class="validate newsletter form subscribe flex w-full max-w-sm flex-row gap-4" novalidate method="post" data-mage-init='{"validation": {"errorClass": "mage-error"}}' id="newsletter-validate-detail">
        <div class="flex flex-col flex-shrink flex-grow">
            <input name="email" type="email" id="newsletter" class="email !form-input h-full flex-grow !border-white/80 !bg-black focus:!border-info-main text-white text-sm w-full" required placeholder="Email Address" data-mage-init='{"mage/trim-input":{}}' data-validate="{required:true, 'validate-email':true}">
        </div>
        <button type="submit" title="Sign up" class="subscribe !btn-blue lg:self-start border-0 rounded-full focus:!bg-info-main !px-5 text-sm self-start">
            <span>Sign Up</span>
        </button>
</form>


        <div class="flex flex-1 flex-col items-center gap-3 lg:items-start lg:gap-4">

          <div class="order-2 flex h-5 flex-shrink-0 items-center gap-x-3 lg:order-1 lg:h-6">
            <a href="https://www.threads.net/@wahoofitnessofficial" aria-label="Threads (opens in new tab)" class="h-full text-white/80 transition-colors duration-300 hover:text-white" target="_blank" rel="noopener">
              <svg aria-hidden="true" class="h-full" fill="currentColor" viewBox="0 0 192 192" xmlns="http://www.w3.org/2000/svg"><path d="M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z"/></svg>
            </a>
            <a href="https://www.instagram.com/wahoofitnessofficial/" aria-label="Instagram (opens in new tab)" class="h-full text-white/80 transition-colors duration-300 hover:text-white" target="_blank" rel="noopener">
              <svg aria-hidden="true" viewBox="0 0 30 30" fill="currentColor" class="h-full" xmlns="http://www.w3.org/2000/svg">
                <circle cx="15" cy="15" r="4"/>
                <path d="M19.999,3h-10C6.14,3,3,6.141,3,10.001v10C3,23.86,6.141,27,10.001,27h10C23.86,27,27,23.859,27,19.999v-10C27,6.14,23.859,3,19.999,3z M15,21c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S18.309,21,15,21z M22,9c-0.552,0-1-0.448-1-1c0-0.552,0.448-1,1-1s1,0.448,1,1C23,8.552,22.552,9,22,9z"/>
              </svg>
            </a>
            <a href="https://twitter.com/wahoofitness" aria-label="X, formerly Twitter (opens in new tab)" class="h-5/6 text-white/80 transition-colors duration-300 hover:text-white" target="_blank" rel="noopener">
              <svg aria-hidden="true" class="h-full" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="333.89 142.25 1000.78 936.69">
                <g transform="translate(52.390088,-25.058597)"><path d="M283.94,167.31l386.39,516.64L281.5,1104h87.51l340.42-367.76L984.48,1104h297.8L874.15,558.3l361.92-390.99h-87.51l-313.51,338.7l-253.31-338.7H283.94z M412.63,231.77h136.81l604.13,807.76h-136.81L412.63,231.77z"/></g>
              </svg>
            </a>
            <a href="https://www.strava.com/clubs/wahoo-fitness-23199" aria-label="Strava (opens in new tab)" class="h-full text-white/80 transition-colors duration-300 hover:text-white" target="_blank" rel="noopener">
              <svg aria-hidden="true" fill="currentColor" viewBox="0 0 24 24" class="h-full" xmlns="http://www.w3.org/2000/svg">
                <path d="M15.387 17.944l-2.089-4.116h-3.065L15.387 24l5.15-10.172h-3.066m-7.008-5.599l2.836 5.598h4.172L10.463 0l-7 13.828h4.169"/>
              </svg>
            </a>
            <a href="https://www.youtube.com/user/wahoofitness" aria-label="YouTube (opens in new tab)" class="h-5/6 text-white/80 transition-colors duration-300 hover:text-white" target="_blank" rel="noopener">
              <svg aria-hidden="true" viewBox="0 0 159 110" class="h-full" xmlns="http://www.w3.org/2000/svg">
                <path d="m154 17.5c-1.82-6.73-7.07-12-13.8-13.8-9.04-3.49-96.6-5.2-122 0.1-6.73 1.82-12 7.07-13.8 13.8-4.08 17.9-4.39 56.6 0.1 74.9 1.82 6.73 7.07 12 13.8 13.8 17.9 4.12 103 4.7 122 0 6.73-1.82 12-7.07 13.8-13.8 4.35-19.5 4.66-55.8-0.1-75z" fill="currentColor"/>
                <path d="m105 55-40.8-23.4v46.8z" fill="#000"/>
              </svg>
            </a>
            <a href="https://www.facebook.com/wahoofitness" aria-label="Facebook (opens in new tab)" class="h-5/6 text-white/80 transition-colors duration-300 hover:text-white" target="_blank" rel="noopener">
              <svg aria-hidden="true" viewBox="0 0 24 24" fill="currentColor" class="h-full" xmlns="http://www.w3.org/2000/svg">
                <path d="M22,0H2C0.895,0,0,0.895,0,2v20c0,1.105,0.895,2,2,2h11v-9h-3v-4h3V8.413c0-3.1,1.893-4.788,4.659-4.788c1.325,0,2.463,0.099,2.795,0.143v3.24l-1.918,0.001c-1.504,0-1.795,0.715-1.795,1.763V11h4.44l-1,4h-3.44v9H22c1.105,0,2-0.895,2-2V2C24,0.895,23.105,0,22,0z"/>
              </svg>
            </a>
          </div>

          <a href="/" aria-label="Wahoo Fitness - go to homepage" class="order-1 h-5 flex-shrink-0 text-white transition-colors duration-300 hover:text-white lg:order-2 lg:h-7">
            <svg aria-hidden="true" class="h-full" viewBox="0 0 273 67" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
              <path d="M26.3106 46.6057L36.5976 24.8261H45.2064L55.4935 46.6057L65.7805 24.8261H81.804L60.4393 65.0099H51.0317L40.9061 43.0032L30.7804 65.0099H21.3728L0 24.8261H16.1042L26.3106 46.6057ZM124.364 65.0099H109.849V60.5459H109.688C107.138 64.54 102.112 66.3412 97.3274 66.3412C85.2088 66.3412 76.6726 56.3951 76.6726 44.8827C76.6726 33.3703 85.0475 23.5025 97.166 23.5025C101.87 23.5025 106.816 25.2255 109.841 28.7497V24.8339H124.356V65.0177L124.364 65.0099ZM91.6715 44.961C91.6715 50.0516 95.1005 53.9674 100.998 53.9674C106.896 53.9674 110.325 50.0516 110.325 44.961C110.325 39.8705 106.904 35.8686 100.998 35.8686C95.0924 35.8686 91.6715 40.0272 91.6715 44.961ZM141.203 0V29.9244H141.364C144.712 25.5388 148.779 23.5025 154.443 23.5025C164.81 23.5025 169.829 30.2377 169.829 40.4266V65.0177H155.322V44.4207C155.322 39.7217 154.604 34.8662 148.787 34.8662C142.969 34.8662 141.211 39.7217 141.211 44.4207V65.0177H126.696V0H141.211H141.203ZM220.868 44.961C220.868 58.588 209.379 66.3412 196.228 66.3412C183.077 66.3412 171.588 58.6663 171.588 44.961C171.588 31.2558 183.069 23.5025 196.228 23.5025C209.387 23.5025 220.868 31.2558 220.868 44.961ZM186.901 44.961C186.901 50.0516 190.33 53.9674 196.236 53.9674C202.142 53.9674 205.563 50.0516 205.563 44.961C205.563 39.8705 202.134 35.8686 196.236 35.8686C190.338 35.8686 186.901 40.0272 186.901 44.961ZM272.07 44.961C272.07 58.588 260.581 66.3412 247.429 66.3412C234.27 66.3412 222.789 58.6663 222.789 44.961C222.789 31.2558 234.27 23.5025 247.429 23.5025C260.589 23.5025 272.07 31.2558 272.07 44.961ZM238.102 44.961C238.102 50.0516 241.531 53.9674 247.429 53.9674C253.327 53.9674 256.764 50.0516 256.764 44.961C256.764 39.8705 253.335 35.8686 247.429 35.8686C241.523 35.8686 238.102 40.0272 238.102 44.961Z"/>
            </svg>
          </a>

        </div>
      </div>
    </div>

  </div>

  <!-- Bottom bar -->
  <div class="mx-auto mt-10 flex w-fit flex-row flex-wrap items-center justify-center gap-y-2 text-center" x-data="{ year: new Date().getFullYear() }">
    <p class="mr-2 pr-2 text-white/80 xs:border-r">© Copyright <span x-text="year">2026</span> Wahoo Fitness. All rights reserved.</p>
    <a class="w-link !text-white/80 transition-colors duration-300 hover:!font-medium hover:!text-white" href="/countries">Choose Location</a>
  </div>

</div>

<style>
  /* Desktop: disable accordion, force 4-col grid, hide chevrons (lg = 900px in this theme) */
  @media (min-width: 900px) {
    .footer-accordion-body { display: block !important; }
    .footer-nav-columns { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 1.25rem !important; }
    .footer-nav-columns > div { border-top: 0 !important; padding-top: 0 !important; padding-bottom: 0 !important; }
    .footer-section-toggle { pointer-events: none !important; cursor: default !important; }
    .footer-section-toggle svg { display: none !important; }
  }

  /* WCAG 2.1 AA SC 2.4.7: visible focus for footer links.
     White outline on black = 21:1 contrast (exceeds SC 1.4.11 3:1 threshold).
     Uses :focus-visible so mouse clicks don't show the ring. */
  footer a:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 3px;
    border-radius: 2px;
  }

  .header-container .header-main .header-nav #top_nav ul .mega_menu_sub .mega_list>li>a:before {display: none;}
  .product-essential .price-box * {display: block !important;}
  .product-essential .price-box {display:flex !important;gap:4px !important;}
  .mb-\[5px\] {
    margin-bottom: 5px !important;
  }
  .h-\[52px\] {
    height: 52px !important;
  }
  @media (max-width: 835px) {
    #top_nav_wrapper #top_nav .mm_nav a:first-child:before {
      transform: translate(-50%, -50%) rotate(-45deg);
    }
  }
  #scroll-control {
    position: sticky !important;
    top: 0 !important;
  }
  #btn-minicart-close {
    border: 0;
    background: url(/static/version1775252418/frontend/Mercutio/wahoo/en_US/images/close-minicart@2x.png) no-repeat center;
    background-size: 100%;
  }
</style>

</div></footer>
    <script>
    var BASE_URL = 'https\u003A\u002F\u002Fwww.wahoofitness.com\u002F';
    var require = {
        'baseUrl': 'https\u003A\u002F\u002Fwww.wahoofitness.com\u002Fstatic\u002Fversion1781120696\u002Ffrontend\u002FMercutio\u002Fwahoo\u002Fen_US'
    };</script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/requirejs/require.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/requirejs-min-resolver.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/js/bundle/bundle0.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/js/bundle/bundle1.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/js/bundle/bundle2.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/js/bundle/bundle3.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/js/bundle/bundle4.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/mage/requirejs/static.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/mage/requirejs/mixins.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/requirejs-config.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/js/wahoo.min.js"></script><script  type="text/javascript"  src="https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/js/new-theme.min.js"></script><script  type="text/javascript"  defer="defer" src="https://cdn.jsdelivr.net/npm/@alpinejs/intersect@3.14.8/dist/cdn.min.js"></script><script  type="text/javascript"  defer="defer" src="https://cdn.jsdelivr.net/npm/@alpinejs/collapse@3.14.8/dist/cdn.min.js"></script><script  type="text/javascript"  defer="defer" src="https://cdn.jsdelivr.net/npm/@alpinejs/persist@3.14.8/dist/cdn.min.js"></script><script  type="text/javascript"  defer="defer" src="https://cdn.jsdelivr.net/npm/alpinejs@3.14.8/dist/cdn.min.js"></script><script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js"  type="text/javascript" charset="UTF-8" data-domain-script="d7e5063d-d5f7-4df4-9f7e-b55aa72d18c9" ></script><script type="text/javascript">
 function OptanonWrapper() { }
 </script><script type="text/javascript">
   !function(){"use strict";window.RudderSnippetVersion="3.0.3";var sdkBaseUrl="https://cdn.rudderlabs.com/v3"
   ;var sdkName="rsa.min.js";var asyncScript=true;window.rudderAnalyticsBuildType="legacy",window.rudderanalytics=[]
   ;var e=["setDefaultInstanceKey","load","ready","page","track","identify","alias","group","reset","setAnonymousId","startSession","endSession","consent"]
   ;for(var n=0;n<e.length;n++){var t=e[n];window.rudderanalytics[t]=function(e){return function(){
   window.rudderanalytics.push([e].concat(Array.prototype.slice.call(arguments)))}}(t)}try{
   new Function('return import("")'),window.rudderAnalyticsBuildType="modern"}catch(a){}
   if(window.rudderAnalyticsMount=function(){
   "undefined"==typeof globalThis&&(Object.defineProperty(Object.prototype,"__globalThis_magic__",{get:function get(){
   return this},configurable:true}),__globalThis_magic__.globalThis=__globalThis_magic__,
   delete Object.prototype.__globalThis_magic__);var e=document.createElement("script")
   ;e.src="".concat(sdkBaseUrl,"/").concat(window.rudderAnalyticsBuildType,"/").concat(sdkName),e.async=asyncScript,
   document.head?document.head.appendChild(e):document.body.appendChild(e)
   },"undefined"==typeof Promise||"undefined"==typeof globalThis){var d=document.createElement("script")
   ;d.src="https://polyfill-fastly.io/v3/polyfill.min.js?version=3.111.0&features=Symbol%2CPromise&callback=rudderAnalyticsMount",
   d.async=asyncScript,document.head?document.head.appendChild(d):document.body.appendChild(d)}else{
   window.rudderAnalyticsMount()}window.rudderanalytics.load("2eC6P62Aa98yd3zS0Fu1zGsovkP","https://wahoofitnetth.dataplane.rudderstack.com",{})}();
 </script><script async type="application/javascript" src="https://sa.getroster.com/sa.js?token=zgn1mdz0rfoxouhokytxsvevvmizut09rkrdktrQPdg7kjfNdCs0EcIWwf6rES"></script><script async type='text/javascript' src='https://forms.wahoofitness.com/w37htfhcq2/vendor/a01784da-fab8-4f8f-bf07-74cabde73a66/lightbox_inline.js'></script><script type="text/javascript">
    window.dataLayer = window.dataLayer || [];

</script><script type="text/x-magento-init">
    {
        "*": {
            "magepalGtmDatalayer": {
                "isCookieRestrictionModeEnabled": 0,
                "currentWebsite": 1,
                "cookieName": "user_allowed_save_cookie",
                "dataLayer": "dataLayer",
                "accountId": "GTM-56WNQM4",
                "data": [{"ecommerce":{"currencyCode":"USD"},"pageType":"cms_page_view","list":"other"},{"event":"allPage"},{"event":"cmsPageViewPage"}],
                "isGdprEnabled": 0,
                "gdprOption": 0,
                "addJsInHeader": 0,
                "containerCode": ""
            }
        }
    }
</script><script src="//www.refersion.com/tracker/v3/pub_53fda535ac00bfbb0607.js"></script><script type="text/javascript">
	_refersion();</script><script type="text/x-magento-init">
        {
            "*": {
                "Magento_PageCache/js/form-key-provider": {}
            }
        }
    </script><script type="application/ld+json">
        [{"@context":"https:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.wahoofitness.com\/"},{"@type":"ListItem","position":2,"name":"Wahoo App Membership","item":"https:\/\/www.wahoofitness.com\/wahoo-app-subscription"}]}]    </script><script type="text/javascript"> (function(a,b,c,d,e,f,g){e['ire_o']=c;e[c]=e[c]||function(){(e[c].a=e[c].a||[]).push(arguments)};f=d.createElement(b);g=d.getElementsByTagName(b)[0];f.async=1;f.src=a;g.parentNode.insertBefore(f,g);})('https://utt.impactcdn.com/A7047190-da9c-4d24-8ae0-4bb5348a11131.js','script','ire',document,window); ire('identify');
</script><script type="text/javascript"> !function(){String.prototype.includes||(String.prototype.includes=function(e,t){"use strict";if(e instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===t&&(t=0),-1!==this.indexOf(e,t)}),window.location.pathname.includes("checkout")&&ire("generateClickId",function(e){!function(e,t,i){const n=new Date;n.setTime(n.getTime()+24*i*60*60*1e3);const o="expires="+n.toUTCString();document.cookie=e+"="+t+";SameSite=None;"+o+";path=/;secure"}("irclickid",e,30)})}(); </script><script>
        (function() {
            function getParameterByName(name, url) {
                if (!url) url = window.location.href;
                name = name.replace(/[\[\]]/g, '\\$&');
                var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
                    results = regex.exec(url);
                if (!results) return null;
                if (!results[2]) return '';
                return decodeURIComponent(results[2].replace(/\+/g, ' '));
            }

            function setCookie(cookieName, cookieValue, daysUntilExpiration) {
                const date = new Date();
                date.setTime(date.getTime() + (daysUntilExpiration * 24 * 60 * 60 * 1000));
                const expires = "expires=" + date.toUTCString();
                document.cookie = cookieName + "=" + cookieValue + ";" + "SameSite=None;" + expires + ";path=/;secure";
            }

            // Capture click ID from URL: irclickid (traditional) or im_ref (GWC / irgwc=1 links)
            var irclickid = getParameterByName('irclickid') || getParameterByName('im_ref');
            if (irclickid) setCookie('irclickid', irclickid, 30);

                    })();
    </script><script type="text/x-magento-init">
    {
        "*": {
            "Magento_PageBuilder/js/widget-initializer": {
                "config": {"[data-content-type=\"slider\"][data-appearance=\"default\"]":{"Magento_PageBuilder\/js\/content-type\/slider\/appearance\/default\/widget":false},"[data-content-type=\"map\"]":{"Magento_PageBuilder\/js\/content-type\/map\/appearance\/default\/widget":false},"[data-content-type=\"row\"]":{"Magento_PageBuilder\/js\/content-type\/row\/appearance\/default\/widget":false},"[data-content-type=\"tabs\"]":{"Magento_PageBuilder\/js\/content-type\/tabs\/appearance\/default\/widget":false},"[data-content-type=\"slide\"]":{"Magento_PageBuilder\/js\/content-type\/slide\/appearance\/default\/widget":{"buttonSelector":".pagebuilder-slide-button","showOverlay":"hover","dataRole":"slide"}},"[data-content-type=\"banner\"]":{"Magento_PageBuilder\/js\/content-type\/banner\/appearance\/default\/widget":{"buttonSelector":".pagebuilder-banner-button","showOverlay":"hover","dataRole":"banner"}},"[data-content-type=\"buttons\"]":{"Magento_PageBuilder\/js\/content-type\/buttons\/appearance\/inline\/widget":false},"[data-content-type=\"products\"][data-appearance=\"carousel\"]":{"Magento_PageBuilder\/js\/content-type\/products\/appearance\/carousel\/widget":false}},
                "breakpoints": {"desktop":{"label":"Desktop","stage":true,"default":true,"class":"desktop-switcher","icon":"Magento_PageBuilder::css\/images\/switcher\/switcher-desktop.svg","conditions":{"min-width":"1024px"},"options":{"products":{"default":{"slidesToShow":"5"}}}},"tablet":{"conditions":{"max-width":"1024px","min-width":"768px"},"options":{"products":{"default":{"slidesToShow":"4"},"continuous":{"slidesToShow":"3"}}}},"mobile":{"label":"Mobile","stage":true,"class":"mobile-switcher","icon":"Magento_PageBuilder::css\/images\/switcher\/switcher-mobile.svg","media":"only screen and (max-width: 768px)","conditions":{"max-width":"768px","min-width":"640px"},"options":{"products":{"default":{"slidesToShow":"3"}}}},"mobile-small":{"conditions":{"max-width":"640px"},"options":{"products":{"default":{"slidesToShow":"2"},"continuous":{"slidesToShow":"1"}}}}}            }
        }
    }
</script><script type="text/x-magento-init">
    {
        "*": {
            "mage/cookies": {
                "expires": null,
                "path": "\u002F",
                "domain": ".www.wahoofitness.com",
                "secure": false,
                "lifetime": "604800"
            }
        }
    }
</script><script>    require.config({
        paths: {
            'extendSdk': 'https\u003A\u002F\u002Fsdk.helloextend.com\u002Fextend\u002Dsdk\u002Dclient\u002Fv1\u002Fextend\u002Dsdk\u002Dclient.min'
        },
        config: {
            mixins: {
                'Magento_Checkout/js/view/minicart': {
                    'Extend_Warranty/js/view/minicart-mixin': true
                },
                'Magento_Checkout/js/sidebar': {
                    'Extend_Warranty/js/sidebar-mixin': true
                }
            }
        }
    });

    require(['extendSdk'], function(Extend) {
        Extend.config({"storeId":"057a0151-b2c4-40bb-b51f-e9eaaf2cd8d4","environment":"live","locale":"en_US"});
        window.Extend = Extend;    window.Extend.integration = {"general":{"enableExtend":true,"balancedCart":true,"enableLeads":true,"enableLogging":false},"auth":{"mode":"live","id":"057a0151-b2c4-40bb-b51f-e9eaaf2cd8d4","sandboxId":null,"extendStoreName":"Wahoo Fitness"},"contracts":{"createWarrantyContract":true,"contractEvent":1,"contractCreatingMode":"scheduled","cronContractSettings":{"frequency":"*\/5 * * * *","batchSize":25,"storagePeriod":30},"enableRefunds":true,"createRefundAutomatically":true},"offers":{"displayCartOffers":true,"enablePDPOffers":true,"enableProductsListOffers":true,"enableInterstitialCartOffers":true,"enablePostPurchaseModal":true,"enableOrderInformationOffers":true,"displaySettings":{"pdpPlacement":2}},"syncProducts":{"batchSize":100,"lastSyncDate":"2026-03-24 19:07:50","enableSpecialPrice":true,"enableCronSync":false},"syncHistoricalOrders":{"batchSize":10,"lastSendDate":"2025-09-01","enableCronSync":false},"trackingEnabled":true,"versions":{"magentoVersion":"2.4.3-p1","moduleVersion":"1.3.0"}};    });</script><script type="text/x-magento-init">
        {
            "*": {
                "Extend_Warranty/js/tracking-service": {}
            }
        }
        </script><script>    require.config({
        map: {
            '*': {
                wysiwygAdapter: 'mage/adminhtml/wysiwyg/tiny_mce/tinymce4Adapter'
            }
        }
    });</script><script>
    window.cookiesConfig = window.cookiesConfig || {};
    window.cookiesConfig.secure = true;
</script><script>
    require.config({
        paths: {
            googleMaps: 'https\u003A\u002F\u002Fmaps.googleapis.com\u002Fmaps\u002Fapi\u002Fjs\u003Fv\u003D3\u0026key\u003D'
        },
        config: {
            'Magento_PageBuilder/js/utils/map': {
                style: ''
            },
            'Magento_PageBuilder/js/content-type/map/preview': {
                apiKey: '',
                apiKeyErrorMessage: 'You\u0020must\u0020provide\u0020a\u0020valid\u0020\u003Ca\u0020href\u003D\u0027https\u003A\u002F\u002Fwww.wahoofitness.com\u002Fadminhtml\u002Fsystem_config\u002Fedit\u002Fsection\u002Fcms\u002F\u0023cms_pagebuilder\u0027\u0020target\u003D\u0027_blank\u0027\u003EGoogle\u0020Maps\u0020API\u0020key\u003C\u002Fa\u003E\u0020to\u0020use\u0020a\u0020map.'
            },
            'Magento_PageBuilder/js/form/element/map': {
                apiKey: '',
                apiKeyErrorMessage: 'You\u0020must\u0020provide\u0020a\u0020valid\u0020\u003Ca\u0020href\u003D\u0027https\u003A\u002F\u002Fwww.wahoofitness.com\u002Fadminhtml\u002Fsystem_config\u002Fedit\u002Fsection\u002Fcms\u002F\u0023cms_pagebuilder\u0027\u0020target\u003D\u0027_blank\u0027\u003EGoogle\u0020Maps\u0020API\u0020key\u003C\u002Fa\u003E\u0020to\u0020use\u0020a\u0020map.'
            },
        }
    });
</script><script>
    require.config({
        shim: {
            'Magento_PageBuilder/js/utils/map': {
                deps: ['googleMaps']
            }
        }
    });
</script><script type="text/javascript">
    /*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
    /* This file is meant as a standalone workflow for
     - testing support for link[rel=preload]
     - enabling async CSS loading in browsers that do not support rel=preload
     - applying rel preload css once loaded, whether supported or not.
     */
    (function( w ){
        "use strict";
        // rel=preload support test
        if( !w.loadCSS ){
            w.loadCSS = function(){};
        }
        // define on the loadCSS obj
        var rp = loadCSS.relpreload = {};
        // rel=preload feature support test
        // runs once and returns a function for compat purposes
        rp.support = (function(){
            var ret;
            try {
                ret = w.document.createElement( "link" ).relList.supports( "preload" );
            } catch (e) {
                ret = false;
            }
            return function(){

                return ret;
            };
        })();

        // if preload isn't supported, get an asynchronous load by using a non-matching media attribute
        // then change that media back to its intended value on load
        rp.bindMediaToggle = function( link ){
            // remember existing media attr for ultimate state, or default to 'all'
            var finalMedia = link.media || "all";

            function enableStylesheet(){
                // unbind listeners
                if( link.addEventListener ){
                    link.removeEventListener( "load", enableStylesheet );
                } else if( link.attachEvent ){
                    link.detachEvent( "onload", enableStylesheet );
                }
                link.setAttribute( "onload", null );
                link.media = finalMedia;
            }

            // bind load handlers to enable media
            if( link.addEventListener ){
                link.addEventListener( "load", enableStylesheet );
            } else if( link.attachEvent ){
                link.attachEvent( "onload", enableStylesheet );
            }

            // Set rel and non-applicable media type to start an async request
            // note: timeout allows this to happen async to let rendering continue in IE
            setTimeout(function(){
                link.rel = "stylesheet";
                link.media = "only x";
            });
            // also enable media after 3 seconds,
            // which will catch very old browsers (android 2.x, old firefox) that don't support onload on link
            setTimeout( enableStylesheet, 3000 );
        };

        // loop through link elements in DOM
        rp.poly = function(){
            // double check this to prevent external calls from running
            if( rp.support() ){
                return;
            }
            var links = w.document.getElementsByTagName( "link" );
            for( var i = 0; i < links.length; i++ ){
                var link = links[ i ];
                // qualify links to those with rel=preload and as=style attrs
                if( link.rel === "preload" && link.getAttribute( "as" ) === "style" && !link.getAttribute( "data-loadcss" ) ){
                    // prevent rerunning on link
                    link.setAttribute( "data-loadcss", true );
                    // bind listeners to toggle media back
                    rp.bindMediaToggle( link );
                }
            }
        };

        // if unsupported, run the polyfill
        if( !rp.support() ){
            // run once at least
            rp.poly();

            // rerun poly on an interval until onload
            var run = w.setInterval( rp.poly, 500 );
            if( w.addEventListener ){
                w.addEventListener( "load", function(){
                    rp.poly();
                    w.clearInterval( run );
                } );
            } else if( w.attachEvent ){
                w.attachEvent( "onload", function(){
                    rp.poly();
                    w.clearInterval( run );
                } );
            }
        }

        // commonjs
        if( typeof exports !== "undefined" ){
            exports.loadCSS = loadCSS;
        }
        else {
            w.loadCSS = loadCSS;
        }


    }( typeof global !== "undefined" ? global : this ) );
</script><script type="text/x-magento-init">
    {
        "*": {
            "magepalDataLayer": {
                "dataLayer": "dataLayer"
            }
        }
    }
</script><script>
  var splide_mm;
  require(['jquery','splide'], function ($, Splide) {
    splide_mm = new Splide('.splide_mm', {
      type: 'loop',
      pagination: false,
      arrows: false,
      autoHeight: true,
      autoplay: true,
      pauseOnHover: true,
      pauseOnFocus: true,
      focus: 0,
      rewind: true,
      speed: 2000,
      drag: 'free',
      snap: true,
      perPage: 1,
      interval: 6000,
      reducedMotion: {
        autoplay: false,
        speed: 0,
      },
    });

    splide_mm.mount();
  });
</script><script>
        window.checkout = {"shoppingCartUrl":"https:\/\/www.wahoofitness.com\/checkout\/cart\/","checkoutUrl":"https:\/\/www.wahoofitness.com\/checkout\/","updateItemQtyUrl":"https:\/\/www.wahoofitness.com\/checkout\/sidebar\/updateItemQty\/","removeItemUrl":"https:\/\/www.wahoofitness.com\/checkout\/sidebar\/removeItem\/","imageTemplate":"Magento_Catalog\/product\/image_with_borders","baseUrl":"https:\/\/www.wahoofitness.com\/","minicartMaxItemsVisible":3,"websiteId":"1","maxItemsToDisplay":10,"storeId":"1","storeGroupId":"1","asLowAsActiveMiniCart":false,"apr":"0.10","months":"12","logo":"blue","script":"https:\/\/cdn1.affirm.com\/js\/v2\/affirm.js","public_api_key":"O7EUMRF6EOYRMGP7","min_order_total":"150","max_order_total":"100000","currency_rate":null,"display_cart_subtotal_incl_tax":0,"display_cart_subtotal_excl_tax":1,"edu":false,"defaultEduDesc":"You will be redirected to Affirm to securely complete your purchase. Just fill out a few pieces of basic information and get a real-time decision. Checking your eligibility won't affect your credit score.","affirmTitle":"Continue with Affirm","locale":"en_US","country_code":"USA","currency":"USD","element_id":"als_mcc","promo_id":"","color_id":"blue","customerLoginUrl":"https:\/\/www.wahoofitness.com\/customer\/account\/login\/referer\/aHR0cHM6Ly93d3cud2Fob29maXRuZXNzLmNvbS93YWhvby1hcHAtc3Vic2NyaXB0aW9u\/","isRedirectRequired":false,"autocomplete":"off","captcha":{"user_login":{"isCaseSensitive":false,"imageHeight":50,"imageSrc":"","refreshUrl":"https:\/\/www.wahoofitness.com\/captcha\/refresh\/","isRequired":false,"timestamp":1781125684}}};
    </script><script type="text/x-magento-init">
    {
        "[data-block='minicart']": {
            "Magento_Ui/js/core/app": {"components":{"minicart_content":{"children":{"subtotal.container":{"children":{"subtotal":{"children":{"subtotal.totals":{"config":{"display_cart_subtotal_incl_tax":0,"display_cart_subtotal_excl_tax":1,"template":"Magento_Checkout\/minicart\/subtotal\/totals"},"component":"Magento_Checkout\/js\/view\/checkout\/minicart\/subtotal\/totals"}},"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/subtotal"}}},"component":"uiComponent","config":{"displayArea":"subtotalContainer"}},"item.renderer":{"component":"uiComponent","config":{"displayArea":"defaultRenderer","template":"Magento_Checkout\/minicart\/item\/default"},"children":{"item.image":{"component":"Magento_Catalog\/js\/view\/image","config":{"template":"Magento_Catalog\/product\/image","displayArea":"itemImage"}},"checkout.cart.item.price.sidebar":{"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/item\/price","displayArea":"priceSidebar"}}}},"total.container":{"component":"uiComponent","config":{"displayArea":"totalContainer"},"children":{"total":{"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/total"},"children":{"subtotal.totals":{"component":"Magento_Checkout\/js\/view\/checkout\/minicart\/total\/totals","config":{"template":"Magento_Checkout\/minicart\/total\/totals"}}}}}},"extra_info":{"component":"uiComponent","config":{"displayArea":"extraInfo"}},"promotion":{"component":"uiComponent","config":{"displayArea":"promotion"}}},"component":"Magento_Checkout\/js\/view\/minicart","config":{"template":"Magento_Checkout\/minicart\/content","itemRenderer":{"default":"defaultRenderer","simple":"defaultRenderer","virtual":"defaultRenderer"}}}},"types":[]}        },
        "*": {
            "Magento_Ui/js/block-loader": "https://www.wahoofitness.com/static/version1781120696/frontend/Mercutio/wahoo/en_US/images/loader-1.gif"
        }
    }
    </script><script type="text/x-magento-init">
{
    ".cart-qty": {
        "Magento_Ui/js/core/app": {"components":{"cart_qty":{"component":"Magento_Theme\/js\/cart-qty"}}}    }
}
</script><script type="text/x-magento-init">
    {
        "*": {
            "Magento_Ui/js/core/app": {
                "components": {
                        "messages": {
                            "component": "Magento_Theme/js/view/messages"
                        }
                    }
                }
            }
    }
</script><script>
require(['jquery'], function($){
    var currentUrl = window.location.href;
    $.ajax({
        method: "POST",
        url: "/iterable/track/views/",
        data: {
            url: currentUrl
        }
    }).done(function(data) {
        console.log(data);
    }).fail(function(data) {
        console.log(data);
    });
});
</script><script type="text/x-magento-init">
    {
        "*": {
            "Magento_Customer/js/section-config": {
                "sections": {"stores\/store\/switch":["*"],"stores\/store\/switchrequest":["*"],"directory\/currency\/switch":["*"],"*":["messages"],"customer\/account\/logout":["*","recently_viewed_product","recently_compared_product","persistent","signifyd-fingerprint"],"customer\/account\/loginpost":["*","customer"],"customer\/account\/createpost":["*"],"customer\/account\/editpost":["*"],"customer\/ajax\/login":["checkout-data","cart","captcha","signifyd-fingerprint"],"catalog\/product_compare\/add":["compare-products"],"catalog\/product_compare\/remove":["compare-products"],"catalog\/product_compare\/clear":["compare-products"],"sales\/guest\/reorder":["cart","ammessages"],"sales\/order\/reorder":["cart","ammessages"],"checkout\/cart\/add":["cart","directory-data","ammessages","extend-tracking","magepal-gtm-jsdatalayer","magepal-eegtm-jsdatalayer","signifyd-fingerprint"],"checkout\/cart\/delete":["cart","ammessages","extend-tracking","magepal-gtm-jsdatalayer","magepal-eegtm-jsdatalayer"],"checkout\/cart\/updatepost":["cart","ammessages","extend-tracking","magepal-gtm-jsdatalayer","magepal-eegtm-jsdatalayer"],"checkout\/cart\/updateitemoptions":["cart","ammessages","extend-tracking","magepal-gtm-jsdatalayer","magepal-eegtm-jsdatalayer"],"checkout\/cart\/couponpost":["cart","ammessages","magepal-gtm-jsdatalayer","customer"],"checkout\/cart\/estimatepost":["cart","ammessages","magepal-gtm-jsdatalayer"],"checkout\/cart\/estimateupdatepost":["cart","ammessages","magepal-gtm-jsdatalayer"],"checkout\/onepage\/saveorder":["cart","checkout-data","last-ordered-items","ammessages","magepal-gtm-jsdatalayer"],"checkout\/sidebar\/removeitem":["cart","ammessages","extend-tracking","magepal-gtm-jsdatalayer","magepal-eegtm-jsdatalayer"],"checkout\/sidebar\/updateitemqty":["cart","ammessages","extend-tracking","magepal-gtm-jsdatalayer","magepal-eegtm-jsdatalayer"],"rest\/*\/v1\/carts\/*\/payment-information":["cart","last-ordered-items","captcha","instant-purchase","ammessages","magepal-gtm-jsdatalayer"],"rest\/*\/v1\/guest-carts\/*\/payment-information":["cart","captcha","ammessages","magepal-gtm-jsdatalayer"],"rest\/*\/v1\/guest-carts\/*\/selected-payment-method":["cart","checkout-data","ammessages","magepal-gtm-jsdatalayer"],"rest\/*\/v1\/carts\/*\/selected-payment-method":["cart","checkout-data","instant-purchase","ammessages","magepal-gtm-jsdatalayer"],"wishlist\/index\/add":["wishlist"],"wishlist\/index\/remove":["wishlist"],"wishlist\/index\/updateitemoptions":["wishlist"],"wishlist\/index\/update":["wishlist"],"wishlist\/index\/cart":["wishlist","cart"],"wishlist\/index\/fromcart":["wishlist","cart"],"wishlist\/index\/allcart":["wishlist","cart"],"wishlist\/shared\/allcart":["wishlist","cart"],"wishlist\/shared\/cart":["cart"],"giftregistry\/index\/cart":["cart"],"giftregistry\/view\/addtocart":["cart"],"customer_order\/cart\/updatefaileditemoptions":["cart"],"checkout\/cart\/updatefaileditemoptions":["cart"],"customer_order\/cart\/advancedadd":["cart"],"checkout\/cart\/advancedadd":["cart"],"checkout\/cart\/removeallfailed":["cart"],"checkout\/cart\/removefailed":["cart"],"customer_order\/cart\/addfaileditems":["cart"],"checkout\/cart\/addfaileditems":["cart"],"customer_order\/sku\/uploadfile":["cart"],"customer\/address\/*":["instant-purchase"],"customer\/account\/*":["instant-purchase"],"vault\/cards\/deleteaction":["instant-purchase"],"multishipping\/checkout\/overviewpost":["cart","ammessages"],"wishlist\/index\/copyitem":["wishlist"],"wishlist\/index\/copyitems":["wishlist"],"wishlist\/index\/deletewishlist":["wishlist","multiplewishlist"],"wishlist\/index\/createwishlist":["multiplewishlist"],"wishlist\/index\/editwishlist":["multiplewishlist"],"wishlist\/index\/moveitem":["wishlist"],"wishlist\/index\/moveitems":["wishlist"],"wishlist\/search\/addtocart":["cart","wishlist"],"paypal\/express\/placeorder":["cart","checkout-data","ammessages"],"paypal\/payflowexpress\/placeorder":["cart","checkout-data","ammessages"],"paypal\/express\/onauthorization":["cart","checkout-data","ammessages"],"persistent\/index\/unsetcookie":["persistent"],"review\/product\/post":["review"],"amasty_promo\/cart\/add":["cart","ammessages"],"braintree\/paypal\/placeorder":["ammessages"],"authorizenet\/directpost_payment\/place":["ammessages"],"warranty\/cart\/add":["extend-tracking"],"checkout\/sidebar\/updateitemoptions":["extend-tracking"],"amasty_cart\/cart\/add":["magepal-eegtm-jsdatalayer","signifyd-fingerprint"],"amasty_jettheme\/ajax\/addtocart":["magepal-eegtm-jsdatalayer"],"ajaxsuite\/cart\/add":["magepal-eegtm-jsdatalayer"],"newsletter\/subscriber\/new":["customer"],"sso\/saml2\/login":["*"],"sso\/saml2\/acs":["*"],"checkout\/cart\/addgroup":["signifyd-fingerprint"],"checkout\/cart\/index":["signifyd-fingerprint"],"customer\/account\/login-post":["signifyd-fingerprint"],"customer\/account\/create-post":["signifyd-fingerprint"],"checkout\/onepage\/success":["signifyd-fingerprint"],"checkout\/onepage\/save-order":["signifyd-fingerprint"]},
                "clientSideSections": ["checkout-data","cart-data"],
                "baseUrls": ["https:\/\/www.wahoofitness.com\/"],
                "sectionNames": ["messages","customer","compare-products","last-ordered-items","cart","directory-data","captcha","wishlist","instant-purchase","loggedAsCustomer","multiplewishlist","persistent","review","ammessages","extend-tracking","signifyd-fingerprint","recently_viewed_product","recently_compared_product","product_data_storage","paypal-billing-agreement","magepal-gtm-jsdatalayer","magepal-eegtm-jsdatalayer"]            }
        }
    }
</script><script type="text/x-magento-init">
    {
        "*": {
            "Magento_Customer/js/customer-data": {
                "sectionLoadUrl": "https\u003A\u002F\u002Fwww.wahoofitness.com\u002Fcustomer\u002Fsection\u002Fload\u002F",
                "expirableSectionLifetime": 60,
                "expirableSectionNames": ["cart","persistent"],
                "cookieLifeTime": "604800",
                "updateSessionUrl": "https\u003A\u002F\u002Fwww.wahoofitness.com\u002Fcustomer\u002Faccount\u002FupdateSession\u002F"
            }
        }
    }
</script><script type="text/x-magento-init">
    {
        "*": {
            "Magento_Customer/js/invalidation-processor": {
                "invalidationRules": {
                    "website-rule": {
                        "Magento_Customer/js/invalidation-rules/website-rule": {
                            "scopeConfig": {
                                "websiteId": "1"
                            }
                        }
                    }
                }
            }
        }
    }
</script><script type="text/x-magento-init">
    {
        "body": {
            "pageCache": {"url":"https:\/\/www.wahoofitness.com\/page_cache\/block\/render\/page_id\/446\/","handles":["default","cms_page_view","cms_page_view_id_wahoo-app-subscription"],"originalRequest":{"route":"cms","controller":"page","action":"view","uri":"\/wahoo-app-subscription"},"versionCookieName":"private_content_version"}        }
    }
</script><script>
    (function(){require(["jquery"],function($){$(document).ready(function() {$('body').addClass('yotpo-yotpo-is-enabled');});});})();
</script><script>
        (function e(){var e=document.createElement("script");e.type="text/javascript",e.async=true,e.src="//staticw2.yotpo.com/duEkEw80MrVVjc9AKulYxvFwxOT9DJNf6cIUthrO/widget.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();
    </script><script>
          function preloadWOImages(fileNames) {
            const imageSources = fileNames.map(fileName => `/media/wysiwyg/cms/wahoox/workouts/${fileName}`);
            imageSources.forEach((src) => {
              const image = new Image();
              image.src = src;
            });
          }
        </script><script>
    require(['jquery'], function ($) {
      $(document).ready(function () {
        // Preload feature images
        function preloadImages() {
          $('.featureList li').each(function () {
            var imageUrl = $(this).data('image');
            if (imageUrl) {
              var img = new Image();
              img.src = imageUrl;
            }
          });
        }
        preloadImages();

        function setSelected($list, $item) {
          // Remove selection from all
          $list.find('li').removeClass('selected');
          $list.find('.svg-selected').addClass('hidden');
          $list.find('.img-not-selected').removeClass('hidden');
          $list.find('p').removeClass('font-semibold').addClass('text-black/70');

          // Set selection
          $item.addClass('selected');
          $item.find('.svg-selected').removeClass('hidden');
          $item.find('.img-not-selected').addClass('hidden');
          $item.find('p').removeClass('text-black/70').addClass('font-semibold');
        }

        function swapImage($list, $item) {
          var clickedImageSrc = $item.data('image');
          // The image is now a sibling of the list's parent div (row), so find it accordingly
          var $featureImage = $list.closest('div.flex-col').siblings('img.featureImage');
          if (!$featureImage.length) {
            // fallback for new markup: image is a sibling of .flex-col in its parent .flex-row
            $featureImage = $list.closest('div.flex-row').find('img.featureImage');
          }
          $featureImage.fadeOut(function () {
            $featureImage.attr('src', clickedImageSrc).fadeIn();
          });
        }

        function startAutomation($list, startIndex) {
          var $items = $list.find('li');
          var currentIndex = startIndex;
          var intervalId = setInterval(function () {
            var $current = $items.eq(currentIndex);
            var nextIndex = (currentIndex + 1) % $items.length;
            var $next = $items.eq(nextIndex);

            setSelected($list, $next);
            swapImage($list, $next);

            currentIndex = nextIndex;
          }, 5000);
          $list.data('intervalId', intervalId);
        }

        // Click handler for bullet points
        $('.featureList li').on('click', function () {
          var $item = $(this);
          var $list = $item.closest('.featureList');

          if (!$item.hasClass('selected')) {
            // Remove selection from all
            $list.find('li').removeClass('selected');
            $list.find('.svg-selected').addClass('hidden');
            $list.find('.img-not-selected').removeClass('hidden');
            $list.find('.img-not-selected path').removeClass('stroke-info-light');
            $list.find('.img-not-selected path').removeClass('stroke-1');
            $list.find('p').removeClass('font-semibold').addClass('text-black/70');

            // Set selection
            $item.addClass('selected');
            $item.find('.img-not-selected path').addClass('stroke-info-light');
            $item.find('.img-not-selected path').addClass('stroke-1');
            $item.find('.svg-selected').addClass('hidden');
            $item.find('.img-not-selected').removeClass('hidden');
            $item.find('p').removeClass('text-black/70').addClass('font-semibold');

            swapImage($list, $item);

            // Stop automation
            clearInterval($list.data('intervalId'));
            $list.removeData('intervalId');
          }
          else if (!$item.find('.svg-selected').hasClass('hidden')) {
            $item.find('.img-not-selected path').addClass('stroke-info-light');
            $item.find('.img-not-selected path').addClass('stroke-1');
            $item.find('.svg-selected').addClass('hidden');
            $item.find('.img-not-selected').removeClass('hidden');
            $item.find('p').removeClass('text-black/70').addClass('font-semibold');
            clearInterval($list.data('intervalId'));
            $list.removeData('intervalId');
          } else {
            $item.find('.svg-selected').removeClass('hidden');
            $item.find('.img-not-selected').addClass('hidden');
            $item.find('.img-not-selected path').removeClass('stroke-info-light');
            $item.find('.img-not-selected path').removeClass('stroke-1');

            // If clicked again while selected, restart automation
            clearInterval($list.data('intervalId'));
            $list.removeData('intervalId');
            startAutomation($list, $item.index());
          }
        });

        // Initialize each featureList
        $('.featureList').each(function () {
          var $list = $(this);
          var $first = $list.find('li').first();

          setSelected($list, $first);
          swapImage($list, $first);
          startAutomation($list, 0);
        });
      });
    });
  </script><script>
  require(['splide'], function (Splide) {
    var splide = new Splide('#testimonial-slider', {
      type       : 'loop',
      focus      : 'center',
      padding    : '30px', 
      fixedWidth : '317px', 
      arrows     : false, 
      pagination : false
    });

    splide.mount();
  });
</script><script type="text/x-magento-init">
        {
            "*": {
                "Magento_Ui/js/core/app": {
                    "components": {
                        "storage-manager": {
                            "component": "Magento_Catalog/js/storage-manager",
                            "appendTo": "",
                            "storagesConfiguration" : {"recently_viewed_product":{"requestConfig":{"syncUrl":"https:\/\/www.wahoofitness.com\/catalog\/product\/frontend_action_synchronize\/"},"lifetime":"1000","allowToSendRequest":null},"recently_compared_product":{"requestConfig":{"syncUrl":"https:\/\/www.wahoofitness.com\/catalog\/product\/frontend_action_synchronize\/"},"lifetime":"1000","allowToSendRequest":null},"product_data_storage":{"updateRequestConfig":{"url":"https:\/\/www.wahoofitness.com\/rest\/us_en\/V1\/products-render-info"},"requestConfig":{"syncUrl":"https:\/\/www.wahoofitness.com\/catalog\/product\/frontend_action_synchronize\/"},"allowToSendRequest":null}}                        }
                    }
                }
            }
        }
</script><script type="text/x-magento-init">
    {
        "*": {
            "addToCartAjaxDataLayer": {
                "dataLayerName": "dataLayer",
                "currencyCode": "USD"
            }
        }
    }
</script><script type="text/x-magento-init">
    {
        "*": {
            "addToCartAjaxGa4DataLayer": {
                "dataLayerName": "dataLayer",
                "currency": "USD"
            }
        }
    }
</script><script>     define(
        'signifyd-fingerprint-module',
        [
            'uiComponent',
            'Magento_Customer/js/customer-data',
            'jquery'
        ], function (Component, customerData, $) {   
            'use strict';
             
            var SignifydFingerprint = function() {

                return {
                    initialize: function () {                        
                        var me = this;
            
                        if (jQuery('.checkout-onepage-success').length > 0) {
                            customerData.reload(['signifyd-fingerprint']);            
                        } else {
                            me.data = customerData.get('signifyd-fingerprint');
                            me.sent = false;

                            if (Object.entries(me.data()).length === 0 &&
                                window.location.href.indexOf('checkout') > -1
                            ) {
                                customerData.reload(['signifyd-fingerprint']);
                            }
            
                            me.sent = me.checkSessionId(me.data().dataOrderSessionId);
            
                            if (me.sent === false) {
                                me.observing = me.data.subscribe(function (newData) {
                                    me.sent = me.checkSessionId(newData.dataOrderSessionId);
                                });
                            }
                        }
                    },
            
                    checkSessionId: function(dataOrderSessionId) {
                        var me = this;
            
                        if (typeof dataOrderSessionId !== 'undefined' && dataOrderSessionId.length > 0) {                        
                            if (typeof $.cookie('signifyd-' + dataOrderSessionId) !== 'undefined' &&
                                $.cookie('signifyd-' + dataOrderSessionId) !== null &&
                                $.cookie('signifyd-' + dataOrderSessionId) !== 'null'
                            ) { 
                                console.log('Fingerprint already sent');  
                            } else {                      
                                console.log('Sending fingerprint...');
                                $.cookie('signifyd-' + dataOrderSessionId, true);
                
                                me.callScript(dataOrderSessionId);
                
                                if (typeof me.observing != "undefined") {
                                    me.observing.dispose();
                                }
                
                                return true;
                            }
                        } else {
                            console.log('Will not send fingerprint');
                            console.log(dataOrderSessionId);
            
                            return false;
                        }
                    },
            
                    callScript: function(dataOrderSessionId) {
                        var signifydScript = document.createElement('script');
                        signifydScript.setAttribute('async', true);
                        signifydScript.setAttribute('type', 'text/javascript');
                        signifydScript.setAttribute('id', 'sig-api');
                        signifydScript.setAttribute('data-order-session-id', dataOrderSessionId);
                        signifydScript.setAttribute('src', 'https://cdn-scripts.signifyd.com/api/script-tag.js');
            
                        $("head").append(signifydScript);
                    }
                }
            };
            
            jQuery(function() {
                SignifydFingerprint().initialize();
            });
        });         
        
        require(['signifyd-fingerprint-module']);</script><script type="application/ld+json">{"@context":"http:\/\/schema.org","@type":"WebSite","url":"https:\/\/www.wahoofitness.com\/","name":"Wahoo Fitness"}</script><script type="text/javascript">
require([
  'jquery',
  'jquery/jquery.cookie'
], function($) {
  $(window).on('load', function() {
    $('.fieldset-bundle-options .field:last-child .control ul > li ').click();
  });
  $('.product-essential h1:contains("Zwift")').parent().parent().find('.old-price').hide();
  $('.item a:contains("Zwift")').parent().parent().find('.old-price').hide();

  $(document).ready(function() {
    if ($("#awards-sec").length) {
      if ($('#awards-sec').siblings().length === 0) {
        $("#awards-sec")
          .unwrap()
          .unwrap()
          .prependTo(".product-view > div > .flex.flex-col-reverse")
          .find("h2").remove().end()
          .addClass("p-4 lg:p-0");
      } else {
        $("#awards-sec")
          .prependTo(".product-view > div > .flex.flex-col-reverse")
          .find("h2").remove().end()
          .addClass("p-4 lg:p-0");
      }
      let $grid = $("#awards-sec .grid");
      $grid.removeClass("grid-cols-3").addClass("grid-cols-4");
      if ($grid.children().length < 4) {
        $grid.removeClass("sm:grid-cols-6");
      }
    }
  });
});
</script><script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"52276df6f3","applicationID":"1000834377","transactionName":"NFZTZENTDBFZW0UMWg0ccFNFWw0MF1tcFhoTUlZVHkQLB08=","queueTime":0,"applicationTime":2061,"atts":"GBFQEgtJHx8=","errorBeacon":"bam.nr-data.net","agent":""}</script></body>
</html>
