PageSourceSearch

https://spinning.eu/cart

html spinning.eu collected 2026-10-02 15:08:17 UTC 308,412 bytes, 4,450 lines download raw bytes

1<!doctype html>
2
3<html lang="en" dir="ltr">
4  <head>
5	<!-- Added by AVADA SEO Suite -->
6	
6<script>
7  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/'];
8  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&gtm=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&gtm=45je52q0v887792846za200&tag_exp=101732279~101732281~102067808~102482433~102539968~102558064~102587591~102605417~102640600~102658453~102717422~102732003'];
9  window.AVADA_SPEED_BLACKLIST = avadaLightJsInclude.map(item => new RegExp(item, 'i'));
10  window.AVADA_SPEED_WHITELIST = avadaLightJsExclude.map(item => new RegExp(item, 'i'));
11</script>
11
12
13<script>
14  const isSpeedUpEnable = !1741336271524 || Date.now() < 1741336271524;
15  if (isSpeedUpEnable) {
16    const avadaSpeedUp=1;
17    if(isSpeedUpEnable) {
18  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
18(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
18x23f9e9[_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
18X','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();}
19}
20    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
20h((n=>{delete Object.assign(e[0],{[t(n)]:e[0][n]})[n]})),s.apply(this,e),this)},e.jQs.push(n),t=n}})}}
21new LightJsLoader(["keydown","mousemove","touchend","touchmove","touchstart","wheel"]);
22  }
23</script>
23<!-- meta basic type collection --><!-- meta basic type article -->
24
25	<!-- /Added by AVADA SEO Suite -->
26    <meta charset="utf-8">
27    <meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, minimum-scale=1.0, maximum-scale=1.0">
28    <meta name="theme-color" content="#ffffff">
29
30    <title>Your Shopping Cart</title><link rel="canonical" href="https://spinning.eu/cart"><link rel="shortcut icon" href="//spinning.eu/cdn/shop/files/Spinning-favicon.png?v=1753188800&width=96">
31      <link rel="apple-touch-icon" href="//spinning.eu/cdn/shop/files/Spinning-favicon.png?v=1753188800&width=180"><link rel="preconnect" href="https://cdn.shopify.com">
32    <link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin>
33    <link rel="dns-prefetch" href="https://productreviews.shopifycdn.com">
34    <link rel="preconnect" href="https://www.powr.io" crossorigin>
35    <link rel="dns-prefetch" href="//www.powr.io">
36    
36<script id="maddogg-host-training-powr-resource-hints">
37      (function () {
38        var ids = { en: '9b07da4b_1648678467', es: '7572b6a5_1648680870', nl: 'eb1c8129_1648680649', de: 'a4658b91_1783329175', fr: 'f0bf39af_1783333039', it: 'f6fbb036_1783335314' };
39        function supported(value) { var locale = String(value || '').trim().toLowerCase().replace('_', '-').split('-')[0]; return ids[locale] ? locale : ''; }
40        function pagePath() { var parts = String(location.pathname || '').replace(/\/+/g, '/').split('/').filter(Boolean); if (parts.length && supported(parts[0])) parts.shift(); return '/' + parts.join('/'); }
41        if (!/\/pages\/spin-studios-host-a-training\/?$/.test(pagePath())) return;
42        var locale = supported(location.pathname.split('/').filter(Boolean)[0]) || supported(document.documentElement && document.documentElement.lang) || 'en';
43        var formId = ids[locale] || ids.en;
44        function addHint(rel, href, asValue) { var link = document.createElement('link'); link.rel = rel; link.href = href; if (asValue) link.as = asValue; if (href.indexOf('powr.io') > -1) link.crossOrigin = 'anonymous'; document.head.appendChild(link); }
45        addHint('preload', 'https://www.powr.io/powr.js?platform=shopify', 'script');
46        addHint('prefetch', 'https://www.powr.io/form-builder/u/' + formId + '#platform=shopify&url=' + encodeURIComponent(location.href), 'document');
47        window.__MaddoggHostTrainingPowrHint = { locale: locale, formId: formId };
48      })();
49    </script>
49<link rel="preload" href="//spinning.eu/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="//spinning.eu/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2" as="font" type="font/woff2" crossorigin><meta property="og:type" content="website">
50  <meta property="og:title" content="Your Shopping Cart"><meta property="og:url" content="https://spinning.eu/cart">
51<meta property="og:site_name" content="Spinning EU"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Your Shopping Cart">
52  <meta name="twitter:description" content="Your Shopping Cart">
52<script type="application/ld+json">
53  {
54    "@context": "https://schema.org",
55    "@type": "BreadcrumbList",
56    "itemListElement": [{
57        "@type": "ListItem",
58        "position": 1,
59        "name": "Home",
60        "item": "https://spinning.eu"
61      }]
62  }
63</script>
63<style>/* Typography (heading) */
64  @font-face {
65  font-family: Montserrat;
66  font-weight: 400;
67  font-style: normal;
68  font-display: fallback;
69  src: url("//spinning.eu/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2") format("woff2"),
70       url("//spinning.eu/cdn/fonts/montserrat/montserrat_n4.a6c632ca7b62da89c3594789ba828388aac693fe.woff") format("woff");
71}
72
73@font-face {
74  font-family: Montserrat;
75  font-weight: 400;
76  font-style: italic;
77  font-display: fallback;
78  src: url("//spinning.eu/cdn/fonts/montserrat/montserrat_i4.5a4ea298b4789e064f62a29aafc18d41f09ae59b.woff2") format("woff2"),
79       url("//spinning.eu/cdn/fonts/montserrat/montserrat_i4.072b5869c5e0ed5b9d2021e4c2af132e16681ad2.woff") format("woff");
80}
81
82/* Typography (body) */
83  @font-face {
84  font-family: Montserrat;
85  font-weight: 400;
86  font-style: normal;
87  font-display: fallback;
88  src: url("//spinning.eu/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2") format("woff2"),
89       url("//spinning.eu/cdn/fonts/montserrat/montserrat_n4.a6c632ca7b62da89c3594789ba828388aac693fe.woff") format("woff");
90}
91
92@font-face {
93  font-family: Montserrat;
94  font-weight: 400;
95  font-style: italic;
96  font-display: fallback;
97  src: url("//spinning.eu/cdn/fonts/montserrat/montserrat_i4.5a4ea298b4789e064f62a29aafc18d41f09ae59b.woff2") format("woff2"),
98       url("//spinning.eu/cdn/fonts/montserrat/montserrat_i4.072b5869c5e0ed5b9d2021e4c2af132e16681ad2.woff") format("woff");
99}
100
101@font-face {
102  font-family: Montserrat;
103  font-weight: 700;
104  font-style: normal;
105  font-display: fallback;
106  src: url("//spinning.eu/cdn/fonts/montserrat/montserrat_n7.3c434e22befd5c18a6b4afadb1e3d77c128c7939.woff2") format("woff2"),
107       url("//spinning.eu/cdn/fonts/montserrat/montserrat_n7.5d9fa6e2cae713c8fb539a9876489d86207fe957.woff") format("woff");
108}
109
110@font-face {
111  font-family: Montserrat;
112  font-weight: 700;
113  font-style: italic;
114  font-display: fallback;
115  src: url("//spinning.eu/cdn/fonts/montserrat/montserrat_i7.a0d4a463df4f146567d871890ffb3c80408e7732.woff2") format("woff2"),
116       url("//spinning.eu/cdn/fonts/montserrat/montserrat_i7.f6ec9f2a0681acc6f8152c40921d2a4d2e1a2c78.woff") format("woff");
117}
118
119:root {
120    /**
121     * ---------------------------------------------------------------------
122     * SPACING VARIABLES
123     *
124     * We are using a spacing inspired from frameworks like Tailwind CSS.
125     * ---------------------------------------------------------------------
126     */
127    --spacing-0-5: 0.125rem; /* 2px */
128    --spacing-1: 0.25rem; /* 4px */
129    --spacing-1-5: 0.375rem; /* 6px */
130    --spacing-2: 0.5rem; /* 8px */
131    --spacing-2-5: 0.625rem; /* 10px */
132    --spacing-3: 0.75rem; /* 12px */
133    --spacing-3-5: 0.875rem; /* 14px */
134    --spacing-4: 1rem; /* 16px */
135    --spacing-4-5: 1.125rem; /* 18px */
136    --spacing-5: 1.25rem; /* 20px */
137    --spacing-5-5: 1.375rem; /* 22px */
138    --spacing-6: 1.5rem; /* 24px */
139    --spacing-6-5: 1.625rem; /* 26px */
140    --spacing-7: 1.75rem; /* 28px */
141    --spacing-7-5: 1.875rem; /* 30px */
142    --spacing-8: 2rem; /* 32px */
143    --spacing-8-5: 2.125rem; /* 34px */
144    --spacing-9: 2.25rem; /* 36px */
145    --spacing-9-5: 2.375rem; /* 38px */
146    --spacing-10: 2.5rem; /* 40px */
147    --spacing-11: 2.75rem; /* 44px */
148    --spacing-12: 3rem; /* 48px */
149    --spacing-14: 3.5rem; /* 56px */
150    --spacing-16: 4rem; /* 64px */
151    --spacing-18: 4.5rem; /* 72px */
152    --spacing-20: 5rem; /* 80px */
153    --spacing-24: 6rem; /* 96px */
154    --spacing-28: 7rem; /* 112px */
155    --spacing-32: 8rem; /* 128px */
156    --spacing-36: 9rem; /* 144px */
157    --spacing-40: 10rem; /* 160px */
158    --spacing-44: 11rem; /* 176px */
159    --spacing-48: 12rem; /* 192px */
160    --spacing-52: 13rem; /* 208px */
161    --spacing-56: 14rem; /* 224px */
162    --spacing-60: 15rem; /* 240px */
163    --spacing-64: 16rem; /* 256px */
164    --spacing-72: 18rem; /* 288px */
165    --spacing-80: 20rem; /* 320px */
166    --spacing-96: 24rem; /* 384px */
167
168    /* Container */
169    --container-max-width: 1800px;
170    --container-narrow-max-width: 1550px;
171    --container-gutter: var(--spacing-5);
172    --section-outer-spacing-block: var(--spacing-14);
173    --section-inner-max-spacing-block: var(--spacing-12);
174    --section-inner-spacing-inline: var(--container-gutter);
175    --section-stack-spacing-block: var(--spacing-10);
176
177    /* Grid gutter */
178    --grid-gutter: var(--spacing-5);
179
180    /* Product list settings */
181    --product-list-row-gap: var(--spacing-8);
182    --product-list-column-gap: var(--grid-gutter);
183
184    /* Form settings */
185    --input-gap: var(--spacing-2);
186    --input-height: 2.625rem;
187    --input-padding-inline: var(--spacing-4);
188
189    /* Other sizes */
190    --sticky-area-height: calc(var(--sticky-announcement-bar-enabled, 0) * var(--announcement-bar-height, 0px) + var(--sticky-header-enabled, 0) * var(--header-height, 0px));
191
192    /* RTL support */
193    --transform-logical-flip: 1;
194    --transform-origin-start: left;
195    --transform-origin-end: right;
196
197    /**
198     * ---------------------------------------------------------------------
199     * TYPOGRAPHY
200     * ---------------------------------------------------------------------
201     */
202
203    /* Font properties */
204    --heading-font-family: Montserrat, sans-serif;
205    --heading-font-weight: 400;
206    --heading-font-style: normal;
207    --heading-text-transform: uppercase;
208    --heading-letter-spacing: 0.0em;
209    --text-font-family: Montserrat, sans-serif;
210    --text-font-weight: 400;
211    --text-font-style: normal;
212    --text-letter-spacing: 0.0em;
213
214    /* Font sizes */
215    --text-h0: 2.5rem;
216    --text-h1: 1.75rem;
217    --text-h2: 1.5rem;
218    --text-h3: 1.375rem;
219    --text-h4: 1.125rem;
220    --text-h5: 1.125rem;
221    --text-h6: 1rem;
222    --text-xs: 0.6875rem;
223    --text-sm: 0.75rem;
224    --text-base: 0.875rem;
225    --text-lg: 1.125rem;
226
227    /**
228     * ---------------------------------------------------------------------
229     * COLORS
230     * ---------------------------------------------------------------------
231     */
232
233    /* Color settings */--accent: 0 0 0;
234    --text-primary: 0 0 0;
235    --background-primary: 255 255 255;
236    --dialog-background: 255 255 255;
237    --border-color: var(--text-color, var(--text-primary)) / 0.12;
238
239    /* Button colors */
240    --button-background-primary: 0 0 0;
241    --button-text-primary: 255 255 255;
242    --button-background-secondary: 255 255 255;
243    --button-text-secondary: 0 0 0;
244
245    /* Status colors */
246    --success-background: 224 244 232;
247    --success-text: 0 163 65;
248    --warning-background: 255 246 233;
249    --warning-text: 255 183 74;
250    --error-background: 254 231 231;
251    --error-text: 248 58 58;
252
253    /* Product colors */
254    --on-sale-text: 196 18 46;
255    --on-sale-badge-background: 196 18 46;
256    --on-sale-badge-text: 255 255 255;
257    --sold-out-badge-background: 0 0 0;
258    --sold-out-badge-text: 255 255 255;
259    --primary-badge-background: 118 57 229;
260    --primary-badge-text: 255 255 255;
261    --star-color: 247 177 25;
262    --product-card-background: 255 255 255;
263    --product-card-text: 26 26 26;
264
265    /* Header colors */
266    --header-background: 255 255 255;
267    --header-text: 26 26 26;
268
269    /* Footer colors */
270    --footer-background: 0 0 0;
271    --footer-text: 255 255 255;
272
273    /* Rounded variables (used for border radius) */
274    --rounded-xs: 0.0rem;
275    --rounded-sm: 0.0rem;
276    --rounded: 0.0rem;
277    --rounded-lg: 0.0rem;
278    --rounded-full: 9999px;
279
280    --rounded-button: 0.0rem;
281    --rounded-input: 0.0rem;
282
283    /* Box shadow */
284    --shadow-sm: 0 2px 8px rgb(var(--text-primary) / 0.0);
285    --shadow: 0 5px 15px rgb(var(--text-primary) / 0.0);
286    --shadow-md: 0 5px 30px rgb(var(--text-primary) / 0.0);
287    --shadow-block: 0px 0px 50px rgb(var(--text-primary) / 0.0);
288
289    /**
290     * ---------------------------------------------------------------------
291     * OTHER
292     * ---------------------------------------------------------------------
293     */
294
295    --stagger-products-reveal-opacity: 0;
296    --cursor-close-svg-url: url(//spinning.eu/cdn/shop/t/9/assets/cursor-close.svg?v=147174565022153725511788350492);
297    --cursor-zoom-in-svg-url: url(//spinning.eu/cdn/shop/t/9/assets/cursor-zoom-in.svg?v=154953035094101115921788350492);
298    --cursor-zoom-out-svg-url: url(//spinning.eu/cdn/shop/t/9/assets/cursor-zoom-out.svg?v=16155520337305705181788350492);
299    --checkmark-svg-url: url(//spinning.eu/cdn/shop/t/9/assets/checkmark.svg?v=77552481021870063511788350492);
300  }
301
302  [dir="rtl"]:root {
303    /* RTL support */
304    --transform-logical-flip: -1;
305    --transform-origin-start: right;
306    --transform-origin-end: left;
307  }
308
309  @media screen and (min-width: 700px) {
310    :root {
311      /* Typography (font size) */
312      --text-h0: 3.25rem;
313      --text-h1: 2.25rem;
314      --text-h2: 1.75rem;
315      --text-h3: 1.625rem;
316      --text-h4: 1.25rem;
317      --text-h5: 1.25rem;
318      --text-h6: 1.125rem;
319
320      --text-xs: 0.75rem;
321      --text-sm: 0.875rem;
322      --text-base: 1.0rem;
323      --text-lg: 1.25rem;
324
325      /* Spacing */
326      --container-gutter: 2rem;
327      --section-outer-spacing-block: var(--spacing-20);
328      --section-inner-max-spacing-block: var(--spacing-14);
329      --section-inner-spacing-inline: var(--spacing-14);
330      --section-stack-spacing-block: var(--spacing-12);
331
332      /* Grid gutter */
333      --grid-gutter: var(--spacing-6);
334
335      /* Product list settings */
336      --product-list-row-gap: var(--spacing-12);
337
338      /* Form settings */
339      --input-gap: 1rem;
340      --input-height: 3.125rem;
341      --input-padding-inline: var(--spacing-5);
342    }
343  }
344
345  @media screen and (min-width: 1000px) {
346    :root {
347      /* Spacing settings */
348      --container-gutter: var(--spacing-12);
349      --section-outer-spacing-block: var(--spacing-20);
350      --section-inner-max-spacing-block: var(--spacing-18);
351      --section-inner-spacing-inline: var(--spacing-18);
352      --section-stack-spacing-block: var(--spacing-12);
353    }
354  }
355
356  @media screen and (min-width: 1150px) {
357    :root {
358      /* Spacing settings */
359      --container-gutter: var(--spacing-12);
360      --section-outer-spacing-block: var(--spacing-24);
361      --section-inner-max-spacing-block: var(--spacing-18);
362      --section-inner-spacing-inline: var(--spacing-18);
363      --section-stack-spacing-block: var(--spacing-12);
364    }
365  }
366
367  @media screen and (min-width: 1400px) {
368    :root {
369      /* Typography (font size) */
370      --text-h0: 4rem;
371      --text-h1: 3rem;
372      --text-h2: 2.5rem;
373      --text-h3: 1.75rem;
374      --text-h4: 1.5rem;
375      --text-h5: 1.25rem;
376      --text-h6: 1.25rem;
377
378      --section-outer-spacing-block: var(--spacing-28);
379      --section-inner-max-spacing-block: var(--spacing-20);
380      --section-inner-spacing-inline: var(--spacing-20);
381    }
382  }
383
384  @media screen and (min-width: 1600px) {
385    :root {
386      --section-outer-spacing-block: var(--spacing-32);
387      --section-inner-max-spacing-block: var(--spacing-24);
388      --section-inner-spacing-inline: var(--spacing-24);
389    }
390  }
391
392  /**
393   * ---------------------------------------------------------------------
394   * LIQUID DEPENDANT CSS
395   *
396   * Our main CSS is Liquid free, but some very specific features depend on
397   * theme settings, so we have them here
398   * ---------------------------------------------------------------------
399   */@media screen and (pointer: fine) {
400        /* The !important are for the Shopify Payment button to ensure we override the default from Shopify styles */
401        .button:not([disabled]):not(.button--outline):hover, .btn:not
401([disabled]):hover, .shopify-payment-button__button--unbranded:not([disabled]):hover {
402          background-color: transparent !important;
403          color: rgb(var(--button-outline-color) / var(--button-background-opacity, 1)) !important;
404          box-shadow: inset 0 0 0 2px currentColor !important;
405        }
406
407        .button--outline:not([disabled]):hover {
408          background: rgb(var(--button-background));
409          color: rgb(var(--button-text-color));
410          box-shadow: inset 0 0 0 2px rgb(var(--button-background));
411        }
412      }</style>
412<script>
413  // This allows to expose several variables to the global scope, to be used in scripts
414  window.themeVariables = {
415    settings: {
416      showPageTransition: null,
417      staggerProductsApparition: true,
418      reduceDrawerAnimation: false,
419      reduceMenuAnimation: false,
420      headingApparition: "fade",
421      pageType: "cart",
422      moneyFormat: "€{{amount_with_comma_separator}}",
423      moneyWithCurrencyFormat: "€{{amount_with_comma_separator}} EUR",
424      currencyCodeEnabled: true,
425      cartType: "popover",
426      showDiscount: true,
427      discountMode: "saving",
428      pageBackground: "#ffffff",
429      textColor: "#000000"
430    },
431
432    strings: {
433      accessibilityClose: "Close",
434      accessibilityNext: "Next",
435      accessibilityPrevious: "Previous",
436      closeGallery: "Close gallery",
437      zoomGallery: "Zoom",
438      errorGallery: "Image cannot be loaded",
439      searchNoResults: "No results could be found.",
440      addOrderNote: "Add order note",
441      editOrderNote: "Edit order note",
442      shippingEstimatorNoResults: "Sorry, we do not ship to your address.",
443      shippingEstimatorOneResult: "There is one shipping rate for your address:",
444      shippingEstimatorMultipleResults: "There are several shipping rates for your address:",
445      shippingEstimatorError: "One or more error occurred while retrieving shipping rates:"
446    },
447
448    breakpoints: {
449      'sm': 'screen and (min-width: 700px)',
450      'md': 'screen and (min-width: 1000px)',
451      'lg': 'screen and (min-width: 1150px)',
452      'xl': 'screen and (min-width: 1400px)',
453
454      'sm-max': 'screen and (max-width: 699px)',
455      'md-max': 'screen and (max-width: 999px)',
456      'lg-max': 'screen and (max-width: 1149px)',
457      'xl-max': 'screen and (max-width: 1399px)'
458    }
459  };
460
461  // For detecting native share
462  document.documentElement.classList.add(`native-share--${navigator.share ? 'enabled' : 'disabled'}`);</script>
462<!-- Google tag (gtag.js) -->
463<!--
vendor: 63 bytes, line 463
463<script async src="https://www.googletagmanager.com/gtag/js?id=
463G-D7CZZ970PJ
vendor: 12 bytes, line 463
463"></script>
464<script>
465  
vendor: 134 bytes, lines 465-469
465window.dataLayer = window.dataLayer || [];
466  function gtag(){dataLayer.push(arguments);}
467  gtag('js', new Date());
468
469  gtag('config', '
469G-D7CZZ970PJ
vendor: 4 bytes, line 469
469');
470</script>
470-->
471
472
473
474<!-- GEOIP -->
475<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
vendor: 1 bytes, line 475
475
476<script type="text/javascript" src="https://geoip-js.com/js/apis/geoip2/v2.1/geoip2.js"></script>
476
477
478<!--Joel's updated code-->
479<!-- 
480<script type="text/javascript">
481  function runGeoRedirect() {
482    var arrPath = window.location.pathname.split('/').filter(function(p) { return p.trim() !== ""; });
483    var language = (navigator.language || navigator.userLanguage).substring(0, 2).toLowerCase();
484    var publishedLocalePaths = ['de', 'es', 'fr', 'it', 'nl'];
485
486    if (window.location.hostname.indexOf('.myshopify.com') > -1) {
487      console.log('GeoIP: Shopify preview domain, skipping redirect');
488      return;
489    }
490
491    if (arrPath.length > 0 && publishedLocalePaths.indexOf(arrPath[0].toLowerCase()) > -1) {
492      console.log('GeoIP: explicit Shopify locale path selected, skipping redirect');
493      return;
494    }
495
496    var sitePrefix        = 'https://';
497    var internationalSite = "en1.spinning.com";
498    var regions           = ["NA", "SA", "OC", "AS"];
499    var countries         = ["US", "CA", "BR", "MX", "CL", "AR", "CU", "AU", "NZ"];
500    var excludedCountries = ['IL','AE','BH','SA','TR','ZA'];
501    var ipAddresses       = ["76.80.194.178", "104.187.115.50"];
502
503    var CurrentPage = window.location.pathname + window.location.search;
504    var usSite      = "https://spinning.com" + CurrentPage;
505    var usSiteEs    = "https://spinning.com/es" + CurrentPage;
506
507    var onSuccess = function(geoipResponse) {
508      if (!geoipResponse.country || !geoipResponse.country.iso_code) {
509        console.log("GeoIP: no country code returned");
510        return;
511      }
512
513      var ip      = geoipResponse.traits.ip_address;
514      var region  = geoipResponse.continent.code.toUpperCase();
515      var country = geoipResponse.country.iso_code.toUpperCase();
516
517      console.log("GeoIP resolved -- IP:", ip, "| Country:", country, "| Region:", region);
518
519      if (ipAddresses.indexOf(ip) > -1) {
520        console.log("GeoIP: IP is excluded, skipping redirect");
521        return;
522      }
523
524      if (excludedCountries.indexOf(country) > -1) {
525        console.log("GeoIP: country is excluded, skipping redirect");
526        return;
527      }
528
529      if (countries.indexOf(country) > -1 || regions.indexOf(region) > -1) {
530        if (arrPath.length === 0 && language === 'es') {
531          console.log("GeoIP: -> US Spanish site", usSiteEs);
532          window.location.href = usSiteEs;
533        } else {
534          console.log("GeoIP: -> US site", usSite);
535          // Comment this line out temporarily to test without actually redirecting
536          window.location.href = usSite;
537        }
538      } else if (language === 'es' || language === 'de') {
539        var intlUrl = sitePrefix + internationalSite + "/" + language + "/";
540        console.log("GeoIP: -> International site", intlUrl);
541        window.location.href = intlUrl;
542      } else {
543        console.log("GeoIP: no redirect rule matched for", country, region, language);
544      }
545    };
546
547    var onError = function(error) {
548      console.warn("GeoIP lookup failed:", error);
549    };
550
551    // Wait for geoip2 to be available before calling it
552    var attempts = 0;
553    var waitForGeoIP = setInterval(function() {
554      attempts++;
555      if (typeof geoip2 !== 'undefined') {
556        clearInterval(waitForGeoIP);
557        console.log("GeoIP: library ready, running lookup...");
558        geoip2.country(onSuccess, onError);
559      } else if (attempts > 20) {
560        clearInterval(waitForGeoIP);
561        console.warn("GeoIP: library never loaded after 2s, giving up");
562      }
563    }, 100);
564  }
565
566  // Run after DOM is ready
567  document.addEventListener("DOMContentLoaded", runGeoRedirect);
568</script>
568-->
569
570
571<script type="text/javascript">
572  function runGeoRedirect() {
573
574    /* ── TEST MODE ────────────────────────────────────────────────────
575       Append ?georedirect=test to any URL to switch test mode ON for
576       the rest of the tab session. In test mode the script:
577         - LOGS what it would do but never actually redirects
578         - runs on every page load (session flag ignored)
579         - also runs on .myshopify.com preview domains
580         - exposes window.__geoSimulate(countryCode, continentCode) in
581           the console to simulate visitors from any country
582       Turn off: close the tab, or run
583       sessionStorage.removeItem('geoRedirectTest') in the console.   */
584    var testMode = false;
585    try {
586      if (window.location.search.indexOf('georedirect=test') > -1) {
587        sessionStorage.setItem('geoRedirectTest', '1');
588      }
589      testMode = sessionStorage.getItem('geoRedirectTest') === '1';
590    } catch (e) { /* sessionStorage unavailable — test mode off */ }
591    if (testMode) console.log('%cGeoIP TEST MODE — no real redirects will happen', 'color:orange;font-weight:bold');
592
593    /* ── FIX 1: Run at most once per browsing session ─────────────────
594       The geo decision is made on the first page load only. Anything the
595       visitor does after that (including manually picking a language in
596       the Shopify selector) is respected and never overridden.        */
597    try {
598      if (!testMode && sessionStorage.getItem('geoRedirectChecked')) {
599        console.log('GeoIP: already evaluated this session, skipping');
600        return;
601      }
602      // Set the flag BEFORE redirecting so the back button / the target
603      // page never triggers a second evaluation.
604      if (!testMode) sessionStorage.setItem('geoRedirectChecked', '1');
605    } catch (e) {
606      // sessionStorage unavailable (some privacy modes) — continue anyway
607    }
608
609    var arrPath  = window.location.pathname.split('/').filter(function (p) { return p.trim() !== ''; });
610    var language = (navigator.language || navigator.userLanguage).substring(0, 2).toLowerCase();
611    var publishedLocalePaths = ['de', 'es', 'fr', 'it', 'nl'];
612    var manualLocaleStorageKey = 'maddoggGeoCountrySync:v3:' + window.location.hostname + ':manual_locale';
613    var manualLocaleMaxAgeMs = 180 * 24 * 60 * 60 * 1000;
614
615    function readPersistentManualLocale() {
616      try {
617        var raw = window.localStorage.getItem(manualLocaleStorageKey);
618        if (!raw) return '';
619        var parsed = JSON.parse(raw);
620        var locale = String(parsed.locale || '').trim().toLowerCase().replace('_', '-').split('-')[0];
621        var selectedAt = Date.parse(parsed.at || 0);
622        var ageMs = Date.now() - selectedAt;
623        var supported = locale === 'en' || publishedLocalePaths.indexOf(locale) > -1;
624        if (!supported || !isFinite(selectedAt) || ageMs < 0 || ageMs > manualLocaleMaxAgeMs) {
625          window.localStorage.removeItem(manualLocaleStorageKey);
626          return '';
627        }
628        return locale;
629      } catch (e) {
630        return '';
631      }
632    }
633
634    function localeFromPathSegment(value) {
635      var match = String(value || '').trim().toLowerCase().match(/^([a-z]{2})(?:-[a-z]{2})?$/);
636      if (!match) return '';
637      return match[1] === 'en' || publishedLocalePaths.indexOf(match[1]) > -1 ? match[1] : '';
638    }
639
640    // Never run on Shopify preview domains (unless in test mode)
641    if (!testMode && window.location.hostname.indexOf('.myshopify.com') > -1) {
642      console.log('GeoIP: Shopify preview domain, skipping redirect');
643      return;
644    }
645
646    // Respect an explicitly selected Shopify locale path, including
647    // market-aware routes such as /en-es, /es-es and /en-nl.
648    if (arrPath.length > 0 && localeFromPathSegment(arrPath[0])) {
649      console.log('GeoIP: explicit Shopify locale path selected, skipping redirect');
650      return;
651    }
652
653    var sitePrefix        = 'https://';
654    /* ── EMEA storefront domain ─────────────────────────────────────── */
655    var internationalSite     = 'spinning.eu';
656    /* List ONLY the locales actually published on spinning.eu.
657       To verify: open your preview URL + /de (e.g. store.myshopify.com/de)
658       — if translated content loads, that locale is published; if it
659       404s, remove it from this list.                                 */
660    var emeaPublishedLocales  = ['de', 'es', 'fr', 'it', 'nl'];
661    var usSiteHost        = 'spinning.com';
662    var regions           = ['NA', 'SA', 'OC', 'AS'];
663    var countries         = ['US', 'CA', 'BR', 'MX', 'CL', 'AR', 'CU', 'AU', 'NZ'];
664    var excludedCountries = ['IL', 'AE', 'BH', 'SA', 'TR', 'ZA'];
665    var ipAddresses       = ['76.80.194.178', '104.187.115.50'];
666
667    var CurrentPage = window.location.pathname + window.location.search;
668    var usSite      = sitePrefix + usSiteHost + CurrentPage;
669    var usSiteEs    = sitePrefix + usSiteHost + '/es' + CurrentPage;
670
671    /* ── FIX 3: Same-page guard ───────────────────────────────────────
672       Never redirect to the exact URL we are already on. This prevents
673       self-redirect reloads when the script ships in the theme of the
674       store it would redirect to (spinning.com or spinning.eu).       */
675    var redirectTo = function (url, label) {
676      var a = document.createElement('a');
677      a.href = url;
678      var samePage =
679        a.hostname === window.location.hostname &&
680        a.pathname.replace(/\/+$/, '') === window.location.pathname.replace(/\/+$/, '');
681      if (samePage) {
682        console.log('GeoIP: already on target page, no redirect needed (' + label + ')');
683        return;
684      }
685      if (testMode) {
686        console.log('%cGeoIP [TEST]: WOULD redirect -> ' + label + ': ' + url, 'color:orange');
687        return;
688      }
689      console.log('GeoIP: -> ' + label, url);
690      window.location.href = url;
691    };
692
693    var onSuccess = function (geoipResponse) {
694      if (!geoipResponse.country || !geoipResponse.country.iso_code) {
695        console.log('GeoIP: no country code returned');
696        return;
697      }
698      var ip      = geoipResponse.traits.ip_address;
699      var region  = geoipResponse.continent.code.toUpperCase();
700      var country = geoipResponse.country.iso_code.toUpperCase();
701      console.log('GeoIP resolved -- IP:', ip, '| Country:', country, '| Region:', region);
702
703      if (ipAddresses.indexOf(ip) > -1) {
704        console.log('GeoIP: IP is excluded, skipping redirect');
705        return;
706      }
707      if (excludedCountries.indexOf(country) > -1) {
708        console.log('GeoIP: country is excluded, skipping redirect');
709        return;
710      }
711
712      if (countries.indexOf(country) > -1 || regions.indexOf(region) > -1) {
713        // Americas / Oceania / Asia -> US storefront
714        if (arrPath.length === 0 && language === 'es') {
715          redirectTo(usSiteEs, 'US Spanish site');
716        } else {
717          redirectTo(usSite, 'US site');
718        }
719      } else if (region === 'EU' || region === 'AF') {
720        /* ── All EMEA visitors -> EMEA storefront (spinning.eu) ────────
721           (Middle East key markets are handled by excludedCountries
722           above; other Asian countries route to the US site via the
723           regions list.)
724           Locale is chosen by COUNTRY first, then browser language,
725           then the store default (English, no prefix).               */
726        var countryLocaleMap = {
727          DE: 'de', AT: 'de', CH: 'de',
728          FR: 'fr', MC: 'fr', LU: 'fr',
729          IT: 'it', SM: 'it',
730          NL: 'nl',
731          ES: 'es', AD: 'es'
732          // Multilingual countries not listed (e.g. BE) fall back to
733          // the visitor's browser language below.
734        };
735        var manualLocale = readPersistentManualLocale();
736        var locale = manualLocale ||
737                     countryLocaleMap[country] ||
738                     (emeaPublishedLocales.indexOf(language) > -1 ? language : '');
739        // English is the unprefixed EMEA route; other values must be published.
740        if (locale && locale !== 'en' && emeaPublishedLocales.indexOf(locale) === -1) locale = '';
741        var localePrefix = locale && locale !== 'en' ? '/' + locale : '';
742        var intlUrl = sitePrefix + internationalSite + localePrefix + CurrentPage;
743        redirectTo(intlUrl, 'EMEA site' + (locale ? ' (' + locale + ')' : ''));
744      } else {
745        console.log('GeoIP: no redirect rule matched for', country, region, language);
746      }
747    };
748
749    var onError = function (error) {
750      console.warn('GeoIP lookup failed:', error);
751    };
752
753    /* In test mode, expose a console helper to simulate any visitor:
754         __geoSimulate('DE', 'EU')   // German visitor
755         __geoSimulate('US', 'NA')   // US visitor
756         __geoSimulate('TR', 'AS')   // excluded country
757       Combine with a browser-language change to test the es/de paths. */
758    if (testMode) {
759      window.__geoSimulate = function (countryCode, continentCode) {
760        onSuccess({
761          country:   { iso_code: countryCode },
762          continent: { code: continentCode },
763          traits:    { ip_address: '0.0.0.0' }
764        });
765      };
766      console.log('GeoIP [TEST]: __geoSimulate(country, continent) is available in the console');
767    }
768
769    // Wait for the geoip2 library to be available before calling it
770    var attempts = 0;
771    var waitForGeoIP = setInterval(function () {
772      attempts++;
773      if (typeof geoip2 !== 'undefined') {
774        clearInterval(waitForGeoIP);
775        console.log('GeoIP: library ready, running lookup...');
776        geoip2.country(onSuccess, onError);
777      } else if (attempts > 20) {
778        clearInterval(waitForGeoIP);
779        console.warn('GeoIP: library never loaded after 2s, giving up');
780      }
781    }, 100);
782  }
783
784  document.addEventListener('DOMContentLoaded', runGeoRedirect);
785</script>
785
786
787
788
789
790
791    
792    
792<script id="maddogg-geo-country-sync">
793      (function () {
794        var marker = 'MADDOGG_GEO_COUNTRY_SYNC';
795        var version = 'v3';
796        var fallbackCountry = 'NL';
797        var fallbackLocale = 'en';
798        var supportedLocales = ['de', 'es', 'fr', 'it', 'nl'];
799        var currentCountry = 'NL';
800        var currentLocale = 'en';
801        var availableCountries = ['AF',
802'AL',
803'DZ',
804'AD',
805'AO',
806'AM',
807'AT',
808'AZ',
809'BH',
810'BY',
811'BE',
812'BJ',
813'BA',
814'BW',
815'BG',
816'BF',
817'BI',
818'CM',
819'CV',
820'CF',
821'TD',
822'HR',
823'CY',
824'CZ',
825'DK',
826'DJ',
827'EG',
828'ER',
829'EE',
830'ET',
831'FI',
832'FR',
833'GA',
834'GM',
835'GE',
836'DE',
837'GH',
838'GI',
839'GR',
840'GN',
841'GW',
842'HU',
843'IS',
844'IQ',
845'IE',
846'IL',
847'IT',
848'JO',
849'KZ',
850'KE',
851'KW',
852'LV',
853'LB',
854'LS',
855'LR',
856'LI',
857'LT',
858'LU',
859'MG',
860'MW',
861'ML',
862'MT',
863'MR',
864'MU',
865'MC',
866'ME',
867'MA',
868'MZ',
869'NA',
870'NL',
871'NE',
872'NG',
873'MK',
874'NO',
875'OM',
876'PK',
877'PL',
878'PT',
879'QA',
880'RO',
881'RU',
882'RW',
883'SM',
884'SA',
885'SN',
886'RS',
887'SL',
888'SK',
889'SI',
890'SO',
891'ZA',
892'ES',
893'SD',
894'SE',
895'CH',
896'TJ',
897'TZ',
898'TG',
899'TN',
900'TR',
901'TM',
902'UG',
903'UA',
904'AE',
905'GB',
906'VA',
907'EH',
908'YE',
909'ZM',
910'ZW'
911];
912        var availableLocales = ['en',
913'es',
914'de',
915'nl',
916'fr',
917'it'
918];
919        var countryLocaleMap = {
920          ES: 'es',
921          FR: 'fr', MC: 'fr', BE: 'fr', LU: 'fr',
922          DE: 'de', AT: 'de', CH: 'de', LI: 'de',
923          IT: 'it', SM: 'it', VA: 'it',
924          NL: 'en'
925        };
926
927        function normalizeCountry(value) {
928          return String(value || '').trim().toUpperCase();
929        }
930
931        function normalizeLocale(value) {
932          return String(value || '').trim().toLowerCase().replace('_', '-').split('-')[0];
933        }
934
935        function storageKey(name) {
936          return 'maddoggGeoCountrySync:' + version + ':' + window.location.hostname + ':' + name;
937        }
938
939        function storageGet(key) {
940          try { return window.sessionStorage.getItem(key); } catch (e) { return null; }
941        }
942
943        function storageSet(key, value) {
944          try { window.sessionStorage.setItem(key, value); } catch (e) {}
945        }
946
947        var manualLocaleMaxAgeMs = 180 * 24 * 60 * 60 * 1000;
948
949        function preferenceGet(key) {
950          try { return window.localStorage.getItem(key); } catch (e) { return null; }
951        }
952
953        function preferenceSet(key, value) {
954          try { window.localStorage.setItem(key, value); } catch (e) {}
955        }
956
957        function preferenceRemove(key) {
958          try { window.localStorage.removeItem(key); } catch (e) {}
959        }
960
961        function setDebug(payload) {
962          window.MaddoggGeoCountrySync = Object.assign({ marker: marker, version: version }, payload || {});
963        }
964
965        function shouldSkip() {
966          if (window.location.search.indexOf('geocountry=off') > -1) {
967            setDebug({ status: 'skipped', reason: 'disabled_by_query' });
968            return true;
969          }
970          var path = window.location.pathname || '';
971          if (['/cart', '/checkout', '/checkouts', '/account'].some(function (prefix) { return path === prefix || path.indexOf(prefix + '/') === 0; })) {
972            setDebug({ status: 'skipped', reason: 'sensitive_path', path: path });
973            return true;
974          }
975          return false;
976        }
977
978        function readManualSelection(type) {
979          var key = storageKey('manual_' + type);
980          var raw = storageGet(key);
981          if (!raw && type === 'locale') raw = preferenceGet(key);
982          if (!raw) return null;
983
984          try {
985            var parsed = JSON.parse(raw);
986            if (type === 'locale') {
987              var locale = normalizeLocale(parsed.locale);
988              var selectedAt = Date.parse(parsed.at || 0);
989              var ageMs = Date.now() - selectedAt;
990              if (
991                availableLocales.indexOf(locale) === -1 ||
992                !isFinite(selectedAt) ||
993                ageMs < 0 ||
994                ageMs > manualLocaleMaxAgeMs
995              ) {
996                preferenceRemove(key);
997                return null;
998              }
999              parsed.locale = locale;
1000            }
1001            return parsed;
1002          } catch (e) {
1003            if (type === 'locale') {
1004              preferenceRemove(key);
1005              return null;
1006            }
1007            return { raw: raw };
1008          }
1009        }
1010
1011        function installManualSelectionGuard() {
1012          document.addEventListener('click', function (event) {
1013            var countryTarget = event.target && event.target.closest ? event.target.closest('button[name="country_code"], input[name="country_code"]') : null;
1014            if (countryTarget && !window.__MaddoggGeoCountrySyncAutoSubmitting) {
1015              storageSet(storageKey('manual_country'), JSON.stringify({ country: normalizeCountry(countryTarget.value), at: new Date().toISOString() }));
1016            }
1017            var localeTarget = event.target && event.target.closest ? event.target.closest('button[name="locale_code"], input[name="locale_code"], button[name="language_code"], input[name="language_code"]') : null;
1018            if (localeTarget && !window.__MaddoggGeoCountrySyncAutoSubmitting) {
1019              var key = storageKey('manual_locale');
1020              var payload = JSON.stringify({
1021                locale: normalizeLocale(localeTarget.value),
1022                at: new Date().toISOString()
1023              });
1024              storageSet(key, payload);
1025              preferenceSet(key, payload);
1026            }
1027          }, true);
1028        }
1029
1030        function parseServerTimingCountry(value) {
1031          var text = String(value || '');
1032          var match = text.match(/(?:^|,)\s*country;desc="?([A-Z]{2})"?/i);
1033          return match ? normalizeCountry(match[1]) : '';
1034        }
1035
1036        function detectCountryFromServerTiming() {
1037          if (!window.fetch) return Promise.resolve('');
1038          return fetch(window.location.href, {
1039            method: 'HEAD',
1040            cache: 'no-store',
1041            credentials: 'same-origin'
1042          }).then(function (response) {
1043            return parseServerTimingCountry(response.headers && response.headers.get('server-timing'));
1044          }).catch(function () { return ''; });
1045        }
1046
1047        function detectCountryFromGeoIP(timeoutMs) {
1048          return new Promise(function (resolve) {
1049            var resolved = false;
1050            function finish(country) {
1051              if (resolved) return;
1052              resolved = true;
1053              resolve(normalizeCountry(country));
1054            }
1055            var attempts = 0;
1056            var timer = window.setInterval(function () {
1057              attempts += 1;
1058              if (window.geoip2 && window.geoip2.country) {
1059                window.clearInterval(timer);
1060                try {
1061                  window.geoip2.country(function (geoipResponse) {
1062                    finish(geoipResponse && geoipResponse.country && geoipResponse.country.iso_code);
1063                  }, function () { finish(''); });
1064                } catch (e) { finish(''); }
1065              } else if (attempts > Math.ceil(timeoutMs / 100)) {
1066                window.clearInterval(timer);
1067                finish('');
1068              }
1069            }, 100);
1070          });
1071        }
1072
1073        function detectTargetCountry(callback) {
1074          detectCountryFromServerTiming().then(function (serverCountry) {
1075            if (serverCountry) {
1076              callback(serverCountry, 'shopify_server_timing');
1077              return;
1078            }
1079            detectCountryFromGeoIP(4000).then(function (geoCountry) {
1080              if (geoCountry) {
1081                callback(geoCountry, 'geoip2');
1082              } else {
1083                callback(fallbackCountry, 'fallback_unknown_country');
1084              }
1085            });
1086          });
1087        }
1088
1089        function localeRoot() {
1090          var root = '';
1091          try { root = window.Shopify && window.Shopify.routes && window.Shopify.routes.root; } catch (e) {}
1092          if (root && root.charAt(root.length - 1) !== '/') root += '/';
1093          if (root) return root;
1094          var first = normalizeLocale((window.location.pathname || '').split('/').filter(Boolean)[0]);
1095          if (supportedLocales.indexOf(first) > -1) return '/' + first + '/';
1096          return '/';
1097        }
1098
1099        function pathLocale() {
1100          var firstSegment = (window.location.pathname || '').split('/').filter(Boolean)[0] || '';
1101          if (!/^[a-z]{2}(?:-[a-z]{2})?$/i.test(firstSegment)) return '';
1102          var first = normalizeLocale(firstSegment);
1103          return availableLocales.indexOf(first) > -1 ? first : '';
1104        }
1105
1106        function desiredLocaleForCountry(country) {
1107          var target = normalizeLocale(countryLocaleMap[normalizeCountry(country)] || fallbackLocale);
1108          return availableLocales.indexOf(target) > -1 ? target : fallbackLocale;
1109        }
1110
1111        function localizedReturnTo(targetLocale) {
1112          targetLocale = normalizeLocale(targetLocale || fallbackLocale);
1113          var path = window.location.pathname || '/';
1114          var search = window.location.search || '';
1115          var parts = path.split('/');
1116          var first = normalizeLocale(parts[1]);
1117          var hasLocalePrefix = supportedLocales.indexOf(first) > -1;
1118          if (hasLocalePrefix) parts.splice(1, 1);
1119          var cleanPath = parts.join('/') || '/';
1120          if (cleanPath.charAt(0) !== '/') cleanPath = '/' + cleanPath;
1121          if (targetLocale && targetLocale !== fallbackLocale && availableLocales.indexOf(targetLocale) > -1) {
1122            cleanPath = '/' + targetLocale + (cleanPath === '/' ? '' : cleanPath);
1123          }
1124          return cleanPath + search;
1125        }
1126
1127        function returnToPath(targetLocale) {
1128          return localizedReturnTo(targetLocale || currentLocale || fallbackLocale);
1129        }
1130
1131        function markAttempt(type, target, source, method) {
1132          storageSet(storageKey('attempt_' + type), JSON.stringify({
1133            type: type,
1134            fromCountry: normalizeCountry(currentCountry),
1135            fromLocale: normalizeLocale(currentLocale),
1136            to: type === 'country' ? normalizeCountry(target) : normalizeLocale(target),
1137            source: source,
1138            method: method,
1139            at: new Date().toISOString()
1140          }));
1141        }
1142
1143        function recentAttempt(type, target) {
1144          var raw = storageGet(storageKey('attempt_' + type));
1145          if (!raw) return null;
1146          try {
1147            var parsed = JSON.parse(raw);
1148            var expected = type === 'country' ? normalizeCountry(target) : normalizeLocale(target);
1149            var actual = type === 'country' ? normalizeCountry(parsed.to) : normalizeLocale(parsed.to);
1150            if (actual !== expected) return null;
1151            var ageMs = Date.now() - Date.parse(parsed.at || 0);
1152            return ageMs >= 0 && ageMs < 10 * 60 * 1000 ? parsed : null;
1153          } catch (e) { return null; }
1154        }
1155
1156        function clickButton(name, targetValue) {
1157          var normalizedTarget = name === 'country_code' ? normalizeCountry(targetValue) : normalizeLocale(targetValue);
1158          var selector = 'button[name="' + name + '"], input[name="' + name + '"]';
1159          var buttons = Array.prototype.slice.call(document.querySelectorAll(selector));
1160          var button = buttons.find(function (candidate) {
1161            var value = candidate.value || candidate.getAttribute('value');
1162            return (name === 'country_code' ? normalizeCountry(value) : normalizeLocale(value)) === normalizedTarget;
1163          });
1164          if (!button) return false;
1165          window.__MaddoggGeoCountrySyncAutoSubmitting = true;
1166          button.click();
1167          window.setTimeout(function () { window.__MaddoggGeoCountrySyncAutoSubmitting = false; }, 3000);
1168          return true;
1169        }
1170
1171        function ensureHidden(form, name, value) {
1172          var input = form.querySelector('input[name="' + name + '"]');
1173          if (!input) {
1174            input = document.createElement('input');
1175            input.type = 'hidden';
1176            input.name = name;
1177            form.appendChild(input);
1178          }
1179          input.value = value;
1180        }
1181
1182        function submitLocalizationForm(targetCountry, targetLocale, type) {
1183          var existingForm = document.querySelector('form[action*="/localization"], form.shopify-localization-form');
1184          var form = existingForm || document.createElement('form');
1185          if (!existingForm) {
1186            form.method = 'post';
1187            form.action = localeRoot() + 'localization';
1188            form.style.display = 'none';
1189            document.body.appendChild(form);
1190          }
1191          ensureHidden(form, 'form_type', 'localization');
1192          ensureHidden(form, '_method', 'put');
1193          ensureHidden(form, 'utf8', '✓');
1194          if (targetCountry) ensureHidden(form, 'country_code', normalizeCountry(targetCountry));
1195          if (targetLocale) ensureHidden(form, 'locale_code', normalizeLocale(targetLocale));
1196          ensureHidden(form, 'return_to', returnToPath(targetLocale));
1197          window.__MaddoggGeoCountrySyncAutoSubmitting = true;
1198          form.submit();
1199          return true;
1200        }
1201
1202        function syncCountry(targetCountry, source) {
1203          targetCountry = normalizeCountry(targetCountry || fallbackCountry);
1204          currentCountry = normalizeCountry(currentCountry);
1205
1206          if (availableCountries.indexOf(targetCountry) === -1) {
1207            var fallbackAvailable = availableCountries.indexOf(fallbackCountry) > -1;
1208            setDebug({ status: 'skipped', reason: 'geo_country_not_available', currentCountry: currentCountry, targetCountry: targetCountry, fallbackCountry: fallbackCountry, source: source });
1209            if (!fallbackAvailable) return false;
1210            targetCountry = fallbackCountry;
1211            source = source + '_fallback_country';
1212          }
1213
1214          if (targetCountry === currentCountry) return true;
1215
1216          var manual = readManualSelection('country');
1217          if (manual && normalizeCountry(manual.country) && normalizeCountry(manual.country) !== targetCountry) {
1218            setDebug({ status: 'skipped', reason: 'manual_country_selected_this_session', currentCountry: currentCountry, targetCountry: targetCountry, manualCountry: normalizeCountry(manual.country), source: source });
1219            return false;
1220          }
1221
1222          var attempt = recentAttempt('country', targetCountry);
1223          if (attempt) {
1224            setDebug({ status: 'skipped', reason: 'recent_country_attempt_already_made', currentCountry: currentCountry, targetCountry: targetCountry, source: source, attempt: attempt });
1225            return false;
1226          }
1227
1228          if (clickButton('country_code', targetCountry)) {
1229            markAttempt('country', targetCountry, source, 'button_click');
1230            setDebug({ status: 'submitting', stage: 'country', method: 'button_click', currentCountry: currentCountry, targetCountry: targetCountry, source: source });
1231            return false;
1232          }
1233
1234          var targetLocale = desiredLocaleForCountry(targetCountry);
1235          markAttempt('country', targetCountry, source, 'form_submit');
1236          setDebug({ status: 'submitting', stage: 'country', method: 'form_submit', currentCountry: currentCountry, targetCountry: targetCountry, targetLocale: targetLocale, source: source });
1237          submitLocalizationForm(targetCountry, targetLocale, 'country');
1238          return false;
1239        }
1240
1241        function syncLocale(targetCountry, source) {
1242          var targetLocale = desiredLocaleForCountry(targetCountry);
1243          var current = normalizeLocale(currentLocale || fallbackLocale);
1244          var explicitPathLocale = pathLocale();
1245
1246          if (!targetLocale || availableLocales.indexOf(targetLocale) === -1) {
1247            setDebug({ status: 'ready', reason: 'target_locale_unavailable', currentCountry: normalizeCountry(currentCountry), targetCountry: normalizeCountry(targetCountry), currentLocale: current, targetL
1247ocale: targetLocale, source: source });
1248            return;
1249          }
1250          if (current === targetLocale) {
1251            setDebug({ status: 'ready', reason: 'country_and_locale_selected', currentCountry: normalizeCountry(currentCountry), targetCountry: normalizeCountry(targetCountry), currentLocale: current, targetLocale: targetLocale, source: source });
1252            return;
1253          }
1254
1255          var manual = readManualSelection('locale');
1256          if (manual && normalizeLocale(manual.locale) && normalizeLocale(manual.locale) !== targetLocale) {
1257            setDebug({ status: 'skipped', reason: 'manual_locale_selected_this_session', currentCountry: normalizeCountry(currentCountry), targetCountry: normalizeCountry(targetCountry), currentLocale: current, targetLocale: targetLocale, manualLocale: normalizeLocale(manual.locale), source: source });
1258            return;
1259          }
1260
1261          if (explicitPathLocale && explicitPathLocale !== targetLocale) {
1262            setDebug({ status: 'skipped', reason: 'explicit_locale_path_selected', currentCountry: normalizeCountry(currentCountry), targetCountry: normalizeCountry(targetCountry), currentLocale: current, targetLocale: targetLocale, pathLocale: explicitPathLocale, source: source });
1263            return;
1264          }
1265
1266          var attempt = recentAttempt('locale', targetLocale);
1267          if (attempt) {
1268            setDebug({ status: 'skipped', reason: 'recent_locale_attempt_already_made', currentCountry: normalizeCountry(currentCountry), targetCountry: normalizeCountry(targetCountry), currentLocale: current, targetLocale: targetLocale, source: source, attempt: attempt });
1269            return;
1270          }
1271
1272          if (clickButton('locale_code', targetLocale)) {
1273            markAttempt('locale', targetLocale, source, 'button_click');
1274            setDebug({ status: 'submitting', stage: 'locale', method: 'button_click', currentCountry: normalizeCountry(currentCountry), targetCountry: normalizeCountry(targetCountry), currentLocale: current, targetLocale: targetLocale, source: source });
1275            return;
1276          }
1277
1278          markAttempt('locale', targetLocale, source, 'form_submit');
1279          setDebug({ status: 'submitting', stage: 'locale', method: 'form_submit', currentCountry: normalizeCountry(currentCountry), targetCountry: normalizeCountry(targetCountry), currentLocale: current, targetLocale: targetLocale, source: source });
1280          submitLocalizationForm(targetCountry, targetLocale, 'locale');
1281        }
1282
1283        function syncCountryAndLocale(detectedCountry, source) {
1284          var targetCountry = normalizeCountry(detectedCountry || fallbackCountry);
1285          if (syncCountry(targetCountry, source) === false) return;
1286          syncLocale(targetCountry, source);
1287        }
1288
1289        function run() {
1290          installManualSelectionGuard();
1291          if (shouldSkip()) return;
1292          detectTargetCountry(syncCountryAndLocale);
1293        }
1294
1295        if (document.readyState === 'loading') {
1296          document.addEventListener('DOMContentLoaded', run);
1297        } else {
1298          run();
1299        }
1300      })();
1301    </script>
1301
1302
1303    
1303<script>
1304      if (!(HTMLScriptElement.supports && HTMLScriptElement.supports('importmap'))) {
1305        const importMapPolyfill = document.createElement('script');
1306        importMapPolyfill.async = true;
1307        importMapPolyfill.src = "//spinning.eu/cdn/shop/t/9/assets/es-module-shims.min.js?v=98603786603752121101788350492";
1308
1309        document.head.appendChild(importMapPolyfill);
1310      }
1311    </script>
1311
1312
1313    
1313<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 1313
1313
1314<script type="importmap">{
1315        "imports": {
1316          "vendor": "//spinning.eu/cdn/shop/t/9/assets/vendor.min.js?v=37127808935879722241788350492",
1317          "theme": "//spinning.eu/cdn/shop/t/9/assets/theme.js?v=52388010713111981741788350492",
1318          "photoswipe": "//spinning.eu/cdn/shop/t/9/assets/photoswipe.min.js?v=13374349288281597431788350492"
1319        }
1320      }
1321    </script>
1321
1322
1323    
1323<script type="module" src="//spinning.eu/cdn/shop/t/9/assets/vendor.min.js?v=37127808935879722241788350492"></script>
1323
1324    
1324<script type="module" src="//spinning.eu/cdn/shop/t/9/assets/theme.js?v=52388010713111981741788350492"></script>
1324
1325    
1325<script src="https://www.powr.io/powr.js?platform=shopify"></script>
1325
1326
1327    
1327<script id="maddogg-pagefly-i18n-runtime">
1328      (function () {
1329        var marker = 'MADDOGG_PAGEFLY_I18N_RUNTIME';
1330        if (window.__MaddoggPageFlyI18nInstalled) return;
1331        window.__MaddoggPageFlyI18nInstalled = true;
1332
1333        var supportedLocales = ['de', 'es', 'fr', 'it', 'nl'];
1334        var translationsUrl = "//spinning.eu/cdn/shop/t/9/assets/maddogg-pagefly-i18n.json?v=169446553287516488941788350492";
1335        translationsUrl += (translationsUrl.indexOf('?') === -1 ? '?' : '&') + 'maddogg_i18n=20260619_commercial_bikes_metafields_v3';
1336        var i18nPayload = null;
1337        var i18nLoaded = false;
1338        var i18nLoading = false;
1339        var i18nLoadError = '';
1340        var i18nVersion = '';
1341        var lastStats = null;
1342
1343        var localeLabels = {
1344          de: { bikes: 'FAHRRÄDER', home: 'ZU HAUSE', commercial: 'GEWERBLICH', shop: 'SHOP', instructors: 'TRAINER' },
1345          es: { bikes: 'BICICLETAS', home: 'CASA', commercial: 'COMERCIAL', shop: 'TIENDA', instructors: 'INSTRUCTORES' },
1346          fr: { bikes: 'VÉLOS', home: 'MAISON', commercial: 'COMMERCIAL', shop: 'BOUTIQUE', instructors: 'INSTRUCTEURS' },
1347          it: { bikes: 'BICI', home: 'CASA', commercial: 'COMMERCIALE', shop: 'NEGOZIO', istruttori: 'ISTRUTTORI', instructors: 'ISTRUTTORI' },
1348          nl: { bikes: 'FIETSEN', home: 'THUIS', commercial: 'COMMERCIEEL', shop: 'WINKEL', instructors: 'INSTRUCTEURS' }
1349        };
1350
1351        var originalTileLabels = {
1352          BIKES: 'bikes',
1353          HOME: 'home',
1354          COMMERCIAL: 'commercial',
1355          SHOP: 'shop',
1356          INSTRUCTORS: 'instructors'
1357        };
1358        var originalTileBoxes = {};
1359
1360
1361        var tileOverlayStyles = {
1362          bikes: { width: '54%', bottom: '10%', height: '22%', minHeight: '56px', maxHeight: '96px' },
1363          home: { width: '48%', bottom: '6%', height: '16%', minHeight: '44px', maxHeight: '78px' },
1364          commercial: { width: '58%', bottom: '0.5%', height: '14%', minHeight: '52px', maxHeight: '96px' },
1365          shop: { width: '46%', bottom: '10%', height: '22%', minHeight: '56px', maxHeight: '96px' },
1366          instructors: { width: '62%', bottom: '6%', height: '16%', minHeight: '44px', maxHeight: '78px' }
1367        };
1368
1369        function normalizeLocale(value) {
1370          return String(value || '').trim().toLowerCase().replace('_', '-').split('-')[0];
1371        }
1372
1373        function detectLocale() {
1374          var firstPathSegment = normalizeLocale(window.location.pathname.split('/').filter(Boolean)[0]);
1375          if (supportedLocales.indexOf(firstPathSegment) > -1) return firstPathSegment;
1376          var root = '';
1377          try { root = window.Shopify && window.Shopify.routes && window.Shopify.routes.root; } catch (e) {}
1378          var rootLocale = normalizeLocale(String(root || '').split('/').filter(Boolean)[0]);
1379          if (supportedLocales.indexOf(rootLocale) > -1) return rootLocale;
1380          var shopifyLocale = normalizeLocale(window.Shopify && window.Shopify.locale);
1381          if (supportedLocales.indexOf(shopifyLocale) > -1) return shopifyLocale;
1382          var htmlLocale = normalizeLocale(document.documentElement && document.documentElement.lang);
1383          if (supportedLocales.indexOf(htmlLocale) > -1) return htmlLocale;
1384          return '';
1385        }
1386
1387        function localePrefix(locale) {
1388          if (!locale) return '';
1389          var sources = [];
1390          try { sources.push(window.Shopify && window.Shopify.routes && window.Shopify.routes.root); } catch (e) {}
1391          sources.push(window.location.pathname);
1392          for (var i = 0; i < sources.length; i += 1) {
1393            var segment = String(sources[i] || '').split('/').filter(Boolean)[0] || '';
1394            if (segment && normalizeLocale(segment) === locale) return '/' + segment;
1395          }
1396          return '/' + locale;
1397        }
1398
1399        function normalizePathForLocale(path, locale) {
1400          var clean = String(path || '/');
1401          if (clean.charAt(0) !== '/') clean = '/' + clean;
1402          var parts = clean.split('/').filter(Boolean);
1403          var firstSegment = parts.length ? String(parts[0] || '').trim().toLowerCase() : '';
1404          var firstLocale = normalizeLocale(firstSegment);
1405          var hasLocalePrefix = supportedLocales.indexOf(firstLocale) > -1 ||
1406            (firstLocale === 'en' && /^en(?:-[a-z]{2})?$/.test(firstSegment));
1407          if (hasLocalePrefix) {
1408            parts.shift();
1409            clean = parts.length ? '/' + parts.join('/') : '/';
1410          }
1411          if (!clean) clean = '/';
1412          return localePrefix(locale) + (clean === '/' ? '' : clean);
1413        }
1414
1415        function explicitEnglishLinkLocale() {
1416          var sources = ['/', window.location.pathname];
1417          try { sources.unshift(window.Shopify && window.Shopify.routes && window.Shopify.routes.root); } catch (e) {}
1418          for (var i = 0; i < sources.length; i += 1) {
1419            var segment = String(sources[i] || '').split('/').filter(
1419Boolean)[0] || '';
1420            if (/^en-[a-z]{2}$/.test(String(segment).toLowerCase())) return 'en';
1421          }
1422          return '';
1423        }
1424
1425        function localizeStoreUrl(value, locale) {
1426          if (!value) return value;
1427          var raw = String(value);
1428          if (raw.charAt(0) === '#') return raw;
1429          raw = raw.replace(/\/collections\/spinning(?:%C2%AE|®)(?:%20|\s+)essentials(?=[/?#]|$)/i, '/collections/spinning%C2%AE-essentials');
1430          try {
1431            var url = new URL(raw, window.location.origin);
1432            var host = url.hostname.toLowerCase();
1433            if (host === 'spinu.spinning.com') {
1434              var spinUPath = url.pathname.replace(/\/+$/, '');
1435              if (!spinUPath) {
1436                return url.toString();
1437              }
1438              url.hostname = 'spinu.spinning.eu';
1439              return url.toString();
1440            }
1441            if (host === 'spinning.eu' || host === 'www.spinning.eu') {
1442              var legacyKey = url.pathname.replace(/\/+$/, '') + url.search;
1443              var legacyMap = {
1444                '/i/spin-member-benefits': '/pages/spin®-membership-benefits',
1445                '/instructors/spin-membership': '/pages/spin-membership',
1446                '/spinlife/getting-started-with-the-new-spinning-app-': '/blogs/default-blog/spinlife-meet-the-new-spinning-connect-app',
1447                '/blog.html?category=12&name=Gear%20and%20Accessories': '/pages/spinning-apps',
1448                '/blog.html?category=12&name=Gear and Accessories': '/pages/spinning-apps'
1449              };
1450              if (legacyMap[legacyKey]) {
1451                var mappedPath = locale ? normalizePathForLocale(legacyMap[legacyKey], locale) : legacyMap[legacyKey];
1452                return window.location.origin + mappedPath + url.hash;
1453              }
1454            }
1455            if (locale && (host === 'spinning.com' || host === 'www.spinning.com' || host === 'd1fuiy-um.myshopify.com' || host === window.location.hostname.toLowerCase())) {
1456              var localizedPath = normalizePathForLocale(url.pathname, locale);
1457              return window.location.origin + localizedPath + url.search + url.hash;
1458            }
1459          } catch (e) {}
1460          return value;
1461        }
1462
1463        function labelKeyForUrl(value) {
1464          var text = String(value || '').toLowerCase();
1465          if (text.indexOf('/collections/bikes') > -1 || text.indexOf('/collections/spin-bikes') > -1) return 'bikes';
1466          if (text.indexOf('/pages/ride-at-home') > -1) return 'home';
1467          if (text.indexOf('/pages/commercial-spinner-bikes') > -1 || text.indexOf('/collections/commercial-spin-bikes') > -1) return 'commercial';
1468          if (text.indexOf('/collections/best-sellers') > -1 || text.indexOf('/collections/all') > -1 || text.indexOf('/collections/shop') > -1) return 'shop';
1469          if (text.indexOf('/pages/instructors') > -1) return 'instructors';
1470          return '';
1471        }
1472
1473        function localizeKnownHomeTileLinks(locale) {
1474          if (!locale || !document.querySelectorAll) return 0;
1475          var count = 0;
1476          var attrs = ['href', 'data-href', 'data-url', 'data-link', 'data-pf-link', 'data-pf-href'];
1477          var selector = attrs.map(function (attr) { return '[' + attr + ']'; }).join(',');
1478          Array.prototype.slice.call(document.querySelectorAll(selector)).forEach(function (el) {
1479            attrs.forEach(function (attr) {
1480              if (!el.hasAttribute || !el.hasAttribute(attr)) return;
1481              var original = el.getAttribute(attr);
1482              if (!labelKeyForUrl(original)) return;
1483              var updated = localizeStoreUrl(original, locale);
1484              if (updated && updated !== original) {
1485                el.setAttribute(attr, updated);
1486                count += 1;
1487              }
1488            });
1489          });
1490          return count;
1491        }
1492
1493        function fixDutchSpinULoginPage(locale) {
1494          if (locale !== 'nl' || window.location.pathname.toLowerCase().indexOf('/pages/instructors-spinulogin') === -1) return 0;
1495          var count = 0;
1496
1497          Array.prototype.slice.call(document.querySelectorAll('p, li')).forEac
1497h(function (el) {
1498            var text = String(el.textContent || '').replace(/\s+/g, ' ').trim().toLowerCase();
1499            if (
1500              text.indexOf('in europa, het midden-oosten of afrika woont') === -1 ||
1501              (text.indexOf('spinu.spinning.eu') === -1 && text.indexOf('emea-website') === -1)
1502            ) return;
1503
1504            while (el.firstChild) el.removeChild(el.firstChild);
1505            el.appendChild(document.createTextNode('Als je in de Verenigde Staten, Canada, Latijns-Amerika of Azië-Pacific woont, kun je inloggen op de Amerikaanse website via '));
1506            var link = document.createElement('a');
1507            link.href = 'https://spinu.spinning.com/';
1508            link.textContent = 'spinu.spinning.com';
1509            el.appendChild(link);
1510            el.appendChild(document.createTextNode('.'));
1511            count += 1;
1512          });
1513
1514          Array.prototype.slice.call(document.querySelectorAll('img')).forEach(function (img) {
1515            if (!img.complete || img.naturalWidth !== 0 || !(img.currentSrc || img.getAttribute('src'))) return;
1516            var holder = img.closest('[data-pf-type="Image"]') || img;
1517            if (holder.style.display !== 'none') {
1518              holder.style.display = 'none';
1519              holder.setAttribute('aria-hidden', 'true');
1520              count += 1;
1521            }
1522          });
1523
1524          return count;
1525        }
1526
1527        function knownHomeTileUrlFromElement(el) {
1528          if (!el || !el.getAttribute) return '';
1529          var attrs = ['href', 'data-href', 'data-url', 'data-link', 'data-pf-link', 'data-pf-href'];
1530          for (var i = 0; i < attrs.length; i += 1) {
1531            if (!el.hasAttribute || !el.hasAttribute(attrs[i])) continue;
1532            var value = el.getAttribute(attrs[i]);
1533            if (labelKeyForUrl(value)) return value;
1534          }
1535          return '';
1536        }
1537
1538        function findKnownHomeTileLink(target) {
1539          if (!target || !target.closest) return null;
1540          var selector = '[href], [data-href], [data-url], [data-link], [data-pf-link], [data-pf-href], [data-action="url"]';
1541          var current = target.closest(selector);
1542          while (current && current !== document.documentElement) {
1543            var url = knownHomeTileUrlFromElement(current);
1544            if (url) return { element: current, url: url };
1545            current = current.parentElement && current.parentElement.closest ? current.parentElement.closest(selector) : null;
1546          }
1547          return null;
1548        }
1549
1550        function installHomeTileClickInterceptor() {
1551          if (window.__MaddoggHomeTileClickInterceptorInstalled || !document.addEventListener) return;
1552          window.__MaddoggHomeTileClickInterceptorInstalled = true;
1553          document.addEventListener('click', function (event) {
1554            if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
1555            var match = findKnownHomeTileLink(event.target);
1556            if (!match) return;
1557            var locale = detectLocale();
1558            var targetUrl = localizeStoreUrl(match.url, locale);
1559            if (!targetUrl || targetUrl === match.url) return;
1560            event.preventDefault();
1561            event.stopImmediatePropagation();
1562            window.location.assign(targetUrl);
1563          }, true);
1564        }
1565
1566        function hasVisibleBackground(el) {
1567          if (!el || !window.getComputedStyle) return false;
1568          var bg = window.getComputedStyle(el).backgroundColor || '';
1569          return bg && bg !== 'transparent' && bg !== 'rgba(0, 0, 0, 0)' && bg !== 'rgba(0,0,0,0)';
1570        }
1571
1572        function findOriginalTileBox(labelEl) {
1573          if (!labelEl || !labelEl.getBoundingClientRect) return labelEl;
1574          var root = labelEl.closest ? labelEl.closest('.__pf') : null;
1575          var textRect = labelEl.getBoundingClientRect();
1576          var current = labelEl;
1577          var best = labelEl;
1578          while (current && current !== root) {
1579            if (current.querySelector && current.querySelector('img')) break;
1580            var rect = current.getBoundingClientRect ? current.getBoundingClientRect() : null;
1581            if (rect && rect.width && rect.height && hasVisibleBackgroun
1581d(current)) {
1582              var wideEnough = rect.width >= Math.max(textRect.width + 24, 90);
1583              var tallEnough = rect.height >= Math.max(textRect.height + 8, 28);
1584              var notWholeTile = rect.height <= Math.max(textRect.height * 5, 120);
1585              if (wideEnough && tallEnough && notWholeTile) best = current;
1586            }
1587            current = current.parentElement;
1588          }
1589          return best;
1590        }
1591
1592        function applyOriginalTileBox(overlay, wrapper, key) {
1593          var box = originalTileBoxes[key];
1594          if (!box || !box.getBoundingClientRect || !wrapper || !wrapper.getBoundingClientRect) return false;
1595          var boxRect = box.getBoundingClientRect();
1596          var wrapperRect = wrapper.getBoundingClientRect();
1597          if (!boxRect.width || !boxRect.height || !wrapperRect.width || !wrapperRect.height) return false;
1598          var left = ((boxRect.left - wrapperRect.left) / wrapperRect.width) * 100;
1599          var top = ((boxRect.top - wrapperRect.top) / wrapperRect.height) * 100;
1600          var width = (boxRect.width / wrapperRect.width) * 100;
1601          var height = (boxRect.height / wrapperRect.height) * 100;
1602          if (width < 20 || width > 95 || height < 5 || height > 40) return false;
1603          overlay.style.left = left + '%';
1604          overlay.style.top = top + '%';
1605          overlay.style.right = 'auto';
1606          overlay.style.bottom = 'auto';
1607          overlay.style.width = width + '%';
1608          overlay.style.height = height + '%';
1609          overlay.style.minHeight = '0';
1610          overlay.style.maxHeight = 'none';
1611          overlay.style.transform = 'none';
1612          return true;
1613        }
1614
1615        function wrapImageWithOverlay(img, label, key) {
1616          if (!img || img.dataset.maddoggPageflyOverlay === '1') return false;
1617          img.dataset.maddoggPageflyOverlay = '1';
1618          var parent = img.parentNode;
1619          if (!parent) return false;
1620          var wrapper = document.createElement('span');
1621          wrapper.className = 'maddogg-pagefly-tile-wrap';
1622          wrapper.style.position = 'relative';
1623          wrapper.style.zIndex = '1';
1624          wrapper.style.display = 'block';
1625          wrapper.style.width = '100%';
1626          wrapper.style.lineHeight = '0';
1627          parent.insertBefore(wrapper, img);
1628          wrapper.appendChild(img);
1629
1630          var overlay = document.createElement('span');
1631          overlay.className = 'maddogg-pagefly-tile-label';
1632          overlay.textContent = label;
1633          var overlayStyle = tileOverlayStyles[key] || tileOverlayStyles.bikes;
1634          overlay.style.position = 'absolute';
1635          overlay.style.zIndex = '3';
1636          overlay.style.boxSizing = 'border-box';
1637          overlay.style.left = '50%';
1638          overlay.style.right = 'auto';
1639          overlay.style.width = overlayStyle.width;
1640          overlay.style.transform = 'translateX(-50%)';
1641          overlay.style.bottom = overlayStyle.bottom;
1642          overlay.style.minHeight = overlayStyle.minHeight;
1643          overlay.style.height = overlayStyle.height;
1644          overlay.style.maxHeight = overlayStyle.maxHeight;
1645          applyOriginalTileBox(overlay, wrapper, key);
1646          overlay.style.display = 'flex';
1647          overlay.style.alignItems = 'center';
1648          overlay.style.justifyContent = 'center';
1649          overlay.style.padding = '0 10px';
1650          overlay.style.background = '#000';
1651          overlay.style.color = '#fff';
1652          overlay.style.fontFamily = 'Montserrat, Arial, sans-serif';
1653          overlay.style.fontWeight = '800';
1654          overlay.style.fontSize = 'clamp(13px, 1.2vw, 20px)';
1655          overlay.style.letterSpacing = '0.04em';
1656          overlay.style.textTransform = 'uppercase';
1657          overlay.style.textAlign = 'center';
1658          overlay.style.pointerEvents = 'none';
1659          overlay.style.lineHeight = '1.1';
1660          wrapper.appendChild(overlay);
1661          return true;
1662        }
1663
1664        function normalizeText(value) {
1665          return String(value || '').replace(/\s+/g, ' ').trim();
1666        }
1667
1668
1669        function hideOriginalTileLabels(root) {
1670          if (!root) return 0;
1671          var hidden = 0;
1672          var candidates = Array.prototype.slice.call(root.querySelectorAll('*'));
1673          candidates.forEach(function (el) {
1674            if (!el || el.dataset.maddoggPageflyOriginalTileHidden === '1') return;
1675            if (el.classList && el.classList.contains('maddogg-pagefly-tile-label')) return;
1676            if (el.children && el.children.length > 0) return;
1677            var label = normalizeText(el.textContent).toUpperCase();
1678            var key = originalTileLabels[label];
1679            if (!key) return;
1680            var box = findOriginalTileBox(el);
1681            originalTileBoxes[key] = box || el;
1682            el.dataset.maddoggPageflyOriginalTileHidden = '1';
1683            if (box && box !== el) {
1684              box.dataset.maddoggPageflyOriginalTileHidden = '1';
1685              box.style.visibility = 'hidden';
1686            } else {
1687              el.style.visibility = 'hidden';
1688            }
1689            hidden += 1;
1690          });
1691          return hidden;
1692        }
1693
1694        function preserveOuterWhitespace(original, replacement) {
1695          var text = String(original || '');
1696          var leading = (text.match(/^\s*/) || [''])[0];
1697          var trailing = (text.match(/\s*$/) || [''])[0];
1698          return leading + replacement + trailing;
1699        }
1700
1701        function shouldSkipTextNode(node) {
1702          if (!node || !node.nodeValue || !normalizeText(node.nodeValue)) return true;
1703          var parent = node.parentElement;
1704          if (!parent) return true;
1705          var tag = String(parent.tagName || '').toLowerCase();
1706          if (tag === 'script' || tag === 'style' || tag === 'noscript' || tag === 'textarea' || tag === 'select') return true;
1707          if (parent.closest && parent.closest('[data-maddogg-pagefly-i18n-skip], script, style, noscript, textarea, select')) return true;
1708          return false;
1709        }
1710
1711        function translatePageFlyText(root, translationMap) {
1712          if (!root || !translationMap) return { text: 0, attrs: 0 };
1713          var textCount = 0;
1714          var attrCount = 0;
1715          var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {
1716            acceptNode: function (node) {
1717              return shouldSkipTextNode(node) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
1718            }
1719          });
1720          var node;
1721          while ((node = walker.nextNode())) {
1722            var source = normalizeText(node.nodeValue);
1723            var translated = translationMap[source];
1724            if (translated && translated !== source) {
1725              node.nodeValue = preserveOuterWhitespace(node.nodeValue, translated);
1726              textCount += 1;
1727            }
1728          }
1729
1730          root.querySelectorAll('[alt], [title], [aria-label]').forEach(function (el) {
1731            ['alt', 'title', 'aria-label'].forEach(function (attr) {
1732              if (!el.hasAttribute(attr)) return;
1733              var current = el.getAttribute(attr);
1734              var source = normalizeText(current);
1735              var translated = translationMap[source];
1736              if (translated && translated !== source && translated !== current) {
1737                el.setAttribute(attr, translated);
1738                attrCount += 1;
1739              }
1740            });
1741          });
1742
1743          return { text: textCount, attrs: attrCount };
1744        }
1745
1746        function translationMapForLocale(locale) {
1747          if (!i18nPayload || !i18nPayload.translations) return null;
1748          return i18nPayload.translations[locale] || null;
1749        }
1750
1751        function ensureTranslationsLoaded(callback) {
1752          if (i18nLoaded) {
1753            callback();
1754            return;
1755          }
1756          if (i18nLoading) return;
1757          i18nLoading = true;
1758          fetch(translationsUrl, { credentials: 'same-origin', cache: 'force-cache' })
1759            .then(function (response) {
1760              if (!response.ok) throw new Error('HTTP ' + response.status);
1761              return response.json();
1762            })
1763            .then(function (payload) {
1764              i18nPayload = payload || {};
1765              i18nVersion = String(i18nPayload.generated_at || i18nPayload.version || '');
1766              i18nLoaded = true;
1767              i18nLoading = false;
1768              i18nLoadError = '';
1769              callback();
1770            })
1771            .catch(function (error) {
1772              i18nLoading = false;
1773              i18nLoadError = error && error.message ? error.message : String(error || 'unknown');
1774              publishDebug(detectLocale(), 0, 0, 0, 0, 0, 0, 0);
1775            });
1776        }
1777
1778        function publishDebug(locale, roots, overlayCount, linkCount, textCount, attrCount, hiddenLabelCount, mapSize) {
1779          lastStats = {
1780            marker: marker,
1781            locale: locale,
1782            roots: roots,
1783            overlays: overlayCount,
1784            linksLocalized: linkCount,
1785            textTranslated: textCount,
1786            attrsTranslated: attrCount,
1787            originalLabelsHidden: hiddenLabelCount || 0,
1788            mapLoaded: i18nLoaded,
1789            mapSize: mapSize || 0,
1790            version: i18nVersion,
1791            loadError: i18nLoadError,
1792            updatedAt: new Date().toISOString()
1793          };
1794          window.MaddoggPageFlyI18n = lastStats;
1795        }
1796
1797        function pageFlyRoots() {
1798          var selectors = ['.__pf', '[data-pf-type]', '.pagefly-section', '[class*="pagefly"]', '[id*="pagefly"]'];
1799          var nodes = [];
1800          selectors.forEach(function (selector) {
1801            Array.prototype.slice.call(document.querySelectorAll(selector)).forEach(function (node) {
1802              if (node && nodes.indexOf(node) === -1) nodes.push(node);
1803            });
1804          });
1805          return nodes.filter(function (node) {
1806            return !nodes.some(function (other) { return other !== node && other.contains && other.contains(node); });
1807          });
1808        }
1809
1810        function applyPageFlyI18n() {
1811          var locale = detectLocale();
1812          var linkLocale = locale || explicitEnglishLinkLocale();
1813          var roots = pageFlyRoots();
1814          var linkCount = 0;
1815          if (document.body && roots.indexOf(document.body) === -1) {
1816            roots.push(document.body);
1817          }
1818
1819          Array.prototype.slice.call(document.querySelectorAll('a[href]')).forEach(function (el) {
1820            var original = el.getAttribute('href');
1821            var updated = localizeStoreUrl(original, linkLocale);
1822            if (updated && updated !== original) {
1823              el.setAttribute('href', updated);
1824              linkCount += 1;
1825            }
1826          });
1827
1828          if (!locale || !roots.length) {
1829            publishDebug(locale, roots.length, 0, linkCount, 0, 0, 0, 0);
1830            return;
1831          }
1832
1833          var labels = localeLabels[locale] || {};
1834          var translationMap = translationMapForLocale(locale);
1835          var overlayCount = 0;
1836          var textCount = 0;
1837          var attrCount = 0;
1838          var hiddenLabelCount = 0;
1839          linkCount += localizeKnownHomeTileLinks(locale);
1840
1841          roots.forEach(function (root) {
1842            var textOnlyRoot = root === document.body;
1843            if (!textOnlyRoot) {
1844              hiddenLabelCount += hideOriginalTileLabels(root);
1845
1846              root.querySelectorAll('[href], [data-href]').forEach(function (el) {
1847                ['href', 'data-href'].forEach(function (attr) {
1848                  if (!el.hasAttribute(attr)) return;
1849                  var original = el.getAttribute(attr);
1850                  var updated = localizeStoreUrl(original, locale);
1851                  if (updated && updated !== original) {
1852                    el.setAttribute(attr, updated);
1853                    linkCount += 1;
1854                  }
1855                });
1856              });
1857
1858              root.querySelectorAll('img[data-href], img[data-action="url"]').forEach(function (img) {
1859                var key = labelKeyForUrl(img.getAttribute('data-href') || img.getAttribute('href') || '');
1860                if (key && labels[key] && wrapImageWithOverlay(img, labels[key], key)) overlayCount += 1;
1861              });
1862            }
1863
1864            if (translationMap) {
1865              var result = translatePageFlyText(root, translationMap);
1866              textCount += result.text;
1867              attrCount += result.attrs;
1868            }
1869          });
1870
1871          attrCount += fixDutchSpinULoginPage(locale);
1872
1873          publishDebug(locale, roots.length, overlayCount, linkCount, textCount, attrCount, hiddenLabelCount, translationMap ? Object.keys(translationMap).length : 0);
1874        }
1875
1876        function applyNowAndAfterLoad() {
1877          applyPageFlyI18n();
1878          ensureTranslationsLoaded(applyPageFlyI18n);
1879        }
1880
1881        installHomeTileClickInterceptor();
1882
1883        if (document.readyState === 'loading') {
1884          document.addEventListener('DOMContentLoaded', applyNowAndAfterLoad);
1885        } else {
1886          applyNowAndAfterLoad();
1887        }
1888
1889        var attempts = 0;
1890        var timer = window.setInterval(function () {
1891          attempts += 1;
1892          applyNowAndAfterLoad();
1893          if (attempts >= 60) window.clearInterval(timer);
1894        }, 250);
1895      })();
1896    </script>
1896
1897
1898    
1898<script id="maddogg-host-training-powr-locale">
1899      (function () {
1900        if (window.__MaddoggHostTrainingPowrInstalled) return;
1901        window.__MaddoggHostTrainingPowrInstalled = true;
1902
1903        var formIdsByLocale = {
1904          en: '9b07da4b_1648678467',
1905          es: '7572b6a5_1648680870',
1906          nl: 'eb1c8129_1648680649',
1907          de: 'a4658b91_1783329175',
1908          fr: 'f0bf39af_1783333039',
1909          it: 'f6fbb036_1783335314'
1910        };
1911
1912        var allFormIds = Object.keys(formIdsByLocale).map(function (locale) { return formIdsByLocale[locale]; });
1913        var renderStartedFor = '';
1914        var documentObserver = null;
1915        var scheduleTimer = null;
1916
1917        function normalizeLocale(value) {
1918          return String(value || '').trim().toLowerCase().replace('_', '-').split('-')[0];
1919        }
1920
1921        function supportedLocale(value) {
1922          var locale = normalizeLocale(value);
1923          return formIdsByLocale[locale] ? locale : '';
1924        }
1925
1926        function detectLocale() {
1927          var pathLocale = supportedLocale(window.location.pathname.split('/').filter(Boolean)[0]);
1928          if (pathLocale) return pathLocale;
1929          var rootLocale = '';
1930          try { rootLocale = supportedLocale(window.Shopify && window.Shopify.routes && window.Shopify.routes.root); } catch (e) {}
1931          if (rootLocale) return rootLocale;
1932          var shopifyLocale = '';
1933          try { shopifyLocale = supportedLocale(window.Shopify && window.Shopify.locale); } catch (e) {}
1934          if (shopifyLocale) return shopifyLocale;
1935          var htmlLocale = supportedLocale(document.documentElement && document.documentElement.lang);
1936          if (htmlLocale) return htmlLocale;
1937          return 'en';
1938        }
1939
1940        function normalizedPagePath() {
1941          var parts = String(window.location.pathname || '').replace(/\/+/g, '/').split('/').filter(Boolean);
1942          if (parts.length && supportedLocale(parts[0])) parts.shift();
1943          return '/' + parts.join('/');
1944        }
1945
1946        function isHostTrainingPage() {
1947          return /\/pages\/spin-studios-host-a-training\/?$/.test(normalizedPagePath());
1948        }
1949
1950        function ensureStyle() {
1951          if (document.getElementById('maddogg-host-training-powr-locale-style')) return;
1952          var style = document.createElement('style');
1953          style.id = 'maddogg-host-training-powr-locale-style';
1954          style.textContent = '.powr-form-builder[data-maddogg-host-training-pending="true"]{opacity:0;min-height:900px;}';
1955          (document.head || document.documentElement).appendChild(style);
1956        }
1957
1958        function normalizeClassName(value) {
1959          return String(value || '').replace(/\bpowrLoaded\b/g, '').replace(/\s+/g, ' ').trim();
1960        }
1961
1962        function findHostTrainingForm() {
1963          var forms = Array.prototype.slice.call(document.querySelectorAll('.powr-form-builder'));
1964          for (var i = 0; i < forms.length; i += 1) {
1965            if (allFormIds.indexOf(forms[i].id) > -1) return forms[i];
1966            if (forms[i].querySelector('iframe[src*="powr.io/form-builder/u/"]')) return forms[i];
1967          }
1968          return forms[0] || null;
1969        }
1970
1971        function formHasTargetIframe(form, targetId) {
1972          var iframe = form && form.querySelector('iframe[src*="powr.io/form-builder/u/"]');
1973          return !!(iframe && iframe.src.indexOf(targetId) > -1);
1974        }
1975
1976        function revealForm(form, locale, targetId, status) {
1977          if (!form) return;
1978          form.removeAttribute('data-maddogg-host-training-pending');
1979          window.MaddoggHostTrainingPowr = { locale: locale, formId: targetId, applied: true, mode: 'powr-native-once', status: status || 'revealed' };
1980        }
1981
1982        function waitForPowrAndRender(form, locale, targetId, startedAt) {
1983          if (!form || !document.documentElement.contains(form)) return;
1984          if (formHasTargetIframe(form, targetId)) {
1985            revealForm(form, locale, targetId, 'target-iframe-existing');
1986            return;
1987          }
1988
1989          var elapsed = Date.now() - startedAt;
1990          var powrReady = false;
1991          try { powrReady = !!(window.POWR && typeof window.POWR.renderAll === 'function'); } catch (e) {}
1992
1993          if (powrReady) {
1994            try { window.POWR.renderAll(); } catch (e) {}
1995            watchForTargetIframe(form, locale, targetId);
1996            return;
1997          }
1998
1999          if (elapsed < 4500) {
2000            window.setTimeout(function () { waitForPowrAndRender(form, locale, targetId, startedAt); }, 150);
2001          } else {
2002            revealForm(form, locale, targetId, 'powr-timeout');
2003          }
2004        }
2005
2006        function watchForTargetIframe(form, locale, targetId) {
2007          var revealed = false;
2008          function done(status) {
2009            if (revealed) return;
2010            revealed = true;
2011            if (observer) observer.disconnect();
2012            revealForm(form, locale, targetId, status);
2013          }
2014          var observer = new MutationObserver(function () {
2015            var iframe = form.querySelector('iframe[src*="powr.io/form-builder/u/"]');
2016            if (iframe && iframe.src.indexOf(targetId) > -1) {
2017              iframe.addEventListener('load', function () { done('iframe-loaded'); }, { once: true });
2018              window.setTimeout(function () { done('iframe-present'); }, 900);
2019            }
2020          });
2021          observer.observe(form, { childList: true, subtree: true, attributes: true, attributeFilter: ['src', 'class'] });
2022          if (formHasTargetIframe(form, targetId)) done('target-iframe-existing-after-render');
2023          window.setTimeout(function () { done('iframe-wait-timeout'); }, 5000);
2024        }
2025
2026        function applyHostTrainingPowr() {
2027          if (!isHostTrainingPage()) return false;
2028          ensureStyle();
2029          var locale = detectLocale();
2030          var targetId = formIdsByLocale[locale] || formIdsByLocale.en;
2031          var form = findHostTrainingForm();
2032          if (!form || !targetId) return false;
2033
2034          if (form.id === targetId && formHasTargetIframe(form, targetId)) {
2035            revealForm(form, locale, targetId, 'already-correct');
2036            return true;
2037          }
2038
2039          var renderKey = locale + ':' + targetId + ':' + Date.now();
2040          renderStartedFor = renderKey;
2041          form.setAttribute('data-maddogg-host-training-pending', 'true');
2042          form.setAttribute('data-maddogg-host-training-locale', locale);
2043          form.id = targetId;
2044
2045          var className = normalizeClassName(form.className);
2046          if (!/\bpowr-form-builder\b/.test(className)) className = (className + ' powr-form-builder').trim();
2047          var existingIframe = form.querySelector('iframe[src*="powr.io/form-builder/u/"]');
2048          var hasWrongIframe = existingIframe && existingIframe.src.indexOf(targetId) === -1;
2049          var wasAlreadyRendered = /\bpowrLoaded\b/.test(form.className);
2050          form.className = className;
2051          if (hasWrongIframe || wasAlreadyRendered) form.innerHTML = '';
2052
2053          window.setTimeout(function () {
2054            if (renderStartedFor !== renderKey) return;
2055            waitForPowrAndRender(form, locale, targetId, Date.now());
2056          }, 80);
2057          return true;
2058        }
2059
2060        function scheduleApply() {
2061          if (scheduleTimer) return;
2062          scheduleTimer = window.setTimeout(function () {
2063            scheduleTimer = null;
2064            applyHostTrainingPowr();
2065          }, 100);
2066        }
2067
2068        function start() {
2069          if (!isHostTrainingPage()) return;
2070          applyHostTrainingPowr();
2071          documentObserver = new MutationObserver(function () {
2072            var form = findHostTrainingForm();
2073            if (!form) return;
2074            var locale = detectLocale();
2075            var targetId = formIdsByLocale[locale] || formIdsByLocale.en;
2076            if (form.getAttribute('data-maddogg-host-training-pending') === 'true') return;
2077            if (form.id !== targetId || !formHasTargetIframe(form, targetId)) scheduleApply();
2078          });
2079          documentObserver.observe(document.body || document.documentElement, { childList: true, subtree: true });
2080          window.setTimeout(function () {
2081            if (documentObserver) documentObserver.disconnect();
2082            documentObserver = null;
2083            if (scheduleTimer) window.clearTimeout(scheduleTimer);
2084          }, 7000);
2085        }
2086
2087        start();
2088        if (document.readyState === 'loading') {
2089          document.addEventListener('DOMContentLoaded', scheduleApply);
2090        }
2091      })();
2092    </script>
2092
2093
2094    
2094<script id="maddogg-meteor-menu-i18n-override">
2095      (function () {
2096        var marker = 'MADDOGG_METEOR_MENU_I18N_OVERRIDE';
2097        if (window.__MaddoggMeteorMenuI18nInstalled) {
2098          return;
2099        }
2100        window.__MaddoggMeteorMenuI18nInstalled = true;
2101
2102        var localizedRevisionFiles = {
2103          base: {
2104            de: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus.de.json?v=91574297550529015631788350492",
2105            es: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus.es.json?v=159771146062375890781788350492",
2106            fr: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus.fr.json?v=89309128476913393791788350492",
2107            it: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus.it.json?v=4681790072995600381788350492",
2108            nl: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus.nl.json?v=111697410021410294181788350492"
2109          },
2110          current: {
2111            de: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus-4057c652.de.json?v=146286110121603832931788350492",
2112            es: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus-4057c652.es.json?v=159340133210421706121788350492",
2113            fr: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus-4057c652.fr.json?v=37946648063211762291788350492",
2114            it: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus-4057c652.it.json?v=42519139532518565001788350492",
2115            nl: "//spinning.eu/cdn/shop/t/9/assets/meteor-mega-menus-4057c652.nl.json?v=118341931391001511391788350492"
2116          }
2117        };
2118
2119        function normalizeLocale(value) {
2120          return String(value || '').trim().toLowerCase().replace('_', '-').split('-')[0];
2121        }
2122
2123        function supportedLocale(value) {
2124          var locale = normalizeLocale(value);
2125          return localizedRevisionFiles.base[locale] ? locale : '';
2126        }
2127
2128        function localeFromRoot(root) {
2129          var first = String(root || '').split('/').filter(Boolean)[0];
2130          return supportedLocale(first);
2131        }
2132
2133        function detectLocale() {
2134          var paramsLocale = '';
2135          try {
2136            var params = new URLSearchParams(window.location.search || '');
2137            paramsLocale = supportedLocale(params.get('locale') || params.get('language'));
2138          } catch (e) {}
2139          if (paramsLocale) return paramsLocale;
2140
2141          var pathLocale = supportedLocale(window.location.pathname.split('/').filter(Boolean)[0]);
2142          if (pathLocale) return pathLocale;
2143
2144          var shopifyRootLocale = '';
2145          try {
2146            shopifyRootLocale = localeFromRoot(window.Shopify && window.Shopify.routes && window.Shopify.routes.root);
2147          } catch (e) {}
2148          if (shopifyRootLocale) return shopifyRootLocale;
2149
2150          var shopifyLocale = '';
2151          try {
2152            shopifyLocale = supportedLocale(window.Shopify && window.Shopify.locale);
2153          } catch (e) {}
2154          if (shopifyLocale) return shopifyLocale;
2155
2156          var htmlLocale = supportedLocale(document.documentElement && document.documentElement.lang);
2157          if (htmlLocale) return htmlLocale;
2158
2159          return '';
2160        }
2161
2162        function localeRootPathFor(locale) {
2163          var root = '';
2164          try {
2165            root = window.Shopify && window.Shopify.routes && window.Shopify.routes.root;
2166          } catch (e) {}
2167          if (localeFromRoot(root) === locale) {
2168            return root.charAt(root.length - 1) === '/' ? root : root + '/';
2169          }
2170          return '/' + locale + '/';
2171        }
2172
2173        function sourceKeyForUrl(url) {
2174          var text = String(url || '');
2175          if (/meteor-mega-menus[_-]4057c652/i.test(text) || text.indexOf('4057c652') !== -1) {
2176            return 'current';
2177          }
2178          if (/meteor-mega-menus\.json/i.test(text)) {
2179            return 'base';
2180          }
2181          return 'current';
2182        }
2183
2184        function isMeteorMenuRevisionUrl(url) {
2185          var text = String(url || '');
2186          return /meteor-mega-menus/i.test(text) && /\.json(?:\?|$)/i.test(text);
2187        }
2188
2189        function localizedUrlFor(originalUrl) {
2190          if (!isMeteorMenuRevisionUrl(originalUrl)) {
2191            return '';
2192          }
2193          var locale = detectLocale();
2194          if (!locale) {
2195            return '';
2196          }
2197          var sourceKey = sourceKeyForUrl(originalUrl);
2198          var url = localizedRevisionFiles[sourceKey] && localizedRevisionFiles[sourceKey][locale];
2199          if (!url) {
2200            return '';
2201          }
2202          window.MaddoggMeteorMenuI18n = window.MaddoggMeteorMenuI18n || {};
2203          window.MaddoggMeteorMenuI18n.marker = marker;
2204          window.MaddoggMeteorMenuI18n.locale = locale;
2205          window.MaddoggMeteorMenuI18n.localeRootPath = localeRootPathFor(locale);
2206          window.MaddoggMeteorMenuI18n.languageCode = locale.toUpperCase();
2207          window.MaddoggMeteorMenuI18n.sourceKey = sourceKey;
2208          window.MaddoggMeteorMenuI18n.originalRevisionFileUrl = String(originalUrl || '');
2209          window.MaddoggMeteorMenuI18n.localizedRevisionFileUrl = url;
2210          window.MaddoggMeteorMenuI18n.updatedAt = new Date().toISOString();
2211          return url;
2212        }
2213
2214        function patchMeteorMenu(menu) {
2215          if (!menu || typeof menu !== 'object') {
2216            return menu;
2217          }
2218          var locale = detectLocale();
2219          if (locale) {
2220            menu.__maddoggOriginalLanguageCode = menu.__maddoggOriginalLanguageCode || menu.languageCode;
2221            menu.__maddoggOriginalLocaleRootPath = menu.__maddoggOriginalLocaleRootPath || menu.localeRootPath;
2222            menu.languageCode = locale.toUpperCase();
2223            menu.localeRootPath = localeRootPathFor(locale);
2224          }
2225          if (menu.revisionFileUrl) {
2226            var localizedUrl = localizedUrlFor(menu.revisionFileUrl);
2227            if (localizedUrl && menu.revisionFileUrl !== localizedUrl) {
2228              menu.__maddoggOriginalRevisionFileUrl = menu.__maddoggOriginalRevisionFileUrl || menu.revisionFileUrl;
2229              menu.revisionFileUrl = localizedUrl;
2230              menu.__maddoggLocalizedRevisionFileUrl = localizedUrl;
2231            }
2232          }
2233          return menu;
2234        }
2235
2236        var meteorMenuBacking = window.MeteorMenu;
2237        function installMeteorMenuSetter() {
2238          try {
2239            Object.defineProperty(window, 'MeteorMenu', {
2240              configurable: true,
2241              enumerable: true,
2242              get: function () {
2243                return meteorMenuBacking;
2244              },
2245              set: function (value) {
2246                meteorMenuBacking = patchMeteorMenu(value);
2247              }
2248            });
2249            if (meteorMenuBacking) {
2250              meteorMenuBacking = patchMeteorMenu(meteorMenuBacking);
2251            }
2252          } catch (e) {
2253            if (window.MeteorMenu) {
2254              patchMeteorMenu(window.MeteorMenu);
2255            }
2256          }
2257        }
2258
2259        function patchExistingMeteorMenu() {
2260          try {
2261            if (meteorMenuBacking) {
2262              meteorMenuBacking = patchMeteorMenu(meteorMenuBacking);
2263            } else if (window.MeteorMenu) {
2264              window.MeteorMenu = patchMeteorMenu(window.MeteorMenu);
2265            }
2266          } catch (e) {}
2267        }
2268
2269        function installFetchRedirect() {
2270          if (!window.fetch || window.fetch.__maddoggMeteorMenuI18nPatched) {
2271            return;
2272          }
2273          var originalFetch = window.fetch;
2274          var patchedFetch = function (input, init) {
2275            try {
2276              var requestUrl = typeof input === 'string' ? input : (input && input.url) || '';
2277              var localizedUrl = localizedUrlFor(requestUrl);
2278              if (localizedUrl) {
2279                window.MaddoggMeteorMenuI18n.fetchRedirects = (window.MaddoggMeteorMenuI18n.fetchRedirects || 0) + 1;
2280                if (typeof Request !== 'undefined' && input instanceof Request) {
2281                  input = new Request(localizedUrl, input);
2282                } else {
2283                  input = localizedUrl;
2284                }
2285              }
2286            } catch (e) {}
2287            return originalFetch.call(this, input, init);
2288          };
2289          patchedFetch.__maddoggMeteorMenuI18nPatched = true;
2290          window.fetch = patchedFetch;
2291        }
2292
2293        function installXhrRedirect() {
2294          if (!window.XMLHttpRequest || !window.XMLHttpRequest.prototype || window.XMLHttpRequest.prototype.open.__maddoggMeteorMenuI18nPatched) {
2295            return;
2296          }
2297          var originalOpen = window.XMLHttpRequest.prototype.open;
2298          window.XMLHttpRequest.prototype.open = function (method, url) {
2299            try {
2300              var localizedUrl = localizedUrlFor(url);
2301              if (localizedUrl) {
2302                window.MaddoggMeteorMenuI18n.xhrRedirects = (window.MaddoggMeteorMenuI18n.xhrRedirects || 0) + 1;
2303                arguments[1] = localizedUrl;
2304              }
2305            } catch (e) {}
2306            return originalOpen.apply(this, arguments);
2307          };
2308          window.XMLHttpRequest.prototype.open.__maddoggMeteorMenuI18nPatched = true;
2309        }
2310
2311        installMeteorMenuSetter();
2312        installFetchRedirect();
2313        installXhrRedirect();
2314        patchExistingMeteorMenu();
2315
2316        var attempts = 0;
2317        var timer = window.setInterval(function () {
2318          attempts += 1;
2319          patchExistingMeteorMenu();
2320          if (attempts >= 100) {
2321            window.clearInterval(timer);
2322          }
2323        }, 50);
2324      })();
2325    </script>
2325
2326
2327    
2327<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
2327<meta name="google-site-verification" content="_vXXxEuV0FLZwJlgLr1ulxghGgMAIky5SoFZmB5HZJo">
2328<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/90871169351/digital_wallets/dialog">
2329<meta id="in-context-paypal-metadata" data-shop-id="90871169351" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="EUR">
2330<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" hreflang="x-default" href="https://spinning.eu/cart">
2331<link rel="alternate" hreflang="en" href="https://spinning.eu/cart">
2332<link rel="alternate" hreflang="es" href="https://spinning.eu/es/cart">
2333<link rel="alternate" hreflang="de" href="https://spinning.eu/de/cart">
2334<link rel="alternate" hreflang="nl" href="https://spinning.eu/nl/cart">
2335<link rel="alternate" hreflang="fr" href="https://spinning.eu/fr/cart">
2336<link rel="alternate" hreflang="it" href="https://spinning.eu/it/cart">
2337<link rel="alternate" hreflang="en-ES" href="https://spinning.eu/en-es/cart">
2338<link rel="alternate" hreflang="es-ES" href="https://spinning.eu/es-es/cart">
2339<script async="async" src="/checkouts/internal/preloads.js?locale=en-NL&default_configuration_id=4088136007"></script>
2339
2340<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
2341<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-NL&default_configuration_id=4088136007&shop_id=90871169351" crossorigin="anonymous"></script>
vendor: 1 bytes, line 2341
2341
2342<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":90871169351,"countryCode":"NL","currencyCode":"EUR","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/90871169351","merchantName":"Spinning EU","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","maestro","masterCard","amex"],"total":{"type":"pending","label":"Spinning EU","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 2342
2342
2343<script id="shopify-features" type="application/json">{"accessToken":"32d1a4b5d15724c5b558b0b63c527380","betas":["rich-media-storefront-analytics"],"domain":"spinning.eu","predictiveSearch":true,"shopId":90871169351,"locale":"en"}</script>
vendor: 1 bytes, line 2343
2343
2344<script>var Shopify = Shopify || {};
2345Shopify.shop = "d1fuiy-um.myshopify.com";
2346Shopify.locale = "en";
2347Shopify.currency = {"active":"EUR","rate":"1.0"};
2348Shopify.country = "NL";
2349Shopify.theme = {"name":"QA Language Choice NL 2026-09-02","id":200171290951,"schema_name":"Impact","schema_version":"6.5.0","theme_store_id":null,"role":"main"};
2350Shopify.theme.handle = "null";
2351Shopify.theme.style = {"id":null,"handle":null};
2352Shopify.cdnHost = "spinning.eu/cdn";
2353Shopify.routes = Shopify.routes || {};
2354Shopify.routes.root = "/";
2355Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
2356Shopify.SignInWithShop = Shopify.SignInWithShop || {};
2357Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
2358Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 2358
2358
2359<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 2359
2359
2360<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 2360
2360
2361<script>
2362  window.ShopifyPay = window.ShopifyPay || {};
2363  window.ShopifyPay.apiHost = "shop.app\/pay";
2364  window.ShopifyPay.redirectState = null;
2365</script>
vendor: 1 bytes, line 2365
2365
2366<script>
2367  window.Shopify = window.Shopify || {};
2368  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
2369  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
2370  window.Shopify.SignInWithShop.eligible = true;
2371</script>
vendor: 1 bytes, line 2371
2371
2372<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 2372
2372
2373<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 2373
2373
2374<script type="module">
2375  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
2376
2377  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
2378
2379</script>
vendor: 1 bytes, line 2379
2379
2380<script>
2381  window.Shopify = window.Shopify || {};
2382  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
2383  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"]};
2384</script>
vendor: 1 bytes, line 2384
2384
2385<script>(function() {
2386  var isLoaded = false;
2387  function asyncLoad() {
2388    if (isLoaded) return;
2389    isLoaded = true;
2390    var urls = ["https:\/\/loox.io\/widget\/_XrwNy4cUp\/loox.1753193234820.js?shop=d1fuiy-um.myshopify.com"];
2391    for (var i = 0; i < urls.length; i++) {
2392      var s = document.createElement('script');
2393      if ((!1741336271524 || Date.now() < 1741336271524) &&
2394      (!window.AVADA_SPEED_BLACKLIST || window.AVADA_SPEED_BLACKLIST.some(pattern => pattern.test(s))) &&
2395      (!window.AVADA_SPEED_WHITELIST || window.AVADA_SPEED_WHITELIST.every(pattern => !pattern.test(s)))) s.type = 'lightJs'; else s.type = 'text/javascript';
2396      s.async = true;
2397      s.src = urls[i];
2398      var x = document.getElementsByTagName('script')[0];
2399      x.parentNode.insertBefore(s, x);
2400    }
2401  };
2402  if(window.attachEvent) {
2403    window.attachEvent('onload', asyncLoad);
2404  } else {
2405    window.addEventListener('load', asyncLoad, false);
2406  }
2407})();</script>
vendor: 1 bytes, line 2407
2407
2408<script id="__st">var __st={"a":90871169351,"offset":7200,"reqid":"829f7ef1-3fbb-4825-b29e-fb242eac9370-1790953696","pageurl":"spinning.eu\/cart","u":"61fcce9f57ff","p":"cart"};</script>
vendor: 1 bytes, line 2408
2408
2409<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 2409
2409
2410<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 2410
2410
2411<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//spinning.eu/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 2411
2411
2412<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.eu/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>
2412<script crossorigin="anonymous" defer="defer" src="//spinning.eu/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 2412
2412
2413<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 2413
2413
2414<script>
2415  window.Shopify = window.Shopify || {};
2416  window.Shopify.MCP = window.Shopify.MCP || {};
2417  window.Shopify.MCP.enabled = true;
2418  window.Shopify.MCP.shop = "d1fuiy-um.myshopify.com";
2419  window.Shopify.MCP.mcpEndpoint = "https:\/\/spinning.eu\/api\/mcp";
2420  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"]}}];
2421</script>
vendor: 1 bytes, line 2421
2421
2422<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.eu\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
2423</script>
vendor: 1 bytes, line 2423
2423
2424<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.eu/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
2425</script>
vendor: 1 bytes, line 2425
2425
2426<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
2427  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);
2428</script>
vendor: 1 bytes, line 2428
2428
2429<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})}}));
2430</script>
vendor: 1 bytes, line 2430
2430
2431<script id='scb4127' type='text/javascript' async='' src='https://spinning.eu/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
2431<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://spinning.eu/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
2432<style id="shopify-accelerated-checkout-cart">
2433        #shopify-buyer-consent {
2434  margin-top: 1em;
2435  display: inline-block;
2436  width: 100%;
2437}
2438
2439#shopify-buyer-consent.hidden {
2440  display: none;
2441}
2442
2443#shopify-subscription-policy-button {
2444  background: none;
2445  border: none;
2446  padding: 0;
2447  text-decoration: underline;
2448  font-size: inherit;
2449  cursor: pointer;
2450}
2451
2452#shopify-subscription-policy-button::before {
2453  box-shadow: none;
2454}
2455
2456      </style>
2457
2458<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
2458
2459<link href="//spinning.eu/cdn/shop/t/9/assets/theme.css?v=66558542309975359531788350492" rel="stylesheet" type="text/css" media="all" />
2460
2461<!-- BEGIN app block: shopify://apps/pagefly-ai-page-builder/blocks/app-embed/83e179f7-59a0-4589-8c66-c0dddf959200 -->
2462
2463<!-- BEGIN app snippet: pagefly-cro-ab-testing-main -->
2464
2465
2466
2467
2468
2469
2470
2471<script>
2472  ;(function () {
2473    const url = new URL(window.location)
2474    const viewParam = url.searchParams.get('view')
2475    if (viewParam && viewParam.includes('variant-pf-')) {
2476      url.searchParams.set('pf_v', viewParam)
2477      url.searchParams.delete('view')
2478      window.history.replaceState({}, '', url)
2479    }
2480  })()
2481</script>
2481
2482
2483
2484
2485<script type='module'>
2486  
2487  window.PAGEFLY_CRO = window.PAGEFLY_CRO || {}
2488
2489  window.PAGEFLY_CRO['data_debug'] = {
2490    original_template_suffix: "",
2491    allow_ab_test: false,
2492    ab_test_start_time: 0,
2493    ab_test_end_time: 0,
2494    today_date_time: 1790953696000,
2495  }
2496  window.PAGEFLY_CRO['GA4'] = { enabled: false}
2497</script>
2497
2498
2499<!-- END app snippet -->
2500
2501
2502
2503
2504
2505
2506
2507
2508  
2508<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-helper.js' defer='defer'></script>
2508
2509
2510  
2510<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-general-helper.js' defer='defer'></script>
2510
2511
2512  
2512<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-snap-slider.js' defer='defer'></script>
2512
2513
2514  
2514<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-slideshow-v3.js' defer='defer'></script>
2514
2515
2516  
2516<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-slideshow-v4.js' defer='defer'></script>
2516
2517
2518  
2518<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-glider.js' defer='defer'></script>
2518
2519
2520  
2520<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-slideshow-v1-v2.js' defer='defer'></script>
2520
2521
2522  
2522<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-product-media.js' defer='defer'></script>
2522
2523
2524  
2524<script src='https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-product.js' defer='defer'></script>
2524
2525
2526
2527<script id='pagefly-helper-data' type='application/json'>
2528  {
2529    "page_optimization": {
2530      "assets_prefetching": false
2531    },
2532    "elements_asset_mapper": {
2533      "Accordion": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-accordion.js",
2534      "Accordion3": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-accordion3.js",
2535      "CountDown": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-countdown.js",
2536      "GMap1": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-gmap.js",
2537      "GMap2": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-gmap.js",
2538      "GMapBasicV2": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-gmap.js",
2539      "GMapAdvancedV2": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-gmap.js",
2540      "HTML.Video": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-htmlvideo.js",
2541      "HTML.Video2": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-htmlvideo2.js",
2542      "HTML.Video3": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-htmlvideo2.js",
2543      "BackgroundVideo": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-htmlvideo2.js",
2544      "Instagram": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-instagram.js",
2545      "Instagram2": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-instagram.js",
2546      "Insta3": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-instagram3.js",
2547      "Tabs": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-tab.js",
2548      "Tabs3": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-tab3.js",
2549      "ProductBox": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-cart.js",
2550      "FBPageBox2": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-facebook.js",
2551      "FBLikeButton2": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-facebook.js",
2552      "TwitterFeed2": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-twitter.js",
2553      "Paragraph4": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-paragraph4.js",
2554
2555      "AliReviews": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2556      "BackInStock": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2557      "GloboBackInStock": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2558      "GrowaveWishlist": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2559      "InfiniteOptionsShopPad": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2560      "InkybayProductPersonalizer": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder
2560-363/assets/pagefly-3rd-elements.js",
2561      "LimeSpot": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2562      "Loox": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2563      "Opinew": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2564      "Powr": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2565      "ProductReviews": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2566      "PushOwl": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2567      "ReCharge": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2568      "Rivyo": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2569      "TrackingMore": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2570      "Vitals": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js",
2571      "Wiser": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-3rd-elements.js"
2572    },
2573    "custom_elements_mapper": {
2574      "pf-click-action-element": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-click-action-element.js",
2575      "pf-dialog-element": "https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-dialog-element.js"
2576    }
2577  }
2578</script>
2578
2579
2580<script id='pagefly-heatmap-config' type='application/json'>
2581  {"version":8,"enabled_page_ids":[],"tracking_paused":false,"pause_reason":null,"paused_until":null}
2582</script>
vendor: 1 bytes, line 2582
2582
2583<script>
2584  (function () {
2585    var el = document.getElementById('pagefly-heatmap-config')
2586    if (!el) { window.__pagefly_heatmap_config__ = {}; return }
2587    try {
2588      window.__pagefly_heatmap_config__ = JSON.parse(el.textContent || '{}') || {}
2589    } catch (e) {
2590      window.__pagefly_heatmap_config__ = {}
2591    }
2592  })()
2593</script>
vendor: 1 bytes, line 2593
2593
2594<script>
2595  // Heatmap overlay loader. Three gates, all of them cheap, none of them trusting the URL:
2596  // the visitor must have arrived on a pf_heatmap link, the SERVER must have published an
2597  // overlay path in the metafield, and this page must already be one the merchant enabled
2598  // tracking for. The last gate is what stops a crafted link pulling the asset onto an
2599  // arbitrary storefront page. Everything else is decided inside the asset, and by the server.
2600  (function () {
2601    var cfg = window.__pagefly_heatmap_config__ || {}
2602    var id = (window.__pagefly_page_setting__ || {}).pageId
2603    if (!/[#&]pf_heatmap=/.test(window.location.hash || '')) return
2604    if (!cfg.overlay_data_path || !Array.isArray(cfg.enabled_page_ids)) return
2605    if (!id || cfg.enabled_page_ids.indexOf(id) === -1) return
2606    var s = document.createElement('script')
2607    s.src = 'https://cdn.shopify.com/extensions/01a0f807-168f-7fcf-a3d0-e91e9a539d12/pagefly-ai-page-builder-363/assets/pagefly-heatmap-overlay.js'
2608    s.defer = true
2609    document.head.appendChild(s)
2610  })()
2611</script>
2611
2612
2613<!-- BEGIN app snippet: pf-ai-schema -->
2614<!-- END app snippet -->
2615
2616
2617<!-- END app block --><!-- BEGIN app block: shopify://apps/meteor-mega-menu/blocks/app_embed/9412d6a7-f8f8-4d65-b9ae-2737c2f0f45b -->
2618
2619
2620    
2620<script>
2621        window.MeteorMenu = {
2622            // These will get handled by the Meteor class constructor
2623            registeredCallbacks: [],
2624            api: {
2625                on: (eventName, callback) => {
2626                    window.MeteorMenu.registeredCallbacks.push([eventName, callback]);
2627                }
2628            },
2629            revisionFileUrl: "\/\/spinning.eu\/cdn\/shop\/files\/meteor-mega-menus_4057c652-a8d4-4c5c-a627-7eb0f6d2e8e8.json?v=8578441178749559712",
2630            storefrontAccessToken: "30654666d5d033cee6b15d29e9074d91",
2631            localeRootPath: "\/",
2632            languageCode: "en".toUpperCase(),
2633            countryCode: "NL",
2634            shop: {
2635                domain: "spinning.eu",
2636                permanentDomain: "d1fuiy-um.myshopify.com",
2637                moneyFormat: "€{{amount_with_comma_separator}}",
2638                currency: "EUR"
2639            },
2640            options: {
2641                desktopSelector: "",
2642                mobileSelector: "",
2643                disableDesktop: false,
2644                disableMobile: false,
2645                navigationLinkSpacing: 16,
2646                navigationLinkCaretStyle: "outline",
2647                menuDisplayAnimation: "none",
2648                menuCenterInViewport: false,
2649                menuVerticalOffset: 10,
2650                menuVerticalPadding: 0,
2651                menuJustifyContent: "flex-start",
2652                menuFontSize: 16,
2653                menuFontWeight: "400",
2654                menuTextTransform: "none",
2655                menuDisplayAction: "hover",
2656                menuDisplayDelay: "0",
2657                externalLinksInNewTab: "true",
2658                mobileBreakpoint: 0,
2659                addonsEnabled: false
2660            }
2661        }
2662    </script>
2662
2663
2664<style data-app-injected='MeteorMenu'>
2665        
2666    </style><!-- END app block -->
2666<script src="https://cdn.shopify.com/extensions/01a0e9f8-8c23-78e5-9b4c-2314965136de/bacon-menu-40/assets/meteor-menu.js" type="text/javascript" defer="defer"></script>
2666
2667<link href="https://cdn.shopify.com/extensions/01a0e9f8-8c23-78e5-9b4c-2314965136de/bacon-menu-40/assets/meteor-menu.css" rel="stylesheet" type="text/css" media="all">
2668<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
2669<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: 90871169351,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};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 2669
2669
2670<script>
2671  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
2672</script>
vendor: 1 bytes, line 2672
2672
2673<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}
2673).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: 90871169351,storefrontBaseUrl: "https://spinning.eu",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://spinning.eu/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"3938517319","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"},{"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 EU","paymentSettings":{"currencyCode":"EUR"},"myshopifyDomain":"d1fuiy-um.myshopify.com","countryCode":"NL","storefrontUrl":"https:\/\/spinning.eu"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://spinning.eu/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"200171290951","themePublished":"true","eventMetadataId":"cc136bf7-046d-48de-bc1c-2402c78fd1e2","pageType":"cart","shopId":"90871169351","storefrontBaseUrl":"https:\/\/spinning.eu","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
2673<script>
2674  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
2675  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
2676  window.ShopifyAnalytics.meta.currency = 'EUR';
2677  var meta = {"page":{"pageType":"cart","requestId":"829f7ef1-3fbb-4825-b29e-fb242eac9370-1790953696"}};
2678  for (var attr in meta) {
2679    window.ShopifyAnalytics.meta[attr] = meta[attr];
2680  }
2681</script>
vendor: 1 bytes, line 2681
2681
2682<script class="analytics">
2683  (function () {
2684    var customDocumentWrite = function(content) {
2685      var jquery = null;
2686
2687      if (window.jQuery) {
2688        jquery = window.jQuery;
2689      } else if (window.Checkout && window.Checkout.$) {
2690        jquery = window.Checkout.$;
2691      }
2692
2693      if (jquery) {
2694        jquery('body').append(content);
2695      }
2696    };
2697
2698    var hasLoggedConversion = function(token) {
2699      if (token) {
2700        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
2701      }
2702      return false;
2703    }
2704
2705    var setCookieIfConversion = function(token) {
2706      if (token) {
2707        var twoMonthsFromNow = new Date(Date.now());
2708        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
2709
2710        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
2711      }
2712    }
2713
2714    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
2715    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
2716    if (trekkie.integrations) {
2717      return;
2718    }
2719    trekkie.methods = [
2720      'identify',
2721      'page',
2722      'ready',
2723      'track',
2724      'trackForm',
2725      'trackLink'
2726    ];
2727    trekkie.factory = function(method) {
2728      return function() {
2729        var args = Array.prototype.slice.call(arguments);
2730        args.unshift(method);
2731        trekkie.push(args);
2732        if (method == 'track' || method == 'page') {
2733          var pageUrl;
2734          try {
2735            pageUrl = window.location.href;
2736          } catch (e) {}
2737          var pageReferrer;
2738          try {
2739            pageReferrer = document.referrer;
2740          } catch (e) {}
2741          try {
2742            if (window.__TREKKIE_SHIM_QUEUE == null) {
2743              window.__TREKKIE_SHIM_QUEUE = [];
2744            }
2745            window.__TREKKIE_SHIM_QUEUE.push({
2746              from: 'trekkie-stub',
2747              method: method,
2748              args: args.slice(1),
2749              pageContext: {
2750                url: pageUrl,
2751                referrer: pageReferrer
2752              }
2753            });
2754          } catch (e) {
2755            // no-op
2756          }
2757        }
2758        return trekkie;
2759      };
2760    };
2761    for (var i = 0; i < trekkie.methods.length; i++) {
2762      var key = trekkie.methods[i];
2763      trekkie[key] = trekkie.factory(key);
2764    }
2765    trekkie.load = function(config) {
2766      trekkie.config = config || {};
2767      trekkie.config.initialDocumentCookie = document.cookie;
2768      var first = document.getElementsByTagName('script')[0];
2769var script = document.createElement('script');
2770script.type = 'text/javascript';
2771script.onerror = function(e) {
2772  var scriptFallback = document.createElement('script');
2773  scriptFallback.type = 'text/javascript';
2774  scriptFallback.onerror = function(error) {
2775          var Monorail = {
2776      produce: function produce(monorailDomain, schemaId, payload) {
2777        var currentMs = new Date().getTime();
2778        var event = {
2779          schema_id: schemaId,
2780          payload: payload,
2781          metadata: {
2782            event_created_at_ms: currentMs,
2783            event_sent_at_ms: currentMs
2784          }
2785        };
2786        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
2787      },
2788      sendRequest: function sendRequest(endpointUrl, payload) {
2789        // Try the sendBeacon API
2790        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
2791          var blobData = new window.Blob([payload], {
2792            type: 'text/plain'
2793          });
2794
2795          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
2796            return true;
2797          } // sendBeacon was not successful
2798
2799        } // XHR beacon
2800
2801        var xhr = new XMLHttpRequest();
2802
2803        try {
2804          xhr.open('POST', endpointUrl);
2805          xhr.setRequestHeader('Content-Type', 'text/plain');
2806          xhr.send(payload);
2807        } catch (e) {
2808          console.log(e);
2809        }
2810
2811        return false;
2812      },
2813      isIos12: function isIos12() {
2814        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
2815      }
2816    };
2817    Monorail.produce('monorail-edge.shopifysvc.com',
2818      'trekkie_storefront_load_errors/1.1',
2819      {shop_id: 90871169351,
2820      theme_id: 200171290951,
2821      app_name: "storefront",
2822      context_url: window.location.href,
2823      source_url: "//spinning.eu/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
2824
2825  };
2826  scriptFallback.async = true;
2827  scriptFallback.src = '//spinning.eu/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
2828  first.parentNode.insertBefore(scriptFallback, first);
2829};
2830script.async = true;
2831script.src = '//spinning.eu/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
2832first.parentNode.insertBefore(script, first);
2833
2834    };
2835    trekkie.load(
2836      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":90871169351,"isMerchantRequest":null,"themeId":200171290951,"themeCityHash":"7357115938780251311","contentLanguage":"en","currency":"EUR","eventMetadataId":"cc136bf7-046d-48de-bc1c-2402c78fd1e2"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
2837    );
2838
2839    var loaded = false;
2840    trekkie.ready(function() {
2841      if (loaded) return;
2842      loaded = true;
2843
2844      window.ShopifyAnalytics.lib = window.trekkie;
2845
2846      var originalDocumentWrite = document.write;
2847      document.write = customDocumentWrite;
2848      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
2849      document.write = originalDocumentWrite;
2850
2851      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
2852      var token = match? match[1]: undefined;
2853      if (!hasLoggedConversion(token)) {
2854        setCookieIfConversion(token);
2855        
2856      }
2857    });
2858
2859    window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"829f7ef1-3fbb-4825-b29e-fb242eac9370-1790953696","shopifyEmitted":true});
2860
2861    var eventsListenerScript = document.createElement('script');
2862    eventsListenerScript.async = true;
2863    eventsListenerScript.src = "//spinning.eu/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
2864    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
2865})();</script>
vendor: 1 bytes, line 2865
2865
2866<script
2867  defer
2868  src="https://spinning.eu/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
2869  data-application="storefront-renderer"
2870  data-shop-id="90871169351"
2871  data-render-region="gcp-us-west1"
2872  data-page-type="cart"
2873  data-theme-instance-id="200171290951"
2874  data-theme-name="Impact"
2875  data-theme-version="6.5.0"
2876  data-monorail-region="shop_domain"
2877  data-resource-timing-sampling-rate="10"
2878  data-shs="true"
2879  data-shs-beacon="true"
2880  data-shs-export-with-fetch="true"
2881  data-shs-logs-sample-rate="1"
2882  data-shs-beacon-endpoint="https://spinning.eu/api/collect"
2883></script>
2883
2884<meta name="shopify-y" content="2e6614db-57b8-4279-bef7-f8867a0d5aaf" data-expiration="1822511296000"><meta name="shopify-s" content="eefde8d3-e6c4-4305-9c2b-dd5bf40a11d1" data-expiration="1790955496000"><meta name="new-cookie-storage-activated" content="t">
2885</head>
2886
2887  <body class="zoom-image--enabled"><!-- DRAWER -->
2888<template id="drawer-default-template">
2889  <style>
2890    [hidden] {
2891      display: none !important;
2892    }
2893  </style>
2894
2895  <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">
2896        <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path>
2897      </svg></button>
2898
2899  <div part="overlay"></div>
2900
2901  <div part="content">
2902    <header part="header">
2903      <slot name="header"></slot>
2904
2905      <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">
2906        <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path>
2907      </svg></button>
2908    </header>
2909
2910    <div part="body">
2911      <slot></slot>
2912    </div>
2913
2914    <footer part="footer">
2915      <slot name="footer"></slot>
2916    </footer>
2917  </div>
2918</template>
2919
2920<!-- POPOVER -->
2921<template id="popover-default-template">
2922  <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">
2923        <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path>
2924      </svg></button>
2925
2926  <div part="overlay"></div>
2927
2928  <div part="content">
2929    <header part="title">
2930      <slot name="title"></slot>
2931    </header>
2932
2933    <div part="body">
2934      <slot></slot>
2935    </div>
2936  </div>
2937</template><a href="#main" class="skip-to-content sr-only">Skip to content</a><!-- BEGIN sections: header-group -->
2938<aside id="shopify-section-sections--30366605934919__announcement-bar" class="shopify-section shopify-section-group-header-group shopify-section--announcement-bar"><style>
2939    :root {
2940      --sticky-announcement-bar-enabled:1;
2941    }#shopify-section-sections--30366605934919__announcement-bar {
2942        position: sticky;
2943        top: 0;
2944        z-index: 20;
2945      }
2946
2947      .shopify-section--header ~ #shopify-section-sections--30366605934919__announcement-bar {
2948        top: calc(var(--sticky-header-enabled, 0) * var(--header-height, 0px));
2949      }</style><height-observer variable="announcement-bar">
2950    <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">
2951          <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 " >
2952                   
2953
2954
2955  
2956
2957  <a href="/collections/commercial-spin-bikes">Check out our Spinning® Studio Bikes HERE</a></p></announcement-bar></div>
2958        </div></div>
2959  </height-observer>
2960
2961  
2961<script>
2962    document.documentElement.style.setProperty('--announcement-bar-height', Math.round(document.getElementById('shopify-section-sections--30366605934919__announcement-bar').clientHeight) + 'px');
2963  </script>
2963</aside><header id="shopify-section-sections--30366605934919__header" class="shopify-section shopify-section-group-header-group shopify-section--header"><style>
2964  :root {
2965    --sticky-header-enabled:1;
2966  }
2967
2968  #shopify-section-sections--30366605934919__header {
2969    --header-grid-template: "main-nav logo secondary-nav" / minmax(0, 1fr) auto minmax(0, 1fr);
2970    --header-padding-block: var(--spacing-3);
2971    --header-background-opacity: 0.0;
2972    --header-background-blur-radius: 6px;
2973    --header-transparent-text-color: 0 0 0;--header-logo-width: 100px;
2974      --header-logo-height: 22px;position: sticky;
2975    top: 0;
2976    z-index: 10;
2977  }.shopify-section--announcement-bar ~ #shopify-section-sections--30366605934919__header {
2978      top: calc(var(--sticky-announcement-bar-enabled, 0) * var(--announcement-bar-height, 0px));
2979    }@media screen and (min-width: 700px) {
2980    #shopify-section-sections--30366605934919__header {--header-logo-width: 220px;
2981        --header-logo-height: 48px;--header-padding-block: var(--spacing-6);
2982    }
2983  }@media screen and (min-width: 1150px) {#shopify-section-sections--30366605934919__header {
2984        --header-grid-template: "logo main-nav secondary-nav" / minmax(0, 1fr) fit-content(55%) minmax(0, 1fr);
2985      }
2986    }</style>
2987
2988<height-observer variable="header">
2989  <store-header class="header"  sticky>
2990    <div class="header__wrapper"><div class="header__main-nav">
2991        <div class="header__icon-list">
2992          <button type="button" class="tap-area lg:hidden" aria-controls="header-sidebar-menu">
2993            <span class="sr-only">Menu</span><svg role="presentation" stroke-width="1" focusable="false" width="22" height="22" class="icon icon-hamburger" viewBox="0 0 22 22">
2994        <path d="M1 5h20M1 11h20M1 17h20" stroke="currentColor" stroke-linecap="round"></path>
2995      </svg></button>
2996
2997          <a href="/search" class="tap-area sm:hidden" aria-controls="search-drawer">
2998            <span class="sr-only">Search</span><svg role="presentation" stroke-width="1" focusable="false" width="22" height="22" class="icon icon-search" viewBox="0 0 22 22">
2999        <circle cx="11" cy="10" r="7" fill="none" stroke="currentColor"></circle>
3000        <path d="m16 15 3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
3001      </svg></a><nav class="header__link-list justify-center wrap" role="navigation">
3002              <ul class="contents" role="list">
3003
3004                  <li><a href="/" class="bold link-faded-reverse" >Home</a></li>
3005
3006                  <li><a href="/" class="bold link-faded-reverse" >Shop</a></li>
3007
3008                  <li><a href="/" class="bold link-faded-reverse" >HOME</a></li>
3009
3010                  <li><a href="/pages/ride-at-home" class="bold link-faded-reverse" >RIDE AT HOME</a></li>
3011
3012                  <li><a href="/pages/spinning-apps" class="bold link-faded-reverse" >SPINNING APP</a></li>
3013
3014                  <li><a href="/pages/instructors" class="bold link-faded-reverse" >INSTRUCTORS</a></li>
3015
3016                  <li><a href="/" class="bold link-faded-reverse" >SHOP</a></li></ul>
3017            </nav></div>
3018      </div>
3019        <a href="/" class="header__logo"><span class="sr-only">Spinning EU</span><img src="//spinning.eu/cdn/shop/files/980a76ddb6079d3906d4089b704bc7c9.w917.h917.png?v=1753188756&amp;width=917" alt="" srcset="//spinning.eu/cdn/shop/files/980a76ddb6079d3906d4089b704bc7c9.w917.h917.png?v=1753188756&amp;width=440 440w, //spinning.eu/cdn/shop/files/980a76ddb6079d3906d4089b704bc7c9.w917.h917.png?v=1753188756&amp;width=660 660w" width="917" height="199" sizes="220px" class="header__logo-image"><img src="//spinning.eu/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1753188729&amp;width=701" alt="" srcset="//spinning.eu/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1753188729&amp;width=440 440w, //spinning.eu/cdn/shop/files/SP_SpinMan_Wordmark_Wht_Low.png?v=1753188729&amp;width=660 660w" width="701" height="199" sizes="220px" class="header__logo-image header__logo-image--transparent"></a>
3020      
3021<div class="header__secondary-nav"><ul class="header__icon-list"><li class="hidden md:block shrink-0"><link rel="stylesheet" href="//spinning.eu/cdn/shop/t/9/assets/country-flags.css?v=105120918595178899651788351188" media="print" onload="this.media='all'; this.onload = null"><div class="relative">
3022      <button type="button" class="text-with-icon gap-2.5 group" aria-label="Change country or currency" aria-controls="popover-localization-form-country-end-sections--30366605934919__header" aria-expanded="false">
3023        <div class="h-stack gap-2"><span class="country-flags country-flags--NL"></span><span class="bold text-sm">EUR €</span>
3024        </div><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7">
3025        <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path>
3026      </svg></button>
3027
3028      <x-popover id="popover-localization-form-country-end-sections--30366605934919__header" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="end" class="popover">
3029        <p class="h5" slot="title">Country</p><form method="post" action="/localization" id="localization-form-country-end-sections--30366605934919__header" 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="/cart" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AF" >
3030                <span class="country-flags country-flags--AF"></span>
3031                <span>Afghanistan (AFN ؋)</span>
3032              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AL" >
3033                <span class="country-flags country-flags--AL"></span>
3034                <span>Albania (ALL L)</span>
3035              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DZ" >
3036                <span class="country-flags country-flags--DZ"></span>
3037                <span>Algeria (DZD د.ج)</span>
3038              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AD" >
3039                <span class="country-flags country-flags--AD"></span>
3040                <span>Andorra (EUR €)</span>
3041              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AO" >
3042                <span class="country-flags country-flags--AO"></span>
3043                <span>Angola (EUR €)</span>
3044              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AM" >
3045                <span class="country-flags country-flags--AM"></span>
3046                <span>Armenia (AMD դր.)</span>
3047              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AT" >
3048                <span class="country-flags country-flags--AT"></span>
3049                <span>Austria (EUR €)</span>
3050              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AZ" >
3051                <span class="country-flags country-flags--AZ"></span>
3052                <span>Azerbaijan (AZN ₼)</span>
3053              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BH" >
3054                <span class="country-flags country-flags--BH"></span>
3055                <span>Bahrain (EUR €)</span>
3056              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BY" >
3057                <span class="country-flags country-flags--BY"></span>
3058                <span>Belarus (EUR €)</span>
3059              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BE" >
3060                <span class="country-flags country-flags--BE"></span>
3061                <span>Belgium (EUR €)</span>
3062              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BJ" >
3063                <span class="country-flags country-flags--BJ"></span>
3064                <span>Benin (XOF Fr)</span>
3065              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BA" >
3066                <span class="country-flags country-flags--BA"></span>
3067                <span>Bosnia &amp; Herzegovina (BAM КМ)</span>
3068              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BW" >
3069                <span class="country-flags country-flags--BW"></span>
3070                <span>Botswana (BWP P)</span>
3071              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BG" >
3072                <span class="country-flags country-flags--BG"></span>
3073                <span>Bulgaria (EUR €)</span>
3074              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BF" >
3075                <span class="country-flags country-flags--BF"></span>
3076                <span>Burkina Faso (XOF Fr)</span>
3077              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BI" >
3078                <span class="country-flags country-flags--BI"></span>
3079                <span>Burundi (BIF Fr)</span>
3080              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CM" >
3081                <span class="country-flags country-flags--CM"></span>
3082                <span>Cameroon (XAF CFA)</span>
3083              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CV" >
3084                <span class="country-flags country-flags--CV"></span>
3085                <span>Cape Verde (CVE $)</span>
3086              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CF" >
3087                <span class="country-flags country-flags--CF"></span>
3088                <span>Central African Republic (XAF CFA)</span>
3089              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TD" >
3090                <span class="country-flags country-flags--TD"></span>
3091                <span>Chad (XAF CFA)</span>
3092              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HR" >
3093                <span class="country-flags country-flags--HR"></span>
3094                <span>Croatia (EUR €)</span>
3095              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CY" >
3096                <span class="country-flags country-flags--CY"></span>
3097                <span>Cyprus (EUR €)</span>
3098              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CZ" >
3099                <span class="country-flags country-flags--CZ"></span>
3100                <span>Czechia (CZK Kč)</span>
3101              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DK" >
3102                <span class="country-flags country-flags--DK"></span>
3103                <span>Denmark (DKK kr.)</span>
3104              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DJ" >
3105                <span class="country-flags country-flags--DJ"></span>
3106                <span>Djibouti (DJF Fdj)</span>
3107              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EG" >
3108                <span class="country-flags country-flags--EG"></span>
3109                <span>Egypt (EGP ج.م)</span>
3110              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ER" >
3111                <span class="country-flags country-flags--ER"></span>
3112                <span>Eritrea (EUR €)</span>
3113              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EE" >
3114                <span class="country-flags country-flags--EE"></span>
3115                <span>Estonia (EUR €)</span>
3116              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ET" >
3117                <span class="country-flags country-flags--ET"></span>
3118                <span>Ethiopia (ETB Br)</span>
3119              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FI" >
3120                <span class="country-flags country-flags--FI"></span>
3121                <span>Finland (EUR €)</span>
3122              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FR" >
3123                <span class="country-flags country-flags--FR"></span>
3124                <span>France (EUR €)</span>
3125              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GA" >
3126                <span class="country-flags country-flags--GA"></span>
3127                <span>Gabon (XOF Fr)</span>
3128              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GM" >
3129                <span class="country-flags country-flags--GM"></span>
3130                <span>Gambia (GMD D)</span>
3131              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GE" >
3132                <span class="country-flags country-flags--GE"></span>
3133                <span>Georgia (EUR €)</span>
3134              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DE" >
3135                <span class="country-flags country-flags--DE"></span>
3136                <span>Germany (EUR €)</span>
3137              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GH" >
3138                <span class="country-flags country-flags--GH"></span>
3139                <span>Ghana (EUR €)</span>
3140              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GI" >
3141                <span class="country-flags country-flags--GI"></span>
3142                <span>Gibraltar (GBP £)</span>
3143              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GR" >
3144                <span class="country-flags country-flags--GR"></span>
3145                <span>Greece (EUR €)</span>
3146              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GN" >
3147                <span class="country-flags country-flags--GN"></span>
3148                <span>Guinea (GNF Fr)</span>
3149              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GW" >
3150                <span class="country-flags country-flags--GW"></span>
3151                <span>Guinea-Bissau (XOF Fr)</span>
3152              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HU" >
3153                <span class="country-flags country-flags--HU"></span>
3154                <span>Hungary (HUF Ft)</span>
3155              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IS" >
3156                <span class="country-flags country-flags--IS"></span>
3157                <span>Iceland (ISK kr)</span>
3158              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IQ" >
3159                <span class="country-flags country-flags--IQ"></span>
3160                <span>Iraq (EUR €)</span>
3161              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IE" >
3162                <span class="country-flags country-flags--IE"></span>
3163                <span>Ireland (EUR €)</span>
3164              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IL" >
3165                <span class="country-flags country-flags--IL"></span>
3166                <span>Israel (ILS ₪)</span>
3167              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IT" >
3168                <span class="country-flags country-flags--IT"></span>
3169                <span>Italy (EUR €)</span>
3170              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JO" >
3171                <span class="country-flags country-flags--JO"></span>
3172                <span>Jordan (EUR €)</span>
3173              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KZ" >
3174                <span class="country-flags country-flags--KZ"></span>
3175                <span>Kazakhstan (KZT ₸)</span>
3176              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KE" >
3177                <span class="country-flags country-flags--KE"></span>
3178                <span>Kenya (KES KSh)</span>
3179              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KW" >
3180                <span class="country-flags country-flags--KW"></span>
3181                <span>Kuwait (EUR €)</span>
3182              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LV" >
3183                <span class="country-flags country-flags--LV"></span>
3184                <span>Latvia (EUR €)</span>
3185              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LB" >
3186                <span class="country-flags country-flags--LB"></span>
3187                <span>Lebanon (LBP ل.ل)</span>
3188              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LS" >
3189                <span class="country-flags country-flags--LS"></span>
3190                <span>Lesotho (EUR €)</span>
3191              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LR" >
3192                <span class="country-flags country-flags--LR"></span>
3193                <span>Liberia (EUR €)</span>
3194              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LI" >
3195                <span class="country-flags country-flags--LI"></span>
3196                <span>Liechtenstein (EUR €)</span>
3197              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LT" >
3198                <span class="country-flags country-flags--LT"></span>
3199                <span>Lithuania (EUR €)</span>
3200              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LU" >
3201                <span class="country-flags country-flags--LU"></span>
3202                <span>Luxembourg (EUR €)</span>
3203              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MG" >
3204                <span class="country-flags country-flags--MG"></span>
3205                <span>Madagascar (EUR €)</span>
3206              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MW" >
3207                <span class="country-flags country-flags--MW"></span>
3208                <span>Malawi (MWK MK)</span>
3209              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ML" >
3210                <span class="country-flags country-flags--ML"></span>
3211                <span>Mali (XOF Fr)</span>
3212              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MT" >
3213                <span class="country-flags country-flags--MT"></span>
3214                <span>Malta (EUR €)</span>
3215              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MR" >
3216                <span class="country-flags country-flags--MR"></span>
3217                <span>Mauritania (EUR €)</span>
3218              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MU" >
3219                <span class="country-flags country-flags--MU"></span>
3220                <span>Mauritius (MUR ₨)</span>
3221              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MC" >
3222                <span class="country-flags country-flags--MC"></span>
3223                <span>Monaco (EUR €)</span>
3224              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ME" >
3225                <span class="country-flags country-flags--ME"></span>
3226                <span>Montenegro (EUR €)</span>
3227              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MA" >
3228                <span class="country-flags country-flags--MA"></span>
3229                <span>Morocco (MAD د.م.)</span>
3230              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MZ" >
3231                <span class="country-flags country-flags--MZ"></span>
3232                <span>Mozambique (EUR €)</span>
3233              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NA" >
3234                <span class="country-flags country-flags--NA"></span>
3235                <span>Namibia (EUR €)</span>
3236              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NL" aria-selected="true">
3237                <span class="country-flags country-flags--NL"></span>
3238                <span>Netherlands (EUR €)</span>
3239              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NE" >
3240                <span class="country-flags country-flags--NE"></span>
3241                <span>Niger (XOF Fr)</span>
3242              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NG" >
3243                <span class="country-flags country-flags--NG"></span>
3244                <span>Nigeria (NGN ₦)</span>
3245              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MK" >
3246                <span class="country-flags country-flags--MK"></span>
3247                <span>North Macedonia (MKD ден)</span>
3248              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NO" >
3249                <span class="country-flags country-flags--NO"></span>
3250                <span>Norway (CHF CHF)</span>
3251              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="OM" >
3252                <span class="country-flags country-flags--OM"></span>
3253                <span>Oman (EUR €)</span>
3254              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PK" >
3255                <span class="country-flags country-flags--PK"></span>
3256                <span>Pakistan (PKR ₨)</span>
3257              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PL" >
3258                <span class="country-flags country-flags--PL"></span>
3259                <span>Poland (PLN zł)</span>
3260              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PT" >
3261                <span class="country-flags country-flags--PT"></span>
3262                <span>Portugal (EUR €)</span>
3263              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="QA" >
3264                <span class="country-flags country-flags--QA"></span>
3265                <span>Qatar (QAR ر.ق)</span>
3266              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RO" >
3267                <span class="country-flags country-flags--RO"></span>
3268                <span>Romania (RON Lei)</span>
3269              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RU" >
3270                <span class="country-flags country-flags--RU"></span>
3271                <span>Russia (EUR €)</span>
3272              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RW" >
3273                <span class="country-flags country-flags--RW"></span>
3274                <span>Rwanda (RWF FRw)</span>
3275              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SM" >
3276                <span class="country-flags country-flags--SM"></span>
3277                <span>San Marino (EUR €)</span>
3278              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SA" >
3279                <span class="country-flags country-flags--SA"></span>
3280                <span>Saudi Arabia (SAR ر.س)</span>
3281              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SN" >
3282                <span class="country-flags country-flags--SN"></span>
3283                <span>Senegal (XOF Fr)</span>
3284              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RS" >
3285                <span class="country-flags country-flags--RS"></span>
3286                <span>Serbia (RSD РСД)</span>
3287              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SL" >
3288                <span class="country-flags country-flags--SL"></span>
3289                <span>Sierra Leone (SLL Le)</span>
3290              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SK" >
3291                <span class="country-flags country-flags--SK"></span>
3292                <span>Slovakia (EUR €)</span>
3293              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SI" >
3294                <span class="country-flags country-flags--SI"></span>
3295                <span>Slovenia (EUR €)</span>
3296              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SO" >
3297                <span class="country-flags country-flags--SO"></span>
3298                <span>Somalia (EUR €)</span>
3299              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZA" >
3300                <span class="country-flags country-flags--ZA"></span>
3301                <span>South Africa (EUR €)</span>
3302              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ES" >
3303                <span class="country-flags country-flags--ES"></span>
3304                <span>Spain (EUR €)</span>
3305              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SD" >
3306                <span class="country-flags country-flags--SD"></span>
3307                <span>Sudan (EUR €)</span>
3308              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SE" >
3309                <span class="country-flags country-flags--SE"></span>
3310                <span>Sweden (SEK kr)</span>
3311              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CH" >
3312                <span class="country-flags country-flags--CH"></span>
3313                <span>Switzerland (CHF CHF)</span>
3314              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TJ" >
3315                <span class="country-flags country-flags--TJ"></span>
3316                <span>Tajikistan (TJS ЅМ)</span>
3317              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TZ" >
3318                <span class="country-flags country-flags--TZ"></span>
3319                <span>Tanzania (TZS Sh)</span>
3320              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TG" >
3321                <span class="country-flags country-flags--TG"></span>
3322                <span>Togo (XOF Fr)</span>
3323              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TN" >
3324                <span class="country-flags country-flags--TN"></span>
3325                <span>Tunisia (EUR €)</span>
3326              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TR" >
3327                <span class="country-flags country-flags--TR"></span>
3328                <span>Türkiye (EUR €)</span>
3329              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TM" >
3330                <span class="country-flags country-flags--TM"></span>
3331                <span>Turkmenistan (EUR €)</span>
3332              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UG" >
3333                <span class="country-flags country-flags--UG"></span>
3334                <span>Uganda (UGX USh)</span>
3335              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UA" >
3336                <span class="country-flags country-flags--UA"></span>
3337                <span>Ukraine (UAH ₴)</span>
3338              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AE" >
3339                <span class="country-flags country-flags--AE"></span>
3340                <span>United Arab Emirates (AED د.إ)</span>
3341              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GB" >
3342                <span class="country-flags country-flags--GB"></span>
3343                <span>United Kingdom (GBP £)</span>
3344              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VA" >
3345                <span class="country-flags country-flags--VA"></span>
3346                <span>Vatican City (EUR €)</span>
3347              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EH" >
3348                <span class="country-flags country-flags--EH"></span>
3349                <span>Western Sahara (MAD د.م.)</span>
3350              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YE" >
3351                <span class="country-flags country-flags--YE"></span>
3352                <span>Yemen (YER ï·¼)</span>
3353              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZM" >
3354                <span class="country-flags country-flags--ZM"></span>
3355                <span>Zambia (EUR €)</span>
3356              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZW" >
3357                <span class="country-flags country-flags--ZW"></span>
3358                <span>Zimbabwe (USD $)</span>
3359              </button></x-listbox></form></x-popover>
3360    </div></li><li class="hidden md:block shrink-0"><div class="relative">
3361      <button type="button" class="text-with-icon gap-2.5 group" aria-label="Change language" aria-controls="popover-localization-form-locale-end-sections--30366605934919__header" aria-expanded="false">
3362        <span class="bold text-sm">English</span><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7">
3363        <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path>
3364      </svg></button>
3365
3366      <x-popover id="popover-localization-form-locale-end-sections--30366605934919__header" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="end" class="popover">
3367        <p class="h5" slot="title">Language</p><form method="post" action="/localization" id="localization-form-locale-end-sections--30366605934919__header" 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="/cart" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="en" aria-selected="true">English</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="es" >Español</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="de" >Deutsch</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="nl" >Nederlands</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="fr" >Français</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="it" >Italiano</button></x-listbox></form></x-popover>
3368    </div></li><li>
3369            <a href="/search" class="hidden tap-area sm:block" aria-controls="search-drawer">
3370              <span class="sr-only">Search</span><svg role="presentation" stroke-width="1" focusable="false" width="22" height="22" class="icon icon-search" viewBox="0 0 22 22">
3371        <circle cx="11" cy="10" r="7" fill="none" stroke="currentColor"></circle>
3372        <path d="m16 15 3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
3373      </svg></a>
3374          </li><li>
3375              <a href="https://spinning.eu/customer_authentication/redirect?locale=en&region_country=NL" class="hidden tap-area sm:block">
3376                <span class="sr-only">Login</span><svg role="presentation" stroke-width="1" focusable="false" width="22" height="22" class="icon icon-account" viewBox="0 0 22 22">
3377        <circle cx="11" cy="7" r="4" fill="none" stroke="currentColor"></circle>
3378        <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>
3379      </svg></a>
3380            </li><li>
3381            <a href="/cart" data-no-instant class="relative block tap-area" >
3382              <span class="sr-only">Cart</span><svg role="presentation" stroke-width="1" focusable="false" width="22" height="22" class="icon icon-cart" viewBox="0 0 22 22">
3383            <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>
3384          </svg><div class="header__cart-count">
3385                <cart-count class="count-bubble opacity-0">
3386                  <span class="sr-only">0 items</span>
3387                  <span aria-hidden="true">0</span>
3388                </cart-count>
3389              </div>
3390            </a>
3391          </li>
3392        </ul>
3393      </div>
3394    </div>
3395  </store-header>
3396</height-observer><navigation-drawer mobile-opening="bottom" open-from="left" id="header-sidebar-menu" class="navigation-drawer drawer lg:hidden" >
3397    <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">
3398        <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path>
3399      </svg></button><div class="panel-list__wrapper">
3400  <div class="panel">
3401    <div class="panel__wrapper" >
3402      <div class="panel__scroller v-stack gap-8"><ul class="v-stack gap-4">
3403<li class="h3 sm:h4"><a href="/" class="group block w-full">
3404                  <span><span class="reversed-link">Home</span></span>
3405                </a></li>
3406<li class="h3 sm:h4"><a href="/" class="group block w-full">
3407                  <span><span class="reversed-link">Shop</span></span>
3408                </a></li>
3409<li class="h3 sm:h4"><a href="/" class="group block w-full">
3410                  <span><span class="reversed-link">HOME</span></span>
3411                </a></li>
3412<li class="h3 sm:h4"><a href="/pages/ride-at-home" class="group block w-full">
3413                  <span><span class="reversed-link">RIDE AT HOME</span></span>
3414                </a></li>
3415<li class="h3 sm:h4"><a href="/pages/spinning-apps" class="group block w-full">
3416                  <span><span class="reversed-link">SPINNING APP</span></span>
3417                </a></li>
3418<li class="h3 sm:h4"><a href="/pages/instructors" class="group block w-full">
3419                  <span><span class="reversed-link">INSTRUCTORS</span></span>
3420                </a></li>
3421<li class="h3 sm:h4"><a href="/" class="group block w-full">
3422                  <span><span class="reversed-link">SHOP</span></span>
3423                </a></li></ul></div><div class="panel-footer v-stack gap-5"><ul class="social-media " role="list"><li>
3424      <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" viewBox="0 0 24 24">
3425        <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"/>
3426      </svg></a>
3427    </li><li>
3428      <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">
3429        <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.
3429047 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"/>
3430      </svg></a>
3431    </li><li>
3432      <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">
3433        <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"/>
3434      </svg></a>
3435    </li></ul><div class="panel-footer__localization-wrapper h-stack gap-6 border-t md:hidden"><link rel="stylesheet" href="//spinning.eu/cdn/shop/t/9/assets/country-flags.css?v=105120918595178899651788351188" media="print" onload="this.media='all'; this.onload = null"><div class="relative">
3436      <button type="button" class="text-with-icon gap-2.5 group" aria-label="Change country or currency" aria-controls="popover-localization-form-country--sections--30366605934919__header" aria-expanded="false">
3437        <div class="h-stack gap-2"><span class="country-flags country-flags--NL"></span><span class="bold text-sm">EUR €</span>
3438        </div><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7">
3439        <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path>
3440      </svg></button>
3441
3442      <x-popover id="popover-localization-form-country--sections--30366605934919__header" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="start" class="popover">
3443        <p class="h5" slot="title">Country</p><form method="post" action="/localization" id="localization-form-country--sections--30366605934919__header" 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="/cart" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AF" >
3444                <span class="country-flags country-flags--AF"></span>
3445                <span>Afghanistan (AFN ؋)</span>
3446              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AL" >
3447                <span class="country-flags country-flags--AL"></span>
3448                <span>Albania (ALL L)</span>
3449              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DZ" >
3450                <span class="country-flags country-flags--DZ"></span>
3451                <span>Algeria (DZD د.ج)</span>
3452              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AD" >
3453                <span class="country-flags country-flags--AD"></span>
3454                <span>Andorra (EUR €)</span>
3455              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AO" >
3456                <span class="country-flags country-flags--AO"></span>
3457                <span>Angola (EUR €)</span>
3458              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AM" >
3459                <span class="country-flags country-flags--AM"></span>
3460                <span>Armenia (AMD դր.)</span>
3461              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AT" >
3462                <span class="country-flags country-flags--AT"></span>
3463                <span>Austria (EUR €)</span>
3464              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AZ" >
3465                <span class="country-flags country-flags--AZ"></span>
3466                <span>Azerbaijan (AZN ₼)</span>
3467              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BH" >
3468                <span class="country-flags country-flags--BH"></span>
3469                <span>Bahrain (EUR €)</span>
3470              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BY" >
3471                <span class="country-flags country-flags--BY"></span>
3472                <span>Belarus (EUR €)</span>
3473              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BE" >
3474                <span class="country-flags country-flags--BE"></span>
3475                <span>Belgium (EUR €)</span>
3476              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BJ" >
3477                <span class="country-flags country-flags--BJ"></span>
3478                <span>Benin (XOF Fr)</span>
3479              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BA" >
3480                <span class="country-flags country-flags--BA"></span>
3481                <span>Bosnia &amp; Herzegovina (BAM КМ)</span>
3482              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BW" >
3483                <span class="country-flags country-flags--BW"></span>
3484                <span>Botswana (BWP P)</span>
3485              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BG" >
3486                <span class="country-flags country-flags--BG"></span>
3487                <span>Bulgaria (EUR €)</span>
3488              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BF" >
3489                <span class="country-flags country-flags--BF"></span>
3490                <span>Burkina Faso (XOF Fr)</span>
3491              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BI" >
3492                <span class="country-flags country-flags--BI"></span>
3493                <span>Burundi (BIF Fr)</span>
3494              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CM" >
3495                <span class="country-flags country-flags--CM"></span>
3496                <span>Cameroon (XAF CFA)</span>
3497              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CV" >
3498                <span class="country-flags country-flags--CV"></span>
3499                <span>Cape Verde (CVE $)</span>
3500              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CF" >
3501                <span class="country-flags country-flags--CF"></span>
3502                <span>Central African Republic (XAF CFA)</span>
3503              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TD" >
3504                <span class="country-flags country-flags--TD"></span>
3505                <span>Chad (XAF CFA)</span>
3506              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HR" >
3507                <span class="country-flags country-flags--HR"></span>
3508                <span>Croatia (EUR €)</span>
3509              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CY" >
3510                <span class="country-flags country-flags--CY"></span>
3511                <span>Cyprus (EUR €)</span>
3512              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CZ" >
3513                <span class="country-flags country-flags--CZ"></span>
3514                <span>Czechia (CZK Kč)</span>
3515              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DK" >
3516                <span class="country-flags country-flags--DK"></span>
3517                <span>Denmark (DKK kr.)</span>
3518              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DJ" >
3519                <span class="country-flags country-flags--DJ"></span>
3520                <span>Djibouti (DJF Fdj)</span>
3521              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EG" >
3522                <span class="country-flags country-flags--EG"></span>
3523                <span>Egypt (EGP ج.م)</span>
3524              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ER" >
3525                <span class="country-flags country-flags--ER"></span>
3526                <span>Eritrea (EUR €)</span>
3527              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EE" >
3528                <span class="country-flags country-flags--EE"></span>
3529                <span>Estonia (EUR €)</span>
3530              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ET" >
3531                <span class="country-flags country-flags--ET"></span>
3532                <span>Ethiopia (ETB Br)</span>
3533              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FI" >
3534                <span class="country-flags country-flags--FI"></span>
3535                <span>Finland (EUR €)</span>
3536              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FR" >
3537                <span class="country-flags country-flags--FR"></span>
3538                <span>France (EUR €)</span>
3539              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GA" >
3540                <span class="country-flags country-flags--GA"></span>
3541                <span>Gabon (XOF Fr)</span>
3542              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GM" >
3543                <span class="country-flags country-flags--GM"></span>
3544                <span>Gambia (GMD D)</span>
3545              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GE" >
3546                <span class="country-flags country-flags--GE"></span>
3547                <span>Georgia (EUR €)</span>
3548              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DE" >
3549                <span class="country-flags country-flags--DE"></span>
3550                <span>Germany (EUR €)</span>
3551              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GH" >
3552                <span class="country-flags country-flags--GH"></span>
3553                <span>Ghana (EUR €)</span>
3554              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GI" >
3555                <span class="country-flags country-flags--GI"></span>
3556                <span>Gibraltar (GBP £)</span>
3557              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GR" >
3558                <span class="country-flags country-flags--GR"></span>
3559                <span>Greece (EUR €)</span>
3560              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GN" >
3561                <span class="country-flags country-flags--GN"></span>
3562                <span>Guinea (GNF Fr)</span>
3563              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GW" >
3564                <span class="country-flags country-flags--GW"></span>
3565                <span>Guinea-Bissau (XOF Fr)</span>
3566              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HU" >
3567                <span class="country-flags country-flags--HU"></span>
3568                <span>Hungary (HUF Ft)</span>
3569              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IS" >
3570                <span class="country-flags country-flags--IS"></span>
3571                <span>Iceland (ISK kr)</span>
3572              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IQ" >
3573                <span class="country-flags country-flags--IQ"></span>
3574                <span>Iraq (EUR €)</span>
3575              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IE" >
3576                <span class="country-flags country-flags--IE"></span>
3577                <span>Ireland (EUR €)</span>
3578              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IL" >
3579                <span class="country-flags country-flags--IL"></span>
3580                <span>Israel (ILS ₪)</span>
3581              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IT" >
3582                <span class="country-flags country-flags--IT"></span>
3583                <span>Italy (EUR €)</span>
3584              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JO" >
3585                <span class="country-flags country-flags--JO"></span>
3586                <span>Jordan (EUR €)</span>
3587              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KZ" >
3588                <span class="country-flags country-flags--KZ"></span>
3589                <span>Kazakhstan (KZT ₸)</span>
3590              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KE" >
3591                <span class="country-flags country-flags--KE"></span>
3592                <span>Kenya (KES KSh)</span>
3593              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KW" >
3594                <span class="country-flags country-flags--KW"></span>
3595                <span>Kuwait (EUR €)</span>
3596              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LV" >
3597                <span class="country-flags country-flags--LV"></span>
3598                <span>Latvia (EUR €)</span>
3599              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LB" >
3600                <span class="country-flags country-flags--LB"></span>
3601                <span>Lebanon (LBP ل.ل)</span>
3602              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LS" >
3603                <span class="country-flags country-flags--LS"></span>
3604                <span>Lesotho (EUR €)</span>
3605              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LR" >
3606                <span class="country-flags country-flags--LR"></span>
3607                <span>Liberia (EUR €)</span>
3608              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LI" >
3609                <span class="country-flags country-flags--LI"></span>
3610                <span>Liechtenstein (EUR €)</span>
3611              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LT" >
3612                <span class="country-flags country-flags--LT"></span>
3613                <span>Lithuania (EUR €)</span>
3614              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LU" >
3615                <span class="country-flags country-flags--LU"></span>
3616                <span>Luxembourg (EUR €)</span>
3617              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MG" >
3618                <span class="country-flags country-flags--MG"></span>
3619                <span>Madagascar (EUR €)</span>
3620              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MW" >
3621                <span class="country-flags country-flags--MW"></span>
3622                <span>Malawi (MWK MK)</span>
3623              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ML" >
3624                <span class="country-flags country-flags--ML"></span>
3625                <span>Mali (XOF Fr)</span>
3626              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MT" >
3627                <span class="country-flags country-flags--MT"></span>
3628                <span>Malta (EUR €)</span>
3629              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MR" >
3630                <span class="country-flags country-flags--MR"></span>
3631                <span>Mauritania (EUR €)</span>
3632              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MU" >
3633                <span class="country-flags country-flags--MU"></span>
3634                <span>Mauritius (MUR ₨)</span>
3635              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MC" >
3636                <span class="country-flags country-flags--MC"></span>
3637                <span>Monaco (EUR €)</span>
3638              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ME" >
3639                <span class="country-flags country-flags--ME"></span>
3640                <span>Montenegro (EUR €)</span>
3641              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MA" >
3642                <span class="country-flags country-flags--MA"></span>
3643                <span>Morocco (MAD د.م.)</span>
3644              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MZ" >
3645                <span class="country-flags country-flags--MZ"></span>
3646                <span>Mozambique (EUR €)</span>
3647              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NA" >
3648                <span class="country-flags country-flags--NA"></span>
3649                <span>Namibia (EUR €)</span>
3650              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NL" aria-selected="true">
3651                <span class="country-flags country-flags--NL"></span>
3652                <span>Netherlands (EUR €)</span>
3653              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NE" >
3654                <span class="country-flags country-flags--NE"></span>
3655                <span>Niger (XOF Fr)</span>
3656              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NG" >
3657                <span class="country-flags country-flags--NG"></span>
3658                <span>Nigeria (NGN ₦)</span>
3659              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MK" >
3660                <span class="country-flags country-flags--MK"></span>
3661                <span>North Macedonia (MKD ден)</span>
3662              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NO" >
3663                <span class="country-flags country-flags--NO"></span>
3664                <span>Norway (CHF CHF)</span>
3665              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="OM" >
3666                <span class="country-flags country-flags--OM"></span>
3667                <span>Oman (EUR €)</span>
3668              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PK" >
3669                <span class="country-flags country-flags--PK"></span>
3670                <span>Pakistan (PKR ₨)</span>
3671              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PL" >
3672                <span class="country-flags country-flags--PL"></span>
3673                <span>Poland (PLN zł)</span>
3674              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PT" >
3675                <span class="country-flags country-flags--PT"></span>
3676                <span>Portugal (EUR €)</span>
3677              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="QA" >
3678                <span class="country-flags country-flags--QA"></span>
3679                <span>Qatar (QAR ر.ق)</span>
3680              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RO" >
3681                <span class="country-flags country-flags--RO"></span>
3682                <span>Romania (RON Lei)</span>
3683              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RU" >
3684                <span class="country-flags country-flags--RU"></span>
3685                <span>Russia (EUR €)</span>
3686              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RW" >
3687                <span class="country-flags country-flags--RW"></span>
3688                <span>Rwanda (RWF FRw)</span>
3689              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SM" >
3690                <span class="country-flags country-flags--SM"></span>
3691                <span>San Marino (EUR €)</span>
3692              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SA" >
3693                <span class="country-flags country-flags--SA"></span>
3694                <span>Saudi Arabia (SAR ر.س)</span>
3695              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SN" >
3696                <span class="country-flags country-flags--SN"></span>
3697                <span>Senegal (XOF Fr)</span>
3698              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RS" >
3699                <span class="country-flags country-flags--RS"></span>
3700                <span>Serbia (RSD РСД)</span>
3701              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SL" >
3702                <span class="country-flags country-flags--SL"></span>
3703                <span>Sierra Leone (SLL Le)</span>
3704              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SK" >
3705                <span class="country-flags country-flags--SK"></span>
3706                <span>Slovakia (EUR €)</span>
3707              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SI" >
3708                <span class="country-flags country-flags--SI"></span>
3709                <span>Slovenia (EUR €)</span>
3710              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SO" >
3711                <span class="country-flags country-flags--SO"></span>
3712                <span>Somalia (EUR €)</span>
3713              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZA" >
3714                <span class="country-flags country-flags--ZA"></span>
3715                <span>South Africa (EUR €)</span>
3716              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ES" >
3717                <span class="country-flags country-flags--ES"></span>
3718                <span>Spain (EUR €)</span>
3719              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SD" >
3720                <span class="country-flags country-flags--SD"></span>
3721                <span>Sudan (EUR €)</span>
3722              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SE" >
3723                <span class="country-flags country-flags--SE"></span>
3724                <span>Sweden (SEK kr)</span>
3725              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CH" >
3726                <span class="country-flags country-flags--CH"></span>
3727                <span>Switzerland (CHF CHF)</span>
3728              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TJ" >
3729                <span class="country-flags country-flags--TJ"></span>
3730                <span>Tajikistan (TJS ЅМ)</span>
3731              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TZ" >
3732                <span class="country-flags country-flags--TZ"></span>
3733                <span>Tanzania (TZS Sh)</span>
3734              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TG" >
3735                <span class="country-flags country-flags--TG"></span>
3736                <span>Togo (XOF Fr)</span>
3737              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TN" >
3738                <span class="country-flags country-flags--TN"></span>
3739                <span>Tunisia (EUR €)</span>
3740              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TR" >
3741                <span class="country-flags country-flags--TR"></span>
3742                <span>Türkiye (EUR €)</span>
3743              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TM" >
3744                <span class="country-flags country-flags--TM"></span>
3745                <span>Turkmenistan (EUR €)</span>
3746              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UG" >
3747                <span class="country-flags country-flags--UG"></span>
3748                <span>Uganda (UGX USh)</span>
3749              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UA" >
3750                <span class="country-flags country-flags--UA"></span>
3751                <span>Ukraine (UAH ₴)</span>
3752              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AE" >
3753                <span class="country-flags country-flags--AE"></span>
3754                <span>United Arab Emirates (AED د.إ)</span>
3755              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GB" >
3756                <span class="country-flags country-flags--GB"></span>
3757                <span>United Kingdom (GBP £)</span>
3758              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VA" >
3759                <span class="country-flags country-flags--VA"></span>
3760                <span>Vatican City (EUR €)</span>
3761              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EH" >
3762                <span class="country-flags country-flags--EH"></span>
3763                <span>Western Sahara (MAD د.م.)</span>
3764              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YE" >
3765                <span class="country-flags country-flags--YE"></span>
3766                <span>Yemen (YER ï·¼)</span>
3767              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZM" >
3768                <span class="country-flags country-flags--ZM"></span>
3769                <span>Zambia (EUR €)</span>
3770              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZW" >
3771                <span class="country-flags country-flags--ZW"></span>
3772                <span>Zimbabwe (USD $)</span>
3773              </button></x-listbox></form></x-popover>
3774    </div><div class="relative">
3775      <button type="button" class="text-with-icon gap-2.5 group" aria-label="Change language" aria-controls="popover-localization-form-locale--sections--30366605934919__header" aria-expanded="false">
3776        <span class="bold text-sm">English</span><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7">
3777        <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path>
3778      </svg></button>
3779
3780      <x-popover id="popover-localization-form-locale--sections--30366605934919__header" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="start" class="popover">
3781        <p class="h5" slot="title">Language</p><form method="post" action="/localization" id="localization-form-locale--sections--30366605934919__header" 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="/cart" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="en" aria-selected="true">English</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="es" >Español</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="de" >Deutsch</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="nl" >Nederlands</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="fr" >Français</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="it" >Italiano</button></x-listbox></form></x-popover>
3782    </div><a href="/account" class="panel-footer__account-link bold text-sm">Account</a></div></div></div>
3783  </div></div></navigation-drawer>
3783<script>
3784  document.documentElement.style.setProperty('--header-height', Math.round(document.getElementById('shopify-section-sections--30366605934919__header').clientHeight) + 'px');
3785</script>
3785
3786
3787<style> #shopify-section-sections--30366605934919__header a {font-weight: 700 !important;} #shopify-section-sections--30366605934919__header .header {background-color: white;} </style></header>
3788<!-- END sections: header-group --><!-- BEGIN sections: overlay-group -->
3789<div id="shopify-section-sections--30366606983495__newsletter-popup" class="shopify-section shopify-section-group-overlay-group shopify-section--popup"></div><div id="shopify-section-sections--30366606983495__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">
3790        <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path>
3791      </svg></button>
3792
3793    <div class="empty-state align-self-center">
3794      <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">
3795            <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>
3796          </svg><span class="count-bubble count-bubble--lg">0</span>
3797      </div>
3798
3799      <div class="prose">
3800        <p class="h5">Your cart is empty</p>
3801<a class="button button--xl button--outline"
3802  
3803  
3804  
3805  
3806  
3807  href="/collections/all"
3808  
3809  
3810 >Continue shopping</a></div>
3811    </div></cart-drawer>
3812
3813
3814</div><div id="shopify-section-sections--30366606983495__search-drawer" class="shopify-section shopify-section-group-overlay-group"><search-drawer  class="search-drawer  drawer drawer--lg" id="search-drawer">
3815  <form action="/search" method="get" class="v-stack gap-5 sm:gap-8" role="search">
3816    <div class="search-input">
3817      <input type="search" name="q" placeholder="Search for..." autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-label="Search">
3818      <button type="reset" class="text-subdued">Clear</button>
3819      <button type="button" is="close-button">
3820        <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">
3821        <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path>
3822      </svg></button>
3823    </div>
3824
3825    <style>
3826      #shopify-section-sections--30366606983495__search-drawer {
3827        --predictive-search-column-count: 3;
3828      }
3829    </style>
3830
3831    <input type="hidden" name="type" value="product">
3832
3833    <predictive-search class="predictive-search" section-id="sections--30366606983495__search-drawer"><div slot="results"></div>
3834
3835      <div slot="loading">
3836        <div class="v-stack gap-5 sm:gap-6 ">
3837          <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>
3838
3839          <div class="v-stack gap-4 sm:gap-6"><div class="h-stack align-center gap-5 sm:gap-6">
3840                <span class="skeleton skeleton--thumbnail"></span>
3841
3842                <div class="v-stack gap-3 w-full">
3843                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span>
3844                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span>
3845                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span>
3846                </div>
3847              </div><div class="h-stack align-center gap-5 sm:gap-6">
3848                <span class="skeleton skeleton--thumbnail"></span>
3849
3850                <div class="v-stack gap-3 w-full">
3851                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span>
3852                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span>
3853                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span>
3854                </div>
3855              </div><div class="h-stack align-center gap-5 sm:gap-6">
3856                <span class="skeleton skeleton--thumbnail"></span>
3857
3858                <div class="v-stack gap-3 w-full">
3859                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span>
3860                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span>
3861                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span>
3862                </div>
3863              </div><div class="h-stack align-center gap-5 sm:gap-6">
3864                <span class="skeleton skeleton--thumbnail"></span>
3865
3866                <div class="v-stack gap-3 w-full">
3867                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span>
3868                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span>
3869                  <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span>
3870                </div>
3871              </div></div>
3872        </div></div>
3873    </predictive-search>
3874  </form>
3875</search-drawer>
3876
3877</div>
3878<!-- 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">
3879      <section id="shopify-section-template--30366617403719__main" class="shopify-section shopify-section--main-cart"><div class="container"><div class="empty-state">
3880      <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">
3881            <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>
3882          </svg><span class="count-bubble count-bubble--lg">0</span>
3883      </div>
3884
3885      <div class="prose">
3886        <p class="h4">Your cart is empty</p>
3887<a class="button button--xl button--outline"
3888  
3889  
3890  
3891  
3892  
3893  href="/collections/all"
3894  
3895  
3896 >Continue shopping</a></div>
3897    </div></div>
3898
3899</section>
3900<!-- BEGIN sections: footer-group -->
3901<footer id="shopify-section-sections--30366605869383__footer" class="shopify-section shopify-section-group-footer-group shopify-section--footer"><style>
3902  @media screen and (min-width: 1000px) {
3903    #shopify-section-sections--30366605869383__footer {--footer-block-list-gap: var(--spacing-10);--footer-block-list-justify-content: space-between;
3904    }
3905  }
3906</style><div class="footer">
3907  <div class="container">
3908    <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--30366605869383__footer--contactemail" class="input is-floating" type="email" dir="ltr" name="contact[email]" placeholder=" " 
3909  
3910  
3911  
3912  
3913  autocomplete="email"
3914  
3915  enterkeyhint="send"
3916  required
3917  
3918><label for="input-sections--30366605869383__footer--contactemail" class="floating-label">E-mail</label><div class="self-submit-button">
3919        <button type="submit" class="circle-chevron hover:colors">
3920          <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">
3921        <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path>
3922      </svg></button>
3923      </div></div></form></div>
3924                </div><div class="footer__block footer__block--menu" ><p class="bold">EDUCATION</p><ul class="v-stack gap-3" role="list"><li>
3925                          <a href="/pages/find-a-class" class="inline-block link-faded break-all">Find a Class</a>
3926                        </li><li>
3927                          <a href="/pages/training" class="inline-block link-faded break-all">Find Local Workshops</a>
3928                        </li><li>
3929                          <a href="/pages/become-an-instructor" class="inline-block link-faded break-all">
3929Become an Instructor</a>
3930                        </li><li>
3931                          <a href="/pages/instructors-education-certification-renewal" class="inline-block link-faded break-all">Certification Renewal</a>
3932                        </li><li>
3933                          <a href="/pages/instructors-certification-faq" class="inline-block link-faded break-all">Certification FAQ</a>
3934                        </li><li>
3935                          <a href="/pages/instructors-international-education-distributors" class="inline-block link-faded break-all">Education Distributors</a>
3936                        </li><li>
3937                          <a href="/pages/spin-membership" class="inline-block link-faded break-all">SPIN® Membership</a>
3938                        </li><li>
3939                          <a href="https://spinu.spinning.eu/" class="inline-block link-faded break-all">SpinU</a>
3940                        </li></ul>
3941                  </div><div class="footer__block footer__block--menu" ><p class="bold">SUPPORT</p><ul class="v-stack gap-3" role="list"><li>
3942                          <a href="/pages/contact-us" class="inline-block link-faded break-all">Contact Us</a>
3943                        </li><li>
3944                          <a href="/pages/order-faqs" class="inline-block link-faded break-all">FAQs</a>
3945                        </li><li>
3946                          <a href="/pages/studio-bike-comparison-chart" class="inline-block link-faded break-all">Studio Bike Comparison</a>
3947                        </li><li>
3948                          <a href="/pages/home-bike-comparison-chart" class="inline-block link-faded break-all">Home Bike Comparison</a>
3949                        </li><li>
3950                          <a href="/pages/warranty" class="inline-block link-faded break-all">Warranty and Manuals</a>
3951                        </li><li>
3952                          <a href="/pages/shipping-handling" class="inline-block link-faded break-all">Shipping and Handling</a>
3953                        </li><li>
3954                          <a href="/pages//prepare-for-your-commercial-bikes" class="inline-block link-faded break-all">Prepare for Your Commercial Bikes</a>
3955                        </li><li>
3956                          <a href="/pages/get-ready-for-your-new-bike" class="inline-block link-faded break-all">Prepare for Your Home Bike</a>
3957                        </li><li>
3958                          <a href="/search" class="inline-block link-faded break-all">Search</a>
3959                        </li><li data-mda-eu-withdrawal-link>
3960                          <a href="https://shopify.com/90871169351/account" class="inline-block link-faded break-all">
3961                            Request return/cancellation / Withdrawal
3962                          </a>
3963                        </li></ul>
3964                  </div><div class="footer__block footer__block--menu" ><p class="bold">BRANDS</p><ul class="v-stack gap-3" role="list"><li>
3965                          <a href="/" class="inline-block link-faded break-all">Spinning®</a>
3966                        </li><li>
3967                          <a href="https://peakpilates.eu/" class="inline-block link-faded break-all">Peak Pilates®</a>
3968                        </li><li>
3969                          <a href="/collections/crosscore" class="inline-block link-faded break-all">CrossCore®</a>
3970                        </li></ul>
3971                  </div><div class="footer__block footer__block--menu" ><p class="bold">ABOUT US</p><ul class="v-stack gap-3" role="list"><li>
3972                          <a href="/pages/spinning-history" class="inline-block link-faded break-all">Spinning® History</a>
3973                        </li><li>
3974                          <a href="/pages/legal-trademark" class="inline-block link-faded break-all">Legal & Trademark</a>
3975                        </li><li>
3976                          <a href="/pages/patents" class="inline-block link-faded break-all">Patents</a>
3977                        </li><li>
3978                          <a href="/pages/privacy-policy" class="inline-block link-faded break-all">Privacy Policy</a>
3979                        </li><li>
3980                          <a href="/pages/terms-and-conditions" class="inline-block link-faded break-all">Terms & Conditions</a>
3981                        </li><li>
3982                          <a href="/pages/press" class="inline-block link-faded break-all">Press</a>
3983                        </li><li>
3984                          <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>
3985                        </li><li>
3986                          <a href="https://www.youtube.com/watch?v=sZFrbD9Y36M" class="inline-block link-faded break-all">Brand Video</a>
3987                        </li><li>
3988                          <a href="/pages/newsletter" class="inline-block link-faded break-all">Newsletter</a>
3989                        </li></ul>
3990                  </div></div><div class="footer__aside empty:hidden"><div class="footer__aside-top"><ul class="social-media " role="list"><li>
3991      <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
3991ox="0 0 24 24">
3992        <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"/>
3993      </svg></a>
3994    </li><li>
3995      <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">
3996        <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"/>
3997      </svg></a>
3998    </li><li>
3999      <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">
4000        <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"/>
4001      </svg></a>
4002    </li></ul><div class="h-stack gap-6"><link rel="stylesheet" href="//spinning.eu/cdn/shop/t/9/assets/country-flags.css?v=105120918595178899651788351188" media="print" onload="this.media='all'; this.onload = null"><div class="relative">
4003      <button type="button" class="text-with-icon gap-2.5 group" aria-label="Change country or currency" aria-controls="popover-localization-form-country--sections--30366605869383__footer" aria-expanded="false">
4004        <div class="h-stack gap-2"><span class="country-flags country-flags--NL"></span><span class="bold text-sm">Netherlands (EUR €)</span>
4005        </div><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7">
4006        <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path>
4007      </svg></button>
4008
4009      <x-popover id="popover-localization-form-country--sections--30366605869383__footer" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="start" class="popover">
4010        <p class="h5" slot="title">Country</p><form method="post" action="/localization" id="localization-form-country--sections--30366605869383__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="/cart" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AF" >
4011                <span class="country-flags country-flags--AF"></span>
4012                <span>Afghanistan (AFN ؋)</span>
4013              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AL" >
4014                <span class="country-flags country-flags--AL"></span>
4015                <span>Albania (ALL L)</span>
4016              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DZ" >
4017                <span class="country-flags country-flags--DZ"></span>
4018                <span>Algeria (DZD د.ج)</span>
4019              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AD" >
4020                <span class="country-flags country-flags--AD"></span>
4021                <span>Andorra (EUR €)</span>
4022              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AO" >
4023                <span class="country-flags country-flags--AO"></span>
4024                <span>Angola (EUR €)</span>
4025              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AM" >
4026                <span class="country-flags country-flags--AM"></span>
4027                <span>Armenia (AMD դր.)</span>
4028              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AT" >
4029                <span class="country-flags country-flags--AT"></span>
4030                <span>Austria (EUR €)</span>
4031              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AZ" >
4032                <span class="country-flags country-flags--AZ"></span>
4033                <span>Azerbaijan (AZN ₼)</span>
4034              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BH" >
4035                <span class="country-flags country-flags--BH"></span>
4036                <span>Bahrain (EUR €)</span>
4037              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BY" >
4038                <span class="country-flags country-flags--BY"></span>
4039                <span>Belarus (EUR €)</span>
4040              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BE" >
4041                <span class="country-flags country-flags--BE"></span>
4042                <span>Belgium (EUR €)</span>
4043              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BJ" >
4044                <span class="country-flags country-flags--BJ"></span>
4045                <span>Benin (XOF Fr)</span>
4046              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BA" >
4047                <span class="country-flags country-flags--BA"></span>
4048                <span>Bosnia &amp; Herzegovina (BAM КМ)</span>
4049              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BW" >
4050                <span class="country-flags country-flags--BW"></span>
4051                <span>Botswana (BWP P)</span>
4052              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BG" >
4053                <span class="country-flags country-flags--BG"></span>
4054                <span>Bulgaria (EUR €)</span>
4055              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BF" >
4056                <span class="country-flags country-flags--BF"></span>
4057                <span>Burkina Faso (XOF Fr)</span>
4058              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BI" >
4059                <span class="country-flags country-flags--BI"></span>
4060                <span>Burundi (BIF Fr)</span>
4061              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CM" >
4062                <span class="country-flags country-flags--CM"></span>
4063                <span>Cameroon (XAF CFA)</span>
4064              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CV" >
4065                <span class="country-flags country-flags--CV"></span>
4066                <span>Cape Verde (CVE $)</span>
4067              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CF" >
4068                <span class="country-flags country-flags--CF"></span>
4069                <span>Central African Republic (XAF CFA)</span>
4070              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TD" >
4071                <span class="country-flags country-flags--TD"></span>
4072                <span>Chad (XAF CFA)</span>
4073              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HR" >
4074                <span class="country-flags country-flags--HR"></span>
4075                <span>Croatia (EUR €)</span>
4076              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CY" >
4077                <span class="country-flags country-flags--CY"></span>
4078                <span>Cyprus (EUR €)</span>
4079              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CZ" >
4080                <span class="country-flags country-flags--CZ"></span>
4081                <span>Czechia (CZK Kč)</span>
4082              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DK" >
4083                <span class="country-flags country-flags--DK"></span>
4084                <span>Denmark (DKK kr.)</span>
4085              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DJ" >
4086                <span class="country-flags country-flags--DJ"></span>
4087                <span>Djibouti (DJF Fdj)</span>
4088              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EG" >
4089                <span class="country-flags country-flags--EG"></span>
4090                <span>Egypt (EGP ج.م)</span>
4091              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ER" >
4092                <span class="country-flags country-flags--ER"></span>
4093                <span>Eritrea (EUR €)</span>
4094              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EE" >
4095                <span class="country-flags country-flags--EE"></span>
4096                <span>Estonia (EUR €)</span>
4097              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ET" >
4098                <span class="country-flags country-flags--ET"></span>
4099                <span>Ethiopia (ETB Br)</span>
4100              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FI" >
4101                <span class="country-flags country-flags--FI"></span>
4102                <span>Finland (EUR €)</span>
4103              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FR" >
4104                <span class="country-flags country-flags--FR"></span>
4105                <span>France (EUR €)</span>
4106              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GA" >
4107                <span class="country-flags country-flags--GA"></span>
4108                <span>Gabon (XOF Fr)</span>
4109              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GM" >
4110                <span class="country-flags country-flags--GM"></span>
4111                <span>Gambia (GMD D)</span>
4112              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GE" >
4113                <span class="country-flags country-flags--GE"></span>
4114                <span>Georgia (EUR €)</span>
4115              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DE" >
4116                <span class="country-flags country-flags--DE"></span>
4117                <span>Germany (EUR €)</span>
4118              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GH" >
4119                <span class="country-flags country-flags--GH"></span>
4120                <span>Ghana (EUR €)</span>
4121              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GI" >
4122                <span class="country-flags country-flags--GI"></span>
4123                <span>Gibraltar (GBP £)</span>
4124              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GR" >
4125                <span class="country-flags country-flags--GR"></span>
4126                <span>Greece (EUR €)</span>
4127              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GN" >
4128                <span class="country-flags country-flags--GN"></span>
4129                <span>Guinea (GNF Fr)</span>
4130              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GW" >
4131                <span class="country-flags country-flags--GW"></span>
4132                <span>Guinea-Bissau (XOF Fr)</span>
4133              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HU" >
4134                <span class="country-flags country-flags--HU"></span>
4135                <span>Hungary (HUF Ft)</span>
4136              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IS" >
4137                <span class="country-flags country-flags--IS"></span>
4138                <span>Iceland (ISK kr)</span>
4139              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IQ" >
4140                <span class="country-flags country-flags--IQ"></span>
4141                <span>Iraq (EUR €)</span>
4142              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IE" >
4143                <span class="country-flags country-flags--IE"></span>
4144                <span>Ireland (EUR €)</span>
4145              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IL" >
4146                <span class="country-flags country-flags--IL"></span>
4147                <span>Israel (ILS ₪)</span>
4148              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IT" >
4149                <span class="country-flags country-flags--IT"></span>
4150                <span>Italy (EUR €)</span>
4151              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JO" >
4152                <span class="country-flags country-flags--JO"></span>
4153                <span>Jordan (EUR €)</span>
4154              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KZ" >
4155                <span class="country-flags country-flags--KZ"></span>
4156                <span>Kazakhstan (KZT ₸)</span>
4157              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KE" >
4158                <span class="country-flags country-flags--KE"></span>
4159                <span>Kenya (KES KSh)</span>
4160              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KW" >
4161                <span class="country-flags country-flags--KW"></span>
4162                <span>Kuwait (EUR €)</span>
4163              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LV" >
4164                <span class="country-flags country-flags--LV"></span>
4165                <span>Latvia (EUR €)</span>
4166              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LB" >
4167                <span class="country-flags country-flags--LB"></span>
4168                <span>Lebanon (LBP ل.ل)</span>
4169              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LS" >
4170                <span class="country-flags country-flags--LS"></span>
4171                <span>Lesotho (EUR €)</span>
4172              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LR" >
4173                <span class="country-flags country-flags--LR"></span>
4174                <span>Liberia (EUR €)</span>
4175              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LI" >
4176                <span class="country-flags country-flags--LI"></span>
4177                <span>Liechtenstein (EUR €)</span>
4178              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LT" >
4179                <span class="country-flags country-flags--LT"></span>
4180                <span>Lithuania (EUR €)</span>
4181              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LU" >
4182                <span class="country-flags country-flags--LU"></span>
4183                <span>Luxembourg (EUR €)</span>
4184              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MG" >
4185                <span class="country-flags country-flags--MG"></span>
4186                <span>Madagascar (EUR €)</span>
4187              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MW" >
4188                <span class="country-flags country-flags--MW"></span>
4189                <span>Malawi (MWK MK)</span>
4190              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ML" >
4191                <span class="country-flags country-flags--ML"></span>
4192                <span>Mali (XOF Fr)</span>
4193              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MT" >
4194                <span class="country-flags country-flags--MT"></span>
4195                <span>Malta (EUR €)</span>
4196              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MR" >
4197                <span class="country-flags country-flags--MR"></span>
4198                <span>Mauritania (EUR €)</span>
4199              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MU" >
4200                <span class="country-flags country-flags--MU"></span>
4201                <span>Mauritius (MUR ₨)</span>
4202              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MC" >
4203                <span class="country-flags country-flags--MC"></span>
4204                <span>Monaco (EUR €)</span>
4205              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ME" >
4206                <span class="country-flags country-flags--ME"></span>
4207                <span>Montenegro (EUR €)</span>
4208              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MA" >
4209                <span class="country-flags country-flags--MA"></span>
4210                <span>Morocco (MAD د.م.)</span>
4211              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MZ" >
4212                <span class="country-flags country-flags--MZ"></span>
4213                <span>Mozambique (EUR €)</span>
4214              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NA" >
4215                <span class="country-flags country-flags--NA"></span>
4216                <span>Namibia (EUR €)</span>
4217              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NL" aria-selected="true">
4218                <span class="country-flags country-flags--NL"></span>
4219                <span>Netherlands (EUR €)</span>
4220              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NE" >
4221                <span class="country-flags country-flags--NE"></span>
4222                <span>Niger (XOF Fr)</span>
4223              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NG" >
4224                <span class="country-flags country-flags--NG"></span>
4225                <span>Nigeria (NGN ₦)</span>
4226              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MK" >
4227                <span class="country-flags country-flags--MK"></span>
4228                <span>North Macedonia (MKD ден)</span>
4229              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NO" >
4230                <span class="country-flags country-flags--NO"></span>
4231                <span>Norway (CHF CHF)</span>
4232              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="OM" >
4233                <span class="country-flags country-flags--OM"></span>
4234                <span>Oman (EUR €)</span>
4235              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PK" >
4236                <span class="country-flags country-flags--PK"></span>
4237                <span>Pakistan (PKR ₨)</span>
4238              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PL" >
4239                <span class="country-flags country-flags--PL"></span>
4240                <span>Poland (PLN zł)</span>
4241              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PT" >
4242                <span class="country-flags country-flags--PT"></span>
4243                <span>Portugal (EUR €)</span>
4244              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="QA" >
4245                <span class="country-flags country-flags--QA"></span>
4246                <span>Qatar (QAR ر.ق)</span>
4247              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RO" >
4248                <span class="country-flags country-flags--RO"></span>
4249                <span>Romania (RON Lei)</span>
4250              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RU" >
4251                <span class="country-flags country-flags--RU"></span>
4252                <span>Russia (EUR €)</span>
4253              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RW" >
4254                <span class="country-flags country-flags--RW"></span>
4255                <span>Rwanda (RWF FRw)</span>
4256              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SM" >
4257                <span class="country-flags country-flags--SM"></span>
4258                <span>San Marino (EUR €)</span>
4259              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SA" >
4260                <span class="country-flags country-flags--SA"></span>
4261                <span>Saudi Arabia (SAR ر.س)</span>
4262              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SN" >
4263                <span class="country-flags country-flags--SN"></span>
4264                <span>Senegal (XOF Fr)</span>
4265              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RS" >
4266                <span class="country-flags country-flags--RS"></span>
4267                <span>Serbia (RSD РСД)</span>
4268              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SL" >
4269                <span class="country-flags country-flags--SL"></span>
4270                <span>Sierra Leone (SLL Le)</span>
4271              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SK" >
4272                <span class="country-flags country-flags--SK"></span>
4273                <span>Slovakia (EUR €)</span>
4274              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SI" >
4275                <span class="country-flags country-flags--SI"></span>
4276                <span>Slovenia (EUR €)</span>
4277              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SO" >
4278                <span class="country-flags country-flags--SO"></span>
4279                <span>Somalia (EUR €)</span>
4280              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZA" >
4281                <span class="country-flags country-flags--ZA"></span>
4282                <span>South Africa (EUR €)</span>
4283              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ES" >
4284                <span class="country-flags country-flags--ES"></span>
4285                <span>Spain (EUR €)</span>
4286              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SD" >
4287                <span class="country-flags country-flags--SD"></span>
4288                <span>Sudan (EUR €)</span>
4289              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SE" >
4290                <span class="country-flags country-flags--SE"></span>
4291                <span>Sweden (SEK kr)</span>
4292              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CH" >
4293                <span class="country-flags country-flags--CH"></span>
4294                <span>Switzerland (CHF CHF)</span>
4295              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TJ" >
4296                <span class="country-flags country-flags--TJ"></span>
4297                <span>Tajikistan (TJS ЅМ)</span>
4298              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TZ" >
4299                <span class="country-flags country-flags--TZ"></span>
4300                <span>Tanzania (TZS Sh)</span>
4301              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TG" >
4302                <span class="country-flags country-flags--TG"></span>
4303                <span>Togo (XOF Fr)</span>
4304              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TN" >
4305                <span class="country-flags country-flags--TN"></span>
4306                <span>Tunisia (EUR €)</span>
4307              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TR" >
4308                <span class="country-flags country-flags--TR"></span>
4309                <span>Türkiye (EUR €)</span>
4310              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TM" >
4311                <span class="country-flags country-flags--TM"></span>
4312                <span>Turkmenistan (EUR €)</span>
4313              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UG" >
4314                <span class="country-flags country-flags--UG"></span>
4315                <span>Uganda (UGX USh)</span>
4316              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UA" >
4317                <span class="country-flags country-flags--UA"></span>
4318                <span>Ukraine (UAH ₴)</span>
4319              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AE" >
4320                <span class="country-flags country-flags--AE"></span>
4321                <span>United Arab Emirates (AED د.إ)</span>
4322              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GB" >
4323                <span class="country-flags country-flags--GB"></span>
4324                <span>United Kingdom (GBP £)</span>
4325              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VA" >
4326                <span class="country-flags country-flags--VA"></span>
4327                <span>Vatican City (EUR €)</span>
4328              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EH" >
4329                <span class="country-flags country-flags--EH"></span>
4330                <span>Western Sahara (MAD د.م.)</span>
4331              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YE" >
4332                <span class="country-flags country-flags--YE"></span>
4333                <span>Yemen (YER ï·¼)</span>
4334              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZM" >
4335                <span class="country-flags country-flags--ZM"></span>
4336                <span>Zambia (EUR €)</span>
4337              </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZW" >
4338                <span class="country-flags country-flags--ZW"></span>
4339                <span>Zimbabwe (USD $)</span>
4340              </button></x-listbox></form></x-popover>
4341    </div><div class="relative">
4342      <button type="button" class="text-with-icon gap-2.5 group" aria-label="Change language" aria-controls="popover-localization-form-locale--sections--30366605869383__footer" aria-expanded="false">
4343        <span class="bold text-sm">English</span><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7">
4344        <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path>
4345      </svg></button>
4346
4347      <x-popover id="popover-localization-form-locale--sections--30366605869383__footer" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="start" class="popover">
4348        <p class="h5" slot="title">Language</p><form method="post" action="/localization" id="localization-form-locale--sections--30366605869383__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="/cart" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="en" aria-selected="true">English</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="es" >Español</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="de" >Deutsch</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="nl" >Nederlands</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="fr" >Français</button><button type="submit" class="popover-listbox__option" name="locale_code" role="option" value="it" >Italiano</button></x-listbox></form></x-popover>
4349    </div></div></div><div class="footer__aside-bottom"><div class="footer__copyright v-stack gap-1">
4350            <p class="text-sm text-subdued">© 2026, Spinning EU. <a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=p
4350oweredby&amp;utm_medium=shopify&amp;utm_source=onlinestore">Powered by Shopify</a></p></div>
4351        </div>
4352      </div>
4353    </div>
4354  </div>
4355</div>
4356
4357<style> #shopify-section-sections--30366605869383__footer .footer {background-color: #000000;} #shopify-section-sections--30366605869383__footer a {font-weight: 500; font-size:14px;} </style></footer>
4358<!-- END sections: footer-group --></main>
4359  
4360<!-- MDA_EU_WITHDRAWAL_START -->
4361<style>
4362  .mda-eu-withdrawal-policy { max-width: 920px; margin: 32px auto; padding: 28px; border: 1px solid rgba(0,0,0,.12); background: #fff; color: #1f1f1f; }
4363  .mda-eu-withdrawal-policy h2 { margin: 0 0 14px; font-size: clamp(24px, 3vw, 34px); line-height: 1.12; text-transform: none; }
4364  .mda-eu-withdrawal-policy p { margin: 0 0 14px; }
4365  .mda-eu-withdrawal-policy__button { display: inline-flex; align-items: center; justify-content: center; margin-top: 8px; padding: 12px 18px; background: #000; color: #fff !important; text-decoration: none; font-weight: 700; letter-spacing: .02em; }
4366  .mda-eu-withdrawal-footer { margin-top: .65rem; }
4367  .mda-eu-withdrawal-footer a, [data-mda-eu-withdrawal-link] a { color: inherit; text-decoration: underline; text-underline-offset: .18em; }
4368</style>
4369<script>
4370(function() {
4371  var COPY = {"en":{"footer":"Returns & cancellations / Withdrawal","title":"Return and refund policy","html":"<h2>Returns, cancellations and EU right of withdrawal</h2>
4372<p>If you are an EU consumer, you may cancel an unfulfilled order or withdraw from a delivered order within 14 days from delivery of the last item, unless a legal exception applies.</p>
4373<p>Use the return/cancellation link in your customer account. Shopify will send an automatic confirmation and we will review the request before approving any cancellation, return or refund.</p>
4374<p>Products must be returned complete, clean, undamaged, not used beyond what is necessary to inspect them, and with all accessories and manuals. Please use the original packaging whenever possible. For bikes/equipment, the original packaging or equivalent protective packaging is required for safe transport. If the product, accessories or packaging are damaged, incomplete, or handled beyond what is necessary for inspection, we may reduce the refund to reflect the loss in value.</p>
4375<p>Unless the product is faulty, incorrectly supplied, or applicable law requires otherwise, return shipping/collection costs and damage caused by inadequate return packaging are the customer’s responsibility.</p>
4376<p>Approved refunds are issued to the original payment method. We may withhold reimbursement until we have received the goods back or you have provided proof of return shipment. Standard outbound delivery costs are refunded where legally required; upgraded delivery or extra services are not refundable.</p>
4377<p>This policy does not affect your statutory rights.</p>","button":"Start a return or cancellation request","accountIntro":"You can submit a return or cancellation request from your customer account."},"es":{"footer":"Devoluciones y cancelaciones / desistimiento","title":"Política de devoluciones y reembolsos","html":"<h2>Devoluciones, cancelaciones y derecho de desistimiento en la UE</h2>
4378<p>Si eres consumidor de la UE, puedes cancelar un pedido no preparado o ejercer tu derecho de desistimiento de un pedido entregado dentro de los 14 días desde la entrega del último artículo, salvo que aplique una excepción legal.</p>
4379<p>Usa el enlace de devolución/cancelación en tu cuenta de cliente. Shopify enviará una confirmación automática y revisaremos la solicitud antes de aprobar cualquier cancelación, devolución o reembolso.</p>
4380<p>Los productos deben devolverse completos, limpios, sin daños, sin un uso superior al necesario para comprobarlos, y con todos sus accesorios y manuales. Usa el embalaje original siempre que sea posible. Para bicicletas/equipos, se requiere el embalaje original o un embalaje protector equivalente para un transporte seguro. Si el producto, los accesorios o el embalaje están dañados, incompletos o han sido manipulados más allá de lo necesario para su comprobación, podremos reducir el reembolso para reflejar la pérdida de valor.</p>
4381<p>Salvo que el producto sea defectuoso, incorrecto o la ley aplicable disponga otra cosa, los costes de devolución/recogida y los daños causados por un embalaje de devolución inadecuado son responsabilidad del cliente.</p>
4382<p>Los reembolsos aprobados se realizan al método de pago original. Podemos retener el reembolso hasta recibir los productos o hasta que aportes una prueba de envío de la devolución. Los gastos de envío estándar originales se reembolsarán cuando la ley lo exija; los servicios de entrega mejorados o adicionales no son reembolsables.</p>
4383<p>Esta política no afecta a tus derechos legales.</p>","button":"Iniciar una solicitud de devolución o cancelación","accountIntro":"Puedes enviar una solicitud de devolución o cancelación desde tu cuenta de cliente."},"fr":{"footer":"Retours et annulations / rétractation","title":"Politique de retours et remboursements","html":"<h2>Retours, annulations et droit de rétractation dans l’UE</h2>
4384<p>Si vous êtes un consommateur de l’UE, vous pouvez annuler une commande non préparée ou exercer votre droit de rétractation pour une commande livrée dans un délai de 14 jours à compter de la livraison du dernier article, sauf exception légale applicable.</p>
4385<p>Utilisez le lien de retour/annulation dans votre compte client. Shopify enverra une confirmation automatique et nous examinerons la demande avant d’approuver toute annulation, retour ou remboursement.</p>
4386<p>Les produits doivent être retournés complets, propres, non endommagés, sans utilisation au-delà de ce qui est nécessaire pour les inspecter, et avec tous les accessoires et manuels. Veuillez utiliser l’emballage d’origine chaque fois que possible. Pour les vélos/équipements, l’emballage d’origine ou un emballage protecteur équivalent est requis pour un transport sûr. Si le produit, les accessoires ou l’emballage sont endommagés, incomplets ou manipulés au-delà de ce qui est nécessaire à l’inspection, nous pouvons rédu
4386ire le remboursement pour refléter la perte de valeur.</p>
4387<p>Sauf si le produit est défectueux, incorrectement fourni, ou si la loi applicable l’exige autrement, les frais de retour/enlèvement et les dommages causés par un emballage de retour insuffisant sont à la charge du client.</p>
4388<p>Les remboursements approuvés sont effectués sur le moyen de paiement initial. Nous pouvons différer le remboursement jusqu’à réception des biens ou jusqu’à ce que vous fournissiez une preuve d’expédition du retour. Les frais de livraison standard initiaux sont remboursés lorsque la loi l’exige ; les services de livraison améliorés ou supplémentaires ne sont pas remboursables.</p>
4389<p>Cette politique n’affecte pas vos droits légaux.</p>","button":"Démarrer une demande de retour ou d’annulation","accountIntro":"Vous pouvez envoyer une demande de retour ou d’annulation depuis votre compte client."},"de":{"footer":"Rückgaben und Stornierungen / Widerruf","title":"Rückgabe- und Erstattungsrichtlinie","html":"<h2>Rückgaben, Stornierungen und EU-Widerrufsrecht</h2>
4390<p>Wenn Sie Verbraucher in der EU sind, können Sie eine noch nicht erfüllte Bestellung stornieren oder bei einer gelieferten Bestellung innerhalb von 14 Tagen ab Lieferung des letzten Artikels widerrufen, sofern keine gesetzliche Ausnahme gilt.</p>
4391<p>Nutzen Sie den Rückgabe-/Stornierungslink in Ihrem Kundenkonto. Shopify sendet eine automatische Bestätigung, und wir prüfen die Anfrage, bevor eine Stornierung, Rückgabe oder Erstattung genehmigt wird.</p>
4392<p>Produkte müssen vollständig, sauber, unbeschädigt, nicht über das zur Prüfung erforderliche Maß hinaus benutzt und mit allem Zubehör sowie allen Handbüchern zurückgegeben werden. Bitte verwenden Sie nach Möglichkeit die Originalverpackung. Für Fahrräder/Geräte ist die Originalverpackung oder eine gleichwertige Schutzverpackung für einen sicheren Transport erforderlich. Wenn Produkt, Zubehör oder Verpackung beschädigt, unvollständig oder über das zur Prüfung erforderliche Maß hinaus behandelt wurden, können wir die Erstattung entsprechend dem Wertverlust reduzieren.</p>
4393<p>Sofern das Produkt nicht mangelhaft oder falsch geliefert wurde oder das anwendbare Recht nichts anderes vorschreibt, trägt der Kunde die Rücksende-/Abholkosten sowie Schäden, die durch unzureichende Rücksendeverpackung entstehen.</p>
4394<p>Genehmigte Erstattungen erfolgen auf die ursprüngliche Zahlungsmethode. Wir können die Rückzahlung zurückhalten, bis wir die Waren zurückerhalten haben oder Sie einen Nachweis über die Rücksendung erbracht haben. Standardversandkosten der ursprünglichen Lieferung werden erstattet, soweit gesetzlich vorgeschrieben; verbesserte Lieferdienste oder Zusatzleistungen sind nicht erstattungsfähig.</p>
4395<p>Diese Richtlinie berührt Ihre gesetzlichen Rechte nicht.</p>","button":"Rückgabe oder Stornierung beantragen","accountIntro":"Sie können eine Rückgabe- oder Stornierungsanfrage über Ihr Kundenkonto senden."},"it":{"footer":"Resi e cancellazioni / recesso","title":"Politica di resi e rimborsi","html":"<h2>Resi, cancellazioni e diritto di recesso nell’UE</h2>
4396<p>Se sei un consumatore dell’UE, puoi cancellare un ordine non ancora evaso o esercitare il diritto di recesso per un ordine consegnato entro 14 giorni dalla consegna dell’ultimo articolo, salvo eventuali eccezioni di legge.</p>
4397<p>Usa il link per reso/cancellazione nel tuo account cliente. Shopify invierà una conferma automatica e noi esamineremo la richiesta prima di approvare qualsiasi cancellazione, reso o rimborso.</p>
4398<p>I prodotti devono essere restituiti completi, puliti, non danneggiati, non utilizzati oltre quanto necessario per ispezionarli, e con tutti gli accessori e manuali. Ti chiediamo di utilizzare l’imballaggio originale ogni volta che sia possibile. Per biciclette/attrezzature, l’imballaggio originale o un imballaggio protettivo equivalente è richiesto per un trasporto sicuro. Se il prodotto, gli accessori o l’imballaggio sono danneggiati, incompleti o manipolati oltre quanto necessario per l’ispezione, potremo ridurre il rimborso per riflettere la perdita di valore.</p>
4399<p>Salvo che il prodotto sia difettoso, fornito in modo errato o la legge applicabile preveda diversamente, i costi di reso/ritiro e i danni causati da un imballaggio di reso inadeguato sono a carico del cliente.</p>
4400<p>I rimborsi approvati vengono effettuati sul metodo di pagamento originale. Possiamo trattenere il rimborso fino alla ricezione dei beni o fino a quando fornisci prova della spedizione del reso. I costi di consegna standard iniziali sono rimborsati quando richiesto dalla legge; servizi di consegna migliorati o aggiuntivi non sono rimborsabili.</p>
4401<p>Questa politica non pregiudica i tuoi diritti di legge.</p>","button":"Avvia una richiesta di reso o cancellazione","accountIntro":"Puoi inviare una richiesta di reso o cancellazione dal tuo account cliente."}
4401,"nl":{"footer":"Retouren en annuleringen / herroeping","title":"Retour- en terugbetalingsbeleid","html":"<h2>Retouren, annuleringen en EU-herroepingsrecht</h2>
4402<p>Als je een EU-consument bent, kun je een nog niet verwerkte bestelling annuleren of je herroepingsrecht uitoefenen voor een geleverde bestelling binnen 14 dagen vanaf de levering van het laatste artikel, tenzij een wettelijke uitzondering van toepassing is.</p>
4403<p>Gebruik de retour-/annuleringslink in je klantaccount. Shopify stuurt een automatische bevestiging en wij beoordelen het verzoek voordat een annulering, retour of terugbetaling wordt goedgekeurd.</p>
4404<p>Producten moeten compleet, schoon, onbeschadigd, niet verder gebruikt dan nodig is om ze te inspecteren, en met alle accessoires en handleidingen worden geretourneerd. Gebruik waar mogelijk de originele verpakking. Voor fietsen/apparatuur is de originele verpakking of gelijkwaardige beschermende verpakking vereist voor veilig transport. Als het product, de accessoires of de verpakking beschadigd of incompleet zijn, of verder zijn behandeld dan nodig is voor inspectie, kunnen wij de terugbetaling verminderen om het waardeverlies weer te geven.</p>
4405<p>Tenzij het product defect of verkeerd geleverd is, of toepasselijke wetgeving anders vereist, zijn retour-/ophaalkosten en schade veroorzaakt door onvoldoende retourverpakking de verantwoordelijkheid van de klant.</p>
4406<p>Goedgekeurde terugbetalingen worden uitgevoerd naar de oorspronkelijke betaalmethode. Wij kunnen de terugbetaling uitstellen totdat wij de goederen hebben ontvangen of totdat je bewijs van retourzending hebt verstrekt. Standaardkosten voor de oorspronkelijke levering worden terugbetaald wanneer dit wettelijk vereist is; verbeterde levering of extra diensten worden niet terugbetaald.</p>
4407<p>Dit beleid doet geen afbreuk aan je wettelijke rechten.</p>","button":"Start een retour- of annuleringsverzoek","accountIntro":"Je kunt een retour- of annuleringsverzoek indienen via je klantaccount."}};
4408  var ACCOUNT_URL = "https://shopify.com/90871169351/account";
4409  var MARKER_ID = 'returns-cancellations-withdrawal';
4410  function locale() { var raw = (window.Shopify && Shopify.locale) || document.documentElement.getAttribute('lang') || 'en'; raw = String(raw).toLowerCase().split('-')[0]; return COPY[raw] ? raw : 'en'; }
4411  function t() { return COPY[locale()] || COPY.en; }
4412  function esc(s) { return String(s || '').replace(/[&<>"']/g, function(c) { return {'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]; }); }
4413  function rootUrl() { var root = '/'; try { root = (window.Shopify && Shopify.routes && Shopify.routes.root) || '/' || '/'; } catch (e) {} if (!root) root = '/'; if (root.charAt(root.length - 1) !== '/') root += '/'; return root; }
4414  function infoUrl() { return rootUrl() + 'pages/order-faqs#' + MARKER_ID; }
4415  function addFooterLink() {
4416    var copy = t(); var footer = document.querySelector('footer') || document.querySelector('#shopify-section-footer') || document.querySelector('[id*=footer]');
4417    if (!footer || footer.querySelector('[data-mda-eu-withdrawal-link]')) return;
4418    var faq = footer.querySelector('a[href*="/pages/order-faqs"]');
4419    if (faq && faq.parentElement && faq.parentElement.tagName && faq.parentElement.tagName.toLowerCase() === 'li') { var li = document.createElement('li'); li.setAttribute('data-mda-eu-withdrawal-link', ''); li.innerHTML = '<a href="' + esc(infoUrl()) + '">' + esc(copy.footer) + '</a>'; faq.parentElement.insertAdjacentElement('afterend', li); return; }
4420    var wrap = document.createElement('div'); wrap.className = 'mda-eu-withdrawal-footer'; wrap.setAttribute('data-mda-eu-withdrawal-link', ''); wrap.innerHTML = '<a href="' + esc(infoUrl()) + '">' + esc(copy.footer) + '</a>'; footer.appendChild(wrap);
4421  }
4422  function renderPolicyBlock() {
4423    var path = window.location.pathname.replace(/\/$/, ''); if (!/\/pages\/order-faqs$/.test(path)) return; if (document.getElementById(MARKER_ID)) return;
4424    var copy = t(); var section = document.createElement('section'); section.id = MARKER_ID; section.className = 'mda-eu-withdrawal-policy';
4425    section.innerHTML = copy.html + '<p>' + esc(copy.accountIntro) + '</p><p><a class="mda-eu-withdrawal-policy__button" href="' + esc(ACCOUNT_URL) + '">' + esc(copy.button) + '</a></p>';
4426    var main = document.querySelector('main') || document.querySelector('#MainContent') || document.body; main.insertBefore(section, main.firstChild);
4427    if (window.location.hash === '#' + MARKER_ID) setTimeout(function() { section.scrollIntoView({ block: 'start' }); }, 80);
4428  }
4429  function init() { addFooterLink(); renderPolicyBlock(); }
4430  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init();
4431})();
4432</script>
4432
4433<!-- MDA_EU_WITHDRAWAL_END -->
4434<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;} </style>
4435<div id="shopify-block-AakNoTzR0N0NkN3Z2W__11532412952436166569" class="shopify-block shopify-app-block">
4436
4437
4438	<!-- __LXV: 1789461825802;__LXR: https://loox.io;__LXC: _XrwNy4cUp; -->
4438<script>var loox_global_hash = '1789461825802';
4439var loox_bundle_reviews_enabled = false;</script>
4439<style>.loox-reviews-default { max-width: 1200px; margin: 0 auto; }.loox-rating .loox-icon { color:#EBBF20; }
4440:root { --lxs-rating-icon-color: #EBBF20; }</style>
4441
4442
4443
4444
4445
4446
4447
4448</div>
4448<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
4448
4449</body>
4450</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.