1<!doctype html> 2<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> 3<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> 4<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]--> 5<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]--> 6<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]--> 7<head> 8 9 <!-- Basic page needs ================================================== --> 10 <meta charset="utf-8"> 11 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 12 13 14 <link rel="icon" href="https://cdn.store-assets.com/s/1368538/f/17677728.png" /> 15 16 17 <!-- Title and description ================================================== --> 18 <title> 19 Articles – Sprint Running 20 </title> 21 22 23 <meta name="description" content="Donât let Malaysiaâs humidity slow you down. Learn how to train smarter, stay hydrated, and choose gear that keeps you cool â every mile, every day."> 24 25 26 <!-- Social meta ================================================== --> 27 28 29 <meta property="og:type" content="blog"> 30 <meta property="og:title" content="Articles"> 31 <meta property="og:url" content="https://www.sprintmyofficial.com/blogs/articles"> 32 33 34<meta property="og:description" content="Donât let Malaysiaâs humidity slow you down. Learn how to train smarter, stay hydrated, and choose gear that keeps you cool â every mile, every day."> 35<meta property="og:site_name" content="Sprint Running"> 36 37 38 39 <meta name="twitter:card" content="summary"> 40 41 42 43 <meta name="twitter:site" content="@"> 44 45 46 <meta name="twitter:title" content="Articles"> 47 <meta name="twitter:description" content="Donât let Malaysiaâs humidity slow you down. Learn how to train smarter, stay hydrated, and choose gear that keeps you cool â every mile, every day."> 48 49 50 51 52 <!-- Helpers ================================================== --> 53 <link rel="canonical" href="https://www.sprintmyofficial.com/blogs/articles"> 54 <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"> 55 <meta name="theme-color" content="#121212"> 56 57
57<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
57 58 59 <!-- Header hook for plugins ================================================== --> 60 61<!-- ScriptTags -->
62<script>window.__st={p: "blog",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
62<script src='/assets/events.js'></script>
62<script>(function(){function asyncLoad(){var urls=['/assets/traffic.js?v=1','https://apps.easystore.co/marketplace/shopee-malaysia/script.js?shop=sprintrunning.easy.co'];for(var i=0;i<urls.length;i++){var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=urls[i];var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);})();</script>
62 63<!-- /ScriptTags --> 64 65 66 67
67<script src="https://store-themes.easystore.co/1368538/themes/55058/assets/global.js?t=1787901486" defer="defer"></script>
67 68 69 70 71
71<script> 72 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 73 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 74 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 75 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 76 77 ga('create', '', 'auto','myTracker'); 78 ga('myTracker.send', 'pageview'); 79 80 </script>
80 81 82
82<script src="/assets/storefront.js?id=1d419de2011a5572c98b" type="text/javascript" ></script>
82 83 84 85 <!-- CSS ================================================== --> 86 <style> 87 @font-face { 88 font-family: 'Sunflower'; 89 font-style: normal; 90 font-weight: 300; 91 src: local('Sunflower 300'), local('Sunflower-300'), url(https://fonts.gstatic.com/s/sunflower/v9/RWmPoKeF8fUjqIj7Vc-06MfiqYsGBGBzCw.ttf) format('truetype'); 92 } 93 94 @font-face { 95 font-family: 'Bebas Neue'; 96 font-style: normal; 97 font-weight: regular; 98 src: local('Bebas Neue regular'), local('Bebas Neue-regular'), url(https://fonts.gstatic.com/s/bebasneue/v2/JTUSjIg69CK48gW7PXooxW5rygbi49c.ttf) format('truetype'); 99 } 100 101 :root { 102 --font-body-family: 'Sunflower', sans-serif; 103 --font-body-style: normal; 104 --font-body-weight: 500; 105 106 --font-heading-family: 'Bebas Neue', display; 107 --font-heading-style: normal; 108 --font-heading-weight: 500; 109 110 --color-heading-text: 18,18,18; 111 --color-base-text: 18,18,18; 112 --color-base-background-1: 255,255,255; 113 --color-base-background-2: 255,255,255; 114 115 --color-base-solid-button-labels: 255,255,255; 116 --color-base-outline-button-labels: 18,18,18; 117 118 --color-base-accent-1: 18,18,18; 119 --color-base-accent-2: 18,18,18; 120 --payment-terms-background-color: 255,255,255; 121 122 --gradient-base-background-1: 255,255,255; 123 --gradient-base-background-2: 255,255,255; 124 --gradient-base-accent-1: 18,18,18; 125 --gradient-base-accent-2: 18,18,18; 126 127 --page-width: 145rem; 128 } 129 130 *, 131 *::before, 132 *::after { 133 box-sizing: inherit; 134 } 135 136 html { 137 box-sizing: border-box; 138 font-size: 62.5%; 139 height: 100%; 140 } 141 142 body { 143 display: grid; 144 grid-template-rows: auto auto 1fr auto; 145 grid-template-columns: 100%; 146 min-height: 100%; 147 margin: 0; 148 font-size: 1.5rem; 149 letter-spacing: 0.06rem; 150 line-height: 1.8; 151 font-family: var(--font-body-family); 152 font-style: var(--font-body-style); 153 font-weight: var(--font-body-weight); 154 155 } 156 157 @media screen and (min-width: 750px) { 158 body { 159 font-size: 1.6rem; 160 } 161 } 162 </style> 163 164 <link href="https://store-themes.easystore.co/1368538/themes/55058/assets/base.css?t=1787901486" rel="stylesheet" type="text/css" media="screen" /> 165 166 167 168<!-- Snippet:global/head: Shopee Malaysia --> 169<link type="text/css" rel="stylesheet" href="https://apps.easystore.co/assets/css/marketplace/main.css?v1.71"> 170<!-- /Snippet --> 171 172<!-- Snippet:global/head: Product Property é²éè¦æ ¼é¸é --> 173 174
174<script src="https://apps.easystore.co/assets/js/product-property/properties.js?v2.05"></script>
174 175 <link type="text/css" rel="stylesheet" href="https://apps.easystore.co/assets/css/product-property/main.css?v2.03"> 176 177<!-- /Snippet --> 178 179<!-- Snippet:global/head: Reperk Rewards & Loyalty Program by OnVoard -->
180<script> 181 (function() { 182 window.OnVoard = window.OnVoard || function() { 183 (window.OnVoard.q = window.OnVoard.q || []).push(arguments); 184 }; 185 var script = document.createElement("script"); 186 var parent = document.getElementsByTagName("script")[0].parentNode; 187 script.async = 1; 188 189 190 script.src = "https://scripts.onvoard.com/apps/loader.js"; 191 192 parent.appendChild(script); 193 })(); 194</script>
194 195 196
197<script> 198 199var ovData = {}; 200ovData["ecommerce_platform"] = "easystore"; 201ovData["account_id"] = "acct_tnf48i374s95hk4"; 202 203 204 ovData["template"] = "blog"; 205 ovData["cart"] = {"item_count":0,"total_price":0,"announcements":[]}; 206 ovData["product"] = ""; 207 ovData["shop"] = {}; 208 ovData["customer"] = {}; 209 210 211 ovData["shop"] = { 212 "currency": "MYR", 213 "domain": "www.sprintmyofficial.com", 214 "url": "https://www.sprintmyofficial.com", 215 "money_format": "<span class=money data-ori-price='{{amount}}'>RM {{amount}} </span>", 216 }; 217 218 219 220 221 window.OnVoardData = ovData; 222</script>
222 223 224<!-- /Snippet --> 225 226 227
227<script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
227 228</head> 229 230<body id="articles" class="template-blog" > 231 232 233<!-- Snippet:global/body_start: Announcement Bar --> 234<link rel="stylesheet" href="https://apps.easystore.co/assets/css/annoucement-bar/marquee.css?v1.04"> 235 236<div id="announcement-bar" name="announcement-bar" style=" 237 border: unset; 238 padding: 6px 0px; 239 margin: 0px; 240 z-index:2999; 241 background:rgb(66, 2, 1); 242 color:rgb(255, 255, 255); 243 position: -webkit-sticky; position: sticky; top: 0; 244"> 245 246 <input type="hidden" id="total_announcement_left" name="total_announcement_left" value="1"> 247 <input type="hidden" id="locale" name="locale" value="en_US"> 248 249 <div class="app_marquee-wrapper" style=" 250 padding: 0px 0px; 251 border-top: 0px; 252 border-bottom: 0px; 253 border-color: transparent; 254 "> 255 <div class="app_marquee-container"> 256 <div id="announcement_bar_0" class="announcement_bar_0 announcement_bar-content"> 257 <span class="marquee-msg">Login to enjoy extra 10% off sitewide with RM650 spend. USE CODE: SPRINT10</span> 258 <input type="hidden" id="expired_at_0" name="expired_at_0" value="2025-12-31 12:00"> 259 </div> 260 </div> 261 262 <span id="announcement-close-button" name="announcement-close-button" class="announcement-close-button" style="color: rgb(200, 2, 16); background: rgb(255, 255, 255);"> 263 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" width="20" height="20" stroke-width="2"> 264 <path d="M18 6l-12 12"></path> 265 <path d="M6 6l12 12"></path> 266 </svg> 267 </span> 268 </div> 269</div> 270 271 272
273<script> 274 var is_top_enabled = 1; 275 if (is_top_enabled) { 276 // Prevent announcement bar block header 277 setTimeout(() => { 278 let header = document.querySelector('#easystore-section-header'); 279 let topbar = document.querySelector('.sticky-topbar'); 280 let announcementBar = document.querySelector('#announcement-bar'); 281 282 if (announcementBar) { 283 let height = announcementBar.offsetHeight + 'px'; 284 if (header) header.style.top = height; 285 if (topbar) topbar.style.top = height; 286 } 287 }, 2000); 288 } 289 290 setInterval(function () { 291 let total_announcement = parseInt("1", 10); 292 let total_announcement_left = parseInt(document.querySelector("#total_announcement_left").value, 10); 293 294 for (let i = 0; i <= total_announcement; i++) { 295 let startDate = new Date(); 296 let endDateStr = document.querySelector(`#expired_at_${i}`)?.value; 297 let endDate = endDateStr ? new Date(endDateStr.replace(/-/g, "/")) : new Date(); 298 let seconds = (endDate.getTime() - startDate.getTime()) / 1000; 299 300 let days = Math.floor(seconds / 86400); 301 let hours = Math.floor((seconds % 86400) / 3600); 302 let mins = Math.floor((seconds % 3600) / 60); 303 let secs = Math.floor(seconds % 60); 304 305 function translate(key, locale, values = 1) { 306 if (locale === "zh_TW") { 307 let translations = { 308 day: "天", 309 hour: "å°æ", 310 min: "åé", 311 sec: "ç§" 312 }; 313 return translations[key] || key; 314 } else { 315 let singularPlural = { day: "Day", hour: "Hour", min: "Min", sec: "Sec" }; 316 let plural = { day: "Days", hour: "Hours", min: "Mins", sec: "Secs" }; 317 if (key in singularPlural) { 318 return values > 1 ? plural[key] : singularPlural[key]; 319 } 320 return key; 321 } 322 } 323 324 325 let countdownElement = document.querySelector(`#announcementBar_countdown_${i}`); 326 if (countdownElement && seconds > 0) { 327 let locale = document.querySelector("#locale")?.value || "en"; 328 let countdownItems = document.querySelectorAll(`.announcementBar_countdown_${i}`); 329 countdownItems.forEach(item => { 330 item.style.display = ''; 331 item.innerHTML = ` 332 <div> 333 <span>${days}</span> <small>${translate('day', locale, days)}</small> 334 </div> 335 <div> 336 <span>${hours}</span> <small>${translate('hour', locale, hours)}</small> 337 </div> 338 <div> 339 <span>${mins}</span> <small>${translate('min', locale, mins)}</small> 340 </div> 341 <div> 342 <span>${secs}</span> <small>${translate('sec', locale, secs)}</small> 343 </div> 344 `; 345 }); 346 } else if (countdownElement && seconds <= 0) { 347 let bar = document.querySelector(`#announcement_bar_${i}`); 348 if (bar) bar.remove(); 349 total_announcement_left -= 1; 350 document.querySelector("#total_announcement_left").value = total_announcement_left; 351 } 352 } 353 354 showOrHide(total_announcement_left); 355 }, 1000); 356 357 function showOrHide(total_announcement_left) { 358 let prevButton = document.querySelector("#previous-announcement-bar-button"); 359 let nextButton = document.querySelector("#next-announcement-bar-button"); 360 let closeButton = document.querySelector("#announcement-close-button"); 361 let announcementBar = document.querySelector("#announcement-bar"); 362 let announcementBarTop = document.querySelector("#announcement-bar-top"); 363 let header = document.querySelector("#easystore-section-header"); 364 let topbar = document.querySelector(".sticky-topbar"); 365 366 if (total_announcement_left <= 1) { 367 if (prevButton) prevButton.style.display = 'none'; 368 if (nextButton) nextButton.style.display = 'none'; 369 } else { 370 if (prevButton) prevButton.style.display = 'block'; 371 if (nextButton) nextButton.style.display = 'block'; 372 } 373 374 if (total_announcement_left === 0) { 375 if (closeButton) closeButton.style.display = 'none'; 376 if (announcementBar) announcementBar.style.display = 'none'; 377 if (announcementBarTop) announcementBarTop.style.display = 'none'; 378 if (header) header.style.top = '0px'; 379 if (topbar) topbar.style.top = '0px'; 380 } 381 } 382 383 let closeButton = document.querySelector("#announcement-close-button"); 384 if (closeButton) { 385 closeButton.addEventListener('click', () => { 386 let announcementBar = document.querySelector("#announcement-bar"); 387 let announcementBarTop = document.querySelector("#announcement-bar-top"); 388 let header = document.querySelector("#easystore-section-header"); 389 let topbar = document.querySelector(".sticky-topbar"); 390 391 if (announcementBar) announcementBar.style.display = 'none'; 392 if (announcementBarTop) announcementBarTop.style.display = 'none'; 393 if (header) header.style.top = ''; 394 if (topbar) topbar.style.top = ''; 395 }); 396 } 397 398</script>
398 399 400
401<script> 402 (function initializeMarquee() { 403 const marqueeWrapper = document.querySelector(`#announcement-bar .app_marquee-wrapper`); 404 const marqueeContainer = document.querySelector(`#announcement-bar .app_marquee-container`); 405 406 if (!marqueeWrapper || !marqueeContainer) return; 407 408 const children = Array.from(marqueeContainer.children); 409 410 // Calculate the total width of children 411 let totalWidth = children.reduce((acc, child) => acc + child.offsetWidth, 0); 412 const screenWidth = window.innerWidth; 413 414 // Clone children until the total width exceeds the screen width 415 if(totalWidth > 5){ 416 while (totalWidth < screenWidth * 3) { 417 children.forEach(child => { 418 const clone = child.cloneNode(true); 419 marqueeContainer.appendChild(clone); 420 totalWidth += clone.offsetWidth; 421 }); 422 } 423 } 424 425 // Clone the marquee container 426 const clonedContainer = marqueeContainer.cloneNode(true); 427 marqueeWrapper.appendChild(clonedContainer); 428 })(); 429</script>
429 430 431<!-- /Snippet --> 432 433<!-- Snippet:global/body_start: Console Extension --> 434<div id='es_console' style='display: none;'>1368538</div> 435<!-- /Snippet --> 436 437 438 <style> 439 header { 440 --logo-width: 180px; 441 } 442 .header-wrapper, 443 .header-wrapper .list-menu--disclosure, 444 .header-wrapper .search-modal{ 445 background-color: #FFFFFF; 446 } 447 .header-wrapper .search-modal .field__input{ 448 background-color: rgb(var(--color-background)); 449 } 450 .header-wrapper summary .icon-caret, 451 .header-wrapper .header__menu-item a, 452 .header-wrapper .list-menu__item, 453 .header-wrapper .link--text{ 454 color: #000000; 455 } 456 457 .search-modal__form{ 458 position: relative; 459 } 460 461 .dropdown { 462 display: none; 463 position: absolute; 464 top: 100%; 465 left: 0; 466 width: 100%; 467 padding: 5px 0; 468 background-color: #fff; 469 color:#000; 470 z-index: 1000; 471 border-bottom-left-radius: 15px; 472 border-bottom-right-radius: 15px; 473 border: 1px solid rgba(var(--color-foreground), 1); 474 border-top: none; 475 overflow-x: hidden; 476 overflow-y: auto; 477 max-height: 350px; 478 } 479 480 .dropdown-item { 481 padding: 0.4rem 2rem; 482 cursor: pointer; 483 line-height: 1.4; 484 overflow: hidden; 485 text-overflow: ellipsis; 486 white-space: nowrap; 487 } 488 489 .dropdown-item:hover{ 490 background-color: #f3f3f3; 491 } 492 493 .search__input.is-focus{ 494 border-radius: 15px; 495 border-bottom-left-radius: 0; 496 border-bottom-right-radius: 0; 497 border: 1px solid rgba(var(--color-foreground), 1); 498 border-bottom: none; 499 box-shadow: none; 500 } 501 502 .clear-all { 503 text-align: right; 504 padding: 0 2rem 0.2rem; 505 line-height: 1; 506 font-size: 70%; 507 margin-bottom: -2px; 508 } 509 510 .clear-all:hover{ 511 background-color: #fff; 512 } 513 514 .search-input-focus .easystore-section-header-hidden{ 515 transform: none; 516 } 517 .referral-notification { 518 position: absolute; 519 top: 100%; 520 right: 0; 521 background: white; 522 border: 1px solid #e0e0e0; 523 border-radius: 8px; 524 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 525 width: 280px; 526 z-index: 1000; 527 padding: 16px; 528 margin-top: 8px; 529 font-size: 14px; 530 line-height: 1.4; 531 } 532 533 .referral-notification::before { 534 content: ''; 535 position: absolute; 536 top: -8px; 537 right: 20px; 538 width: 0; 539 height: 0; 540 border-left: 8px solid transparent; 541 border-right: 8px solid transparent; 542 border-bottom: 8px solid white; 543 } 544 545 .referral-notification::after { 546 content: ''; 547 position: absolute; 548 top: -9px; 549 right: 20px; 550 width: 0; 551 height: 0; 552 border-left: 8px solid transparent; 553 border-right: 8px solid transparent; 554 border-bottom: 8px solid #e0e0e0; 555 } 556 557 .referral-notification h4 { 558 margin: 0 0 8px 0; 559 color: #2196F3; 560 font-size: 16px; 561 font-weight: 600; 562 } 563 564 .referral-notification p { 565 margin: 0 0 12px 0; 566 color: #666; 567 } 568 569 .referral-notification .referral-code { 570 background: #f5f5f5; 571 padding: 8px; 572 border-radius: 4px; 573 font-family: monospace; 574 font-size: 13px; 575 text-align: center; 576 margin: 8px 0; 577 border: 1px solid #ddd; 578 } 579 580 .referral-notification .close-btn { 581 position: absolute; 582 top: 8px; 583 right: 8px; 584 background: none; 585 border: none; 586 font-size: 18px; 587 color: #999; 588 cursor: pointer; 589 padding: 0; 590 width: 20px; 591 height: 20px; 592 line-height: 1; 593 } 594 595 .referral-notification .close-btn:hover { 596 color: #333; 597 } 598 599 .referral-notification .action-btn { 600 background: #2196F3; 601 color: white; 602 border: none; 603 padding: 8px 16px; 604 border-radius: 4px; 605 cursor: pointer; 606 font-size: 12px; 607 margin-right: 8px; 608 margin-top: 8px; 609 } 610 611 .referral-notification .action-btn:hover { 612 background: #1976D2; 613 } 614 615 .referral-notification .dismiss-btn { 616 background: transparent; 617 color: #666; 618 border: 1px solid #ddd; 619 padding: 8px 16px; 620 border-radius: 4px; 621 cursor: pointer; 622 font-size: 12px; 623 margin-top: 8px; 624 } 625 626 .referral-notification .dismiss-btn:hover { 627 background: #f5f5f5; 628 } 629 .referral-modal__dialog { 630 transform: translate(-50%, 0); 631 transition: transform var(--duration-default) ease, visibility 0s; 632 z-index: 10000; 633 position: fixed; 634 top: 20vh; 635 left: 50%; 636 width: 100%; 637 max-width: 350px; 638 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 639 border-radius: 12px; 640 background-color: #fff; 641 color: #000; 642 padding: 20px; 643 text-align: center; 644 } 645 646 .modal-overlay.referral-modal-overlay { 647 position: fixed; 648 top: 0; 649 left: 0; 650 width: 100%; 651 height: 100%; 652 background-color: rgba(0, 0, 0, 0.7); 653 z-index: 2001; 654 display: block; 655 opacity: 1;
656 transition: opacity var(--duration-default) ease, visibility 0s; 657 } 658</style> 659 660<link rel="preload" href="https://store-themes.easystore.co/1368538/themes/55058/assets/section-header.css?t=1787901486" as="style" onload="this.onload=null;this.rel='stylesheet'"> 661<link rel="preload" href="https://store-themes.easystore.co/1368538/themes/55058/assets/component-list-menu.css?t=1787901486" as="style" onload="this.onload=null;this.rel='stylesheet'"> 662<link rel="preload" href="https://store-themes.easystore.co/1368538/themes/55058/assets/component-menu-drawer.css?t=1787901486" as="style" onload="this.onload=null;this.rel='stylesheet'"> 663<link rel="preload" href="https://store-themes.easystore.co/1368538/themes/55058/assets/component-cart-notification.css?v1.1?t=1787901486" as="style" onload="this.onload=null;this.rel='stylesheet'"> 664
665<script src="https://store-themes.easystore.co/1368538/themes/55058/assets/cart-notification.js?t=1787901486" defer="defer"></script>
vendor: 2 bytes, line 665
665
666<script src="https://store-themes.easystore.co/1368538/themes/55058/assets/details-modal.js?t=1787901486" defer="defer"></script>
666 667 668<svg xmlns="http://www.w3.org/2000/svg" class="hidden"> 669 <symbol id="icon-search" viewbox="0 0 18 19" fill="none"> 670 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 112.85 3.5a5.784 5.784 0 018.18 8.18zm.26 1.12a6.78 6.78 0 11.72-.7l5.4 5.4a.5.5 0 11-.71.7l-5.41-5.4z" fill="currentColor"/> 671 </symbol> 672 673 <symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17"> 674 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 675 </symbol> 676</svg> 677 678 679<div id="easystore-section-header"> 680 <sticky-header class="header-wrapper header-wrapper--border-bottom"> 681 <header class="header header--middle-left page-width header--has-menu" itemscope itemtype="http://schema.org/Organization"> 682 <header-drawer data-breakpoint="tablet"> 683 <details class="menu-drawer-container menu-opening"> 684 <summary class="header__icon header__icon--menu header__icon--summary link link--text focus-inset" aria-label="Menu" role="button" aria-expanded="true" aria-controls="menu-drawer"> 685 <span> 686 687 688 689 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-hamburger " fill="none" viewBox="0 0 18 16"> 690 <path d="M1 .5a.5.5 0 100 1h15.71a.5.5 0 000-1H1zM.5 8a.5.5 0 01.5-.5h15.71a.5.5 0 010 1H1A.5.5 0 01.5 8zm0 7a.5.5 0 01.5-.5h15.71a.5.5 0 010 1H1a.5.5 0 01-.5-.5z" fill="currentColor"> 691 </path> 692 </svg> 693 694 695 696 697 698 699 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-close " fill="none" viewBox="0 0 18 17"> 700 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 701 </path> 702 </svg> 703 704 705 706 </span> 707 </summary> 708 <div id="menu-drawer" class="menu-drawer motion-reduce" tabindex="-1"> 709 <div class="menu-drawer__inner-container"> 710 <div class="menu-drawer__navigation-container"> 711 <nav class="menu-drawer__navigation"> 712 <ul class="menu-drawer__menu list-menu" role="list"> 713 714 715 716 <li> 717 <a href="/" class="menu-drawer__menu-item list-menu__item link link--text focus-inset"> 718 Home 719 </a> 720 </li> 721 722 723 724 725 726 <li> 727 <details> 728 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 729 <a href="/no-direct" class="link--text list-menu__item menu-drawer__menu-item"> 730 Featured 731 </a> 732 733 734 735 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 736 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 737 </svg> 738 739 740 741 742 743 744 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 745 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 746 </svg> 747 748 749 750 </summary> 751 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 752 <div class="menu-drawer__inner-submenu"> 753 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 754 755 756 757 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 758 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 759 </svg> 760 761 762 763 Featured 764 </button> 765 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 766 767 768 769 <li> 770 <a href="/collections/new-arrival" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 771 New Arrivals 772 </a> 773 </li> 774 775 776 777 778 <li> 779 <a href="/collections/bestsellers" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 780 Bestsellers 781 </a> 782 </li> 783 784 785 786 </ul> 787 </div> 788 </div> 789 </details> 790 </li> 791 792 793 794 795 796 <li> 797 <details> 798 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 799 <a href="/brands" class="link--text list-menu__item menu-drawer__menu-item"> 800 Brands 801 </a> 802 803 804 805 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 806 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 807 </svg> 808 809 810 811 812 813 814 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 815 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 816 </svg> 817 818 819 820 </summary> 821 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 822 <div class="menu-drawer__inner-submenu"> 823 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 824 825 826 827 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 828 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 829 </svg> 830 831 832 833 Brands 834 </button> 835 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 836 837 838 839 <li> 840 <a href="/collections/hoka" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 841 HOKA 842 </a> 843 </li> 844 845 846 847 848 <li> 849 <a href="/collections/new-balance" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 850 NEW BALANCE 851 </a> 852 </li> 853 854 855 856 857 <li> 858 <a href="/collections/on" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 859 ON 860 </a> 861 </li> 862 863 864 865 866 <li> 867 <a href="/collections/saucony" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 868 SAUCONY 869 </a> 870 </li> 871 872 873 874 875 <li> 876 <a href="/collections/norda" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 877 NORDA 878 </a> 879 </li> 880 881 882 883 884 <li> 885 <a href="/collections/altra" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 886 ALTRA 887 </a> 888 </li> 889 890 891 892 893 <li> 894 <a href="/collections/keen" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 895 KEEN 896 </a> 897 </li> 898 899 900 901 902 <li> 903 <a href="/collections/teva" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 904 TEVA 905 </a> 906 </li> 907 908 909 910 911 <li> 912 <a href="/collections/oofos" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 913 OOFOS 914 </a> 915 </li> 916 917 918 919 920 <li> 921 <a href="/collections/telic" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 922 TELIC 923 </a> 924 </li> 925 926 927 928 929 <li> 930 <a href="/collections/injinji" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 931 INJINJI 932 </a> 933 </li> 934 935 936 937 938 <li> 939 <a href="/collections/feetures" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 940 FEETURES 941 </a> 942 </li> 943 944 945 946 947 <li> 948 <a href="/collections/ciele" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 949 CIELE 950 </a> 951 </li> 952 953 954 955 956 <li> 957 <a href="/collections/rabbit" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 958 RABBIT 959 </a> 960 </li> 961 962 963 964 </ul> 965 </div> 966 </div> 967 </details> 968 </li> 969 970 971
971 972 973 974 <li> 975 <details> 976 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 977 <a href="/men" class="link--text list-menu__item menu-drawer__menu-item"> 978 Men 979 </a> 980 981 982 983 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 984 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 985 </svg> 986 987 988 989 990 991 992 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 993 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 994 </svg> 995 996 997 998 </summary> 999 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1000 <div class="menu-drawer__inner-submenu"> 1001 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1002 1003 1004 1005 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 1006 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 1007 </svg> 1008 1009 1010 1011 Men 1012 </button> 1013 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1014 1015 1016 1017 <li> 1018 <a href="/collections/road-men" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1019 Road 1020 </a> 1021 </li> 1022 1023 1024 1025 1026 <li> 1027 <a href="/collections/race-men" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1028 Race 1029 </a> 1030 </li> 1031 1032 1033 1034 1035 <li> 1036 <a href="/collections/trail-hiking-men" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1037 Trail/Hiking 1038 </a> 1039 </li> 1040 1041 1042 1043 1044 <li> 1045 <a href="/collections/recovery-men" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1046 Recovery 1047 </a> 1048 </li> 1049 1050 1051 1052 1053 <li> 1054 <a href="/collections/gym-men" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1055 Gym 1056 </a> 1057 </li> 1058 1059 1060 1061 1062 <li> 1063 <a href="/collections/lifestyle-men" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1064 Lifestyle 1065 </a> 1066 </li> 1067 1068 1069 1070 </ul> 1071 </div> 1072 </div> 1073 </details> 1074 </li> 1075 1076 1077 1078 1079 1080 <li> 1081 <details> 1082 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 1083 <a href="/women" class="link--text list-menu__item menu-drawer__menu-item"> 1084 Women 1085 </a> 1086 1087 1088 1089 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 1090 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 1091 </svg> 1092 1093 1094 1095 1096 1097 1098 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1099 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1100 </svg> 1101 1102 1103 1104 </summary> 1105 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1106 <div class="menu-drawer__inner-submenu"> 1107 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1108 1109 1110 1111 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 1112 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 1113 </svg> 1114 1115 1116 1117 Women 1118 </button> 1119 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1120 1121 1122 1123 <li> 1124 <a href="/collections/road-women" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1125 Road 1126 </a> 1127 </li> 1128 1129 1130 1131 1132 <li> 1133 <a href="/collections/race-women" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1134 Race 1135 </a> 1136 </li> 1137 1138 1139 1140 1141 <li> 1142 <a href="/collections/trail-hiking-women" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1143 Trail/Hiking 1144 </a> 1145 </li> 1146 1147 1148 1149 1150 <li> 1151 <a href="/collections/gym-women" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1152 Gym 1153 </a> 1154 </li> 1155 1156 1157 1158 1159 <li> 1160 <a href="/collections/lifestyle-women" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1161 Lifestyle 1162 </a> 1163 </li> 1164 1165 1166 1167 </ul> 1168 </div> 1169 </div> 1170 </details> 1171 </li> 1172 1173 1174 1175 1176 1177 <li> 1178 <details> 1179 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 1180 <a href="/apparel" class="link--text list-menu__item menu-drawer__menu-item"> 1181 Apparel 1182 </a> 1183 1184 1185 1186 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 1187 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 1188 </svg> 1189 1190 1191 1192 1193 1194 1195 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1196 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1197 </svg> 1198 1199 1200 1201 </summary> 1202 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1203 <div class="menu-drawer__inner-submenu"> 1204 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1205 1206 1207 1208 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 1209 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 1210 </svg> 1211 1212 1213 1214 Apparel 1215 </button> 1216 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1217 1218 1219 1220 <li> 1221 <a href="/collections/apparel" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1222 All Apparel 1223 </a> 1224 </li> 1225 1226 1227 1228 1229 <li> 1230 <a href="/collections/accessories" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1231 Accessories 1232 </a> 1233 </li> 1234 1235 1236 1237 1238 <li> 1239 <a href="/collections/socks" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1240 Socks 1241 </a> 1242 </li> 1243 1244 1245 1246 1247 <li> 1248 <a href="/collections/tops" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1249 Tops 1250 </a> 1251 </li> 1252 1253 1254 1255 1256 <li> 1257 <a href="/collections/bottoms" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1258 Bottoms 1259 </a> 1260 </li> 1261 1262 1263 1264 </ul> 1265 </div> 1266 </div> 1267 </details> 1268 </li> 1269 1270 1271 1272 1273 1274 <li> 1275 <details> 1276 <summa
1276ry class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 1277 <a href="/runnershub" class="link--text list-menu__item menu-drawer__menu-item"> 1278 Runner's Hub 1279 </a> 1280 1281 1282 1283 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 1284 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 1285 </svg> 1286 1287 1288 1289 1290 1291 1292 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1293 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1294 </svg> 1295 1296 1297 1298 </summary> 1299 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1300 <div class="menu-drawer__inner-submenu"> 1301 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1302 1303 1304 1305 <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg"> 1306 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path> 1307 </svg> 1308 1309 1310 1311 Runner's Hub 1312 </button> 1313 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1314 1315 1316 1317 <li> 1318 <a href="/pages/about-us" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1319 About Us 1320 </a> 1321 </li> 1322 1323 1324 1325 1326 <li> 1327 <a href="/blogs/articles" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1328 Articles 1329 </a> 1330 </li> 1331 1332 1333 1334 1335 <li> 1336 <a href="/blogs/news" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1337 Community Runs 1338 </a> 1339 </li> 1340 1341 1342 1343 1344 <li> 1345 <a href="/collections/event" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1346 Events 1347 </a> 1348 </li> 1349 1350 1351 1352 1353 <li> 1354 <a href="/pages/faq" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1355 FAQ 1356 </a> 1357 </li> 1358 1359 1360 1361 </ul> 1362 </div> 1363 </div> 1364 </details> 1365 </li> 1366 1367 1368 1369 1370 <li> 1371 <a href="/collections/sale" class="menu-drawer__menu-item list-menu__item link link--text focus-inset"> 1372 Sale 1373 </a> 1374 </li> 1375 1376 1377 </ul> 1378 </nav> 1379 1380 <div class="menu-drawer__utility-links"> 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 <a href="/account/login" class="menu-drawer__account link link--text focus-inset h5"> 1391 1392 1393 1394 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-account " fill="none" viewBox="0 0 18 19"> 1395 <path fill-rule="evenodd" clip-rule="evenodd" d="M6 4.5a3 3 0 116 0 3 3 0 01-6 0zm3-4a4 4 0 100 8 4 4 0 000-8zm5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15zM9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.
13951-3.67-1.35-6.17-1.35z" fill="currentColor"></path> 1396 </svg> 1397 1398 1399 1400 1401 Log in 1402 </a> 1403 1404 <a href="/account/register" class="menu-drawer__account link link--text focus-inset h5"> 1405 1406 1407 1408 1409 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10"> 1410 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path> 1411 </svg> 1412 1413 1414 1415 Create account 1416 </a> 1417 1418 1419 1420 </div> 1421 </div> 1422 </div> 1423 </div> 1424 </details> 1425 </header-drawer> 1426 1427 1428 <a href="/" class="header__heading-link link link--text focus-inset" itemprop="url"> 1429 <img src="https://cdn.store-assets.com/s/1368538/f/17677622.png" class="header__heading-logo" alt="Sprint Running" loading="lazy" itemprop="logo"> 1430 </a> 1431 1432 <nav class="header__inline-menu"> 1433 <ul class="list-menu list-menu--inline" role="list"> 1434 1435 1436 1437 <li> 1438 <a href="/" class="header__menu-item header__menu-item list-menu__item link link--text focus-inset"> 1439 Home 1440 </a> 1441 </li> 1442 1443 1444 1445 1446 1447 <li> 1448 <details-disclosure> 1449 <details> 1450 <summary class="header__menu-item list-menu__item link focus-inset"> 1451 <a href="/no-direct" >Featured</a> 1452 1453 1454 1455 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1456 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1457 </svg> 1458 1459 1460 1461 </summary> 1462 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1463 1464 1465 1466 1467 1468 <li> 1469 <a href="/collections/new-arrival" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1470 New Arrivals 1471 </a> 1472 </li> 1473 1474 1475 1476 1477 1478 <li> 1479 <a href="/collections/bestsellers" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1480 Bestsellers 1481 </a> 1482 </li> 1483 1484 1485 </ul> 1486 </details> 1487 </details-disclosure> 1488 </li> 1489 1490 1491 1492 1493 1494 <li> 1495 <details-disclosure> 1496 <details> 1497 <summary class="header__menu-item list-menu__item link focus-inset"> 1498 <a href="/brands" >Brands</a> 1499 1500 1501 1502 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1503 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1504 </svg> 1505 1506 1507 1508 </summary> 1509 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1510 1511 1512 1513 1514 1515 <li> 1516 <a href="/collections/hoka" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1517 HOKA 1518 </a> 1519 </li> 1520 1521 1522 1523 1524 1525 <li> 1526 <a href="/collections/new-balance" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1527 NEW BALANCE 1528 </a> 1529 </li> 1530 1531 1532 1533 1534 1535 <li> 1536 <a href="/collections/on" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1537 ON 1538 </a> 1539 </li> 1540 1541 1542 1543 1544 1545 <li> 1546 <a href="/collections/saucony" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1547 SAUCONY 1548 </a> 1549 </li> 1550 1551 1552 1553 1554 1555 <li> 1556 <a href="/collections/norda" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1557 NORDA 1558 </a> 1559 </li> 1560 1561 1562 1563 1564 1565 <li> 1566 <a href="/collections/altra" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1567 ALTRA 1568 </a> 1569 </li> 1570 1571 1572 1573 1574 1575 <li> 1576 <a href="/collections/keen" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1577 KEEN 1578 </a> 1579 </li> 1580 1581 1582 1583 1584 1585 <li> 1586 <a href="/collections/teva" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1587 TEVA 1588 </a> 1589 </li> 1590 1591 1592 1593 1594 1595 <li> 1596 <a href="/collections/oofos" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1597 OOFOS 1598 </a> 1599 </li> 1600 1601 1602 1603 1604 1605 <li> 1606 <a href="/collections/telic" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1607 TELIC 1608 </a> 1609 </li> 1610 1611 1612 1613 1614 1615 <li> 1616 <a href="/collections/injinji" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1617 INJINJI 1618 </a> 1619 </li> 1620 1621 1622 1623 1624 1625 <li> 1626 <a href="/collections/feetures" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1627 FEETURES 1628 </a> 1629 </li> 1630 1631 1632 1633 1634 1635 <li> 1636 <a href="/collections/ciele" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1637 CIELE 1638 </a> 1639 </li> 1640 1641 1642 1643 1644 1645 <li> 1646 <a href="/collections/rabbit" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1647 RABBIT 1648 </a> 1649 </li> 1650 1651 1652 </ul> 1653 </details> 1654 </details-disclosure> 1655 </li> 1656 1657 1658 1659 1660 1661 <li> 1662 <details-disclosure> 1663 <details> 1664 <summary class="header__menu-item list-menu__item link focus-inset"> 1665 <a href="/men" >Men</a> 1666 1667 1668 1669 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1670 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1671 </svg> 1672 1673 1674 1675 </summary> 1676 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1677 1678 1679 1680 1681 1682 <li> 1683 <a href="/collections/road-men" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1684 Road 1685 </a> 1686 </li> 1687 1688 1689 1690 1691 1692 <li> 1693 <a href="/collections/race-men" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1694 Race 1695 </a> 1696 </li> 1697 1698 1699 1700 1701 1702 <li> 1703 <a href="/collections/trail-hiking-men" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1704 Trail/Hiking 1705 </a> 1706 </li> 1707 1708 1709 1710 1711 1712 <li> 1713 <a href="/collections/recovery-men" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1714 Recovery 1715 </a> 1716 </li> 1717 1718 1719 1720 1721 1722 <li> 1723 <a href="/collections/gym-men" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1724 Gym 1725 </a> 1726 </li> 1727 1728 1729 1730 1731 1732 <li> 1733 <a href="/collections/lifestyle-men" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1734 Lifestyle 1735 </a> 1736 </li> 1737 1738 1739 </ul> 1740 </details> 1741 </details-disclosure> 1742 </li> 1743 1744 1745 1746 1747 1748 <li> 1749 <details-disclosure> 1750 <details> 1751 <summary class="header__menu-item list-menu__item link focus-inset"> 1752 <a href="/women" >Women</a> 1753 1754 1755 1756 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1757 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1758 </svg> 1759 1760 1761 1762 </summary> 1763 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1764 1765 1766 1767 1768 1769 <li> 1770 <a href="/collections/road-women" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1771 Road 1772 </a> 1773 </li> 1774 1775 1776 1777 1778 1779 <li> 1780 <a href="/collections/race-women" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1781 Race 1782 </a> 1783 </li> 1784 1785 1786 1787 1788 1789 <li> 1790 <a href="/collections/trail-hiking-women" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1791 Trail/Hiking 1792 </a> 1793 </li> 1794 1795 1796 1797
1797 1798 1799 <li> 1800 <a href="/collections/gym-women" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1801 Gym 1802 </a> 1803 </li> 1804 1805 1806 1807 1808 1809 <li> 1810 <a href="/collections/lifestyle-women" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1811 Lifestyle 1812 </a> 1813 </li> 1814 1815 1816 </ul> 1817 </details> 1818 </details-disclosure> 1819 </li> 1820 1821 1822 1823 1824 1825 <li> 1826 <details-disclosure> 1827 <details> 1828 <summary class="header__menu-item list-menu__item link focus-inset"> 1829 <a href="/apparel" >Apparel</a> 1830 1831 1832 1833 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1834 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1835 </svg> 1836 1837 1838 1839 </summary> 1840 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1841 1842 1843 1844 1845 1846 <li> 1847 <a href="/collections/apparel" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1848 All Apparel 1849 </a> 1850 </li> 1851 1852 1853 1854 1855 1856 <li> 1857 <a href="/collections/accessories" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1858 Accessories 1859 </a> 1860 </li> 1861 1862 1863 1864 1865 1866 <li> 1867 <a href="/collections/socks" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1868 Socks 1869 </a> 1870 </li> 1871 1872 1873 1874 1875 1876 <li> 1877 <a href="/collections/tops" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1878 Tops 1879 </a> 1880 </li> 1881 1882 1883 1884 1885 1886 <li> 1887 <a href="/collections/bottoms" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1888 Bottoms 1889 </a> 1890 </li> 1891 1892 1893 </ul> 1894 </details> 1895 </details-disclosure> 1896 </li> 1897 1898 1899 1900 1901 1902 <li> 1903 <details-disclosure> 1904 <details> 1905 <summary class="header__menu-item list-menu__item link focus-inset"> 1906 <a href="/runnershub" >Runner's Hub</a> 1907 1908 1909 1910 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1911 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1912 </svg> 1913 1914 1915 1916 </summary> 1917 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1918 1919 1920 1921 1922 1923 <li> 1924 <a href="/pages/about-us" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1925 About Us 1926 </a> 1927 </li> 1928 1929 1930 1931 1932 1933 <li> 1934 <a href="/blogs/articles" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1935 Articles 1936 </a> 1937 </li> 1938 1939 1940 1941 1942 1943 <li> 1944 <a href="/blogs/news" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1945 Community Runs 1946 </a> 1947 </li> 1948 1949 1950 1951 1952 1953 <li> 1954 <a href="/collections/event" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1955 Events 1956 </a> 1957 </li> 1958 1959 1960 1961 1962 1963 <li> 1964 <a href="/pages/faq" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1965 FAQ 1966 </a> 1967 </li> 1968 1969 1970 </ul> 1971 </details> 1972 </details-disclosure> 1973 </li> 1974 1975 1976 1977 1978 <li> 1979 <a href="/collections/sale" class="header__menu-item header__menu-item list-menu__item link link--text focus-inset"> 1980 Sale 1981 </a> 1982 </li> 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 </ul> 1996 </nav> 1997 <div class="header__icons"> 1998 <details-modal class="header__search"> 1999 <details> 2000 <summary class="header__icon header__icon--search header__icon--summary link link--text focus-inset modal__toggle" aria-haspopup="dialog" aria-label="Search">
2001 <span> 2002 <svg class="modal__toggle-open icon icon-search" aria-hidden="true" focusable="false" role="presentation"> 2003 <use href="#icon-search"> 2004 </svg> 2005 <svg class="modal__toggle-close icon icon-close" aria-hidden="true" focusable="false" role="presentation"> 2006 <use href="#icon-close"> 2007 </svg> 2008 </span> 2009 </summary> 2010 <div class="search-modal modal__content" role="dialog" aria-modal="true" aria-label="Search"> 2011 <div class="modal-overlay"></div> 2012 <div class="search-modal__content" tabindex="-1"> 2013 <form action="/search" method="get" role="search" class="search search-modal__form"> 2014 <div class="field"> 2015 <input class="search__input field__input" 2016 id="Search-In-Modal" 2017 type="search" 2018 name="q" 2019 value="" 2020 placeholder="Search" 2021 autocomplete="off" 2022 > 2023 <label class="field__label" for="Search-In-Modal">Search</label> 2024 <div class="dropdown" id="searchDropdown"></div> 2025 <input type="hidden" name="search_history" class="hidden_search_history"> 2026 <input type="hidden" name="options[prefix]" value="last"> 2027 <button class="search__button field__button" aria-label="Search"> 2028 <svg class="icon icon-search" aria-hidden="true" focusable="false" role="presentation"> 2029 <use href="#icon-search"> 2030 </svg> 2031 </button> 2032 </div> 2033 </form> 2034 <button type="button" class="search-modal__close-button modal__close-button link link--text focus-inset" aria-label="accessibility.close"> 2035 <svg class="icon icon-close" aria-hidden="true" focusable="false" role="presentation"> 2036 <use href="#icon-close"> 2037 </svg> 2038 </button> 2039 </div> 2040 </div> 2041 </details> 2042 </details-modal> 2043 2044 2045 2046 <div class="header__icon header__icon--account link link--text focus-inset small-hide medium-hide" style="position: relative;"> 2047 <a href="/account/login" class="header__icon link link--text focus-inset p-2"> 2048 2049 2050 2051 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-account " fill="none" viewBox="0 0 18 19"> 2052 <path fill-rule="evenodd" clip-rule="evenodd" d="M6 4.5a3 3 0 116 0 3 3 0 01-6 0zm3-4a4 4 0 100 8 4 4 0 000-8zm5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15zM9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35z" fill="currentColor"></path> 2053 </svg> 2054 2055 2056 2057 </a> 2058 2059 <!-- Referral Notification Popup for Desktop --> 2060 <div id="referralNotification" class="referral-notification" style="display: none;"> 2061 <button class="close-btn" onclick="dismissReferralNotification()">×</button> 2062 <div style="text-align: center; margin-bottom: 16px;"> 2063 <div style="width: 100px; height: 100px; margin: 0 auto;"> 2064 <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg"> 2065 </div> 2066 </div> 2067 <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;"> 2068 Your friend gifted you credit! Sign up now to redeem. 2069 </p> 2070 <div style="text-align: center;"> 2071 <button class="btn" onclick="goToSignupPage()" style="width: 100%;"> 2072 Sign Up 2073 </button> 2074 </div> 2075 </div> 2076 </div> 2077 2078 2079 2080 <a href="/cart" class="header__icon header__icon--cart link link--text focus-inset" id="cart-icon-bubble"> 2081 2082 2083 2084 <svg class="icon icon-cart-empty " aria-hidden="true" focusable="false" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none"> 2085 <path d="m15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.78-11.61zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1 -9.5 0zm8.5 0h-7.5v.63a3.7
20855 3.75 0 1 0 7.5 0z" fill="currentColor" fill-rule="evenodd"></path> 2086 </svg> 2087 2088 2089 2090 <div class="cart-count-bubble hidden"> 2091 <span aria-hidden="true" class="js-content-cart-count">0</span> 2092 </div> 2093 </a> 2094 2095 2096 2097 <!-- Referral Notification Modal for Mobile --> 2098 <details-modal class="referral-modal" id="referralMobileModal"> 2099 <details> 2100 <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;"> 2101 </summary> 2102 <div class="modal-overlay referral-modal-overlay"></div> 2103 <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification"> 2104 <div class="referral-modal__content"> 2105 <button type="button" class="modal__close-button" aria-label="Close" onclick="closeMobileReferralModal()" style="position: absolute; top: 16px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer;"> 2106 × 2107 </button> 2108 2109 <div style="margin-bottom: 24px;"> 2110 <div style="width: 120px; height: 120px; margin: 0 auto 20px;"> 2111 <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;"> 2112 </div> 2113 </div> 2114 2115 <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;"> 2116 Your friend gifted you credit! Sign up now to redeem. 2117 </p> 2118 2119 <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%;"> 2120 Sign Up 2121 </button> 2122 </div> 2123 </div> 2124 </details> 2125 </details-modal> 2126 2127 2128 </div> 2129 </header> 2130 </sticky-header> 2131 2132<cart-notification> 2133 <div class="cart-notification-wrapper page-width color-background-1"> 2134 <div id="cart-notification" class="cart-notification focus-inset" aria-modal="true" aria-label="Added to cart" role="dialog" tabindex="-1"> 2135 <div class="cart-notification__header"> 2136 <h2 class="cart-notification__heading caption-large"> 2137 2138 2139 <svg class="icon icon-checkmark color-foreground-text " aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 9" fill="none"> 2140 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.35.643a.5.5 0 01.006.707l-6.77 6.886a.5.5 0 01-.719-.006L.638 4.845a.5.5 0 11.724-.69l2.872 3.011 6.41-6.517a.5.5 0 01.707-.006h-.001z" fill="currentColor"></path> 2141 </svg> 2142 2143 2144 Added to cart</h2> 2145 <button type="button" class="cart-notification__close modal__close-button link link--text focus-inset" aria-label="accessibility.close"> 2146 2147 2148 2149 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-close " fill="none" viewBox="0 0 18 17"> 2150 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 2151 </path> 2152 </svg> 2153 2154 2155 2156 </button> 2157 </div> 2158 <div id="cart-notification-product" class="cart-notification-product"></div> 2159 <div class="cart-notification__links"> 2160 <a href="/cart" id="cart-notification-button" class="button button--secondary button--full-width">View cart (<span class="js-content-cart-count">0</span>)</a> 2161 <form action="/cart" method="post" id="cart-notification-form"> 2162 <input type="hidden" name="_token" value="Yk1o0bjD68CjvN1rBe0fhkVImyeAwL0LdRoXVyGb"> 2163 <input type="hidden" name="current_currency" value=""> 2164 <button class="button button--primary button--full-width" name="checkout" value="true">Checkout</button> 2165 </form> 2166 <button type="button" class="link button-label">Continue shopping</button> 2167 </div> 2168 </div> 2169 </div> 2170</cart-notification> 2171<style> 2172 .cart-notification { 2173 display: none; 2174 } 2175</style>
2176<script> 2177document.getElementById('cart-notification-form').addEventListener('submit',(event)=>{ 2178 if(event.submitter) event.submitter.classList.add('loading'); 2179}) 2180 2181</script>
2181 2182 2183</div> 2184 2185
2186<script> 2187 2188 class StickyHeader extends HTMLElement { 2189 constructor() { 2190 super(); 2191 } 2192 2193 connectedCallback() { 2194 this.header = document.getElementById('easystore-section-header'); 2195 this.headerBounds = {}; 2196 this.currentScrollTop = 0; 2197 this.preventReveal = false; 2198 2199 this.onScrollHandler = this.onScroll.bind(this); 2200 this.hideHeaderOnScrollUp = () => this.preventReveal = true; 2201 2202 this.addEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp); 2203 window.addEventListener('scroll', this.onScrollHandler, false); 2204 2205 this.createObserver(); 2206 } 2207 2208 disconnectedCallback() { 2209 this.removeEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp); 2210 window.removeEventListener('scroll', this.onScrollHandler); 2211 } 2212 2213 createObserver() { 2214 let observer = new IntersectionObserver((entries, observer) => { 2215 this.headerBounds = entries[0].intersectionRect; 2216 observer.disconnect(); 2217 }); 2218 2219 observer.observe(this.header); 2220 } 2221 2222 onScroll() { 2223 const scrollTop = window.pageYOffset || document.documentElement.scrollTop; 2224 2225 if (scrollTop > this.currentScrollTop && scrollTop > this.headerBounds.bottom) { 2226 requestAnimationFrame(this.hide.bind(this)); 2227 } else if (scrollTop < this.currentScrollTop && scrollTop > this.headerBounds.bottom) { 2228 if (!this.preventReveal) { 2229 requestAnimationFrame(this.reveal.bind(this)); 2230 } else { 2231 window.clearTimeout(this.isScrolling); 2232 2233 this.isScrolling = setTimeout(() => { 2234 this.preventReveal = false; 2235 }, 66); 2236 2237 requestAnimationFrame(this.hide.bind(this)); 2238 } 2239 } else if (scrollTop <= this.headerBounds.top) { 2240 requestAnimationFrame(this.reset.bind(this)); 2241 } 2242 2243 2244 this.currentScrollTop = scrollTop; 2245 } 2246 2247 hide() { 2248 this.header.classList.add('easystore-section-header-hidden', 'easystore-section-header-sticky'); 2249 this.closeMenuDisclosure(); 2250 // this.closeSearchModal(); 2251 } 2252 2253 reveal() { 2254 this.header.classList.add('easystore-section-header-sticky', 'animate'); 2255 this.header.classList.remove('easystore-section-header-hidden'); 2256 } 2257 2258 reset() { 2259 this.header.classList.remove('easystore-section-header-hidden', 'easystore-section-header-sticky', 'animate'); 2260 } 2261 2262 closeMenuDisclosure() { 2263 this.disclosures = this.disclosures || this.header.querySelectorAll('details-disclosure'); 2264 this.disclosures.forEach(disclosure => disclosure.close()); 2265 } 2266 2267 // closeSearchModal() { 2268 // this.searchModal = this.searchModal || this.header.querySelector('details-modal'); 2269 // this.searchModal.close(false); 2270 // } 2271 } 2272 2273 customElements.define('sticky-header', StickyHeader); 2274 2275 2276 class DetailsDisclosure extends HTMLElement{ 2277 constructor() { 2278 super(); 2279 this.mainDetailsToggle = this.querySelector('details'); 2280 // this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this)); 2281 this.mainDetailsToggle.addEventListener('mouseover', this.open.bind(this)); 2282 this.mainDetailsToggle.addEventListener('mouseleave', this.close.bind(this)); 2283 } 2284 2285 onFocusOut() { 2286 setTimeout(() => { 2287 if (!this.contains(document.activeElement)) this.close(); 2288 }) 2289 } 2290 2291 open() { 2292 this.mainDetailsToggle.setAttribute('open',1) 2293 } 2294 2295 close() { 2296 this.mainDetailsToggle.removeAttribute('open') 2297 } 2298 } 2299 2300 customElements.define('details-disclosure', DetailsDisclosure); 2301 2302 function clearAll() { 2303 localStorage.removeItem('searchHistory'); 2304 2305 var customer = ""; 2306 if(customer) { 2307 // Your logic to clear all data or call an endpoint 2308 fetch('/account/search_histories', { 2309 method: 'DELETE', 2310 headers: { 2311 "Content-Type": "application/json", 2312 "X-Requested-With": "XMLHttpRequest" 2313 }, 2314 body: JSON.stringify({ 2315 _token: "Yk1o0bjD68CjvN1rBe0fhkVImyeAwL0LdRoXVyGb" 2316 }), 2317 }) 2318 .then(response => response.json()) 2319 } 2320 } 2321 // End - delete search history from local storage 2322 2323 // search history dropdown 2324 var searchInputs = document.querySelectorAll('.search__input'); 2325 2326 if(searchInputs.length > 0) { 2327
2328 searchInputs.forEach((searchInput)=> { 2329 2330 searchInput.addEventListener('focus', function() { 2331 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 2332 searchDropdown.innerHTML = ''; // Clear existing items 2333 2334 // retrieve data from local storage 2335 var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || []; 2336 2337 // Convert JSON to string 2338 var search_history_json = JSON.stringify(searchHistoryData); 2339 2340 // Set the value of the hidden input 2341 searchInput.closest('form').querySelector(".hidden_search_history").value = search_history_json; 2342 2343 // create dropdown items 2344 var clearAllItem = document.createElement('div'); 2345 clearAllItem.className = 'dropdown-item clear-all'; 2346 clearAllItem.textContent = 'Clear'; 2347 clearAllItem.addEventListener('click', function() { 2348 clearAll(); 2349 searchDropdown.style.display = 'none'; 2350 searchInput.classList.remove('is-focus'); 2351 }); 2352 searchDropdown.appendChild(clearAllItem); 2353 2354 // create dropdown items 2355 searchHistoryData.forEach(function(item) { 2356 var dropdownItem = document.createElement('div'); 2357 dropdownItem.className = 'dropdown-item'; 2358 dropdownItem.textContent = item.term; 2359 dropdownItem.addEventListener('click', function() { 2360 searchInput.value = item.term; 2361 searchInput.closest('form').submit(); 2362 searchDropdown.style.display = 'none'; 2363 }); 2364 searchDropdown.appendChild(dropdownItem); 2365 }); 2366 2367 if(searchHistoryData.length > 0){ 2368 // display the dropdown 2369 searchInput.classList.add('is-focus'); 2370 document.body.classList.add('search-input-focus'); 2371 searchDropdown.style.display = 'block'; 2372 } 2373 }); 2374 2375 searchInput.addEventListener("focusout", (event) => { 2376 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 2377 searchInput.classList.remove('is-focus'); 2378 searchDropdown.classList.add('transparent'); 2379 setTimeout(()=>{ 2380 searchDropdown.style.display = 'none'; 2381 searchDropdown.classList.remove('transparent'); 2382 document.body.classList.remove('search-input-focus'); 2383 }, 400); 2384 }); 2385 }) 2386 } 2387 // End - search history dropdown 2388 2389 // referral notification popup 2390 const referralMessageTemplate = 'Your friend gifted you __CURRENCY_CODE__ __CREDIT_AMOUNT__ credit! Sign up now to redeem.'; 2391 const shopCurrency = 'RM'; 2392 2393 function getCookie(name) { 2394 const value = `; ${document.cookie}`; 2395 const parts = value.split(`; ${name}=`); 2396 if (parts.length === 2) return parts.pop().split(';').shift(); 2397 return null; 2398 } 2399 2400 function removeCookie(name) { 2401 document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`; 2402 } 2403 2404 function showReferralNotification() { 2405 const referralCode = getCookie('customer_referral_code'); 2406 2407 2408 const customerReferralCode = null; 2409 2410 2411 const activeReferralCode = referralCode || customerReferralCode; 2412 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2413 2414 if (referralData.timestamp && referralData.expirationDays) { 2415 const expirationTime = referralData.timestamp + (referralData.expirationDays * 24 * 60 * 60 * 1000); 2416 if (Date.now() > expirationTime) { 2417 localStorage.removeItem('referral_notification_data'); 2418 return; 2419 } 2420 } 2421 2422 if (referralData.dismissed) return; 2423 2424 if (activeReferralCode) { 2425 if (referralData.creditAmount) { 2426 displayReferralNotification(referralData.creditAmount); 2427 } else { 2428 fetchReferralCampaignData(activeReferralCode); 2429 } 2430 } 2431 } 2432 2433 function fetchReferralCampaignData(referralCode) { 2434 fetch(`/customer/referral_program/campaigns/${referralCode}`) 2435 .then(response => { 2436 if (!response.ok) { 2437 throw new Error('Network response was not ok'); 2438 } 2439 return response.json(); 2440 }) 2441 .then(data => { 2442 let refereeCreditAmount = null; 2443 if (data.data.campaign && data.data.campaign.referral_rules) { 2444 const refereeRule = data.data.campaign.referral_rules.find(rule => 2445 rule.target_type === 'referee' && 2446 rule.event_name === 'customer/create' && 2447 rule.entitlement && 2448 rule.entitlement.type === 'credit' 2449 ); 2450 2451 if (refereeRule) { 2452 refereeCreditAmount = refereeRule.entitlement.amount; 2453 } 2454 } 2455 2456 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2457 referralData.creditAmount = refereeCreditAmount; 2458 referralData.dismissed = referralData.dismissed || false; 2459 referralData.timestamp = Date.now(); 2460 referralData.expirationDays = 3; 2461 localStorage.setItem('referral_notification_data', JSON.stringify(referralData)); 2462 2463 displayReferralNotification(refereeCreditAmount); 2464 }) 2465 .catch(error => { 2466 removeCookie('customer_referral_code'); 2467 }); 2468 } 2469 2470 function displayReferralNotification(creditAmount = null) { 2471 const isMobile = innerWidth <= 749; 2472 2473 if (isMobile) { 2474 const mobileModal = document.querySelector('#referralMobileModal details'); 2475 const mobileMessageElement = document.getElementById('referralSignupMessageMobile'); 2476 2477 if (mobileModal && mobileMessageElement) { 2478 if (creditAmount) {
2479 const finalMessage = referralMessageTemplate 2480 .replace('__CREDIT_AMOUNT__', creditAmount) 2481 .replace('__CURRENCY_CODE__', shopCurrency); 2482 2483 mobileMessageElement.textContent = finalMessage; 2484 } 2485 2486 mobileModal.setAttribute('open', ''); 2487 } 2488 } else { 2489 const notification = document.getElementById('referralNotification'); 2490 2491 if (notification) { 2492 if (creditAmount) { 2493 const messageElement = document.getElementById('referralSignupMessage'); 2494 if (messageElement) { 2495 const finalMessage = referralMessageTemplate 2496 .replace('__CREDIT_AMOUNT__', creditAmount) 2497 .replace('__CURRENCY_CODE__', shopCurrency); 2498 2499 messageElement.textContent = finalMessage; 2500 } 2501 } 2502 2503 notification.style.display = 'block'; 2504 } 2505 } 2506 } 2507 2508 showReferralNotification(); 2509 2510 addEventListener('beforeunload', function() { 2511 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2512 2513 if (referralData.creditAmount !== undefined) { 2514 referralData.creditAmount = null; 2515 localStorage.setItem('referral_notification_data', JSON.stringify(referralData)); 2516 } 2517 }); 2518 2519 function closeReferralNotification() { 2520 const notification = document.getElementById('referralNotification'); 2521 if (notification) { 2522 notification.style.display = 'none'; 2523 } 2524 } 2525 2526 function dismissReferralNotification() { 2527 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2528 2529 referralData.dismissed = true; 2530 referralData.timestamp = referralData.timestamp || Date.now(); 2531 referralData.expirationDays = referralData.expirationDays || 3; 2532 2533 localStorage.setItem('referral_notification_data', JSON.stringify(referralData)); 2534 2535 closeReferralNotification(); 2536 } 2537 2538 function goToSignupPage() { 2539 location.href = '/account/register'; 2540 dismissReferralNotification(); 2541 } 2542 2543 function closeMobileReferralModal() { 2544 const mobileModal = document.querySelector('#referralMobileModal details'); 2545 if (mobileModal) { 2546 mobileModal.removeAttribute('open'); 2547 } 2548 2549 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2550 referralData.dismissed = true; 2551 referralData.timestamp = referralData.timestamp || Date.now(); 2552 referralData.expirationDays = referralData.expirationDays || 3; 2553 localStorage.setItem('referral_notification_data', JSON.stringify(referralData)); 2554 } 2555 2556 function goToSignupPageFromMobile() { 2557 location.href = '/account/register'; 2558 closeMobileReferralModal(); 2559 } 2560 // End - referral notification popup 2561</script>
2561 2562 2563 2564 <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1"> 2565 2566 <link rel="preload" href="https://store-themes.easystore.co/1368538/themes/55058/assets/blog.css?t=1787901486" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2567<link rel="preload" href="https://store-themes.easystore.co/1368538/themes/55058/assets/component-card.css?t=1787901486" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2568 2569<div class="main-blog page-width"> 2570 <h1 class="title--primary"> 2571 2572 Articles 2573 2574 </h1> 2575 <div class="blog-articles"> 2576 2577 <div class="blog-articles__article article"> 2578 <article class="article-card "> 2579 <a href="/blogs/articles/running-resolutions-you-can-keep-past-february-sprint-my" class="article-content motion-reduce"> 2580 2581 <div class="article-card__image-wrapper"> 2582 <div class="article-card__image media media--landscape"> 2583 <img src="https://cdn.store-assets.com/s/1368538/f/16528000.jpeg" alt="Running Resolutions You Can Keep Past February | Sprint MY" class="motion-reduce"> 2584 </div> 2585 </div> 2586 2587 <div class="article-card__info"> 2588 <header class="article-card__header"> 2589 <h2 class="article-card__title"> 2590 Running Resolutions You Can Keep Past February | Sprint MY 2591 </h2> 2592 <span class="circle-divider caption-with-letter-spacing"> 2593 <time datetime="2026-01-09"> Jan 09, 26</time> 2594 </span> 2595 2596 <span class="caption-with-letter-spacing"> 2597 Sprint 2598 </span> 2599 2600 </header> 2601 <p class="article-card__excerpt rte-width break">Struggling to stay consistent with running after January? Learn how to build running resolutions that last beyond February â realistic, sustainable, and pressure-free. </p> 2602 </div> 2603 </a> 2604 </article> 2605 </div> 2606 2607 <div class="blog-articles__article article"> 2608 <article class="article-card "> 2609 <a href="/blogs/articles/why-the-new-year-is-the-best-time-to-rethink-your-relationship-with-running-sprintmy" class="article-content motion-reduce"> 2610 2611 <div class="article-card__image-wrapper"> 2612 <div class="article-card__image media media--landscape"> 2613 <img src="https://cdn.store-assets.com/s/1368538/f/16505288.jpeg" alt="Why the New Year Is the Best Time to Rethink Your Relationship With Running | SprintMY" class="motion-reduce"> 2614 </div> 2615 </div> 2616 2617 <div class="article-card__info"> 2618 <header class="article-card__header"> 2619 <h2 class="article-card__title"> 2620 Why the New Year Is the Best Time to Rethink Your Relationship With Running | SprintMY 2621 </h2> 2622 <span class="circle-divider caption-with-letter-spacing"> 2623 <time datetime="2026-01-05"> Jan 05, 26</time> 2624 </span> 2625 2626 <span class="caption-with-letter-spacing"> 2627 Sprint 2628 </span> 2629 2630 </header> 2631 <p class="article-card__excerpt rte-width break">The New Year often arrives with a quiet question rather than a loud resolution: How do I want running to fit into my life this year? Not faster. Not longer.... </p> 2632 </div> 2633 </a> 2634 </article> 2635 </div> 2636 2637 <div class="blog-articles__article article"> 2638 <article class="article-card ">
2639 <a href="/blogs/articles/how-to-set-realistic-running-goals-for-the-new-year-without-feeling-guilty-sprint-my" class="article-content motion-reduce"> 2640 2641 <div class="article-card__image-wrapper"> 2642 <div class="article-card__image media media--landscape"> 2643 <img src="https://cdn.store-assets.com/s/1368538/f/16486195.jpeg" alt="How to Set Realistic Running Goals for the New Year (Without Feeling Guilty) | Sprint MY" class="motion-reduce"> 2644 </div> 2645 </div> 2646 2647 <div class="article-card__info"> 2648 <header class="article-card__header"> 2649 <h2 class="article-card__title"> 2650 How to Set Realistic Running Goals for the New Year (Without Feeling Guilty) | Sprint MY 2651 </h2> 2652 <span class="circle-divider caption-with-letter-spacing"> 2653 <time datetime="2025-12-31"> Dec 31, 25</time> 2654 </span> 2655 2656 <span class="caption-with-letter-spacing"> 2657 Sprint 2658 </span> 2659 2660 </header> 2661 <p class="article-card__excerpt rte-width break">Learn how to set realistic running goals that fit your lifestyle, build consistency, and keep you motivated â without pressure, guilt, or burnout. </p> 2662 </div> 2663 </a> 2664 </article> 2665 </div> 2666 2667 <div class="blog-articles__article article"> 2668 <article class="article-card "> 2669 <a href="/blogs/articles/how-to-wrap-up-your-running-year-and-prepare-for-a-stronger-new-season-sprint-my" class="article-content motion-reduce"> 2670 2671 <div class="article-card__image-wrapper"> 2672 <div class="article-card__image media media--landscape"> 2673 <img src="https://cdn.store-assets.com/s/1368538/f/16480686.jpeg" alt="How to Wrap Up Your Running Year and Prepare for a Stronger New Season | Sprint MY" class="motion-reduce"> 2674 </div> 2675 </div> 2676 2677 <div class="article-card__info"> 2678 <header class="article-card__header"> 2679 <h2 class="article-card__title"> 2680 How to Wrap Up Your Running Year and Prepare for a Stronger New Season | Sprint MY 2681 </h2> 2682 <span class="circle-divider caption-with-letter-spacing"> 2683 <time datetime="2025-12-29"> Dec 29, 25</time> 2684 </span> 2685 2686 <span class="caption-with-letter-spacing"> 2687 Sprint 2688 </span> 2689 2690 </header> 2691 <p class="article-card__excerpt rte-width break">Learn how to review your running year, reflect on progress, avoid burnout, and set yourself up for a stronger, more consistent running season ahead â without pressure or guilt. </p> 2692 </div> 2693 </a> 2694 </article> 2695 </div> 2696 2697 <div class="blog-articles__article article"> 2698 <article class="article-card "> 2699 <a href="/blogs/articles/december-runs-slower-shorter-and-still-worth-it-sprint-my" class="article-content motion-reduce"> 2700 2701 <div class="article-card__image-wrapper"> 2702 <div class="article-card__image media media--landscape"> 2703 <img src="https://cdn.store-assets.com/s/1368538/f/16450665.jpeg" alt="December Runs: Slower, Shorter, and Still Worth It | Sprint MY" class="motion-reduce"> 2704 </div> 2705 </div> 2706 2707 <div class="article-card__info"> 2708 <header class="article-card__header"> 2709 <h2 class="article-card__title"> 2710 December Runs: Slower, Shorter, and Still Worth It | Sprint MY 2711 </h2>
2712 <span class="circle-divider caption-with-letter-spacing"> 2713 <time datetime="2025-12-22"> Dec 22, 25</time> 2714 </span> 2715 2716 <span class="caption-with-letter-spacing"> 2717 Sprint 2718 </span> 2719 2720 </header> 2721 <p class="article-card__excerpt rte-width break">December runs often look different from the rest of the year. Distances seem shorter, paces slow down, and on some days, just getting out the door feels like a win.... </p> 2722 </div> 2723 </a> 2724 </article> 2725 </div> 2726 2727 <div class="blog-articles__article article"> 2728 <article class="article-card "> 2729 <a href="/blogs/articles/running-smarter-how-to-balance-training-rest-and-progress-without-overdoing-it-sprint-my" class="article-content motion-reduce"> 2730 2731 <div class="article-card__image-wrapper"> 2732 <div class="article-card__image media media--landscape"> 2733 <img src="https://cdn.store-assets.com/s/1368538/f/16432083.jpeg" alt="Running Smarter: How to Balance Training, Rest, and Progress Without Overdoing It | Sprint MY" class="motion-reduce"> 2734 </div> 2735 </div> 2736 2737 <div class="article-card__info"> 2738 <header class="article-card__header"> 2739 <h2 class="article-card__title"> 2740 Running Smarter: How to Balance Training, Rest, and Progress Without Overdoing It | Sprint MY 2741 </h2> 2742 <span class="circle-divider caption-with-letter-spacing"> 2743 <time datetime="2025-12-18"> Dec 18, 25</time> 2744 </span> 2745 2746 <span class="caption-with-letter-spacing"> 2747 Sprint 2748 </span> 2749 2750 </header> 2751 <p class="article-card__excerpt rte-width break">Discover how to run smarter by balancing training and rest. Practical advice for sustainable progress and injury-free running in Malaysia. </p> 2752 </div> 2753 </a> 2754 </article> 2755 </div> 2756 2757 <div class="blog-articles__article article"> 2758 <article class="article-card "> 2759 <a href="/blogs/articles/how-to-stay-consistent-with-running-without-burning-out-sprint-my" class="article-content motion-reduce"> 2760 2761 <div class="article-card__image-wrapper"> 2762 <div class="article-card__image media media--landscape"> 2763 <img src="https://cdn.store-assets.com/s/1368538/f/16412889.jpeg" alt="How to Stay Consistent With Running Without Burning Out | Sprint MY" class="motion-reduce"> 2764 </div> 2765 </div> 2766 2767 <div class="article-card__info"> 2768 <header class="article-card__header"> 2769 <h2 class="article-card__title"> 2770 How to Stay Consistent With Running Without Burning Out | Sprint MY 2771 </h2> 2772 <span class="circle-divider caption-with-letter-spacing"> 2773 <time datetime="2025-12-15"> Dec 15, 25</time> 2774 </span> 2775 2776 <span class="caption-with-letter-spacing"> 2777 Sprint 2778 </span> 2779 2780 </header> 2781 <p class="article-card__excerpt rte-width break">It sounds easy to stay consistent with running on paper. Lace up, head out, repeat. But in reality, many runners find themselves starting strong, only to lose motivation weeks later... </p> 2782 </div> 2783 </a> 2784 </article> 2785 </div> 2786 2787 <div class="blog-articles__article article"> 2788 <article class="article-card "> 2789 <a href="/blogs/articles/why-your-first-1km-always-feels-the-hardest-and-how-to-warm-up-smarter-sprint-my" class="article-content motion-reduce"> 2790 2791 <div class="article-card__image-wrapper"> 2792 <div class="article-card__image media media--landscape"> 2793 <img src="https://cdn.store-assets.com/s/1368538/f/16399717.jpeg" alt="Why Your First 1KM Always Feels the Hardest â And How to Warm Up Smarter | Sprint MY" class="motion-reduce"> 2794 </div> 2795 </div> 2796 2797 <div class="article-card__info"> 2798 <header class="article-card__header"> 2799 <h2 class="article-card__title"> 2800 Why Your First 1KM Always Feels the Hardest â And How to Warm Up Smarter | Sprint MY 2801 </h2>
2802 <span class="circle-divider caption-with-letter-spacing"> 2803 <time datetime="2025-12-12"> Dec 12, 25</time> 2804 </span> 2805 2806 <span class="caption-with-letter-spacing"> 2807 Sprint 2808 </span> 2809 2810 </header> 2811 <p class="article-card__excerpt rte-width break">If the first kilometre of every run feels like a battle, youâre not alone. Even experienced runners say the early part of a run is the toughest. It takes your... </p> 2812 </div> 2813 </a> 2814 </article> 2815 </div> 2816 2817 <div class="blog-articles__article article"> 2818 <article class="article-card "> 2819 <a href="/blogs/articles/your-first-5km-run-what-to-expect-beginner-tips-that-actually-help-sprint-my" class="article-content motion-reduce"> 2820 2821 <div class="article-card__image-wrapper"> 2822 <div class="article-card__image media media--landscape"> 2823 <img src="https://cdn.store-assets.com/s/1368538/f/16338394.jpeg" alt="Your First 5KM Run: What to Expect & Beginner Tips That Actually Help | Sprint MY" class="motion-reduce"> 2824 </div> 2825 </div> 2826 2827 <div class="article-card__info"> 2828 <header class="article-card__header"> 2829 <h2 class="article-card__title"> 2830 Your First 5KM Run: What to Expect & Beginner Tips That Actually Help | Sprint MY 2831 </h2> 2832 <span class="circle-divider caption-with-letter-spacing"> 2833 <time datetime="2025-12-02"> Dec 02, 25</time> 2834 </span> 2835 2836 <span class="caption-with-letter-spacing"> 2837 Sprint 2838 </span> 2839 2840 </header> 2841 <p class="article-card__excerpt rte-width break">Your first 5K run is a big deal. It's exciting, a little scary, and surprisingly rewarding. No matter how well you've trained, nothing beats the feeling of being there on... </p> 2842 </div> 2843 </a> 2844 </article> 2845 </div> 2846 2847 <div class="blog-articles__article article"> 2848 <article class="article-card "> 2849 <a href="/blogs/articles/5-common-running-myths-runners-still-believe-sprint-my" class="article-content motion-reduce"> 2850 2851 <div class="article-card__image-wrapper"> 2852 <div class="article-card__image media media--landscape"> 2853 <img src="https://cdn.store-assets.com/s/1368538/f/16319498.jpeg" alt="5 Common Running Myths Runners Still Believe | Sprint MY" class="motion-reduce"> 2854 </div> 2855 </div> 2856 2857 <div class="article-card__info"> 2858 <header class="article-card__header"> 2859 <h2 class="article-card__title"> 2860 5 Common Running Myths Runners Still Believe | Sprint MY 2861 </h2> 2862 <span class="circle-divider caption-with-letter-spacing"> 2863 <time datetime="2025-11-28"> Nov 28, 25</time> 2864 </span> 2865 2866 <span class="caption-with-letter-spacing"> 2867 Sprint 2868 </span> 2869 2870 </header> 2871 <p class="article-card__excerpt rte-width break">Running is simple â lace up, head out, and go. But over the years, the sport has built up a lot of myths that even experienced runners still tell. Some... <
2871/p> 2872 </div> 2873 </a> 2874 </article> 2875 </div> 2876 2877 <div class="blog-articles__article article"> 2878 <article class="article-card "> 2879 <a href="/blogs/articles/how-to-run-safely-in-the-rain-sprint-my" class="article-content motion-reduce"> 2880 2881 <div class="article-card__image-wrapper"> 2882 <div class="article-card__image media media--landscape"> 2883 <img src="https://cdn.store-assets.com/s/1368538/f/16306271.jpeg" alt="How to Run Safely in the Rain | Sprint MY" class="motion-reduce"> 2884 </div> 2885 </div> 2886 2887 <div class="article-card__info"> 2888 <header class="article-card__header"> 2889 <h2 class="article-card__title"> 2890 How to Run Safely in the Rain | Sprint MY 2891 </h2> 2892 <span class="circle-divider caption-with-letter-spacing"> 2893 <time datetime="2025-11-26"> Nov 26, 25</time> 2894 </span> 2895 2896 <span class="caption-with-letter-spacing"> 2897 Sprint 2898 </span> 2899 2900 </header> 2901 <p class="article-card__excerpt rte-width break">Running in Malaysia's rainy season has its own rhythm. On some days, the sky cools the air just enough to make running feel easier. On some days, sudden downpours can... </p> 2902 </div> 2903 </a> 2904 </article> 2905 </div> 2906 2907 <div class="blog-articles__article article"> 2908 <article class="article-card "> 2909 <a href="/blogs/articles/what-is-running-cadence-a-simple-guide-for-better-safer-running-sprint-my" class="article-content motion-reduce"> 2910 2911 <div class="article-card__image-wrapper"> 2912 <div class="article-card__image media media--landscape"> 2913 <img src="https://cdn.store-assets.com/s/1368538/f/16293199.jpeg" alt="What Is Running Cadence? A Simple Guide for Better, Safer Running | Sprint MY" class="motion-reduce"> 2914 </div> 2915 </div> 2916 2917 <div class="article-card__info"> 2918 <header class="article-card__header"> 2919 <h2 class="article-card__title"> 2920 What Is Running Cadence? A Simple Guide for Better, Safer Running | Sprint MY 2921 </h2> 2922 <span class="circle-divider caption-with-letter-spacing"> 2923 <time datetime="2025-11-24"> Nov 24, 25</time> 2924 </span> 2925 2926 <span class="caption-with-letter-spacing"> 2927 Sprint 2928 </span> 2929 2930 </header> 2931 <p class="article-card__excerpt rte-width break">Many runners only care about their pace and distance. Cadence is another number that quietly affects how smooth, efficient, and comfortable your run feels. It's one of the easiest running... </p> 2932 </div> 2933 </a> 2934 </article> 2935 </div> 2936 2937 <div class="blog-articles__article article"> 2938 <article class="article-card "> 2939 <a href="/blogs/articles/why-every-runner-has-bad-run-days-and-how-to-bounce-back-stronger-sprint-my" class="article-content motion-reduce"> 2940 2941 <div class="article-card__image-wrapper"> 2942 <div class="article-card__image media media--landscape"> 2943 <img src="https://cdn.store-assets.com/s/1368538/f/16283295.jpeg" alt="Why Every Runner Has Bad Run Days â And How to Bounce Back Stronger | Sprint MY" class="motion-reduce"> 2944 </div> 2945 </div> 2946 2947 <div class="article-card__info"> 2948 <header class="article-card__header"> 2949 <h2 class="article-card__title"> 2950 Why Every Runner Has Bad Run Days â And How to Bounce Back Stronger | Sprint MY 2951 </h2>
2952 <span class="circle-divider caption-with-letter-spacing"> 2953 <time datetime="2025-11-21"> Nov 21, 25</time> 2954 </span> 2955 2956 <span class="caption-with-letter-spacing"> 2957 Sprint 2958 </span> 2959 2960 </header> 2961 <p class="article-card__excerpt rte-width break">Every runner has had those days when their legs feel heavy, their breathing is off, and even their favourite route seems twice as long. If you've been consistent or working... </p> 2962 </div> 2963 </a> 2964 </article> 2965 </div> 2966 2967 <div class="blog-articles__article article"> 2968 <article class="article-card "> 2969 <a href="/blogs/articles/how-to-pick-the-best-running-socks-sprint-my-" class="article-content motion-reduce"> 2970 2971 <div class="article-card__image-wrapper"> 2972 <div class="article-card__image media media--landscape"> 2973 <img src="https://cdn.store-assets.com/s/1368538/f/16271338.jpeg" alt="How to Pick the Best Running Socks | Sprint MY " class="motion-reduce"> 2974 </div> 2975 </div> 2976 2977 <div class="article-card__info"> 2978 <header class="article-card__header"> 2979 <h2 class="article-card__title"> 2980 How to Pick the Best Running Socks | Sprint MY 2981 </h2> 2982 <span class="circle-divider caption-with-letter-spacing"> 2983 <time datetime="2025-11-19"> Nov 19, 25</time> 2984 </span> 2985 2986 <span class="caption-with-letter-spacing"> 2987 Sprint 2988 </span> 2989 2990 </header> 2991 <p class="article-card__excerpt rte-width break"> When you think about the things you need to run, shoes are usually the first thing that comes to mind. But who is the real unsung hero? Your socks.... </p> 2992 </div> 2993 </a> 2994 </article> 2995 </div> 2996 2997 <div class="blog-articles__article article"> 2998 <article class="article-card "> 2999 <a href="/blogs/articles/the-mental-benefits-of-running-you-didn-t-expect-sprint-my" class="article-content motion-reduce"> 3000 3001 <div class="article-card__image-wrapper"> 3002 <div class="article-card__image media media--landscape"> 3003 <img src="https://cdn.store-assets.com/s/1368538/f/16259621.jpeg" alt="The Mental Benefits of Running You Didnât Expect | Sprint MY" class="motion-reduce"> 3004 </div> 3005 </div> 3006 3007 <div class="article-card__info"> 3008 <header class="article-card__header"> 3009 <h2 class="article-card__title"> 3010 The Mental Benefits of Running You Didnât Expect | Sprint MY 3011 </h2> 3012 <span class="circle-divider caption-with-letter-spacing"> 3013 <time datetime="2025-11-17"> Nov 17, 25</time> 3014 </span> 3015 3016 <span class="caption-with-letter-spacing"> 3017 Sprint 3018 </span> 3019 3020 </header> 3021 <p class="article-card__excerpt rte-width break">Running is frequently recognized for its physical benefits, yet a significant number of runners remain dedicated due to its impact on their mental well-being. From a casual jog through the... </p> 3022 </div> 3023 </a> 3024 </article> 3025 </div> 3026 3027 <div class="blog-articles__article article"> 3028 <article class="article-card "> 3029 <a href="/blogs/articles/why-running-is-malaysia-s-new-favorite-social-fitness-habit-sprint-my" class="article-content motion-reduce"> 3030 3031 <div class="article-card__image-wrapper"> 3032 <div class="article-card__image media media--landscape"> 3033 <img src="https://cdn.store-assets.com/s/1368538/f/16245142.jpeg" alt="Why Running Is Malaysiaâs New Favorite Social Fitness Habit | Sprint MY" class="motion-reduce"> 3034 </div> 3035 </div> 3036 3037 <div class="article-card__info"> 3038 <header class="article-card__header"> 3039 <h2 class="article-card__title"> 3040 Why Running Is Malaysiaâs New Favorite Social Fitness Habit | Sprint MY 3041 </h2>
3042 <span class="circle-divider caption-with-letter-spacing"> 3043 <time datetime="2025-11-14"> Nov 14, 25</time> 3044 </span> 3045 3046 <span class="caption-with-letter-spacing"> 3047 Sprint 3048 </span> 3049 3050 </header> 3051 <p class="article-card__excerpt rte-width break"> Running in Malaysia is no longer just a way to stay fit; it's becoming a way of life. More Malaysians are putting on their running shoes in Penang, KL,... </p> 3052 </div> 3053 </a> 3054 </article> 3055 </div> 3056 3057 <div class="blog-articles__article article"> 3058 <article class="article-card "> 3059 <a href="/blogs/articles/how-to-choose-the-right-running-shoes-for-your-foot-type-sprint-my" class="article-content motion-reduce"> 3060 3061 <div class="article-card__image-wrapper"> 3062 <div class="article-card__image media media--landscape"> 3063 <img src="https://cdn.store-assets.com/s/1368538/f/16231698.jpeg" alt="How to Choose the Right Running Shoes for Your Foot Type | Sprint MY" class="motion-reduce"> 3064 </div> 3065 </div> 3066 3067 <div class="article-card__info"> 3068 <header class="article-card__header"> 3069 <h2 class="article-card__title"> 3070 How to Choose the Right Running Shoes for Your Foot Type | Sprint MY 3071 </h2> 3072 <span class="circle-divider caption-with-letter-spacing"> 3073 <time datetime="2025-11-12"> Nov 12, 25</time> 3074 </span> 3075 3076 <span class="caption-with-letter-spacing"> 3077 Sprint 3078 </span> 3079 3080 </header> 3081 <p class="article-card__excerpt rte-width break">It's not just about style when it comes to finding the right running shoes Malaysia. You also need to think about how well they support, balance, and fit your feet.... </p> 3082 </div> 3083 </a> 3084 </article> 3085 </div> 3086 3087 <div class="blog-articles__article article"> 3088 <article class="article-card "> 3089 <a href="/blogs/articles/5-small-wins-every-runner-should-celebrate-more-often-sprint-my" class="article-content motion-reduce"> 3090 3091 <div class="article-card__image-wrapper"> 3092 <div class="article-card__image media media--landscape"> 3093 <img src="https://cdn.store-assets.com/s/1368538/f/16218226.jpeg" alt="5 Small Wins Every Runner Should Celebrate More Often | Sprint MY" class="motion-reduce"> 3094 </div> 3095 </div> 3096 3097 <div class="article-card__info"> 3098 <header class="article-card__header"> 3099 <h2 class="article-card__title"> 3100 5 Small Wins Every Runner Should Celebrate More Often | Sprint MY 3101 </h2> 3102 <span class="circle-divider caption-with-letter-spacing"> 3103 <time datetime="2025-11-10"> Nov 10, 25</time> 3104 </span> 3105 3106 <span class="caption-with-letter-spacing"> 3107 Sprint 3108 </span> 3109 3110 </header> 3111 <p class="article-card__excerpt rte-width break">People often think of running as a way to reach big goals, like finishing a marathon, beating their personal best, or getting over a tough trail. But the small winsâthe... </p> 3112 </div> 3113 </a> 3114 </article> 3115 </div> 3116 3117 <div class="blog-articles__article article"> 3118 <article class="article-card "> 3119 <a href="/blogs/articles/5-things-running-teaches-you-about-patience-and-making-progress-sprint-my" class="article-content motion-reduce"> 3120 3121 <div class="article-card__image-wrapper"> 3122 <div class="article-card__image media media--landscape"> 3123 <img src="https://cdn.store-assets.com/s/1368538/f/16203646.jpeg" alt="5 Things Running Teaches You About Patience and Making Progress | Sprint MY" class="motion-reduce"> 3124 </div> 3125 </div> 3126 3127 <div class="article-card__info"> 3128 <header class="article-card__header"> 3129 <h2 class="article-card__title"> 3130 5 Things Running Teaches You About Patience and Making Progress | Sprint MY 3131 </h2>
3132 <span class="circle-divider caption-with-letter-spacing"> 3133 <time datetime="2025-11-07"> Nov 07, 25</time> 3134 </span> 3135 3136 <span class="caption-with-letter-spacing"> 3137 Sprint 3138 </span> 3139 3140 </header> 3141 <p class="article-card__excerpt rte-width break">Running is more than fitness â itâs a lesson in patience, growth, and consistency. Discover five life lessons every runner learns with each stride. </p> 3142 </div> 3143 </a> 3144 </article> 3145 </div> 3146 3147 <div class="blog-articles__article article"> 3148 <article class="article-card "> 3149 <a href="/blogs/articles/5-reasons-to-join-a-running-community-in-malaysia-sprint-my-" class="article-content motion-reduce"> 3150 3151 <div class="article-card__image-wrapper"> 3152 <div class="article-card__image media media--landscape"> 3153 <img src="https://cdn.store-assets.com/s/1368538/f/16189442.jpeg" alt="5 Reasons to Join a Running Community in Malaysia | Sprint MY " class="motion-reduce"> 3154 </div> 3155 </div> 3156 3157 <div class="article-card__info"> 3158 <header class="article-card__header"> 3159 <h2 class="article-card__title"> 3160 5 Reasons to Join a Running Community in Malaysia | Sprint MY 3161 </h2> 3162 <span class="circle-divider caption-with-letter-spacing"> 3163 <time datetime="2025-11-05"> Nov 05, 25</time> 3164 </span> 3165 3166 <span class="caption-with-letter-spacing"> 3167 Sprint 3168 </span> 3169 3170 </header> 3171 <p class="article-card__excerpt rte-width break">Running often feels like a solo pursuit â just you, your shoes, and the open road. But the moment you start running with others, everything changes. Itâs no longer just... </p> 3172 </div> 3173 </a> 3174 </article> 3175 </div> 3176 3177 </div> 3178</div> 3179 3180 3181 3182 3183 <div class="pagination-wrapper"> 3184 <link rel="preload" href="https://store-themes.easystore.co/1368538/themes/55058/assets/component-pagination.css?t=1787901486" as="style" onload="this.onload=null;this.rel='stylesheet'"> 3185 <nav class="pagination" role="navigation" aria-label="general.pagination.label"> 3186 <ul class="pagination__list list-unstyled" role="list"> 3187 3188 3189 3190 <li> 3191 3192 <span class="pagination__item pagination__item--current" aria-current="page" aria-label="general.pagination.page">1</span> 3193 3194 </li> 3195 3196 <li> 3197 3198 <a href="articles?page=2" class="pagination__item">2</a> 3199 3200 </li> 3201 3202 3203 3204 <li> 3205 <a href="articles?page=2" class="pagination__item pagination__item--prev pagination__item-arrow link motion-reduce" aria-label="Next Page" > 3206 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret" viewBox="0 0 10 6"> 3207 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"> 3208 </path> 3209 </svg> 3210 </a> 3211 </li> 3212 3213 </ul> 3214 </nav> 3215 </div> 3216 3217 3218 3219 3220 3221 3222 3223 </main> 3224 <style> 3225 .footer{ 3226 background-color: #FFFFFF; 3227 color: #484848; 3228 } 3229 .footer .link--text, 3230 .footer .list-menu__item--link, 3231 .footer .footer-block__details-content .list-menu__item--link{ 3232 color: #484848; 3233 } 3234 .footer-block__heading{ 3235 color: #000000; 3236 } 3237 .rounded{ 3238 border-radius: 10px; 3239 } 3240 .shopping-app-border{ 3241 border: 1px #ECECEC solid; 3242 margin-right: 3px; 3243 } 3244 .app-download-badge{ 3245 display: inline-block; 3246 margin-right: 3px; 3247 } 3248</style> 3249 3250<link rel="preload" href="https://store-themes.easystore.co/1368538/themes/55058/assets/section-footer.css?t=1787901486" as="style" onload="this.onload=null;this.rel='stylesheet'"> 3251 3252<footer class="footer color-background-1">
3253 <div class="footer__content-top page-width"> 3254 <div class="grid grid--1-col grid--4-col-tablet "> 3255 3256 3257 3258 <div class="grid__item"> 3259 3260 <h2 class="footer-block__heading">SPRINT Official</h2> 3261 <div class="footer-block__details-content"> 3262 <p>Founded in 2019, Sprint is a specialty running store built on the foundation of Lee Hoe Sports, a trusted name in the Northern Regionâs sports retail scene since the 1970s. With decades of experience, Lee Hoe Sports was a pioneer in managing mono-stores for globally recognized brands. At Sprint, we focus on offering flagship products that feature the latest innovations in footwear technology. Catering to diverse needsâfrom walks to triathlonsâwe prioritize precise fittings to ensure optimal performance, comfort, and safety for every customer. We are passionate to help you achieve your goals - one step at a time.</p> 3263 </div> 3264 <ul class="footer__list-social list-unstyled list-social" role="list"> 3265 3266 3267 <li class="list-social__item"> 3268 <a href="https://www.facebook.com/SprintPg/" class="link link--text list-social__link"> 3269 3270 3271 3272 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook " 3273 viewBox="0 0 18 18"> 3274 <path fill="currentColor" 3275 d="M16.42.61c.27 0 .5.1.69.28.19.2.28.42.28.7v15.44c0 .27-.1.5-.28.69a.94.94 0 01-.7.28h-4.39v-6.7h2.25l.31-2.65h-2.56v-1.7c0-.4.1-.72.28-.93.18-.2.5-.32 1-.32h1.37V3.35c-.6-.06-1.27-.1-2.01-.1-1.01 0-1.83.3-2.45.9-.62.6-.93 1.44-.93 2.53v1.97H7.04v2.65h2.24V18H.98c-.28 0-.5-.1-.7-.28a.94.94 0 01-.28-.7V1.59c0-.27.1-.5.28-.69a.94.94 0 01.7-.28h15.44z"> 3276 </path> 3277 </svg> 3278 3279 3280 3281 </a> 3282 </li> 3283 3284 3285 <li class="list-social__item"> 3286 <a href="https://www.instagram.com/sprint_my/?hl=en" class="link link--text list-social__link"> 3287 3288 3289 3290 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram " 3291 viewBox="0 0 18 18"> 3292 <path fill="currentColor" 3293 d="M8.77 1.58c2.34 0 2.62.01 3.54.05.86.04 1.32.18 1.63.3.41.17.7.35 1.01.66.3.3.5.6.65 1 .12.32.27.78.3 1.64.05.92.06 1.2.06 3.54s-.01 2.62-.05 3.54a4.79 4.79 0 01-.3 1.63c-.17.41-.35.7-.66 1.01-.3.3-.6.5-1.01.66-.31.12-.77.26-1.63.3-.92.04-1.2.05-3.54.05s-2.62 0-3.55-.05a4.79 4.79 0 01-1.62-.3c-.42-.16-.7-.35-1.01-.66-.31-.3-.5-.6-.66-1a4.87 4.87 0 01-.3-1.64c-.04-.92-.05-1.2-.05-3.54s0-2.62.05-3.54c.04-.86.18-1.32.3-1.63.16-.41.35-.7.66-1.01.3-.3.6-.5 1-.65.32-.12.78-.27 1.63-.3.93-.05 1.2-.06 3.55-.06zm0-1.58C6.39 0 6.09.01 5.15.05c-.93.04-1.57.2-2.13.4-.57.23-1.06.54-1.55 1.02C1 1.96.7 2.45.46 3.02c-.22.56-.37 1.2-.4 2.13C0 6.1 0 6.4 0 8.77s.01 2.68.05 3.61c.04.94.2 1.57.4 2.13.23.58.54 1.07 1.02 1.56.49.48.98.78 1.55 1.01.56.22 1.2.37 2.13.4.94.05 1.24.06 3.62.06 2.39 0 2.68-.01 3.62-.05.93-.04 1.57-.2 2.13-.41a4.27 4.27 0 001.55-1.01c.49-.49.79-.98 1.01-1.56.22-.55.37-1.19.41-2.13.04-.93.05-1.23.05-3.61 0-2.39 0-2.68-.05-3.62a6.47 6.47 0 00-.4-2.13 4.27 4.27 0 00-1.02-1.55A4.35 4.35 0 0014.52.46a6.43 6.43 0 00-2.13-.41A69 69 0 008.77 0z"> 3294 </path> 3295 <path fill="currentColor" 3296 d="M8.8 4a4.5 4.5 0 100 9 4.5 4.5 0 000-9zm0 7.43a2.92 2.92 0 110-5.85 2.92 2.92 0 010 5.85zM13.43 5a1.05 1.05 0 100-2.1 1.05 1.05 0 000 2.1z"> 3297 </path> 3298 </svg> 3299 3300 3301 3302 </a> 3303 </li> 3304 3305 3306 3307 <li class="list-social__item"> 3308 <a href="https://wa.me/" class="link link--text list-social__link"> 3309 3310 3311 3312 <svg class="icon icon-whatsapp " fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 750 750"><path d="M703.5,195.64A371,371,0,0,0,572,56C523.89,26,471.51,8.4,415.21,2.51A370.48,370.48,0,0,0,316.5,5.42,364,364,0,0,0,215.23,37.47a369,369,0,0,0-132.68,108Q17.36,230.17,7,336.63A370.11,370.11,0,0,0,53.42,554.94a7.23,7.23,0,0,1,.61,4.9Q36.48,624.6,18.7,689.27C13.24,709.19,7.75,729.1,2.14,749.5c1.23-.26,1.93-.36,2.61-.55q95.75-25.11,191.54-50.2a8.43,8.43,0,0,1,5.19.61c12.79,5.8,25.28,12.34,38.29,17.59A370.28,370.28,0,0,0,666.09,604q69.06-86.36,80-196.47A370.36,370.36,0,0,0,743,311.86,361,361,0,0,0,703.5,195.
331264ZM684.64,388c-3.6,65.27-25.48,123.75-66.06,174.9-44.89,56.63-102.85,93.24-173.19,109.84a297.41,297.41,0,0,1-91.27,7A305.68,305.68,0,0,1,215.31,635a17.54,17.54,0,0,0-15.2-2.14c-35.5,9.58-71.1,18.74-106.66,28-.49.13-1,.21-2.14.45,1.72-6.37,3.29-12.22,4.89-18Q109,596.7,121.66,550.07a7.12,7.12,0,0,0-1-5.07c-12.37-19.32-23.31-39.25-31.6-60.64A309,309,0,0,1,70.4,410.63c-6.11-49.35-.93-97.44,16.1-144.15,57.86-160.1,234.55-243,394.65-185.11a308.31,308.31,0,0,1,120.2,79.18c34.9,37.19,59.32,80.31,72.81,129.53A304.75,304.75,0,0,1,684.64,388Z"/><path d="M556,454.42c-13.84-6.52-27.43-13.55-41.24-20.12-11.47-5.46-23-10.89-34.73-15.69-9.1-3.73-13.09-1.72-19.12,6.06-9.39,12.09-19.09,23.95-28.89,35.71-4.7,5.63-9.47,6.79-16.1,3.8-12.32-5.56-24.82-10.9-36.58-17.51-39.6-22.29-69.59-54.3-92.67-93.11-4.87-8.2-4.3-12.16,2.14-19.13,9.07-9.9,18.4-19.63,24.09-32.12a17.42,17.42,0,0,0,.47-14.67c-9.55-23-19-46-28.75-68.92a75.82,75.82,0,0,0-7-12.7c-2.56-3.82-6.6-5.49-11.28-5.36H255.78v-.56c-5.48.29-11,.11-16.39,1-8.66,1.37-15,6.75-20.95,12.94-25.46,26.48-34.58,57.89-28.66,93.83a145.64,145.64,0,0,0,20.75,53.75C220.48,377.5,231.32,393,242.65,408a435.09,435.09,0,0,0,70.53,73.19c31.48,26,67,44.54,105.56,57.58,16.1,5.44,32.08,11.08,49.36,11.42,11.52.22,23,.08,34.16-3.22a110.77,110.77,0,0,0,42.1-23.61c5.48-4.81,10.48-10.18,13.19-17a110.56,110.56,0,0,0,7.57-37.2C565.27,461.93,562.42,457.42,556,454.42Z"/></svg> 3313 3314 3315 3316 </a> 3317 </li> 3318 3319 3320 3321 3322 3323 </ul> 3324 <br> 3325 3326 </div> 3327 3328 3329 3330 <div class="grid__item"> 3331 3332 <h2 class="footer-block__heading"> 3333 Links 3334 </h2> 3335 <ul class="footer-block__details-content list-unstyled"> 3336 3337 <li> 3338 <a href="/pages/faq" class="link link--text list-menu__item list-menu__item--link"> 3339 FAQ 3340 </a> 3341 </li> 3342 3343 <li> 3344 <a href="/store-locator" class="link link--text list-menu__item list-menu__item--link"> 3345 Find Our Store 3346 </a> 3347 </li> 3348 3349 <li> 3350 <a href="/pages/about-us" class="link link--text list-menu__item list-menu__item--link"> 3351 About Us 3352 </a> 3353 </li> 3354 3355 3356 </ul> 3357 3358 </div> 3359 3360 </div> 3361 </div> 3362 <div class="footer__content-bottom"> 3363 <div class="footer__content-bottom-wrapper page-width"> 3364 <div class="footer__column footer__column--info"> 3365 3366 3367 3368 3369 3370 3371 <div class="footer__payment"> 3372 <ul class="list list-payment" role="list"> 3373 3374 <li class="list-payment__item"> 3375 3376 3377 3378 <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" 3379 width="38" height="24" aria-labelledby="pi-visa"> 3380 <path opacity=".07" 3381 d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path> 3382 <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"> 3383 </path> 3384 <path 3385 d="M28.3 10.1H28c-.4 1-.7 1.5-1 3h1.9c-.3-1.5-.3-2.2-.6-3zm2.9 5.9h-1.7c-.1 0-.1 0-.2-.1l-.2-.9-.1-.2h-2.4c-.1 0-.2 0-.2.2l-.3.9c0 .1-.1.1-.1.1h-2.1l.2-.5L27 8.7c0-.5.3-.7.8-.7h1.5c.1 0 .2 0 .2.2l1.4 6.5c.1.4.2.7.2 1.1.1.1.1.1.1.2zm-13.4-.3l.4-1.8c.1 0 .2.1.2.1.7.3 1.4.5 2.1.4.2 0 .5-.1.7-.2.5-.2.5-.7.1-1.1-.2-.2-.5-.3-.8-.5-.4-.2-.8-.4-1.1-.7-1.2-1-.8-2.4-.1-3.1.6-.4.9-.8 1.7-.8 1.2 0 2.5 0 3.1.2h.1c-.1.6-.2 1.1-.4 1.7-.5-.2-1-.4-1.5-.4-.3 0-.6 0-.9.1-.2 0-.3.1-.4.2-.2.2-.2.5 0 .7l.5.4c.4.2.8.4 1.1.6.5.3 1 .8 1.1 1.4.2.9-.1 1.7-.9 2.3-.5.4-.7.6-1.4.6-1.4 0-2.5.1-3.4-.2-.1.2-.1.2-.2.1zm-3.5.3c.1-.7.1-.7.2-1 .5-2.2 1-4.5 1.4-6.7.1-.2.1-.3.3-.3H18c-.2 1.2-.4 2.1-.7 3.2-.3 1.5-.6 3-1 4.5 0 .2-.1.2-.3.2M5 8.2c0-.1.2-.2.3-.2h3.4c.5 0 .9.3 1 .8l.9 4.4c0 .1 0 .1.1.2 0-.1.1-.1.1-.1l2.1-5.1c-.1-.1 0-.2.1-.2h2.1c0 .1 0 .1-.1.2l-3.1 7.3c-.1.2-.1.3-.2.4-.1.1-.3 0-.5 0H9.7c-.1 0-.2
33850-.2-.2L7.9 9.5c-.2-.2-.5-.5-.9-.6-.6-.3-1.7-.5-1.9-.5L5 8.2z" 3386 fill="#142688"></path> 3387 </svg> 3388 3389 3390 3391 </li> 3392 3393 3394 <li class="list-payment__item"> 3395 3396 3397 3398 <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" 3399 width="38" height="24" aria-labelledby="pi-master"> 3400 <path opacity=".07" 3401 d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path> 3402 <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"> 3403 </path> 3404 <circle fill="#EB001B" cx="15" cy="12" r="7"></circle> 3405 <circle fill="#F79E1B" cx="23" cy="12" r="7"></circle> 3406 <path fill="#FF5F00" 3407 d="M22 12c0-2.4-1.2-4.5-3-5.7-1.8 1.3-3 3.4-3 5.7s1.2 4.5 3 5.7c1.8-1.2 3-3.3 3-5.7z"></path> 3408 </svg> 3409 3410 3411 3412 </li> 3413 3414 3415 <li class="list-payment__item"> 3416 3417 3418 3419 <svg class="icon icon--full-color " xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" 3420 width="38" height="24" aria-labelledby="pi-american_express"> 3421 <g fill="none"> 3422 <path fill="#000" 3423 d="M35,0 L3,0 C1.3,0 0,1.3 0,3 L0,21 C0,22.7 1.4,24 3,24 L35,24 C36.7,24 38,22.7 38,21 L38,3 C38,1.3 36.6,0 35,0 Z" 3424 opacity=".07"></path> 3425 <path fill="#006FCF" 3426 d="M35,1 C36.1,1 37,1.9 37,3 L37,21 C37,22.1 36.1,23 35,23 L3,23 C1.9,23 1,22.1 1,21 L1,3 C1,1.9 1.9,1 3,1 L35,1"> 3427 </path> 3428 <path fill="#FFF" 3429 d="M8.971,10.268 L9.745,12.144 L8.203,12.144 L8.971,10.268 Z M25.046,10.346 L22.069,10.346 L22.069,11.173 L24.998,11.173 L24.998,12.412 L22.075,12.412 L22.075,13.334 L25.052,13.334 L25.052,14.073 L27.129,11.828 L25.052,9.488 L25.046,10.346 L25.046,10.346 Z M10.983,8.006 L14.978,8.006 L15.865,9.941 L16.687,8 L27.057,8 L28.135,9.19 L29.25,8 L34.013,8 L30.494,11.852 L33.977,15.68 L29.143,15.68 L28.065,14.49 L26.94,15.68 L10.03,15.68 L9.536,14.49 L8.406,14.49 L7.911,15.68 L4,15.68 L7.286,8 L10.716,8 L10.983,8.006 Z M19.646,9.084 L17.407,9.084 L15.907,12.62 L14.282,9.084 L12.06,9.084 L12.06,13.894 L10,9.084 L8.007,9.084 L5.625,14.596 L7.18,14.596 L7.674,13.406 L10.27,13.406 L10.764,14.596 L13.484,14.596 L13.484,10.661 L15.235,14.602 L16.425,14.602 L18.165,10.673 L18.165,14.603 L19.623,14.603 L19.647,9.083 L19.646,9.084 Z M28.986,11.852 L31.517,9.084 L29.695,9.084 L28.094,10.81 L26.546,9.084 L20.652,9.084 L20.652,14.602 L26.462,14.602 L28.076,12.864 L29.624,14.602 L31.499,14.602 L28.987,11.852 L28.986,11.852 Z"> 3430 </path> 3431 </g> 3432 </svg> 3433 3434 3435 3436 </li> 3437 3438 3439 <li class="list-payment__item"> 3440 3441 3442 3443 <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" 3444 height="24" role="img" aria-labelledby="pi-paypal"> 3445 <path opacity=".07" 3446 d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path> 3447 <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"> 3448 </path> 3449 <path fill="#003087" 3450 d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z"> 3451 </path> 3452 <path fill="#3086C8" 3453 d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z"> 3454 </path> 3455 <path fill="#012169" 3456 d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2
34560-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z"> 3457 </path> 3458 </svg> 3459 3460 3461 3462 </li> 3463 3464 3465 3466 </ul> 3467 </div> 3468 3469 <div class="footer__copyright caption"> 3470 <div class="copyright__content">© 2026 GM Sports Sdn Bhd 1003212-V.</div> 3471 </div> 3472 3473 <div class="footer__copyright caption"> 3474 3475 </div> 3476 3477 </div> 3478 </div> 3479 </div> 3480</footer> 3481 3482 3483 3484 3485 3486
3486<script> 3487 EasyStore.Currencies.init([{"name":"Malaysian Ringgit","code":"MYR","rate":"1.0","format_prefix":"RM","format_suffix":null,"format_decimals":2,"thousand_separator":",","is_primary":true}], 1) 3488</script>
3488 3489 3490 3491 3492
3492<script> 3493 let page_template = 'blog'; 3494 3495 if(document.querySelector('.currency-picker')) { 3496 EasyStore.Currencies.change(document.querySelector('.currency-picker').value) 3497 EasyStore.Currencies.convertAll() 3498 } 3499 3500 document.querySelectorAll('.currency-picker').forEach((el)=>{ 3501 el.addEventListener('change',(event)=>{ 3502 EasyStore.Currencies.change(event.target.value) 3503 3504 3505 if (page_template == 'cart') { 3506 const params = new URLSearchParams(window.location.search); 3507 params.set('delete_cache', 1); 3508 window.location.search = params; 3509 } else { 3510 window.location.reload(); 3511 } 3512 3513 return 3514 3515 3516 document.querySelectorAll('[name=currencies],[name=current_currency]').forEach((el)=>{ 3517 el.value = event.target.value 3518 }) 3519 3520 if(page_template == 'cart') location.reload(); 3521 }) 3522 }) 3523 </script>
3523 3524 3525 3526 3527 3528
3528<script> 3529 3530 window.variantStrings = { 3531 addToCart: `Add to Cart`, 3532 soldOut: `Sold Out`, 3533 unavailable: `Unavailable`, 3534 } 3535 3536 window.accessibilityStrings = { 3537 shareSuccess: `Link copied to clipboard`, 3538 } 3539 </script>
3539 3540 3541<!-- Snippet:global/body_end: Insert Code --> 3542 3543<!--CSS for product Comment--> 3544<style> 3545.comment-wrapper{ 3546border-bottom: 2px solid oklch(0.967 0.003 264.542) !important; 3547padding-top:20px; 3548padding-bottom: 20px; 3549} 3550 3551 3552.comment-card-wrapper{ 3553box-shadow: none !important; 3554 3555} 3556 3557.comment-wrapper span, 3558.comment-wrapper > div>div:nth-child(2) { 3559 font-size: 16px !important; 3560 color: black !important; 3561} 3562 3563 3564</style> 3565<!-- /Snippet --> 3566 3567<!-- Snippet:global/body_end: Product Label --> 3568<link href='https://apps.easystore.co/assets/css/product-label/main.css?v2.3' rel='stylesheet' type='text/css' media='screen' />
3568<script src='https://apps.easystore.co/product-labels/productlabelv2.js?shop=sprintrunning.easy.co' type='text/javascript'></script>
3568 3569<!-- /Snippet -->
3570<script> 3571 3572 /* 3573 3574 ------ 3575 Events 3576 ------ 3577 3578 pages/viewed 3579 3580 customers/signup 3581 3582 customers/login 3583 3584 products/searched 3585 3586 collections/viewed 3587 3588 products/viewed 3589 3590 products/shared 3591 3592 wishlists/item_added 3593 3594 carts/items_added 3595 3596 carts/viewed 3597 3598 carts/item_removed 3599 3600 checkouts/initiated 3601 3602 checkouts/shipping_info_added 3603 3604 checkouts/payment_info_added 3605 3606 checkouts/completed 3607 3608 orders/placed 3609 3610 orders/purchased 3611 3612 payments/captured 3613 3614 payments/failed 3615 3616 */ 3617 3618 window.__latest_cart = window.__latest_cart || null; 3619 3620 const _selector = document.querySelector.bind(document), 3621 _selectorAll = document.querySelectorAll.bind(document) 3622 3623 document.addEventListener('DOMContentLoaded', (event) => { 3624 3625 const default_currency = getCookie("currency") 3626 const customer_id = window.__st.cid 3627 const template = window.__st.p 3628 3629 onPageView() 3630 3631 //-----------------------// 3632 // Configs // 3633 //-----------------------// 3634 3635 window.dataLayer = window.dataLayer || [] 3636 3637 Array.prototype.last = Array.prototype.last || function() { 3638 return this[this.length - 1] || null 3639 } 3640 3641 Array.prototype.first = Array.prototype.first || function() { 3642 return this[0] || null 3643 } 3644 3645 //----------------------// 3646 // Triggers // 3647 //----------------------// 3648 3649 const XHR = window.XMLHttpRequest 3650 3651 function xhr() { 3652 3653 const xhr = new XHR() 3654 3655 xhr.addEventListener("readystatechange", function() { 3656 3657 if(xhr.readyState != 4) return 3658 3659 try { 3660 3661 const response_url = xhr.responseURL 3662 3663 if (response_url.includes("cart/add")) { 3664 3665 window.__latest_cart = JSON.parse(xhr.response) 3666 3667 onCartItemsAdded() // ok 3668 3669 } 3670 3671 if (response_url.includes("cart/remove_item_quantity")) { 3672 3673 window.__latest_cart = JSON.parse(xhr.response) 3674 3675 onCartItemRemoved() // ok 3676 3677 } 3678 3679 if (response_url.includes("new_cart?retrieve=true")) { 3680 3681 result = JSON.parse(xhr.response) 3682 3683 if (result.cart) { 3684 window.__latest_cart = result.cart 3685 } 3686 3687 } 3688 3689 } catch(e) { 3690 3691 console.error(e) 3692 3693 } 3694 3695 }, false); 3696 3697 return xhr 3698 3699 } 3700 3701 window.XMLHttpRequest = xhr 3702 3703 switch(template) { 3704 3705 case 'cart': onCartView() // ok 3706 break 3707 case 'product': onProductView() // ok 3708 break 3709 case 'collection': onCollectionView() // ok 3710 break 3711 case 'blog': onBlogView() 3712 break 3713 case 'article': onArticleView() 3714 break 3715 case 'payment_completed': onOrderPlace() 3716 break 3717 case 'payment_fail': onPaymentFail() 3718 break 3719 3720 } 3721 3722 // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]'))) 3723 if (_selector('form[action="/checkout/detail"]')) _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))}) // ok 3724 if (_selector('form[action="/checkout/shipping"]')) _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))}) // ok 3725 if (_selector('form[action="/account/register"]')) _selector('form[action="/account/register"]').addEventListener("submit", onSignUp) // ok 3726 if (_selector('form[action="/account/login"]')) _selector('form[action="/account/login"]').addEventListener("submit", onLogin) // ok 3727 if (_selector('form[action="/search"]')) _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok 3728 if (_selector('#line-login-btn')) _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok 3729 if (_selector('#PlaceOrder')) _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))}); // ok 3730 if (_selector('#add_wishlist')) _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok 3731 if (_selectorAll('a[href="/account/logout"]')) _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok 3732 if (_selector('.CartDrawerTrigger.cart-page-link')) _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok 3733 if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link')) _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok 3734 if (_selectorAll('a[class^="share-"]')) _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok 3735 if (_selectorAll('[name$="checkout"]')) _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate)) 3736 3737 // For append elements 3738 const bodyMutationObserver = new MutationObserver(() => { 3739 if (_selector('#form__spc #PlaceOrder')) _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok 3740 if (_selectorAll('[name$="checkout"]')) _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate)) 3741 }); 3742 bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true}); 3743 3744 //------------------------------// 3745 // Event handlers // 3746 //------------------------------// 3747 3748 function onPageView() { 3749 3750 EasyStore.Event.dispatch('pages/viewed', { 3751 page: { 3752 type: template, 3753 title: document.title, 3754 description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null, 3755 url: location.href, 3756 } 3757 }) 3758 3759 } 3760 3761 function onSignUp() { 3762 3763 const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/) 3764 const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/) 3765 3766 const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "") 3767 3768 let data = {} 3769 3770 if (email_regex.test(email_or_phone)) { 3771 data.method = 'email' 3772 data.email = email_or_phone 3773 } 3774 3775 if (phone_regex.test(email_or_phone)) { 3776 data.method = "phone" 3777 data.phone = email_or_phone 3778 } 3779 3780 if (!data.method) return 3781 3782 EasyStore.Event.dispatch('customers/signup', data) 3783 3784 } 3785 3786 function onLogin() { 3787 3788 const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/) 3789 const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/) 3790 3791 const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "") 3792 3793 let data = {} 3794 3795 if (email_regex.test(email_or_phone)) { 3796 data.method = 'email' 3797 data.email = email_or_phone 3798 } 3799 3800 if (phone_regex.test(email_or_phone)) { 3801 data.method = "phone" 3802 data.phone = email_or_phone 3803 } 3804 3805 if (!data.method) return 3806 3807 EasyStore.Event.dispatch('customers/login', data) 3808 3809 } 3810 3811 function onLineLogin() { 3812 3813 EasyStore.Event.dispatch('customers/login', { method: 'line' }) 3814 3815 } 3816 3817 function onLogout() { 3818 3819 EasyStore.Event.dispatch('customers/logout', { customer_id }) 3820 3821 } 3822 3823 function onBlogView() { 3824 3825 const blog = {"id":1106566,"handle":"articles","url":"\/blogs\/articles","title":"Articles","description":"Don\u2019t let Malaysia\u2019s humidity slow you down. Learn how to train smarter, stay hydrated, and choose gear that keeps you cool \u2014 every mile, every day.","articles_count":27,"all_tags":null,"comments_enabled":null,"moderated":null,"next_article":null,"previous_article":null,"tags":null,"updated_at":"2025-10-21T17:00:14.000+08:00","articles":[{"id":566280,"title":"Running Resolutions You Can Keep Past February | Sprint MY","handle":"running-resolutions-you-can-keep-past-february-sprint-my","url":"\/blogs\/articles\/running-resolutions-you-can-keep-past-february-sprint-my","author":"Sprint","description":"Struggling to stay consistent with running after January? Learn how to build running resolutions that last beyond February \u2014 realistic, sustainable, and pressure-free.","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16528000.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16528000.jpeg"},"published_at":"2026-01-09T17:33:12.000+08:00","updated_at":"2026-01-09T18:11:49.000+08:00"},{"id":565997,"title":"Why the New Year Is the Best Time to Rethink Your Relationship With Running | SprintMY","handle":"why-the-new-year-is-the-best-time-to-rethink-your-relationship-with-running-sprintmy","url":"\/blogs\/articles\/why-the-new-year-is-the-best-time-to-rethink-your-relationship-with-running-sprintmy","author":"Sprint","description":"The New Year often arrives with a quiet question rather than a loud resolution: How do I want running to fit into my life this year? Not faster. Not longer. Just better. For many runners, the start of a new year brings a reset button \u2014 one that allow","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16505288.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16505288.jpeg"},"published_at":"2026-01-05T17:19:13.000+08:00","updated_at":"2026-01-05T18:15:11.000+08:00"},{"id":565729,"title":"How to Set Realistic Running Goals for the New Year (Without Feeling Guilty) | Sprint MY","handle":"how-to-set-real
3825istic-running-goals-for-the-new-year-without-feeling-guilty-sprint-my","url":"\/blogs\/articles\/how-to-set-realistic-running-goals-for-the-new-year-without-feeling-guilty-sprint-my","author":"Sprint","description":"Learn how to set realistic running goals that fit your lifestyle, build consistency, and keep you motivated \u2014 without pressure, guilt, or burnout.","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16486195.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16486195.jpeg"},"published_at":"2025-12-31T10:00:57.000+08:00","updated_at":"2025-12-30T19:24:21.000+08:00"},{"id":565725,"title":"How to Wrap Up Your Running Year and Prepare for a Stronger New Season | Sprint MY","handle":"how-to-wrap-up-your-running-year-and-prepare-for-a-stronger-new-season-sprint-my","url":"\/blogs\/articles\/how-to-wrap-up-your-running-year-and-prepare-for-a-stronger-new-season-sprint-my","author":"Sprint","description":"Learn how to review your running year, reflect on progress, avoid burnout, and set yourself up for a stronger, more consistent running season ahead \u2014 without pressure or guilt.","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16480686.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16480686.jpeg"},"published_at":"2025-12-29T15:51:50.000+08:00","updated_at":"2025-12-29T16:42:53.000+08:00"},{"id":565434,"title":"December Runs: Slower, Shorter, and Still Worth It | Sprint MY","handle":"december-runs-slower-shorter-and-still-worth-it-sprint-my","url":"\/blogs\/articles\/december-runs-slower-shorter-and-still-worth-it-sprint-my","author":"Sprint ","description":"December runs often look different from the rest of the year. Distances seem shorter, paces slow down, and on some days, just getting out the door feels like a win. Running tends to slide down the list of things to do when you have work deadlines, ho","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16450665.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16450665.jpeg"},"published_at":"2025-12-22T17:51:26.000+08:00","updated_at":"2025-12-22T18:38:30.000+08:00"},{"id":565222,"title":"Running Smarter: How to Balance Training, Rest, and Progress Without Overdoing It | Sprint MY","handle":"running-smarter-how-to-balance-training-rest-and-progress-without-overdoing-it-sprint-my","url":"\/blogs\/articles\/running-smarter-how-to-balance-training-rest-and-progress-without-overdoing-it-sprint-my","author":"Sprint","description":"Discover how to run smarter by balancing training and rest. Practical advice for sustainable progress and injury-free running in Malaysia.","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16432083.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16432083.jpeg"},"published_at":"2025-12-18T17:08:42.000+08:00","updated_at":"2025-12-18T18:03:53.000+08:00"},{"id":565090,"title":"How to Stay Consistent With Running Without Burning Out | Sprint MY","handle":"how-to-stay-consistent-with-running-without-burning-out-sprint-my","url":"\/blogs\/articles\/how-to-stay-consistent-with-running-without-burning-out-sprint-my","author":"Sprint","description":"It sounds easy to stay consistent with running on paper. Lace up, head out, repeat. But in reality, many runners find themselves starting strong, only to lose motivation weeks later \u2014 not because they don\u2019t enjoy running, but because they\u2019re tired, o","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16412889.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16412889.jpeg"},"published_at":"2025-12-15T17:40:08.000+08:00","updated_at":"2025-12-15T17:59:34.000+08:00"},{"id":564946,"title":"Why Your First 1KM Always Feels the Hardest \u2014 And How to Warm Up Smarter | Sprint MY","handle":"why-your-first-1km-always-feels-the-hardest-and-how-to-warm-up-smarter-sprint-my","url":"\/blogs\/articles\/why-your-first-1km-always-feels-the-hardest-and-how-to-warm-up-smarter-sprint-my","author":"Sprint","description":"If the first kilometre of every run feels like a battle, you\u2019re not alone. Even experienced runners say the early part of a run is the toughest. It takes your body a while to get into a rhythm, while your breathing is heavy and your legs are stiff. T","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16399717.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16399717.jpeg"},"published_at":"2025-12-12T16:21:55.000+08:00","updated_at":"2025-12-12T17:14:32.000+08:00"},{"id":564599,"title":"Your First 5KM Run: What to Expect & Beginner Tips That Actually Help | Sprint MY","handle":"your-first-5km-run-what-to-expect-beginner-tips-that-actually-help-sprint-my","url":"\/blogs\/articles\/your-first-5km-run-what-to-expect-beginner-tips-that-actually-help-sprint-my","author":"Sprint","description":"Your first 5K run is a big deal. It\u0027s exciting, a little scary, and surprisingly rewarding. No matter how well you\u0027ve trained, nothing beats the feeling of being there on race day with other runners who are just as excited (and nervous) as you are. T","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16338394.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16338394.jpeg"},"published_at":"2025-12-02T14:31:07.000+08:00","updated_at":"2025-12-02T14:53:56.000+08:00"},{"id":564411,"title":"5 Common Running Myths Runners Still Believe | Sprint MY","handle":"5-common-running-myths-runners-still-believe-sprint-my","url":"\/blogs\/articles\/5-common-running-myths-runners-still-believe-sprint-my","author":"Sprint","description":"Running is simple \u2014 lace up, head out, and go. But over the years, the sport has built up a lot of myths that even experienced runners still tell. Some of these thoughts are fine; others can slow your progress, increase your risk of injury, or make r","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16319498.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16319498.jpeg"},"published_at":"2025-11-28T17:23:09.000+08:00","updated_at":"2025-11-28T17:29:27.000+08:00"},{"id":564315,"title":"How to Run Safely in the Rain | Sprint MY","handle":"how-to-run-safely-in-the-rain-sprint-my","url":"\/blogs\/articles\/h
3825ow-to-run-safely-in-the-rain-sprint-my","author":"Sprint ","description":"Running in Malaysia\u0027s rainy season has its own rhythm. On some days, the sky cools the air just enough to make running feel easier. On some days, sudden downpours can slow you down, make it harder to see, and make your usual path slippery. Many runne","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16306271.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16306271.jpeg"},"published_at":"2025-11-26T16:35:29.000+08:00","updated_at":"2025-11-26T17:21:49.000+08:00"},{"id":564199,"title":"What Is Running Cadence? A Simple Guide for Better, Safer Running | Sprint MY","handle":"what-is-running-cadence-a-simple-guide-for-better-safer-running-sprint-my","url":"\/blogs\/articles\/what-is-running-cadence-a-simple-guide-for-better-safer-running-sprint-my","author":"Sprint","description":"Many runners only care about their pace and distance. Cadence is another number that quietly affects how smooth, efficient, and comfortable your run feels. It\u0027s one of the easiest running ideas to get and one of the best ways to get better. What does","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16293199.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16293199.jpeg"},"published_at":"2025-11-24T17:18:28.000+08:00","updated_at":"2025-11-24T18:06:50.000+08:00"},{"id":564138,"title":"Why Every Runner Has Bad Run Days \u2014 And How to Bounce Back Stronger | Sprint MY","handle":"why-every-runner-has-bad-run-days-and-how-to-bounce-back-stronger-sprint-my","url":"\/blogs\/articles\/why-every-runner-has-bad-run-days-and-how-to-bounce-back-stronger-sprint-my","author":"Sprint","description":"Every runner has had those days when their legs feel heavy, their breathing is off, and even their favourite route seems twice as long. If you\u0027ve been consistent or working towards a goal, a \"bad run\" can be very discouraging. But here\u0027s the truth: b","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16283295.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16283295.jpeg"},"published_at":"2025-11-21T15:58:17.000+08:00","updated_at":"2025-11-21T18:37:36.000+08:00"},{"id":564057,"title":"How to Pick the Best Running Socks | Sprint MY ","handle":"how-to-pick-the-best-running-socks-sprint-my-","url":"\/blogs\/articles\/how-to-pick-the-best-running-socks-sprint-my-","author":"Sprint ","description":" When you think about the things you need to run, shoes are usually the first thing that comes to mind. But who is the real unsung hero? Your socks. The right pair can keep your feet cool, stop blisters, and make every step feel lighter. Even a short","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16271338.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16271338.jpeg"},"published_at":"2025-11-19T16:46:17.000+08:00","updated_at":"2025-11-19T17:51:27.000+08:00"},{"id":563975,"title":"The Mental Benefits of Running You Didn\u2019t Expect | Sprint MY","handle":"the-mental-benefits-of-running-you-didn-t-expect-sprint-my","url":"\/blogs\/articles\/the-mental-benefits-of-running-you-didn-t-expect-sprint-my","author":"Sprint","description":"Running is frequently recognized for its physical benefits, yet a significant number of runners remain dedicated due to its impact on their mental well-being. From a casual jog through the local streets to rigorous training for marathons, running alt","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16259621.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16259621.jpeg"},"published_at":"2025-11-17T17:26:03.000+08:00","updated_at":"2025-11-20T10:31:00.000+08:00"},{"id":563918,"title":"Why Running Is Malaysia\u2019s New Favorite Social Fitness Habit | Sprint MY","handle":"why-running-is-malaysia-s-new-favorite-social-fitness-habit-sprint-my","url":"\/blogs\/articles\/why-running-is-malaysia-s-new-favorite-social-fitness-habit-sprint-my","author":"Sprint","description":" Running in Malaysia is no longer just a way to stay fit;
3825 it\u0027s becoming a way of life. More Malaysians are putting on their running shoes in Penang, KL, Johor, and other cities. They do it not just for fitness, but also to connect with others, reliev","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16245142.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16245142.jpeg"},"published_at":"2025-11-14T14:55:25.000+08:00","updated_at":"2025-11-20T10:29:18.000+08:00"},{"id":563847,"title":"How to Choose the Right Running Shoes for Your Foot Type | Sprint MY","handle":"how-to-choose-the-right-running-shoes-for-your-foot-type-sprint-my","url":"\/blogs\/articles\/how-to-choose-the-right-running-shoes-for-your-foot-type-sprint-my","author":"Sprint","description":"It\u0027s not just about style when it comes to finding the right running shoes Malaysia. You also need to think about how well they support, balance, and fit your feet. The right pair of shoes makes a big difference in how you move and feel, whether you\u0027","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16231698.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16231698.jpeg"},"published_at":"2025-11-12T16:14:45.000+08:00","updated_at":"2025-11-20T10:39:42.000+08:00"},{"id":563801,"title":"5 Small Wins Every Runner Should Celebrate More Often | Sprint MY","handle":"5-small-wins-every-runner-should-celebrate-more-often-sprint-my","url":"\/blogs\/articles\/5-small-wins-every-runner-should-celebrate-more-often-sprint-my","author":"Sprint","description":"People often think of running as a way to reach big goals, like finishing a marathon, beating their personal best, or getting over a tough trail. But the small wins\u2014the little steps forward that we don\u0027t always notice\u2014are what keep us going day after","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16218226.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16218226.jpeg"},"published_at":"2025-11-10T17:20:25.000+08:00","updated_at":"2025-11-20T10:43:43.000+08:00"},{"id":563722,"title":"5 Things Running Teaches You About Patience and Making Progress | Sprint MY","handle":"5-things-running-teaches-you-about-patience-and-making-progress-sprint-my","url":"\/blogs\/articles\/5-things-running-teaches-you-about-patience-and-making-progress-sprint-my","author":"Sprint","description":"Running is more than fitness \u2014 it\u2019s a lesson in patience, growth, and consistency. Discover five life lessons every runner learns with each stride.","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16203646.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16203646.jpeg"},"published_at":"2025-11-07T15:18:12.000+08:00","updated_at":"2025-11-20T10:46:58.000+08:00"},{"id":563619,"title":"5 Reasons to Join a Running Community in Malaysia | Sprint MY ","handle":"5-reasons-to-join-a-running-community-in-malaysia-sprint-my-","url":"\/blogs\/articles\/5-reasons-to-join-a-running-community-in-malaysia-sprint-my-","author":"Sprint","description":"Running often feels like a solo pursuit \u2014 just you, your shoes, and the open road. But the moment you start running with others, everything changes. It\u2019s no longer just about endurance or distance \u2014 it becomes about connection, shared goals, and the ","image_url":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16189442.jpeg","image":{"src":"https:\/\/cdn.store-assets.com\/s\/1368538\/f\/16189442.jpeg"},"published_at":"2025-11-05T16:56:36.000+08:00","updated_at":"2025-11-05T18:11:03.000+08:00"}]} 3826 3827 EasyStore.Event.dispatch('blogs/viewed', { blog }) 3828 3829 } 3830 3831 function onArticleView() { 3832 3833 const article = "" 3834 3835 EasyStore.Event.dispatch('articles/viewed', { article }) 3836 3837 } 3838 3839 function onProductSearch() { 3840 3841 const query = _selector('input[name=q]').value 3842 3843 if (!query) return 3844 3845 EasyStore.Event.dispatch('products/searched', { query }) 3846 3847 } 3848 3849 function onCollectionView() { 3850 3851 const collection = "" 3852 3853 EasyStore.Event.dispatch('collections/viewed', { collection }) 3854 3855 } 3856 3857 function onProductView() { 3858 3859 const product = "" 3860 3861 EasyStore.Event.dispatch("products/viewed", { product }) 3862 3863 } 3864 3865 function onProductShare(el) { 3866 3867 const product = "" 3868 3869 const channel = el.getAttribute("class").split("-").last() 3870 3871 EasyStore.Event.dispatch('products/shared', { product, channel }) 3872 3873 } 3874 3875 function onWishlistItemAdded() { 3876 3877 let product = "" 3878 const quantity = _selector("#Quantity").value 3879 3880 EasyStore.Event.dispatch('wishlists/item_added', { product }) 3881 3882 } 3883 3884 async function onCartItemsAdded() { 3885 3886 const cart = await getCart() 3887 3888 if(cart && cart.items != undefined && cart.items.length > 0) { 3889 3890 EasyStore.Event.dispatch('carts/item_added', { cart }) 3891 3892 } 3893 3894 } 3895 3896 async function onCartView() { 3897 3898 const cart = await getCart() 3899 3900 EasyStore.Event.dispatch('carts/viewed', { cart }) 3901 3902 } 3903 3904 async function onCartItemRemoved() { 3905 3906 const cart = await getCart() 3907 3908 cart.items = [] 3909 3910 if(cart) { 3911 3912 EasyStore.Event.dispatch('carts/item_removed', { cart }) 3913 3914 } 3915 3916 } 3917 3918 async function onCheckoutInitiate() { 3919 3920 const cart = await getCart() 3921 3922 EasyStore.Event.dispatch('checkouts/initiated', { cart }) 3923 3924 } 3925 3926 async function onShippingInfoAdded(form) { 3927 let checkout = getCheckout() 3928 3929 let form_data = {} 3930 new FormData(form).forEach((value, key) => form_data[key] = value) 3931 3932 let shipping_tier = null 3933 3934 if (form_data.type && form_data.type.startsWith("r_pickup")) { 3935 shipping_tier = `Pickup - ${form_data.pick_location}` 3936 } 3937 3938 if (form_data.s_id) {
3939 shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name") 3940 } 3941 3942 if (!shipping_tier) return 3943 3944 EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier }) 3945 3946 } 3947 3948 async function onPaymentInfoAdded(form) { 3949 3950 let checkout = getCheckout() 3951 3952 let payment_type = new FormData(form).get('payment_method') 3953 3954 EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type }) 3955 3956 } 3957 3958 async function onOrderPlace() { 3959 3960 let cart_token = getCookie("cart_js") 3961 let previous_cart_token = getCookie("previous_cart_ga4_js") 3962 3963 if (previous_cart_token && previous_cart_token == cart_token) { 3964 // Prevent duplicate purchase tracking 3965 return 3966 } 3967 3968 let order = getOrder() 3969 3970 EasyStore.Event.dispatch('orders/placed', { order }) 3971 3972 if(order.is_manual_payment) { 3973 3974 EasyStore.Event.dispatch('orders/purchased', { order }) 3975 3976 } 3977 3978 const last_transaction = order.transactions.last() 3979 3980 if (last_transaction.status) { 3981 3982 EasyStore.Event.dispatch('orders/purchased', { order }) 3983 EasyStore.Event.dispatch('payments/captured', { order }) 3984 3985 } 3986 3987 } 3988 3989 async function onPaymentFail() { 3990 3991 const order = getOrder() 3992 3993 EasyStore.Event.dispatch('payments/failed', { order }) 3994 3995 } 3996 3997 async function onCheckoutComplete(form) { 3998 3999 onPaymentInfoAdded(form) 4000 4001 const checkout = getCheckout() 4002 4003 EasyStore.Event.dispatch('checkouts/completed', { checkout }) 4004 4005 } 4006 4007 async function onSinglePageCheckout() { 4008 4009 // let checkout = $("[data-app-checkout]").data("app-checkout") 4010 4011 let checkout = getCheckout() 4012 4013 // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text() 4014 const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML 4015 4016 const shipping_method = _selector("#delivery_method").value 4017 4018 let shipping_tier = null 4019 let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content') 4020 if (shipping_method == "shipping") { 4021 shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML 4022 } 4023 4024 if (shipping_method == "pickup") { 4025 shipping_tier = app_spc_customer_info_label[0].innerHTML 4026 } 4027 4028 if (shipping_tier) { 4029 4030 EasyStore.Event.dispatch('checkouts/shipping_info_added', { 4031 checkout, 4032 shipping_tier, 4033 }) 4034 4035 } 4036 4037 if (payment_type) { 4038 4039 EasyStore.Event.dispatch('checkouts/payment_info_added', { 4040 checkout, 4041 payment_type, 4042 }) 4043 4044 } 4045 4046 EasyStore.Event.dispatch('checkouts/completed', { checkout }) 4047 4048 } 4049 4050 }) 4051 4052 4053 //-----------------------// 4054 // Functions // 4055 //-----------------------// 4056 4057 function getCookie(name) { 4058 4059 name += "=" 4060 4061 decodedCookie = decodeURIComponent(document.cookie) 4062 4063 ca = decodedCookie.split(";") 4064 4065 for(i = 0; i < ca.length; i++) { 4066 c = ca[i] 4067 while (c.charAt(0) == " ") { 4068 c = c.substring(1) 4069 } 4070 if (c.indexOf(name) == 0) { 4071 return c.substring(name.length, c.length) 4072 } 4073 } 4074 4075 return "" 4076 4077 } 4078 4079 const parsePrice = price => { 4080 if(typeof price === 'string') { 4081 return parseFloat(price.split(',').join('')) 4082 } 4083 4084 return price 4085 } 4086 4087 const requestCart = async (method, data) => { 4088 4089 let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}}) 4090 result = await response.json() 4091 4092 return result.cart 4093 4094 } 4095 const getCart = async (latest = false) => { 4096 4097 let cart = window.__latest_cart 4098 4099 const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length) 4100 4101 if(latest || cart_invalid) { 4102 cart = await requestCart() 4103 } 4104 4105 cart.items = cart.items || [] 4106 4107 return mapCart(cart) 4108 4109 } 4110 4111 const getCheckout = async () => { 4112 mapCheckout(window.__latest_cart || await requestCart()) 4113 } 4114 4115 const getOrder = async () => { 4116 mapOrder(window.__latest_cart || await requestCart()) 4117 } 4118 4119 //-----------------------// 4120 // Mappers // 4121 //-----------------------// 4122 4123 const fallbackAttribute = (object, attribute) => { 4124 4125 if(!Array.isArray(attribute)) { 4126 attribute = [attribute] 4127 } 4128 4129 let final_value = null 4130 4131 do { 4132 4133 final_value = object[attribute.shift()] 4134 4135 } while(!final_value && attribute.length) 4136 4137 return final_value 4138 4139 } 4140 4141 const map = (object, mapper) => { 4142 4143 const newObject = {} 4144 4145 for(const key in mapper) { 4146 4147 // Handle different keys between new and old format
4148 newObject[key] = fallbackAttribute(object, mapper[key]) 4149 4150 // Cast price to float 4151 if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) { 4152 newObject[key] = parsePrice(newObject[key]) 4153 } 4154 4155 if(newObject[key] === undefined) { 4156 delete newObject[key] 4157 } 4158 4159 } 4160 4161 return newObject 4162 4163 } 4164 4165 const mapCart = cart => { 4166 4167 const oldCart = cart 4168 4169 const mapper = { 4170 id: 'id', 4171 currency: 'currency', 4172 item_count: 'item_count', 4173 items: 'items', 4174 total_price: 'total_price', 4175 latest_items: 'latest_items' 4176 } 4177 4178 cart = map(cart, mapper) 4179 4180 const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || [])) 4181 4182 cart.discount_applications = discounts.map(discount => ({ 4183 title: discount.voucher_code || null, 4184 value: parsePrice(discount.amount), 4185 })) 4186 4187 cart.original_total_price = cart.items.length 4188 ? cart.items 4189 .map(item => item.original_price) 4190 .reduce((sum, price) => sum + price) 4191 : 0 4192 4193 cart.total_discount = cart.discount_applications.length 4194 ? cart.discount_applications 4195 .map(discount => parsePrice(discount.value)) 4196 .reduce((sum, value) => sum + value) 4197 : 0 4198 4199 cart.items = cart.items.map(item => mapLineItem(item)) 4200 4201 return cart 4202 4203 } 4204 4205 const mapCheckout = checkout => { 4206 4207 const mapper = { 4208 note: 'note', 4209 attributes: 'note_attributes', 4210 billing_address: 'billing_address', 4211 currency: 'currency', 4212 customer_id: 'customer_id', 4213 discounts_amount: 'total_discount', 4214 id: 'id', 4215 line_items: 'order_item', 4216 order_number: 'order_number', 4217 shipping_address: 'shipping_address', 4218 shipping_price: 'shipping_tax', 4219 shipping_method: 'shipping_method_name', 4220 tax_price: 'total_tax', 4221 } 4222 4223 checkout = map(checkout, mapper) 4224 4225 checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required) 4226 4227 checkout.line_items = checkout.line_items.map(item => mapLineItem(item)) 4228 4229 return checkout 4230 4231 } 4232 4233 const mapOrder = order => { 4234 4235 const mapper = { 4236 attributes: 'note_attributes', 4237 billing_address: 'billing_address', 4238 cancelled: 'is_cancelled', 4239 cancelled_at: 'cancelled_at', 4240 created_at: 'created_at', 4241 customer_id: 'customer_id', 4242 // discount_applications: 'discount_applications', 4243 email: 'email', 4244 financial_status: 'financial_status', 4245 fulfillment_status: 'fulfillment_status', 4246 line_items: 'order_item', 4247 note: 'note', 4248 order_number: 'order_number', 4249 phone: 'phone', 4250 shipping_address: 'shipping_address', 4251 shipping_methods: 'shipping_methods', 4252 shipping_price: 'total_shipping', 4253 subtotal_price: 'subtotal_price', 4254 // tax_lines: 'tax_lines', 4255 tax_price: 'total_tax', 4256 total_discounts: 'total_discount', 4257 total_net_amount: 'total_amount_include_transaction', 4258 total_price: 'total_price', 4259 transactions: 'transaction_records', 4260 is_manual_payment: 'is_manual_payment', 4261 } 4262 4263 order.email = order.billing_address.email 4264 order.phone = order.billing_address.phone 4265 order.shipping_method = order.shipping_method_name 4266 4267 order = map(order, mapper) 4268 4269 order.line_items = order.line_items.map(item => mapLineItem(item)) 4270 order.transactions = order.transactions.map(transaction => mapTransaction(transaction)) 4271 4272 return order 4273 4274 } 4275 4276 const mapLineItem = line_item => { 4277 4278 const old_line_item = line_item 4279 4280 const mapper = { 4281 final_price: 'price', 4282 image: 'img_url', 4283 message: 'message', 4284 original_line_price: 'original_line_price', 4285 original_price: 'original_price', 4286 properties: 'properties', 4287 quantity: 'quantity', 4288 requires_shipping: 'shipping_required', 4289 sku: 'sku', 4290 taxable: 'taxable', 4291 title: 'product_name', 4292 product_name: 'product_name', 4293 url: 'url', 4294 product_id: 'product_id', 4295 variant_id: 'variant_id', 4296 id: ['id', 'i_id'], 4297 } 4298 4299 line_item = map(line_item, mapper) 4300 4301 line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null 4302 line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null 4303 line_item.image = line_item.image || (old_line_item.image && old_line_item.image.url) || null 4304 4305 return line_item 4306 4307 } 4308 4309 const mapTransaction = transaction => { 4310 4311 const mapper = { 4312 amount: 'amount', 4313 created_at: 'created_at', 4314 gateway: 'gateway_type', 4315 id: 'id', 4316 status: 'status', 4317 } 4318 4319 transaction = map(transaction, mapper) 4320 4321 return transaction 4322 4323 } 4324 4325 4326</script>
4326 4327 4328</body> 4329</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.