{"product_id":"2-in-1-changing-pad-tote-bag🎒","title":"2-in-1 Changing Pad Tote Bag🎒","description":"\u003cdiv class=\"matbag-lp\" id=\"matbagLanding\"\u003e\n\n  \u003c!-- =========================================================\n       01 HERO\n  ========================================================== --\u003e\n  \u003csection class=\"mb-hero\"\u003e\n\n    \u003cdiv class=\"mb-pill\"\u003e\n      2-IN-1 CHANGING MAT + TOTE BAG\n    \u003c\/div\u003e\n\n    \u003ch2\u003e\n      Change Anywhere.\u003cbr\u003e\n      Pack in Seconds.\n    \u003c\/h2\u003e\n\n    \u003cp class=\"mb-lead\"\u003e\n      Stop juggling clothes, shoes and towels on locker-room benches.\n      Lay it flat when you need your own changing space, then pull it closed\n      and carry everything away in one bag.\n    \u003c\/p\u003e\n\n    \u003c!-- AUTO LOAD PRODUCT MEDIA #1 --\u003e\n    \u003cdiv class=\"mb-media mb-hero-media\" data-media-wrap\u003e\n      \u003cimg data-product-media=\"0\" alt=\"2-in-1 changing mat bag\"\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-four-benefits\"\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e↔️\u003c\/span\u003e\n        \u003cstrong\u003eWide Changing Area\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e⚡\u003c\/span\u003e\n        \u003cstrong\u003eSeconds to Pack\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e👟\u003c\/span\u003e\n        \u003cstrong\u003eGear Off the Floor\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e👜\u003c\/span\u003e\n        \u003cstrong\u003eTurns Into a Tote\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       02 PAIN\n  ========================================================== --\u003e\n  \u003csection class=\"mb-pain\"\u003e\n\n    \u003cdiv class=\"mb-label mb-label-light\"\u003e\n      THE PART OF CHANGING NOBODY LIKES\n    \u003c\/div\u003e\n\n    \u003ch2\u003e\n      The Locker-Room Floor Shouldn’t Be Part of Your Routine.\n    \u003c\/h2\u003e\n\n    \u003cp\u003e\n      Shoes here. Clean clothes there. A towel balanced on a bench.\n      Then everything has to be packed again before you can leave.\n    \u003c\/p\u003e\n\n    \u003cdiv class=\"mb-pain-divider\"\u003e\u003c\/div\u003e\n\n    \u003cp class=\"mb-pain-strong\"\u003e\n      One mat gives everything its own place—and becomes the bag when you’re done.\n    \u003c\/p\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       03 GIF\n  ========================================================== --\u003e\n  \u003csection class=\"mb-demo-card\"\u003e\n\n    \u003cdiv class=\"mb-copy mb-center\"\u003e\n\n      \u003cdiv class=\"mb-label\"\u003e\n        ⚡ SEE THE 2-IN-1 IDEA IN ACTION\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        Lay Out. Pull. Go.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        No carefully folding everything back into a gym bag.\n        Keep your essentials on the mat, pull it together,\n        and you’re ready to move.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-gif-wrap\"\u003e\n      \u003cimg class=\"mb-demo-gif\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0790\/0397\/5780\/files\/9_14_1.gif?v=1789378519\" alt=\"2-in-1 changing mat converting into a tote bag\" loading=\"lazy\"\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-steps\"\u003e\n\n      \u003cdiv class=\"mb-step\"\u003e\n        \u003cspan\u003e1\u003c\/span\u003e\n        \u003cstrong\u003eLAY OUT\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"mb-step-arrow\"\u003e›\u003c\/div\u003e\n\n      \u003cdiv class=\"mb-step\"\u003e\n        \u003cspan\u003e2\u003c\/span\u003e\n        \u003cstrong\u003ePULL\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"mb-step-arrow\"\u003e›\u003c\/div\u003e\n\n      \u003cdiv class=\"mb-step\"\u003e\n        \u003cspan\u003e3\u003c\/span\u003e\n        \u003cstrong\u003eGO\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       04 IMAGE 2\n  ========================================================== --\u003e\n  \u003csection class=\"mb-section\"\u003e\n\n    \u003cdiv class=\"mb-copy\"\u003e\n\n      \u003cdiv class=\"mb-label\"\u003e\n        FAST PACK-UP\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        Stop Repacking Everything Piece by Piece.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Changing is easy. Repacking is usually the annoying part.\n        This design lets the mat gather around your belongings\n        so leaving takes seconds instead of another organizing session.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-media\" data-media-wrap\u003e\n      \u003cimg data-product-media=\"1\" alt=\"Pack in seconds changing mat bag\" loading=\"lazy\"\u003e\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       05 IMAGE 3\n  ========================================================== --\u003e\n  \u003csection class=\"mb-section mb-soft\"\u003e\n\n    \u003cdiv class=\"mb-copy\"\u003e\n\n      \u003cdiv class=\"mb-label\"\u003e\n        ROOM FOR THE REAL ESSENTIALS\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        Shoes, Outfit, Towel—Keep It All Together.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Spread everything out where you can actually see it.\n        Your changing essentials stay organized instead of disappearing\n        into the bottom of a crowded gym bag.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-media\" data-media-wrap\u003e\n      \u003cimg data-product-media=\"2\" alt=\"Changing mat holding shoes clothes towel and accessories\" loading=\"lazy\"\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-essential-grid\"\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e👟\u003c\/span\u003e\n        \u003cstrong\u003eShoes\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e👕\u003c\/span\u003e\n        \u003cstrong\u003eOutfit\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e🧺\u003c\/span\u003e\n        \u003cstrong\u003eTowel\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e🧴\u003c\/span\u003e\n        \u003cstrong\u003eDaily Extras\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       06 IMAGE 4\n  ========================================================== --\u003e\n  \u003csection class=\"mb-floor\"\u003e\n\n    \u003cdiv class=\"mb-copy mb-center\"\u003e\n\n      \u003cdiv class=\"mb-label\"\u003e\n        YOUR OWN CHANGING SPACE\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        Keep Your Gear—and Yourself—Off Questionable Floors.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Locker rooms, studios and shared changing spaces aren’t always\n        where you want clean clothes, socks or personal items sitting.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-media\" data-media-wrap\u003e\n      \u003cimg data-product-media=\"3\" alt=\"Woman using changing mat in a locker room\" loading=\"lazy\"\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-check-grid\"\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e✓\u003c\/span\u003e\n        \u003cp\u003eCreates a defined personal changing area\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e✓\u003c\/span\u003e\n        \u003cp\u003eKeeps clothes and accessories together\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e✓\u003c\/span\u003e\n        \u003cp\u003eHelps reduce direct contact with the floor\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e✓\u003c\/span\u003e\n        \u003cp\u003eMakes changing feel less chaotic\u003c\/p\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       07 IMAGE 5\n  ========================================================== --\u003e\n  \u003csection class=\"mb-carry\"\u003e\n\n    \u003cdiv class=\"mb-copy mb-copy-light\"\u003e\n\n      \u003cdiv class=\"mb-label mb-label-pink\"\u003e\n        FROM CHANGING SPACE TO CARRY BAG\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        When You’re Done, It Leaves With You.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Gather everything inside and carry it out as one tote.\n        No second bag to unfold. No pile of clothes left behind.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-media mb-media-dark\" data-media-wrap\u003e\n      \u003cimg data-product-media=\"4\" alt=\"Woman carrying 2-in-1 mat tote bag\" loading=\"lazy\"\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-carry-strip\"\u003e\n\n      \u003cdiv\u003e\n        \u003cb\u003e01\u003c\/b\u003e\n        \u003cspan\u003eChange\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cb\u003e02\u003c\/b\u003e\n        \u003cspan\u003eGather\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cb\u003e03\u003c\/b\u003e\n        \u003cspan\u003eCarry\u003c\/span\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       08 IMAGE 6\n  ========================================================== --\u003e\n  \u003csection class=\"mb-section\"\u003e\n\n    \u003cdiv class=\"mb-copy mb-center\"\u003e\n\n      \u003cdiv class=\"mb-label\"\u003e\n        NOT JUST FOR ONE ROUTINE\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        One Simple Idea for All the Places You Change.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Keep it ready for classes, training sessions,\n        studio days or travel when you need a cleaner,\n        faster place to change.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-media\" data-media-wrap\u003e\n      \u003cimg data-product-media=\"5\" alt=\"Dance gym yoga and travel uses\" loading=\"lazy\"\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-routine-grid\"\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e🩰\u003c\/span\u003e\n        \u003cstrong\u003eDance\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e🏋️\u003c\/span\u003e\n        \u003cstrong\u003eGym\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e🧘\u003c\/span\u003e\n        \u003cstrong\u003eYoga\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e✈️\u003c\/span\u003e\n        \u003cstrong\u003eTravel\u003c\/strong\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       09 IMAGE 7\n  ========================================================== --\u003e\n  \u003csection class=\"mb-transform\"\u003e\n\n    \u003cdiv class=\"mb-copy\"\u003e\n\n      \u003cdiv class=\"mb-label\"\u003e\n        ONE PRODUCT · TWO MOMENTS\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        Ready Before Class.\u003cbr\u003e\n        Easier After Class.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Open it when you arrive.\n        Use it while you change.\n        Pull it together when you leave.\n        The same product solves both sides of your routine.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-media\" data-media-wrap\u003e\n      \u003cimg data-product-media=\"6\" alt=\"Changing mat transforming from floor mat to tote\" loading=\"lazy\"\u003e\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       10 IMAGE 8\n  ========================================================== --\u003e\n  \u003csection class=\"mb-section mb-design\"\u003e\n\n    \u003cdiv class=\"mb-copy\"\u003e\n\n      \u003cdiv class=\"mb-label\"\u003e\n        SMART 2-IN-1 DESIGN\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        Wide When You Need Space.\u003cbr\u003e\n        Compact When You Need to Leave.\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        The open mat gives your essentials room to spread out.\n        When your routine is finished, the same piece becomes an easy-carry tote.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-media\" data-media-wrap\u003e\n      \u003cimg data-product-media=\"7\" alt=\"Wide changing mat and easy carry tote\" loading=\"lazy\"\u003e\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       11 OLD WAY VS BETTER WAY\n  ========================================================== --\u003e\n  \u003csection class=\"mb-compare\"\u003e\n\n    \u003cdiv class=\"mb-label\"\u003e\n      SMALL CHANGE · MUCH EASIER ROUTINE\n    \u003c\/div\u003e\n\n    \u003ch2\u003e\n      Why Carry a Separate Mat and Bag?\n    \u003c\/h2\u003e\n\n    \u003cdiv class=\"mb-compare-row mb-bad\"\u003e\n\n      \u003cdiv class=\"mb-compare-icon\"\u003e×\u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cstrong\u003eThe Usual Way\u003c\/strong\u003e\n        \u003cp\u003e\n          Clothes on a bench, shoes on the floor,\n          then everything has to be packed again.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-compare-row mb-bad\"\u003e\n\n      \u003cdiv class=\"mb-compare-icon\"\u003e×\u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cstrong\u003eExtra Gear to Carry\u003c\/strong\u003e\n        \u003cp\u003e\n          A changing mat plus another separate bag creates more bulk.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-compare-row mb-good\"\u003e\n\n      \u003cdiv class=\"mb-compare-icon\"\u003e✓\u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cstrong\u003eThe 2-in-1 Way\u003c\/strong\u003e\n        \u003cp\u003e\n          One product becomes your changing space first\n          and your carry bag when you’re finished.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       12 BENEFIT SUMMARY\n  ========================================================== --\u003e\n  \u003csection class=\"mb-summary\"\u003e\n\n    \u003ch2\u003e\n      One Less Thing to Think About.\n    \u003c\/h2\u003e\n\n    \u003cp\u003e\n      The best everyday products don’t make your routine more complicated.\n      They quietly remove one annoying step.\n    \u003c\/p\u003e\n\n    \u003cdiv class=\"mb-summary-grid\"\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e01\u003c\/span\u003e\n        \u003cstrong\u003eLay It Down\u003c\/strong\u003e\n        \u003cp\u003eYour own changing area.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e02\u003c\/span\u003e\n        \u003cstrong\u003eKeep Gear Together\u003c\/strong\u003e\n        \u003cp\u003eSee everything at once.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003cspan\u003e03\u003c\/span\u003e\n        \u003cstrong\u003ePull \u0026amp; Leave\u003c\/strong\u003e\n        \u003cp\u003eNo second packing routine.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       13 FAQ\n  ========================================================== --\u003e\n  \u003csection class=\"mb-faq\"\u003e\n\n    \u003cdiv class=\"mb-label\"\u003e\n      GOOD TO KNOW\n    \u003c\/div\u003e\n\n    \u003ch2\u003e\n      Frequently Asked Questions\n    \u003c\/h2\u003e\n\n\n    \u003cdetails\u003e\n\n      \u003csummary\u003e\n        How does the mat turn into a tote?\n      \u003c\/summary\u003e\n\n      \u003cp\u003e\n        Place your belongings on the open mat, then pull the surrounding\n        closure so the sides gather around your items and form the carry bag.\n      \u003c\/p\u003e\n\n    \u003c\/details\u003e\n\n\n    \u003cdetails\u003e\n\n      \u003csummary\u003e\n        What can I carry in it?\n      \u003c\/summary\u003e\n\n      \u003cp\u003e\n        It is designed for typical changing essentials such as shoes,\n        workout clothing, towels, bottles and smaller personal items.\n        Capacity will vary depending on how bulky your belongings are.\n      \u003c\/p\u003e\n\n    \u003c\/details\u003e\n\n\n    \u003cdetails\u003e\n\n      \u003csummary\u003e\n        Is it only useful at the gym?\n      \u003c\/summary\u003e\n\n      \u003cp\u003e\n        No. It can also be useful for dance classes, yoga,\n        studios, locker rooms and travel—anywhere you want a more\n        organized changing setup.\n      \u003c\/p\u003e\n\n    \u003c\/details\u003e\n\n\n    \u003cdetails\u003e\n\n      \u003csummary\u003e\n        How should I clean it?\n      \u003c\/summary\u003e\n\n      \u003cp\u003e\n        For everyday dirt, wipe the surface clean as needed.\n        For deeper cleaning, gentle cleaning and air drying\n        are recommended.\n      \u003c\/p\u003e\n\n    \u003c\/details\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       14 EMOTIONAL CLOSE\n  ========================================================== --\u003e\n  \u003csection class=\"mb-final-message\"\u003e\n\n    \u003cdiv class=\"mb-final-mark\"\u003e\n      ✨\n    \u003c\/div\u003e\n\n    \u003ch2\u003e\n      Change. Pack. Leave.\u003cbr\u003e\n      Without the Usual Mess.\n    \u003c\/h2\u003e\n\n    \u003cp\u003e\n      A cleaner changing space when you arrive.\n      A simple tote when you leave.\n      Nothing extra to remember.\n    \u003c\/p\u003e\n\n  \u003c\/section\u003e\n\n\n  \u003c!-- =========================================================\n       15 FINAL RETURN TO BUY CTA\n  ========================================================== --\u003e\n  \u003csection class=\"mb-buy-box\"\u003e\n\n    \u003cdiv class=\"mb-buy-icon\"\u003e\n      👜\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"mb-buy-label\"\u003e\n      READY TO MAKE YOUR ROUTINE EASIER?\n    \u003c\/div\u003e\n\n    \u003ch2\u003e\n      One Mat. One Tote.\u003cbr\u003e\n      One Less Hassle.\n    \u003c\/h2\u003e\n\n    \u003cp\u003e\n      Head back to the purchase area above\n      to choose your option and add it to your cart.\n    \u003c\/p\u003e\n\n    \u003cbutton type=\"button\" class=\"mb-buy-button\" onclick=\"mbGoToBuy()\"\u003e\n      BACK TO BUY \/ ADD TO CART\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"mb-buy-notes\"\u003e\n      \u003cspan\u003e⚡ Fast Pack-Up\u003c\/span\u003e\n      \u003ci\u003e•\u003c\/i\u003e\n      \u003cspan\u003e👟 Cleaner Changing\u003c\/span\u003e\n      \u003ci\u003e•\u003c\/i\u003e\n      \u003cspan\u003e👜 2-in-1 Design\u003c\/span\u003e\n    \u003c\/div\u003e\n\n  \u003c\/section\u003e\n\n\u003c\/div\u003e\n\n\n\u003cstyle\u003e\n\n\/* =========================================================\n   BASE\n========================================================= *\/\n\n.matbag-lp{\n  --mb-navy:#203a56;\n  --mb-deep:#152b43;\n  --mb-text:#384554;\n  --mb-muted:#687583;\n  --mb-line:#dce3e8;\n  --mb-blue-soft:#eef3f6;\n  --mb-bg:#fbfaf8;\n  --mb-cream:#f7f2ed;\n  --mb-pink:#c98f9e;\n  --mb-pink-soft:#f5e8eb;\n  --mb-green:#43705d;\n\n  width:100%;\n  max-width:760px;\n  margin:0 auto;\n  padding:6px 13px 34px;\n  box-sizing:border-box;\n\n  font-family:\n    -apple-system,\n    BlinkMacSystemFont,\n    \"Segoe UI\",\n    Arial,\n    Helvetica,\n    sans-serif;\n\n  color:var(--mb-text);\n  font-size:17px;\n  line-height:1.55;\n}\n\n.matbag-lp *,\n.matbag-lp *::before,\n.matbag-lp *::after{\n  box-sizing:border-box;\n}\n\n.matbag-lp h2,\n.matbag-lp p{\n  margin:0;\n}\n\n.matbag-lp h2{\n  font-family:\n    Georgia,\n    \"Times New Roman\",\n    serif;\n\n  color:var(--mb-deep);\n  font-weight:700;\n  letter-spacing:-.025em;\n}\n\n.matbag-lp img{\n  display:block;\n  max-width:100%;\n}\n\n\n\/* =========================================================\n   MEDIA AUTO-LOAD\n========================================================= *\/\n\n.mb-media{\n  position:relative;\n  overflow:hidden;\n  width:100%;\n  aspect-ratio:1\/1;\n\n  border-radius:17px;\n  border:1px solid var(--mb-line);\n  background:#f1f3f4;\n}\n\n.mb-media img{\n  width:100%;\n  height:100%;\n  object-fit:cover;\n\n  opacity:0;\n\n  transition:opacity .25s ease;\n}\n\n.mb-media img.mb-loaded{\n  opacity:1;\n}\n\n.mb-media.mb-media-missing{\n  display:none;\n}\n\n\n\/* =========================================================\n   LABELS\n========================================================= *\/\n\n.mb-pill,\n.mb-label,\n.mb-buy-label{\n  display:inline-block;\n\n  font-size:11px;\n  line-height:1.25;\n\n  font-weight:850;\n  letter-spacing:.065em;\n}\n\n.mb-label{\n  margin-bottom:7px;\n  color:#a65c70;\n}\n\n.mb-label-light{\n  color:#f6cfd7;\n}\n\n.mb-label-pink{\n  color:#f1baca;\n}\n\n\n\/* =========================================================\n   HERO\n========================================================= *\/\n\n.mb-hero{\n  padding:23px 2px 11px;\n  text-align:center;\n}\n\n.mb-pill{\n  margin-bottom:12px;\n  padding:8px 13px;\n\n  border-radius:999px;\n\n  color:var(--mb-navy);\n  background:var(--mb-blue-soft);\n}\n\n.mb-hero h2{\n  max-width:650px;\n  margin:0 auto;\n\n  font-size:clamp(31px,8vw,43px);\n  line-height:1.03;\n}\n\n.mb-lead{\n  max-width:640px;\n\n  margin:\n    14px\n    auto\n    18px !important;\n\n  font-size:18px;\n  line-height:1.5;\n}\n\n.mb-hero-media{\n  margin-top:4px;\n}\n\n.mb-four-benefits{\n  display:grid;\n\n  grid-template-columns:\n    repeat(2,minmax(0,1fr));\n\n  gap:8px;\n\n  margin-top:10px;\n}\n\n.mb-four-benefits \u003e div{\n  min-height:67px;\n\n  display:flex;\n  flex-direction:column;\n\n  align-items:center;\n  justify-content:center;\n\n  gap:3px;\n\n  padding:10px 6px;\n\n  border:\n    1px solid\n    var(--mb-line);\n\n  border-radius:12px;\n\n  background:#fff;\n}\n\n.mb-four-benefits span{\n  font-size:20px;\n}\n\n.mb-four-benefits strong{\n  color:var(--mb-deep);\n  font-size:13px;\n  line-height:1.2;\n}\n\n\n\/* =========================================================\n   PAIN BLOCK\n========================================================= *\/\n\n.mb-pain{\n  margin:23px 0 27px;\n\n  padding:25px 18px;\n\n  border-radius:20px;\n\n  background:\n    linear-gradient(\n      145deg,\n      #233e5d,\n      #162c46\n    );\n\n  color:#fff;\n\n  text-align:center;\n}\n\n.mb-pain h2{\n  max-width:650px;\n\n  margin:\n    0\n    auto\n    11px;\n\n  color:#fff;\n\n  font-size:28px;\n  line-height:1.08;\n}\n\n.mb-pain p{\n  max-width:620px;\n  margin:8px auto 0;\n\n  color:#f2f6f9;\n\n  font-size:16px;\n  line-height:1.5;\n}\n\n.mb-pain-divider{\n  width:46px;\n  height:2px;\n\n  margin:16px auto;\n\n  background:\n    rgba(255,255,255,.35);\n}\n\n.mb-pain .mb-pain-strong{\n  color:#fff;\n  font-weight:750;\n}\n\n\n\/* =========================================================\n   COMMON\n========================================================= *\/\n\n.mb-section{\n  margin:27px 0;\n}\n\n.mb-copy{\n  padding:3px 5px 14px;\n}\n\n.mb-center{\n  text-align:center;\n}\n\n.mb-copy h2{\n  margin-bottom:9px;\n\n  font-size:28px;\n  line-height:1.08;\n}\n\n.mb-copy p{\n  font-size:17px;\n  line-height:1.52;\n}\n\n\n\/* =========================================================\n   GIF\n========================================================= *\/\n\n.mb-demo-card{\n  margin:27px 0;\n\n  padding:\n    23px\n    14px\n    19px;\n\n  border-radius:20px;\n\n  border:\n    1px solid\n    #e4e2df;\n\n  background:var(--mb-bg);\n}\n\n.mb-demo-card .mb-copy h2{\n  font-size:29px;\n}\n\n.mb-gif-wrap{\n  display:flex;\n\n  width:100%;\n\n  justify-content:center;\n\n  margin:\n    6px\n    auto\n    16px;\n}\n\n.mb-demo-gif{\n  display:block;\n\n  width:300px;\n  max-width:78vw;\n\n  height:auto;\n\n  border-radius:14px;\n\n  box-shadow:\n    0 8px 22px\n    rgba(25,44,67,.10);\n}\n\n.mb-steps{\n  display:flex;\n\n  align-items:center;\n  justify-content:center;\n\n  gap:7px;\n}\n\n.mb-step{\n  min-width:68px;\n\n  display:flex;\n  flex-direction:column;\n\n  align-items:center;\n\n  gap:3px;\n}\n\n.mb-step span{\n  width:27px;\n  height:27px;\n\n  display:flex;\n\n  align-items:center;\n  justify-content:center;\n\n  border-radius:50%;\n\n  background:var(--mb-navy);\n\n  color:#fff;\n\n  font-size:12px;\n  font-weight:900;\n}\n\n.mb-step strong{\n  color:var(--mb-deep);\n\n  font-size:10px;\n  letter-spacing:.035em;\n}\n\n.mb-step-arrow{\n  color:#9ca7b1;\n  font-size:22px;\n}\n\n\n\/* =========================================================\n   SOFT ESSENTIALS\n========================================================= *\/\n\n.mb-soft{\n  padding:\n    20px\n    13px\n    15px;\n\n  border-radius:20px;\n\n  background:var(--mb-cream);\n\n  border:\n    1px solid\n    #eadfd8;\n}\n\n.mb-essential-grid{\n  display:grid;\n\n  grid-template-columns:\n    repeat(4,minmax(0,1fr));\n\n  gap:7px;\n\n  margin-top:10px;\n}\n\n.mb-essential-grid \u003e div{\n  padding:10px 3px;\n\n  border-radius:9px;\n\n  border:\n    1px solid\n    var(--mb-line);\n\n  background:#fff;\n\n  text-align:center;\n}\n\n.mb-essential-grid span{\n  display:block;\n  margin-bottom:2px;\n  font-size:17px;\n}\n\n.mb-essential-grid strong{\n  color:var(--mb-deep);\n  font-size:11px;\n}\n\n\n\/* =========================================================\n   FLOOR BLOCK\n========================================================= *\/\n\n.mb-floor{\n  margin:29px 0;\n\n  padding:\n    22px\n    13px\n    15px;\n\n  border-radius:20px;\n\n  background:var(--mb-blue-soft);\n}\n\n.mb-floor .mb-copy h2{\n  font-size:29px;\n}\n\n.mb-check-grid{\n  display:grid;\n\n  grid-template-columns:\n    repeat(2,minmax(0,1fr));\n\n  gap:7px;\n\n  margin-top:10px;\n}\n\n.mb-check-grid \u003e div{\n  display:flex;\n\n  gap:6px;\n\n  padding:10px;\n\n  border-radius:10px;\n\n  background:#fff;\n}\n\n.mb-check-grid span{\n  flex:0 0 auto;\n\n  color:var(--mb-green);\n\n  font-weight:900;\n}\n\n.mb-check-grid p{\n  margin:0;\n\n  font-size:12px;\n  line-height:1.35;\n\n  font-weight:700;\n}\n\n\n\/* =========================================================\n   CARRY BLOCK\n========================================================= *\/\n\n.mb-carry{\n  margin:29px 0;\n\n  padding:\n    22px\n    13px\n    15px;\n\n  border-radius:20px;\n\n  background:\n    linear-gradient(\n      145deg,\n      #243e5d,\n      #172c46\n    );\n\n  color:#fff;\n}\n\n.mb-copy-light h2{\n  color:#fff;\n}\n\n.mb-copy-light p{\n  color:#edf3f7;\n}\n\n.mb-media-dark{\n  border-color:\n    rgba(255,255,255,.12);\n}\n\n.mb-carry-strip{\n  display:grid;\n\n  grid-template-columns:\n    repeat(3,1fr);\n\n  gap:7px;\n\n  margin-top:10px;\n}\n\n.mb-carry-strip \u003e div{\n  padding:9px 3px;\n\n  border-radius:9px;\n\n  background:\n    rgba(255,255,255,.10);\n\n  text-align:center;\n}\n\n.mb-carry-strip b{\n  display:block;\n\n  margin-bottom:2px;\n\n  color:#f0b8c7;\n\n  font-size:10px;\n}\n\n.mb-carry-strip span{\n  color:#fff;\n\n  font-size:12px;\n  font-weight:750;\n}\n\n\n\/* =========================================================\n   ROUTINE\n========================================================= *\/\n\n.mb-routine-grid{\n  display:grid;\n\n  grid-template-columns:\n    repeat(4,1fr);\n\n  gap:7px;\n\n  margin-top:10px;\n}\n\n.mb-routine-grid \u003e div{\n  padding:10px 3px;\n\n  border:\n    1px solid\n    var(--mb-line);\n\n  border-radius:10px;\n\n  background:#fff;\n\n  text-align:center;\n}\n\n.mb-routine-grid span{\n  display:block;\n  margin-bottom:2px;\n\n  font-size:18px;\n}\n\n.mb-routine-grid strong{\n  color:var(--mb-deep);\n\n  font-size:11px;\n}\n\n\n\/* =========================================================\n   TRANSFORM BLOCK\n========================================================= *\/\n\n.mb-transform{\n  margin:29px 0;\n\n  padding:\n    20px\n    13px\n    15px;\n\n  border-radius:20px;\n\n  background:#f7f4f1;\n\n  border:\n    1px solid\n    #e8e1db;\n}\n\n\n\/* =========================================================\n   DESIGN\n========================================================= *\/\n\n.mb-design{\n  padding-bottom:5px;\n}\n\n\n\/* =========================================================\n   COMPARISON\n========================================================= *\/\n\n.mb-compare{\n  margin:30px 0;\n\n  padding:\n    22px\n    13px;\n\n  border-radius:19px;\n\n  background:#f8f5f1;\n\n  text-align:center;\n}\n\n.mb-compare \u003e h2{\n  margin-bottom:15px;\n\n  font-size:28px;\n  line-height:1.1;\n}\n\n.mb-compare-row{\n  display:flex;\n\n  align-items:flex-start;\n\n  gap:10px;\n\n  margin-top:8px;\n\n  padding:12px;\n\n  border-radius:11px;\n\n  background:#fff;\n\n  text-align:left;\n}\n\n.mb-compare-icon{\n  flex:\n    0\n    0\n    25px;\n\n  width:25px;\n\n  font-size:19px;\n  font-weight:900;\n}\n\n.mb-compare-row strong{\n  display:block;\n\n  margin-bottom:2px;\n\n  color:var(--mb-deep);\n}\n\n.mb-compare-row p{\n  font-size:13px;\n  line-height:1.4;\n}\n\n.mb-bad .mb-compare-icon{\n  color:#ba5861;\n}\n\n.mb-good{\n  border:\n    1px solid\n    #cedfd6;\n\n  background:#edf6f0;\n}\n\n.mb-good .mb-compare-icon{\n  color:#377158;\n}\n\n\n\/* =========================================================\n   SUMMARY\n========================================================= *\/\n\n.mb-summary{\n  margin:30px 0;\n\n  padding:\n    26px\n    15px;\n\n  border-radius:20px;\n\n  background:\n    linear-gradient(\n      145deg,\n      #f1f5f7,\n      #f7f3f4\n    );\n\n  text-align:center;\n}\n\n.mb-summary \u003e h2{\n  margin-bottom:8px;\n\n  font-size:29px;\n  line-height:1.08;\n}\n\n.mb-summary \u003e p{\n  max-width:590px;\n\n  margin:0 auto 15px;\n\n  font-size:15px;\n}\n\n.mb-summary-grid{\n  display:grid;\n\n  grid-template-columns:1fr;\n\n  gap:8px;\n}\n\n.mb-summary-grid \u003e div{\n  padding:13px 12px;\n\n  border-radius:11px;\n\n  background:#fff;\n\n  border:\n    1px solid\n    #e1e6e9;\n\n  text-align:left;\n}\n\n.mb-summary-grid span{\n  display:inline-block;\n\n  margin-right:7px;\n\n  color:#b87386;\n\n  font-size:10px;\n  font-weight:900;\n}\n\n.mb-summary-grid strong{\n  color:var(--mb-deep);\n\n  font-size:14px;\n}\n\n.mb-summary-grid p{\n  margin:\n    3px\n    0\n    0\n    29px;\n\n  color:var(--mb-muted);\n\n  font-size:13px;\n}\n\n\n\/* =========================================================\n   FAQ\n========================================================= *\/\n\n.mb-faq{\n  margin:31px 0;\n  text-align:center;\n}\n\n.mb-faq \u003e h2{\n  margin-bottom:14px;\n\n  font-size:29px;\n  line-height:1.08;\n}\n\n.mb-faq details{\n  overflow:hidden;\n\n  margin-top:8px;\n\n  border:\n    1px solid\n    var(--mb-line);\n\n  border-radius:11px;\n\n  background:#fff;\n\n  text-align:left;\n}\n\n.mb-faq summary{\n  position:relative;\n\n  padding:\n    14px\n    40px\n    14px\n    13px;\n\n  list-style:none;\n\n  cursor:pointer;\n\n  color:var(--mb-deep);\n\n  font-size:14px;\n  font-weight:800;\n}\n\n.mb-faq summary::-webkit-details-marker{\n  display:none;\n}\n\n.mb-faq summary::after{\n  content:\"+\";\n\n  position:absolute;\n\n  top:50%;\n  right:14px;\n\n  transform:\n    translateY(-50%);\n\n  color:#b76d81;\n\n  font-size:21px;\n}\n\n.mb-faq details[open] summary::after{\n  content:\"–\";\n}\n\n.mb-faq details p{\n  padding:\n    0\n    13px\n    14px;\n\n  color:var(--mb-text);\n\n  font-size:14px;\n  line-height:1.48;\n}\n\n\n\/* =========================================================\n   FINAL MESSAGE\n========================================================= *\/\n\n.mb-final-message{\n  margin:\n    30px\n    0\n    20px;\n\n  padding:\n    27px\n    17px;\n\n  border-radius:19px;\n\n  background:\n    var(--mb-pink-soft);\n\n  border:\n    1px solid\n    #ead6dc;\n\n  text-align:center;\n}\n\n.mb-final-mark{\n  margin-bottom:5px;\n  font-size:21px;\n}\n\n.mb-final-message h2{\n  margin-bottom:9px;\n\n  font-size:29px;\n  line-height:1.06;\n}\n\n.mb-final-message p{\n  max-width:580px;\n\n  margin:0 auto;\n\n  font-size:15px;\n}\n\n\n\/* =========================================================\n   FINAL BUY BOX\n========================================================= *\/\n\n.mb-buy-box{\n  margin:\n    23px\n    0\n    7px;\n\n  padding:\n    29px\n    17px;\n\n  border-radius:20px;\n\n  background:\n    linear-gradient(\n      145deg,\n      #223d5d,\n      #172b45\n    );\n\n  color:#fff;\n\n  text-align:center;\n\n  box-shadow:\n    0 12px 28px\n    rgba(20,40,63,.14);\n}\n\n.mb-buy-icon{\n  margin-bottom:4px;\n  font-size:27px;\n}\n\n.mb-buy-label{\n  margin-bottom:7px;\n\n  color:#f1bac9;\n\n  font-size:10px;\n  letter-spacing:.08em;\n}\n\n.mb-buy-box h2{\n  max-width:600px;\n\n  margin:\n    0\n    auto\n    10px;\n\n  color:#fff;\n\n  font-size:\n    clamp(\n      28px,\n      7vw,\n      36px\n    );\n\n  line-height:1.04;\n}\n\n.mb-buy-box \u003e p{\n  max-width:580px;\n\n  margin:\n    0\n    auto\n    18px;\n\n  color:#eef3f7;\n\n  font-size:15px;\n}\n\n.mb-buy-button{\n  min-height:49px;\n\n  padding:\n    0\n    22px;\n\n  border:0;\n\n  border-radius:999px;\n\n  background:\n    linear-gradient(\n      135deg,\n      #e5b0be,\n      #ce879a\n    );\n\n  color:#17304b;\n\n  font-family:\n    -apple-system,\n    BlinkMacSystemFont,\n    \"Segoe UI\",\n    Arial,\n    sans-serif;\n\n  font-size:13px;\n  font-weight:900;\n\n  letter-spacing:.025em;\n\n  cursor:pointer;\n\n  box-shadow:\n    0 6px 15px\n    rgba(0,0,0,.14);\n\n  transition:\n    transform .15s ease,\n    box-shadow .15s ease;\n}\n\n.mb-buy-button:active{\n  transform:scale(.975);\n}\n\n.mb-buy-notes{\n  display:flex;\n\n  justify-content:center;\n  flex-wrap:wrap;\n\n  gap:5px;\n\n  margin-top:11px;\n\n  color:#dce7ef;\n\n  font-size:10px;\n}\n\n.mb-buy-notes i{\n  opacity:.55;\n  font-style:normal;\n}\n\n\n\/* =========================================================\n   PURCHASE HIGHLIGHT\n========================================================= *\/\n\n.mb-purchase-highlight{\n  animation:\n    mbPurchaseFlash\n    1.25s\n    ease;\n}\n\n@keyframes mbPurchaseFlash{\n\n  0%{\n    box-shadow:\n      0 0 0 0\n      rgba(201,143,158,0);\n  }\n\n  30%{\n    box-shadow:\n      0 0 0 5px\n      rgba(201,143,158,.40);\n  }\n\n  100%{\n    box-shadow:\n      0 0 0 0\n      rgba(201,143,158,0);\n  }\n\n}\n\n\n\/* =========================================================\n   DESKTOP\n========================================================= *\/\n\n@media (min-width:750px){\n\n  .matbag-lp{\n    padding-left:22px;\n    padding-right:22px;\n\n    font-size:18px;\n  }\n\n  .mb-four-benefits{\n    grid-template-columns:\n      repeat(4,1fr);\n  }\n\n  .mb-summary-grid{\n    grid-template-columns:\n      repeat(3,1fr);\n  }\n\n  .mb-summary-grid \u003e div{\n    text-align:center;\n  }\n\n  .mb-summary-grid p{\n    margin:\n      3px\n      0\n      0;\n  }\n\n  .mb-copy h2,\n  .mb-compare \u003e h2{\n    font-size:32px;\n  }\n\n  .mb-pain h2,\n  .mb-floor .mb-copy h2{\n    font-size:33px;\n  }\n\n  .mb-demo-gif{\n    width:300px;\n    max-width:300px;\n  }\n\n}\n\n\n\/* =========================================================\n   MOBILE\n========================================================= *\/\n\n@media (max-width:430px){\n\n  .matbag-lp{\n    padding-left:11px;\n    padding-right:11px;\n  }\n\n  .mb-essential-grid{\n    grid-template-columns:\n      repeat(2,1fr);\n  }\n\n  .mb-buy-box{\n    padding:\n      27px\n      15px;\n  }\n\n  .mb-buy-box h2{\n    font-size:29px;\n  }\n\n  .mb-buy-button{\n    min-width:235px;\n  }\n\n}\n\n\n\/* =========================================================\n   SMALL MOBILE\n========================================================= *\/\n\n@media (max-width:360px){\n\n  .matbag-lp{\n    padding-left:8px;\n    padding-right:8px;\n  }\n\n  .mb-hero h2{\n    font-size:29px;\n  }\n\n  .mb-copy h2,\n  .mb-pain h2,\n  .mb-floor .mb-copy h2,\n  .mb-compare \u003e h2,\n  .mb-summary \u003e h2,\n  .mb-faq \u003e h2,\n  .mb-final-message h2,\n  .mb-buy-box h2{\n    font-size:26px;\n  }\n\n  .mb-check-grid{\n    grid-template-columns:1fr;\n  }\n\n  .mb-routine-grid{\n    grid-template-columns:\n      repeat(2,1fr);\n  }\n\n  .mb-buy-button{\n    width:100%;\n    min-width:0;\n  }\n\n}\n\n\u003c\/style\u003e\n\n\n\u003cscript\u003e\n(function(){\n\n  var ROOT_ID = 'matbagLanding';\n  var REQUIRED_MEDIA = 8;\n  var retries = 0;\n\n\n  \/* =======================================================\n     GET BEST URL FROM IMG\n  ======================================================= *\/\n\n  function getLargestFromSrcset(srcset){\n\n    if(!srcset){\n      return '';\n    }\n\n    var parts =\n      srcset\n        .split(',')\n        .map(function(item){\n\n          var bits =\n            item\n              .trim()\n              .split(\/\\s+\/);\n\n          return {\n            url: bits[0] || '',\n            width:\n              parseInt(\n                bits[1],\n                10\n              ) || 0\n          };\n\n        })\n        .filter(function(item){\n          return item.url;\n        });\n\n\n    parts.sort(function(a,b){\n      return b.width - a.width;\n    });\n\n\n    return parts.length\n      ? parts[0].url\n      : '';\n\n  }\n\n\n  function getImgUrl(img){\n\n    if(!img){\n      return '';\n    }\n\n\n    var srcset =\n      img.getAttribute('srcset') ||\n      img.getAttribute('data-srcset') ||\n      '';\n\n\n    var largest =\n      getLargestFromSrcset(\n        srcset\n      );\n\n\n    var candidates = [\n      largest,\n      img.currentSrc,\n      img.getAttribute('data-src'),\n      img.getAttribute('data-original'),\n      img.getAttribute('src')\n    ];\n\n\n    for(\n      var i = 0;\n      i \u003c candidates.length;\n      i++\n    ){\n\n      var value =\n        candidates[i];\n\n\n      if(\n        value \u0026\u0026\n        value.indexOf('data:image') !== 0\n      ){\n        return value;\n      }\n\n    }\n\n\n    return '';\n\n  }\n\n\n\n  \/* =======================================================\n     REMOVE SHOPIFY RESIZE PARAMS WHERE POSSIBLE\n  ======================================================= *\/\n\n  function improveShopifyUrl(url){\n\n    if(!url){\n      return '';\n    }\n\n\n    try{\n\n      var parsed =\n        new URL(\n          url,\n          window.location.href\n        );\n\n\n      parsed.searchParams.delete(\n        'width'\n      );\n\n      parsed.searchParams.delete(\n        'height'\n      );\n\n\n      return parsed.href;\n\n    }\n    catch(e){\n\n      return url;\n\n    }\n\n  }\n\n\n\n  \/* =======================================================\n     UNIQUE IMAGE KEY\n  ======================================================= *\/\n\n  function imageKey(url){\n\n    try{\n\n      var parsed =\n        new URL(\n          url,\n          window.location.href\n        );\n\n\n      var file =\n        parsed.pathname\n          .split('\/')\n          .pop() || parsed.pathname;\n\n\n      file =\n        file.replace(\n          \/_(?:pico|icon|thumb|small|compact|medium|large|grande|master|\\d+x\\d+|\\d+x|x\\d+)(?=\\.[^.]+$)\/i,\n          ''\n        );\n\n\n      return file.toLowerCase();\n\n    }\n    catch(e){\n\n      return url.toLowerCase();\n\n    }\n\n  }\n\n\n\n  \/* =======================================================\n     DEDUPE\n  ======================================================= *\/\n\n  function dedupe(urls){\n\n    var seen = {};\n    var clean = [];\n\n\n    urls.forEach(function(url){\n\n      if(!url){\n        return;\n      }\n\n\n      url =\n        improveShopifyUrl(\n          url\n        );\n\n\n      var key =\n        imageKey(\n          url\n        );\n\n\n      if(\n        !key ||\n        seen[key]\n      ){\n        return;\n      }\n\n\n      seen[key] = true;\n      clean.push(url);\n\n    });\n\n\n    return clean;\n\n  }\n\n\n\n  \/* =======================================================\n     METHOD 1:\n     READ PRODUCT JSON-LD\n     Often the cleanest source on Shopify product pages.\n  ======================================================= *\/\n\n  function getImagesFromJsonLd(){\n\n    var urls = [];\n\n\n    var scripts =\n      document.querySelectorAll(\n        'script[type=\"application\/ld+json\"]'\n      );\n\n\n    function inspectObject(obj){\n\n      if(!obj){\n        return;\n      }\n\n\n      if(Array.isArray(obj)){\n\n        obj.forEach(\n          inspectObject\n        );\n\n        return;\n      }\n\n\n      if(typeof obj !== 'object'){\n        return;\n      }\n\n\n      var type =\n        obj['@type'];\n\n\n      if(\n        type === 'Product' ||\n        (\n          Array.isArray(type) \u0026\u0026\n          type.indexOf('Product') !== -1\n        )\n      ){\n\n        var images =\n          obj.image;\n\n\n        if(!Array.isArray(images)){\n          images =\n            images\n              ? [images]\n              : [];\n        }\n\n\n        images.forEach(function(item){\n\n          if(typeof item === 'string'){\n\n            urls.push(item);\n\n          }\n          else if(\n            item \u0026\u0026\n            typeof item === 'object'\n          ){\n\n            urls.push(\n              item.url ||\n              item.contentUrl ||\n              ''\n            );\n\n          }\n\n        });\n\n      }\n\n\n      if(obj['@graph']){\n\n        inspectObject(\n          obj['@graph']\n        );\n\n      }\n\n    }\n\n\n    scripts.forEach(function(script){\n\n      try{\n\n        var json =\n          JSON.parse(\n            script.textContent\n          );\n\n\n        inspectObject(\n          json\n        );\n\n      }\n      catch(e){}\n\n    });\n\n\n    return dedupe(urls);\n\n  }\n\n\n\n  \/* =======================================================\n     METHOD 2:\n     READ SHOPIFY PRODUCT GALLERY DOM\n  ======================================================= *\/\n\n  function getImagesFromGallery(){\n\n    var root =\n      document.getElementById(\n        ROOT_ID\n      );\n\n\n    var selectors = [\n\n      'media-gallery .product__media-list .product__media-item img',\n\n      '.product__media-list .product__media-item img',\n\n      'media-gallery [data-media-id] img',\n\n      '[data-product-media-gallery] [data-media-id] img',\n\n      '.product__media-wrapper .product__media img',\n\n      '.product__media img',\n\n      '.product-media-container img',\n\n      '.product-gallery__media img',\n\n      '.product-gallery img',\n\n      '[data-product-gallery] img'\n\n    ];\n\n\n    for(\n      var s = 0;\n      s \u003c selectors.length;\n      s++\n    ){\n\n      var found = [];\n\n\n      var imgs =\n        document.querySelectorAll(\n          selectors[s]\n        );\n\n\n      imgs.forEach(function(img){\n\n        if(\n          root \u0026\u0026\n          root.contains(img)\n        ){\n          return;\n        }\n\n\n        var url =\n          getImgUrl(img);\n\n\n        if(url){\n          found.push(url);\n        }\n\n      });\n\n\n      found =\n        dedupe(found);\n\n\n      if(\n        found.length \u003e= REQUIRED_MEDIA\n      ){\n\n        return found;\n\n      }\n\n    }\n\n\n    return [];\n\n  }\n\n\n\n  \/* =======================================================\n     METHOD 3:\n     FALLBACK — GALLERY-LIKE IMAGES ABOVE DESCRIPTION\n  ======================================================= *\/\n\n  function getImagesFallback(){\n\n    var root =\n      document.getElementById(\n        ROOT_ID\n      );\n\n\n    if(!root){\n      return [];\n    }\n\n\n    var urls = [];\n\n\n    var all =\n      document.querySelectorAll(\n        'img'\n      );\n\n\n    all.forEach(function(img){\n\n      if(\n        root.contains(img)\n      ){\n        return;\n      }\n\n\n      \/*\n        Only consider images that appear before\n        our landing-page description in document order.\n      *\/\n\n      var relation =\n        img.compareDocumentPosition(\n          root\n        );\n\n\n      if(\n        !(\n          relation \u0026\n          Node.DOCUMENT_POSITION_FOLLOWING\n        )\n      ){\n        return;\n      }\n\n\n      var rect =\n        img.getBoundingClientRect();\n\n\n      \/*\n        Ignore tiny icons \/ logos \/ payment badges.\n      *\/\n\n      var width =\n        img.naturalWidth ||\n        rect.width ||\n        0;\n\n\n      var height =\n        img.naturalHeight ||\n        rect.height ||\n        0;\n\n\n      if(\n        width \u003c 250 ||\n        height \u003c 250\n      ){\n        return;\n      }\n\n\n      var url =\n        getImgUrl(img);\n\n\n      if(url){\n        urls.push(url);\n      }\n\n    });\n\n\n    return dedupe(urls);\n\n  }\n\n\n\n  \/* =======================================================\n     APPLY PRODUCT IMAGES\n  ======================================================= *\/\n\n  function applyProductMedia(){\n\n    var images =\n      getImagesFromJsonLd();\n\n\n    if(\n      images.length \u003c REQUIRED_MEDIA\n    ){\n\n      images =\n        getImagesFromGallery();\n\n    }\n\n\n    if(\n      images.length \u003c REQUIRED_MEDIA\n    ){\n\n      images =\n        getImagesFallback();\n\n    }\n\n\n    var targets =\n      document.querySelectorAll(\n        '#' +\n        ROOT_ID +\n        ' [data-product-media]'\n      );\n\n\n    if(\n      images.length \u003c\n      REQUIRED_MEDIA\n    ){\n\n      retries++;\n\n\n      if(\n        retries \u003c= 12\n      ){\n\n        setTimeout(\n          applyProductMedia,\n          350\n        );\n\n\n        return;\n\n      }\n\n    }\n\n\n    targets.forEach(function(img){\n\n      var index =\n        parseInt(\n          img.getAttribute(\n            'data-product-media'\n          ),\n          10\n        );\n\n\n      var url =\n        images[index];\n\n\n      if(url){\n\n        img.onload =\n          function(){\n\n            img.classList.add(\n              'mb-loaded'\n            );\n\n          };\n\n\n        img.src = url;\n\n\n        if(img.complete){\n\n          img.classList.add(\n            'mb-loaded'\n          );\n\n        }\n\n      }\n      else{\n\n        var wrapper =\n          img.closest(\n            '[data-media-wrap]'\n          );\n\n\n        if(wrapper){\n\n          wrapper.classList.add(\n            'mb-media-missing'\n          );\n\n        }\n\n      }\n\n    });\n\n  }\n\n\n\n  \/* =======================================================\n     INITIALIZE\n  ======================================================= *\/\n\n  if(\n    document.readyState ===\n    'loading'\n  ){\n\n    document.addEventListener(\n      'DOMContentLoaded',\n      applyProductMedia\n    );\n\n  }\n  else{\n\n    applyProductMedia();\n\n  }\n\n})();\n\n\n\n\/* =========================================================\n   RETURN USER TO SHOPIFY NATIVE BUY AREA\n========================================================= *\/\n\nfunction mbGoToBuy(){\n\n  var selectors = [\n\n    'form[action*=\"\/cart\/add\"] button[name=\"add\"]',\n\n    'form[action*=\"\/cart\/add\"] [type=\"submit\"][name=\"add\"]',\n\n    '.product-form__buttons',\n\n    '.product-form',\n\n    'product-form',\n\n    '.product__info-container',\n\n    '.product__info-wrapper',\n\n    'product-info'\n\n  ];\n\n\n  var target = null;\n\n\n  for(\n    var i = 0;\n    i \u003c selectors.length;\n    i++\n  ){\n\n    target =\n      document.querySelector(\n        selectors[i]\n      );\n\n\n    if(target){\n      break;\n    }\n\n  }\n\n\n  if(target){\n\n    var area =\n      target.closest(\n        '.product__info-wrapper,' +\n        '.product__info-container,' +\n        'product-info,' +\n        '.product-info'\n      ) ||\n      target;\n\n\n    area.scrollIntoView({\n      behavior:'smooth',\n      block:'center'\n    });\n\n\n    area.classList.add(\n      'mb-purchase-highlight'\n    );\n\n\n    setTimeout(function(){\n\n      area.classList.remove(\n        'mb-purchase-highlight'\n      );\n\n    },1300);\n\n\n    return;\n\n  }\n\n\n  window.scrollTo({\n    top:0,\n    behavior:'smooth'\n  });\n\n}\n\n\u003c\/script\u003e","brand":"hwk456","offers":[{"title":"Default Title","offer_id":49251133882468,"sku":null,"price":29.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0790\/0397\/5780\/files\/2ce7232351c7c9da32eb9543be45661306025ac6.jpg?v=1789378851","url":"https:\/\/ahlwoplus.com\/products\/2-in-1-changing-pad-tote-bag%f0%9f%8e%92","provider":"ahlwoplus","version":"1.0","type":"link"}