1<!doctype html> 2 3<html lang="en" dir="ltr"> 4 <head> 5 6 <!-- Added by AVADA SEO Suite --> 7
7<script> 8 const avadaLightJsExclude = ['cdn.nfcube.com', 'assets/ecom.js', 'variant-title-king', 'linked_options_variants', 'smile-loader.js', 'smart-product-filter-search', 'rivo-loyalty-referrals', 'avada-cookie-consent', 'consentmo-gdpr', 'quinn', 'https://www.googletagmanager.com/']; 9 const avadaLightJsInclude = ['https://www.googletagmanager.com/', 'https://connect.facebook.net/', 'https://business-api.tiktok.com/', 'https://static.klaviyo.com/', 'https://www.googletagmanager.com/gtag/js?id=G-D7CZZ970PJ', 'https://www.googletagmanager.com/gtag/js?id=AW-1069414906&l=dataLayer&cx=c>m=45je52q0v887792846za200&tag_exp=101732279~101732281~102067808~102482433~102539968~102558064~102587591~102605417~102640600~102658453~102717422~102732003', 'https://www.googletagmanager.com/gtag/js?id=AW-1002657833&l=dataLayer&cx=c>m=45je52q0v887792846za200&tag_exp=101732279~101732281~102067808~102482433~102539968~102558064~102587591~102605417~102640600~102658453~102717422~102732003']; 10 window.AVADA_SPEED_BLACKLIST = avadaLightJsInclude.map(item => new RegExp(item, 'i')); 11 window.AVADA_SPEED_WHITELIST = avadaLightJsExclude.map(item => new RegExp(item, 'i')); 12</script>
12 13
14<script> 15 const isSpeedUpEnable = !1741336271524 || Date.now() < 1741336271524; 16 if (isSpeedUpEnable) { 17 const avadaSpeedUp=1; 18 if(isSpeedUpEnable) { 19 function _0x55aa(_0x575858,_0x2fd0be){const _0x30a92f=_0x1cb5();return _0x55aa=function(_0x4e8b41,_0xcd1690){_0x4e8b41=_0x4e8b41-(0xb5e+0xd*0x147+-0x1b1a);let _0x1c09f7=_0x30a92f[_0x4e8b41];return _0x1c09f7;},_0x55aa(_0x575858,_0x2fd0be);}(function(_0x4ad4dc,_0x42545f){const _0x5c7741=_0x55aa,_0x323f4d=_0x4ad4dc();while(!![]){try{const _0x588ea5=parseInt(_0x5c7741(0x10c))/(0xb6f+-0x1853+0xce5)*(-parseInt(_0x5c7741(0x157))/(-0x2363*0x1+0x1dd4+0x591*0x1))+-parseInt(_0x5c7741(0x171))/(0x269b+-0xeb+-0xf*0x283)*(parseInt(_0x5c7741(0x116))/(0x2e1+0x1*0x17b3+-0x110*0x19))+-parseInt(_0x5c7741(0x147))/(-0x1489+-0x312*0x6+0x26fa*0x1)+-parseInt(_0x5c7741(0xfa))/(-0x744+0x1*0xb5d+-0x413)*(-parseInt(_0x5c7741(0x102))/(-0x1e87+0x9e*-0x16+0x2c22))+parseInt(_0x5c7741(0x136))/(0x1e2d+0x1498+-0x1a3*0x1f)+parseInt(_0x5c7741(0x16e))/(0x460+0x1d96+0x3*-0xb4f)*(-parseInt(_0x5c7741(0xe3))/(-0x9ca+-0x1*-0x93f+0x1*0x95))+parseInt(_0x5c7741(0xf8))/(-0x1f73*0x1+0x6*-0x510+0x3dde);if(_0x588ea5===_0x42545f)break;else _0x323f4d['push'](_0x323f4d['shift']());}catch(_0x5d6d7e){_0x323f4d['push'](_0x323f4d['shift']());}}}(_0x1cb5,-0x193549+0x5dc3*-0x31+-0x2f963*-0x13),(function(){const _0x5cb2b4=_0x55aa,_0x23f9e9={'yXGBq':function(_0x237aef,_0x385938){return _0x237aef!==_0x385938;},'XduVF':function(_0x21018d,_0x56ff60){return _0x21018d===_0x56ff60;},'RChnz':_0x5cb2b4(0xf4)+_0x5cb2b4(0xe9)+_0x5cb2b4(0x14a),'TAsuR':function(_0xe21eca,_0x33e114){return _0xe21eca%_0x33e114;},'EvLYw':function(_0x1326ad,_0x261d04){return _0x1326ad!==_0x261d04;},'nnhAQ':_0x5cb2b4(0x107),'swpMF':_0x5cb2b4(0x16d),'plMMu':_0x5cb2b4(0xe8)+_0x5cb2b4(0x135),'PqBPA':function(_0x2ba85c,_0x35b541){return _0x2ba85c<_0x35b541;},'NKPCA':_0x5cb2b4(0xfc),'TINqh':function(_0x4116e3,_0x3ffd02,_0x2c8722){return _0x4116e3(_0x3ffd02,_0x2c8722);},'BAueN':_0x5cb2b4(0x120),'NgloT':_0x5cb2b4(0x14c),'ThSSU':function(_0xeb212a,_0x4341c1){return _0xeb212a+_0x4341c1;},'lDDHN':function(_0x4a1a48,_0x45ebfb){return _0x4a1a48 instanceof _0x45ebfb;},'toAYB':function(_0xcf0fa9,_0xf5fa6a){return _0xcf0fa9 instanceof _0xf5fa6a;},'VMiyW':function(_0x5300e4,_0x44e0f4){return _0x5300e4(_0x44e0f4);},'iyhbw':_0x5cb2b4(0x119),'zuWfR':function(_0x19c3e4,_0x4ee6e8){return _0x19c3e4<_0x4ee6e8;},'vEmrv':function(_0xd798cf,_0x5ea2dd){return _0xd798cf!==_0x5ea2dd;},'yxERj':function(_0x24b03b,_0x5aa292){return _0x24b03b||_0x5aa292;},'MZpwM':_0x5cb2b4(0x110)+_0x5cb2b4(0x109)+'pt','IeUHK':function(_0x5a4c7e,_0x2edf70){return _0x5a4c7e-_0x2edf70;},'Idvge':function(_0x3b526e,_0x36b469){return _0x3b526e<_0x36b469;},'qRwfm':_0x5cb2b4(0x16b)+_0x5cb2b4(0xf1),'CvXDN':function(_0x4b4208,_0x1db216){return _0x4b4208<_0x1db216;},'acPIM':function(_0x7d44b7,_0x3020d2){return _0x7d44b7(_0x3020d2);},'MyLMO':function(_0x22d4b2,_0xe7a6a0){return _0x22d4b2<_0xe7a6a0;},'boDyh':function(_0x176992,_0x346381,_0xab7fc){return _0x176992(_0x346381,_0xab7fc);},'ZANXD':_0x5cb2b4(0x10f)+_0x5cb2b4(0x12a)+_0x5cb2b4(0x142),'CXwRZ':_0x5cb2b4(0x123)+_0x5cb2b4(0x15f),'AuMHM':_0x5cb2b4(0x161),'KUuFZ':_0x5cb2b4(0xe6),'MSwtw':_0x5cb2b4(0x13a),'ERvPB':_0x5cb2b4(0x134),'ycTDj':_0x5cb2b4(0x15b),'Tvhir':_0x5cb2b4(0x154)},_0x469be1=_0x23f9e9[_0x5cb2b4(0x153)],_0x36fe07={'blacklist':window[_0x5cb2b4(0x11f)+_0x5cb2b4(0x115)+'T'],'whitelist':window[_0x5cb2b4(0x11f)+_0x5cb2b4(0x13e)+'T']},_0x26516a={'blacklisted':[]},_0x34e4a6=(_0x2be2f5,_0x25b3b2)=>{const _0x80dd2=_0x5cb2b4;if(_0x2be2f5&&(!_0x25b3b2||_0x23f9e9[_0x80dd2(0x13b)](_0x25b3b2,_0x469be1))&&(!_0x36fe07[_0x80dd2(0x170)]||_0x36fe07[_0x80dd2(0x170)][_0x80dd2(0x151)](_0xa5c7cf=>_0xa5c7cf[_0x80dd2(0x12b)](_0x2be2f5)))&&(!_0x36fe07[_0x80dd2(0x165)]||_0x36fe07[_0x80dd2(0x165)][_0x80dd2(0x156)](_0x4e2570=>!_0x4e2570[_0x80dd2(0x12b)](_0x2be2f5)))&&_0x23f9e9[_0x80dd2(0xf7)](avadaSpeedUp,0x5*0x256+-0x1*0x66c+-0x542+0.5)&&_0x2be2f5[_0x80dd2(0x137)](_0x23f9e9[_0x80dd2(0xe7)])){const _0x413c89=_0x2be2f5[_0x80dd2(0x16c)];return _0x23f9e9[_0x80dd2(0xf7)](_0x23f9e9[_0x80dd2(0x11e)](_0x413c89,-0x1deb*-0x1+0xf13+-0x2cfc),0x1176+-0x78b*0x5+0x1441);}return _0x2be2f5&&(!_0x25b3b2||_0x23f9e9[_0x80dd2(0xed)](_0x25b3b2,_0x469be1))&&(!_0x36fe07[_0x80dd2(0x170)]||_0x36fe07[_0x80dd2(0x170)][_0x80dd2(0x151)](_0x3d689d=>_0x3d689d[_0x80dd2(0x12b)](_0x2be2f5)))&&(!_0x36fe07[_0x80dd2(0x165)]||_0x36fe07[_0x80dd2(0x165)][_0x80dd2(0x156)](_0x26a7b3=>!_0x26a7b3[_0x80dd2(0x12b)](_0x2be2f5)));},_0x11462f=function(_0x42927f){const _0x346823=_0x5cb2b4,_0x5426ae=_0x42927f[_0x346823
19(0x159)+'te'](_0x23f9e9[_0x346823(0x14e)]);return _0x36fe07[_0x346823(0x170)]&&_0x36fe07[_0x346823(0x170)][_0x346823(0x156)](_0x107b0d=>!_0x107b0d[_0x346823(0x12b)](_0x5426ae))||_0x36fe07[_0x346823(0x165)]&&_0x36fe07[_0x346823(0x165)][_0x346823(0x151)](_0x1e7160=>_0x1e7160[_0x346823(0x12b)](_0x5426ae));},_0x39299f=new MutationObserver(_0x45c995=>{const _0x21802a=_0x5cb2b4,_0x3bc801={'mafxh':function(_0x6f9c57,_0x229989){const _0x9d39b1=_0x55aa;return _0x23f9e9[_0x9d39b1(0xf7)](_0x6f9c57,_0x229989);},'SrchE':_0x23f9e9[_0x21802a(0xe2)],'pvjbV':_0x23f9e9[_0x21802a(0xf6)]};for(let _0x333494=-0x7d7+-0x893+0x106a;_0x23f9e9[_0x21802a(0x158)](_0x333494,_0x45c995[_0x21802a(0x16c)]);_0x333494++){const {addedNodes:_0x1b685b}=_0x45c995[_0x333494];for(let _0x2f087=0x1f03+0x84b+0x1*-0x274e;_0x23f9e9[_0x21802a(0x158)](_0x2f087,_0x1b685b[_0x21802a(0x16c)]);_0x2f087++){const _0x4e5bac=_0x1b685b[_0x2f087];if(_0x23f9e9[_0x21802a(0xf7)](_0x4e5bac[_0x21802a(0x121)],-0x1f3a+-0x1*0x1b93+-0x3*-0x139a)&&_0x23f9e9[_0x21802a(0xf7)](_0x4e5bac[_0x21802a(0x152)],_0x23f9e9[_0x21802a(0xe0)])){const _0x5d9a67=_0x4e5bac[_0x21802a(0x107)],_0x3fb522=_0x4e5bac[_0x21802a(0x16d)];if(_0x23f9e9[_0x21802a(0x103)](_0x34e4a6,_0x5d9a67,_0x3fb522)){_0x26516a[_0x21802a(0x160)+'d'][_0x21802a(0x128)]([_0x4e5bac,_0x4e5bac[_0x21802a(0x16d)]]),_0x4e5bac[_0x21802a(0x16d)]=_0x469be1;const _0x1e52da=function(_0x2c95ff){const _0x359b13=_0x21802a;if(_0x3bc801[_0x359b13(0x118)](_0x4e5bac[_0x359b13(0x159)+'te'](_0x3bc801[_0x359b13(0x166)]),_0x469be1))_0x2c95ff[_0x359b13(0x112)+_0x359b13(0x150)]();_0x4e5bac[_0x359b13(0xec)+_0x359b13(0x130)](_0x3bc801[_0x359b13(0xe4)],_0x1e52da);};_0x4e5bac[_0x21802a(0x12d)+_0x21802a(0x163)](_0x23f9e9[_0x21802a(0xf6)],_0x1e52da),_0x4e5bac[_0x21802a(0x12c)+_0x21802a(0x131)]&&_0x4e5bac[_0x21802a(0x12c)+_0x21802a(0x131)][_0x21802a(0x11a)+'d'](_0x4e5bac);}}}}});_0x39299f[_0x5cb2b4(0x105)](document[_0x5cb2b4(0x10b)+_0x5cb2b4(0x16a)],{'childList':!![],'subtree':!![]});const _0x2910a9=/[|\\{}()\[\]^$+*?.]/g,_0xa9f173=function(..._0x1baa33){const _0x3053cc=_0x5cb2b4,_0x2e6f61={'mMWha':function(_0x158c76,_0x5c404b){const _0x25a05c=_0x55aa;return _0x23f9e9[_0x25a05c(0xf7)](_0x158c76,_0x5c404b);},'BXirI':_0x23f9e9[_0x3053cc(0x141)],'COGok':function(_0x421bf7,_0x55453a){const _0x4fd417=_0x3053cc;return _0x23f9e9[_0x4fd417(0x167)](_0x421bf7,_0x55453a);},'XLSAp':function(_0x193984,_0x35c446){const _0x5bbecf=_0x3053cc;return _0x23f9e9[_0x5bbecf(0xed)](_0x193984,_0x35c446);},'EygRw':function(_0xfbb69c,_0x21b15d){const _0xe5c840=_0x3053cc;return _0x23f9e9[_0xe5c840(0x104)](_0xfbb69c,_0x21b15d);},'xZuNx':_0x23f9e9[_0x3053cc(0x139)],'SBUaW':function(_0x5739bf,_0x2c2fab){const _0x42cbb1=_0x3053cc;return _0x23f9e9[_0x42cbb1(0x172)](_0x5739bf,_0x2c2fab);},'EAoTR':function(_0x123b29,_0x5b29bf){const _0x2828d2=_0x3053cc;return _0x23f9e9[_0x2828d2(0x11d)](_0x123b29,_0x5b29bf);},'cdYdq':_0x23f9e9[_0x3053cc(0x14e)],'WzJcf':_0x23f9e9[_0x3053cc(0xe2)],'nytPK':function(_0x53f733,_0x4ad021){const _0x4f0333=_0x3053cc;return _0x23f9e9[_0x4f0333(0x148)](_0x53f733,_0x4ad021);},'oUrHG':_0x23f9e9[_0x3053cc(0x14d)],'dnxjX':function(_0xed6b5f,_0x573f55){const _0x57aa03=_0x3053cc;return _0x23f9e9[_0x57aa03(0x15a)](_0xed6b5f,_0x573f55);}};_0x23f9e9[_0x3053cc(0x15d)](_0x1baa33[_0x3053cc(0x16c)],-0x1a3*-0x9+-0xf9*0xb+-0x407*0x1)?(_0x36fe07[_0x3053cc(0x170)]=[],_0x36fe07[_0x3053cc(0x165)]=[]):(_0x36fe07[_0x3053cc(0x170)]&&(_0x36fe07[_0x3053cc(0x170)]=_0x36fe07[_0x3053cc(0x170)][_0x3053cc(0x106)](_0xa8e001=>_0x1baa33[_0x3053cc(0x156)](_0x4a8a28=>{const _0x2e425b=_0x3053cc;if(_0x2e6f61[_0x2e425b(0x111)](typeof _0x4a8a28,_0x2e6f61[_0x2e425b(0x155)]))return!_0xa8e001[_0x2e425b(0x12b)](_0x4a8a28);else{if(_0x2e6f61[_0x2e425b(0xeb)](_0x4a8a28,RegExp))return _0x2e6f61[_0x2e425b(0x145)](_0xa8e001[_0x2e425b(0xdf)](),_0x4a8a28[_0x2e425b(0xdf)]());}}))),_0x36fe07[_0x3053cc(0x165)]&&(_0x36fe07[_0x3053cc(0x165)]=[..._0x36fe07[_0x3053cc(0x165)],..._0x1baa33[_0x3053cc(0xff)](_0x4e4c02=>{const _0x7c755c=_0x3053cc;if(_0x23f9e9[_0x7c755c(0xf7)](typeof _0x4e4c02,_0x23f9e9[_0x7c755c(0x141)])){const _0x932437=_0x4e4c02[_0x7c755c(0xea)](_0x2910a9,_0x23f9e9[_0x7c755c(0x16f)]),_0x34e686=_0
19x23f9e9[_0x7c755c(0xf0)](_0x23f9e9[_0x7c755c(0xf0)]('.*',_0x932437),'.*');if(_0x36fe07[_0x7c755c(0x165)][_0x7c755c(0x156)](_0x21ef9a=>_0x21ef9a[_0x7c755c(0xdf)]()!==_0x34e686[_0x7c755c(0xdf)]()))return new RegExp(_0x34e686);}else{if(_0x23f9e9[_0x7c755c(0x117)](_0x4e4c02,RegExp)){if(_0x36fe07[_0x7c755c(0x165)][_0x7c755c(0x156)](_0x5a3f09=>_0x5a3f09[_0x7c755c(0xdf)]()!==_0x4e4c02[_0x7c755c(0xdf)]()))return _0x4e4c02;}}return null;})[_0x3053cc(0x106)](Boolean)]));const _0x3eeb55=document[_0x3053cc(0x11b)+_0x3053cc(0x10e)](_0x23f9e9[_0x3053cc(0xf0)](_0x23f9e9[_0x3053cc(0xf0)](_0x23f9e9[_0x3053cc(0x122)],_0x469be1),'"]'));for(let _0xf831f7=-0x21aa+-0x1793+0x393d*0x1;_0x23f9e9[_0x3053cc(0x14b)](_0xf831f7,_0x3eeb55[_0x3053cc(0x16c)]);_0xf831f7++){const _0x5868cb=_0x3eeb55[_0xf831f7];_0x23f9e9[_0x3053cc(0x132)](_0x11462f,_0x5868cb)&&(_0x26516a[_0x3053cc(0x160)+'d'][_0x3053cc(0x128)]([_0x5868cb,_0x23f9e9[_0x3053cc(0x14d)]]),_0x5868cb[_0x3053cc(0x12c)+_0x3053cc(0x131)][_0x3053cc(0x11a)+'d'](_0x5868cb));}let _0xdf8cd0=-0x17da+0x2461+-0xc87*0x1;[..._0x26516a[_0x3053cc(0x160)+'d']][_0x3053cc(0x10d)](([_0x226aeb,_0x33eaa7],_0xe33bca)=>{const _0x2aa7bf=_0x3053cc;if(_0x2e6f61[_0x2aa7bf(0x143)](_0x11462f,_0x226aeb)){const _0x41da0d=document[_0x2aa7bf(0x11c)+_0x2aa7bf(0x131)](_0x2e6f61[_0x2aa7bf(0x127)]);for(let _0x6784c7=0xd7b+-0xaa5+-0x2d6;_0x2e6f61[_0x2aa7bf(0x164)](_0x6784c7,_0x226aeb[_0x2aa7bf(0xe5)][_0x2aa7bf(0x16c)]);_0x6784c7++){const _0x4ca758=_0x226aeb[_0x2aa7bf(0xe5)][_0x6784c7];_0x2e6f61[_0x2aa7bf(0x12f)](_0x4ca758[_0x2aa7bf(0x133)],_0x2e6f61[_0x2aa7bf(0x13f)])&&_0x2e6f61[_0x2aa7bf(0x145)](_0x4ca758[_0x2aa7bf(0x133)],_0x2e6f61[_0x2aa7bf(0x100)])&&_0x41da0d[_0x2aa7bf(0xe1)+'te'](_0x4ca758[_0x2aa7bf(0x133)],_0x226aeb[_0x2aa7bf(0xe5)][_0x6784c7][_0x2aa7bf(0x12e)]);}_0x41da0d[_0x2aa7bf(0xe1)+'te'](_0x2e6f61[_0x2aa7bf(0x13f)],_0x226aeb[_0x2aa7bf(0x107)]),_0x41da0d[_0x2aa7bf(0xe1)+'te'](_0x2e6f61[_0x2aa7bf(0x100)],_0x2e6f61[_0x2aa7bf(0x101)](_0x33eaa7,_0x2e6f61[_0x2aa7bf(0x126)])),document[_0x2aa7bf(0x113)][_0x2aa7bf(0x146)+'d'](_0x41da0d),_0x26516a[_0x2aa7bf(0x160)+'d'][_0x2aa7bf(0x162)](_0x2e6f61[_0x2aa7bf(0x13d)](_0xe33bca,_0xdf8cd0),-0x105d*0x2+0x1*-0xeaa+0x2f65),_0xdf8cd0++;}}),_0x36fe07[_0x3053cc(0x170)]&&_0x23f9e9[_0x3053cc(0xf3)](_0x36fe07[_0x3053cc(0x170)][_0x3053cc(0x16c)],0x10f2+-0x1a42+0x951)&&_0x39299f[_0x3053cc(0x15c)]();},_0x4c2397=document[_0x5cb2b4(0x11c)+_0x5cb2b4(0x131)],_0x573f89={'src':Object[_0x5cb2b4(0x14f)+_0x5cb2b4(0xfd)+_0x5cb2b4(0x144)](HTMLScriptElement[_0x5cb2b4(0xf9)],_0x23f9e9[_0x5cb2b4(0x14e)]),'type':Object[_0x5cb2b4(0x14f)+_0x5cb2b4(0xfd)+_0x5cb2b4(0x144)](HTMLScriptElement[_0x5cb2b4(0xf9)],_0x23f9e9[_0x5cb2b4(0xe2)])};document[_0x5cb2b4(0x11c)+_0x5cb2b4(0x131)]=function(..._0x4db605){const _0x1480b5=_0x5cb2b4,_0x3a6982={'KNNxG':function(_0x32fa39,_0x2a57e4,_0x3cc08f){const _0x5ead12=_0x55aa;return _0x23f9e9[_0x5ead12(0x169)](_0x32fa39,_0x2a57e4,_0x3cc08f);}};if(_0x23f9e9[_0x1480b5(0x13b)](_0x4db605[-0x4*-0x376+0x4*0x2f+-0xe94][_0x1480b5(0x140)+'e'](),_0x23f9e9[_0x1480b5(0x139)]))return _0x4c2397[_0x1480b5(0x114)](document)(..._0x4db605);const _0x2f091d=_0x4c2397[_0x1480b5(0x114)](document)(..._0x4db605);try{Object[_0x1480b5(0xf2)+_0x1480b5(0x149)](_0x2f091d,{'src':{..._0x573f89[_0x1480b5(0x107)],'set'(_0x3ae2bc){const _0x5d6fdc=_0x1480b5;_0x3a6982[_0x5d6fdc(0x129)](_0x34e4a6,_0x3ae2bc,_0x2f091d[_0x5d6fdc(0x16d)])&&_0x573f89[_0x5d6fdc(0x16d)][_0x5d6fdc(0x10a)][_0x5d6fdc(0x125)](this,_0x469be1),_0x573f89[_0x5d6fdc(0x107)][_0x5d6fdc(0x10a)][_0x5d6fdc(0x125)](this,_0x3ae2bc);}},'type':{..._0x573f89[_0x1480b5(0x16d)],'get'(){const _0x436e9e=_0x1480b5,_0x4b63b9=_0x573f89[_0x436e9e(0x16d)][_0x436e9e(0xfb)][_0x436e9e(0x125)](this);if(_0x23f9e9[_0x436e9e(0xf7)](_0x4b63b9,_0x469be1)||_0x23f9e9[_0x436e9e(0x103)](_0x34e4a6,this[_0x436e9e(0x107)],_0x4b63b9))return null;return _0x4b63b9;},'set'(_0x174ea3){const _0x1dff57=_0x1480b5,_0xa2fd13=_0x23f9e9[_0x1dff57(0x103)](_0x34e4a6,_0x2f091d[_0x1dff57(0x107)],_0x2f091d[_0x1dff57(0x16d)])?_0x469be1:_0x174ea3;_0x573f89[_0x1dff57(0x16d)][_0x1dff57(0x10a)][_0x1dff57(0x125)](this,_0xa2fd13);}}}),_0x2f091d[_0x1480b5(0xe1)+'te']=function(_0x5b0870,_0x8c60d5){const _0xab22d4=_0x1480b5;if(_0x23f9e9[_0xab22d4(0xf7)](_0x5b0870,_0x23f9e9[_0xab22d4(0xe2)])||_0x23f9e9[_0xab22d4(0xf7)](_0x5b0870,_0x23f9e9[_0xab22d4(0x14e)]))_0x2f091d[_0x5b0870]=_0x8c60d5;else HTMLScriptElement[_0xab22d4(0xf9)][_0xab22d4(0xe1)+'te'][_0xab22d4(0x125)](_0x2f091d,_0x5b0870,_0x8c60d5);};}catch(_0x5a9461){console[_0x1480b5(0x168)](_0x23f9e9[_0x1480b5(0xef)],_0x5a9461);}return _0x2f091d;};const _0x5883c5=[_0x23f9e9[_0x5cb2b4(0xfe)],_0x23f9e9[_0x5cb2b4(0x13c)],_0x23f9e9[_0x5cb2b4(0xf5)],_0x23f9e9[_0x5cb2b4(0x15e)],_0x23f9e9[_0x5cb2b4(0x138)],_0x23f9e9[_0x5cb2b4(0x124)]],_0x4ab8d2=_0x5883c5[_0x5cb2b4(0xff)](_0x439d08=>{return{'type':_0x439d08,'listener':()=>_0xa9f173(),'options':{'passive':!![]}};});_0x4ab8d2[_0x5cb2b4(0x10d)](_0x4d3535=>{const _0x3882ab=_0x5cb2b4;document[_0x3882ab(0x12d)+_0x3882ab(0x163)](_0x4d3535[_0x3882ab(0x16d)],_0x4d3535[_0x3882ab(0xee)],_0x4d3535[_0x3882ab(0x108)]);});}()));function _0x1cb5(){const _0x15f8e0=['ault','some','tagName','CXwRZ','wheel','BXirI','every','6lYvYY
19X','PqBPA','getAttribu','IeUHK','touchstart','disconnect','Idvge','ERvPB','/blocked','blackliste','keydown','splice','stener','SBUaW','whitelist','SrchE','toAYB','warn','boDyh','ement','script[typ','length','type','346347wGqEBH','NgloT','blacklist','33OVoYHk','zuWfR','toString','NKPCA','setAttribu','swpMF','230EEqEiq','pvjbV','attributes','mousemove','RChnz','beforescri','y.com/exte','replace','COGok','removeEven','EvLYw','listener','ZANXD','ThSSU','e="','defineProp','MyLMO','cdn.shopif','MSwtw','plMMu','XduVF','22621984JRJQxz','prototype','8818116NVbcZr','get','SCRIPT','ertyDescri','AuMHM','map','WzJcf','nytPK','7kiZatp','TINqh','VMiyW','observe','filter','src','options','n/javascri','set','documentEl','478083wuqgQV','forEach','torAll','Avada cann','applicatio','mMWha','preventDef','head','bind','D_BLACKLIS','75496skzGVx','lDDHN','mafxh','script','removeChil','querySelec','createElem','vEmrv','TAsuR','AVADA_SPEE','string','nodeType','qRwfm','javascript','Tvhir','call','oUrHG','xZuNx','push','KNNxG','ot lazy lo','test','parentElem','addEventLi','value','EAoTR','tListener','ent','acPIM','name','touchmove','ptexecute','6968312SmqlIb','includes','ycTDj','iyhbw','touchend','yXGBq','KUuFZ','dnxjX','D_WHITELIS','cdYdq','toLowerCas','BAueN','ad script','EygRw','ptor','XLSAp','appendChil','4975500NoPAFA','yxERj','erties','nsions','CvXDN','\$&','MZpwM','nnhAQ','getOwnProp'];_0x1cb5=function(){return _0x15f8e0;};return _0x1cb5();} 20} 21 class LightJsLoader{constructor(e){this.jQs=[],this.listener=this.handleListener.bind(this,e),this.scripts=["default","defer","async"].reduce(((e,t)=>({...e,[t]:[]})),{});const t=this;e.forEach((e=>window.addEventListener(e,t.listener,{passive:!0})))}handleListener(e){const t=this;return e.forEach((e=>window.removeEventListener(e,t.listener))),"complete"===document.readyState?this.handleDOM():document.addEventListener("readystatechange",(e=>{if("complete"===e.target.readyState)return setTimeout(t.handleDOM.bind(t),1)}))}async handleDOM(){this.suspendEvent(),this.suspendJQuery(),this.findScripts(),this.preloadScripts();for(const e of Object.keys(this.scripts))await this.replaceScripts(this.scripts[e]);for(const e of["DOMContentLoaded","readystatechange"])await this.requestRepaint(),document.dispatchEvent(new Event("lightJS-"+e));document.lightJSonreadystatechange&&document.lightJSonreadystatechange();for(const e of["DOMContentLoaded","load"])await this.requestRepaint(),window.dispatchEvent(new Event("lightJS-"+e));await this.requestRepaint(),window.lightJSonload&&window.lightJSonload(),await this.requestRepaint(),this.jQs.forEach((e=>e(window).trigger("lightJS-jquery-load"))),window.dispatchEvent(new Event("lightJS-pageshow")),await this.requestRepaint(),window.lightJSonpageshow&&window.lightJSonpageshow()}async requestRepaint(){return new Promise((e=>requestAnimationFrame(e)))}findScripts(){document.querySelectorAll("script[type=lightJs]").forEach((e=>{e.hasAttribute("src")?e.hasAttribute("async")&&e.async?this.scripts.async.push(e):e.hasAttribute("defer")&&e.defer?this.scripts.defer.push(e):this.scripts.default.push(e):this.scripts.default.push(e)}))}preloadScripts(){const e=this,t=Object.keys(this.scripts).reduce(((t,n)=>[...t,...e.scripts[n]]),[]),n=document.createDocumentFragment();t.forEach((e=>{const t=e.getAttribute("src");if(!t)return;const s=document.createElement("link");s.href=t,s.rel="preload",s.as="script",n.appendChild(s)})),document.head.appendChild(n)}async replaceScripts(e){let t;for(;t=e.shift();)await this.requestRepaint(),new Promise((e=>{const n=document.createElement("script");[...t.attributes].forEach((e=>{"type"!==e.nodeName&&n.setAttribute(e.nodeName,e.nodeValue)})),t.hasAttribute("src")?(n.addEventListener("load",e),n.addEventListener("error",e)):(n.text=t.text,e()),t.parentNode.replaceChild(n,t)}))}suspendEvent(){const e={};[{obj:document,name:"DOMContentLoaded"},{obj:window,name:"DOMContentLoaded"},{obj:window,name:"load"},{obj:window,name:"pageshow"},{obj:document,name:"readystatechange"}].map((t=>function(t,n){function s(n){return e[t].list.indexOf(n)>=0?"lightJS-"+n:n}e[t]||(e[t]={list:[n],add:t.addEventListener,remove:t.removeEventListener},t.addEventListener=(...n)=>{n[0]=s(n[0]),e[t].add.apply(t,n)},t.removeEventListener=(...n)=>{n[0]=s(n[0]),e[t].remove.apply(t,n)})}(t.obj,t.name))),[{obj:document,name:"onreadystatechange"},{obj:window,name:"onpageshow"}].map((e=>function(e,t){let n=e[t];Object.defineProperty(e,t,{get:()=>n||function(){},set:s=>{e["lightJS"+t]=n=s}})}(e.obj,e.name)))}suspendJQuery(){const e=this;let t=window.jQuery;Object.defineProperty(window,"jQuery",{get:()=>t,set(n){if(!n||!n.fn||!e.jQs.includes(n))return void(t=n);n.fn.ready=n.fn.init.prototype.ready=e=>{e.bind(document)(n)};const s=n.fn.on;n.fn.on=n.fn.init.prototype.on=function(...e){if(window!==this[0])return s.apply(this,e),this;const t=e=>e.split(" ").map((e=>"load"===e||0===e.indexOf("load.")?"lightJS-jquery-load":e)).join(" ");return"string"==typeof e[0]||e[0]instanceof String?(e[0]=t(e[0]),s.apply(this,e),this):("object"==typeof e[0]&&Object.keys(e[0]).forEac
21h((n=>{delete Object.assign(e[0],{[t(n)]:e[0][n]})[n]})),s.apply(this,e),this)},e.jQs.push(n),t=n}})}} 22new LightJsLoader(["keydown","mousemove","touchend","touchmove","touchstart","wheel"]); 23 } 24</script>
24<!-- meta basic type collection --><!-- meta basic type article --> 25 26 <!-- /Added by AVADA SEO Suite --> 27 <meta charset="utf-8"> 28 <meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height"> 29 <meta name="theme-color" content="#ffffff"> 30 31 <title>Contact Us | Spinning®</title><meta name="description" content="Our office will be closed on Monday, September 7, 2026, in observance of Labor Day. We will resume normal business hours on Tuesday, September 8, 2026. Need help finding a Spinning® Instructor Training? Want to learn more about the Spinning program for your gym or club? Need to access your online account? The Spinning "><link rel="canonical" href="https://spinning.com/pages/contact-us"><link rel="shortcut icon" href="//spinning.com/cdn/shop/files/Spinning-favicon.png?v=1724281611&width=96"> 32 <link rel="apple-touch-icon" href="//spinning.com/cdn/shop/files/Spinning-favicon.png?v=1724281611&width=180"><link rel="preconnect" href="https://cdn.shopify.com"> 33 <link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin> 34 <link rel="dns-prefetch" href="https://productreviews.shopifycdn.com"><link rel="preload" href="//spinning.com/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="//spinning.com/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2" as="font" type="font/woff2" crossorigin><meta property="og:type" content="website"> 35 <meta property="og:title" content="Contact Us | Spinning®"><meta property="og:description" content="Our office will be closed on Monday, September 7, 2026, in observance of Labor Day. We will resume normal business hours on Tuesday, September 8, 2026. Need help finding a Spinning® Instructor Training? Want to learn more about the Spinning program for your gym or club? Need to access your online account? The Spinning "><meta property="og:url" content="https://spinning.com/pages/contact-us"> 36<meta property="og:site_name" content="Spinning"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Contact Us | Spinning®"> 37 <meta name="twitter:description" content="Our office will be closed on Monday, September 7, 2026, in observance of Labor Day. We will resume normal business hours on Tuesday, September 8, 2026. Need help finding a Spinning® Instructor Training? Want to learn more about the Spinning program for your gym or club? Need to access your online account? The Spinning ">
37<script type="application/ld+json"> 38 { 39 "@context": "https://schema.org", 40 "@type": "BreadcrumbList", 41 "itemListElement": [{ 42 "@type": "ListItem", 43 "position": 1, 44 "name": "Home", 45 "item": "https://spinning.com" 46 },{ 47 "@type": "ListItem", 48 "position": 2, 49 "name": "Contact Us", 50 "item": "https://spinning.com/pages/contact-us" 51 }] 52 } 53</script>
53<style>/* Typography (heading) */ 54 @font-face { 55 font-family: Montserrat; 56 font-weight: 400; 57 font-style: normal; 58 font-display: fallback; 59 src: url("//spinning.com/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2") format("woff2"), 60 url("//spinning.com/cdn/fonts/montserrat/montserrat_n4.a6c632ca7b62da89c3594789ba828388aac693fe.woff") format("woff"); 61} 62 63@font-face { 64 font-family: Montserrat; 65 font-weight: 400; 66 font-style: italic; 67 font-display: fallback; 68 src: url("//spinning.com/cdn/fonts/montserrat/montserrat_i4.5a4ea298b4789e064f62a29aafc18d41f09ae59b.woff2") format("woff2"), 69 url("//spinning.com/cdn/fonts/montserrat/montserrat_i4.072b5869c5e0ed5b9d2021e4c2af132e16681ad2.woff") format("woff"); 70} 71 72/* Typography (body) */ 73 @font-face { 74 font-family: Montserrat; 75 font-weight: 400; 76 font-style: normal; 77 font-display: fallback; 78 src: url("//spinning.com/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2") format("woff2"), 79 url("//spinning.com/cdn/fonts/montserrat/montserrat_n4.a6c632ca7b62da89c3594789ba828388aac693fe.woff") format("woff"); 80} 81 82@font-face { 83 font-family: Montserrat; 84 font-weight: 400; 85 font-style: italic; 86 font-display: fallback; 87 src: url("//spinning.com/cdn/fonts/montserrat/montserrat_i4.5a4ea298b4789e064f62a29aafc18d41f09ae59b.woff2") format("woff2"), 88 url("//spinning.com/cdn/fonts/montserrat/montserrat_i4.072b5869c5e0ed5b9d2021e4c2af132e16681ad2.woff") format("woff"); 89} 90 91@font-face { 92 font-family: Montserrat; 93 font-weight: 700; 94 font-style: normal; 95 font-display: fallback; 96 src: url("//spinning.com/cdn/fonts/montserrat/montserrat_n7.3c434e22befd5c18a6b4afadb1e3d77c128c7939.woff2") format("woff2"), 97 url("//spinning.com/cdn/fonts/montserrat/montserrat_n7.5d9fa6e2cae713c8fb539a9876489d86207fe957.woff") format("woff"); 98} 99 100@font-face { 101 font-family: Montserrat; 102 font-weight: 700; 103 font-style: italic; 104 font-display: fallback; 105 src: url("//spinning.com/cdn/fonts/montserrat/montserrat_i7.a0d4a463df4f146567d871890ffb3c80408e7732.woff2") format("woff2"), 106 url("//spinning.com/cdn/fonts/montserrat/montserrat_i7.f6ec9f2a0681acc6f8152c40921d2a4d2e1a2c78.woff") format("woff"); 107} 108 109:root { 110 /** 111 * --------------------------------------------------------------------- 112 * SPACING VARIABLES 113 * 114 * We are using a spacing inspired from frameworks like Tailwind CSS. 115 * --------------------------------------------------------------------- 116 */ 117 --spacing-0-5: 0.125rem; /* 2px */ 118 --spacing-1: 0.25rem; /* 4px */ 119 --spacing-1-5: 0.375rem; /* 6px */ 120 --spacing-2: 0.5rem; /* 8px */ 121 --spacing-2-5: 0.625rem; /* 10px */ 122 --spacing-3: 0.75rem; /* 12px */ 123 --spacing-3-5: 0.875rem; /* 14px */ 124 --spacing-4: 1rem; /* 16px */ 125 --spacing-4-5: 1.125rem; /* 18px */ 126 --spacing-5: 1.25rem; /* 20px */ 127 --spacing-5-5: 1.375rem; /* 22px */ 128 --spacing-6: 1.5rem; /* 24px */ 129 --spacing-6-5: 1.625rem; /* 26px */ 130 --spacing-7: 1.75rem; /* 28px */ 131 --spacing-7-5: 1.875rem; /* 30px */ 132 --spacing-8: 2rem; /* 32px */ 133 --spacing-8-5: 2.125rem; /* 34px */ 134 --spacing-9: 2.25rem; /* 36px */ 135 --spacing-9-5: 2.375rem; /* 38px */ 136 --spacing-10: 2.5rem; /* 40px */ 137 --spacing-11: 2.75rem; /* 44px */ 138 --spacing-12: 3rem; /* 48px */ 139 --spacing-14: 3.5rem; /* 56px */ 140 --spacing-16: 4rem; /* 64px */ 141 --spacing-18: 4.5rem; /* 72px */ 142 --spacing-20: 5rem; /* 80px */ 143 --spacing-24: 6rem; /* 96px */ 144 --spacing-28: 7rem; /* 112px */ 145 --spacing-32: 8rem; /* 128px */ 146 --spacing-36: 9rem; /* 144px */ 147 --spacing-40: 10rem; /* 160px */ 148 --spacing-44: 11rem; /* 176px */ 149 --spacing-48: 12rem; /* 192px */ 150 --spacing-52: 13rem; /* 208px */ 151 --spacing-56: 14rem; /* 224px */ 152 --spacing-60: 15rem; /* 240px */ 153 --spacing-64: 16rem; /* 256px */ 154 --spacing-72: 18rem; /* 288px */ 155 --spacing-80: 20rem; /* 320px */ 156 --spacing-96: 24rem; /* 384px */ 157 158 /* Container */ 159 --container-max-width: 1800px; 160 --container-narrow-max-width: 1550px; 161 --container-gutter: var(--spacing-5); 162 --section-outer-spacing-block: var(--spacing-14); 163 --section-inner-max-spacing-block: var(--spacing-12); 164 --section-inner-spacing-inline: var(--container-gutter); 165 --section-stack-spacing-block: var(--spacing-10); 166 167 /* Grid gutter */ 168 --grid-gutter: var(--spacing-5); 169 170 /* Product list settings */ 171 --product-list-row-gap: var(--spacing-8); 172 --product-list-column-gap: var(--grid-gutter); 173 174 /* Form settings */ 175 --input-gap: var(--spacing-2); 176 --input-height: 2.625rem; 177 --input-padding-inline: var(--spacing-4); 178 179 /* Other sizes */ 180 --sticky-area-height: calc(var(--sticky-announcement-bar-enabled, 0) * var(--announcement-bar-height, 0px) + var(--sticky-header-enabled, 0) * var(--header-height, 0px)); 181 182 /* RTL support */ 183 --transform-logical-flip: 1; 184 --transform-origin-start: left;
185 --transform-origin-end: right; 186 187 /** 188 * --------------------------------------------------------------------- 189 * TYPOGRAPHY 190 * --------------------------------------------------------------------- 191 */ 192 193 /* Font properties */ 194 --heading-font-family: Montserrat, sans-serif; 195 --heading-font-weight: 400; 196 --heading-font-style: normal; 197 --heading-text-transform: uppercase; 198 --heading-letter-spacing: 0.0em; 199 --text-font-family: Montserrat, sans-serif; 200 --text-font-weight: 400; 201 --text-font-style: normal; 202 --text-letter-spacing: 0.0em; 203 204 /* Font sizes */ 205 --text-h0: 2.5rem; 206 --text-h1: 1.75rem; 207 --text-h2: 1.5rem; 208 --text-h3: 1.375rem; 209 --text-h4: 1.125rem; 210 --text-h5: 1.125rem; 211 --text-h6: 1rem; 212 --text-xs: 0.6875rem; 213 --text-sm: 0.75rem; 214 --text-base: 0.875rem; 215 --text-lg: 1.125rem; 216 217 /** 218 * --------------------------------------------------------------------- 219 * COLORS 220 * --------------------------------------------------------------------- 221 */ 222 223 /* Color settings */--accent: 0 0 0; 224 --text-primary: 0 0 0; 225 --background-primary: 255 255 255; 226 --dialog-background: 255 255 255; 227 --border-color: var(--text-color, var(--text-primary)) / 0.12; 228 229 /* Button colors */ 230 --button-background-primary: 0 0 0; 231 --button-text-primary: 255 255 255; 232 --button-background-secondary: 255 255 255; 233 --button-text-secondary: 0 0 0; 234 235 /* Status colors */ 236 --success-background: 224 244 232; 237 --success-text: 0 163 65; 238 --warning-background: 255 246 233; 239 --warning-text: 255 183 74; 240 --error-background: 254 231 231; 241 --error-text: 248 58 58; 242 243 /* Product colors */ 244 --on-sale-text: 196 18 46; 245 --on-sale-badge-background: 196 18 46; 246 --on-sale-badge-text: 255 255 255; 247 --sold-out-badge-background: 0 0 0; 248 --sold-out-badge-text: 255 255 255; 249 --primary-badge-background: 118 57 229; 250 --primary-badge-text: 255 255 255; 251 --star-color: 247 177 25; 252 --product-card-background: 255 255 255; 253 --product-card-text: 26 26 26; 254 255 /* Header colors */ 256 --header-background: 255 255 255; 257 --header-text: 26 26 26; 258 259 /* Footer colors */ 260 --footer-background: 0 0 0; 261 --footer-text: 255 255 255; 262 263 /* Rounded variables (used for border radius) */ 264 --rounded-xs: 0.0rem; 265 --rounded-sm: 0.0rem; 266 --rounded: 0.0rem; 267 --rounded-lg: 0.0rem; 268 --rounded-full: 9999px; 269 270 --rounded-button: 0.0rem; 271 --rounded-input: 0.0rem; 272 273 /* Box shadow */ 274 --shadow-sm: 0 2px 8px rgb(var(--text-primary) / 0.0); 275 --shadow: 0 5px 15px rgb(var(--text-primary) / 0.0); 276 --shadow-md: 0 5px 30px rgb(var(--text-primary) / 0.0); 277 --shadow-block: 0px 0px 50px rgb(var(--text-primary) / 0.0); 278 279 /** 280 * --------------------------------------------------------------------- 281 * OTHER 282 * --------------------------------------------------------------------- 283 */ 284 285 --stagger-products-reveal-opacity: 0; 286 --cursor-close-svg-url: url(//spinning.com/cdn/shop/t/33/assets/cursor-close.svg?v=147174565022153725511788584795); 287 --cursor-zoom-in-svg-url: url(//spinning.com/cdn/shop/t/33/assets/cursor-zoom-in.svg?v=154953035094101115921788584795); 288 --cursor-zoom-out-svg-url: url(//spinning.com/cdn/shop/t/33/assets/cursor-zoom-out.svg?v=16155520337305705181788584795); 289 --checkmark-svg-url: url(//spinning.com/cdn/shop/t/33/assets/checkmark.svg?v=77552481021870063511788584795); 290 } 291 292 [dir="rtl"]:root { 293 /* RTL support */ 294 --transform-logical-flip: -1; 295 --transform-origin-start: right; 296 --transform-origin-end: left; 297 } 298 299 @media screen and (min-width: 700px) { 300 :root { 301 /* Typography (font size) */ 302 --text-h0: 3.25rem; 303 --text-h1: 2.25rem; 304 --text-h2: 1.75rem; 305 --text-h3: 1.625rem; 306 --text-h4: 1.25rem; 307 --text-h5: 1.25rem; 308 --text-h6: 1.125rem; 309 310 --text-xs: 0.75rem; 311 --text-sm: 0.875rem; 312 --text-base: 1.0rem; 313 --text-lg: 1.25rem; 314 315 /* Spacing */ 316 --container-gutter: 2rem; 317 --section-outer-spacing-block: var(--spacing-20); 318 --section-inner-max-spacing-block: var(--spacing-14); 319 --section-inner-spacing-inline: var(--spacing-14); 320 --section-stack-spacing-block: var(--spacing-12); 321 322 /* Grid gutter */ 323 --grid-gutter: var(--spacing-6); 324 325 /* Product list settings */ 326 --product-list-row-gap: var(--spacing-12); 327 328 /* Form settings */ 329 --input-gap: 1rem; 330 --input-height: 3.125rem; 331 --input-padding-inline: var(--spacing-5); 332 } 333 } 334 335 @media screen and (min-width: 1000px) { 336 :root { 337 /* Spacing settings */ 338 --container-gutter: var(--spacing-12); 339 --section-outer-spacing-block: var(--spacing-20); 340 --section-inner-max-spacing-block: var(--spacing-18); 341 --section-inner-spacing-inline: var(--spacing-18); 342 --section-stack-spacing-block: var(--spacing-12); 343 } 344 } 345 346 @media screen and (min-width: 1150px) { 347 :root { 348 /* Spacing settings */ 349 --container-gutter: var(--spacing-12); 350 --section-outer-spacing-block: var(--spacing-24); 351 --section-inner-max-spacing-block: var(--spacing-18); 352 --section-inner-spacing-inline: var(--spacing-18); 353 --section-stack-spacing-block: var(--spacing-12); 354 } 355 } 356 357 @media screen and (min-width: 1400px) { 358 :root { 359 /* Typography (font size) */ 360 --text-h0: 4rem; 361 --text-h1: 3rem; 362 --text-h2: 2.5rem; 363 --text-h3: 1.75rem; 364 --text-h4: 1.5rem; 365 --text-h5: 1.25rem; 366 --text-h6: 1.25rem; 367 368 --section-outer-spacing-block: var(--spacing-28); 369 --section-inner-max-spacing-block: var(--spacing-20); 370 --section-inner-spacing-inline: var(--spacing-20); 371 } 372 } 373 374 @media screen and (min-width: 1600px) { 375 :root { 376 --section-outer-spacing-block: var(--spacing-32); 377 --section-inner-max-spacing-block: var(--spacing-24); 378 --section-inner-spacing-inline: var(--spacing-24); 379 } 380 } 381 382 /** 383 * --------------------------------------------------------------------- 384 * LIQUID DEPENDANT CSS 385 * 386 * Our main CSS is Liquid free, but some very specific features depend on 387 * theme settings, so we have them here 388 * --------------------------------------------------------------------- 389 */@media screen and (pointer: fine) { 390 /* The !important are for the Shopify Payment button to ensure we override the default from Shopify styles */ 391 .button:not([disabled]):not(.button--outline):hover, .btn:not
391([disabled]):hover, .shopify-payment-button__button--unbranded:not([disabled]):hover { 392 background-color: transparent !important; 393 color: rgb(var(--button-outline-color) / var(--button-background-opacity, 1)) !important; 394 box-shadow: inset 0 0 0 2px currentColor !important; 395 } 396 397 .button--outline:not([disabled]):hover { 398 background: rgb(var(--button-background)); 399 color: rgb(var(--button-text-color)); 400 box-shadow: inset 0 0 0 2px rgb(var(--button-background)); 401 } 402 }</style>
402<script> 403 // This allows to expose several variables to the global scope, to be used in scripts 404 window.themeVariables = { 405 settings: { 406 showPageTransition: null, 407 staggerProductsApparition: true, 408 reduceDrawerAnimation: false, 409 reduceMenuAnimation: false, 410 headingApparition: "fade", 411 pageType: "page", 412 moneyFormat: "${{amount}}", 413 moneyWithCurrencyFormat: "${{amount}} USD", 414 currencyCodeEnabled: true, 415 cartType: "popover", 416 showDiscount: true, 417 discountMode: "saving", 418 pageBackground: "#ffffff", 419 textColor: "#000000" 420 }, 421 422 strings: { 423 homeHeroBikes: "Bikes - Shop Spinner bikes", 424 homeHeroHome: "Home - Ride at home", 425 homeHeroCommercial: "Commercial - Explore commercial Spinner bikes", 426 homeHeroShop: "Shop - Browse best sellers", 427 homeHeroInstructors: "Instructors - Explore Spinning instructor education", 428 accessibilityClose: "Close", 429 accessibilityNext: "Next", 430 accessibilityPrevious: "Previous", 431 closeGallery: "Close gallery", 432 zoomGallery: "Zoom", 433 errorGallery: "Image cannot be loaded", 434 searchNoResults: "No results could be found.", 435 addOrderNote: "Add order note", 436 editOrderNote: "Edit order note", 437 shippingEstimatorNoResults: "Sorry, we do not ship to your address.", 438 shippingEstimatorOneResult: "There is one shipping rate for your address:", 439 shippingEstimatorMultipleResults: "There are several shipping rates for your address:", 440 shippingEstimatorError: "One or more error occurred while retrieving shipping rates:" 441 }, 442 443 breakpoints: { 444 'sm': 'screen and (min-width: 700px)', 445 'md': 'screen and (min-width: 1000px)', 446 'lg': 'screen and (min-width: 1150px)', 447 'xl': 'screen and (min-width: 1400px)', 448 449 'sm-max': 'screen and (max-width: 699px)', 450 'md-max': 'screen and (max-width: 999px)', 451 'lg-max': 'screen and (max-width: 1149px)', 452 'xl-max': 'screen and (max-width: 1399px)' 453 } 454 }; 455 456 // For detecting native share 457 document.documentElement.classList.add(`native-share--${navigator.share ? 'enabled' : 'disabled'}`);</script>
457<!-- GEOIP --> 458
458<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
458 459 <!--
459<script src="//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js" type="text/javascript"></script>
459 older script commented out on 4/1/2020--> 460
460<script src="//geoip-js.com/js/apis/geoip2/v2.1/geoip2.js" type="text/javascript"></script>
460 461
461<script type="text/javascript"> 462 jQuery(document).ready(function(){ 463 var redirect = (function () { 464 465 var currUrl = window.location; 466 var arrPath = currUrl.pathname.split('/'); 467 var paths = new Array(); 468 for(i = 0; i < arrPath.length; i++ ) { 469 if(arrPath[i].trim() != "") { 470 paths.push(arrPath[i]); 471 } 472 } 473 474 var language = navigator.language || navigator.userLanguage; 475 language = language.substring(0,2); 476 477 /* This implements the actual redirection. */ 478 var redirectBrowser = function (site) { 479 // REMOVE COMMENT BELOW 2 LINES WHEN SITE GOES LIVE 480 window.location = site; 481 }; 482 483 var regions = new Array("NA","SA","OC","AS"); 484 var countries = new Array("US","CA","BR","MX","CL","AR","CU","AU","NZ"); 485 var spanish = new Array("BR","MX","CL","AR","CU"); 486 var spanishRegions = new Array("SA"); 487 488 var blackList = new Array("cz","de","dk","es","fr","hu","it","nl","no","pl","po","ro","zh","sa","kw", "tr", "za", "ge", "qa", "lb"); 489 490 var prefix = "https://"; 491 var CurrentPage = location.pathname+location.search.substr(0); 492 var internationalSite = "https://spinning.eu"+CurrentPage; 493 494 var onSuccess = function (geoipResponse) { 495 /* There's no guarantee that a successful response object 496 * has any particular property, so we need to code defensively. */ 497 if (!geoipResponse.country.iso_code) { 498 return; 499 } 500 501 /* ISO country codes are in upper case. */ 502 var region = geoipResponse.continent.code.toUpperCase(); 503 var country = geoipResponse.country.iso_code.toUpperCase(); 504 if(countries.indexOf(country) == -1 && regions.indexOf(region) == -1) { 505 redirectBrowser(internationalSite); 506 } else { 507 if(paths.length > 0 && blackList.indexOf(paths[0].toLowerCase()) > -1) { 508 redirectBrowser(prefix+currUrl.hostname); 509 console.log("redirecting to us-spanish site "+prefix+currUrl.hostname); 510 }else{ 511 var site = window.location.hostname; 512 if(country == 'IL' || country == 'AE' || country == 'BH' || country == 'SA' || country == 'TR' || country =='ZA' || country == 'QA' || country == 'GE' || country == 'LB'){ 513 console.log('Ok! Redirect. Country: '+country); 514 redirectBrowser(internationalSite); 515 } 516 } 517 /*if(paths.length == 0 && language == 'es' && (spanish.indexOf(country) > -1 || spanishRegions.indexOf(region) > -1)) { 518 redirectBrowser(prefix+currUrl.hostname+"/es/"); 519 console.log("redirecting to us-spanish site "+prefix+currUrl.hostname+"/es/"); 520 }*/ 521 } 522 }; 523 524 /* We don't really care what the error is, we'll send them 525 * to the default site. */ 526 var onError = function (error) { 527 return; 528 }; 529 530 return function () { 531 geoip2.country( onSuccess, onError ); 532 }; 533 }()); 534 535 var injectGeoValues = (function() { 536 537 var cont_code, cont_name, country_iso_code, country_name; 538 var onSuccess = function(location){ 539 console.log( 540 "Lookup successful:\n\n" 541 + JSON.stringify(location, undefined, 4) 542 ); 543 cont_code = location.continent.code; 544 cont_name = location.continent.names.en; 545 country_iso_code = location.country.iso_code; 546 country_name = location.country.names.en; 547 548 jQuery("#mce-MMERGE14").val(cont_code); 549 jQuery("#mce-MMERGE18").val(cont_name); 550 jQuery("#mce-MMERGE12").val(country_iso_code); 551 //jQuery("input:hidden[name=CNTRY_NAME]").val(country_name); 552 //jQuery("#mce-MMERGE12").val(country_name); 553 554 jQuery("select#mce-ADDRESS-country option").each(function() { 555 //console.log(this.text + " " + country_name); 556 if(this.text === 'United States of America' && country_name === 'United States') { 557 this.selected = (this.text === country_name); 558 } else { 559 this.selected = (this.text === country_name); 560 } 561 }); 562 }; 563 564 var onError = function(error){ 565 console.log( 566 "Error:\n\n" 567 + JSON.stringify(error, undefined, 4) 568 ); 569 }; 570 571 return function () { 572 geoip2.country( onSuccess, onError ); 573 }; 574 }()); 575 576 /** 577 * SITE REDIRECT 578 * @USA/CANADA Keep user in USA site 579 * cz,de,dk,es... redirect to USA english site 580 * 581 * @NON USA/CANADA Redirect to international site 582 * 583 */ 584 redirect(); 585 /** 586 * If a sign up form is visible, inject geo info 587 */ 588 if(jQuery("input:hidden[name=CNTRY_ISO]").length) { 589 injectGeoValues(); 590 } 591 }); 592 </script>
592 593 594 595 596 597 598
598<script> 599 if (!(HTMLScriptElement.supports && HTMLScriptElement.supports('importmap'))) { 600 const importMapPolyfill = document.createElement('script'); 601 importMapPolyfill.async = true; 602 importMapPolyfill.src = "//spinning.com/cdn/shop/t/33/assets/es-module-shims.min.js?v=98603786603752121101788584795"; 603 604 document.head.appendChild(importMapPolyfill); 605 } 606 </script>
606 607 608
608<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 608
608
609<script type="importmap">{ 610 "imports": { 611 "vendor": "//spinning.com/cdn/shop/t/33/assets/vendor.min.js?v=37127808935879722241788584795", 612 "theme": "//spinning.com/cdn/shop/t/33/assets/theme.js?v=136468275653013251941788585867", 613 "photoswipe": "//spinning.com/cdn/shop/t/33/assets/photoswipe.min.js?v=13374349288281597431788584795" 614 } 615 } 616 </script>
616 617 618
618<script type="module" src="//spinning.com/cdn/shop/t/33/assets/vendor.min.js?v=37127808935879722241788584795"></script>
618 619
619<script type="module" src="//spinning.com/cdn/shop/t/33/assets/theme.js?v=136468275653013251941788585867"></script>
619 620
620<script src="https://www.powr.io/powr.js?platform=shopify"></script>
620 621 622
622<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
622<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/59803303997/digital_wallets/dialog"> 623<meta id="in-context-paypal-metadata" data-shop-id="59803303997" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
624<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=186286141"></script>
624 625<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
626<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=186286141&shop_id=59803303997" crossorigin="anonymous"></script>
vendor: 1 bytes, line 626
626
627<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":59803303997,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/59803303997","merchantName":"Spinning","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Spinning","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 627
627
628<script id="shopify-features" type="application/json">{"accessToken":"7e15038bf0ac412766e5d17de39310a1","betas":["rich-media-storefront-analytics"],"domain":"spinning.com","predictiveSearch":true,"shopId":59803303997,"locale":"en"}</script>
vendor: 1 bytes, line 628
628
629<script>var Shopify = Shopify || {}; 630Shopify.shop = "0e243e-e9.myshopify.com"; 631Shopify.locale = "en"; 632Shopify.currency = {"active":"USD","rate":"1.0"}; 633Shopify.country = "US"; 634Shopify.theme = {"name":"Current Theme - 8\/05\/26 (ADA)","id":141411516477,"schema_name":"Impact","schema_version":"6.5.0","theme_store_id":1190,"role":"main"}; 635Shopify.theme.handle = "null"; 636Shopify.theme.style = {"id":null,"handle":null}; 637Shopify.cdnHost = "spinning.com/cdn"; 638Shopify.routes = Shopify.routes || {}; 639Shopify.routes.root = "/"; 640Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 641Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 642Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 643Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 643
643
644<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 644
644
645<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 645
645
646<script> 647 window.ShopifyPay = window.ShopifyPay || {}; 648 window.ShopifyPay.apiHost = "shop.app\/pay"; 649 window.ShopifyPay.redirectState = null; 650</script>
vendor: 1 bytes, line 650
650
651<script> 652 window.Shopify = window.Shopify || {}; 653 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 654 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 655 window.Shopify.SignInWithShop.eligible = true; 656</script>
vendor: 1 bytes, line 656
656
657<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 657
657
658<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 658
658
659<script type="module"> 660 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 661 662 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 663 664</script>
vendor: 1 bytes, line 664
664
665<script> 666 window.Shopify = window.Shopify || {}; 667 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 668 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]}; 669</script>
vendor: 1 bytes, line 669
669
670<script>(function() { 671 var isLoaded = false; 672 function asyncLoad() { 673 if (isLoaded) return; 674 isLoaded = true; 675 var urls = ["https:\/\/loox.io\/widget\/fzFCYOawr1\/loox.1736177548975.js?shop=0e243e-e9.myshopify.com","https:\/\/chimpstatic.com\/mcjs-connected\/js\/users\/ecfe8820b329ac59d6f0a6985\/4cbc6806ea375c53afc660281.js?shop=0e243e-e9.myshopify.com","https:\/\/cdn.joinclyde.com\/scripts\/shopify-storefront.min.js?shop=0e243e-e9.myshopify.com"]; 676 for (var i = 0; i < urls.length; i++) { 677 var s = document.createElement('script'); 678 if ((!1741336271524 || Date.now() < 1741336271524) && 679 (!window.AVADA_SPEED_BLACKLIST || window.AVADA_SPEED_BLACKLIST.some(pattern => pattern.test(s))) && 680 (!window.AVADA_SPEED_WHITELIST || window.AVADA_SPEED_WHITELIST.every(pattern => !pattern.test(s)))) s.type = 'lightJs'; else s.type = 'text/javascript'; 681 s.async = true; 682 s.src = urls[i]; 683 var x = document.getElementsByTagName('script')[0]; 684 x.parentNode.insertBefore(s, x); 685 } 686 }; 687 if(window.attachEvent) { 688 window.attachEvent('onload', asyncLoad); 689 } else { 690 window.addEventListener('load', asyncLoad, false); 691 } 692})();</script>
vendor: 1 bytes, line 692
692
693<script id="__st">var __st={"a":59803303997,"offset":-25200,"reqid":"296c91a9-8d2c-4903-9c9b-46a9fd01f571-1790241069","pageurl":"spinning.com\/pages\/contact-us","s":"pages-94483382333","u":"a27072b9c805","p":"page","rtyp":"page","rid":94483382333};</script>
vendor: 1 bytes, line 693
693
694<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 694
694
695<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 695
695
696<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//spinning.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 696
696
697<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//spinning.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
697<script crossorigin="anonymous" defer="defer" src="//spinning.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 697
697
698<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 698
698
699<script> 700 window.Shopify = window.Shopify || {}; 701 window.Shopify.MCP = window.Shopify.MCP || {}; 702 window.Shopify.MCP.enabled = true; 703 window.Shopify.MCP.shop = "0e243e-e9.myshopify.com"; 704 window.Shopify.MCP.mcpEndpoint = "https:\/\/spinning.com\/api\/mcp"; 705 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}]; 706</script>
vendor: 1 bytes, line 706
706
707<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/spinning.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 708</script>
vendor: 1 bytes, line 708
708
709<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://spinning.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 710</script>
vendor: 1 bytes, line 710
710
711<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 712 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 713</script>
vendor: 1 bytes, line 713
713
714<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 715</script>
vendor: 1 bytes, line 715
715
716<script id='scb4127' type='text/javascript' async='' src='https://spinning.com/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
716<script integrity="sha256-/LA1C2Bx6899fYCos0FS9qLj2opaGFm7AXrTUvBEb4s=" data-source-attribution="shopify.remote_product_tracking" data-shopify-remote-tracking="{"publisher_shop_id":59803303997,"theme_id":141411516477,"theme_published":true,"theme_store_id":1190,"placement":"collection","event_data":{"handle":"contact-us","page_type":"page"},"recommendations_tracking_enabled":true}" defer="defer" src="//spinning.com/cdn/shopifycloud/storefront/assets/storefront/remote_product_tracking-91d95044.js" crossorigin="anonymous"></script>
716 717<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://spinning.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 718<style id="shopify-accelerated-checkout-cart"> 719 #shopify-buyer-consent { 720 margin-top: 1em; 721 display: inline-block; 722 width: 100%; 723} 724 725#shopify-buyer-consent.hidden { 726 display: none; 727} 728 729#shopify-subscription-policy-button { 730 background: none; 731 border: none; 732 padding: 0; 733 text-decoration: underline; 734 font-size: inherit; 735 cursor: pointer; 736} 737 738#shopify-subscription-policy-button::before { 739 box-shadow: none; 740} 741 742 </style> 743
744<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
744 745 746
746<script> 747 (function () { 748 var GTM_ID = 'GTM-TL7J7N'; 749 var loaded = false; 750 751 window.dataLayer = window.dataLayer || []; 752 753 function hasTrackingConsent() { 754 var cp = window.Shopify && window.Shopify.customerPrivacy; 755 756 if (!cp) { 757 return false; 758 } 759 760 var analyticsAllowed = 761 typeof cp.analyticsProcessingAllowed === 'function' && 762 cp.analyticsProcessingAllowed(); 763 764 var marketingAllowed = 765 typeof cp.marketingAllowed === 'function' && 766 cp.marketingAllowed(); 767 768 return analyticsAllowed && marketingAllowed; 769 } 770 771 function loadGTM() { 772 if (loaded || !hasTrackingConsent()) { 773 return; 774 } 775 776 loaded = true; 777 778 window.dataLayer.push({ 779 event: 'gtm.js', 780 'gtm.start': new Date().getTime() 781 }); 782 783 var firstScript = document.getElementsByTagName('script')[0]; 784 var script = document.createElement('script'); 785 script.async = true; 786 script.src = 'https://www.googletagmanager.com/gtm.js?id=' + GTM_ID; 787 firstScript.parentNode.insertBefore(script, firstScript); 788 } 789 790 function initConsentGate() { 791 loadGTM(); 792 document.addEventListener('visitorConsentCollected', loadGTM); 793 } 794 795 if (window.Shopify && typeof window.Shopify.loadFeatures === 'function') { 796 window.Shopify.loadFeatures( 797 [{ name: 'consent-tracking-api', version: '0.1' }], 798 function (error) { 799 if (!error) { 800 initConsentGate(); 801 } 802 } 803 ); 804 } else { 805 document.addEventListener('DOMContentLoaded', initConsentGate); 806 } 807 })(); 808 </script>
808<link href="//spinning.com/cdn/shop/t/33/assets/theme.css?v=82386135866397941461788585867" rel="stylesheet" type="text/css" media="all" /> 809 810<!-- BEGIN app block: shopify://apps/avada-seo-suite/blocks/avada-seo/15507c6e-1aa3-45d3-b698-7e175e033440 -->
810<script> 811 window.AVADA_SEO_ENABLED = true; 812</script>
812<!-- BEGIN app snippet: avada-seo-social --><meta property='og:site_name' content='Spinning Exercise Bikes'> 813<meta property='og:url' content='https://spinning.com/pages/contact-us'> 814<meta property='og:title' content='Contact Us | Spinning®'> 815<meta property='og:type' content='page'> 816<meta property='og:description' content='Our office will be closed on Monday, September 7, 2026, in observance of Labor Day. We will resume normal business hours on Tuesday, September 8, 2026. Need help finding a Spinning® Instructor Training? Want to learn more about the Spinning program for your gym or club? Need to access your online account? The Spinning'> 817<meta property='og:image' content='https://spinning.com/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1724340490&width=440'> 818 <meta property='og:image:secure_url' content='https://spinning.com/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1724340490&width=440'> 819 <meta name='twitter:image' content='https://spinning.com/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1724340490&width=440'> 820<meta name='twitter:site' content='@spinningexercisebikes'><meta name='twitter:card' content='summary_large_image'> 821<meta name='twitter:title' content='Contact Us | Spinning®'> 822<meta 823 name='twitter:description' 824 content='Our office will be closed on Monday, September 7, 2026, in observance of Labor Day. We will resume normal business hours on Tuesday, Sept...' 825> 826<!-- END app snippet --><!-- BEGIN app snippet: avada-blog-posts-and-article --><!-- END app snippet --><!-- BEGIN app snippet: avada-homepage --> 827 828 829 830
830<script type="application/ld+json"> 831 { 832 "@context": "https://schema.org", 833 "@type": "Organization", 834 "name": "Spinning, Mad Dogg Inc", 835 "description": "Home of the Spinning®, Peak Pilates®, CrossCore®, Ugi®, Resist-A-Ball® and Spin Fitness® brands, Mad Dogg Athletics® is the worldâs largest equipment-based education company.\n\nMad Dogg Athletics® has trained over 300,000 instructors and has reached millions of enthusiasts in over 80 countries worldwide through a network of over 35,000 fitness facilities. The company manufactures commercial and home Spinner® bikes, Pilates and functional training equipment, DVDs, and a complete line of Spinning®-branded apparel and accessories. Mad Dogg Athletics® has successfully registered their Spin® family of trademarks in over 80 countries.", 836 "image": "https:\/\/spinning.com\/cdn\/shop\/files\/SP_SpinMan_Wordmark_Wht_Low.png?v=1724340490\u0026width=440", 837 "url": "https:\/\/www.spinning.com", 838 "logo": "https:\/\/spinning.com\/cdn\/shop\/files\/SP_SpinMan_Wordmark_Wht_Low.png?v=1724340490\u0026width=440", 839 "email": "[email protected]","telephone": "(800) 847-7746", 840 "contactPoint": { 841 "@type": "ContactPoint", 842 "contactType": "Customer Support", 843 "telephone": "(800) 847-7746", 844 845 "email": "[email protected]" 846 }, 847 "sameAs": [ 848 849 "https:\/\/www.facebook.com\/Spinning" 850 , 851 852 "https:\/\/www.instagram.com\/spinninghq\/" 853 , 854 855 "https:\/\/www.youtube.com\/@spinning" 856 857 858 ] 859 } 860 </script>
860 861 862<!-- END app snippet --><!-- BEGIN app snippet: avada-product-and-collection --><!-- END app snippet --><!-- BEGIN app snippet: avada-frequently-asked-questions --> 863 864 865 866 867 868 869 870 871 872 873 874 875<!-- END app snippet --><!-- BEGIN app snippet: avada-seo-preload -->
875<script> 876 const ignore = ["\/cart","\/account"]; 877 window.FPConfig = { 878 delay: 0, 879 ignoreKeywords: ignore || ['/cart', '/account/login', '/account/logout', '/account'], 880 maxRPS: 3, 881 hoverDelay: 50 882 }; 883</script>
883 884 885 886
886<script type="lightJs" src="https://cdn.shopify.com/extensions/01a0c75c-b68f-70e6-838c-fbec76fe1b35/avada-seo-suite-291/assets/flying-pages.js" defer="defer"></script>
886 887<!-- END app snippet --><!-- BEGIN app snippet: avada-breadcrumb -->
887<script type='application/ld+json'> 888 { 889 "@context": "https://schema.org", 890 "@type": "BreadcrumbList", 891 "itemListElement": [ 892 { 893 "@type": "ListItem", 894 "position": 1, 895 "name": "Home", 896 "item": "https://spinning.com" 897 }, 898 { 899 "@type": "ListItem", 900 "position": 2, 901 "name": "Contact Us", 902 "item": "https://spinning.com/pages/contact-us" 903 }] 904} 905</script>
905<!-- END app snippet --><!-- BEGIN app snippet: avada-loading --><style> 906 @keyframes avada-rotate { 907 0% { transform: rotate(0); } 908 100% { transform: rotate(360deg); } 909 } 910 911 @keyframes avada-fade-out { 912 0% { opacity: 1; visibility: visible; } 913 100% { opacity: 0; visibility: hidden; } 914 } 915 916 .Avada-LoadingScreen { 917 display: none; 918 width: 100%; 919 height: 100vh; 920 top: 0; 921 position: fixed; 922 z-index: 9999; 923 display: flex; 924 align-items: center; 925 justify-content: center; 926 927 background-color: #F2F2F2; 928 929 } 930 931 .Avada-LoadingScreen svg { 932 animation: avada-rotate 1s linear infinite; 933 width: 75px; 934 height: 75px; 935 } 936</style>
937<script> 938 const themeId = Shopify.theme.id; 939 const loadingSettingsValue = {"enabled":true,"loadingColor":"#333333","bgColor":"#F2F2F2","waitTime":0,"durationTime":2,"loadingType":"circle","bgType":"color","sizeLoading":"75","displayShow":"first","bgImage":"","themeIds":[131346628669]}; 940 const loadingType = loadingSettingsValue?.loadingType; 941 function renderLoading() { 942 new MutationObserver((mutations, observer) => { 943 if (document.body) { 944 observer.disconnect(); 945 const loadingDiv = document.createElement('div'); 946 loadingDiv.className = 'Avada-LoadingScreen'; 947 if(loadingType === 'custom_logo' || loadingType === 'favicon_logo') { 948 const srcLoadingImage = loadingSettingsValue?.loadingImageUrl || loadingSettingsValue?.customLogoThemeIds?.[themeId] || ''; 949 if(srcLoadingImage) { 950 loadingDiv.innerHTML = ` 951 <img alt="Avada logo" height="600px" loading="eager" fetchpriority="high" 952 src="${srcLoadingImage}&width=600" 953 width="600px" /> 954 ` 955 } 956 } 957 if(loadingType === 'circle') { 958 loadingDiv.innerHTML = ` 959 <svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"> 960 <path d="M20 3.75C11.0254 3.75 3.75 11.0254 3.75 20C3.75 21.0355 2.91053 21.875 1.875 21.875C0.839475 21.875 0 21.0355 0 20C0 8.9543 8.9543 0 20 0C31.0457 0 40 8.9543 40 20C40 31.0457 31.0457 40 20 40C18.9645 40 18.125 39.1605 18.125 38.125C18.125 37.0895 18.9645 36.25 20 36.25C28.9748 36.25 36.25 28.9748 36.25 20C36.25 11.0254 28.9748 3.75 20 3.75Z" fill="#333333"/> 961 </svg> 962 `; 963 } 964 965 document.body.insertBefore(loadingDiv, document.body.firstChild || null); 966 const e = '2'; 967 const t = 'first'; 968 const o = 'first' === t; 969 const a = sessionStorage.getItem('isShowLoadingAvada'); 970 const n = document.querySelector('.Avada-LoadingScreen'); 971 if (a && o) return (n.style.display = 'none'); 972 n.style.display = 'flex'; 973 const i = document.body; 974 i.style.overflow = 'hidden'; 975 const l = () => { 976 i.style.overflow = 'auto'; 977 n.style.animation = 'avada-fade-out 1s ease-out forwards'; 978 setTimeout(() => { 979 n.style.display = 'none'; 980 }, 1000); 981 }; 982 if ((o && !a && sessionStorage.setItem('isShowLoadingAvada', true), 'duration_auto' === e)) { 983 window.onload = function() { 984 l(); 985 }; 986 return; 987 } 988 setTimeout(() => { 989 l(); 990 }, 1000 * e); 991 } 992 }).observe(document.documentElement, { childList: true, subtree: true }); 993 }; 994 function isNullish(value) { 995 return value === null || value === undefined; 996 } 997 const themeIds = '131346628669'; 998 const themeIdsArray = themeIds ? themeIds.split(',') : []; 999 1000 if(!isNullish(themeIds) && themeIdsArray.includes(themeId.toString()) && loadingSettingsValue?.enabled) { 1001 renderLoading(); 1002 } 1003 1004 if(isNullish(loadingSettingsValue?.themeIds) && loadingSettingsValue?.enabled) { 1005 renderLoading(); 1006 } 1007</script>
1007 1008<!-- END app snippet --> 1009<!-- END app block --><!-- BEGIN app block: shopify://apps/inbox/blocks/chat/841fc607-4181-4ad1-842d-e24d7f8bad6b --><link rel='modulepreload' href='https://cdn.shopify.com/storefront/web-components/chat.js' crossorigin fetchpriority='low'> 1010
1011<script id='shopify-chat-app-embed-data' type='application/json'> 1012 { 1013 "settings": { 1014 "invertActivatorColors": false, 1015 "greetingMessage": "", 1016 "showFeaturedProducts": true, 1017 "featuredProducts": [], 1018 "horizontalPosition": "bottom_right", 1019 "icon": "chat_bubble", 1020 "buttonLabel": "Need help?" 1021 } 1022 } 1023</script>
1023 1024 1025<style data-shopify> 1026 1027 1028 /* Shadow DOM content does not prevent theme-wide :empty rules from matching the host. */ 1029 shopify-chat:defined:empty { 1030 display: grid; 1031 } 1032 1033 :root { 1034 --shopify-chat-bg-color: #ffffff; 1035 --shopify-chat-text-color: #000000; 1036 --shopify-chat-accent-bg-color: #000000; 1037 --shopify-chat-accent-text-color: #ffffff; 1038 --shopify-chat-activator-offset: 120px; 1039 1040 1041 1042 --shopify-chat-activator-font-size: 16px; 1043 --shopify-chat-border-radius: 0px; 1044 } 1045 1046 1047</style> 1048
1049<script src='https://cdn.shopify.com/storefront/web-components/chat.js' type='module' crossorigin fetchpriority='low' async></script>
1049 1050 1051 1052<!-- END app block --><!-- BEGIN app block: shopify://apps/meteor-mega-menu/blocks/app_embed/9412d6a7-f8f8-4d65-b9ae-2737c2f0f45b --> 1053 1054 1055
1055<script> 1056 window.MeteorMenu = { 1057 // These will get handled by the Meteor class constructor 1058 registeredCallbacks: [], 1059 api: { 1060 on: (eventName, callback) => { 1061 window.MeteorMenu.registeredCallbacks.push([eventName, callback]); 1062 } 1063 }, 1064 revisionFileUrl: "\/\/spinning.com\/cdn\/shop\/files\/meteor-mega-menus.json?v=5593663671311854686", 1065 storefrontAccessToken: "a577edc407db0cd40f55fc2d5e519ee7", 1066 localeRootPath: "\/", 1067 languageCode: "en".toUpperCase(), 1068 countryCode: "US", 1069 shop: { 1070 domain: "spinning.com", 1071 permanentDomain: "0e243e-e9.myshopify.com", 1072 moneyFormat: "${{amount}}", 1073 currency: "USD" 1074 }, 1075 options: { 1076 desktopSelector: "", 1077 mobileSelector: "", 1078 disableDesktop: false, 1079 disableMobile: false, 1080 navigationLinkSpacing: 16, 1081 navigationLinkCaretStyle: "outline", 1082 menuDisplayAnimation: "none", 1083 menuCenterInViewport: false, 1084 menuVerticalOffset: 10, 1085 menuVerticalPadding: 0, 1086 menuJustifyContent: "flex-start", 1087 menuFontSize: 15, 1088 menuFontWeight: "400", 1089 menuTextTransform: "none", 1090 menuDisplayAction: "hover", 1091 menuDisplayDelay: "0", 1092 externalLinksInNewTab: "true", 1093 mobileBreakpoint: 0, 1094 addonsEnabled: false 1095 } 1096 } 1097 </script>
1097 1098 1099<style data-app-injected='MeteorMenu'> 1100 1101 </style><!-- END app block --><!-- BEGIN app block: shopify://apps/redirect-hero/blocks/live-redirect/303f77a4-ad21-4d11-82f8-47eb94136aff -->
1101<script> 1102 const liveRedirectActive = false; 1103</script>
1103 1104 1105<!-- END app block --><!-- BEGIN app block: shopify://apps/pagefly-ai-page-builder/blocks/app-embed/83e179f7-59a0-4589-8c66-c0dddf959200 --> 1106 1107<!-- BEGIN app snippet: pagefly-cro-ab-testing-main --> 1108 1109 1110 1111 1112 1113 1114
1115<script> 1116 ;(function () { 1117 const url = new URL(window.location) 1118 const viewParam = url.searchParams.get('view') 1119 if (viewParam && viewParam.includes('variant-pf-')) { 1120 url.searchParams.set('pf_v', viewParam) 1121 url.searchParams.delete('view') 1122 window.history.replaceState({}, '', url) 1123 } 1124 })() 1125</script>
1125 1126 1127 1128
1129<script type='module'> 1130 1131 window.PAGEFLY_CRO = window.PAGEFLY_CRO || {} 1132 1133 window.PAGEFLY_CRO['data_debug'] = { 1134 original_template_suffix: "", 1135 allow_ab_test: false, 1136 ab_test_start_time: 0, 1137 ab_test_end_time: 0, 1138 today_date_time: 1790241069000, 1139 } 1140 window.PAGEFLY_CRO['GA4'] = { enabled: false} 1141</script>
1141 1142 1143<!-- END app snippet --> 1144 1145 1146 1147 1148 1149 1150 1151 1152
1152<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-helper.js' defer='defer'></script>
1152 1153 1154
1154<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-general-helper.js' defer='defer'></script>
1154 1155 1156
1156<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-snap-slider.js' defer='defer'></script>
1156 1157 1158
1158<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-slideshow-v3.js' defer='defer'></script>
1158 1159 1160
1160<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-slideshow-v4.js' defer='defer'></script>
1160 1161 1162
1162<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-glider.js' defer='defer'></script>
1162 1163 1164
1164<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-slideshow-v1-v2.js' defer='defer'></script>
1164 1165 1166
1166<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-product-media.js' defer='defer'></script>
1166 1167 1168
1168<script src='https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-product.js' defer='defer'></script>
1168 1169 1170
1171<script id='pagefly-helper-data' type='application/json'> 1172 { 1173 "page_optimization": { 1174 "assets_prefetching": false 1175 }, 1176 "elements_asset_mapper": { 1177 "Accordion": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-accordion.js", 1178 "Accordion3": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-accordion3.js", 1179 "CountDown": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-countdown.js", 1180 "GMap1": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-gmap.js", 1181 "GMap2": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-gmap.js", 1182 "GMapBasicV2": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-gmap.js", 1183 "GMapAdvancedV2": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-gmap.js", 1184 "HTML.Video": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-htmlvideo.js", 1185 "HTML.Video2": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-htmlvideo2.js", 1186 "HTML.Video3": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-htmlvideo2.js", 1187 "BackgroundVideo": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-htmlvideo2.js", 1188 "Instagram": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-instagram.js", 1189 "Instagram2": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-instagram.js", 1190 "Insta3": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-instagram3.js", 1191 "Tabs": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-tab.js", 1192 "Tabs3": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-tab3.js", 1193 "ProductBox": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-cart.js", 1194 "FBPageBox2": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-facebook.js", 1195 "FBLikeButton2": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-facebook.js", 1196 "TwitterFeed2": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-twitter.js", 1197 "Paragraph4": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-paragraph4.js", 1198 1199 "AliReviews": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1200 "BackInStock": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1201 "GloboBackInStock": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1202 "GrowaveWishlist": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1203 "InfiniteOptionsShopPad": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1204 "InkybayProductPersonalizer": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder
1204-358/assets/pagefly-3rd-elements.js", 1205 "LimeSpot": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1206 "Loox": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1207 "Opinew": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1208 "Powr": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1209 "ProductReviews": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1210 "PushOwl": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1211 "ReCharge": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1212 "Rivyo": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1213 "TrackingMore": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1214 "Vitals": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js", 1215 "Wiser": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-3rd-elements.js" 1216 }, 1217 "custom_elements_mapper": { 1218 "pf-click-action-element": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-click-action-element.js", 1219 "pf-dialog-element": "https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-dialog-element.js" 1220 } 1221 } 1222</script>
1222 1223
1224<script id='pagefly-heatmap-config' type='application/json'> 1225 {"version":4,"enabled_page_ids":["33baf00e-a4e5-441c-8d61-8800fe01a5e7","28ca8394-2d60-4bdb-b530-2fca644609a3"],"tracking_paused":false,"pause_reason":null,"paused_until":null} 1226</script>
vendor: 1 bytes, line 1226
1226
1227<script> 1228 (function () { 1229 var el = document.getElementById('pagefly-heatmap-config') 1230 if (!el) { window.__pagefly_heatmap_config__ = {}; return } 1231 try { 1232 window.__pagefly_heatmap_config__ = JSON.parse(el.textContent || '{}') || {} 1233 } catch (e) { 1234 window.__pagefly_heatmap_config__ = {} 1235 } 1236 })() 1237</script>
vendor: 1 bytes, line 1237
1237
1238<script> 1239 // Heatmap overlay loader. Three gates, all of them cheap, none of them trusting the URL: 1240 // the visitor must have arrived on a pf_heatmap link, the SERVER must have published an 1241 // overlay path in the metafield, and this page must already be one the merchant enabled 1242 // tracking for. The last gate is what stops a crafted link pulling the asset onto an 1243 // arbitrary storefront page. Everything else is decided inside the asset, and by the server. 1244 (function () { 1245 var cfg = window.__pagefly_heatmap_config__ || {} 1246 var id = (window.__pagefly_page_setting__ || {}).pageId 1247 if (!/[#&]pf_heatmap=/.test(window.location.hash || '')) return 1248 if (!cfg.overlay_data_path || !Array.isArray(cfg.enabled_page_ids)) return 1249 if (!id || cfg.enabled_page_ids.indexOf(id) === -1) return 1250 var s = document.createElement('script') 1251 s.src = 'https://cdn.shopify.com/extensions/01a0cd11-9bda-742e-87f0-b3e83c926dd7/pagefly-ai-page-builder-358/assets/pagefly-heatmap-overlay.js' 1252 s.defer = true 1253 document.head.appendChild(s) 1254 })() 1255</script>
1255 1256 1257<!-- BEGIN app snippet: pf-ai-schema --> 1258<!-- END app snippet --> 1259 1260 1261<!-- END app block -->
1261<script src="https://cdn.shopify.com/extensions/01a0acae-48ed-764e-9b04-878137b134ab/cartbite-83/assets/cartbite-embed.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1261
1261
1262<script src="https://cdn.shopify.com/extensions/01a0d027-6243-7586-9855-c6f857ae9fdc/forms-2592/assets/shopify-forms-loader.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1262
1262
1263<script src="https://cdn.shopify.com/extensions/01a08d54-a946-7eac-89b2-553c57f88a9e/bacon-menu-37/assets/meteor-menu.js" type="text/javascript" defer="defer"></script>
1263 1264<link href="https://cdn.shopify.com/extensions/01a08d54-a946-7eac-89b2-553c57f88a9e/bacon-menu-37/assets/meteor-menu.css" rel="stylesheet" type="text/css" media="all">
1265<script src="https://cdn.shopify.com/extensions/019ef41e-29ec-721d-b2dc-bf0b0e51a16d/redirect-hero-39/assets/live-redirect.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1265
1265
1266<script src="https://cdn.shopify.com/extensions/c1eb4680-ad4e-49c3-898d-493ebb06e626/affirm-pay-over-time-messaging-9/assets/affirm-cart-drawer-embed-handler.js" type="text/javascript" defer="defer"></script>
1266 1267<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1268<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 59803303997,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1268
1268
1269<script> 1270 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 1271</script>
vendor: 1 bytes, line 1271
1271
1272<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1272).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 59803303997,storefrontBaseUrl: "https://spinning.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://spinning.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["16072cab","8450a54b"],webPixelsConfigList: [{"id":"1267499069","configuration":"{\"appProxyPath\":\"\/apps\/pagefly\",\"analyticsEndpoint\":\"undefined\/analytics-v2\/events\",\"focusDuration\":\"3\",\"enableAdvancedTracking\":\"true\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1e023fb0c721518c0dce4129e4d87a86","type":"APP","apiClientId":1743893,"privacyPurposes":["ANALYTICS","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
1272,{"id":"1182892093","configuration":"{\"mailchimp_store_id\":\"store_38uvzqendcsarleywhto\", \"mailchimp_user_id\":\"55880117\",\"mailchimp_list_id\":\"5fedc3a41b\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e357a49eadeb6216a959d63fa3fb8f55","type":"APP","apiClientId":2585307,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"941064253","configuration":"{\"projectId\":\"tqqx7ik4tz\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"744357949","configuration":"{\"accountID\":\"59803303997\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c5ace3fbba69e45557ba03e81d7e2970","type":"APP","apiClientId":5263155,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"727318589","configuration":"{\"accountID\":\"0e243e-e9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4f82d0323b06a4642fbff9b42c9979eb","type":"APP","apiClientId":12388204545,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"705396797","configuration":"{\"myshopifyDomain\":\"0e243e-e9.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"23b97d18e2aa74363140dc29c9284e87","type":"APP","apiClientId":2775569,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"541130813","configuration":"{\"pixel_id\":\"1833103896917920\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"530513981","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"AW-1069414906\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-D7CZZ970PJ\\\",\\\"AW-1069414906\\\/yHVwCPzOi6caEPrz9_0D\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-D7CZZ970PJ\\\",\\\"AW-1069414906\\\/I-4MCPDOi6caEPrz9_0D\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-D7CZZ970PJ\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-D7CZZ970PJ\\\",\\\"AW-1069414906\\\/XhnhCPnOi6caEPrz9_0D\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-D7CZZ970PJ\\\",\\\"AW-1069414906\\\/KtQbCO3Oi6caEPrz9_0D\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-D7CZZ970PJ\\\"},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-D7CZZ970PJ\\\",\\\"AW-1069414906\\\/vffbCPbOi6caEPrz9_0D\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-D7CZZ970PJ\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-D7CZZ970PJ\\\",\\\"AW-1069414906\\\/ZNnkCP_Oi6caEPrz9_0D\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-D7CZZ970PJ\\\",\\\"AW-1069414906\\\/gkrPCPPOi6caEPrz9_0D\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-D7CZZ970PJ\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]}
1272,{"id":"141918269","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"OpenAI Ads Spinning US"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Spinning","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"0e243e-e9.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/spinning.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://spinning.com/cdn","c8540278we853e1abpb62b2c4amde256306",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"141411516477","themeStoreId":"1190","themePublished":"true","eventMetadataId":"17da0806-b697-455e-9539-613e74800aa9","pageType":"page","resourceId":"94483382333","shopId":"59803303997","storefrontBaseUrl":"https:\/\/spinning.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"c8540278we853e1abpb62b2c4amde256306","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
1272<script> 1273 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 1274 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 1275 window.ShopifyAnalytics.meta.currency = 'USD'; 1276 var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":94483382333,"requestId":"296c91a9-8d2c-4903-9c9b-46a9fd01f571-1790241069"}}; 1277 for (var attr in meta) { 1278 window.ShopifyAnalytics.meta[attr] = meta[attr]; 1279 } 1280</script>
vendor: 1 bytes, line 1280
1280
1281<script class="analytics"> 1282 (function () { 1283 var customDocumentWrite = function(content) { 1284 var jquery = null; 1285 1286 if (window.jQuery) { 1287 jquery = window.jQuery; 1288 } else if (window.Checkout && window.Checkout.$) { 1289 jquery = window.Checkout.$; 1290 } 1291 1292 if (jquery) { 1293 jquery('body').append(content); 1294 } 1295 }; 1296 1297 var hasLoggedConversion = function(token) { 1298 if (token) { 1299 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 1300 } 1301 return false; 1302 } 1303 1304 var setCookieIfConversion = function(token) { 1305 if (token) { 1306 var twoMonthsFromNow = new Date(Date.now()); 1307 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 1308 1309 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 1310 } 1311 } 1312 1313 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 1314 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 1315 if (trekkie.integrations) { 1316 return; 1317 } 1318 trekkie.methods = [ 1319 'identify', 1320 'page', 1321 'ready', 1322 'track', 1323 'trackForm', 1324 'trackLink' 1325 ]; 1326 trekkie.factory = function(method) { 1327 return function() { 1328 var args = Array.prototype.slice.call(arguments); 1329 args.unshift(method); 1330 trekkie.push(args); 1331 if (method == 'track' || method == 'page') { 1332 try { 1333 if (window.__TREKKIE_SHIM_QUEUE == null) { 1334 window.__TREKKIE_SHIM_QUEUE = []; 1335 } 1336 window.__TREKKIE_SHIM_QUEUE.push({ 1337 from: 'trekkie-stub', 1338 method: method, 1339 args: args.slice(1) 1340 }); 1341 } catch (e) { 1342 // no-op 1343 } 1344 } 1345 return trekkie; 1346 }; 1347 }; 1348 for (var i = 0; i < trekkie.methods.length; i++) { 1349 var key = trekkie.methods[i]; 1350 trekkie[key] = trekkie.factory(key); 1351 } 1352 trekkie.load = function(config) { 1353 trekkie.config = config || {}; 1354 trekkie.config.initialDocumentCookie = document.cookie; 1355 var first = document.getElementsByTagName('script')[0]; 1356var script = document.createElement('script'); 1357script.type = 'text/javascript'; 1358script.onerror = function(e) { 1359 var scriptFallback = document.createElement('script'); 1360 scriptFallback.type = 'text/javascript'; 1361 scriptFallback.onerror = function(error) { 1362 var Monorail = { 1363 produce: function produce(monorailDomain, schemaId, payload) { 1364 var currentMs = new Date().getTime(); 1365 var event = { 1366 schema_id: schemaId, 1367 payload: payload, 1368 metadata: { 1369 event_created_at_ms: currentMs, 1370 event_sent_at_ms: currentMs 1371 } 1372 }; 1373 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 1374 }, 1375 sendRequest: function sendRequest(endpointUrl, payload) { 1376 // Try the sendBeacon API 1377 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 1378 var blobData = new window.Blob([payload], { 1379 type: 'text/plain' 1380 }); 1381 1382 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 1383 return true; 1384 } // sendBeacon was not successful 1385 1386 } // XHR beacon 1387 1388 var xhr = new XMLHttpRequest(); 1389 1390 try { 1391 xhr.open('POST', endpointUrl); 1392 xhr.setRequestHeader('Content-Type', 'text/plain'); 1393 xhr.send(payload); 1394 } catch (e) { 1395 console.log(e); 1396 } 1397 1398 return false; 1399 }, 1400 isIos12: function isIos12() { 1401 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 1402 } 1403 }; 1404 Monorail.produce('monorail-edge.shopifysvc.com', 1405 'trekkie_storefront_load_errors/1.1', 1406 {shop_id: 59803303997, 1407 theme_id: 141411516477, 1408 app_name: "storefront", 1409 context_url: window.location.href, 1410 source_url: "//spinning.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js"}); 1411 1412 }; 1413 scriptFallback.async = true; 1414 scriptFallback.src = '//spinning.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js'; 1415 first.parentNode.insertBefore(scriptFallback, first); 1416}; 1417script.async = true; 1418script.src = '//spinning.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js'; 1419first.parentNode.insertBefore(script, first); 1420 1421 }; 1422 trekkie.load( 1423 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":59803303997,"isMerchantRequest":null,"themeId":141411516477,"themeCityHash":"3520414825164924074","contentLanguage":"en","currency":"USD","eventMetadataId":"17da0806-b697-455e-9539-613e74800aa9"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 1424 ); 1425 1426 var loaded = false;
1427 trekkie.ready(function() { 1428 if (loaded) return; 1429 loaded = true; 1430 1431 window.ShopifyAnalytics.lib = window.trekkie; 1432 1433 var originalDocumentWrite = document.write; 1434 document.write = customDocumentWrite; 1435 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 1436 document.write = originalDocumentWrite; 1437 1438 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 1439 var token = match? match[1]: undefined; 1440 if (!hasLoggedConversion(token)) { 1441 setCookieIfConversion(token); 1442 1443 } 1444 }); 1445 1446 window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":94483382333,"requestId":"296c91a9-8d2c-4903-9c9b-46a9fd01f571-1790241069","shopifyEmitted":true}); 1447 1448 var eventsListenerScript = document.createElement('script'); 1449 eventsListenerScript.async = true; 1450 eventsListenerScript.src = "//spinning.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 1451 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 1452})();</script>
vendor: 1 bytes, line 1452
1452
1453<script 1454 defer 1455 src="https://spinning.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 1456 data-application="storefront-renderer" 1457 data-shop-id="59803303997" 1458 data-render-region="gcp-us-central1" 1459 data-page-type="page" 1460 data-theme-instance-id="141411516477" 1461 data-theme-name="Impact" 1462 data-theme-version="6.5.0" 1463 data-monorail-region="shop_domain" 1464 data-resource-timing-sampling-rate="10" 1465 data-shs="true" 1466 data-shs-beacon="true" 1467 data-shs-export-with-fetch="true" 1468 data-shs-logs-sample-rate="1" 1469 data-shs-beacon-endpoint="https://spinning.com/api/collect" 1470></script>
vendor: 1 bytes, line 1470
1470
1471<script id="shopify-chat-page-data" type="application/json">{"greetingMessage":"Welcome to Spinning. How can I help?","customerServiceEmail":"[email protected]","onlineStorePasswordProtected":false,"translations":[{"key":"agent_chat.panel.open_chat","value":"Open chat"},{"key":"agent_chat.panel.ask_anything","value":"Ask anything"},{"key":"agent_chat.panel.title","value":"Storekick"},{"key":"agent_chat.panel.unread_replies","value":"Unread replies"},{"key":"agent_chat.panel.back_to_chat","value":"Back to chat"},{"key":"agent_chat.panel.see_history","value":"See chat history"},{"key":"agent_chat.panel.new_chat","value":"Create a new chat"},{"key":"agent_chat.panel.close","value":"Close chat"},{"key":"agent_chat.panel.undock","value":"Undock chat"},{"key":"agent_chat.panel.dock","value":"Dock chat"},{"key":"agent_chat.panel.expand","value":"Expand chat"},{"key":"agent_chat.panel.contract","value":"Contract chat"},{"key":"agent_chat.panel.jump_to_latest","value":"Jump to latest"},{"key":"agent_chat.panel.loading_chat","value":"Loading chat"},{"key":"agent_chat.input.label","value":"Type your message"},{"key":"agent_chat.input.placeholder","value":"Ask anything..."},{"key":"agent_chat.input.send","value":"Send"},{"key":"agent_chat.input.stop","value":"Stop generating"},{"key":"agent_chat.thinking","value":"Thinking..."},{"key":"agent_chat.first_response_delayed","value":"Agent is taking longer to respondâ¦"},{"key":"agent_chat.searching","value":"Searching..."},{"key":"agent_chat.message.sent_timestamp","value":"Sent · {{time}}"},{"key":"agent_chat.message.automated_label","value":"Automated"},{"key":"agent_chat.message.automated_timestamp","value":"Automated · {{time}}"},{"key":"agent_chat.liveAgentHandoff","value":"Someone from our team will be with you shortly"},{"key":"agent_chat.human_handoff.action","value":"Chat with our team"},{"key":"agent_chat.human_handoff.request","value":"Iâd like to talk to someone from your team"},{"key":"agent_chat.human_handoff.ai_assistant","value":"AI assistant"},{"key":"agent_chat.greeting.default","value":"Hi there!"},{"key":"agent_chat.greeting.with_name","value":"Hi {{name}}!"},{"key":"agent_chat.greeting.welcome","value":"You can ask questions about shopping, sizing\/dimensions, shipping, returns, or order status."},{"key":"agent_chat.greeting.welcome_back","value":"Welcome back to %{shop_name}! How can I help?"},{"key":"agent_chat.greeting.welcome_back_no_shop","value":"Welcome back! How can I help?"},{"key":"agent_chat.greeting.welcome_to_shop","value":"Welcome to %{shop_name}. How can I help?"},{"key":"agent_chat.greeting.generic","value":"How can I help?"},{"key":"agent_chat.disclaimer.text","value":"This chat is powered by AI from Shopify and may make mistakes. Your messages are visible to {{shop_name}}. See"},{"key":"agent_chat.disclaimer.text_human","value":"Your messages are visible to {{shop_name}} and to Shopify for the provision and improvement of the services. See"},{"key":"agent_chat.disclaimer.link_text","value":"privacy policy"},{"key":"agent_chat.error.response_unavailable","value":"Response unavailable"},{"key":"agent_chat.error.generic","value":"Something went wrong."},{"key":"agent_chat.error.response_failed","value":"Couldnât load this message"},{"key":"agent_chat.error.message_send_failed","value":"Your message couldnât be sent"},{"key":"agent_chat.error.attachment_upload_failed","value":"Your attachment didnât upload"},{"key":"agent_chat.error.first_response_stalled","value":"Agent couldnât respond"},{"key":"agent_chat.error.try_again","value":"Try again"},{"key":"agent_chat.error.unavailable","value":"Chat isn't available right now - try again later"},{"key":"agent_chat.error.usage_limit","value":"Message limit reached â try again later or email us at {{email}}"},{"key":"agent_chat.error.usage_limit_no_email","value":"Message limit reached â try again later"},{"key":"agent_chat.error.cost_quota_unhandled","value":"Chat isnât available right nowâemail us at {{email}}"},{"key":"agent_chat.error.cost_quota_unhandled_no_email","value":"Chat isnât available right now"},{"key":"agent_chat.error.cost_quota_handover","value":"AI assistant isnât available right now â our team will reply shortly"},{"key":"agent_chat.history.heading","value":"Chat history"},{"key":"agent_chat.history.loading","value":"Loading conversation history"},{"key":"agent_chat.history.aria_label","value":"Conversation history"},{"key":"agent_chat.history.no_conversations","value":"No conversations"},{"key":"agent_chat.history.conversation.one","value":"conversation"},{"key":"agent_chat.history.conversation.other","value":"conversations"},{"key":"agent_chat.history.error_message","value":"Something went wrong."},{"key":"agent_chat.history.try_again","value":"Try again"},{"key":"agent_chat.history.no_past","value":"No past conversations"},{"key":"agent_chat.history.start_new","value":"Start a new chat"},{"key":"agent_chat.history.untitled","value":"Untitled conversation"},{"key":"agent_chat.history.resume","value":"Resume: {{title}}"},{"key":"agent_chat.history.resume_with_time","value":"Resume: {{title}}, {{time}}"},{"key":"agent_chat.history.delete","value":"Delete conversation: {{title}}"},{"key":"agent_chat.history.delete_failed","value":"Could not delete conversation"},{"key":"agent_chat.feedback.group_label","value":"Message feedback"},{"key":"agent_chat.feedback.thumbs_up","value":"Thumbs up"},{"key":"agent_chat.feedback.thumbs_down","value":"Thumbs down"},{"key":"agent_chat.feedback.add_comment","value":"Add comment"},{"key":"agent_chat.feedback.thanks","value":"Thanks for your feedback"},{"key":"agent_chat.feedback.placeholder_up","value":"Tell us what went well"},{"key":"agent_chat.feedback.placeholder_down","value":"Tell us what could have been better"},{"key":"agent_chat.feedback.comment_label","value":"Feedback comment"},{"key":"agent_chat.feedback.cancel","value":"Cancel"},{"key":"agent_chat.feedback.submit","value":"Submit"},{"key":"agent_chat.feedback.character_count","value":"{{current}}\/{{max}}"},{"key":"agent_chat.feedback.character_limit_reached","value":"Maximum length reached. Feedback is limited to {{max}} characters."},{"key":"agent_chat.buyer_profile.button.open","value":"Buyer Profile"},{"key":"agent_chat.buyer_profile.title","value":"Buyer Profile"},{"key":"agent_chat.buyer_profile.empty","value":"No buyer profile available."},{"key":"agent_chat.buyer_profile.close","value":"Close"},{"key":"agent_chat.suggestions.empty_state_label","value":"Suggested questions"},{"key":"agent_chat.suggestions.quick_reply_label","value":"Suggested replies"},{"key":"agent_chat.auth.sign_in_to_continue","value":"Sign in to continue"},{"key":"agent_chat.auth.sign_in","value":"Sign in"},{"key":"agent_chat.auth.skip_and_chat","value":"Skip and start chatting"},{"key":"agent_chat.auth.pre_chat_title","value":"Sign in to personalize and save your chats"},{"key":"agent_chat.auth.pre_chat_subtitle","value":"Sign in or create an account"},{"key":"agent_chat.auth.staff_chat_required_title","value":"Don't miss a reply"},{"key":"agent_chat.auth.staff_chat_required_subtitle","value":"Sign in to chat with our team. We'll email you if you leave the chat."},{"key":"agent_chat.auth.share_disclaimer","value":"By continuing, Shop will share your name and email with this store. See their {{terms_link}} and {{privacy_link}}"},{"key":"agent_chat.auth.terms_link","value":"terms"},{"key":"agent_chat.auth.privacy_link","value":"privacy policy"},{"key":"agent_chat.auth.declined_pre_chat","value":"I canât connect you with the store unless you sign in."},{"key":"agent_chat.reply_by_email.continuation_prompt","value":"If you leave the chat, weâll email you when thereâs a reply."},{"key":"agent_chat.reply_by_email.sign_in_prompt","value":"Sign in to get emailed when thereâs a reply."},{"key":"agent_chat.order_lookup.track_order","value":"Track my order"},{"key":"agent_chat.order_lookup.track_another_order","value":"Track another order"},{"key":"agent_chat.order_lookup.new_conversation","value":"New conversation"},{"key":"agent_chat.order_lookup.follow_up_label","value":"Order lookup actions"},{"key":"agent_chat.order_lookup.enter_order_information","value":"Enter order information"},{"key":"agent_chat.order_lookup.prompt","value":"To see your order status, please provide your order details."},{"key":"agent_chat.order_lookup.form_title","value":"Track my order"},{"key":"agent_chat.order_lookup.form_subtitle","value":"Please provide your information."},{"key":"agent_chat.order_lookup.order_number_label","value":"Order number"},{"key":"agent_chat.order_lookup.email_label","value":"Email address"},{"key":"agent_chat.order_lookup.submit","value":"Track my order"},{"key":"agent_chat.order_lookup.cancel","value":"Cancel"},{"key":"agent_chat.order_lookup.invalid_order_number","value":"Please enter a valid order number with only numbers and letters, no spaces (e.g. 1006)."},{"key":"agent_chat.order_lookup.invalid_order_number_whitespace","value":"Please enter a valid order number with only numbers and letters, no spaces (e.g. 1006)."},{"key":"agent_chat.order_lookup.invalid_email","value":"Please enter a valid email address"},{"key":"agent_chat.order_lookup.generic_error","value":"There was a problem looking up your order. Please try again."},{"key":"agent_chat.order_lookup.rate_limited_error","value":"Too many attempts. Try again later."},{"key":"agent_chat.order_lookup.locked_composer_status","value":"Order lookup is in progress. Start a new conversation to ask something else."},{"key":"agent_chat.legacy_contact.form_title","value":"Before we get started"},{"key":"agent_chat.legacy_contact.form_subtitle","value":"Please provide your information so we can reply to you if you leave the chat."},{"key":"agent_chat.legacy_contact.first_name_label","value":"First name"},{"key":"agent_chat.legacy_contact.last_name_label","value":"Last name"},{"key":"agent_chat.legacy_contact.email_label","value":"Email"},{"key":"agent_chat.legacy_contact.marketing_opt_in","value":"Email me with news and offers"},{"key":"agent_chat.legacy_contact.submit","value":"Start chat"},{"key":"agent_chat.legacy_contact.cancel","value":"Cancel"}
1471,{"key":"agent_chat.legacy_contact.invalid_first_name","value":"Enter a valid first name."},{"key":"agent_chat.legacy_contact.invalid_last_name","value":"Enter a valid last name."},{"key":"agent_chat.legacy_contact.invalid_email","value":"Enter a valid email address."},{"key":"agent_chat.legacy_contact.invalid_email_length","value":"Email address is too long."},{"key":"agent_chat.legacy_contact.generic_error","value":"Something went wrong."},{"key":"agent_chat.legacy_contact.rate_limited_error","value":"Too many attempts. Try again later."},{"key":"agent_chat.discountCard.useDiscount","value":"Use discount"},{"key":"agent_chat.discountCard.discountApplicationContext","value":"Applies automatically at checkout"},{"key":"agent_chat.cart.checkout","value":"Checkout"},{"key":"agent_chat.product.add_to_cart","value":"Add to cart"},{"key":"agent_chat.product.view_details","value":"View details"},{"key":"agent_chat.product.out_of_stock","value":"Out of stock"},{"key":"agent_chat.product.compare_suggestions","value":"Compare suggestions"},{"key":"agent_chat.product.hide_suggestions","value":"Hide suggestions"},{"key":"agent_chat.product.sold_out","value":"Sold out"},{"key":"agent_chat.order.item.one","value":"item"},{"key":"agent_chat.order.item.other","value":"items"},{"key":"agent_chat.order.less_items.one","value":"- hide {{count}} item"},{"key":"agent_chat.order.less_items.other","value":"- hide {{count}} items"},{"key":"agent_chat.order.more_items.one","value":"+ {{count}} more item"},{"key":"agent_chat.order.more_items.other","value":"+ {{count}} more items"},{"key":"agent_chat.order.view_order","value":"View order {{orderId}}"},{"key":"agent_chat.order.track_shipment","value":"Track shipment"},{"key":"agent_chat.order.of_total","value":"{{index}} of {{total}}"},{"key":"agent_chat.order.label","value":"Order {{number}}"},{"key":"agent_chat.order.count.one","value":"{{count}} Order"},{"key":"agent_chat.order.count.other","value":"{{count}} Orders"},{"key":"agent_chat.order.ordered_on","value":"Ordered {{date}}"},{"key":"agent_chat.order.select","value":"Select order {{number}}"},{"key":"agent_chat.return.heading","value":"Select items to return"},{"key":"agent_chat.return.toggle_item","value":"Select {{name}}"},{"key":"agent_chat.return.select_item_non_returnable","value":"{{name}}, not returnable"},{"key":"agent_chat.return.quantity_label","value":"Return quantity"},{"key":"agent_chat.return.reason_label","value":"Reason for return"},{"key":"agent_chat.return.reason_placeholder","value":"Select a reason"},{"key":"agent_chat.return.confirm","value":"Request return"},{"key":"agent_chat.return.confirmed","value":"Return requested"},{"key":"agent_chat.return.reason.size_too_small","value":"Size too small"},{"key":"agent_chat.return.reason.size_too_large","value":"Size too large"},{"key":"agent_chat.return.reason.unwanted","value":"Unwanted"},{"key":"agent_chat.return.reason.not_as_described","value":"Not as described"},{"key":"agent_chat.return.reason.wrong_item","value":"Wrong item"},{"key":"agent_chat.return.reason.defective","value":"Defective"},{"key":"agent_chat.return.reason.style","value":"Style"},{"key":"agent_chat.return.reason.color","value":"Color"},{"key":"agent_chat.return.reason.other_reason","value":"Other"},{"key":"agent_chat.scroll.previous","value":"Previous"},{"key":"agent_chat.scroll.next","value":"Next"}]}</script>
vendor: 1 bytes, line 1471
1471
1472<script id="shopify-customer-account-data" type="application/json">{"customer":null,"shop":{"id":"59803303997","customerAccountTranslations":[{"key":"account_menu.signed_out_state.sheet_title","value":"Sign in or create account"},{"key":"account_menu.signed_out_state.section_divider","value":"More ways to sign in"},{"key":"account_menu.signed_out_state.alternate_divider","value":"OR"},{"key":"account_menu.signed_out_state.email_field_label","value":"Email"},{"key":"account_menu.signed_out_state.orders_button","value":"Orders"},{"key":"account_menu.signed_out_state.profile_button","value":"Profile"},{"key":"account_menu.signed_out_state.shop_login_button","value":"Sign in with Shop"},{"key":"account_menu.signed_out_state.continue_with_google","value":"Continue with Google"},{"key":"account_menu.signed_out_state.continue_with_facebook","value":"Continue with Facebook"},{"key":"account_menu.signed_out_state.marketing_consent_label","value":"Email me with news and offers"},{"key":"account_menu.signed_in_state.greeting_with_name","value":"Hi, {{first_name}}"},{"key":"account_menu.signed_in_state.greeting_without_name","value":"Account"},{"key":"account_menu.signed_in_state.orders_button","value":"Orders"},{"key":"account_menu.signed_in_state.profile_button","value":"Profile"},{"key":"account_menu.location_picker.sheet_title","value":"Locations"},{"key":"account_menu.location_picker.search_field_placeholder","value":"Search"},{"key":"account_menu.aria_labels.close_menu","value":"Close menu"},{"key":"account_menu.aria_labels.back_to_main_menu","value":"Back to main menu from {{title}}"},{"key":"account_menu.aria_labels.open_submenu","value":"{{title}}, opens submenu"},{"key":"account_menu.aria_labels.loading_menu","value":"Loading menu"},{"key":"account_menu.aria_labels.account","value":"Account"},{"key":"account_menu.aria_labels.sign_in_with_email","value":"Sign in with email"},{"key":"account_menu.aria_labels.sign_in","value":"Sign in"}],"socialLoginProviders":[{"handle":"Shop"}],"legacyCustomerAccounts":false,"signInLinksVisible":true,"b2bEnabled":true,"marketingConsentSigninEnabled":true,"marketingConsentPreselected":true},"visitor":{"country":"US","language":"en"}}</script>
1472 1473<meta name="shopify-y" content="00000000-0000-0000-5000-000000000000" data-expiration="1821798669000"><meta name="shopify-s" content="00000000-0000-0000-5000-000000000000" data-expiration="1790242869000"><meta name="new-cookie-storage-activated" content="t"> 1474</head> 1475 1476 <body class="zoom-image--enabled"><!-- DRAWER --> 1477<template id="drawer-default-template"> 1478 <style> 1479 [hidden] { 1480 display: none !important; 1481 } 1482 </style> 1483 1484 <button part="outside-close-button" is="close-button" aria-label="Close"><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 1485 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1486 </svg></button> 1487 1488 <div part="overlay"></div> 1489 1490 <div part="content"> 1491 <header part="header"> 1492 <slot name="header"></slot> 1493 1494 <button part="close-button" is="close-button" aria-label="Close"><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 1495 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1496 </svg></button> 1497 </header> 1498 1499 <div part="body"> 1500 <slot></slot> 1501 </div> 1502 1503 <footer part="footer"> 1504 <slot name="footer"></slot> 1505 </footer> 1506 </div> 1507</template> 1508 1509<!-- POPOVER --> 1510<template id="popover-default-template"> 1511 <button part="outside-close-button" is="close-button" aria-label="Close"><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 1512 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1513 </svg></button> 1514 1515 <div part="overlay"></div> 1516 1517 <div part="content"> 1518 <header part="title"> 1519 <slot name="title"></slot> 1520 </header> 1521 1522 <div part="body"> 1523 <slot></slot> 1524 </div> 1525 </div> 1526</template><a href="#main" class="skip-to-content sr-only">Skip to content</a><!-- BEGIN sections: header-group --> 1527<aside id="shopify-section-sections--19025767366717__announcement-bar" class="shopify-section shopify-section-group-header-group shopify-section--announcement-bar"><style> 1528 :root { 1529 --sticky-announcement-bar-enabled:1; 1530 }#shopify-section-sections--19025767366717__announcement-bar { 1531 position: sticky; 1532 top: 0; 1533 z-index: 20; 1534 } 1535 1536 .shopify-section--header ~ #shopify-section-sections--19025767366717__announcement-bar { 1537 top: calc(var(--sticky-header-enabled, 0) * var(--header-height, 0px)); 1538 }</style><height-observer variable="announcement-bar"> 1539 <div class="announcement-bar bg-gradient text-custom"style="--gradient: linear-gradient(180deg, rgba(196, 18, 46, 1), rgba(221, 39, 57, 1) 100%); --text-color: 255 255 255;"><div class="container"> 1540 <div class="announcement-bar__wrapper justify-center"><announcement-bar swipeable autoplay="6" id="announcement-bar" class="announcement-bar__static-list"><p class="bold text-xs " ><a href="/order-faqs/#affirm">Buy Now, Pay Over Time with Affirm</a></p></announcement-bar></div> 1541 </div></div> 1542 </height-observer> 1543 1544
1544<script> 1545 document.documentElement.style.setProperty('--announcement-bar-height', Math.round(document.getElementById('shopify-section-sections--19025767366717__announcement-bar').clientHeight) + 'px'); 1546 </script>
1546</aside><header id="shopify-section-sections--19025767366717__header" class="shopify-section shopify-section-group-header-group shopify-section--header"><style> 1547 :root { 1548 --sticky-header-enabled:1; 1549 } 1550 1551 #shopify-section-sections--19025767366717__header { 1552 --header-grid-template: "main-nav logo secondary-nav" / minmax(0, 1fr) auto minmax(0, 1fr); 1553 --header-padding-block: var(--spacing-3); 1554 --header-background-opacity: 0.0; 1555 --header-background-blur-radius: 6px; 1556 --header-transparent-text-color: 0 0 0;--header-logo-width: 100px; 1557 --header-logo-height: 22px;position: sticky; 1558 top: 0; 1559 z-index: 10; 1560 }.shopify-section--announcement-bar ~ #shopify-section-sections--19025767366717__header { 1561 top: calc(var(--sticky-announcement-bar-enabled, 0) * var(--announcement-bar-height, 0px)); 1562 }@media screen and (min-width: 700px) { 1563 #shopify-section-sections--19025767366717__header {--header-logo-width: 220px; 1564 --header-logo-height: 48px;--header-padding-block: var(--spacing-6); 1565 } 1566 }@media screen and (min-width: 1150px) {#shopify-section-sections--19025767366717__header { 1567 --header-grid-template: "logo main-nav secondary-nav" / minmax(0, 1fr) fit-content(70%) minmax(0, 1fr); 1568 } 1569 }</style> 1570 1571<height-observer variable="header"> 1572 <store-header class="header" sticky> 1573 <div class="header__wrapper"><div class="header__main-nav"> 1574 <div class="header__icon-list"> 1575 <button type="button" class="tap-area lg:hidden" aria-controls="header-sidebar-menu"> 1576 <span class="sr-only">Menu</span><svg role="presentation" stroke-width="1.4" focusable="false" width="22" height="22" class="icon icon-hamburger" viewBox="0 0 22 22"> 1577 <path d="M1 5h20M1 11h20M1 17h20" stroke="currentColor" stroke-linecap="round"></path> 1578 </svg></button> 1579 1580 <a href="/search" class="tap-area sm:hidden" aria-controls="search-drawer"> 1581 <span class="sr-only">Search</span><svg role="presentation" stroke-width="1.4" focusable="false" width="22" height="22" class="icon icon-search" viewBox="0 0 22 22"> 1582 <circle cx="11" cy="10" r="7" fill="none" stroke="currentColor"></circle> 1583 <path d="m16 15 3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1584 </svg></a><nav class="header__link-list justify-center wrap" role="navigation"> 1585 <ul class="contents" role="list"> 1586 1587 <li><a href="/" class="bold link-faded-reverse" >Home</a></li> 1588 1589 <li><a href="/pages/v-pagefly-ride-at-home" class="bold link-faded-reverse" >Ride at home</a></li> 1590 1591 <li><details class="relative" is="dropdown-disclosure" trigger="hover"> 1592 <summary class="text-with-icon gap-2.5 bold link-faded-reverse" data-url="/pages/instructors-1">Instructors<svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7"> 1593 <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 1594 </svg></summary> 1595 1596 <div class="dropdown-menu "> 1597 <ul class="contents" role="list"><li><details class="relative" is="dropdown-disclosure" trigger="hover"> 1598 <summary class="dropdown-menu__item group" data-url="/pages/instructors-1"> 1599 <span><span class="reversed-link">Education</span></span><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-right" viewBox="0 0 7 10"> 1600 <path d="m1 9 4-4-4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 1601 </svg></summary> 1602 1603 <div class="dropdown-menu"> 1604 <ul class="contents" role="list"><li> 1605 <a href="/pages/become-an-instructor-2" class="dropdown-menu__item group" > 1606 <span><span class="reversed-link">Become a Spinning® Instructor</span></span> 1607 </a> 1608 </li><li> 1609 <a href="/pages/v-spinpower-certification" class="dropdown-menu__item group" >
1610 <span><span class="reversed-link">SPINPower® Certification</span></span> 1611 </a> 1612 </li><li> 1613 <a href="/pages/rockstar-certification" class="dropdown-menu__item group" > 1614 <span><span class="reversed-link">Rockstar Certification</span></span> 1615 </a> 1616 </li><li> 1617 <a href="/pages/v-continuing-education" class="dropdown-menu__item group" > 1618 <span><span class="reversed-link">Continuing Education</span></span> 1619 </a> 1620 </li></ul> 1621 </div> 1622 </details></li><li><details class="relative" is="dropdown-disclosure" trigger="hover"> 1623 <summary class="dropdown-menu__item group" data-url="/pages/spin-membership"> 1624 <span><span class="reversed-link">Join SPIN® Membership</span></span><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-right" viewBox="0 0 7 10"> 1625 <path d="m1 9 4-4-4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 1626 </svg></summary> 1627 1628 <div class="dropdown-menu"> 1629 <ul class="contents" role="list"><li> 1630 <a href="/pages/spin-membership" class="dropdown-menu__item group" > 1631 <span><span class="reversed-link">Unbeatable value and discounts</span></span> 1632 </a> 1633 </li><li> 1634 <a href="/pages/v-spin-membership-benefits" class="dropdown-menu__item group" > 1635 <span><span class="reversed-link">Access your Benefits</span></span> 1636 </a> 1637 </li></ul> 1638 </div> 1639 </details></li><li><details class="relative" is="dropdown-disclosure" trigger="hover"> 1640 <summary class="dropdown-menu__item group" data-url="/pages/v-spinning-instructor-resources"> 1641 <span><span class="reversed-link">Instructor Resources</span></span><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-right" viewBox="0 0 7 10"> 1642 <path d="m1 9 4-4-4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 1643 </svg></summary> 1644 1645 <div class="dropdown-menu"> 1646 <ul class="contents" role="list"><li> 1647 <a href="/pages/v-spinu-login" class="dropdown-menu__item group" > 1648 <span><span class="reversed-link">SpinU Instructor Login</span></span> 1649 </a> 1650 </li><li> 1651 <a href="/pages/v-continuing-education-petition" class="dropdown-menu__item group" > 1652 <span><span class="reversed-link">Continuing Education Petition</span></span> 1653 </a> 1654 </li></ul> 1655 </div> 1656 </details></li><li><details class="relative" is="dropdown-disclosure" trigger="hover"> 1657 <summary class="dropdown-menu__item group" data-url="/p
1657ages/v-community"> 1658 <span><span class="reversed-link">Community</span></span><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-right" viewBox="0 0 7 10"> 1659 <path d="m1 9 4-4-4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 1660 </svg></summary> 1661 1662 <div class="dropdown-menu"> 1663 <ul class="contents" role="list"><li> 1664 <a href="/blogs/default-blog" class="dropdown-menu__item group" > 1665 <span><span class="reversed-link">SPIN® Life Blog</span></span> 1666 </a> 1667 </li><li> 1668 <a href="/pages/v-master-instructor-team" class="dropdown-menu__item group" > 1669 <span><span class="reversed-link">Master Instructor Team</span></span> 1670 </a> 1671 </li><li> 1672 <a href="/pages/v-spinning-ambassadors" class="dropdown-menu__item group" > 1673 <span><span class="reversed-link">Spinning® Ambassadors</span></span> 1674 </a> 1675 </li><li> 1676 <a href="/pages/v-spinning-events" class="dropdown-menu__item group" > 1677 <span><span class="reversed-link">Spinning® Events</span></span> 1678 </a> 1679 </li></ul> 1680 </div> 1681 </details></li></ul> 1682 </div> 1683 </details></li> 1684 1685 <li><details class="relative" is="dropdown-disclosure" trigger="hover"> 1686 <summary class="text-with-icon gap-2.5 bold link-faded-reverse" data-url="/pages/v-studios">Studios<svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7"> 1687 <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 1688 </svg></summary> 1689 1690 <div class="dropdown-menu dropdown-menu--restrictable"> 1691 <ul class="contents" role="list"><li><a href="/pages/v-open-a-spinning-studio" class="dropdown-menu__item group" > 1692 <span><span class="reversed-link">Open a Spinning® Studio</span></span> 1693 </a></li><li><a href="/pages/v-host-a-training" class="dropdown-menu__item group" > 1694 <span><span class="reversed-link">Host a Training</span></span> 1695 </a></li></ul> 1696 </div> 1697 </details></li> 1698 1699 <li><a href="/" class="bold link-faded-reverse" >Shop</a></li></ul> 1700 </nav></div> 1701 </div> 1702 <a href="/" class="header__logo"><span class="sr-only">Spinning</span><img src="//spinning.com/cdn/shop/files/980a76ddb6079d3906d4089b704bc7c9.w917.h917.png?v=1724340393&width=917" alt="" srcset="//spinning.com/cdn/shop/files/980a76ddb6079d3906d4089b704bc7c9.w917.h917.png?v=1724340393&width=440 440w, //spinning.com/cdn/shop/files/980a76ddb6079d3906d4089b704bc7c9.w917.h917.png?v=1724340393&width=660 660w" width="917" height="199" sizes="220px" class="header__logo-image"><img src="//spinning.com/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1724340490&width=701" alt="" srcset="//spinning.com/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1724340490&width=440 440w, //spinning.com/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1724340490&width=660 660w" width="701" height="199" sizes="220px" class="header__logo-image header__logo-image--transparent"></a> 1703 1704<div class="header__secondary-nav"><ul class="header__icon-list"><li> 1705 <a href="/search" class="hidden tap-area sm:block" aria-controls="search-drawer">
1706 <span class="sr-only">Search</span><svg role="presentation" stroke-width="1.4" focusable="false" width="22" height="22" class="icon icon-search" viewBox="0 0 22 22"> 1707 <circle cx="11" cy="10" r="7" fill="none" stroke="currentColor"></circle> 1708 <path d="m16 15 3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1709 </svg></a> 1710 </li><li> 1711 <a href="https://spinning.com/customer_authentication/redirect?locale=en®ion_country=US" class="hidden tap-area sm:block"> 1712 <span class="sr-only">Login</span><svg role="presentation" stroke-width="1.4" focusable="false" width="22" height="22" class="icon icon-account" viewBox="0 0 22 22"> 1713 <circle cx="11" cy="7" r="4" fill="none" stroke="currentColor"></circle> 1714 <path d="M3.5 19c1.421-2.974 4.247-5 7.5-5s6.079 2.026 7.5 5" fill="none" stroke="currentColor" stroke-linecap="round"></path> 1715 </svg></a> 1716 </li><li> 1717 <a href="/cart" data-no-instant class="relative block tap-area" aria-controls="cart-drawer"> 1718 <span class="sr-only">Cart</span><svg role="presentation" stroke-width="1.4" focusable="false" width="22" height="22" class="icon icon-cart" viewBox="0 0 22 22"> 1719 <path d="M11 7H3.577A2 2 0 0 0 1.64 9.497l2.051 8A2 2 0 0 0 5.63 19H16.37a2 2 0 0 0 1.937-1.503l2.052-8A2 2 0 0 0 18.422 7H11Zm0 0V1" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1720 </svg><div class="header__cart-count"> 1721 <cart-count class="count-bubble opacity-0"> 1722 <span class="sr-only">0 items</span> 1723 <span aria-hidden="true">0</span> 1724 </cart-count> 1725 </div> 1726 </a> 1727 </li> 1728 </ul> 1729 </div> 1730 </div> 1731 </store-header> 1732</height-observer><navigation-drawer mobile-opening="bottom" open-from="left" id="header-sidebar-menu" class="navigation-drawer drawer lg:hidden" > 1733 <button is="close-button" aria-label="Close"class="sm-max:hidden"><svg role="presentation" stroke-width="2" focusable="false" width="19" height="19" class="icon icon-close" viewBox="0 0 24 24"> 1734 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1735 </svg></button><div class="panel-list__wrapper"> 1736 <div class="panel"> 1737 <div class="panel__wrapper" > 1738 <div class="panel__scroller v-stack gap-8"><ul class="v-stack gap-4"> 1739<li class="h3 sm:h4"><a href="/" class="group block w-full"> 1740 <span><span class="reversed-link">Home</span></span> 1741 </a></li> 1742<li class="h3 sm:h4"><a href="/pages/v-pagefly-ride-at-home" class="group block w-full"> 1743 <span><span class="reversed-link">Ride at home</span></span> 1744 </a></li> 1745<li class="h3 sm:h4"><button class="text-with-icon w-full group justify-between" aria-expanded="false" data-panel="1-0"> 1746 <span>Instructors</span> 1747 <span class="circle-chevron group-hover:colors group-expanded:colors"><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 1748 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 1749 </svg></span> 1750 </button></li> 1751<li class="h3 sm:h4"><button class="text-with-icon w-full group justify-between" aria-expanded="false" data-panel="1-1"> 1752 <span>Studios</span> 1753 <span class="circle-chevron group-hover:colors group-expanded:colors"><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 1754 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 1755 </svg></span> 1756 </button></li> 1757<li class="h3 sm:h4"><a href="/" class="group block w-full"> 1758 <span><span class="reversed-link">Shop</span></span> 1759 </a></li></ul></div><div class="panel-footer v-stack gap-5"><ul class="social-media " role="list"><li> 1760 <a href="https://www.facebook.com/Spinning" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Facebook"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-facebook" viewB
1760ox="0 0 24 24"> 1761 <path fill-rule="evenodd" clip-rule="evenodd" d="M10.183 21.85v-8.868H7.2V9.526h2.983V6.982a4.17 4.17 0 0 1 4.44-4.572 22.33 22.33 0 0 1 2.667.144v3.084h-1.83a1.44 1.44 0 0 0-1.713 1.68v2.208h3.423l-.447 3.456h-2.97v8.868h-3.57Z" fill="currentColor"/> 1762 </svg></a> 1763 </li><li> 1764 <a href="https://www.instagram.com/spinninghq/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-instagram" viewBox="0 0 24 24"> 1765 <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/> 1766 </svg></a> 1767 </li><li> 1768 <a href="https://www.youtube.com/@spinning" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on YouTube"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-youtube" viewBox="0 0 24 24"> 1769 <path fill-rule="evenodd" clip-rule="evenodd" d="M20.44 5.243c.929.244 1.66.963 1.909 1.876.451 1.654.451 5.106.451 5.106s0 3.452-.451 5.106a2.681 2.681 0 0 1-1.91 1.876c-1.684.443-8.439.443-8.439.443s-6.754 0-8.439-.443a2.682 2.682 0 0 1-1.91-1.876c-.45-1.654-.45-5.106-.45-5.106s0-3.452.45-5.106a2.681 2.681 0 0 1 1.91-1.876c1.685-.443 8.44-.443 8.44-.443s6.754 0 8.438.443Zm-5.004 6.982L9.792 15.36V9.091l5.646 3.134Z" fill="currentColor"/> 1770 </svg></a> 1771 </li><li> 1772 <a href="https://www.linkedin.com/showcase/spinning%C2%AE/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on LinkedIn"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-linkedin" viewBox="0 0 24 24"> 1773 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.349 5.478a1.875 1.875 0 1 0-3.749 0 1.875 1.875 0 1 0 3.749 0ZM7.092 19.2H3.857V8.78h3.235V19.2ZM12.22 8.78H9.121V19.2h3.228v-5.154c0-1.36.257-2.676 1.94-2.676 1.658 0 1.68 1.554 1.68 2.763V19.2H19.2v-5.715c0-2.806-.605-4.963-3.877-4.963-1.573 0-2.629.863-3.06 1.683h-.044V8.78Z" fill="currentColor"/> 1774 </svg></a> 1775 </li></ul><div class="panel-footer__localization-wrapper h-stack gap-6 border-t md:hidden"><a href="/account" class="panel-footer__account-link bold text-sm">Account</a></div></div></div> 1776 </div><div class="panel gap-8"> 1777 <div class="panel__wrapper" hidden> 1778 <ul class="v-stack gap-4"> 1779 <li class="lg:hidden"> 1780 <button class="text-with-icon h6 text-subdued" data-panel="0"><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-left reverse-icon" viewB
1780ox="0 0 7 10"> 1781 <path d="M6 1 2 5l4 4" fill="none" stroke="currentColor" stroke-width="2"></path> 1782 </svg>Instructors 1783 </button> 1784 </li><li class="h3 sm:h4"><button class="text-with-icon w-full justify-between" aria-expanded="false" data-panel="2-0"> 1785 <span>Education</span> 1786 <span class="circle-chevron group-hover:colors group-expanded:colors"><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 1787 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 1788 </svg></span> 1789 </button></li><li class="h3 sm:h4"><button class="text-with-icon w-full justify-between" aria-expanded="false" data-panel="2-1"> 1790 <span>Join SPIN® Membership</span> 1791 <span class="circle-chevron group-hover:colors group-expanded:colors"><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 1792 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 1793 </svg></span> 1794 </button></li><li class="h3 sm:h4"><button class="text-with-icon w-full justify-between" aria-expanded="false" data-panel="2-2"> 1795 <span>Instructor Resources</span> 1796 <span class="circle-chevron group-hover:colors group-expanded:colors"><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 1797 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 1798 </svg></span> 1799 </button></li><li class="h3 sm:h4"><button class="text-with-icon w-full justify-between" aria-expanded="false" data-panel="2-3"> 1800 <span>Community</span> 1801 <span class="circle-chevron group-hover:colors group-expanded:colors"><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 1802 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 1803 </svg></span> 1804 </button></li></ul></div><div class="panel__wrapper" hidden> 1805 <ul class="v-stack gap-4"> 1806 <li class="lg:hidden"> 1807 <button class="text-with-icon h6 text-subdued" data-panel="0"><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-left reverse-icon" viewBox="0 0 7 10"> 1808 <path d="M6 1 2 5l4 4" fill="none" stroke="currentColor" stroke-width="2"></path> 1809 </svg>Studios 1810 </button> 1811 </li><li class="h3 sm:h4"><a class="group block w-full" href="/pages/v-open-a-spinning-studio"><span><span class="reversed-link">Open a Spinning® Studio</span></span> 1812 </a></li><li class="h3 sm:h4"><a class="group block w-full" href="/pages/v-host-a-training"><span><span class="reversed-link">Host a Training</span></span> 1813 </a></li></ul></div> 1814 </div> 1815 <div class="panel"> 1816 <div class="panel__wrapper" hidden> 1817 <ul class="v-stack gap-4"> 1818 <li class="text-with-icon lg:hidden"> 1819 <button class="text-with-icon h6 text-subdued" data-panel="1"><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-left reverse-icon" viewBox="0 0 7 10"> 1820 <path d="M6 1 2 5l4 4" fill="none" stroke="currentColor" stroke-width="2"></path> 1821 </svg>Education 1822 </button> 1823 </li><li class="h5 sm:h5"> 1824 <a class="group block w-full" 1825 href="/pages/become-an-instructor-2"><span><span class="reversed-link">Become a Spinning® Instructor</span></span> 1826 </a> 1827 </li><li class="h5 sm:h5"> 1828 <a class="group block w-full" 1829 href="/pages/v-spinpower-certification"><span><span class="reversed-link">SPINPower® Certification</span></span> 1830 </a> 1831 </li><li class="h5 sm:h5"> 1832 <a class="group block w-full" 1833 href="/pages/rockstar-certification"><span><span class="reversed-link">Rockstar Certification</span></span> 1834 </a> 1835 </li><li class="h5 sm:h5"> 1836 <a class="group block w-full" 1837 href="/pages/v-continuing-education"><span><span class="reversed-link">Continuing Education</span></span> 1838 </a> 1839 </li></ul> 1840 </div><div class="panel__wrapper" hidden> 1841 <ul class="v-stack gap-4"> 1842 <li class="text-with-icon lg:hidden"> 1843 <button class="text-with-icon h6 text-subdued" data-panel="1"><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-left reverse-icon" viewB
1843ox="0 0 7 10"> 1844 <path d="M6 1 2 5l4 4" fill="none" stroke="currentColor" stroke-width="2"></path> 1845 </svg>Join SPIN® Membership 1846 </button> 1847 </li><li class="h5 sm:h5"> 1848 <a class="group block w-full" 1849 href="/pages/spin-membership"><span><span class="reversed-link">Unbeatable value and discounts</span></span> 1850 </a> 1851 </li><li class="h5 sm:h5"> 1852 <a class="group block w-full" 1853 href="/pages/v-spin-membership-benefits"><span><span class="reversed-link">Access your Benefits</span></span> 1854 </a> 1855 </li></ul> 1856 </div><div class="panel__wrapper" hidden> 1857 <ul class="v-stack gap-4"> 1858 <li class="text-with-icon lg:hidden"> 1859 <button class="text-with-icon h6 text-subdued" data-panel="1"><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-left reverse-icon" viewBox="0 0 7 10"> 1860 <path d="M6 1 2 5l4 4" fill="none" stroke="currentColor" stroke-width="2"></path> 1861 </svg>Instructor Resources 1862 </button> 1863 </li><li class="h5 sm:h5"> 1864 <a class="group block w-full" 1865 href="/pages/v-spinu-login"><span><span class="reversed-link">SpinU Instructor Login</span></span> 1866 </a> 1867 </li><li class="h5 sm:h5"> 1868 <a class="group block w-full" 1869 href="/pages/v-continuing-education-petition"><span><span class="reversed-link">Continuing Education Petition</span></span> 1870 </a> 1871 </li></ul> 1872 </div><div class="panel__wrapper" hidden> 1873 <ul class="v-stack gap-4"> 1874 <li class="text-with-icon lg:hidden"> 1875 <button class="text-with-icon h6 text-subdued" data-panel="1"><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-left reverse-icon" viewBox="0 0 7 10"> 1876 <path d="M6 1 2 5l4 4" fill="none" stroke="currentColor" stroke-width="2"></path> 1877 </svg>Community 1878 </button> 1879 </li><li class="h5 sm:h5"> 1880 <a class="group block w-full" 1881 href="/blogs/default-blog"><span><span class="reversed-link">SPIN® Life Blog</span></span> 1882 </a> 1883 </li><li class="h5 sm:h5"> 1884 <a class="group block w-full" 1885 href="/pages/v-master-instructor-team"><span><span class="reversed-link">Master Instructor Team</span></span> 1886 </a> 1887 </li><li class="h5 sm:h5"> 1888 <a class="group block w-full" 1889 href="/pages/v-spinning-ambassadors"><span><span class="reversed-link">Spinning® Ambassadors</span></span> 1890 </a> 1891 </li><li class="h5 sm:h5"> 1892 <a class="group block w-full" 1893 href="/pages/v-spinning-events"><span><span class="reversed-link">Spinning® Events</span></span> 1894 </a> 1895 </li></ul> 1896 </div> 1897 </div></div></navigation-drawer>
1897<script> 1898 document.documentElement.style.setProperty('--header-height', Math.round(document.getElementById('shopify-section-sections--19025767366717__header').clientHeight) + 'px'); 1899</script>
1899 1900 1901<style> #shopify-section-sections--19025767366717__header a {font-weight: 700 !important;} #shopify-section-sections--19025767366717__header .header {background-color: white;} </style></header> 1902<!-- END sections: header-group --><!-- BEGIN sections: overlay-group --> 1903<div id="shopify-section-sections--19025768415293__cart-drawer" class="shopify-section shopify-section-group-overlay-group"><cart-drawer class="cart-drawer drawer drawer--lg" id="cart-drawer"><button is="close-button" aria-label="Close"><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 1904 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1905 </svg></button> 1906 1907 <div class="empty-state align-self-center"> 1908 <div class="empty-state__icon-wrapper"><svg role="presentation" stroke-width="1" focusable="false" width="32" height="32" class="icon icon-cart" viewBox="0 0 22 22"> 1909 <path d="M11 7H3.577A2 2 0 0 0 1.64 9.497l2.051 8A2 2 0 0 0 5.63 19H16.37a2 2 0 0 0 1.937-1.503l2.052-8A2 2 0 0 0 18.422 7H11Zm0 0V1" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1910 </svg><span class="count-bubble count-bubble--lg">0</span> 1911 </div> 1912 1913 <div class="prose"> 1914 <p class="h5">Your cart is empty</p> 1915<a class="button button--xl" 1916 1917 1918 1919 1920 1921 href="/collections/all" 1922 1923 1924 >Continue shopping</a></div> 1925 </div></cart-drawer> 1926 1927 1928</div><div id="shopify-section-sections--19025768415293__search-drawer" class="shopify-section shopify-section-group-overlay-group"><search-drawer class="search-drawer drawer drawer--lg" id="search-drawer"> 1929 <form action="/search" method="get" class="v-stack gap-5 sm:gap-8" role="search"> 1930 <div class="search-input"> 1931 <input type="search" name="q" placeholder="Search for..." autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-label="Search"> 1932 <button type="reset" class="text-subdued">Clear</button> 1933 <button type="button" is="close-button"> 1934 <span class="sr-only">Close</span><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 1935 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1936 </svg></button> 1937 </div> 1938 1939 <style> 1940 #shopify-section-sections--19025768415293__search-drawer { 1941 --predictive-search-column-count: 3; 1942 } 1943 </style> 1944 1945 <input type="hidden" name="type" value="product"> 1946 1947 <predictive-search class="predictive-search" section-id="sections--19025768415293__search-drawer"><div slot="results"></div> 1948 1949 <div slot="loading"> 1950 <div class="v-stack gap-5 sm:gap-6 "> 1951 <div class="h-stack gap-4 sm:gap-5"><span class="skeleton skeleton--tab"></span><span class="skeleton skeleton--tab"></span><span class="skeleton skeleton--tab"></span></div> 1952 1953 <div class="v-stack gap-4 sm:gap-6"><div class="h-stack align-center gap-5 sm:gap-6"> 1954 <span class="skeleton skeleton--thumbnail"></span> 1955 1956 <div class="v-stack gap-3 w-full"> 1957 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 1958 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 1959 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 1960 </div> 1961 </div><div class="h-stack align-center gap-5 sm:gap-6"> 1962 <span class="skeleton skeleton--thumbnail"></span> 1963 1964 <div class="v-stack gap-3 w-full"> 1965 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 1966 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 1967 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 1968 </div> 1969 </div><div class="h-stack align-center gap-5 sm:gap-6">
1970 <span class="skeleton skeleton--thumbnail"></span> 1971 1972 <div class="v-stack gap-3 w-full"> 1973 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 1974 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 1975 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 1976 </div> 1977 </div><div class="h-stack align-center gap-5 sm:gap-6"> 1978 <span class="skeleton skeleton--thumbnail"></span> 1979 1980 <div class="v-stack gap-3 w-full"> 1981 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 1982 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 1983 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 1984 </div> 1985 </div></div> 1986 </div></div> 1987 </predictive-search> 1988 </form> 1989</search-drawer> 1990 1991</div> 1992<!-- END sections: overlay-group --><cart-notification-drawer open-from="bottom" class="quick-buy-drawer drawer"></cart-notification-drawer><main role="main" id="main" class="anchor" tabindex="-1"> 1993 <section id="shopify-section-template--19025779490877__main" class="shopify-section shopify-section--main-page"><style> 1994 #shopify-section-template--19025779490877__main { 1995 --page-max-width: 80ch; 1996 } 1997</style> 1998 1999<div class="container"> 2000 <div class="page-spacer"> 2001 <div class="page"> 2002 <h1 class="h1 text-center">Contact Us</h1><div class="prose"> 2003 <div id="closure-notice"> 2004 <strong>Our office will be closed on Monday, September 7, 2026, in observance of Labor Day. We will resume normal business hours on Tuesday, September 8, 2026.</strong> 2005</div> 2006
2007<script> 2008 if (new Date() >= new Date(2026, 8, 8)) document.getElementById('closure-notice').remove(); 2009 else setTimeout(() => document.getElementById('closure-notice').remove(), new Date(2026, 8, 8) - new Date()); 2010</script>
2010 2011 2012<div class="padded-content"> 2013<p style="margin-bottom: 1rem !important;">Need help finding a Spinning® Instructor Training? Want to learn more about the Spinning program for your gym or club? Need to access your online account? The Spinning team is here to help.</p> 2014<h4>Customer Service Hours</h4> 2015<p>Mon-Fri: 7AM-4PM PT<br>Toll-free: (800) 847-7746<br>Dialing outside U.S.: 1 (310) 823-7008</p> 2016<h4>Technical Support Hours</h4> 2017<p>Mon-Fri: 7AM-4PM PT<br>Toll-free: (800) 847-7746<br>Dialing outside U.S.: 1 (310) 823-7008</p> 2018<h4>Helpful Links</h4> 2019<ul> 2020<li><a href="/pages/warranty">Warranty</a></li> 2021<li><a title="Spinning Technical Support Request Form" href="https://www.powr.io/form-builder/i/30018774#page">Equipment Technical Support Request Form</a></li> 2022<li><a href="/pages/warranty/#owners-manuals">Owners Manuals</a></li> 2023<li><a href="https://www.youtube.com/playlist?list=PLZwv65qs7XFRP_gw32Kh0WRkgpUTt1Atu" target="_blank">Spinning® Support Videos</a></li> 2024<li><a href="/pages/instructors-certification-faq" target="_blank">Certification FAQs</a></li> 2025</ul> 2026<br>
2026<script src="https://www.powr.io/powr.js?external-type=bigcommerce" type="text/javascript"></script>
2026 2027<div class="powr-form-builder" id="7541cce0_1485814226"> </div> 2028</div> 2029<p> </p> 2030 </div></div> 2031 </div> 2032</div> 2033 2034</section> 2035<!-- BEGIN sections: footer-group --> 2036<section id="shopify-section-sections--19025767301181__rich_text_X4tKd6" class="shopify-section shopify-section-group-footer-group shopify-section--rich-text"><style> #shopify-section-sections--19025767301181__rich_text_X4tKd6 .rich-text {margin-top: -1%;} #shopify-section-sections--19025767301181__rich_text_X4tKd6 .h2 {font-size: 24px;} #shopify-section-sections--19025767301181__rich_text_X4tKd6 h5 {font-size: 18px;} #shopify-section-sections--19025767301181__rich_text_X4tKd6 ul li {font-size: 14px;} </style></section><footer id="shopify-section-sections--19025767301181__footer" class="shopify-section shopify-section-group-footer-group shopify-section--footer"><style> 2037 @media screen and (min-width: 1000px) { 2038 #shopify-section-sections--19025767301181__footer {--footer-block-list-gap: var(--spacing-10);--footer-block-list-justify-content: space-between; 2039 } 2040 } 2041</style><div class="footer"> 2042 <div class="container"> 2043 <div class="footer__wrapper"><div class="footer__block-list empty:hidden"><div class="footer__block footer__block--newsletter" ><div class="v-stack gap-6"><p class="h6">Sign up for news updates and promos</p><div class="prose text-subdued"><p>Enter your email below.</p></div><form method="post" action="/contact#footer-newsletter" id="footer-newsletter" accept-charset="UTF-8" class="footer__newsletter-form form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="contact[tags]" value="newsletter"><div class="form-control" ><input id="input-sections--19025767301181__footer--contactemail" class="input is-floating" type="email" dir="ltr" name="contact[email]" placeholder=" " 2044 2045 2046 2047 2048 autocomplete="email" 2049 2050 enterkeyhint="send" 2051 required 2052 2053><label for="input-sections--19025767301181__footer--contactemail" class="floating-label">E-mail</label><div class="self-submit-button"> 2054 <button type="submit" class="circle-chevron hover:colors"> 2055 <span class="sr-only">Subscribe</span><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 2056 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 2057 </svg></button> 2058 </div></div></form></div> 2059 </div><div class="footer__block footer__block--menu" ><p class="bold">EDUCATION</p><ul class="v-stack gap-3" role="list"><li> 2060 <a href="https://spinning.com/pages/become-an-instructor-2" class="inline-block link-faded break-all">Become an Instructor</a> 2061 </li><li> 2062 <a href="https://spinu.spinning.com/workshops" class="inline-block link-faded break-all">Live and Virtual Workshops</a> 2063 </li><li> 2064 <a href="https://spinu.spinning.com/courses" class="inline-block link-faded break-all">Online Courses</a> 2065 </li><li> 2066 <a href="https://spinning.com/pages/spin-membership" class="inline-block link-faded break-all">SPIN® Membership</a> 2067 </li><li> 2068 <a href="https://spinu.spinning.com/" class="inline-block link-faded break-all">SpinU</a> 2069 </li><li> 2070 <a href="https://spinu.spinning.com/p/spinu-faq" class="inline-block link-faded break-all">Education FAQ</a> 2071 </li></ul> 2072 </div><div class="footer__block footer__block--menu" ><p class="bold">SUPPORT</p><ul class="v-stack gap-3" role="list"><li> 2073 <a href="/pages/contact-us" class="inline-block link-faded break-all">Contact Us</a> 2074 </li><li> 2075 <a href="https://cdn.shopify.com/s/files/1/0598/0330/3997/files/commercial-bikes-comparison-chart-2026-v2.pdf?v=1778000409" class="inline-block link-faded break-all">Commercial Bike Comparison</a> 2076 </li><li> 2077 <a href="https://cdn.shopify.com/s/files/1/0598/0330/3997/files/home-bike-comparison-chart-2025.pdf?v=1775596176" class="inline-block link-faded break-all">Home Bike Comparison</a> 2078 </li><li> 2079 <a href="/pages/prepare-for-your-commercial-bikes" class="inline-block link-faded break-all">Prepare for Your Commercial Bikes</a> 2080 </li><li> 2081 <a href="/pages/get-ready-for-your-new-bike" class="inline-block link-faded break-all">Prepare for Your Home Bike</a> 2082 </li><li> 2083 <a href="/pages/order-faqs" class="inline-block link-faded break-all">FAQs</a> 2084 </li><li> 2085 <a href="/pages/warranty" class="inline-block link-faded break-all">Warranty and Manuals</a> 2086 </li><li> 2087 <a href="https://spinning.com/pages/equipment-service-technical-support" class="inline-block link-faded break-all">Equipment Support Request</a> 2088 </li><li> 2089 <a href="/pages/shipping-handling" class="inline-block link-faded break-all">Shipping and Handling</a> 2090 </li><li> 2091 <a href="https://spinning.com/pages/terms-and-conditions" class="inline-block link-faded break-all">Terms and Conditions</a> 2092 </li><li> 2093 <a href="https://spinning.com/pages/privacy-policy" class="inline-block link-faded break-all">Privacy Policy</a> 2094 </li></ul> 2095 </div><div class="footer__block footer__block--menu" ><p class="bold">BRANDS</p><ul class="v-stack gap-3" role="list"><li> 2096 <a href="https://www.spinning.com" class="inline-block link-faded break-all">Spinning®</a> 2097 </li><li> 2098 <a href="https://peakpilates.com/" class="inline-block link-faded break-all">Peak Pilates®</a> 2099 </li><li> 2100 <a href="https://crosscore.com/" class="inline-block link-faded break-all">CrossCore®</a> 2101 </li><li> 2102 <a href="https://www.peakpilates.com/products/ugi-balls-a-la-carte?srsltid=AfmBOoqGfHHQl25sQIBJF2lQ3q1l40eGR8TLbdgbCN0HMzJKlAvFwLvJ" class="inline-block link-faded break-all">Ugi®</a> 2103 </li></ul> 2104 </div><div class="footer__block footer__block--menu" ><p class="bold">ABOUT US</p><ul class="v-stack gap-3" role="list"><li> 2105 <a href="/pages/spinning-history" class="inline-block link-faded break-all">Spinning® History</a> 2106 </li><li> 2107 <a href="/pages/legal-trademark" class="inline-block link-faded break-all">Legal & Trademark</a> 2108 </li><li> 2109 <a href="/pages/patents" class="inline-block link-faded break-all">Patents</a> 2110 </li><li> 2111 <a href="/pages/press" class="inline-block link-faded break-all">Press</a> 2112 </li><li> 2113 <a href="https://e.issuu.com/embed.html?backgroundColor=%23000000&d=sp_catalog&u=spinning.com" class="inline-block link-faded break-all">Catalog</a> 2114 </li><li> 2115 <a href="https://www.youtube.com/watch?v=sZFrbD9Y36M" class="inline-block link-faded break-all">Brand Video</a> 2116 </li><li> 2117 <a href="/pages/newsletter" class="inline-block link-faded break-all">Newsletter</a> 2118 </li><li> 2119 <a href="https://spinning.com/apps/collective/retailer-referral" class="inline-block link-faded break-all">Referral Page</a> 2120 </li></ul> 2121 </div></div><div class="footer__aside empty:hidden"><div class="footer__aside-top"><ul class="social-media " role="list"><li> 2122 <a href="https://www.facebook.com/Spinning" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Facebook"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-facebook" viewB
2122ox="0 0 24 24"> 2123 <path fill-rule="evenodd" clip-rule="evenodd" d="M10.183 21.85v-8.868H7.2V9.526h2.983V6.982a4.17 4.17 0 0 1 4.44-4.572 22.33 22.33 0 0 1 2.667.144v3.084h-1.83a1.44 1.44 0 0 0-1.713 1.68v2.208h3.423l-.447 3.456h-2.97v8.868h-3.57Z" fill="currentColor"/> 2124 </svg></a> 2125 </li><li> 2126 <a href="https://www.instagram.com/spinninghq/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-instagram" viewBox="0 0 24 24"> 2127 <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/> 2128 </svg></a> 2129 </li><li> 2130 <a href="https://www.youtube.com/@spinning" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on YouTube"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-youtube" viewBox="0 0 24 24"> 2131 <path fill-rule="evenodd" clip-rule="evenodd" d="M20.44 5.243c.929.244 1.66.963 1.909 1.876.451 1.654.451 5.106.451 5.106s0 3.452-.451 5.106a2.681 2.681 0 0 1-1.91 1.876c-1.684.443-8.439.443-8.439.443s-6.754 0-8.439-.443a2.682 2.682 0 0 1-1.91-1.876c-.45-1.654-.45-5.106-.45-5.106s0-3.452.45-5.106a2.681 2.681 0 0 1 1.91-1.876c1.685-.443 8.44-.443 8.44-.443s6.754 0 8.438.443Zm-5.004 6.982L9.792 15.36V9.091l5.646 3.134Z" fill="currentColor"/> 2132 </svg></a> 2133 </li><li> 2134 <a href="https://www.linkedin.com/showcase/spinning%C2%AE/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on LinkedIn"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-linkedin" viewBox="0 0 24 24"> 2135 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.349 5.478a1.875 1.875 0 1 0-3.749 0 1.875 1.875 0 1 0 3.749 0ZM7.092 19.2H3.857V8.78h3.235V19.2ZM12.22 8.78H9.121V19.2h3.228v-5.154c0-1.36.257-2.676 1.94-2.676 1.658 0 1.68 1.554 1.68 2.763V19.2H19.2v-5.715c0-2.806-.605-4.963-3.877-4.963-1.573 0-2.629.863-3.06 1.683h-.044V8.78Z" fill="currentColor"/> 2136 </svg></a> 2137 </li></ul><div class="h-stack gap-6"><link rel="stylesheet" href="//spinning.com/cdn/shop/t/33/assets/country-flags.css?v=86795920012595762121788585868" media="print" onload="this.media='all'; this.onload = null"><div class="relative"> 2138 <button type="button" class="text-with-icon gap-2.5 group" aria-label="Change country or currency" aria-controls="popover-localization-form-country--sections--19025767301181__footer" aria-expanded="false"> 2139 <div class="h-stack gap-2"><span class="country-flags country-flags--US"></span><span class="bold text-sm">United States (USD $)</span> 2140 </div><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7"> 2141 <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 2142 </svg></button> 2143 2144 <x-popover id="popover-localization-form-country--sections--19025767301181__footer" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="start" class="popover"> 2145 <p class="h5" slot="title">Country</p><form method="post" action="/localization" id="localization-form-country--sections--19025767301181__footer" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/pages/contact-us" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AI" >
2146 <span class="country-flags country-flags--AI"></span> 2147 <span>Anguilla (USD $)</span> 2148 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AG" > 2149 <span class="country-flags country-flags--AG"></span> 2150 <span>Antigua & Barbuda (USD $)</span> 2151 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AR" > 2152 <span class="country-flags country-flags--AR"></span> 2153 <span>Argentina (USD $)</span> 2154 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AW" > 2155 <span class="country-flags country-flags--AW"></span> 2156 <span>Aruba (USD $)</span> 2157 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AU" > 2158 <span class="country-flags country-flags--AU"></span> 2159 <span>Australia (USD $)</span> 2160 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BS" > 2161 <span class="country-flags country-flags--BS"></span> 2162 <span>Bahamas (USD $)</span> 2163 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BB" > 2164 <span class="country-flags country-flags--BB"></span> 2165 <span>Barbados (USD $)</span> 2166 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BZ" > 2167 <span class="country-flags country-flags--BZ"></span> 2168 <span>Belize (USD $)</span> 2169 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BM" > 2170 <span class="country-flags country-flags--BM"></span> 2171 <span>Bermuda (USD $)</span> 2172 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BO" > 2173 <span class="country-flags country-flags--BO"></span> 2174 <span>Bolivia (USD $)</span> 2175 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BR" > 2176 <span class="country-flags country-flags--BR"></span> 2177 <span>Brazil (USD $)</span> 2178 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VG" > 2179 <span class="country-flags country-flags--VG"></span> 2180 <span>British Virgin Islands (USD $)</span> 2181 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CA" > 2182 <span class="country-flags country-flags--CA"></span> 2183 <span>Canada (USD $)</span> 2184 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BQ" > 2185 <span class="country-flags country-flags--BQ"></span> 2186 <span>Caribbean Netherlands (USD $)</span> 2187 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KY" > 2188 <span class="country-flags country-flags--KY"></span> 2189 <span>Cayman Islands (USD $)</span> 2190 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CL" > 2191 <span class="country-flags country-flags--CL"></span> 2192 <span>Chile (USD $)</span> 2193 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CX" > 2194 <span class="country-flags country-flags--CX"></span> 2195 <span>Christmas Island (USD $)</span> 2196 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CC" >
2197 <span class="country-flags country-flags--CC"></span> 2198 <span>Cocos (Keeling) Islands (USD $)</span> 2199 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CO" > 2200 <span class="country-flags country-flags--CO"></span> 2201 <span>Colombia (USD $)</span> 2202 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CK" > 2203 <span class="country-flags country-flags--CK"></span> 2204 <span>Cook Islands (USD $)</span> 2205 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CR" > 2206 <span class="country-flags country-flags--CR"></span> 2207 <span>Costa Rica (USD $)</span> 2208 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CW" > 2209 <span class="country-flags country-flags--CW"></span> 2210 <span>Curaçao (USD $)</span> 2211 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DM" > 2212 <span class="country-flags country-flags--DM"></span> 2213 <span>Dominica (USD $)</span> 2214 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DO" > 2215 <span class="country-flags country-flags--DO"></span> 2216 <span>Dominican Republic (USD $)</span> 2217 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EC" > 2218 <span class="country-flags country-flags--EC"></span> 2219 <span>Ecuador (USD $)</span> 2220 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SV" > 2221 <span class="country-flags country-flags--SV"></span> 2222 <span>El Salvador (USD $)</span> 2223 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FK" > 2224 <span class="country-flags country-flags--FK"></span> 2225 <span>Falkland Islands (USD $)</span> 2226 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FJ" > 2227 <span class="country-flags country-flags--FJ"></span> 2228 <span>Fiji (USD $)</span> 2229 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GF" > 2230 <span class="country-flags country-flags--GF"></span> 2231 <span>French Guiana (USD $)</span> 2232 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PF" > 2233 <span class="country-flags country-flags--PF"></span> 2234 <span>French Polynesia (USD $)</span> 2235 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GL" > 2236 <span class="country-flags country-flags--GL"></span> 2237 <span>Greenland (USD $)</span> 2238 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GD" > 2239 <span class="country-flags country-flags--GD"></span> 2240 <span>Grenada (USD $)</span> 2241 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GP" > 2242 <span class="country-flags country-flags--GP"></span> 2243 <span>Guadeloupe (USD $)</span> 2244 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GT" > 2245 <span class="country-flags country-flags--GT"></span> 2246 <span>Guatemala (USD $)</span> 2247 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GY" >
2248 <span class="country-flags country-flags--GY"></span> 2249 <span>Guyana (USD $)</span> 2250 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HT" > 2251 <span class="country-flags country-flags--HT"></span> 2252 <span>Haiti (USD $)</span> 2253 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HN" > 2254 <span class="country-flags country-flags--HN"></span> 2255 <span>Honduras (USD $)</span> 2256 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HK" > 2257 <span class="country-flags country-flags--HK"></span> 2258 <span>Hong Kong SAR (USD $)</span> 2259 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JM" > 2260 <span class="country-flags country-flags--JM"></span> 2261 <span>Jamaica (USD $)</span> 2262 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JP" > 2263 <span class="country-flags country-flags--JP"></span> 2264 <span>Japan (USD $)</span> 2265 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KI" > 2266 <span class="country-flags country-flags--KI"></span> 2267 <span>Kiribati (USD $)</span> 2268 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MY" > 2269 <span class="country-flags country-flags--MY"></span> 2270 <span>Malaysia (USD $)</span> 2271 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MQ" > 2272 <span class="country-flags country-flags--MQ"></span> 2273 <span>Martinique (USD $)</span> 2274 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MX" > 2275 <span class="country-flags country-flags--MX"></span> 2276 <span>Mexico (USD $)</span> 2277 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MS" > 2278 <span class="country-flags country-flags--MS"></span> 2279 <span>Montserrat (USD $)</span> 2280 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NR" > 2281 <span class="country-flags country-flags--NR"></span> 2282 <span>Nauru (USD $)</span> 2283 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NC" > 2284 <span class="country-flags country-flags--NC"></span> 2285 <span>New Caledonia (USD $)</span> 2286 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NZ" > 2287 <span class="country-flags country-flags--NZ"></span> 2288 <span>New Zealand (USD $)</span> 2289 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NI" > 2290 <span class="country-flags country-flags--NI"></span> 2291 <span>Nicaragua (USD $)</span> 2292 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NU" > 2293 <span class="country-flags country-flags--NU"></span> 2294 <span>Niue (USD $)</span> 2295 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NF" > 2296 <span class="country-flags country-flags--NF"></span> 2297 <span>Norfolk Island (USD $)</span> 2298 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PA" >
2299 <span class="country-flags country-flags--PA"></span> 2300 <span>Panama (USD $)</span> 2301 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PG" > 2302 <span class="country-flags country-flags--PG"></span> 2303 <span>Papua New Guinea (USD $)</span> 2304 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PY" > 2305 <span class="country-flags country-flags--PY"></span> 2306 <span>Paraguay (USD $)</span> 2307 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PE" > 2308 <span class="country-flags country-flags--PE"></span> 2309 <span>Peru (USD $)</span> 2310 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PH" > 2311 <span class="country-flags country-flags--PH"></span> 2312 <span>Philippines (USD $)</span> 2313 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PN" > 2314 <span class="country-flags country-flags--PN"></span> 2315 <span>Pitcairn Islands (USD $)</span> 2316 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="WS" > 2317 <span class="country-flags country-flags--WS"></span> 2318 <span>Samoa (USD $)</span> 2319 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SG" > 2320 <span class="country-flags country-flags--SG"></span> 2321 <span>Singapore (USD $)</span> 2322 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SX" > 2323 <span class="country-flags country-flags--SX"></span> 2324 <span>Sint Maarten (USD $)</span> 2325 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SB" > 2326 <span class="country-flags country-flags--SB"></span> 2327 <span>Solomon Islands (USD $)</span> 2328 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GS" > 2329 <span class="country-flags country-flags--GS"></span> 2330 <span>South Georgia & South Sandwich Islands (USD $)</span> 2331 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KR" > 2332 <span class="country-flags country-flags--KR"></span> 2333 <span>South Korea (USD $)</span> 2334 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BL" > 2335 <span class="country-flags country-flags--BL"></span> 2336 <span>St. Barthélemy (USD $)</span> 2337 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KN" > 2338 <span class="country-flags country-flags--KN"></span> 2339 <span>St. Kitts & Nevis (USD $)</span> 2340 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LC" > 2341 <span class="country-flags country-flags--LC"></span> 2342 <span>St. Lucia (USD $)</span> 2343 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MF" > 2344 <span class="country-flags country-flags--MF"></span> 2345 <span>St. Martin (USD $)</span> 2346 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PM" > 2347 <span class="country-flags country-flags--PM"></span> 2348 <span>St. Pierre & Miquelon (USD $)</span> 2349 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VC" >
2350 <span class="country-flags country-flags--VC"></span> 2351 <span>St. Vincent & Grenadines (USD $)</span> 2352 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SR" > 2353 <span class="country-flags country-flags--SR"></span> 2354 <span>Suriname (USD $)</span> 2355 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TW" > 2356 <span class="country-flags country-flags--TW"></span> 2357 <span>Taiwan (USD $)</span> 2358 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TH" > 2359 <span class="country-flags country-flags--TH"></span> 2360 <span>Thailand (USD $)</span> 2361 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TK" > 2362 <span class="country-flags country-flags--TK"></span> 2363 <span>Tokelau (USD $)</span> 2364 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TO" > 2365 <span class="country-flags country-flags--TO"></span> 2366 <span>Tonga (USD $)</span> 2367 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TT" > 2368 <span class="country-flags country-flags--TT"></span> 2369 <span>Trinidad & Tobago (USD $)</span> 2370 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TC" > 2371 <span class="country-flags country-flags--TC"></span> 2372 <span>Turks & Caicos Islands (USD $)</span> 2373 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TV" > 2374 <span class="country-flags country-flags--TV"></span> 2375 <span>Tuvalu (USD $)</span> 2376 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UM" > 2377 <span class="country-flags country-flags--UM"></span> 2378 <span>U.S. Outlying Islands (USD $)</span> 2379 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="US" aria-selected="true"> 2380 <span class="country-flags country-flags--US"></span> 2381 <span>United States (USD $)</span> 2382 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UY" > 2383 <span class="country-flags country-flags--UY"></span> 2384 <span>Uruguay (USD $)</span> 2385 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VU" > 2386 <span class="country-flags country-flags--VU"></span> 2387 <span>Vanuatu (USD $)</span> 2388 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VE" > 2389 <span class="country-flags country-flags--VE"></span> 2390 <span>Venezuela (USD $)</span> 2391 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VN" > 2392 <span class="country-flags country-flags--VN"></span> 2393 <span>Vietnam (USD $)</span> 2394 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="WF" > 2395 <span class="country-flags country-flags--WF"></span> 2396 <span>Wallis & Futuna (USD $)</span> 2397 </button></x-listbox></form></x-popover> 2398 </div></div></div><div class="footer__aside-bottom"><div class="footer__copyright v-stack gap-1"> 2399 <p class="text-sm text-subdued">© 2026, Spinning. <a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=p
2399oweredby&utm_medium=shopify&utm_source=onlinestore">Powered by Shopify</a></p></div> 2400 </div> 2401 </div> 2402 </div> 2403 </div> 2404</div> 2405 2406<style> #shopify-section-sections--19025767301181__footer .footer {background-color: #000000;} #shopify-section-sections--19025767301181__footer a {font-weight: 500; font-size: 14px;} </style></footer> 2407<!-- END sections: footer-group --></main> 2408 <style> .button {background-color: #000000; color: #ffffff; letter-spacing: 2px; font-weight: 200; text-transform: capitalize !important;} .image-with-text-overlay {margin-top: 2px;} .product-info__sku {font-size: 14px; font-weight: 500;} </style> 2409<div id="shopify-block-AdEg4TnpCWURjL090R__13375078075628245689" class="shopify-block shopify-app-block"> 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430</div><div id="shopify-block-AakNoTzR0N0NkN3Z2W__11532412952436166569" class="shopify-block shopify-app-block"> 2431 2432 2433 <!-- __LXV: 1790125504380;__LXR: https://loox.io;__LXC: fzFCYOawr1; -->
2433<script>var loox_global_hash = '1790125504380'; 2434var loox_bundle_reviews_enabled = false;</script>
2434<style>.loox-reviews-default { max-width: 1200px; margin: 0 auto; }.loox-rating .loox-icon { color:#C4122E; } 2435:root { --lxs-rating-icon-color: #C4122E; }</style> 2436 2437 2438 2439 2440 2441 2442 2443</div><div id="shopify-block-ASytkSGVQMWtUVHhhd__2102808784413787648" class="shopify-block shopify-app-block">
2443<script> 2444 window.cartbiteMainJsUrl="https://s1.staq-cdn.com/grow/api/js/59803303997/main.js?sId=59803303997&v=MZ8H93INWK11ZSETUV2KA2SM"; 2445 window.cartBiteCollectionJsUrl="https://cdn.shopify.com/extensions/01a0acae-48ed-764e-9b04-878137b134ab/cartbite-83/assets/cartbite-collection.js" 2446 setTimeout(async ()=>{ 2447 if(!window.growAppEmbedLoaded){ 2448 !async function(){window.growAppEmbedLoaded=!0;let t=async()=>{if(window.growClient)return;window.cartbiteMainJsUrl||await new Promise(t=>{setTimeout(()=>{t()},1e3)}),window.cartbiteMainJsUrl||(window.cartbiteMainJsUrl=`https://s1.staq-cdn.com/grow/api/js/main.js?sId=${encodeURIComponent(Shopify.shop)}&v=${new Date().valueOf()}&cfs=skip`);let t=document.createElement("script");t.src=window.cartbiteMainJsUrl,t.async=!0,document.getElementsByTagName("head")[0].appendChild(t)};await t(),setTimeout(async()=>{let a=!1;try{a=window.growClient||(await (await fetch("https://s1.staq-cdn.com/api/status")).json()).isActive}catch(s){console.error("Error in getting script from cdn",s)}a||(window.cartbiteMainJsUrl=window.cartbiteMainJsUrl.replace("https://s1.staq-cdn.com","https://js-server.staqlab.com"),await t())},1e3)}(); 2449 } 2450 },1500); 2451 window.gwProductInventoryPolicy={};window.gwProductInventoryQuantity={};window.grow_market="us"; 2452 2453 2454</script>
2454 2455 2456</div><div id="shopify-block-AZFd6aGFnS21FS1hVa__13768625480086291342" class="shopify-block shopify-app-block">
2456<script> 2457 window['ShopifyForms'] = { 2458 ...window['ShopifyForms'], 2459 currentPageType: "page" 2460 }; 2461</script>
2461 2462 2463 2464</div><div id="shopify-block-AaUY3TDlOK3J2UVAyQ__4015264832934714879" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: ecomsend-app -->
2464<script type="text/javascript"> 2465 //SendWILL APPS COMMON JS CODE 2466 window.EcomSendApps = window.EcomSendApps || {} 2467 2468 window.EcomSendApps.design_mode = false 2469 2470 2471 window.EcomSendApps.common = window.EcomSendApps.common || {} 2472 window.EcomSendApps.common.shop = { 2473 permanent_domain: '0e243e-e9.myshopify.com', 2474 currency: "USD", 2475 money_format: "${{amount}}", 2476 id: 59803303997, 2477 } 2478 2479 2480 2481 window.EcomSendApps.common.customer = { 2482 id: null, 2483 tags: null, 2484 email: null, 2485 accepts_marketing: null, 2486 first_name: null, 2487 } 2488 2489 2490 2491 window.EcomSendApps.common.template = 'page' 2492</script>
2492 2493<!-- END app snippet --> 2494
2495<script> 2496 window.EcomSendApps = window.EcomSendApps || {} 2497 /** @description shared localStorage key used by web-pixel sandbox to read storefront GDPR mode */ 2498 const ECOMSEND_GDPR_ENABLED_STORAGE_KEY = "ECOMSEND:GDPR_ENABLED" 2499 /** @description storefront main bundle asset url */ 2500 const ECOMSEND_MAIN_SCRIPT_URL = 'https://cdn.shopify.com/extensions/01a0d28e-b1b8-7cde-aaa7-5e10be7991d9/ecomsend-207/assets/ecomsend.js' 2501 /** @description storefront style asset url */ 2502 const ECOMSEND_MAIN_STYLE_URL = 'https://cdn.shopify.com/extensions/01a0d28e-b1b8-7cde-aaa7-5e10be7991d9/ecomsend-207/assets/style.css' 2503 /** @description storefront wasm asset url for runtime signature module */ 2504 const ECOMSEND_WASM_ASSET_URL = 'https://cdn.shopify.com/extensions/01a0d28e-b1b8-7cde-aaa7-5e10be7991d9/ecomsend-207/assets/client_safe.wasm' 2505 /** @description fallback delay when requestIdleCallback is unavailable */ 2506 const ECOMSEND_IDLE_TIMEOUT_MS = 800 2507 /** @description user interaction events used to trigger lazy init earlier */ 2508 const ECOMSEND_INTERACTION_EVENTS = ["pointerdown", "keydown", "touchstart"] 2509 /** @description global flag key for emergency immediate loading */ 2510 const ECOMSEND_FORCE_IMMEDIATE_FLAG = window.EcomSendApps?.forceImmediateLoad === true 2511 /** @description default GDPR mode comes from block setting and can be overridden on window.EcomSendApps.GDPR */ 2512 const ECOMSEND_DEFAULT_GDPR_FLAG = false 2513 /** @description default CWTracks mode comes from block setting and can be overridden on window.EcomSendApps.CWTracksEnabled */ 2514 const ECOMSEND_DEFAULT_CWTRACKS_ENABLED = false 2515 2516 /** @description normalize merchant-provided GDPR switch into a strict boolean value */ 2517 function normalizeEcomsendBooleanFlag(rawValue) { 2518 if (typeof rawValue === "boolean") { 2519 return rawValue 2520 } 2521 if (typeof rawValue === "number") { 2522 return rawValue === 1 2523 } 2524 if (typeof rawValue === "string") { 2525 const normalizedValue = rawValue.trim().toLowerCase() 2526 return normalizedValue === "true" || normalizedValue === "1" || normalizedValue === "yes" 2527 } 2528 return false 2529 } 2530 2531 /** @description lock runtime switch value on EcomSendApps to reduce accidental console overwrite. */ 2532 function lockEcomsendReadonlyFlag(flagName, flagValue) { 2533 try { 2534 Object.defineProperty(window.EcomSendApps, flagName, { 2535 value: flagValue, 2536 writable: false, 2537 configurable: false, 2538 enumerable: true, 2539 }) 2540 return 2541 } catch (error) {} 2542 window.EcomSendApps[flagName] = flagValue 2543 } 2544 2545 /** @description resolve storefront GDPR mode from merchant theme override */ 2546 function resolveEcomsendGdprMode() { 2547 if (typeof window.EcomSendApps.GDPR === "undefined") { 2548 window.EcomSendApps.GDPR = ECOMSEND_DEFAULT_GDPR_FLAG 2549 } 2550 const gdprEnabled = normalizeEcomsendBooleanFlag(window.EcomSendApps.GDPR) 2551 window.EcomSendApps.GDPR = gdprEnabled 2552 return gdprEnabled 2553 } 2554 2555 /** @description resolve storefront CWTracks mode from merchant theme block setting and runtime override */ 2556 function resolveEcomsendCwTracksMode() { 2557 if (typeof window.EcomSendApps.CWTracksEnabled === "undefined") { 2558 window.EcomSendApps.CWTracksEnabled = ECOMSEND_DEFAULT_CWTRACKS_ENABLED 2559 } 2560 const cwTracksEnabled = normalizeEcomsendBooleanFlag(window.EcomSendApps.CWTracksEnabled) 2561 window.EcomSendApps.CWTracksEnabled = cwTracksEnabled 2562 return cwTracksEnabled 2563 } 2564 2565 /** @description persist storefront GDPR mode so web-pixel sandbox can consume the same switch */ 2566 function syncEcomsendGdprModeToStorage(gdprEnabled) { 2567 if (!window.localStorage) { 2568 return 2569 } 2570 if (gdprEnabled) { 2571 window.localStorage.setItem(ECOMSEND_GDPR_ENABLED_STORAGE_KEY, "true") 2572 return 2573 } 2574 window.localStorage.removeItem(ECOMSEND_GDPR_ENABLED_STORAGE_KEY) 2575 } 2576 2577 /** @description enable GDPR gating only when merchant explicitly turns on storefront GDPR mode */ 2578 const ECOMSEND_GDPR_ENABLED = resolveEcomsendGdprMode() 2579 /** @description enable CWTracks callback/event emit only when merchant turns on CWTracks mode. */ 2580 const ECOMSEND_CWTRACKS_ENABLED = resolveEcomsendCwTracksMode() 2581 lockEcomsendReadonlyFlag("GDPR", ECOMSEND_GDPR_ENABLED) 2582 lockEcomsendReadonlyFlag("CWTracksEnabled", ECOMSEND_CWTRACKS_ENABLED) 2583 2584 try { 2585 syncEcomsendGdprModeToStorage(ECOMSEND_GDPR_ENABLED) 2586 } catch (error) {} 2587 2588 /** @description create main stylesheet node for storefront runtime */ 2589 function createEcomSendMainStyleEle() { 2590 const ecomsendMainStyleEle = document.createElement("link") 2591 ecomsendMainStyleEle.rel = "stylesheet" 2592 ecomsendMainStyleEle.href = ECOMSEND_MAIN_STYLE_URL 2593 ecomsendMainStyleEle.dataset.ecomsendTag = "main-style" 2594 return ecomsendMainStyleEle 2595 } 2596 2597 /** @description append runtime stylesheet exactly once */ 2598 function ensureEcomSendMainStyleLoaded() { 2599 if (document.querySelector('link[data-ecomsend-tag="main-style"]')) { 2600 return 2601 } 2602 const ecomsendMainStyleEle = createEcomSendMainStyleEle() 2603 document.head.appendChild(ecomsendMainStyleEle) 2604 } 2605 2606 /** @description remove interaction listeners after first lazy-init trigger */ 2607 function clearInteractionListeners() {
2608 ECOMSEND_INTERACTION_EVENTS.forEach((eventName) => { 2609 window.removeEventListener(eventName, scheduleMainBundleLoad) 2610 }) 2611 } 2612 2613 /** @description run low-priority task via idle callback with timeout fallback */ 2614 function scheduleLowPriorityTask(taskRunner, timeoutMs) { 2615 if (window.requestIdleCallback) { 2616 window.requestIdleCallback(() => { 2617 taskRunner() 2618 }, { timeout: timeoutMs }) 2619 return 2620 } 2621 window.setTimeout(() => { 2622 taskRunner() 2623 }, timeoutMs) 2624 } 2625 2626 /** @description load main storefront bundle once and keep rollback override */ 2627 function loadEcomsendMainBundle() { 2628 if (window.__ecomsendMainBundleLoaded) { 2629 return 2630 } 2631 window.__ecomsendMainBundleLoaded = true 2632 clearInteractionListeners() 2633 /** @description ensure storefront runtime css is loaded together with main bundle */ 2634 ensureEcomSendMainStyleLoaded() 2635 const ecomsendMainScriptEle = document.createElement("script") 2636 ecomsendMainScriptEle.src = ECOMSEND_MAIN_SCRIPT_URL 2637 ecomsendMainScriptEle.async = true 2638 ecomsendMainScriptEle.dataset.ecomsendTag = "main-script" 2639 document.body.appendChild(ecomsendMainScriptEle) 2640 } 2641 2642 /** @description schedule heavy bundle with idle-first strategy to reduce main-thread contention */ 2643 function scheduleMainBundleLoad() { 2644 if (window.__ecomsendMainBundleLoadScheduled) { 2645 return 2646 } 2647 /** @description dedupe idle scheduling from DOMContentLoaded and first interactions */ 2648 window.__ecomsendMainBundleLoadScheduled = true 2649 if (ECOMSEND_FORCE_IMMEDIATE_FLAG) { 2650 loadEcomsendMainBundle() 2651 return 2652 } 2653 scheduleLowPriorityTask(loadEcomsendMainBundle, ECOMSEND_IDLE_TIMEOUT_MS) 2654 } 2655 2656 /** @description cache marketing params for pixel/report flows before heavy bundle starts */ 2657 function cacheMarketingParams() { 2658 const urlParams = new URLSearchParams(window.location.search) 2659 const marketingId = urlParams.get("ec_marketing_id") 2660 const ecEmailId = urlParams.get("ec_email_id") 2661 const ecMarketingSign = urlParams.get("ec_marketing_sign") 2662 2663 if (marketingId && window.localStorage) { 2664 window.localStorage.setItem("ec_marketing_id", marketingId) 2665 } 2666 if (ecEmailId && window.localStorage) { 2667 window.localStorage.setItem("ec_email_id", ecEmailId) 2668 } 2669 if (ecMarketingSign && window.localStorage) { 2670 window.localStorage.setItem("ec_marketing_sign", ecMarketingSign) 2671 } 2672 } 2673 2674 /** @description check whether marketing storage is allowed under Shopify customer privacy state */ 2675 function isMarketingStorageAllowedByCustomerPrivacy() { 2676 const customerPrivacy = window?.Shopify?.customerPrivacy 2677 if (!customerPrivacy) { 2678 return false 2679 } 2680 const marketingAllowed = typeof customerPrivacy.marketingAllowed === "function" && customerPrivacy.marketingAllowed() 2681 if (marketingAllowed) { 2682 return true 2683 } 2684 if (typeof customerPrivacy.currentVisitorConsent === "function") { 2685 const consent = customerPrivacy.currentVisitorConsent() 2686 return consent?.marketing === "yes" 2687 } 2688 return false 2689 } 2690 2691 /** @description check whether analytics storage is allowed under Shopify customer privacy state */ 2692 function isAnalyticsStorageAllowedByCustomerPrivacy() { 2693 const customerPrivacy = window?.Shopify?.customerPrivacy 2694 if (!customerPrivacy) { 2695 return false 2696 } 2697 const analyticsAllowed = typeof customerPrivacy.analyticsProcessingAllowed === "function" && customerPrivacy.analyticsProcessingAllowed() 2698 if (analyticsAllowed) { 2699 return true 2700 } 2701 if (typeof customerPrivacy.currentVisitorConsent === "function") { 2702 const consent = customerPrivacy.currentVisitorConsent() 2703 return consent?.analytics === "yes" 2704 } 2705 return false 2706 } 2707 2708 /** @description execute marketing param caching with GDPR guard: functional off when GDPR disabled */ 2709 function cacheMarketingParamsWithGdprGuard() { 2710 if (!ECOMSEND_GDPR_ENABLED) { 2711 cacheMarketingParams() 2712 return 2713 } 2714 if (isMarketingStorageAllowedByCustomerPrivacy()) { 2715 cacheMarketingParams() 2716 } 2717 } 2718 2719 /** @description cache shop id used by pixel report branches */ 2720 function cacheShopIdForPixel() { 2721 if (!window.EcomSendApps?.common?.shop?.id || !window.localStorage) { 2722 return 2723 } 2724 window.localStorage.setItem("ECOMSEND:ES_SHOP_ID", window.EcomSendApps.common.shop.id) 2725 } 2726 2727 /** 2728 * Flow client config (e.g. browserStaySeconds) is fetched by the main ecomsend.js bundle: 2729 * bootstrapFlowClientConfig â POST /api/automation/v2/clientFlowConfig (API Sign) 2730 * â localStorage ECOMSEND:FLOW_CLIENT_CONFIG.byEventId â read by web-pixel. 2731 * Keep new C-end Flow config on this path; do not scatter fetches in liquid. 2732 */ 2733 2734 /** @description execute shop id caching with GDPR guard and shared consent policy */ 2735 function cacheShopIdWithGdprGuard() { 2736 if (!ECOMSEND_GDPR_ENABLED) { 2737 cacheShopIdForPixel() 2738 return 2739 } 2740 if (isAnalyticsStorageAllowedByCustomerPrivacy()) { 2741 cacheShopIdForPixel() 2742 } 2743 } 2744 2745 /** @description load Shopify consent-tracking API before GDPR-gated cache writes */ 2746 function withCustomerPrivacyApiReady(onReady) { 2747 if (!ECOMSEND_GDPR_ENABLED) { 2748 onReady() 2749 return 2750 } 2751 if (window?.Shopify?.customerPrivacy) { 2752 onReady() 2753 return 2754 } 2755 if (typeof window?.Shopify?.loadFeatures !== "function") { 2756 return 2757 } 2758 window.Shopify.loadFeatures( 2759 [{ name: "consent-tracking-api", version: "0.1" }], 2760 (error) => { 2761 if (error) { 2762 return 2763 } 2764 onReady() 2765 } 2766 ) 2767 } 2768 2769 try { 2770 withCustomerPrivacyApiReady(() => { 2771 cacheMarketingParamsWithGdprGuard() 2772 cacheShopIdWithGdprGuard() 2773 }) 2774 if (ECOMSEND_GDPR_ENABLED) { 2775 document.addEventListener("visitorConsentCollected", () => { 2776 cacheMarketingParamsWithGdprGuard() 2777 cacheShopIdWithGdprGuard() 2778 }) 2779 } 2780 } catch (e) {} 2781 2782 /** @description inject wasm asset url into shared namespace before main bundle executes */ 2783 window.EcomSendApps.wasmURL = ECOMSEND_WASM_ASSET_URL 2784
2785 ECOMSEND_INTERACTION_EVENTS.forEach((eventName) => { 2786 window.addEventListener(eventName, scheduleMainBundleLoad, { once: true, passive: true }) 2787 }) 2788 2789 if (document.readyState === "loading") { 2790 document.addEventListener("DOMContentLoaded", scheduleMainBundleLoad, { once: true }) 2791 } else { 2792 scheduleMainBundleLoad() 2793 } 2794</script>
2794 2795 2796<style id="ecomsend-custom-style"></style> 2797
2798<script>window.shopLocale = 'en'</script>
2798 2799
2800<script> 2801 /** @description timeout used for deferred discount request scheduling */ 2802 const ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS = 1500 2803 2804 /** @description apply discount code from url query only when parameter exists */ 2805 function applyWillDiscountCode() { 2806 const urlParams = new URLSearchParams(window.location.search) 2807 const willDiscountCode = urlParams.get("willDiscountCode") 2808 if (!willDiscountCode || /[\u0000-\u001F\u007F]/.test(willDiscountCode)) { 2809 return 2810 } 2811 fetch("/cart/update.js", { 2812 method: "POST", 2813 headers: { 2814 "Content-Type": "application/json", 2815 }, 2816 body: JSON.stringify({ 2817 discount: willDiscountCode, 2818 }), 2819 }) 2820 } 2821 2822 try { 2823 if (!window.__ecomsendDeferredTasksScheduled) { 2824 /** @description global guard to avoid duplicate deferred task scheduling */ 2825 window.__ecomsendDeferredTasksScheduled = true 2826 if (window.requestIdleCallback) { 2827 window.requestIdleCallback(() => { 2828 applyWillDiscountCode() 2829 }, { timeout: ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS }) 2830 } else { 2831 window.setTimeout(() => { 2832 applyWillDiscountCode() 2833 }, ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS) 2834 } 2835 } 2836 } catch (error) {} 2837</script>
2837 2838 2839 2840 2841</div><div id="shopify-block-AcFN1M1hVN1RCVTB6Y__5057006142565981955" class="shopify-block shopify-app-block">
2841<script type="text/javascript"> 2842 const promoConfig = { 2843 fontSize: '16', 2844 logoType: 'logo', 2845 logoColor: 'blue', 2846 pageType: 'cart', 2847 textAlign: 'left' 2848 }; 2849 const drawerAppData = '{"theme_app_configuration"=>Metafields::MetafieldDrop}'; 2850 const drawerPromoAppConfig = (drawerAppData == '{}') ? {} : JSON.parse('{"region_public_keys":{"us":"5RE551VO1DYI4LUL","ca":""}}') ; 2851 const drawerHasRegionKeys = drawerPromoAppConfig.hasOwnProperty('region_public_keys'); 2852 let drawerPublicKey = null; 2853 if (Shopify.country == 'US') 2854 drawerPublicKey = (drawerHasRegionKeys) ? drawerPromoAppConfig.region_public_keys.us : null; 2855 if (Shopify.country == 'CA') 2856 drawerPublicKey = (drawerHasRegionKeys) ? drawerPromoAppConfig.region_public_keys.ca : null; 2857 const affirmPublicApiKeyCartDrawer = ('') ? '' : drawerPublicKey; 2858 const customDrawerTotalSelector = ('') ? '' : null; 2859 const customAdjacentElementSelector = ('') ? '' : null; 2860 const customAddToCartSelector = ('') ? '' : null; 2861 const customCartDrawerSelector = ('') ? '' : null; 2862 const publicKeyEntered = ('') ? '' : null; 2863</script>
2863 2864 2865</div>
2865<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
2865 2866<shopify-store store-domain="https://spinning.com" country="US" language="en"></shopify-store> 2867<shopify-chat></shopify-chat> 2868</body> 2869</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.