Back to Compare


Momentous
Creatine Chews 150-Count Lemon Lime 150 Count
PricePrice
£0.253

Momentous
Creatine Chews 150-Count Lemon Lime 150 Count
Momentous
PricePrice
£0.253
Flavour
Momentous
Flavour
Momentous
Price History
Loading...
Description
High-quality creatine chews with 1g of Momentous Signature Spec Creatine each. Support strength, recovery, and cognitive performance. NSF Certified for Sport®.
Ingredients
Momentous® Creatine Monohydrate (1g per chew)
Lemon Lime:
Dextrose, Stearic Acid, Coconut Oil Powder, Natural Flavors, Silica, Citric Acid, Reb M
Mango:
Dextrose, Stearic Acid, Coconut Oil Powder, Silica, Natural Mango Flavors, Citric Acid, Turmeric Root (color) Reb M
Strawberry:
Dextrose, Stearic Acid, Coconut Oil Powder, Silica, Natural Strawberry Flavors, Citric Acid, Beet Root (color) Reb M
Free from:
Artificial colors, artificial flavors, and artificial sweeteners.
Gluten-free, non-GMO, Vegan and NSF Certified for Sport®.
*Reb M is a natural, plant-based sweetener with zero glycemic response or aftertaste. Our Reb M is sustainably made from fermented rice sources with less land, water, and crop rotation.
Sourcing:
Every chew contains 1g Signature Spec Creatine Monohydrate, recognized globally as the purest, most studied form of creatine.
Momentous® Signature Spec Creatine contains 10x fewer impurities and 2-5x tighter heavy metal limits than other premium creatines verified by an unrivaled testing and certification protocol including NSF Certified for Sport®.
Clinical Research & 3rd Party Test Results
There are over 685 studies on creatine, below are some examples for Creatine's impact on health and performance:
1. The effects of creatine supplementation on cognitive function in adults: a systematic review and meta-analysis
"Creatine monohydrate in adults shows small but reliable improvements in memory and faster performance on attention and processing‑speed tasks."
2. The Effects of Creatine Supplementation on Upper- and Lower-Body Strength and Power: A Systematic Review and Meta-Analysis
"Creatine, especially with resistance training, improves compound lift strength (bench, squat) and power."
3. Effects of different dietary supplements combined with conditioning training on muscle strength, jump performance, sprint speed, and muscle mass in athletes: a systematic review and network meta-analysis
"Creatine improves power specifically jump and sprint performance."
4. Creatine supplementation protocols with or without training interventions on body composition: a GRADE-assessed systematic review and dose-response meta-analysis
"Creatine slightly improves body composition, especially with resistance training and maintenance dosing"
5. The Effect of Creatine Supplementation on Resistance Training–Based Changes to Body Composition: A Systematic Review and Meta-analysis
"Creatine supplementation produces meaningful extra gains in lean mass and small but significant reductions in body fat percentage and fat mass compared with training alone."
6. Creatine supplementation effect on recovery following exercise-induced muscle damage: A systematic review and meta-analysis of randomized controlled trials
"Creatine supplementation modestly improves recovery after exercise‑induced muscle damage, mainly by lowering blood markers of damage."
Build Your Stack
Upgraded Formula
{const lazyImages = window.lazyImages = window.lazyImages || []
const el = document.querySelector("#image1546")
if(el && window.lazyImageFn) window.lazyImageFn(el);
else if(el) lazyImages.push(el)
}
4.9
Rated 4.9 out of 5 stars
3,664
{"averageRating":"4.9","reviewCount":3664}
Creatine - 90 Servings
New Signature Spec creatine standard
Ultrafine powder for exceptional mixability
Unrivaled 6-stage testing & certification
£24.75
£33.00
Add to Bag
Creatine - 90 Servings
Subscribe & Save 25%
£
24.75
£ 33.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 3 months
Delivery every 2 months
Delivery every 1 month
One-time Purchase
£ 33.00
£
33.00
£ 33.00
£
33.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
Creatine - 90 Servings
Subscribe & Save 25%
£
24.75
£ 33.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 3 months
Delivery every 2 months
Delivery every 1 month
One-time Purchase
£ 33.00
£
33.00
£ 33.00
£
33.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
New Flavor
{const lazyImages = window.lazyImages = window.lazyImages || []
const el = document.querySelector("#image7417")
if(el && window.lazyImageFn) window.lazyImageFn(el);
else if(el) lazyImages.push(el)
}
4.7
Rated 4.7 out of 5 stars
106
{"averageRating":"4.7","reviewCount":106}
Collagen Shot 15-Packs
Strengthens joints, tendons,& ligaments
Enhances recovery & reduces soreness
Boosted with vitamin C for optimal collagen synthesis
£24.00
£32.00
Add to Bag
Collagen Shot 15-Packs
Flavor:
Sour WatermelonOrange Mango
Subscribe & Save 25%
£
24.00
£ 32.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 1 month
Delivery every 2 months
Delivery every 3 months
One-time Purchase
£ 32.00
£
32.00
£ 32.00
£
32.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
Collagen Shot 15-Packs
Flavor:
Sour WatermelonOrange Mango
Subscribe & Save 25%
£
24.00
£ 32.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 1 month
Delivery every 2 months
Delivery every 3 months
One-time Purchase
£ 32.00
£
32.00
£ 32.00
£
32.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
{const lazyImages = window.lazyImages = window.lazyImages || []
const el = document.querySelector("#image8193")
if(el && window.lazyImageFn) window.lazyImageFn(el);
else if(el) lazyImages.push(el)
}
4.9
Rated 4.9 out of 5 stars
143
{"averageRating":"4.9","reviewCount":143}
Vitamin D3 2000 IU
Supports calcium absorption for bone strength and muscle function
Promotes immune health and inflammation balance
Delivered in organic extra virgin olive oil for superior bioavailability
£10.50
£14.00
Add to Bag
Vitamin D3 2000 IU
Subscribe & Save 25%
£
10.50
£ 14.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 2 months
Delivery every 1 month
Delivery every 3 months
One-time Purchase
£ 14.00
£
14.00
£ 14.00
£
14.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
Vitamin D3 2000 IU
Subscribe & Save 25%
£
10.50
£ 14.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 2 months
Delivery every 1 month
Delivery every 3 months
One-time Purchase
£ 14.00
£
14.00
£ 14.00
£
14.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
Best Seller
{const lazyImages = window.lazyImages = window.lazyImages || []
const el = document.querySelector("#image6462")
if(el && window.lazyImageFn) window.lazyImageFn(el);
else if(el) lazyImages.push(el)
}
4.9
Rated 4.9 out of 5 stars
1,178
{"averageRating":"4.9","reviewCount":1178}
Omega-3
Supports brain, heart, and joint health with no fishy aftertaste
Aids recovery and reduces inflammation from training or stress
Norwegian sourced + tested for heavy metals and purity
£23.25
£31.00
Add to Bag
Omega-3
Subscribe & Save 25%
£
23.25
£ 31.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 1 month
Delivery every 2 months
Delivery every 3 months
One-time Purchase
£ 31.00
£
31.00
£ 31.00
£
31.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
Omega-3
Subscribe & Save 25%
£
23.25
£ 31.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 1 month
Delivery every 2 months
Delivery every 3 months
One-time Purchase
£ 31.00
£
31.00
£ 31.00
£
31.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
Best Seller
{const lazyImages = window.lazyImages = window.lazyImages || []
const el = document.querySelector("#image1057")
if(el && window.lazyImageFn) window.lazyImageFn(el);
else if(el) lazyImages.push(el)
}
4.7
Rated 4.7 out of 5 stars
3,092
{"averageRating":"4.7","reviewCount":3092}
Whey Protein Isolate
Supports lean muscle mass and recovery*
High in leucine to build and repair muscle faster*
No gums, fillers, or artificial sweeteners
£34.50
£46.00
Add to Bag
Whey Protein Isolate
Flavor:
ChocolateVanillaUnflavoredStrawberry
Subscribe & Save 25%
£
34.50
£ 46.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 1 month
Delivery every 2 months
Delivery every 3 months
One-time Purchase
£ 46.00
£
46.00
£ 46.00
£
46.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
Whey Protein Isolate
Flavor:
ChocolateVanillaUnflavoredStrawberry
Subscribe & Save 25%
£
34.50
£ 46.00
Out of Stock Protection
10% off future deliveries
Cancel or reschedule anytime
Experience long-term results
Delivery every 1 month
Delivery every 2 months
Delivery every 3 months
One-time Purchase
£ 46.00
£
46.00
£ 46.00
£
46.00
Sorry, We are currently out of stock!
Estimated to be back in stock:
Add to Bag
Notify me when available
View Full Details
.first-hidden {
display: none;
}
.product-carousel .swiper-slide {
flex-shrink: 0;
}
@media (min-width: 768px) {
.product-carousel .swiper-wrapper {
display: flex;
gap: 1rem;
overflow-x: auto;
scrollbar-width: none;
-ms-overflow-style: none;
}
.product-carousel .swiper-wrapper::-webkit-scrollbar {
display: none;
}
}
#shopify-section-template--20679782924471__horizontal_line_hMFxBL {
padding-top: 0px;
padding-bottom: 10px;
}
@media (max-width: 1023px) {
#shopify-section-template--20679782924471__horizontal_line_hMFxBL {
padding-top: 0px;
padding-bottom: 10px;
}
}
Frequently Asked Questions
Are these gummies?
No. Creatine Chews® are not gummies, they are pressed, dry tablets. They're not soft or chewy. The pressed format is what allows us to deliver exactly 1g of active Momentous® Signature Spec Creatine per piece, without any water that could degrade the creatine before you take it.
Why is the texture chalky and not chewy?
Chalk means no water. Water, like used in a creatine gummy, causes the active creatine monohydrate to convert into creatinine, an inactive byproduct your body doesn't use. By formulating without moisture, we preserve the creatine in its active form all the way to you. The chalky finish is the purity signal, not a compromise.
Do I have to take all 5 at once?
No, you don't have to. Taking all 5 delivers your full 5g serving at once, which works great. But you can also split the dose: 2 in the morning and 3 mid-afternoon is a popular approach. Or if you already use Momentous Creatine powder, stack a few chews to titrate your total daily dose to the gram.
What is better about Momentous® Signature Spec Creatine compared to other creatines?
Momentous® Signature Spec Creatine is simply the cleanest creatine on the market verified by a testing protocol that goes far beyond standard FDA requirements, including third-party certifications and screening for microplastics and PFAs that most of the category doesn’t test for at all.
Additionally, our Chews are formulated without artificial flavors or sweeteners, and without water, keeping creatine in its active form.
Is Momentous Creatine made with Creapure®?
Momentous no longer sources our Creatine from Creapure®. Our new Momentous®Signature Spec Creatine is made in a pharmaceutical facility to a spec we own (called Signature Spec) which is produced with tighter impurity controls allowing for 10x fewer impurities than our previous creatine, 2-5x tighter heavy metal limits, and expanded testing for microplastics and PFAs.
Is this product NSF Certified?
Yes, our Creatine Chews® are NSF Certified for Sport® verifying that our product contains exactly what's on the label, is free from banned substances, and meets strict limits for contaminants including heavy metals. It's the gold standard for athletes subject to drug testing — from collegiate to Olympic level.
Momentous® Signature Spec Creatine is not only NSF Certified for Sport® but adds expanded third-party testing for PFAS and microplastics that the certification doesn't require.
150 Count
Flavor Stack
4.5
Rated 4.5 out of 5 stars
Based on 310 reviews
5 Rated out of 5 stars
242
Total 5 star reviews: 242 4 Rated out of 5 stars
28
Total 4 star reviews: 28 3 Rated out of 5 stars
18
Total 3 star reviews: 18 2 Rated out of 5 stars
10
Total 2 star reviews: 10 1 Rated out of 5 stars
12
Total 1 star reviews: 12
87%would recommend these products
Reviews Summary
Generated by AI from 100 most recent customer reviews
Last updated 3 months ago
Customers say these chews taste great, with many comparing them to sweet tarts or smarties candy. The convenience factor is highly praised - users appreciate not having to mix powders or clean shaker bottles. Most find the texture chalky but manageable, though some describe it as more like Tums than expected gummies. Many reviews mention the portability makes them perfect for travel and on-the-go use. Common feedback includes appreciation for the 1-gram dosing that allows flexible intake adjustment. Some note concerns about the cost compared to powder alternatives and the challenge of consuming five chews for a full serving. A few users report digestive issues or find the flavor too sour or sweet.
Read More
Customers Talked About
Taste
Convenience
Texture
Dosage
Performance
Filters
Write a Review (Opens in a new window)
310 reviews
Sort Most RecentPhotos & VideosMost HelpfulHighest RatingOldestLowest RatingLeast Helpful
DP
Dana P.
Verified Buyer
Product Standouts Results
3 minutes ago
Product Standouts Results
Reviewing
Creatine Chews 150-Count
Rated 5 out of 5 stars
Creatine Chews
Best creatine to be ever taken.
Read MoreRead more about this review
Was this helpful?Yes, this review from Dana P. was helpful. 0 people voted yesNo, this review from Dana P. was not helpful. 0 people voted no
MH
Mike H.
Verified Buyer
Product Standouts Taste + Texture, Ease of Use, Trust and Transparency
Yesterday
Product Standouts Taste + Texture, Ease of Use, Trust and Transparency
Reviewing
Creatine Chews 150-Count
Rated 5 out of 5 stars
Convenient Creatine
Rest days? Travel Days? A break from shakers & powders? Momentous Creatine Chews are the answer to all that and so much more! Easy, convenient & tasty - 1 chew equals 1 gram of Momentous quality creatine! Thanks Momentous for the best upgrade to creatine in a long time!
Read MoreRead more about this review
Was this helpful?Yes, this review from Mike H. was helpful. 0 people voted yesNo, this review from Mike H. was not helpful. 0 people voted no
M
Megan
Yesterday
Reviewing
Creatine Chews 150-Count
Rated 4 out of 5 stars
4 Stars
Really sweet
Read MoreRead more about this review
Was this helpful?Yes, this review from Megan was helpful. 0 people voted yesNo, this review from Megan was not helpful. 0 people voted no
A
Andre
3 days ago
Reviewing
Creatine Chews Flavor Stack
Rated 5 out of 5 stars
5 Stars
This is a great easy way to take creatine and they give you a boost and focus.
Read MoreRead more about this review
Was this helpful?Yes, this review from Andre was helpful. 0 people voted yesNo, this review from Andre was not helpful. 0 people voted no
KZ
Kathy Z.
Verified Buyer
1 week ago
Reviewing
Creatine Chews 150-Count
Rated 5 out of 5 stars
Love it
Yes this product is working, I recommend it
Read MoreRead more about this review
Was this helpful?Yes, this review from Kathy Z. was helpful. 0 people voted yesNo, this review from Kathy Z. was not helpful. 0 people voted no
Loading...
Loading...
Show More
{"areReviewsGrouped":true,"chatAssistant":{"reviewCount":310},"media":[],"productAttributes":[],"questionCount":0,"reviewAggregate":{"dateUpdated":"2026-07-24T14:21:50.780Z","mediaCount":0,"productAttributeCount":[{"title":"Product Standouts","type":"multi-value","options":[{"title":"Ease of Use","count":32},{"title":"Taste + Texture","count":30},{"title":"Results","count":21},{"title":"Trust and Transparency","count":18}]}],"productId":"shopify-8258763423927","productName":"Creatine Chews 150-Count","ratingAndReviewCount":310,"ratingAndReviewCountByLevel":{"level1Count":12,"level2Count":10,"level3Count":18,"level4Count":28,"level5Count":242},"ratingAndReviewValuesTotal":1408,"ratingCount":0,"ratingCountByLevel":{},"ratingValuesTotal":0,"recommendationCount":270,"replyCount":5,"replyWordsTotal":609,"reviewCount":310,"reviewCountByLevel":{"level1Count":12,"level2Count":10,"level3Count":18,"level4Count":28,"level5Count":242},"reviewRatingValuesTotal":1408,"reviewWordsTotal":8483,"subscriberId_productId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c:shopify-8258763423927","subscriberId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c"},"reviews":[{"subscriberId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c","reviewId":"06a178c6-2e57-421d-a7a3-b0d4756e1380","subscriberId_productId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c:shopify-8258763423927","productId":"shopify-8258763423927","body":"Best creatine to be ever taken.","dateCreated":"2026-07-24T14:21:50.189Z","dateUpdated":"2026-07-24T14:21:50.189Z","helpfulCount":0,"isRecommended":true,"languageCode":"en","productAttributes":[{"title":"Product Standouts","type":"multi-value","value":["Results"]}],"productHandle":"creatine-monohydrate-chews","productImageUrl":"https://cdn.shopify.com/s/files/1/1400/2351/files/HERO_3bbed293-fc5d-448a-bc77-8dd376547206_x280.png?v=1782759605","productName":"Creatine Chews 150-Count","productUrl":"//www.livemomentous.com/products/creatine-monohydrate-chews","productVariantName":"Lemon Lime","rating":5,"reviewer":{"displayName":"Dana P.","isVerified":true},"isIncentivized":false,"status":"approved","title":"Creatine Chews ","unhelpfulCount":0,"variantId":"45554572951735"},{"subscriberId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c","reviewId":"5d618995-0710-4deb-9696-9a8c9bc85ab5","subscriberId_productId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c:shopify-8258763423927","productId":"shopify-8258763423927","body":"Rest days? Travel Days? A break from shakers & powders? Momentous Creatine Chews are the answer to all that and so much more! Easy, convenient & tasty - 1 chew equals 1 gram of Momentous quality creatine! Thanks Momentous for the best upgrade to creatine in a long time!","dateCreated":"2026-07-23T13:44:56.300Z","dateUpdated":"2026-07-23T13:44:56.300Z","helpfulCount":0,"isRecommended":true,"languageCode":"en","productAttributes":[{"title":"Product Standouts","type":"multi-value","value":["Taste + Texture","Ease of Use","Trust and Transparency"]}],"productHandle":"creatine-monohydrate-chews","productImageUrl":"https://cdn.shopify.com/s/files/1/1400/2351/files/HERO-2_x280.png?v=1782759605","productName":"Creatine Chews 150-Count","productUrl":"//www.livemomentous.com/products/creatine-monohydrate-chews","productVariantName":"Strawberry","rating":5,"reviewer":{"displayName":"Mike H.","isVerified":true},"isIncentivized":false,"status":"approved","title":"Convenient Creatine","unhelpfulCount":0,"variantId":"45555596165303"},{"subscriberId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c","reviewId":"c46366ec-560a-4146-82ca-9201a7d5096f","subscriberId_productId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c:shopify-8258763423927","productId":"shopify-8258763423927","body":"Really sweet","dateCreated":"2026-07-23T12:48:28.000Z","dateUpdated":"2026-07-23T12:48:28.000Z","externalProvider":"shopify-shop","helpfulCount":0,"isRecommended":true,"languageCode":"en","productHandle":"creatine-monohydrate-chews","productImageUrl":"https://cdn.shopify.com/s/files/1/1400/2351/files/HERO_3bbed293-fc5d-448a-bc77-8dd376547206_x280.png?v=1782759605","productName":"Creatine Chews 150-Count","productUrl":"//www.livemomentous.com/products/creatine-monohydrate-chews","productVariantName":"Lemon Lime","rating":4,"reviewer":{"displayName":"Megan"},"isIncentivized":false,"status":"approved","title":"4 Stars","unhelpfulCount":0,"variantId":"45554572951735"},{"subscriberId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c","reviewId":"31dfeb42-00c6-45c3-a8b0-78ce16c4eee5","subscriberId_productId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c:shopify-8518861291703","productId":"shopify-8518861291703","body":"This is a great easy way to take creatine and they give you a boost and focus.","dateCreated":"2026-07-20T17:00:20.000Z","dateUpdated":"2026-07-20T17:00:20.000Z","externalProvider":"shopify-shop","helpfulCount":0,"isRecommended":true,"languageCode":"en","productHandle":"creatine-monohydrate-chews-flavor-stack","productImageUrl":"https://cdn.shopify.com/s/files/1/1400/2351/files/CreatineChews_50ct_Group_b7648c9b-7013-4668-9667-6738c81d21cc_x280.png?v=1782762019","productName":"Creatine Chews Flavor Stack","productUrl":"//www.livemomentous.com/products/creatine-monohydrate-chews-flavor-stack","productVariantName":"Assorted","rating":5,"reviewer":{"displayName":"Andre"},"isIncentivized":false,"status":"approved","title":"5 Stars","unhelpfulCount":0,"variantId":"47257493536951"},{"subscriberId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c","reviewId":"b8f7db82-9ae0-499b-8b17-c8917807fc29","subscriberId_productId":"72adcf9f-ede7-4232-8bc6-db71fceaf77c:shopify-8258763423927","productId":"shopify-8258763423927","body":"Yes this product is working, I recommend it","dateCreated":"2026-07-16T01:16:19.952Z","dateUpdated":"2026-07-16T01:16:19.952Z","helpfulCount":0,"isRecommended":true,"languageCode":"en","productHandle":"creatine-monohydrate-chews","productImageUrl":"https://cdn.shopify.com/s/files/1/1400/2351/files/HERO-2_x280.png?v=1782759605","productName":"Creatine Chews 150-Count","productUrl":"//www.livemomentous.com/products/creatine-monohydrate-chews","productVariantName":"Strawberry","rating":5,"reviewer":{"displayName":"Kathy Z.","isVerified":true},"isIncentivized":false,"status":"approved","title":"Love it","unhelpfulCount":0,"variantId":"45555596165303"}],"reviewsKeywords":{"keywordTopics":[{"keywords":[{"name":"taste","occurrences":146},{"name":"flavor","occurrences":45},{"name":"flavors","occurrences":7},{"name":"sweetness","occurrences":6},{"name":"aftertaste","occurrences":5},{"name":"strawberry","occurrences":4},{"name":"lemon flavor","occurrences":3},{"name":"mango","occurrences":3},{"name":"citrus flavor","occurrences":2},{"name":"lemon-lime","occurrences":2},{"name":"strawberry flavor","occurrences":2}],"topic":"Taste"},{"keywords":[{"name":"convenience","occurrences":90},{"name":"ease of use","occurrences":19},{"name":"portability","occurrences":13},{"name":"travel","occurrences":8},{"name":"portable","occurrences":2},{"name":"easy","occurrences":2},{"name":"Easy","occurrences":1},{"name":"Convenient","occurrences":1},{"name":"convenient","occurrences":1}],"topic":"Convenience"},{"keywords":[{"name":"texture","occurrences":55},{"name":"chews","occurrences":15},{"name":"chewable","occurrences":9},{"name":"consistency","occurrences":8},{"name":"chewable form","occurrences":5},{"name":"dissolving","occurrences":3},{"name":"tablets","occurrences":3},{"name":"chewing","occurrences":2},{"name":"powder","occurrences":2}],"topic":"Texture"},{"keywords":[{"name":"dosage","occurrences":22},{"name":"dosing","occurrences":5},{"name":"size","occurrences":5},{"name":"serving size","occurrences":4},{"name":"dosage control","occurrences":1},{"name":"dosage flexibility","occurrences":1}],"topic":"Dosage"},{"keywords":[{"name":"energy","occurrences":8},{"name":"effectiveness","occurrences":6},{"name":"results","occurrences":5},{"name":"strength","occurrences":5},{"name":"workouts","occurrences":5},{"name":"recovery","occurrences":4},{"name":"mental clarity","occurrences":4},{"name":"performance","occurrences":3}],"topic":"Performance"},{"keywords":[{"name":"bloating","occurrences":3},{"name":"digestion","occurrences":3},{"name":"digestibility","occurrences":2},{"name":"stomach","occurrences":2},{"name":"stomach issues","occurrences":2},{"name":"bloat","occurrences":1},{"name":"digestible","occurrences":1},{"name":"digestive issues","occurrences":1},{"name":"stomach upset","occurrences":1}],"topic":"Digestion"},{"keywords":[{"name":"price","occurrences":7},{"name":"quality","occurrences":7},{"name":"value","occurrences":3},{"name":"Quality","occurrences":1},{"name":"cost","occurrences":1},{"name":"ingredient quality","occurrences":1}],"topic":"Value"}],"languageCode":"en"},"reviewsNextUrl":"https://api.okendo.io/v1/stores/72adcf9f-ede7-4232-8bc6-db71fceaf77c/products/shopify-8258763423927/reviews?limit=5&orderBy=date%20desc&lastEvaluated=%7B%22dateCreated%22%3A%222026-07-16T01%3A16%3A19.952Z%22%2C%22reviewId%22%3A%22b8f7db82-9ae0-499b-8b17-c8917807fc29%22%2C%22subscriberId_collectionId%22%3A%2272adcf9f-ede7-4232-8bc6-db71fceaf77c%3Aa4ffeb04-9c85-43ee-97d0-c435b11176e6%22%7D","reviewsSummary":{"body":"Customers say these chews taste great, with many comparing them to sweet tarts or smarties candy. The convenience factor is highly praised - users appreciate not having to mix powders or clean shaker bottles. Most find the texture chalky but manageable, though some describe it as more like Tums than expected gummies. Many reviews mention the portability makes them perfect for travel and on-the-go use. Common feedback includes appreciation for the 1-gram dosing that allows flexible intake adjustment. Some note concerns about the cost compared to powder alternatives and the challenge of consuming five chews for a full serving. A few users report digestive issues or find the flavor too sour or sweet.","contributingReviewCount":100,"dateGenerated":"2026-03-04T00:07:48.743Z","datePublished":"2026-03-30T17:40:08.227Z","languageCode":"en"},"sort":{"defaultSort":"date desc"}}
!(function() { const widgets = document.querySelectorAll('.js-oke-widgetSize'); if (widgets && widgets.length) { if (!window.okeSetWidgetSizes) { window.okeSetWidgetSizes = (allWidgets) => { if (allWidgets) { allWidgets.forEach(widget => { const width = widget.getBoundingClientRect().width; widget.classList.remove('oke-is-small', 'oke-is-medium', 'oke-is-large'); widget.classList.add(width > 960 ? 'oke-is-large' : width > 640 ? 'oke-is-medium' : 'oke-is-small'); }); } }; } if (!window.okeResizeObserver) { let okeMetafieldResizerTimer; window.okeResizeObserver = new ResizeObserver(entries => { if (entries && entries.length) { if (okeMetafieldResizerTimer) { clearTimeout(okeMetafieldResizerTimer); } okeMetafieldResizerTimer = window.setTimeout(() => { window.okeSetWidgetSizes(entries.map(e => e.target)); }, 100); } }); } window.okeSetWidgetSizes(document.querySelectorAll('.js-oke-widgetSize')); widgets.forEach((widget) => { window.okeResizeObserver.observe(widget); }); } })();
@media (min-width: 1024px) {
.oke-w-main {
width: 67%;
margin-left: auto;
}
}
[
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Creatine Chews 150-Count",
"url": "https:\/\/www.livemomentous.com\/products\/creatine-monohydrate-chews",
"image":"https:\/\/www.livemomentous.com\/cdn\/shop\/files\/HERO_3bbed293-fc5d-448a-bc77-8dd376547206.png?v=1782759605\u0026width=1000","description": "Creatine Chews® deliver 1 gram of Momentous® Signature Spec Creatine in every pressed powder chewable tablet. \n\nOur Signature Spec Creatine is our highest quality Creatine Monohydrate verified by multiple third-party certifications and expanded contaminant screening to ensure exceptional purity and consistency in every batch. ","sku": "850072768045","brand": {
"@type": "Brand",
"name": "Momentous"
},"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "310",
"bestRating": "5",
"worstRating": "1"
},"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"@id": "#momentous-return-policy",
"applicableCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"merchantReturnLink": "https:\/\/www.livemomentous.com\/policies\/refund-policy",
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn",
"customerRemorseReturnFees": "https://schema.org/FreeReturn",
"returnShippingFeesAmount": {
"@type": "MonetaryAmount",
"value": 0,
"currency": "USD"
},
"refundType": "https://schema.org/FullRefund"
},
"offers": [{
"@type": "Offer","sku": "850072768045","gtin12": "850072768045","itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"price": 39.0,
"priceCurrency": "GBP",
"url": "https:\/\/www.livemomentous.com\/products\/creatine-monohydrate-chews?variant=45554572951735","priceSpecification": [
{
"@type": "UnitPriceSpecification",
"price": 39.0,
"priceCurrency": "GBP",
"name": "One-Time Purchase"
},
{
"@type": "UnitPriceSpecification",
"price": 29.25,
"priceCurrency": "GBP",
"name": "Delivery every 1 month",
"validForMemberTier": {
"@type": "MemberProgramTier",
"@id": "#momentous-subscriber",
"name": "Subscriber"
}
}
],"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"@id": "#momentous-return-policy"
}
},
{
"@type": "Offer","sku": "850072768564","gtin12": "850072768564","itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"price": 39.0,
"priceCurrency": "GBP",
"url": "https:\/\/www.livemomentous.com\/products\/creatine-monohydrate-chews?variant=45555595804855","priceSpecification": [
{
"@type": "UnitPriceSpecification",
"price": 39.0,
"priceCurrency": "GBP",
"name": "One-Time Purchase"
},
{
"@type": "UnitPriceSpecification",
"price": 29.25,
"priceCurrency": "GBP",
"name": "Delivery every 1 month",
"validForMemberTier": {
"@type": "MemberProgramTier",
"@id": "#momentous-subscriber",
"name": "Subscriber"
}
}
],"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"@id": "#momentous-return-policy"
}
},
{
"@type": "Offer","sku": "850072768540","gtin12": "850072768540","itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"price": 39.0,
"priceCurrency": "GBP",
"url": "https:\/\/www.livemomentous.com\/products\/creatine-monohydrate-chews?variant=45555596165303","priceSpecification": [
{
"@type": "UnitPriceSpecification",
"price": 39.0,
"priceCurrency": "GBP",
"name": "One-Time Purchase"
},
{
"@type": "UnitPriceSpecification",
"price": 29.25,
"priceCurrency": "GBP",
"name": "Delivery every 1 month",
"validForMemberTier": {
"@type": "MemberProgramTier",
"@id": "#momentous-subscriber",
"name": "Subscriber"
}
}
],"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"@id": "#momentous-return-policy"
}
}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https:\/\/www.livemomentous.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Annie Thorisdottir's Favorite Products",
"item": "https:\/\/www.livemomentous.com\/collections\/annie-thorisdottirs-favorite-products"
},
{
"@type": "ListItem",
"position": 3,
"name": "Creatine Chews 150-Count",
"item": "https:\/\/www.livemomentous.com\/products\/creatine-monohydrate-chews"
}
]
}
]
.combined-product-button.flavour-disabled {
opacity: 0.5;
position: relative;
cursor: not-allowed;
pointer-events: none;
}
.combined-product-button.flavour-disabled:after {
content: ' ';
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
background: linear-gradient(to top left, rgba(0,0,0,0) calc(50% - 1px), #CFCFCA, rgba(0,0,0,0) calc(50% + 1px))
}
Sign up for offers, product news, and tips
Support
Account
Help & Contact
Subscriptions
Locations
Press Inquiries
Company
About Us
Careers
Blog
Affiliate Program
Trusted Experts
Wholesale
Corporate Wellness
Resources
Privacy Policy
Terms of Service
Your Privacy Choices
Accessibility
California Prop 65
Save with HSA/FSA
Certificate of Analysis
Patents
Do Not Sell My Information
*These statements have not been evaluated by the food and drug administration. This product is not intended to diagnose, treat, cure, or prevent any disease.
Afghanistan - USD $
Åland Islands - USD $
Algeria - USD $
Andorra - EUR €
Anguilla - USD $
Antigua & Barbuda - USD $
Argentina - USD $
Armenia - USD $
Aruba - USD $
Ascension Island - USD $
Australia - AUD $
Austria - EUR €
Bahamas - USD $
Bahrain - USD $
Bangladesh - USD $
Barbados - USD $
Belgium - EUR €
Belize - USD $
Bermuda - USD $
Bhutan - USD $
Bolivia - USD $
Bosnia & Herzegovina - USD $
Botswana - USD $
Brazil - USD $
British Indian Ocean Territory - USD $
Brunei - USD $
Bulgaria - USD $
Burkina Faso - USD $
Burundi - USD $
Cambodia - USD $
Cameroon - USD $
Canada - CAD $
Cape Verde - USD $
Caribbean Netherlands - USD $
Cayman Islands - USD $
Central African Republic - USD $
Chad - USD $
Chile - USD $
China - USD $
Christmas Island - USD $
Cocos (Keeling) Islands - USD $
Colombia - USD $
Congo - Brazzaville - USD $
Congo - Kinshasa - USD $
Cook Islands - USD $
Costa Rica - USD $
Côte d’Ivoire - USD $
Croatia - USD $
Curaçao - USD $
Cyprus - EUR €
Czechia - USD $
Denmark - USD $
Dominica - USD $
Dominican Republic - USD $
Ecuador - USD $
Egypt - USD $
El Salvador - USD $
Estonia - EUR €
Eswatini - USD $
Ethiopia - USD $
Falkland Islands - USD $
Finland - EUR €
France - EUR €
French Guiana - USD $
French Polynesia - USD $
French Southern Territories - USD $
Gabon - USD $
Gambia - USD $
Germany - EUR €
Ghana - USD $
Greece - EUR €
Guadeloupe - USD $
Guatemala - USD $
Guernsey - USD $
Guinea - USD $
Guyana - USD $
Haiti - USD $
Hong Kong SAR - USD $
Hungary - USD $
Iceland - USD $
India - USD $
Indonesia - USD $
Iraq - USD $
Ireland - EUR €
Isle of Man - USD $
Israel - USD $
Italy - EUR €
Jamaica - USD $
Japan - USD $
Jersey - USD $
Jordan - USD $
Kenya - USD $
Kosovo - EUR €
Kuwait - USD $
Laos - USD $
Latvia - EUR €
Lebanon - USD $
Liberia - USD $
Liechtenstein - USD $
Lithuania - EUR €
Luxembourg - EUR €
Macao SAR - USD $
Madagascar - USD $
Malawi - USD $
Malaysia - USD $
Maldives - USD $
Mali - USD $
Malta - EUR €
Martinique - USD $
Mauritania - USD $
Mauritius - USD $
Mayotte - USD $
Mexico - USD $
Moldova - USD $
Monaco - EUR €
Montenegro - EUR €
Morocco - USD $
Mozambique - USD $
Namibia - USD $
Nauru - USD $
Nepal - USD $
Netherlands - EUR €
New Zealand - USD $
Nicaragua - USD $
Niger - USD $
Nigeria - USD $
Niue - USD $
Norfolk Island - USD $
Norway - USD $
Oman - USD $
Pakistan - USD $
Palestinian Territories - USD $
Panama - USD $
Papua New Guinea - USD $
Paraguay - USD $
Peru - USD $
Philippines - USD $
Pitcairn Islands - USD $
Poland - USD $
Portugal - EUR €
Qatar - USD $
Réunion - USD $
Romania - USD $
Rwanda - USD $
San Marino - EUR €
São Tomé & Príncipe - USD $
Saudi Arabia - USD $
Senegal - USD $
Seychelles - USD $
Sierra Leone - USD $
Singapore - USD $
Slovakia - EUR €
Slovenia - EUR €
Solomon Islands - USD $
Somalia - USD $
South Africa - USD $
South Georgia & South Sandwich Islands - USD $
South Korea - USD $
South Sudan - USD $
Spain - EUR €
Sri Lanka - USD $
St. Helena - USD $
St. Pierre & Miquelon - USD $
Suriname - USD $
Svalbard & Jan Mayen - USD $
Sweden - USD $
Switzerland - USD $
Taiwan - USD $
Tajikistan - USD $
Tanzania - USD $
Thailand - USD $
Togo - USD $
Tokelau - USD $
Trinidad & Tobago - USD $
Tristan da Cunha - USD $
Tunisia - USD $
Türkiye - USD $
Turkmenistan - USD $
Tuvalu - USD $
U.S. Outlying Islands - USD $
Uganda - USD $
Ukraine - USD $
United Arab Emirates - USD $
United Kingdom - GBP £
United States - USD $
Uruguay - USD $
Vatican City - USD $
Venezuela - USD $
Vietnam - USD $
Western Sahara - USD $
Yemen - USD $
Zambia - USD $
Zimbabwe - USD $
United Kingdom - GB £
.country-selector {
position: relative;
}
.country-selector__select {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
}
.country-selector__selected-display {
display: flex;
align-items: center;
gap: 8px;
}
document.querySelector('.country-selector__select').addEventListener('change', function() {
const selectedOption = this.options[this.selectedIndex];
const flagSrc = selectedOption.dataset.flagSrc;
const currency = selectedOption.dataset.currency;
// Update the displayed flag and text
const display = this.closest('.country-selector').querySelector('.country-selector__selected-display');
display.querySelector('img').src = flagSrc;
display.querySelector('img').alt = selectedOption.text;
display.querySelector('span').textContent = selectedOption.text;
// Submit the form
this.closest('form').submit();
});
document.addEventListener("DOMContentLoaded", () => {
const managePreferencesBtn = document.querySelector(
'a[aria-label="Your Privacy Choices"]'
);
if (managePreferencesBtn) {
managePreferencesBtn.addEventListener("click", (event) => {
event.preventDefault();
const consent = window[Symbol.for("blotout-consent")];
if (consent && typeof consent.showBanner === "function") {
consent.showBanner();
console.log('Banner Fired')
}
});
}
});
document.addEventListener('DOMContentLoaded', function() {
// Handle newsletter form submission
document.addEventListener('newsletter-submit', function(event) {
const email = event.detail.email;
// Here you can integrate with your email service (Klaviyo, Mailchimp, etc.)
// Example: Send to Klaviyo or your backend
console.log('Newsletter subscription:', email);
// You can add your newsletter integration here
// For example, if using Klaviyo:
// if (window._learnq) {
// window._learnq.push(['identify', { $email: email }]);
// }
});
});
/* Ensure x-cloak works properly */
[x-cloak] {
display: none !important;
}
/* Custom styles for localization form integration */
#footer-new .country-selector {
min-width: 200px;
}
#footer-new .country-selector__selected-display {
padding: 8px 12px;
cursor: pointer;
transition: border-color 0.2s;
}
#footer-new .country-selector__selected-display:hover {
border-color: #f97316;
}
#footer-new .country-selector__selected-display:focus-within {
outline: 2px solid #f97316;
outline-offset: 2px;
}
/* Ensure proper spacing for social icons */
#footer-new [role="list"] {
list-style: none;
padding: 0;
margin: 0;
}
/* Smooth transitions for all interactive elements */
#footer-new a,
#footer-new button {
transition: all 0.2s ease-in-out;
}
/* High contrast mode support */
@media (prefers-contrast: high) {
#footer-new {
border-top: 2px solid currentColor;
}
#footer-new a:focus,
#footer-new button:focus {
outline-width: 3px;
}
}
/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
#footer-new * {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
.footer-new__logo {
width: 300px;
height: 120px;
}
@media (max-width: 768px) {
.footer-new__logo {
width: 200px;
height: 85px;
}
}
.new-footer-klaviyo-form button[type="button"] {
font-size: 0 !important;
}
.new-footer-klaviyo-form button[type="button"]::before {
content: "";
display: inline-block;
width: 19px;
height: 16px;
background-image: url("data:image/svg+xml;utf8,");
background-repeat: no-repeat;
background-size: contain;
margin-right: 6px; /* spacing before text */
vertical-align: middle;
}
function closeKlaviyoOutOfStockModal() {
let modalElem = document.getElementById("klaviyo_modal");
modalElem.style.display = "none";
document.getElementById('back-in-stock').innerHTML = ""
document.body.classList.remove('back-in-stock-opned')
}
function successKlaviyoOutOfStockModal() {
document.getElementById("klaviyo_out_of_stock_form").innerHTML = `
We’ll notify you when the product is back in stock!
You will receive an email when the product is back in stock! `; } function createKlaviyoOutOfStockSubscriptionModal(variantId, productTitle, variantTitle, backDate, image) { let modalElem = document.createElement("div"); modalElem.innerHTML = `
We’ll notify you when the product is back in stock!
${productTitle}
${variantTitle}
Estimated to be back in stock: ${backDate}
Email
Notify me when available
`
modalElem.id = "klaviyo_modal";
modalElem.classList.add("klaviyo_modal");
modalElem.style.display = "block";
return modalElem;
}
function klaviyoFormValidateEmail(email) {
return String(email)
.toLowerCase()
.match(
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
);
};
window.openKlaviyoStockAlertSubscriptionForm = function(variantId, productTitle, variantTitle, backDate, image) {
let modalElem = createKlaviyoOutOfStockSubscriptionModal(variantId, productTitle, variantTitle, backDate, image);
document.getElementById('back-in-stock').appendChild(modalElem);
document.body.classList.add('back-in-stock-opned')
document.querySelectorAll('.klaviyo_modal_close_triger').forEach(item => {
item.addEventListener("click", closeKlaviyoOutOfStockModal);
})
document.getElementById("klaviyo_out_of_stock_form_button").addEventListener("click", function(evt) {
evt.stopPropagation();
const email = document.getElementById("Klaviyo_out_of_stock_email").value;
const emailValidation = klaviyoFormValidateEmail(email);
console.log(email, variantId, 'email, variantId');
if (!emailValidation) return;
const data = {
data: {
type: "back-in-stock-subscription",
attributes: {
profile: {
data: {
type: "profile",
attributes: {
email: email
}
}
},
channels: ["EMAIL"]
},
relationships: {
variant: {
data: {
type: "catalog-variant",
id: `$shopify:::$default:::${variantId}`
}
}
}
}
};
fetch("https://a.klaviyo.com/client/back-in-stock-subscriptions/?company_id=MfVp5f", {
method: "POST",
headers: {
"Content-Type": "application/json",
"revision": "2024-06-15"
},
body: JSON.stringify(data)
})
.then(async res => {
if (!res.ok) {
const errorText = await res.text(); // Don't assume JSON here
console.error("Klaviyo API error:", errorText);
throw new Error("Failed to subscribe");
}
// Only try parsing JSON if there's content
const contentType = res.headers.get("content-type") || "";
if (contentType.includes("application/json")) {
const result = await res.json();
console.log("Subscription success:", result);
}
// Run your success handler
successKlaviyoOutOfStockModal();
})
.catch(err => {
console.error("Klaviyo Back-in-Stock Error:", err);
});
});
document.getElementById("Klaviyo_out_of_stock_email").addEventListener("input", function(evt) {
let email = document.getElementById("Klaviyo_out_of_stock_email").value;
let emailValidation = klaviyoFormValidateEmail(email)
if (emailValidation) {
document.getElementById('klaviyo_out_of_stock_form_button').removeAttribute("disabled");
}
else {
document.getElementById("klaviyo_out_of_stock_form_button").setAttribute("disabled", "true");
}
})
}
window.upsell_popup = {
title : null,
subtitle : null,
info : null,
product_handle : "",
product_id : 1234,
product_image : "//www.livemomentous.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12_550x.gif",
product_variants : [
],
base_product_id : 1234
}
if (window.location.pathname == '/a/account/login') {
window.location.replace('/tools/recurring/login/');
}
window.addEventListener('load', function() {
var _learnq = window._learnq || [];
function addedToCart() {
fetch(`${window.location.origin}/cart.js`)
.then(res => res.clone().json().then(data => {
var cart = {
total_price: data.total_price/100,
$value: data.total_price/100,
total_discount: data.total_discount,
original_total_price: data.original_total_price/100,
items: data.items
}
if (item !== 'undefined') {
cart = Object.assign(cart, item)
}
if (klAjax) {
_learnq.push(['track', 'Added to Cart', cart]);
klAjax = false;
}
}))
};
(function (ns, fetch) {
ns.fetch = function() {
const response = fetch.apply(this, arguments);
response.then(res => {
if (`${window.location.origin}/cart/add.js`
.includes(res.url)) {
addedToCart()
}
});
return response
}
}(window, window.fetch));
var klAjax = true;
var atcButtons = document.querySelectorAll("form[action*='/cart/add'] button[type='submit']");
for (var i = 0; i {
window.ShopifyAnalytics.meta.selectedVariantId = '45554572951735';
console.log(
'window.ShopifyAnalytics.meta.selectedVariantId:',
window.ShopifyAnalytics.meta.selectedVariantId
);
}, 5000);
.rebuy-product-actions .subscription-checkbox .slider.round,
.buttons-wrappers button:nth-of-type(2) {
display: none;
}
.siena-iframe {
display: none;
}
@media (max-width: 1366px) {
.siena-iframe {
z-index: 39;
}
.siena-iframe.siena-iframe--bottom-0,
.siena-iframe.siena-iframe--fullscreen{
z-index: 9999999;
}
}
ttd_dom_ready( function() {
if (typeof TTDUniversalPixelApi === 'function') {
var universalPixelApi = new TTDUniversalPixelApi();
universalPixelApi.init("h4w8qq9", ["k1r6x4d"], "https://insight.adsrvr.org/track/up");
}
});
document.querySelectorAll('button[aria-label*="Add to Bag"]').forEach(function(btn) {
var productn = btn.getAttribute('aria-label').slice(11)
btn.addEventListener('click', function(event) {
var conversionPixel = new Image();
conversionPixel.src = "https://insight.adsrvr.org/track/pxl/?adv=h4w8qq9&ct=0:fmme5s8&fmt=3&td1=" + productn + "&ts=" + (new Date()).getTime(); // Adding a unique ID to prevent caching
conversionPixel.height = 1;
conversionPixel.width = 1;
conversionPixel.style.display = "none"; // Hide the pixel
document.body.appendChild(conversionPixel);
});
});
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
{{ frequencyLabel(frequency, product.subscription_interval) }}
Quantity
{{ n }}
Sale price
Original price
Price
Powered by Rebuy
0 ? 'is-visible' : 'is-hidden']">
:
0">
{{ variant.title }}
{{ value }}
0">
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
Search
Search for products, collections, pages, and articles
.search-form-wrapper {
position: relative;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
isolation: isolate;
}
.search-form__input:focus {
border: 1px solid #000;
}
.search-form__results {
width: 480px;
border-radius: 10px;
border: 1px solid #E5E7EB;
background: #FFF;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
top: 100%;
}
@media(max-width: 640px) {
.search-form__results {
width: 100%;
border-radius: 10px;
border: none;
margin-top: 0;
}
}
.search-form__results.show {
display: block;
}
.search-result-divider {
border-top: 1px solid var(--grey-100, #e5e5e5);
}
.search-product-img {
width: 5rem;
height: 5rem;
}
@media(max-width: 640px) {
.search-product-img {
width: 70px;
height: 70px;
}
}
.atc-btn[data-loading] {
opacity: 0.6;
pointer-events: none;
}
.atc-btn[data-added] {
background-color: #2d7a3a;
}
.search-form__results.is-loading::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, transparent 0%, var(--grey-900, #171717) 50%, transparent 100%);
background-size: 200% 100%;
animation: search-loading-shimmer 1.2s ease-in-out infinite;
pointer-events: none;
}
.search-form__results-content {
max-height: calc(100vh - 170px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
}
.search-result-divider {
position: sticky;
bottom: 0;
background-color: #FFF;
z-index: 10;
}
@keyframes search-loading-shimmer {
0% { background-position: -100% 0; }
100% { background-position: 200% 0; }
}
@media(max-width: 640px) {
.search-product-row {
flex-direction: column;
align-items: flex-start !important;
}
.search-recommended-section {
display: none;
}
}
.query-item-text *,
.query-item-text {
white-space: nowrap;
}
.query-item-text mark {
background-color: #FFFADF;
color: inherit;
border-radius: 2px;
}
.search-form__clear-btn {
background: none;
border: none;
padding: 0;
cursor: pointer;
line-height: 0;
color: var(--grey-400, #999);
}
.search-form__clear-btn:hover svg path {
stroke: var(--grey-700, #404040);
}
(function() {
'use strict';
const SEARCH_ICON = `
`;
// Guard: only define the class once even if snippet is rendered multiple times
if (!window.MomentousPredictiveSearch) {
window.MomentousPredictiveSearch = class {
constructor(wrapper) {
this.wrapper = wrapper;
this.input = wrapper.querySelector('[data-search-input]');
this.resultsContainer = wrapper.querySelector('[data-search-results]');
this.resultsContent = wrapper.querySelector('[data-search-results-content]');
this.form = wrapper.querySelector('.search-form');
this.submitBtn = wrapper.querySelector('[data-search-submit]');
this.clearBtn = wrapper.querySelector('[data-search-clear]');
this.debounceTimer = null;
this.currentRequest = null;
this.currentQuery = '';
this.minQueryLength = 2;
this.debounceDelay = 300;
this.cache = new Map();
this.requestId = 0;
this.init();
}
init() {
this.input.addEventListener('input', (e) => {
this.handleInput(e.target.value);
this.updateClearBtn();
});
if (this.clearBtn) {
this.clearBtn.addEventListener('click', () => {
this.input.value = '';
this.currentQuery = '';
this.hideResults();
this.updateClearBtn();
this.input.focus();
});
}
this.input.addEventListener('focus', () => {
if (this.input.value.length >= this.minQueryLength) {
this.showResults();
}
});
this.input.addEventListener('touchend', (e) => {
e.stopPropagation();
this.input.focus();
});
this.input.addEventListener('touchstart', (e) => {
e.stopPropagation();
}, { passive: true });
const handleOutsideInteraction = (e) => {
if (!this.wrapper.contains(e.target)) {
const sidebarPanel = document.getElementById('ss-panel');
if (sidebarPanel && sidebarPanel.contains(this.wrapper) && sidebarPanel.contains(e.target)) {
return;
}
this.hideResults();
}
};
document.addEventListener('click', handleOutsideInteraction);
document.addEventListener('touchstart', handleOutsideInteraction, { passive: true });
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') this.hideResults();
});
}
updateClearBtn() {
const show = this.input.value.length >= this.minQueryLength;
if (this.clearBtn) this.clearBtn.classList.toggle('hidden', !show);
if (this.submitBtn) this.submitBtn.classList.toggle('hidden', show);
}
handleInput(query) {
const trimmedQuery = query.trim();
if (this.debounceTimer) clearTimeout(this.debounceTimer);
if (trimmedQuery.length {
this.fetchSearchData(trimmedQuery);
}, this.debounceDelay);
}
async fetchSearchData(query) {
if (this.cache.has(query)) {
const cached = this.cache.get(query);
this.setLoadingState(false);
this.renderResults(cached.results, query, cached.recommended);
return;
}
if (this.currentRequest) {
this.currentRequest.abort();
this.currentRequest = null;
}
const requestId = ++this.requestId;
const controller = new AbortController();
this.currentRequest = controller;
const baseUrl = window.Shopify?.routes?.root || '/';
const apiUrl = `${baseUrl}search/suggest.json?q=${encodeURIComponent(query)}&resources[type]=product,query&resources[limit]=5&resources[limit_scope]=each`;
try {
const response = await fetch(apiUrl, {
signal: controller.signal,
headers: { 'Accept': 'application/json' }
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
if (requestId !== this.requestId) return;
this.currentRequest = null;
const results = data.resources?.results || {};
if (this.cache.size > 50) this.cache.clear();
this.cache.set(query, { results, recommended: null });
this.setLoadingState(false);
this.renderResults(results, query, null);
} catch (error) {
if (error.name === 'AbortError') return;
if (requestId !== this.requestId) return;
console.error('Predictive search error:', error);
this.setLoadingState(false);
this.showError();
}
}
async fetchRecommendations(productId) {
try {
const baseUrl = window.Shopify?.routes?.root || '/';
const url = `${baseUrl}recommendations/products.json?product_id=${productId}&limit=6&intent=related`;
const response = await fetch(url, { headers: { 'Accept': 'application/json' } });
if (!response.ok) return [];
const data = await response.json();
return (data.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 3);
} catch (e) {
return [];
}
}
async addToCart(variantId, btn) {
btn.setAttribute('data-loading', '');
btn.textContent = 'Adding...';
try {
const response = await fetch('/cart/add.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify({ id: variantId, quantity: 1 })
});
if (!response.ok) throw new Error('Failed to add to cart');
btn.removeAttribute('data-loading');
btn.setAttribute('data-added', '');
btn.textContent = 'Added!';
document.dispatchEvent(new CustomEvent('cart:refresh'));
setTimeout(() => {
btn.removeAttribute('data-added');
btn.textContent = 'Add to Cart';
}, 2000);
} catch (e) {
btn.removeAttribute('data-loading');
btn.textContent = 'Add to Cart';
console.error('ATC error:', e);
}
}
bindAtcButtons() {
this.resultsContent.querySelectorAll('.atc-btn').forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const variantId = btn.dataset.variantId;
if (variantId) this.addToCart(variantId, btn);
});
});
}
renderResults(results, query, preloadedRecommended) {
if (!results || ((!results.products || results.products.length === 0) && (!results.queries || results.queries.length === 0))) {
this.resultsContent.innerHTML = `
No results found for "${this.escapeHtml(query)}"
`;
this.showResults();
return;
}
const products = (results.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 4);
const queries = (results.queries || []).slice(0, 4);
const firstProductId = products.length > 0 ? products[0].id : null;
let html = '';
if (products.length > 0) {
html += ``;
products.forEach(product => {
html += this.renderMatchedProduct(product);
});
html += `
`;
}
if (queries.length > 0) {
html += `
Top Searches
- ${SEARCH_ICON}
${queries.map(q => this.renderQueryItem(q)).join('')}
`;
}
const searchUrl = (window.Shopify?.routes?.root || '/') + `search?q=${encodeURIComponent(query)}&type=product`;
html += `
View all results for “${this.escapeHtml(query)}”
`;
if (firstProductId) {
if (preloadedRecommended && preloadedRecommended.length > 0) {
html += this.renderRecommendedSection(preloadedRecommended);
} else if (preloadedRecommended === null) {
html += `
`;
}
}
this.resultsContent.innerHTML = html;
this.showResults();
this.bindAtcButtons();
if (firstProductId && preloadedRecommended === null) {
this.fetchAndPatchRecommendations(firstProductId, query);
}
}
renderMatchedProduct(product) {
const imgUrl = product.featured_image?.url || product.image || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_220x220$1$2') : '';
const price = this.formatPrice(product.price, product.price_min, product.price_max);
const isSingleVariant = !product.variants || product.variants.length
${imgSized
? `
`
: `
`
}
${title}
${price ? `${price}
` : ''}
View Product
`;
}
renderSuggestedProduct(product) {
const imgUrl = product.featured_image?.src || product.featured_image?.url || product.images?.[0] || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_300x300$1$2') : '';
const productUrl = this.escapeHtml(product.url || `/products/${product.handle}`);
const title = this.escapeHtml(product.title || '');
return `
${imgSized
? `
`
: `
`
}
${title}
`;
}
renderQueryItem(item) {
const queryText = item.styled_text || this.escapeHtml(item.text || '');
const queryUrl = this.escapeHtml(item.url || '#');
return `
${queryText}
`;
}
renderRecommendedSection(recommended) {
return `
Suggested Products
${recommended.map(p => this.renderSuggestedProduct(p)).join('')}
`;
}
async fetchAndPatchRecommendations(productId, query) {
const recommended = await this.fetchRecommendations(productId);
if (query !== this.currentQuery) return;
if (this.cache.has(query)) {
this.cache.get(query).recommended = recommended;
}
const slot = this.resultsContent.querySelector('[data-recommendations-slot]');
if (!slot) return;
if (recommended.length > 0) {
slot.outerHTML = this.renderRecommendedSection(recommended);
} else {
slot.remove();
}
}
setLoadingState(loading) {
this.resultsContainer.classList.toggle('is-loading', loading);
if (loading && !this.resultsContainer.classList.contains('show')) {
this.showResults();
}
}
formatPrice(price, priceMin, priceMax) {
if (!price && !priceMin && !priceMax) return '';
const formatCurrency = (amount) => {
if (window.Shopify?.formatMoney) {
return window.Shopify.formatMoney(amount, window.Shopify.money_format || '$');
}
const currency = window.Shopify?.currency?.active || 'USD';
return new Intl.NumberFormat('en-US', { style: 'currency', currency }).format(amount);
};
if (priceMin && priceMax && priceMin !== priceMax) {
return `${formatCurrency(priceMin)} – ${formatCurrency(priceMax)}`;
}
return formatCurrency(price || priceMin || priceMax);
}
escapeHtml(text) {
if (text == null) return '';
const div = document.createElement('div');
div.textContent = String(text);
return div.innerHTML;
}
showError() {
this.resultsContent.innerHTML = `
Unable to load results. Please try again.
`;
this.showResults();
}
showResults() {
this.resultsContainer.classList.remove('hidden');
this.resultsContainer.classList.add('show');
}
hideResults() {
this.resultsContainer.classList.add('hidden');
this.resultsContainer.classList.remove('show');
}
};
} // end if (!window.MomentousPredictiveSearch)
function initPredictiveSearch() {
document.querySelectorAll('[data-search-form]').forEach(function(wrapper) {
if (!wrapper.__predictiveSearch) {
wrapper.__predictiveSearch = new window.MomentousPredictiveSearch(wrapper);
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initPredictiveSearch);
} else {
initPredictiveSearch();
}
})();
Recommended Products
Creatine - 60 Servings
£27.00
View Product
Creatine - 90 Servings
£33.00
View Product
Creatine Chews 150-Count
£39.00
View Product
#ss-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.45);
z-index: 400;
}
#ss-panel {
display: flex;
flex-direction: column;
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: 440px;
max-width: 100%;
background: #fff;
z-index: 401;
transform: translateX(100%);
transition: transform 0.3s ease;
box-shadow: -4px 0 24px rgba(0,0,0,0.1);
}
#ss-panel.open,
#ss-backdrop.open {
display: flex; /* backdrop uses display:block via override below */
}
#ss-backdrop.open { display: block; }
#ss-panel.open { transform: translateX(0); }
#ss-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px 20px;
border-bottom: 1px solid #e5e5e5;
flex-shrink: 0;
}
#ss-title {
font-size: 17px;
font-weight: 600;
color: #171717;
}
#ss-header button {
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #555;
line-height: 0;
}
#ss-body {
flex: 1;
min-height: 0;
overflow-y: auto;
padding: 18px 20px;
-webkit-overflow-scrolling: touch;
}
/* Results appear inline, not as a dropdown */
#ss-panel .search-form-wrapper { isolation: auto; }
#ss-panel .search-form__results {
position: static !important;
width: 100% !important;
border: none !important;
box-shadow: none !important;
border-radius: 0 !important;
margin-top: 10px !important;
}
#ss-panel .search-form__results-content {
padding: 0 !important;
}
/* Recommended */
#ss-recommended { margin-top: 20px; }
#ss-recommended-label {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #757575;
margin: 0 0 12px;
}
.ss-rec-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
border: 1px solid #e5e5e5;
border-radius: 8px;
text-decoration: none;
margin-bottom: 8px;
transition: background 0.15s;
}
.ss-rec-item:hover { background: #fafafa; }
.ss-rec-item img,
.ss-rec-img-placeholder {
width: 72px;
height: 72px;
border-radius: 6px;
object-fit: cover;
flex-shrink: 0;
background: #f0f0f0;
}
.ss-rec-info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 4px;
}
.ss-rec-title {
font-size: 13px;
font-weight: 600;
color: #171717;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.ss-rec-price {
font-size: 13px;
color: #737373;
}
#ss-recommended.hidden { display: none; }
var _ssScrollY = 0;
function openSearchSidebar() {
_ssScrollY = window.pageYOffset || document.documentElement.scrollTop;
document.body.style.position = 'fixed';
document.body.style.top = '-' + _ssScrollY + 'px';
document.body.style.width = '100%';
document.getElementById('ss-panel').classList.add('open');
document.getElementById('ss-backdrop').classList.add('open');
setTimeout(function() {
var input = document.querySelector('#ss-panel [data-search-input]');
if (input) input.focus();
}, 320);
}
function closeSearchSidebar() {
document.getElementById('ss-panel').classList.remove('open');
document.getElementById('ss-backdrop').classList.remove('open');
document.body.style.position = '';
document.body.style.top = '';
document.body.style.width = '';
window.scrollTo(0, _ssScrollY);
}
// Hide recommended when typing, show when empty
document.addEventListener('DOMContentLoaded', function() {
var input = document.querySelector('#ss-panel [data-search-input]');
var rec = document.getElementById('ss-recommended');
if (!input || !rec) return;
input.addEventListener('input', function() {
if (input.value.trim().length > 0) {
rec.classList.add('hidden');
} else {
rec.classList.remove('hidden');
}
});
// Clear button also restores recommended
var clearBtn = document.querySelector('#ss-panel [data-search-clear]');
if (clearBtn) {
clearBtn.addEventListener('click', function() {
setTimeout(function() { rec.classList.remove('hidden'); }, 20);
});
}
});
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeSearchSidebar();
});
.favicon {display: block;}
.recharge-theme {
/* App */
--recharge-app-background: #F9F8F4;
--recharge-app-container: 1200px;
--recharge-app-vertical-padding: 32px;
/* Brand colors */
--recharge-color-brand: #467C99;
/* Tints */
--recharge-color-brand-120: #38637a;
--recharge-color-brand-20: #6b96ad;
--recharge-color-brand-40: #90b0c2;
--recharge-color-brand-60: #b5cbd6;
--recharge-color-brand-75: #d1dee6;
--recharge-color-brand-85: #e3ebf0;
/* Neutral */
--recharge-color-neutral: hsl(201, 35%, 7%);
--recharge-color-neutral-80: hsl(201, 7%, 25%);
--recharge-color-neutral-70: hsl(201, 5%, 35%);
--recharge-color-neutral-40: hsl(201, 3%, 63%);
--recharge-color-neutral-10: hsl(201, 2%, 91%);
/* Links */
--recharge-button-secondary: #467C99;
--recharge-button-secondary-120: #38637a;
--recharge-button-secondary-60: #90b0c2;
/* Images */
--recharge-images-ratio: 1;
/* Cards */
--recharge-cards-background: #FFFFFF;
--recharge-cards-border-color: RGBA(0,0,0,0);
/* Fonts */
--recharge-typography-scale: 16px;
--recharge-typography-size-1: calc(3 * var(--recharge-typography-scale));
--recharge-typography-size-2: calc(2.25 * var(--recharge-typography-scale));
--recharge-typography-size-3: calc(1.625 * var(--recharge-typography-scale));
--recharge-typography-size-4: calc(1.25 * var(--recharge-typography-scale));
--recharge-typography-size-5: calc(1 * var(--recharge-typography-scale));
--recharge-typography-size-6: calc(.875 * var(--recharge-typography-scale));
/** Text **/
--recharge-typography-light: #FFFFFF;
--recharge-typography-primary: var(--recharge-color-neutral);
--recharge-typography-secondary: var(--recharge-color-neutral-70);
/* Corners */
--recharge-corners-radius: 8px;
--recharge-button-border-radius: 8px;
/* Views */
--recharge-views-background: #F9F8F4;
/* Buttons */
--recharge-button-font-family: inherit;
--recharge-button-brand: var(--recharge-color-brand);
--recharge-button-color: #FFFFFF;
}
(function() {
var initialCartState = [];
var previousCartStateKey = 'previousCartState';
var removedItemsKey = 'removedItemsState';
var previousCartState = [];
try {
previousCartState = JSON.parse(localStorage.getItem(previousCartStateKey) || '[]');
} catch (e) {
previousCartState = [];
}
var removedItems = previousCartState.filter(function(prevItem) {
return !initialCartState.some(function(currItem) {
return currItem.id === prevItem.id;
});
});
if (removedItems.length) {
localStorage.setItem(removedItemsKey, JSON.stringify(removedItems));
}
localStorage.setItem(previousCartStateKey, JSON.stringify(initialCartState));
})();
(function() {
var productId = "8258763423927";
var productTitle = "Creatine Chews 150-Count";
var productHandle = "creatine-monohydrate-chews";
var marketId = "21022965943";
var storageKey = 'oe_viewedProducts';
function trackViewedProducts() {
if (!productId) return;
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
viewedProducts = [];
}
viewedProducts = viewedProducts.filter(function(p) { return p.id !== productId; });
viewedProducts.unshift({
id: productId,
title: productTitle,
handle: productHandle,
viewedAt: new Date().toISOString()
});
viewedProducts = viewedProducts.slice(0, 50);
localStorage.setItem(storageKey, JSON.stringify(viewedProducts));
updateCartAttributes();
}
function updateCartAttributes() {
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
return;
}
var productIds = viewedProducts.map(function(p) { return p.id; }).slice(0, 10).join(',');
var cartAttributes = {};
if (productIds) cartAttributes['__upsell_recently_viewed_products'] = productIds;
if (marketId) cartAttributes['__upsell_market_id'] = marketId;
if (Object.keys(cartAttributes).length === 0) return;
fetch(window.Shopify.routes.root + 'cart/update.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ attributes: cartAttributes })
}).catch(function() {});
}
trackViewedProducts();
window.addEventListener('popstate', trackViewedProducts);
})();
window['ShopifyForms'] = {
...window['ShopifyForms'],
currentPageType: "product"
}; Price History
Loading...
${productTitle}
${variantTitle}
Estimated to be back in stock: ${backDate}
Email
Notify me when available
`
modalElem.id = "klaviyo_modal";
modalElem.classList.add("klaviyo_modal");
modalElem.style.display = "block";
return modalElem;
}
function klaviyoFormValidateEmail(email) {
return String(email)
.toLowerCase()
.match(
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
);
};
window.openKlaviyoStockAlertSubscriptionForm = function(variantId, productTitle, variantTitle, backDate, image) {
let modalElem = createKlaviyoOutOfStockSubscriptionModal(variantId, productTitle, variantTitle, backDate, image);
document.getElementById('back-in-stock').appendChild(modalElem);
document.body.classList.add('back-in-stock-opned')
document.querySelectorAll('.klaviyo_modal_close_triger').forEach(item => {
item.addEventListener("click", closeKlaviyoOutOfStockModal);
})
document.getElementById("klaviyo_out_of_stock_form_button").addEventListener("click", function(evt) {
evt.stopPropagation();
const email = document.getElementById("Klaviyo_out_of_stock_email").value;
const emailValidation = klaviyoFormValidateEmail(email);
console.log(email, variantId, 'email, variantId');
if (!emailValidation) return;
const data = {
data: {
type: "back-in-stock-subscription",
attributes: {
profile: {
data: {
type: "profile",
attributes: {
email: email
}
}
},
channels: ["EMAIL"]
},
relationships: {
variant: {
data: {
type: "catalog-variant",
id: `$shopify:::$default:::${variantId}`
}
}
}
}
};
fetch("https://a.klaviyo.com/client/back-in-stock-subscriptions/?company_id=MfVp5f", {
method: "POST",
headers: {
"Content-Type": "application/json",
"revision": "2024-06-15"
},
body: JSON.stringify(data)
})
.then(async res => {
if (!res.ok) {
const errorText = await res.text(); // Don't assume JSON here
console.error("Klaviyo API error:", errorText);
throw new Error("Failed to subscribe");
}
// Only try parsing JSON if there's content
const contentType = res.headers.get("content-type") || "";
if (contentType.includes("application/json")) {
const result = await res.json();
console.log("Subscription success:", result);
}
// Run your success handler
successKlaviyoOutOfStockModal();
})
.catch(err => {
console.error("Klaviyo Back-in-Stock Error:", err);
});
});
document.getElementById("Klaviyo_out_of_stock_email").addEventListener("input", function(evt) {
let email = document.getElementById("Klaviyo_out_of_stock_email").value;
let emailValidation = klaviyoFormValidateEmail(email)
if (emailValidation) {
document.getElementById('klaviyo_out_of_stock_form_button').removeAttribute("disabled");
}
else {
document.getElementById("klaviyo_out_of_stock_form_button").setAttribute("disabled", "true");
}
})
}
window.upsell_popup = {
title : null,
subtitle : null,
info : null,
product_handle : "",
product_id : 1234,
product_image : "//www.livemomentous.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12_550x.gif",
product_variants : [
],
base_product_id : 1234
}
if (window.location.pathname == '/a/account/login') {
window.location.replace('/tools/recurring/login/');
}
window.addEventListener('load', function() {
var _learnq = window._learnq || [];
function addedToCart() {
fetch(`${window.location.origin}/cart.js`)
.then(res => res.clone().json().then(data => {
var cart = {
total_price: data.total_price/100,
$value: data.total_price/100,
total_discount: data.total_discount,
original_total_price: data.original_total_price/100,
items: data.items
}
if (item !== 'undefined') {
cart = Object.assign(cart, item)
}
if (klAjax) {
_learnq.push(['track', 'Added to Cart', cart]);
klAjax = false;
}
}))
};
(function (ns, fetch) {
ns.fetch = function() {
const response = fetch.apply(this, arguments);
response.then(res => {
if (`${window.location.origin}/cart/add.js`
.includes(res.url)) {
addedToCart()
}
});
return response
}
}(window, window.fetch));
var klAjax = true;
var atcButtons = document.querySelectorAll("form[action*='/cart/add'] button[type='submit']");
for (var i = 0; i {
window.ShopifyAnalytics.meta.selectedVariantId = '45554572951735';
console.log(
'window.ShopifyAnalytics.meta.selectedVariantId:',
window.ShopifyAnalytics.meta.selectedVariantId
);
}, 5000);
.rebuy-product-actions .subscription-checkbox .slider.round,
.buttons-wrappers button:nth-of-type(2) {
display: none;
}
.siena-iframe {
display: none;
}
@media (max-width: 1366px) {
.siena-iframe {
z-index: 39;
}
.siena-iframe.siena-iframe--bottom-0,
.siena-iframe.siena-iframe--fullscreen{
z-index: 9999999;
}
}
ttd_dom_ready( function() {
if (typeof TTDUniversalPixelApi === 'function') {
var universalPixelApi = new TTDUniversalPixelApi();
universalPixelApi.init("h4w8qq9", ["k1r6x4d"], "https://insight.adsrvr.org/track/up");
}
});
document.querySelectorAll('button[aria-label*="Add to Bag"]').forEach(function(btn) {
var productn = btn.getAttribute('aria-label').slice(11)
btn.addEventListener('click', function(event) {
var conversionPixel = new Image();
conversionPixel.src = "https://insight.adsrvr.org/track/pxl/?adv=h4w8qq9&ct=0:fmme5s8&fmt=3&td1=" + productn + "&ts=" + (new Date()).getTime(); // Adding a unique ID to prevent caching
conversionPixel.height = 1;
conversionPixel.width = 1;
conversionPixel.style.display = "none"; // Hide the pixel
document.body.appendChild(conversionPixel);
});
});
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
{{ frequencyLabel(frequency, product.subscription_interval) }}
Quantity
{{ n }}
Sale price
Original price
Price
Powered by Rebuy
0 ? 'is-visible' : 'is-hidden']">
:
0">
{{ variant.title }}
{{ value }}
0">
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
Search
Search for products, collections, pages, and articles
.search-form-wrapper {
position: relative;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
isolation: isolate;
}
.search-form__input:focus {
border: 1px solid #000;
}
.search-form__results {
width: 480px;
border-radius: 10px;
border: 1px solid #E5E7EB;
background: #FFF;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
top: 100%;
}
@media(max-width: 640px) {
.search-form__results {
width: 100%;
border-radius: 10px;
border: none;
margin-top: 0;
}
}
.search-form__results.show {
display: block;
}
.search-result-divider {
border-top: 1px solid var(--grey-100, #e5e5e5);
}
.search-product-img {
width: 5rem;
height: 5rem;
}
@media(max-width: 640px) {
.search-product-img {
width: 70px;
height: 70px;
}
}
.atc-btn[data-loading] {
opacity: 0.6;
pointer-events: none;
}
.atc-btn[data-added] {
background-color: #2d7a3a;
}
.search-form__results.is-loading::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, transparent 0%, var(--grey-900, #171717) 50%, transparent 100%);
background-size: 200% 100%;
animation: search-loading-shimmer 1.2s ease-in-out infinite;
pointer-events: none;
}
.search-form__results-content {
max-height: calc(100vh - 170px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
}
.search-result-divider {
position: sticky;
bottom: 0;
background-color: #FFF;
z-index: 10;
}
@keyframes search-loading-shimmer {
0% { background-position: -100% 0; }
100% { background-position: 200% 0; }
}
@media(max-width: 640px) {
.search-product-row {
flex-direction: column;
align-items: flex-start !important;
}
.search-recommended-section {
display: none;
}
}
.query-item-text *,
.query-item-text {
white-space: nowrap;
}
.query-item-text mark {
background-color: #FFFADF;
color: inherit;
border-radius: 2px;
}
.search-form__clear-btn {
background: none;
border: none;
padding: 0;
cursor: pointer;
line-height: 0;
color: var(--grey-400, #999);
}
.search-form__clear-btn:hover svg path {
stroke: var(--grey-700, #404040);
}
(function() {
'use strict';
const SEARCH_ICON = `
`;
// Guard: only define the class once even if snippet is rendered multiple times
if (!window.MomentousPredictiveSearch) {
window.MomentousPredictiveSearch = class {
constructor(wrapper) {
this.wrapper = wrapper;
this.input = wrapper.querySelector('[data-search-input]');
this.resultsContainer = wrapper.querySelector('[data-search-results]');
this.resultsContent = wrapper.querySelector('[data-search-results-content]');
this.form = wrapper.querySelector('.search-form');
this.submitBtn = wrapper.querySelector('[data-search-submit]');
this.clearBtn = wrapper.querySelector('[data-search-clear]');
this.debounceTimer = null;
this.currentRequest = null;
this.currentQuery = '';
this.minQueryLength = 2;
this.debounceDelay = 300;
this.cache = new Map();
this.requestId = 0;
this.init();
}
init() {
this.input.addEventListener('input', (e) => {
this.handleInput(e.target.value);
this.updateClearBtn();
});
if (this.clearBtn) {
this.clearBtn.addEventListener('click', () => {
this.input.value = '';
this.currentQuery = '';
this.hideResults();
this.updateClearBtn();
this.input.focus();
});
}
this.input.addEventListener('focus', () => {
if (this.input.value.length >= this.minQueryLength) {
this.showResults();
}
});
this.input.addEventListener('touchend', (e) => {
e.stopPropagation();
this.input.focus();
});
this.input.addEventListener('touchstart', (e) => {
e.stopPropagation();
}, { passive: true });
const handleOutsideInteraction = (e) => {
if (!this.wrapper.contains(e.target)) {
const sidebarPanel = document.getElementById('ss-panel');
if (sidebarPanel && sidebarPanel.contains(this.wrapper) && sidebarPanel.contains(e.target)) {
return;
}
this.hideResults();
}
};
document.addEventListener('click', handleOutsideInteraction);
document.addEventListener('touchstart', handleOutsideInteraction, { passive: true });
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') this.hideResults();
});
}
updateClearBtn() {
const show = this.input.value.length >= this.minQueryLength;
if (this.clearBtn) this.clearBtn.classList.toggle('hidden', !show);
if (this.submitBtn) this.submitBtn.classList.toggle('hidden', show);
}
handleInput(query) {
const trimmedQuery = query.trim();
if (this.debounceTimer) clearTimeout(this.debounceTimer);
if (trimmedQuery.length {
this.fetchSearchData(trimmedQuery);
}, this.debounceDelay);
}
async fetchSearchData(query) {
if (this.cache.has(query)) {
const cached = this.cache.get(query);
this.setLoadingState(false);
this.renderResults(cached.results, query, cached.recommended);
return;
}
if (this.currentRequest) {
this.currentRequest.abort();
this.currentRequest = null;
}
const requestId = ++this.requestId;
const controller = new AbortController();
this.currentRequest = controller;
const baseUrl = window.Shopify?.routes?.root || '/';
const apiUrl = `${baseUrl}search/suggest.json?q=${encodeURIComponent(query)}&resources[type]=product,query&resources[limit]=5&resources[limit_scope]=each`;
try {
const response = await fetch(apiUrl, {
signal: controller.signal,
headers: { 'Accept': 'application/json' }
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
if (requestId !== this.requestId) return;
this.currentRequest = null;
const results = data.resources?.results || {};
if (this.cache.size > 50) this.cache.clear();
this.cache.set(query, { results, recommended: null });
this.setLoadingState(false);
this.renderResults(results, query, null);
} catch (error) {
if (error.name === 'AbortError') return;
if (requestId !== this.requestId) return;
console.error('Predictive search error:', error);
this.setLoadingState(false);
this.showError();
}
}
async fetchRecommendations(productId) {
try {
const baseUrl = window.Shopify?.routes?.root || '/';
const url = `${baseUrl}recommendations/products.json?product_id=${productId}&limit=6&intent=related`;
const response = await fetch(url, { headers: { 'Accept': 'application/json' } });
if (!response.ok) return [];
const data = await response.json();
return (data.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 3);
} catch (e) {
return [];
}
}
async addToCart(variantId, btn) {
btn.setAttribute('data-loading', '');
btn.textContent = 'Adding...';
try {
const response = await fetch('/cart/add.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify({ id: variantId, quantity: 1 })
});
if (!response.ok) throw new Error('Failed to add to cart');
btn.removeAttribute('data-loading');
btn.setAttribute('data-added', '');
btn.textContent = 'Added!';
document.dispatchEvent(new CustomEvent('cart:refresh'));
setTimeout(() => {
btn.removeAttribute('data-added');
btn.textContent = 'Add to Cart';
}, 2000);
} catch (e) {
btn.removeAttribute('data-loading');
btn.textContent = 'Add to Cart';
console.error('ATC error:', e);
}
}
bindAtcButtons() {
this.resultsContent.querySelectorAll('.atc-btn').forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const variantId = btn.dataset.variantId;
if (variantId) this.addToCart(variantId, btn);
});
});
}
renderResults(results, query, preloadedRecommended) {
if (!results || ((!results.products || results.products.length === 0) && (!results.queries || results.queries.length === 0))) {
this.resultsContent.innerHTML = `
No results found for "${this.escapeHtml(query)}"
`;
this.showResults();
return;
}
const products = (results.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 4);
const queries = (results.queries || []).slice(0, 4);
const firstProductId = products.length > 0 ? products[0].id : null;
let html = '';
if (products.length > 0) {
html += ``;
products.forEach(product => {
html += this.renderMatchedProduct(product);
});
html += `
`;
}
if (queries.length > 0) {
html += `
Top Searches
- ${SEARCH_ICON}
${queries.map(q => this.renderQueryItem(q)).join('')}
`;
}
const searchUrl = (window.Shopify?.routes?.root || '/') + `search?q=${encodeURIComponent(query)}&type=product`;
html += `
View all results for “${this.escapeHtml(query)}”
`;
if (firstProductId) {
if (preloadedRecommended && preloadedRecommended.length > 0) {
html += this.renderRecommendedSection(preloadedRecommended);
} else if (preloadedRecommended === null) {
html += `
`;
}
}
this.resultsContent.innerHTML = html;
this.showResults();
this.bindAtcButtons();
if (firstProductId && preloadedRecommended === null) {
this.fetchAndPatchRecommendations(firstProductId, query);
}
}
renderMatchedProduct(product) {
const imgUrl = product.featured_image?.url || product.image || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_220x220$1$2') : '';
const price = this.formatPrice(product.price, product.price_min, product.price_max);
const isSingleVariant = !product.variants || product.variants.length
${imgSized
? `
`
: `
`
}
${title}
${price ? `${price}
` : ''}
View Product
`;
}
renderSuggestedProduct(product) {
const imgUrl = product.featured_image?.src || product.featured_image?.url || product.images?.[0] || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_300x300$1$2') : '';
const productUrl = this.escapeHtml(product.url || `/products/${product.handle}`);
const title = this.escapeHtml(product.title || '');
return `
${imgSized
? `
`
: `
`
}
${title}
`;
}
renderQueryItem(item) {
const queryText = item.styled_text || this.escapeHtml(item.text || '');
const queryUrl = this.escapeHtml(item.url || '#');
return `
${queryText}
`;
}
renderRecommendedSection(recommended) {
return `
Suggested Products
${recommended.map(p => this.renderSuggestedProduct(p)).join('')}
`;
}
async fetchAndPatchRecommendations(productId, query) {
const recommended = await this.fetchRecommendations(productId);
if (query !== this.currentQuery) return;
if (this.cache.has(query)) {
this.cache.get(query).recommended = recommended;
}
const slot = this.resultsContent.querySelector('[data-recommendations-slot]');
if (!slot) return;
if (recommended.length > 0) {
slot.outerHTML = this.renderRecommendedSection(recommended);
} else {
slot.remove();
}
}
setLoadingState(loading) {
this.resultsContainer.classList.toggle('is-loading', loading);
if (loading && !this.resultsContainer.classList.contains('show')) {
this.showResults();
}
}
formatPrice(price, priceMin, priceMax) {
if (!price && !priceMin && !priceMax) return '';
const formatCurrency = (amount) => {
if (window.Shopify?.formatMoney) {
return window.Shopify.formatMoney(amount, window.Shopify.money_format || '$');
}
const currency = window.Shopify?.currency?.active || 'USD';
return new Intl.NumberFormat('en-US', { style: 'currency', currency }).format(amount);
};
if (priceMin && priceMax && priceMin !== priceMax) {
return `${formatCurrency(priceMin)} – ${formatCurrency(priceMax)}`;
}
return formatCurrency(price || priceMin || priceMax);
}
escapeHtml(text) {
if (text == null) return '';
const div = document.createElement('div');
div.textContent = String(text);
return div.innerHTML;
}
showError() {
this.resultsContent.innerHTML = `
Unable to load results. Please try again.
`;
this.showResults();
}
showResults() {
this.resultsContainer.classList.remove('hidden');
this.resultsContainer.classList.add('show');
}
hideResults() {
this.resultsContainer.classList.add('hidden');
this.resultsContainer.classList.remove('show');
}
};
} // end if (!window.MomentousPredictiveSearch)
function initPredictiveSearch() {
document.querySelectorAll('[data-search-form]').forEach(function(wrapper) {
if (!wrapper.__predictiveSearch) {
wrapper.__predictiveSearch = new window.MomentousPredictiveSearch(wrapper);
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initPredictiveSearch);
} else {
initPredictiveSearch();
}
})();
Recommended Products
Creatine - 60 Servings
£27.00
View Product
Creatine - 90 Servings
£33.00
View Product
Creatine Chews 150-Count
£39.00
View Product
#ss-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.45);
z-index: 400;
}
#ss-panel {
display: flex;
flex-direction: column;
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: 440px;
max-width: 100%;
background: #fff;
z-index: 401;
transform: translateX(100%);
transition: transform 0.3s ease;
box-shadow: -4px 0 24px rgba(0,0,0,0.1);
}
#ss-panel.open,
#ss-backdrop.open {
display: flex; /* backdrop uses display:block via override below */
}
#ss-backdrop.open { display: block; }
#ss-panel.open { transform: translateX(0); }
#ss-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px 20px;
border-bottom: 1px solid #e5e5e5;
flex-shrink: 0;
}
#ss-title {
font-size: 17px;
font-weight: 600;
color: #171717;
}
#ss-header button {
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #555;
line-height: 0;
}
#ss-body {
flex: 1;
min-height: 0;
overflow-y: auto;
padding: 18px 20px;
-webkit-overflow-scrolling: touch;
}
/* Results appear inline, not as a dropdown */
#ss-panel .search-form-wrapper { isolation: auto; }
#ss-panel .search-form__results {
position: static !important;
width: 100% !important;
border: none !important;
box-shadow: none !important;
border-radius: 0 !important;
margin-top: 10px !important;
}
#ss-panel .search-form__results-content {
padding: 0 !important;
}
/* Recommended */
#ss-recommended { margin-top: 20px; }
#ss-recommended-label {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #757575;
margin: 0 0 12px;
}
.ss-rec-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
border: 1px solid #e5e5e5;
border-radius: 8px;
text-decoration: none;
margin-bottom: 8px;
transition: background 0.15s;
}
.ss-rec-item:hover { background: #fafafa; }
.ss-rec-item img,
.ss-rec-img-placeholder {
width: 72px;
height: 72px;
border-radius: 6px;
object-fit: cover;
flex-shrink: 0;
background: #f0f0f0;
}
.ss-rec-info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 4px;
}
.ss-rec-title {
font-size: 13px;
font-weight: 600;
color: #171717;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.ss-rec-price {
font-size: 13px;
color: #737373;
}
#ss-recommended.hidden { display: none; }
var _ssScrollY = 0;
function openSearchSidebar() {
_ssScrollY = window.pageYOffset || document.documentElement.scrollTop;
document.body.style.position = 'fixed';
document.body.style.top = '-' + _ssScrollY + 'px';
document.body.style.width = '100%';
document.getElementById('ss-panel').classList.add('open');
document.getElementById('ss-backdrop').classList.add('open');
setTimeout(function() {
var input = document.querySelector('#ss-panel [data-search-input]');
if (input) input.focus();
}, 320);
}
function closeSearchSidebar() {
document.getElementById('ss-panel').classList.remove('open');
document.getElementById('ss-backdrop').classList.remove('open');
document.body.style.position = '';
document.body.style.top = '';
document.body.style.width = '';
window.scrollTo(0, _ssScrollY);
}
// Hide recommended when typing, show when empty
document.addEventListener('DOMContentLoaded', function() {
var input = document.querySelector('#ss-panel [data-search-input]');
var rec = document.getElementById('ss-recommended');
if (!input || !rec) return;
input.addEventListener('input', function() {
if (input.value.trim().length > 0) {
rec.classList.add('hidden');
} else {
rec.classList.remove('hidden');
}
});
// Clear button also restores recommended
var clearBtn = document.querySelector('#ss-panel [data-search-clear]');
if (clearBtn) {
clearBtn.addEventListener('click', function() {
setTimeout(function() { rec.classList.remove('hidden'); }, 20);
});
}
});
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeSearchSidebar();
});
.favicon {display: block;}
.recharge-theme {
/* App */
--recharge-app-background: #F9F8F4;
--recharge-app-container: 1200px;
--recharge-app-vertical-padding: 32px;
/* Brand colors */
--recharge-color-brand: #467C99;
/* Tints */
--recharge-color-brand-120: #38637a;
--recharge-color-brand-20: #6b96ad;
--recharge-color-brand-40: #90b0c2;
--recharge-color-brand-60: #b5cbd6;
--recharge-color-brand-75: #d1dee6;
--recharge-color-brand-85: #e3ebf0;
/* Neutral */
--recharge-color-neutral: hsl(201, 35%, 7%);
--recharge-color-neutral-80: hsl(201, 7%, 25%);
--recharge-color-neutral-70: hsl(201, 5%, 35%);
--recharge-color-neutral-40: hsl(201, 3%, 63%);
--recharge-color-neutral-10: hsl(201, 2%, 91%);
/* Links */
--recharge-button-secondary: #467C99;
--recharge-button-secondary-120: #38637a;
--recharge-button-secondary-60: #90b0c2;
/* Images */
--recharge-images-ratio: 1;
/* Cards */
--recharge-cards-background: #FFFFFF;
--recharge-cards-border-color: RGBA(0,0,0,0);
/* Fonts */
--recharge-typography-scale: 16px;
--recharge-typography-size-1: calc(3 * var(--recharge-typography-scale));
--recharge-typography-size-2: calc(2.25 * var(--recharge-typography-scale));
--recharge-typography-size-3: calc(1.625 * var(--recharge-typography-scale));
--recharge-typography-size-4: calc(1.25 * var(--recharge-typography-scale));
--recharge-typography-size-5: calc(1 * var(--recharge-typography-scale));
--recharge-typography-size-6: calc(.875 * var(--recharge-typography-scale));
/** Text **/
--recharge-typography-light: #FFFFFF;
--recharge-typography-primary: var(--recharge-color-neutral);
--recharge-typography-secondary: var(--recharge-color-neutral-70);
/* Corners */
--recharge-corners-radius: 8px;
--recharge-button-border-radius: 8px;
/* Views */
--recharge-views-background: #F9F8F4;
/* Buttons */
--recharge-button-font-family: inherit;
--recharge-button-brand: var(--recharge-color-brand);
--recharge-button-color: #FFFFFF;
}
(function() {
var initialCartState = [];
var previousCartStateKey = 'previousCartState';
var removedItemsKey = 'removedItemsState';
var previousCartState = [];
try {
previousCartState = JSON.parse(localStorage.getItem(previousCartStateKey) || '[]');
} catch (e) {
previousCartState = [];
}
var removedItems = previousCartState.filter(function(prevItem) {
return !initialCartState.some(function(currItem) {
return currItem.id === prevItem.id;
});
});
if (removedItems.length) {
localStorage.setItem(removedItemsKey, JSON.stringify(removedItems));
}
localStorage.setItem(previousCartStateKey, JSON.stringify(initialCartState));
})();
(function() {
var productId = "8258763423927";
var productTitle = "Creatine Chews 150-Count";
var productHandle = "creatine-monohydrate-chews";
var marketId = "21022965943";
var storageKey = 'oe_viewedProducts';
function trackViewedProducts() {
if (!productId) return;
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
viewedProducts = [];
}
viewedProducts = viewedProducts.filter(function(p) { return p.id !== productId; });
viewedProducts.unshift({
id: productId,
title: productTitle,
handle: productHandle,
viewedAt: new Date().toISOString()
});
viewedProducts = viewedProducts.slice(0, 50);
localStorage.setItem(storageKey, JSON.stringify(viewedProducts));
updateCartAttributes();
}
function updateCartAttributes() {
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
return;
}
var productIds = viewedProducts.map(function(p) { return p.id; }).slice(0, 10).join(',');
var cartAttributes = {};
if (productIds) cartAttributes['__upsell_recently_viewed_products'] = productIds;
if (marketId) cartAttributes['__upsell_market_id'] = marketId;
if (Object.keys(cartAttributes).length === 0) return;
fetch(window.Shopify.routes.root + 'cart/update.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ attributes: cartAttributes })
}).catch(function() {});
}
trackViewedProducts();
window.addEventListener('popstate', trackViewedProducts);
})();
window['ShopifyForms'] = {
...window['ShopifyForms'],
currentPageType: "product"
}; Price History
Loading...
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
{{ frequencyLabel(frequency, product.subscription_interval) }}
Quantity
{{ n }}
Sale price
Original price
Price
Powered by Rebuy
0 ? 'is-visible' : 'is-hidden']">
:
0">
{{ variant.title }}
{{ value }}
0">
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
Search
Search for products, collections, pages, and articles
.search-form-wrapper {
position: relative;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
isolation: isolate;
}
.search-form__input:focus {
border: 1px solid #000;
}
.search-form__results {
width: 480px;
border-radius: 10px;
border: 1px solid #E5E7EB;
background: #FFF;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
top: 100%;
}
@media(max-width: 640px) {
.search-form__results {
width: 100%;
border-radius: 10px;
border: none;
margin-top: 0;
}
}
.search-form__results.show {
display: block;
}
.search-result-divider {
border-top: 1px solid var(--grey-100, #e5e5e5);
}
.search-product-img {
width: 5rem;
height: 5rem;
}
@media(max-width: 640px) {
.search-product-img {
width: 70px;
height: 70px;
}
}
.atc-btn[data-loading] {
opacity: 0.6;
pointer-events: none;
}
.atc-btn[data-added] {
background-color: #2d7a3a;
}
.search-form__results.is-loading::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, transparent 0%, var(--grey-900, #171717) 50%, transparent 100%);
background-size: 200% 100%;
animation: search-loading-shimmer 1.2s ease-in-out infinite;
pointer-events: none;
}
.search-form__results-content {
max-height: calc(100vh - 170px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
}
.search-result-divider {
position: sticky;
bottom: 0;
background-color: #FFF;
z-index: 10;
}
@keyframes search-loading-shimmer {
0% { background-position: -100% 0; }
100% { background-position: 200% 0; }
}
@media(max-width: 640px) {
.search-product-row {
flex-direction: column;
align-items: flex-start !important;
}
.search-recommended-section {
display: none;
}
}
.query-item-text *,
.query-item-text {
white-space: nowrap;
}
.query-item-text mark {
background-color: #FFFADF;
color: inherit;
border-radius: 2px;
}
.search-form__clear-btn {
background: none;
border: none;
padding: 0;
cursor: pointer;
line-height: 0;
color: var(--grey-400, #999);
}
.search-form__clear-btn:hover svg path {
stroke: var(--grey-700, #404040);
}
(function() {
'use strict';
const SEARCH_ICON = `
`;
// Guard: only define the class once even if snippet is rendered multiple times
if (!window.MomentousPredictiveSearch) {
window.MomentousPredictiveSearch = class {
constructor(wrapper) {
this.wrapper = wrapper;
this.input = wrapper.querySelector('[data-search-input]');
this.resultsContainer = wrapper.querySelector('[data-search-results]');
this.resultsContent = wrapper.querySelector('[data-search-results-content]');
this.form = wrapper.querySelector('.search-form');
this.submitBtn = wrapper.querySelector('[data-search-submit]');
this.clearBtn = wrapper.querySelector('[data-search-clear]');
this.debounceTimer = null;
this.currentRequest = null;
this.currentQuery = '';
this.minQueryLength = 2;
this.debounceDelay = 300;
this.cache = new Map();
this.requestId = 0;
this.init();
}
init() {
this.input.addEventListener('input', (e) => {
this.handleInput(e.target.value);
this.updateClearBtn();
});
if (this.clearBtn) {
this.clearBtn.addEventListener('click', () => {
this.input.value = '';
this.currentQuery = '';
this.hideResults();
this.updateClearBtn();
this.input.focus();
});
}
this.input.addEventListener('focus', () => {
if (this.input.value.length >= this.minQueryLength) {
this.showResults();
}
});
this.input.addEventListener('touchend', (e) => {
e.stopPropagation();
this.input.focus();
});
this.input.addEventListener('touchstart', (e) => {
e.stopPropagation();
}, { passive: true });
const handleOutsideInteraction = (e) => {
if (!this.wrapper.contains(e.target)) {
const sidebarPanel = document.getElementById('ss-panel');
if (sidebarPanel && sidebarPanel.contains(this.wrapper) && sidebarPanel.contains(e.target)) {
return;
}
this.hideResults();
}
};
document.addEventListener('click', handleOutsideInteraction);
document.addEventListener('touchstart', handleOutsideInteraction, { passive: true });
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') this.hideResults();
});
}
updateClearBtn() {
const show = this.input.value.length >= this.minQueryLength;
if (this.clearBtn) this.clearBtn.classList.toggle('hidden', !show);
if (this.submitBtn) this.submitBtn.classList.toggle('hidden', show);
}
handleInput(query) {
const trimmedQuery = query.trim();
if (this.debounceTimer) clearTimeout(this.debounceTimer);
if (trimmedQuery.length {
this.fetchSearchData(trimmedQuery);
}, this.debounceDelay);
}
async fetchSearchData(query) {
if (this.cache.has(query)) {
const cached = this.cache.get(query);
this.setLoadingState(false);
this.renderResults(cached.results, query, cached.recommended);
return;
}
if (this.currentRequest) {
this.currentRequest.abort();
this.currentRequest = null;
}
const requestId = ++this.requestId;
const controller = new AbortController();
this.currentRequest = controller;
const baseUrl = window.Shopify?.routes?.root || '/';
const apiUrl = `${baseUrl}search/suggest.json?q=${encodeURIComponent(query)}&resources[type]=product,query&resources[limit]=5&resources[limit_scope]=each`;
try {
const response = await fetch(apiUrl, {
signal: controller.signal,
headers: { 'Accept': 'application/json' }
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
if (requestId !== this.requestId) return;
this.currentRequest = null;
const results = data.resources?.results || {};
if (this.cache.size > 50) this.cache.clear();
this.cache.set(query, { results, recommended: null });
this.setLoadingState(false);
this.renderResults(results, query, null);
} catch (error) {
if (error.name === 'AbortError') return;
if (requestId !== this.requestId) return;
console.error('Predictive search error:', error);
this.setLoadingState(false);
this.showError();
}
}
async fetchRecommendations(productId) {
try {
const baseUrl = window.Shopify?.routes?.root || '/';
const url = `${baseUrl}recommendations/products.json?product_id=${productId}&limit=6&intent=related`;
const response = await fetch(url, { headers: { 'Accept': 'application/json' } });
if (!response.ok) return [];
const data = await response.json();
return (data.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 3);
} catch (e) {
return [];
}
}
async addToCart(variantId, btn) {
btn.setAttribute('data-loading', '');
btn.textContent = 'Adding...';
try {
const response = await fetch('/cart/add.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify({ id: variantId, quantity: 1 })
});
if (!response.ok) throw new Error('Failed to add to cart');
btn.removeAttribute('data-loading');
btn.setAttribute('data-added', '');
btn.textContent = 'Added!';
document.dispatchEvent(new CustomEvent('cart:refresh'));
setTimeout(() => {
btn.removeAttribute('data-added');
btn.textContent = 'Add to Cart';
}, 2000);
} catch (e) {
btn.removeAttribute('data-loading');
btn.textContent = 'Add to Cart';
console.error('ATC error:', e);
}
}
bindAtcButtons() {
this.resultsContent.querySelectorAll('.atc-btn').forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const variantId = btn.dataset.variantId;
if (variantId) this.addToCart(variantId, btn);
});
});
}
renderResults(results, query, preloadedRecommended) {
if (!results || ((!results.products || results.products.length === 0) && (!results.queries || results.queries.length === 0))) {
this.resultsContent.innerHTML = `
No results found for "${this.escapeHtml(query)}"
`;
this.showResults();
return;
}
const products = (results.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 4);
const queries = (results.queries || []).slice(0, 4);
const firstProductId = products.length > 0 ? products[0].id : null;
let html = '';
if (products.length > 0) {
html += ``;
products.forEach(product => {
html += this.renderMatchedProduct(product);
});
html += `
`;
}
if (queries.length > 0) {
html += `
Top Searches
- ${SEARCH_ICON}
${queries.map(q => this.renderQueryItem(q)).join('')}
`;
}
const searchUrl = (window.Shopify?.routes?.root || '/') + `search?q=${encodeURIComponent(query)}&type=product`;
html += `
View all results for “${this.escapeHtml(query)}”
`;
if (firstProductId) {
if (preloadedRecommended && preloadedRecommended.length > 0) {
html += this.renderRecommendedSection(preloadedRecommended);
} else if (preloadedRecommended === null) {
html += `
`;
}
}
this.resultsContent.innerHTML = html;
this.showResults();
this.bindAtcButtons();
if (firstProductId && preloadedRecommended === null) {
this.fetchAndPatchRecommendations(firstProductId, query);
}
}
renderMatchedProduct(product) {
const imgUrl = product.featured_image?.url || product.image || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_220x220$1$2') : '';
const price = this.formatPrice(product.price, product.price_min, product.price_max);
const isSingleVariant = !product.variants || product.variants.length
${imgSized
? `
`
: `
`
}
${title}
${price ? `${price}
` : ''}
View Product
`;
}
renderSuggestedProduct(product) {
const imgUrl = product.featured_image?.src || product.featured_image?.url || product.images?.[0] || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_300x300$1$2') : '';
const productUrl = this.escapeHtml(product.url || `/products/${product.handle}`);
const title = this.escapeHtml(product.title || '');
return `
${imgSized
? `
`
: `
`
}
${title}
`;
}
renderQueryItem(item) {
const queryText = item.styled_text || this.escapeHtml(item.text || '');
const queryUrl = this.escapeHtml(item.url || '#');
return `
${queryText}
`;
}
renderRecommendedSection(recommended) {
return `
Suggested Products
${recommended.map(p => this.renderSuggestedProduct(p)).join('')}
`;
}
async fetchAndPatchRecommendations(productId, query) {
const recommended = await this.fetchRecommendations(productId);
if (query !== this.currentQuery) return;
if (this.cache.has(query)) {
this.cache.get(query).recommended = recommended;
}
const slot = this.resultsContent.querySelector('[data-recommendations-slot]');
if (!slot) return;
if (recommended.length > 0) {
slot.outerHTML = this.renderRecommendedSection(recommended);
} else {
slot.remove();
}
}
setLoadingState(loading) {
this.resultsContainer.classList.toggle('is-loading', loading);
if (loading && !this.resultsContainer.classList.contains('show')) {
this.showResults();
}
}
formatPrice(price, priceMin, priceMax) {
if (!price && !priceMin && !priceMax) return '';
const formatCurrency = (amount) => {
if (window.Shopify?.formatMoney) {
return window.Shopify.formatMoney(amount, window.Shopify.money_format || '$');
}
const currency = window.Shopify?.currency?.active || 'USD';
return new Intl.NumberFormat('en-US', { style: 'currency', currency }).format(amount);
};
if (priceMin && priceMax && priceMin !== priceMax) {
return `${formatCurrency(priceMin)} – ${formatCurrency(priceMax)}`;
}
return formatCurrency(price || priceMin || priceMax);
}
escapeHtml(text) {
if (text == null) return '';
const div = document.createElement('div');
div.textContent = String(text);
return div.innerHTML;
}
showError() {
this.resultsContent.innerHTML = `
Unable to load results. Please try again.
`;
this.showResults();
}
showResults() {
this.resultsContainer.classList.remove('hidden');
this.resultsContainer.classList.add('show');
}
hideResults() {
this.resultsContainer.classList.add('hidden');
this.resultsContainer.classList.remove('show');
}
};
} // end if (!window.MomentousPredictiveSearch)
function initPredictiveSearch() {
document.querySelectorAll('[data-search-form]').forEach(function(wrapper) {
if (!wrapper.__predictiveSearch) {
wrapper.__predictiveSearch = new window.MomentousPredictiveSearch(wrapper);
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initPredictiveSearch);
} else {
initPredictiveSearch();
}
})();
Recommended Products
Creatine - 60 Servings
£27.00
View Product
Creatine - 90 Servings
£33.00
View Product
Creatine Chews 150-Count
£39.00
View Product
#ss-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.45);
z-index: 400;
}
#ss-panel {
display: flex;
flex-direction: column;
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: 440px;
max-width: 100%;
background: #fff;
z-index: 401;
transform: translateX(100%);
transition: transform 0.3s ease;
box-shadow: -4px 0 24px rgba(0,0,0,0.1);
}
#ss-panel.open,
#ss-backdrop.open {
display: flex; /* backdrop uses display:block via override below */
}
#ss-backdrop.open { display: block; }
#ss-panel.open { transform: translateX(0); }
#ss-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px 20px;
border-bottom: 1px solid #e5e5e5;
flex-shrink: 0;
}
#ss-title {
font-size: 17px;
font-weight: 600;
color: #171717;
}
#ss-header button {
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #555;
line-height: 0;
}
#ss-body {
flex: 1;
min-height: 0;
overflow-y: auto;
padding: 18px 20px;
-webkit-overflow-scrolling: touch;
}
/* Results appear inline, not as a dropdown */
#ss-panel .search-form-wrapper { isolation: auto; }
#ss-panel .search-form__results {
position: static !important;
width: 100% !important;
border: none !important;
box-shadow: none !important;
border-radius: 0 !important;
margin-top: 10px !important;
}
#ss-panel .search-form__results-content {
padding: 0 !important;
}
/* Recommended */
#ss-recommended { margin-top: 20px; }
#ss-recommended-label {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #757575;
margin: 0 0 12px;
}
.ss-rec-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
border: 1px solid #e5e5e5;
border-radius: 8px;
text-decoration: none;
margin-bottom: 8px;
transition: background 0.15s;
}
.ss-rec-item:hover { background: #fafafa; }
.ss-rec-item img,
.ss-rec-img-placeholder {
width: 72px;
height: 72px;
border-radius: 6px;
object-fit: cover;
flex-shrink: 0;
background: #f0f0f0;
}
.ss-rec-info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 4px;
}
.ss-rec-title {
font-size: 13px;
font-weight: 600;
color: #171717;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.ss-rec-price {
font-size: 13px;
color: #737373;
}
#ss-recommended.hidden { display: none; }
var _ssScrollY = 0;
function openSearchSidebar() {
_ssScrollY = window.pageYOffset || document.documentElement.scrollTop;
document.body.style.position = 'fixed';
document.body.style.top = '-' + _ssScrollY + 'px';
document.body.style.width = '100%';
document.getElementById('ss-panel').classList.add('open');
document.getElementById('ss-backdrop').classList.add('open');
setTimeout(function() {
var input = document.querySelector('#ss-panel [data-search-input]');
if (input) input.focus();
}, 320);
}
function closeSearchSidebar() {
document.getElementById('ss-panel').classList.remove('open');
document.getElementById('ss-backdrop').classList.remove('open');
document.body.style.position = '';
document.body.style.top = '';
document.body.style.width = '';
window.scrollTo(0, _ssScrollY);
}
// Hide recommended when typing, show when empty
document.addEventListener('DOMContentLoaded', function() {
var input = document.querySelector('#ss-panel [data-search-input]');
var rec = document.getElementById('ss-recommended');
if (!input || !rec) return;
input.addEventListener('input', function() {
if (input.value.trim().length > 0) {
rec.classList.add('hidden');
} else {
rec.classList.remove('hidden');
}
});
// Clear button also restores recommended
var clearBtn = document.querySelector('#ss-panel [data-search-clear]');
if (clearBtn) {
clearBtn.addEventListener('click', function() {
setTimeout(function() { rec.classList.remove('hidden'); }, 20);
});
}
});
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeSearchSidebar();
});
.favicon {display: block;}
.recharge-theme {
/* App */
--recharge-app-background: #F9F8F4;
--recharge-app-container: 1200px;
--recharge-app-vertical-padding: 32px;
/* Brand colors */
--recharge-color-brand: #467C99;
/* Tints */
--recharge-color-brand-120: #38637a;
--recharge-color-brand-20: #6b96ad;
--recharge-color-brand-40: #90b0c2;
--recharge-color-brand-60: #b5cbd6;
--recharge-color-brand-75: #d1dee6;
--recharge-color-brand-85: #e3ebf0;
/* Neutral */
--recharge-color-neutral: hsl(201, 35%, 7%);
--recharge-color-neutral-80: hsl(201, 7%, 25%);
--recharge-color-neutral-70: hsl(201, 5%, 35%);
--recharge-color-neutral-40: hsl(201, 3%, 63%);
--recharge-color-neutral-10: hsl(201, 2%, 91%);
/* Links */
--recharge-button-secondary: #467C99;
--recharge-button-secondary-120: #38637a;
--recharge-button-secondary-60: #90b0c2;
/* Images */
--recharge-images-ratio: 1;
/* Cards */
--recharge-cards-background: #FFFFFF;
--recharge-cards-border-color: RGBA(0,0,0,0);
/* Fonts */
--recharge-typography-scale: 16px;
--recharge-typography-size-1: calc(3 * var(--recharge-typography-scale));
--recharge-typography-size-2: calc(2.25 * var(--recharge-typography-scale));
--recharge-typography-size-3: calc(1.625 * var(--recharge-typography-scale));
--recharge-typography-size-4: calc(1.25 * var(--recharge-typography-scale));
--recharge-typography-size-5: calc(1 * var(--recharge-typography-scale));
--recharge-typography-size-6: calc(.875 * var(--recharge-typography-scale));
/** Text **/
--recharge-typography-light: #FFFFFF;
--recharge-typography-primary: var(--recharge-color-neutral);
--recharge-typography-secondary: var(--recharge-color-neutral-70);
/* Corners */
--recharge-corners-radius: 8px;
--recharge-button-border-radius: 8px;
/* Views */
--recharge-views-background: #F9F8F4;
/* Buttons */
--recharge-button-font-family: inherit;
--recharge-button-brand: var(--recharge-color-brand);
--recharge-button-color: #FFFFFF;
}
(function() {
var initialCartState = [];
var previousCartStateKey = 'previousCartState';
var removedItemsKey = 'removedItemsState';
var previousCartState = [];
try {
previousCartState = JSON.parse(localStorage.getItem(previousCartStateKey) || '[]');
} catch (e) {
previousCartState = [];
}
var removedItems = previousCartState.filter(function(prevItem) {
return !initialCartState.some(function(currItem) {
return currItem.id === prevItem.id;
});
});
if (removedItems.length) {
localStorage.setItem(removedItemsKey, JSON.stringify(removedItems));
}
localStorage.setItem(previousCartStateKey, JSON.stringify(initialCartState));
})();
(function() {
var productId = "8258763423927";
var productTitle = "Creatine Chews 150-Count";
var productHandle = "creatine-monohydrate-chews";
var marketId = "21022965943";
var storageKey = 'oe_viewedProducts';
function trackViewedProducts() {
if (!productId) return;
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
viewedProducts = [];
}
viewedProducts = viewedProducts.filter(function(p) { return p.id !== productId; });
viewedProducts.unshift({
id: productId,
title: productTitle,
handle: productHandle,
viewedAt: new Date().toISOString()
});
viewedProducts = viewedProducts.slice(0, 50);
localStorage.setItem(storageKey, JSON.stringify(viewedProducts));
updateCartAttributes();
}
function updateCartAttributes() {
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
return;
}
var productIds = viewedProducts.map(function(p) { return p.id; }).slice(0, 10).join(',');
var cartAttributes = {};
if (productIds) cartAttributes['__upsell_recently_viewed_products'] = productIds;
if (marketId) cartAttributes['__upsell_market_id'] = marketId;
if (Object.keys(cartAttributes).length === 0) return;
fetch(window.Shopify.routes.root + 'cart/update.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ attributes: cartAttributes })
}).catch(function() {});
}
trackViewedProducts();
window.addEventListener('popstate', trackViewedProducts);
})();
window['ShopifyForms'] = {
...window['ShopifyForms'],
currentPageType: "product"
}; Price History
Loading...
0">
{{ variant.title }}
{{ value }}
0">
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
Search
Search for products, collections, pages, and articles
.search-form-wrapper {
position: relative;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
isolation: isolate;
}
.search-form__input:focus {
border: 1px solid #000;
}
.search-form__results {
width: 480px;
border-radius: 10px;
border: 1px solid #E5E7EB;
background: #FFF;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
top: 100%;
}
@media(max-width: 640px) {
.search-form__results {
width: 100%;
border-radius: 10px;
border: none;
margin-top: 0;
}
}
.search-form__results.show {
display: block;
}
.search-result-divider {
border-top: 1px solid var(--grey-100, #e5e5e5);
}
.search-product-img {
width: 5rem;
height: 5rem;
}
@media(max-width: 640px) {
.search-product-img {
width: 70px;
height: 70px;
}
}
.atc-btn[data-loading] {
opacity: 0.6;
pointer-events: none;
}
.atc-btn[data-added] {
background-color: #2d7a3a;
}
.search-form__results.is-loading::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, transparent 0%, var(--grey-900, #171717) 50%, transparent 100%);
background-size: 200% 100%;
animation: search-loading-shimmer 1.2s ease-in-out infinite;
pointer-events: none;
}
.search-form__results-content {
max-height: calc(100vh - 170px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
}
.search-result-divider {
position: sticky;
bottom: 0;
background-color: #FFF;
z-index: 10;
}
@keyframes search-loading-shimmer {
0% { background-position: -100% 0; }
100% { background-position: 200% 0; }
}
@media(max-width: 640px) {
.search-product-row {
flex-direction: column;
align-items: flex-start !important;
}
.search-recommended-section {
display: none;
}
}
.query-item-text *,
.query-item-text {
white-space: nowrap;
}
.query-item-text mark {
background-color: #FFFADF;
color: inherit;
border-radius: 2px;
}
.search-form__clear-btn {
background: none;
border: none;
padding: 0;
cursor: pointer;
line-height: 0;
color: var(--grey-400, #999);
}
.search-form__clear-btn:hover svg path {
stroke: var(--grey-700, #404040);
}
(function() {
'use strict';
const SEARCH_ICON = `
`;
// Guard: only define the class once even if snippet is rendered multiple times
if (!window.MomentousPredictiveSearch) {
window.MomentousPredictiveSearch = class {
constructor(wrapper) {
this.wrapper = wrapper;
this.input = wrapper.querySelector('[data-search-input]');
this.resultsContainer = wrapper.querySelector('[data-search-results]');
this.resultsContent = wrapper.querySelector('[data-search-results-content]');
this.form = wrapper.querySelector('.search-form');
this.submitBtn = wrapper.querySelector('[data-search-submit]');
this.clearBtn = wrapper.querySelector('[data-search-clear]');
this.debounceTimer = null;
this.currentRequest = null;
this.currentQuery = '';
this.minQueryLength = 2;
this.debounceDelay = 300;
this.cache = new Map();
this.requestId = 0;
this.init();
}
init() {
this.input.addEventListener('input', (e) => {
this.handleInput(e.target.value);
this.updateClearBtn();
});
if (this.clearBtn) {
this.clearBtn.addEventListener('click', () => {
this.input.value = '';
this.currentQuery = '';
this.hideResults();
this.updateClearBtn();
this.input.focus();
});
}
this.input.addEventListener('focus', () => {
if (this.input.value.length >= this.minQueryLength) {
this.showResults();
}
});
this.input.addEventListener('touchend', (e) => {
e.stopPropagation();
this.input.focus();
});
this.input.addEventListener('touchstart', (e) => {
e.stopPropagation();
}, { passive: true });
const handleOutsideInteraction = (e) => {
if (!this.wrapper.contains(e.target)) {
const sidebarPanel = document.getElementById('ss-panel');
if (sidebarPanel && sidebarPanel.contains(this.wrapper) && sidebarPanel.contains(e.target)) {
return;
}
this.hideResults();
}
};
document.addEventListener('click', handleOutsideInteraction);
document.addEventListener('touchstart', handleOutsideInteraction, { passive: true });
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') this.hideResults();
});
}
updateClearBtn() {
const show = this.input.value.length >= this.minQueryLength;
if (this.clearBtn) this.clearBtn.classList.toggle('hidden', !show);
if (this.submitBtn) this.submitBtn.classList.toggle('hidden', show);
}
handleInput(query) {
const trimmedQuery = query.trim();
if (this.debounceTimer) clearTimeout(this.debounceTimer);
if (trimmedQuery.length {
this.fetchSearchData(trimmedQuery);
}, this.debounceDelay);
}
async fetchSearchData(query) {
if (this.cache.has(query)) {
const cached = this.cache.get(query);
this.setLoadingState(false);
this.renderResults(cached.results, query, cached.recommended);
return;
}
if (this.currentRequest) {
this.currentRequest.abort();
this.currentRequest = null;
}
const requestId = ++this.requestId;
const controller = new AbortController();
this.currentRequest = controller;
const baseUrl = window.Shopify?.routes?.root || '/';
const apiUrl = `${baseUrl}search/suggest.json?q=${encodeURIComponent(query)}&resources[type]=product,query&resources[limit]=5&resources[limit_scope]=each`;
try {
const response = await fetch(apiUrl, {
signal: controller.signal,
headers: { 'Accept': 'application/json' }
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
if (requestId !== this.requestId) return;
this.currentRequest = null;
const results = data.resources?.results || {};
if (this.cache.size > 50) this.cache.clear();
this.cache.set(query, { results, recommended: null });
this.setLoadingState(false);
this.renderResults(results, query, null);
} catch (error) {
if (error.name === 'AbortError') return;
if (requestId !== this.requestId) return;
console.error('Predictive search error:', error);
this.setLoadingState(false);
this.showError();
}
}
async fetchRecommendations(productId) {
try {
const baseUrl = window.Shopify?.routes?.root || '/';
const url = `${baseUrl}recommendations/products.json?product_id=${productId}&limit=6&intent=related`;
const response = await fetch(url, { headers: { 'Accept': 'application/json' } });
if (!response.ok) return [];
const data = await response.json();
return (data.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 3);
} catch (e) {
return [];
}
}
async addToCart(variantId, btn) {
btn.setAttribute('data-loading', '');
btn.textContent = 'Adding...';
try {
const response = await fetch('/cart/add.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify({ id: variantId, quantity: 1 })
});
if (!response.ok) throw new Error('Failed to add to cart');
btn.removeAttribute('data-loading');
btn.setAttribute('data-added', '');
btn.textContent = 'Added!';
document.dispatchEvent(new CustomEvent('cart:refresh'));
setTimeout(() => {
btn.removeAttribute('data-added');
btn.textContent = 'Add to Cart';
}, 2000);
} catch (e) {
btn.removeAttribute('data-loading');
btn.textContent = 'Add to Cart';
console.error('ATC error:', e);
}
}
bindAtcButtons() {
this.resultsContent.querySelectorAll('.atc-btn').forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const variantId = btn.dataset.variantId;
if (variantId) this.addToCart(variantId, btn);
});
});
}
renderResults(results, query, preloadedRecommended) {
if (!results || ((!results.products || results.products.length === 0) && (!results.queries || results.queries.length === 0))) {
this.resultsContent.innerHTML = `
No results found for "${this.escapeHtml(query)}"
`;
this.showResults();
return;
}
const products = (results.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 4);
const queries = (results.queries || []).slice(0, 4);
const firstProductId = products.length > 0 ? products[0].id : null;
let html = '';
if (products.length > 0) {
html += ``;
products.forEach(product => {
html += this.renderMatchedProduct(product);
});
html += `
`;
}
if (queries.length > 0) {
html += `
Top Searches
- ${SEARCH_ICON}
${queries.map(q => this.renderQueryItem(q)).join('')}
`;
}
const searchUrl = (window.Shopify?.routes?.root || '/') + `search?q=${encodeURIComponent(query)}&type=product`;
html += `
View all results for “${this.escapeHtml(query)}”
`;
if (firstProductId) {
if (preloadedRecommended && preloadedRecommended.length > 0) {
html += this.renderRecommendedSection(preloadedRecommended);
} else if (preloadedRecommended === null) {
html += `
`;
}
}
this.resultsContent.innerHTML = html;
this.showResults();
this.bindAtcButtons();
if (firstProductId && preloadedRecommended === null) {
this.fetchAndPatchRecommendations(firstProductId, query);
}
}
renderMatchedProduct(product) {
const imgUrl = product.featured_image?.url || product.image || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_220x220$1$2') : '';
const price = this.formatPrice(product.price, product.price_min, product.price_max);
const isSingleVariant = !product.variants || product.variants.length
${imgSized
? `
`
: `
`
}
${title}
${price ? `${price}
` : ''}
View Product
`;
}
renderSuggestedProduct(product) {
const imgUrl = product.featured_image?.src || product.featured_image?.url || product.images?.[0] || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_300x300$1$2') : '';
const productUrl = this.escapeHtml(product.url || `/products/${product.handle}`);
const title = this.escapeHtml(product.title || '');
return `
${imgSized
? `
`
: `
`
}
${title}
`;
}
renderQueryItem(item) {
const queryText = item.styled_text || this.escapeHtml(item.text || '');
const queryUrl = this.escapeHtml(item.url || '#');
return `
${queryText}
`;
}
renderRecommendedSection(recommended) {
return `
Suggested Products
${recommended.map(p => this.renderSuggestedProduct(p)).join('')}
`;
}
async fetchAndPatchRecommendations(productId, query) {
const recommended = await this.fetchRecommendations(productId);
if (query !== this.currentQuery) return;
if (this.cache.has(query)) {
this.cache.get(query).recommended = recommended;
}
const slot = this.resultsContent.querySelector('[data-recommendations-slot]');
if (!slot) return;
if (recommended.length > 0) {
slot.outerHTML = this.renderRecommendedSection(recommended);
} else {
slot.remove();
}
}
setLoadingState(loading) {
this.resultsContainer.classList.toggle('is-loading', loading);
if (loading && !this.resultsContainer.classList.contains('show')) {
this.showResults();
}
}
formatPrice(price, priceMin, priceMax) {
if (!price && !priceMin && !priceMax) return '';
const formatCurrency = (amount) => {
if (window.Shopify?.formatMoney) {
return window.Shopify.formatMoney(amount, window.Shopify.money_format || '$');
}
const currency = window.Shopify?.currency?.active || 'USD';
return new Intl.NumberFormat('en-US', { style: 'currency', currency }).format(amount);
};
if (priceMin && priceMax && priceMin !== priceMax) {
return `${formatCurrency(priceMin)} – ${formatCurrency(priceMax)}`;
}
return formatCurrency(price || priceMin || priceMax);
}
escapeHtml(text) {
if (text == null) return '';
const div = document.createElement('div');
div.textContent = String(text);
return div.innerHTML;
}
showError() {
this.resultsContent.innerHTML = `
Unable to load results. Please try again.
`;
this.showResults();
}
showResults() {
this.resultsContainer.classList.remove('hidden');
this.resultsContainer.classList.add('show');
}
hideResults() {
this.resultsContainer.classList.add('hidden');
this.resultsContainer.classList.remove('show');
}
};
} // end if (!window.MomentousPredictiveSearch)
function initPredictiveSearch() {
document.querySelectorAll('[data-search-form]').forEach(function(wrapper) {
if (!wrapper.__predictiveSearch) {
wrapper.__predictiveSearch = new window.MomentousPredictiveSearch(wrapper);
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initPredictiveSearch);
} else {
initPredictiveSearch();
}
})();
Recommended Products
Creatine - 60 Servings
£27.00
View Product
Creatine - 90 Servings
£33.00
View Product
Creatine Chews 150-Count
£39.00
View Product
#ss-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.45);
z-index: 400;
}
#ss-panel {
display: flex;
flex-direction: column;
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: 440px;
max-width: 100%;
background: #fff;
z-index: 401;
transform: translateX(100%);
transition: transform 0.3s ease;
box-shadow: -4px 0 24px rgba(0,0,0,0.1);
}
#ss-panel.open,
#ss-backdrop.open {
display: flex; /* backdrop uses display:block via override below */
}
#ss-backdrop.open { display: block; }
#ss-panel.open { transform: translateX(0); }
#ss-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px 20px;
border-bottom: 1px solid #e5e5e5;
flex-shrink: 0;
}
#ss-title {
font-size: 17px;
font-weight: 600;
color: #171717;
}
#ss-header button {
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #555;
line-height: 0;
}
#ss-body {
flex: 1;
min-height: 0;
overflow-y: auto;
padding: 18px 20px;
-webkit-overflow-scrolling: touch;
}
/* Results appear inline, not as a dropdown */
#ss-panel .search-form-wrapper { isolation: auto; }
#ss-panel .search-form__results {
position: static !important;
width: 100% !important;
border: none !important;
box-shadow: none !important;
border-radius: 0 !important;
margin-top: 10px !important;
}
#ss-panel .search-form__results-content {
padding: 0 !important;
}
/* Recommended */
#ss-recommended { margin-top: 20px; }
#ss-recommended-label {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #757575;
margin: 0 0 12px;
}
.ss-rec-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
border: 1px solid #e5e5e5;
border-radius: 8px;
text-decoration: none;
margin-bottom: 8px;
transition: background 0.15s;
}
.ss-rec-item:hover { background: #fafafa; }
.ss-rec-item img,
.ss-rec-img-placeholder {
width: 72px;
height: 72px;
border-radius: 6px;
object-fit: cover;
flex-shrink: 0;
background: #f0f0f0;
}
.ss-rec-info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 4px;
}
.ss-rec-title {
font-size: 13px;
font-weight: 600;
color: #171717;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.ss-rec-price {
font-size: 13px;
color: #737373;
}
#ss-recommended.hidden { display: none; }
var _ssScrollY = 0;
function openSearchSidebar() {
_ssScrollY = window.pageYOffset || document.documentElement.scrollTop;
document.body.style.position = 'fixed';
document.body.style.top = '-' + _ssScrollY + 'px';
document.body.style.width = '100%';
document.getElementById('ss-panel').classList.add('open');
document.getElementById('ss-backdrop').classList.add('open');
setTimeout(function() {
var input = document.querySelector('#ss-panel [data-search-input]');
if (input) input.focus();
}, 320);
}
function closeSearchSidebar() {
document.getElementById('ss-panel').classList.remove('open');
document.getElementById('ss-backdrop').classList.remove('open');
document.body.style.position = '';
document.body.style.top = '';
document.body.style.width = '';
window.scrollTo(0, _ssScrollY);
}
// Hide recommended when typing, show when empty
document.addEventListener('DOMContentLoaded', function() {
var input = document.querySelector('#ss-panel [data-search-input]');
var rec = document.getElementById('ss-recommended');
if (!input || !rec) return;
input.addEventListener('input', function() {
if (input.value.trim().length > 0) {
rec.classList.add('hidden');
} else {
rec.classList.remove('hidden');
}
});
// Clear button also restores recommended
var clearBtn = document.querySelector('#ss-panel [data-search-clear]');
if (clearBtn) {
clearBtn.addEventListener('click', function() {
setTimeout(function() { rec.classList.remove('hidden'); }, 20);
});
}
});
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeSearchSidebar();
});
.favicon {display: block;}
.recharge-theme {
/* App */
--recharge-app-background: #F9F8F4;
--recharge-app-container: 1200px;
--recharge-app-vertical-padding: 32px;
/* Brand colors */
--recharge-color-brand: #467C99;
/* Tints */
--recharge-color-brand-120: #38637a;
--recharge-color-brand-20: #6b96ad;
--recharge-color-brand-40: #90b0c2;
--recharge-color-brand-60: #b5cbd6;
--recharge-color-brand-75: #d1dee6;
--recharge-color-brand-85: #e3ebf0;
/* Neutral */
--recharge-color-neutral: hsl(201, 35%, 7%);
--recharge-color-neutral-80: hsl(201, 7%, 25%);
--recharge-color-neutral-70: hsl(201, 5%, 35%);
--recharge-color-neutral-40: hsl(201, 3%, 63%);
--recharge-color-neutral-10: hsl(201, 2%, 91%);
/* Links */
--recharge-button-secondary: #467C99;
--recharge-button-secondary-120: #38637a;
--recharge-button-secondary-60: #90b0c2;
/* Images */
--recharge-images-ratio: 1;
/* Cards */
--recharge-cards-background: #FFFFFF;
--recharge-cards-border-color: RGBA(0,0,0,0);
/* Fonts */
--recharge-typography-scale: 16px;
--recharge-typography-size-1: calc(3 * var(--recharge-typography-scale));
--recharge-typography-size-2: calc(2.25 * var(--recharge-typography-scale));
--recharge-typography-size-3: calc(1.625 * var(--recharge-typography-scale));
--recharge-typography-size-4: calc(1.25 * var(--recharge-typography-scale));
--recharge-typography-size-5: calc(1 * var(--recharge-typography-scale));
--recharge-typography-size-6: calc(.875 * var(--recharge-typography-scale));
/** Text **/
--recharge-typography-light: #FFFFFF;
--recharge-typography-primary: var(--recharge-color-neutral);
--recharge-typography-secondary: var(--recharge-color-neutral-70);
/* Corners */
--recharge-corners-radius: 8px;
--recharge-button-border-radius: 8px;
/* Views */
--recharge-views-background: #F9F8F4;
/* Buttons */
--recharge-button-font-family: inherit;
--recharge-button-brand: var(--recharge-color-brand);
--recharge-button-color: #FFFFFF;
}
(function() {
var initialCartState = [];
var previousCartStateKey = 'previousCartState';
var removedItemsKey = 'removedItemsState';
var previousCartState = [];
try {
previousCartState = JSON.parse(localStorage.getItem(previousCartStateKey) || '[]');
} catch (e) {
previousCartState = [];
}
var removedItems = previousCartState.filter(function(prevItem) {
return !initialCartState.some(function(currItem) {
return currItem.id === prevItem.id;
});
});
if (removedItems.length) {
localStorage.setItem(removedItemsKey, JSON.stringify(removedItems));
}
localStorage.setItem(previousCartStateKey, JSON.stringify(initialCartState));
})();
(function() {
var productId = "8258763423927";
var productTitle = "Creatine Chews 150-Count";
var productHandle = "creatine-monohydrate-chews";
var marketId = "21022965943";
var storageKey = 'oe_viewedProducts';
function trackViewedProducts() {
if (!productId) return;
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
viewedProducts = [];
}
viewedProducts = viewedProducts.filter(function(p) { return p.id !== productId; });
viewedProducts.unshift({
id: productId,
title: productTitle,
handle: productHandle,
viewedAt: new Date().toISOString()
});
viewedProducts = viewedProducts.slice(0, 50);
localStorage.setItem(storageKey, JSON.stringify(viewedProducts));
updateCartAttributes();
}
function updateCartAttributes() {
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
return;
}
var productIds = viewedProducts.map(function(p) { return p.id; }).slice(0, 10).join(',');
var cartAttributes = {};
if (productIds) cartAttributes['__upsell_recently_viewed_products'] = productIds;
if (marketId) cartAttributes['__upsell_market_id'] = marketId;
if (Object.keys(cartAttributes).length === 0) return;
fetch(window.Shopify.routes.root + 'cart/update.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ attributes: cartAttributes })
}).catch(function() {});
}
trackViewedProducts();
window.addEventListener('popstate', trackViewedProducts);
})();
window['ShopifyForms'] = {
...window['ShopifyForms'],
currentPageType: "product"
}; Price History
Loading...
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">
:
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
Search
Search for products, collections, pages, and articles
.search-form-wrapper {
position: relative;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
isolation: isolate;
}
.search-form__input:focus {
border: 1px solid #000;
}
.search-form__results {
width: 480px;
border-radius: 10px;
border: 1px solid #E5E7EB;
background: #FFF;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
top: 100%;
}
@media(max-width: 640px) {
.search-form__results {
width: 100%;
border-radius: 10px;
border: none;
margin-top: 0;
}
}
.search-form__results.show {
display: block;
}
.search-result-divider {
border-top: 1px solid var(--grey-100, #e5e5e5);
}
.search-product-img {
width: 5rem;
height: 5rem;
}
@media(max-width: 640px) {
.search-product-img {
width: 70px;
height: 70px;
}
}
.atc-btn[data-loading] {
opacity: 0.6;
pointer-events: none;
}
.atc-btn[data-added] {
background-color: #2d7a3a;
}
.search-form__results.is-loading::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, transparent 0%, var(--grey-900, #171717) 50%, transparent 100%);
background-size: 200% 100%;
animation: search-loading-shimmer 1.2s ease-in-out infinite;
pointer-events: none;
}
.search-form__results-content {
max-height: calc(100vh - 170px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
}
.search-result-divider {
position: sticky;
bottom: 0;
background-color: #FFF;
z-index: 10;
}
@keyframes search-loading-shimmer {
0% { background-position: -100% 0; }
100% { background-position: 200% 0; }
}
@media(max-width: 640px) {
.search-product-row {
flex-direction: column;
align-items: flex-start !important;
}
.search-recommended-section {
display: none;
}
}
.query-item-text *,
.query-item-text {
white-space: nowrap;
}
.query-item-text mark {
background-color: #FFFADF;
color: inherit;
border-radius: 2px;
}
.search-form__clear-btn {
background: none;
border: none;
padding: 0;
cursor: pointer;
line-height: 0;
color: var(--grey-400, #999);
}
.search-form__clear-btn:hover svg path {
stroke: var(--grey-700, #404040);
}
(function() {
'use strict';
const SEARCH_ICON = `
`;
// Guard: only define the class once even if snippet is rendered multiple times
if (!window.MomentousPredictiveSearch) {
window.MomentousPredictiveSearch = class {
constructor(wrapper) {
this.wrapper = wrapper;
this.input = wrapper.querySelector('[data-search-input]');
this.resultsContainer = wrapper.querySelector('[data-search-results]');
this.resultsContent = wrapper.querySelector('[data-search-results-content]');
this.form = wrapper.querySelector('.search-form');
this.submitBtn = wrapper.querySelector('[data-search-submit]');
this.clearBtn = wrapper.querySelector('[data-search-clear]');
this.debounceTimer = null;
this.currentRequest = null;
this.currentQuery = '';
this.minQueryLength = 2;
this.debounceDelay = 300;
this.cache = new Map();
this.requestId = 0;
this.init();
}
init() {
this.input.addEventListener('input', (e) => {
this.handleInput(e.target.value);
this.updateClearBtn();
});
if (this.clearBtn) {
this.clearBtn.addEventListener('click', () => {
this.input.value = '';
this.currentQuery = '';
this.hideResults();
this.updateClearBtn();
this.input.focus();
});
}
this.input.addEventListener('focus', () => {
if (this.input.value.length >= this.minQueryLength) {
this.showResults();
}
});
this.input.addEventListener('touchend', (e) => {
e.stopPropagation();
this.input.focus();
});
this.input.addEventListener('touchstart', (e) => {
e.stopPropagation();
}, { passive: true });
const handleOutsideInteraction = (e) => {
if (!this.wrapper.contains(e.target)) {
const sidebarPanel = document.getElementById('ss-panel');
if (sidebarPanel && sidebarPanel.contains(this.wrapper) && sidebarPanel.contains(e.target)) {
return;
}
this.hideResults();
}
};
document.addEventListener('click', handleOutsideInteraction);
document.addEventListener('touchstart', handleOutsideInteraction, { passive: true });
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') this.hideResults();
});
}
updateClearBtn() {
const show = this.input.value.length >= this.minQueryLength;
if (this.clearBtn) this.clearBtn.classList.toggle('hidden', !show);
if (this.submitBtn) this.submitBtn.classList.toggle('hidden', show);
}
handleInput(query) {
const trimmedQuery = query.trim();
if (this.debounceTimer) clearTimeout(this.debounceTimer);
if (trimmedQuery.length {
this.fetchSearchData(trimmedQuery);
}, this.debounceDelay);
}
async fetchSearchData(query) {
if (this.cache.has(query)) {
const cached = this.cache.get(query);
this.setLoadingState(false);
this.renderResults(cached.results, query, cached.recommended);
return;
}
if (this.currentRequest) {
this.currentRequest.abort();
this.currentRequest = null;
}
const requestId = ++this.requestId;
const controller = new AbortController();
this.currentRequest = controller;
const baseUrl = window.Shopify?.routes?.root || '/';
const apiUrl = `${baseUrl}search/suggest.json?q=${encodeURIComponent(query)}&resources[type]=product,query&resources[limit]=5&resources[limit_scope]=each`;
try {
const response = await fetch(apiUrl, {
signal: controller.signal,
headers: { 'Accept': 'application/json' }
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
if (requestId !== this.requestId) return;
this.currentRequest = null;
const results = data.resources?.results || {};
if (this.cache.size > 50) this.cache.clear();
this.cache.set(query, { results, recommended: null });
this.setLoadingState(false);
this.renderResults(results, query, null);
} catch (error) {
if (error.name === 'AbortError') return;
if (requestId !== this.requestId) return;
console.error('Predictive search error:', error);
this.setLoadingState(false);
this.showError();
}
}
async fetchRecommendations(productId) {
try {
const baseUrl = window.Shopify?.routes?.root || '/';
const url = `${baseUrl}recommendations/products.json?product_id=${productId}&limit=6&intent=related`;
const response = await fetch(url, { headers: { 'Accept': 'application/json' } });
if (!response.ok) return [];
const data = await response.json();
return (data.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 3);
} catch (e) {
return [];
}
}
async addToCart(variantId, btn) {
btn.setAttribute('data-loading', '');
btn.textContent = 'Adding...';
try {
const response = await fetch('/cart/add.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify({ id: variantId, quantity: 1 })
});
if (!response.ok) throw new Error('Failed to add to cart');
btn.removeAttribute('data-loading');
btn.setAttribute('data-added', '');
btn.textContent = 'Added!';
document.dispatchEvent(new CustomEvent('cart:refresh'));
setTimeout(() => {
btn.removeAttribute('data-added');
btn.textContent = 'Add to Cart';
}, 2000);
} catch (e) {
btn.removeAttribute('data-loading');
btn.textContent = 'Add to Cart';
console.error('ATC error:', e);
}
}
bindAtcButtons() {
this.resultsContent.querySelectorAll('.atc-btn').forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const variantId = btn.dataset.variantId;
if (variantId) this.addToCart(variantId, btn);
});
});
}
renderResults(results, query, preloadedRecommended) {
if (!results || ((!results.products || results.products.length === 0) && (!results.queries || results.queries.length === 0))) {
this.resultsContent.innerHTML = `
No results found for "${this.escapeHtml(query)}"
`;
this.showResults();
return;
}
const products = (results.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 4);
const queries = (results.queries || []).slice(0, 4);
const firstProductId = products.length > 0 ? products[0].id : null;
let html = '';
if (products.length > 0) {
html += ``;
products.forEach(product => {
html += this.renderMatchedProduct(product);
});
html += `
`;
}
if (queries.length > 0) {
html += `
Top Searches
- ${SEARCH_ICON}
${queries.map(q => this.renderQueryItem(q)).join('')}
`;
}
const searchUrl = (window.Shopify?.routes?.root || '/') + `search?q=${encodeURIComponent(query)}&type=product`;
html += `
View all results for “${this.escapeHtml(query)}”
`;
if (firstProductId) {
if (preloadedRecommended && preloadedRecommended.length > 0) {
html += this.renderRecommendedSection(preloadedRecommended);
} else if (preloadedRecommended === null) {
html += `
`;
}
}
this.resultsContent.innerHTML = html;
this.showResults();
this.bindAtcButtons();
if (firstProductId && preloadedRecommended === null) {
this.fetchAndPatchRecommendations(firstProductId, query);
}
}
renderMatchedProduct(product) {
const imgUrl = product.featured_image?.url || product.image || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_220x220$1$2') : '';
const price = this.formatPrice(product.price, product.price_min, product.price_max);
const isSingleVariant = !product.variants || product.variants.length
${imgSized
? `
`
: `
`
}
${title}
${price ? `${price}
` : ''}
View Product
`;
}
renderSuggestedProduct(product) {
const imgUrl = product.featured_image?.src || product.featured_image?.url || product.images?.[0] || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_300x300$1$2') : '';
const productUrl = this.escapeHtml(product.url || `/products/${product.handle}`);
const title = this.escapeHtml(product.title || '');
return `
${imgSized
? `
`
: `
`
}
${title}
`;
}
renderQueryItem(item) {
const queryText = item.styled_text || this.escapeHtml(item.text || '');
const queryUrl = this.escapeHtml(item.url || '#');
return `
${queryText}
`;
}
renderRecommendedSection(recommended) {
return `
Suggested Products
${recommended.map(p => this.renderSuggestedProduct(p)).join('')}
`;
}
async fetchAndPatchRecommendations(productId, query) {
const recommended = await this.fetchRecommendations(productId);
if (query !== this.currentQuery) return;
if (this.cache.has(query)) {
this.cache.get(query).recommended = recommended;
}
const slot = this.resultsContent.querySelector('[data-recommendations-slot]');
if (!slot) return;
if (recommended.length > 0) {
slot.outerHTML = this.renderRecommendedSection(recommended);
} else {
slot.remove();
}
}
setLoadingState(loading) {
this.resultsContainer.classList.toggle('is-loading', loading);
if (loading && !this.resultsContainer.classList.contains('show')) {
this.showResults();
}
}
formatPrice(price, priceMin, priceMax) {
if (!price && !priceMin && !priceMax) return '';
const formatCurrency = (amount) => {
if (window.Shopify?.formatMoney) {
return window.Shopify.formatMoney(amount, window.Shopify.money_format || '$');
}
const currency = window.Shopify?.currency?.active || 'USD';
return new Intl.NumberFormat('en-US', { style: 'currency', currency }).format(amount);
};
if (priceMin && priceMax && priceMin !== priceMax) {
return `${formatCurrency(priceMin)} – ${formatCurrency(priceMax)}`;
}
return formatCurrency(price || priceMin || priceMax);
}
escapeHtml(text) {
if (text == null) return '';
const div = document.createElement('div');
div.textContent = String(text);
return div.innerHTML;
}
showError() {
this.resultsContent.innerHTML = `
Unable to load results. Please try again.
`;
this.showResults();
}
showResults() {
this.resultsContainer.classList.remove('hidden');
this.resultsContainer.classList.add('show');
}
hideResults() {
this.resultsContainer.classList.add('hidden');
this.resultsContainer.classList.remove('show');
}
};
} // end if (!window.MomentousPredictiveSearch)
function initPredictiveSearch() {
document.querySelectorAll('[data-search-form]').forEach(function(wrapper) {
if (!wrapper.__predictiveSearch) {
wrapper.__predictiveSearch = new window.MomentousPredictiveSearch(wrapper);
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initPredictiveSearch);
} else {
initPredictiveSearch();
}
})();
Recommended Products
Creatine - 60 Servings
£27.00
View Product
Creatine - 90 Servings
£33.00
View Product
Creatine Chews 150-Count
£39.00
View Product
#ss-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.45);
z-index: 400;
}
#ss-panel {
display: flex;
flex-direction: column;
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: 440px;
max-width: 100%;
background: #fff;
z-index: 401;
transform: translateX(100%);
transition: transform 0.3s ease;
box-shadow: -4px 0 24px rgba(0,0,0,0.1);
}
#ss-panel.open,
#ss-backdrop.open {
display: flex; /* backdrop uses display:block via override below */
}
#ss-backdrop.open { display: block; }
#ss-panel.open { transform: translateX(0); }
#ss-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px 20px;
border-bottom: 1px solid #e5e5e5;
flex-shrink: 0;
}
#ss-title {
font-size: 17px;
font-weight: 600;
color: #171717;
}
#ss-header button {
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #555;
line-height: 0;
}
#ss-body {
flex: 1;
min-height: 0;
overflow-y: auto;
padding: 18px 20px;
-webkit-overflow-scrolling: touch;
}
/* Results appear inline, not as a dropdown */
#ss-panel .search-form-wrapper { isolation: auto; }
#ss-panel .search-form__results {
position: static !important;
width: 100% !important;
border: none !important;
box-shadow: none !important;
border-radius: 0 !important;
margin-top: 10px !important;
}
#ss-panel .search-form__results-content {
padding: 0 !important;
}
/* Recommended */
#ss-recommended { margin-top: 20px; }
#ss-recommended-label {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #757575;
margin: 0 0 12px;
}
.ss-rec-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
border: 1px solid #e5e5e5;
border-radius: 8px;
text-decoration: none;
margin-bottom: 8px;
transition: background 0.15s;
}
.ss-rec-item:hover { background: #fafafa; }
.ss-rec-item img,
.ss-rec-img-placeholder {
width: 72px;
height: 72px;
border-radius: 6px;
object-fit: cover;
flex-shrink: 0;
background: #f0f0f0;
}
.ss-rec-info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 4px;
}
.ss-rec-title {
font-size: 13px;
font-weight: 600;
color: #171717;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.ss-rec-price {
font-size: 13px;
color: #737373;
}
#ss-recommended.hidden { display: none; }
var _ssScrollY = 0;
function openSearchSidebar() {
_ssScrollY = window.pageYOffset || document.documentElement.scrollTop;
document.body.style.position = 'fixed';
document.body.style.top = '-' + _ssScrollY + 'px';
document.body.style.width = '100%';
document.getElementById('ss-panel').classList.add('open');
document.getElementById('ss-backdrop').classList.add('open');
setTimeout(function() {
var input = document.querySelector('#ss-panel [data-search-input]');
if (input) input.focus();
}, 320);
}
function closeSearchSidebar() {
document.getElementById('ss-panel').classList.remove('open');
document.getElementById('ss-backdrop').classList.remove('open');
document.body.style.position = '';
document.body.style.top = '';
document.body.style.width = '';
window.scrollTo(0, _ssScrollY);
}
// Hide recommended when typing, show when empty
document.addEventListener('DOMContentLoaded', function() {
var input = document.querySelector('#ss-panel [data-search-input]');
var rec = document.getElementById('ss-recommended');
if (!input || !rec) return;
input.addEventListener('input', function() {
if (input.value.trim().length > 0) {
rec.classList.add('hidden');
} else {
rec.classList.remove('hidden');
}
});
// Clear button also restores recommended
var clearBtn = document.querySelector('#ss-panel [data-search-clear]');
if (clearBtn) {
clearBtn.addEventListener('click', function() {
setTimeout(function() { rec.classList.remove('hidden'); }, 20);
});
}
});
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeSearchSidebar();
});
.favicon {display: block;}
.recharge-theme {
/* App */
--recharge-app-background: #F9F8F4;
--recharge-app-container: 1200px;
--recharge-app-vertical-padding: 32px;
/* Brand colors */
--recharge-color-brand: #467C99;
/* Tints */
--recharge-color-brand-120: #38637a;
--recharge-color-brand-20: #6b96ad;
--recharge-color-brand-40: #90b0c2;
--recharge-color-brand-60: #b5cbd6;
--recharge-color-brand-75: #d1dee6;
--recharge-color-brand-85: #e3ebf0;
/* Neutral */
--recharge-color-neutral: hsl(201, 35%, 7%);
--recharge-color-neutral-80: hsl(201, 7%, 25%);
--recharge-color-neutral-70: hsl(201, 5%, 35%);
--recharge-color-neutral-40: hsl(201, 3%, 63%);
--recharge-color-neutral-10: hsl(201, 2%, 91%);
/* Links */
--recharge-button-secondary: #467C99;
--recharge-button-secondary-120: #38637a;
--recharge-button-secondary-60: #90b0c2;
/* Images */
--recharge-images-ratio: 1;
/* Cards */
--recharge-cards-background: #FFFFFF;
--recharge-cards-border-color: RGBA(0,0,0,0);
/* Fonts */
--recharge-typography-scale: 16px;
--recharge-typography-size-1: calc(3 * var(--recharge-typography-scale));
--recharge-typography-size-2: calc(2.25 * var(--recharge-typography-scale));
--recharge-typography-size-3: calc(1.625 * var(--recharge-typography-scale));
--recharge-typography-size-4: calc(1.25 * var(--recharge-typography-scale));
--recharge-typography-size-5: calc(1 * var(--recharge-typography-scale));
--recharge-typography-size-6: calc(.875 * var(--recharge-typography-scale));
/** Text **/
--recharge-typography-light: #FFFFFF;
--recharge-typography-primary: var(--recharge-color-neutral);
--recharge-typography-secondary: var(--recharge-color-neutral-70);
/* Corners */
--recharge-corners-radius: 8px;
--recharge-button-border-radius: 8px;
/* Views */
--recharge-views-background: #F9F8F4;
/* Buttons */
--recharge-button-font-family: inherit;
--recharge-button-brand: var(--recharge-color-brand);
--recharge-button-color: #FFFFFF;
}
(function() {
var initialCartState = [];
var previousCartStateKey = 'previousCartState';
var removedItemsKey = 'removedItemsState';
var previousCartState = [];
try {
previousCartState = JSON.parse(localStorage.getItem(previousCartStateKey) || '[]');
} catch (e) {
previousCartState = [];
}
var removedItems = previousCartState.filter(function(prevItem) {
return !initialCartState.some(function(currItem) {
return currItem.id === prevItem.id;
});
});
if (removedItems.length) {
localStorage.setItem(removedItemsKey, JSON.stringify(removedItems));
}
localStorage.setItem(previousCartStateKey, JSON.stringify(initialCartState));
})();
(function() {
var productId = "8258763423927";
var productTitle = "Creatine Chews 150-Count";
var productHandle = "creatine-monohydrate-chews";
var marketId = "21022965943";
var storageKey = 'oe_viewedProducts';
function trackViewedProducts() {
if (!productId) return;
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
viewedProducts = [];
}
viewedProducts = viewedProducts.filter(function(p) { return p.id !== productId; });
viewedProducts.unshift({
id: productId,
title: productTitle,
handle: productHandle,
viewedAt: new Date().toISOString()
});
viewedProducts = viewedProducts.slice(0, 50);
localStorage.setItem(storageKey, JSON.stringify(viewedProducts));
updateCartAttributes();
}
function updateCartAttributes() {
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
return;
}
var productIds = viewedProducts.map(function(p) { return p.id; }).slice(0, 10).join(',');
var cartAttributes = {};
if (productIds) cartAttributes['__upsell_recently_viewed_products'] = productIds;
if (marketId) cartAttributes['__upsell_market_id'] = marketId;
if (Object.keys(cartAttributes).length === 0) return;
fetch(window.Shopify.routes.root + 'cart/update.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ attributes: cartAttributes })
}).catch(function() {});
}
trackViewedProducts();
window.addEventListener('popstate', trackViewedProducts);
})();
window['ShopifyForms'] = {
...window['ShopifyForms'],
currentPageType: "product"
}; Price History
Loading...
1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
{{ value }}
Select your purchase method
Out of Stock Protection
{{ frequencyLabel(frequency, product.subscription_interval) }}
One-Time Purchase
Receive Once
Add to Bag
Price
View Product
el.classList.remove('show')); $event.target.closest('.rebuy-product-block').querySelector('.rebuy-product-options').classList.add('show')"
type="button">
Price
Powered by Rebuy
Search
Search for products, collections, pages, and articles
.search-form-wrapper {
position: relative;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
isolation: isolate;
}
.search-form__input:focus {
border: 1px solid #000;
}
.search-form__results {
width: 480px;
border-radius: 10px;
border: 1px solid #E5E7EB;
background: #FFF;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
top: 100%;
}
@media(max-width: 640px) {
.search-form__results {
width: 100%;
border-radius: 10px;
border: none;
margin-top: 0;
}
}
.search-form__results.show {
display: block;
}
.search-result-divider {
border-top: 1px solid var(--grey-100, #e5e5e5);
}
.search-product-img {
width: 5rem;
height: 5rem;
}
@media(max-width: 640px) {
.search-product-img {
width: 70px;
height: 70px;
}
}
.atc-btn[data-loading] {
opacity: 0.6;
pointer-events: none;
}
.atc-btn[data-added] {
background-color: #2d7a3a;
}
.search-form__results.is-loading::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, transparent 0%, var(--grey-900, #171717) 50%, transparent 100%);
background-size: 200% 100%;
animation: search-loading-shimmer 1.2s ease-in-out infinite;
pointer-events: none;
}
.search-form__results-content {
max-height: calc(100vh - 170px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
}
.search-result-divider {
position: sticky;
bottom: 0;
background-color: #FFF;
z-index: 10;
}
@keyframes search-loading-shimmer {
0% { background-position: -100% 0; }
100% { background-position: 200% 0; }
}
@media(max-width: 640px) {
.search-product-row {
flex-direction: column;
align-items: flex-start !important;
}
.search-recommended-section {
display: none;
}
}
.query-item-text *,
.query-item-text {
white-space: nowrap;
}
.query-item-text mark {
background-color: #FFFADF;
color: inherit;
border-radius: 2px;
}
.search-form__clear-btn {
background: none;
border: none;
padding: 0;
cursor: pointer;
line-height: 0;
color: var(--grey-400, #999);
}
.search-form__clear-btn:hover svg path {
stroke: var(--grey-700, #404040);
}
(function() {
'use strict';
const SEARCH_ICON = `
`;
// Guard: only define the class once even if snippet is rendered multiple times
if (!window.MomentousPredictiveSearch) {
window.MomentousPredictiveSearch = class {
constructor(wrapper) {
this.wrapper = wrapper;
this.input = wrapper.querySelector('[data-search-input]');
this.resultsContainer = wrapper.querySelector('[data-search-results]');
this.resultsContent = wrapper.querySelector('[data-search-results-content]');
this.form = wrapper.querySelector('.search-form');
this.submitBtn = wrapper.querySelector('[data-search-submit]');
this.clearBtn = wrapper.querySelector('[data-search-clear]');
this.debounceTimer = null;
this.currentRequest = null;
this.currentQuery = '';
this.minQueryLength = 2;
this.debounceDelay = 300;
this.cache = new Map();
this.requestId = 0;
this.init();
}
init() {
this.input.addEventListener('input', (e) => {
this.handleInput(e.target.value);
this.updateClearBtn();
});
if (this.clearBtn) {
this.clearBtn.addEventListener('click', () => {
this.input.value = '';
this.currentQuery = '';
this.hideResults();
this.updateClearBtn();
this.input.focus();
});
}
this.input.addEventListener('focus', () => {
if (this.input.value.length >= this.minQueryLength) {
this.showResults();
}
});
this.input.addEventListener('touchend', (e) => {
e.stopPropagation();
this.input.focus();
});
this.input.addEventListener('touchstart', (e) => {
e.stopPropagation();
}, { passive: true });
const handleOutsideInteraction = (e) => {
if (!this.wrapper.contains(e.target)) {
const sidebarPanel = document.getElementById('ss-panel');
if (sidebarPanel && sidebarPanel.contains(this.wrapper) && sidebarPanel.contains(e.target)) {
return;
}
this.hideResults();
}
};
document.addEventListener('click', handleOutsideInteraction);
document.addEventListener('touchstart', handleOutsideInteraction, { passive: true });
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') this.hideResults();
});
}
updateClearBtn() {
const show = this.input.value.length >= this.minQueryLength;
if (this.clearBtn) this.clearBtn.classList.toggle('hidden', !show);
if (this.submitBtn) this.submitBtn.classList.toggle('hidden', show);
}
handleInput(query) {
const trimmedQuery = query.trim();
if (this.debounceTimer) clearTimeout(this.debounceTimer);
if (trimmedQuery.length {
this.fetchSearchData(trimmedQuery);
}, this.debounceDelay);
}
async fetchSearchData(query) {
if (this.cache.has(query)) {
const cached = this.cache.get(query);
this.setLoadingState(false);
this.renderResults(cached.results, query, cached.recommended);
return;
}
if (this.currentRequest) {
this.currentRequest.abort();
this.currentRequest = null;
}
const requestId = ++this.requestId;
const controller = new AbortController();
this.currentRequest = controller;
const baseUrl = window.Shopify?.routes?.root || '/';
const apiUrl = `${baseUrl}search/suggest.json?q=${encodeURIComponent(query)}&resources[type]=product,query&resources[limit]=5&resources[limit_scope]=each`;
try {
const response = await fetch(apiUrl, {
signal: controller.signal,
headers: { 'Accept': 'application/json' }
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
if (requestId !== this.requestId) return;
this.currentRequest = null;
const results = data.resources?.results || {};
if (this.cache.size > 50) this.cache.clear();
this.cache.set(query, { results, recommended: null });
this.setLoadingState(false);
this.renderResults(results, query, null);
} catch (error) {
if (error.name === 'AbortError') return;
if (requestId !== this.requestId) return;
console.error('Predictive search error:', error);
this.setLoadingState(false);
this.showError();
}
}
async fetchRecommendations(productId) {
try {
const baseUrl = window.Shopify?.routes?.root || '/';
const url = `${baseUrl}recommendations/products.json?product_id=${productId}&limit=6&intent=related`;
const response = await fetch(url, { headers: { 'Accept': 'application/json' } });
if (!response.ok) return [];
const data = await response.json();
return (data.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 3);
} catch (e) {
return [];
}
}
async addToCart(variantId, btn) {
btn.setAttribute('data-loading', '');
btn.textContent = 'Adding...';
try {
const response = await fetch('/cart/add.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify({ id: variantId, quantity: 1 })
});
if (!response.ok) throw new Error('Failed to add to cart');
btn.removeAttribute('data-loading');
btn.setAttribute('data-added', '');
btn.textContent = 'Added!';
document.dispatchEvent(new CustomEvent('cart:refresh'));
setTimeout(() => {
btn.removeAttribute('data-added');
btn.textContent = 'Add to Cart';
}, 2000);
} catch (e) {
btn.removeAttribute('data-loading');
btn.textContent = 'Add to Cart';
console.error('ATC error:', e);
}
}
bindAtcButtons() {
this.resultsContent.querySelectorAll('.atc-btn').forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const variantId = btn.dataset.variantId;
if (variantId) this.addToCart(variantId, btn);
});
});
}
renderResults(results, query, preloadedRecommended) {
if (!results || ((!results.products || results.products.length === 0) && (!results.queries || results.queries.length === 0))) {
this.resultsContent.innerHTML = `
No results found for "${this.escapeHtml(query)}"
`;
this.showResults();
return;
}
const products = (results.products || [])
.filter(p => {
const tags = (p.tags || []).map(t => t.toLowerCase());
return !tags.includes('searchnise_ignore') && !tags.includes('search_hide');
})
.slice(0, 4);
const queries = (results.queries || []).slice(0, 4);
const firstProductId = products.length > 0 ? products[0].id : null;
let html = '';
if (products.length > 0) {
html += `
`;
products.forEach(product => {
html += this.renderMatchedProduct(product);
});
html += `
`;
}
if (queries.length > 0) {
html += `
Top Searches
- ${SEARCH_ICON} ${queries.map(q => this.renderQueryItem(q)).join('')}
View all results for “${this.escapeHtml(query)}”
`;
if (firstProductId) {
if (preloadedRecommended && preloadedRecommended.length > 0) {
html += this.renderRecommendedSection(preloadedRecommended);
} else if (preloadedRecommended === null) {
html += `
`;
}
}
this.resultsContent.innerHTML = html;
this.showResults();
this.bindAtcButtons();
if (firstProductId && preloadedRecommended === null) {
this.fetchAndPatchRecommendations(firstProductId, query);
}
}
renderMatchedProduct(product) {
const imgUrl = product.featured_image?.url || product.image || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_220x220$1$2') : '';
const price = this.formatPrice(product.price, product.price_min, product.price_max);
const isSingleVariant = !product.variants || product.variants.length
${imgSized
? `
`
: `
`
}
${title}
${price ? `
${price}
` : ''}
View Product
`;
}
renderSuggestedProduct(product) {
const imgUrl = product.featured_image?.src || product.featured_image?.url || product.images?.[0] || '';
const imgSized = imgUrl ? imgUrl.replace(/(\.[a-z]+)(\?.*)?$/i, '_300x300$1$2') : '';
const productUrl = this.escapeHtml(product.url || `/products/${product.handle}`);
const title = this.escapeHtml(product.title || '');
return `
${imgSized
? `
`
: `
`
}
${title}
`;
}
renderQueryItem(item) {
const queryText = item.styled_text || this.escapeHtml(item.text || '');
const queryUrl = this.escapeHtml(item.url || '#');
return `
${queryText}
`;
}
renderRecommendedSection(recommended) {
return `
Suggested Products
${recommended.map(p => this.renderSuggestedProduct(p)).join('')}
`;
}
async fetchAndPatchRecommendations(productId, query) {
const recommended = await this.fetchRecommendations(productId);
if (query !== this.currentQuery) return;
if (this.cache.has(query)) {
this.cache.get(query).recommended = recommended;
}
const slot = this.resultsContent.querySelector('[data-recommendations-slot]');
if (!slot) return;
if (recommended.length > 0) {
slot.outerHTML = this.renderRecommendedSection(recommended);
} else {
slot.remove();
}
}
setLoadingState(loading) {
this.resultsContainer.classList.toggle('is-loading', loading);
if (loading && !this.resultsContainer.classList.contains('show')) {
this.showResults();
}
}
formatPrice(price, priceMin, priceMax) {
if (!price && !priceMin && !priceMax) return '';
const formatCurrency = (amount) => {
if (window.Shopify?.formatMoney) {
return window.Shopify.formatMoney(amount, window.Shopify.money_format || '$');
}
const currency = window.Shopify?.currency?.active || 'USD';
return new Intl.NumberFormat('en-US', { style: 'currency', currency }).format(amount);
};
if (priceMin && priceMax && priceMin !== priceMax) {
return `${formatCurrency(priceMin)} – ${formatCurrency(priceMax)}`;
}
return formatCurrency(price || priceMin || priceMax);
}
escapeHtml(text) {
if (text == null) return '';
const div = document.createElement('div');
div.textContent = String(text);
return div.innerHTML;
}
showError() {
this.resultsContent.innerHTML = `
Unable to load results. Please try again.
`;
this.showResults();
}
showResults() {
this.resultsContainer.classList.remove('hidden');
this.resultsContainer.classList.add('show');
}
hideResults() {
this.resultsContainer.classList.add('hidden');
this.resultsContainer.classList.remove('show');
}
};
} // end if (!window.MomentousPredictiveSearch)
function initPredictiveSearch() {
document.querySelectorAll('[data-search-form]').forEach(function(wrapper) {
if (!wrapper.__predictiveSearch) {
wrapper.__predictiveSearch = new window.MomentousPredictiveSearch(wrapper);
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initPredictiveSearch);
} else {
initPredictiveSearch();
}
})();
Recommended Products
Creatine - 60 Servings
£27.00
View Product
Creatine - 90 Servings
£33.00
View Product
Creatine Chews 150-Count
£39.00
View Product
#ss-backdrop {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.45);
z-index: 400;
}
#ss-panel {
display: flex;
flex-direction: column;
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: 440px;
max-width: 100%;
background: #fff;
z-index: 401;
transform: translateX(100%);
transition: transform 0.3s ease;
box-shadow: -4px 0 24px rgba(0,0,0,0.1);
}
#ss-panel.open,
#ss-backdrop.open {
display: flex; /* backdrop uses display:block via override below */
}
#ss-backdrop.open { display: block; }
#ss-panel.open { transform: translateX(0); }
#ss-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px 20px;
border-bottom: 1px solid #e5e5e5;
flex-shrink: 0;
}
#ss-title {
font-size: 17px;
font-weight: 600;
color: #171717;
}
#ss-header button {
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #555;
line-height: 0;
}
#ss-body {
flex: 1;
min-height: 0;
overflow-y: auto;
padding: 18px 20px;
-webkit-overflow-scrolling: touch;
}
/* Results appear inline, not as a dropdown */
#ss-panel .search-form-wrapper { isolation: auto; }
#ss-panel .search-form__results {
position: static !important;
width: 100% !important;
border: none !important;
box-shadow: none !important;
border-radius: 0 !important;
margin-top: 10px !important;
}
#ss-panel .search-form__results-content {
padding: 0 !important;
}
/* Recommended */
#ss-recommended { margin-top: 20px; }
#ss-recommended-label {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #757575;
margin: 0 0 12px;
}
.ss-rec-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
border: 1px solid #e5e5e5;
border-radius: 8px;
text-decoration: none;
margin-bottom: 8px;
transition: background 0.15s;
}
.ss-rec-item:hover { background: #fafafa; }
.ss-rec-item img,
.ss-rec-img-placeholder {
width: 72px;
height: 72px;
border-radius: 6px;
object-fit: cover;
flex-shrink: 0;
background: #f0f0f0;
}
.ss-rec-info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
gap: 4px;
}
.ss-rec-title {
font-size: 13px;
font-weight: 600;
color: #171717;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.ss-rec-price {
font-size: 13px;
color: #737373;
}
#ss-recommended.hidden { display: none; }
var _ssScrollY = 0;
function openSearchSidebar() {
_ssScrollY = window.pageYOffset || document.documentElement.scrollTop;
document.body.style.position = 'fixed';
document.body.style.top = '-' + _ssScrollY + 'px';
document.body.style.width = '100%';
document.getElementById('ss-panel').classList.add('open');
document.getElementById('ss-backdrop').classList.add('open');
setTimeout(function() {
var input = document.querySelector('#ss-panel [data-search-input]');
if (input) input.focus();
}, 320);
}
function closeSearchSidebar() {
document.getElementById('ss-panel').classList.remove('open');
document.getElementById('ss-backdrop').classList.remove('open');
document.body.style.position = '';
document.body.style.top = '';
document.body.style.width = '';
window.scrollTo(0, _ssScrollY);
}
// Hide recommended when typing, show when empty
document.addEventListener('DOMContentLoaded', function() {
var input = document.querySelector('#ss-panel [data-search-input]');
var rec = document.getElementById('ss-recommended');
if (!input || !rec) return;
input.addEventListener('input', function() {
if (input.value.trim().length > 0) {
rec.classList.add('hidden');
} else {
rec.classList.remove('hidden');
}
});
// Clear button also restores recommended
var clearBtn = document.querySelector('#ss-panel [data-search-clear]');
if (clearBtn) {
clearBtn.addEventListener('click', function() {
setTimeout(function() { rec.classList.remove('hidden'); }, 20);
});
}
});
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeSearchSidebar();
});
.favicon {display: block;}
.recharge-theme {
/* App */
--recharge-app-background: #F9F8F4;
--recharge-app-container: 1200px;
--recharge-app-vertical-padding: 32px;
/* Brand colors */
--recharge-color-brand: #467C99;
/* Tints */
--recharge-color-brand-120: #38637a;
--recharge-color-brand-20: #6b96ad;
--recharge-color-brand-40: #90b0c2;
--recharge-color-brand-60: #b5cbd6;
--recharge-color-brand-75: #d1dee6;
--recharge-color-brand-85: #e3ebf0;
/* Neutral */
--recharge-color-neutral: hsl(201, 35%, 7%);
--recharge-color-neutral-80: hsl(201, 7%, 25%);
--recharge-color-neutral-70: hsl(201, 5%, 35%);
--recharge-color-neutral-40: hsl(201, 3%, 63%);
--recharge-color-neutral-10: hsl(201, 2%, 91%);
/* Links */
--recharge-button-secondary: #467C99;
--recharge-button-secondary-120: #38637a;
--recharge-button-secondary-60: #90b0c2;
/* Images */
--recharge-images-ratio: 1;
/* Cards */
--recharge-cards-background: #FFFFFF;
--recharge-cards-border-color: RGBA(0,0,0,0);
/* Fonts */
--recharge-typography-scale: 16px;
--recharge-typography-size-1: calc(3 * var(--recharge-typography-scale));
--recharge-typography-size-2: calc(2.25 * var(--recharge-typography-scale));
--recharge-typography-size-3: calc(1.625 * var(--recharge-typography-scale));
--recharge-typography-size-4: calc(1.25 * var(--recharge-typography-scale));
--recharge-typography-size-5: calc(1 * var(--recharge-typography-scale));
--recharge-typography-size-6: calc(.875 * var(--recharge-typography-scale));
/** Text **/
--recharge-typography-light: #FFFFFF;
--recharge-typography-primary: var(--recharge-color-neutral);
--recharge-typography-secondary: var(--recharge-color-neutral-70);
/* Corners */
--recharge-corners-radius: 8px;
--recharge-button-border-radius: 8px;
/* Views */
--recharge-views-background: #F9F8F4;
/* Buttons */
--recharge-button-font-family: inherit;
--recharge-button-brand: var(--recharge-color-brand);
--recharge-button-color: #FFFFFF;
}
(function() {
var initialCartState = [];
var previousCartStateKey = 'previousCartState';
var removedItemsKey = 'removedItemsState';
var previousCartState = [];
try {
previousCartState = JSON.parse(localStorage.getItem(previousCartStateKey) || '[]');
} catch (e) {
previousCartState = [];
}
var removedItems = previousCartState.filter(function(prevItem) {
return !initialCartState.some(function(currItem) {
return currItem.id === prevItem.id;
});
});
if (removedItems.length) {
localStorage.setItem(removedItemsKey, JSON.stringify(removedItems));
}
localStorage.setItem(previousCartStateKey, JSON.stringify(initialCartState));
})();
(function() {
var productId = "8258763423927";
var productTitle = "Creatine Chews 150-Count";
var productHandle = "creatine-monohydrate-chews";
var marketId = "21022965943";
var storageKey = 'oe_viewedProducts';
function trackViewedProducts() {
if (!productId) return;
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
viewedProducts = [];
}
viewedProducts = viewedProducts.filter(function(p) { return p.id !== productId; });
viewedProducts.unshift({
id: productId,
title: productTitle,
handle: productHandle,
viewedAt: new Date().toISOString()
});
viewedProducts = viewedProducts.slice(0, 50);
localStorage.setItem(storageKey, JSON.stringify(viewedProducts));
updateCartAttributes();
}
function updateCartAttributes() {
var viewedProducts = [];
try {
viewedProducts = JSON.parse(localStorage.getItem(storageKey) || '[]');
} catch (e) {
return;
}
var productIds = viewedProducts.map(function(p) { return p.id; }).slice(0, 10).join(',');
var cartAttributes = {};
if (productIds) cartAttributes['__upsell_recently_viewed_products'] = productIds;
if (marketId) cartAttributes['__upsell_market_id'] = marketId;
if (Object.keys(cartAttributes).length === 0) return;
fetch(window.Shopify.routes.root + 'cart/update.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ attributes: cartAttributes })
}).catch(function() {});
}
trackViewedProducts();
window.addEventListener('popstate', trackViewedProducts);
})();
window['ShopifyForms'] = {
...window['ShopifyForms'],
currentPageType: "product"
};
Price History
Loading...
