{"title":"FOR HIM","description":"","products":[{"product_id":"genesis-5-mesh-short","title":"GENESIS 5\" MESH SHORT","description":"\u003cp\u003eBuilt for the ones who show up. Breathable single-layer mesh that dries fast and holds its shape session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Lakers","offer_id":47694312112366,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Lakers","offer_id":47694312308974,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Lakers","offer_id":47694312505582,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Lakers","offer_id":47694312702190,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/5_e4cf80f3-32cc-42db-ae8d-62efb7cc44ba.jpg?v=1771886949"},{"product_id":"legacy-phase-i-stringer","title":"LEGACY PHASE [ I ] STRINGER","description":"\u003cp\u003eMaximum range. Zero restrictions. Cut deep through the arms for complete freedom of movement.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | Deep arm cut | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Navy Blue","offer_id":47694327251182,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Navy Blue","offer_id":47694327382254,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Navy Blue","offer_id":47694327513326,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Navy Blue","offer_id":47694327644398,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Navy Blue","offer_id":47694327775470,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Navy Blue","offer_id":47694327906542,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/2_89cdc586-4348-4d97-b801-c67b1404a7d9.png?v=1771887481"},{"product_id":"legacy-phase-ii-stringer","title":"ALPHA STRINGER","description":"\u003cp\u003eMaximum range. Zero restrictions. Cut deep through the arms for complete freedom of movement.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | Deep arm cut | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Midnight Black","offer_id":47694328037614,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Midnight Black","offer_id":47694328168686,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Midnight Black","offer_id":47694328299758,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Midnight Black","offer_id":47694328430830,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Midnight Black","offer_id":47694328561902,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Midnight Black","offer_id":47694328692974,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/1_11c14d8e-dc6c-4bc2-bf78-725a1ec0b53d.png?v=1771887482"},{"product_id":"legacy-5-liner-short","title":"Legacy 5' Liner Short","description":"\u003cp\u003eBuilt for every type of training. Lightweight, fast drying, and made to keep up session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ White Camo","offer_id":47694328824046,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White Camo","offer_id":47694328955118,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White Camo","offer_id":47694329086190,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White Camo","offer_id":47694329217262,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White Camo","offer_id":47694329348334,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ White Camo","offer_id":47694329479406,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/5_f33f1218-dea8-405e-89b5-851fd2c372b1.jpg?v=1771887479"},{"product_id":"blackout-compression-long-sleeve","title":"BLACKOUT COMPRESSION LONG SLEEVE","description":"\u003cp\u003eFull arm support and heat retention without sacrificing range of motion. Layer it or wear it solo.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Compression blend | Full sleeve\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression | Size up if between sizes\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"Black \/ S","offer_id":47694330429678,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ M","offer_id":47694330462446,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ L","offer_id":47694330495214,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ XL","offer_id":47694330527982,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ XXL","offer_id":47694330560750,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/2_ac40bcf9-a76b-43bf-a7ea-ce90e7ef6995.jpg?v=1771887482"},{"product_id":"blackout-stringer","title":"BLACKOUT STRINGER","description":"\u003cp\u003eMaximum range. Zero restrictions. Cut deep through the arms for complete freedom of movement.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | Deep arm cut | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Navy Blue","offer_id":47694331740398,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Navy Blue","offer_id":47694331871470,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Navy Blue","offer_id":47694332002542,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Navy Blue","offer_id":47694332133614,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Navy Blue","offer_id":47694332264686,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/13_f90c8025-b074-4577-867a-3f2e7653430a.jpg?v=1771887485"},{"product_id":"blackout-tank","title":"BLACKOUT TANK","description":"\u003cp\u003eSimple. Intentional. Lightweight and fast drying, from the gym floor to the rest of your day.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"Black \/ S","offer_id":47694332395758,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ M","offer_id":47694332428526,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ L","offer_id":47694332461294,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ XL","offer_id":47694332494062,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/12_ff217410-281b-43b2-9fcb-7e6dbeced80b.jpg?v=1771887487"},{"product_id":"blackout-5-polyester-short","title":"BLACKOUT 5\" POLYESTER SHORT","description":"\u003cp\u003eBuilt for every type of training. Lightweight, fast drying, and made to keep up session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Black","offer_id":47694333051118,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Black","offer_id":47694333116654,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":47694333182190,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":47694333247726,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":47694333313262,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":47694333378798,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/WHITEBACKDROPWOMENSLEGGINGS.png?v=1771887503"},{"product_id":"blackout-oversized-tee-design-2","title":"SEEK DISCOMFORT OVERSIZED TEE","description":"\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last, holding its shape wash after wash.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Black","offer_id":47694333444334,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":47694333509870,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":47694333575406,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":47694333640942,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":47694333706478,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_170331_1ace5dee-4010-43b5-8a60-b7be0a453980.png?v=1794421200"},{"product_id":"blackout-oversized-tee-design-5","title":"STAPLE OVERSIZED TEE","description":"\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last, holding its shape wash after wash.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Tan","offer_id":47694333739246,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Tan","offer_id":47694333772014,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Tan","offer_id":47694333804782,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Tan","offer_id":47694333837550,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Tan","offer_id":47694333870318,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/7_05803676-1633-4996-a144-01fb04386609.jpg?v=1771887490"},{"product_id":"serenity-5-mesh-short","title":"Serenity 5\" Mesh Short","description":"\u003cp\u003eBuilt for the ones who show up. Breathable single-layer mesh that dries fast and holds its shape session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Purple","offer_id":47694334034158,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"M \/ Purple","offer_id":47694334099694,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"L \/ Purple","offer_id":47694334165230,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"XL \/ Purple","offer_id":47694334230766,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/13_bec869ca-0f19-46ff-9ca2-1cc12ec98d39.jpg?v=1771887491"},{"product_id":"4-polyester-short","title":"4\" POLYESTER SHORT","description":"\u003cp\u003eBuilt for every type of training. Lightweight, fast drying, and made to keep up session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Black","offer_id":47694334296302,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Black","offer_id":47694334361838,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":47694334427374,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":47694334492910,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":47694334558446,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":47694334623982,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/15_d4541e44-4c64-4152-b8c8-0fad31c937d3.jpg?v=1771887493"},{"product_id":"genesis-hoodie","title":"Genesis Hoodie","description":"\u003cp\u003eHeavyweight fleece, oversized silhouette, built to be worn for years.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Heavyweight fleece blend\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized. Size down for a structured fit.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"Black","offer_id":47694334689518,"sku":null,"price":75.0,"currency_code":"USD","in_stock":true},{"title":"Gun metal","offer_id":47694334820590,"sku":null,"price":75.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_142402_ca895525-b602-4fc4-a922-2e725279cc3a.png?v=1794407790"},{"product_id":"black-5-eclipse-short","title":"Eclipse Mesh Short 5''","description":"\u003cp\u003eBuilt for the ones who show up. Breathable single-layer mesh that dries fast and holds its shape session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S","offer_id":47694334951662,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":47694335017198,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":47694335082734,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":47694335148270,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_151851_f065c5ce-1681-4f6c-866a-43ed934118af.png?v=1794410977"},{"product_id":"sacrifice-oversized-tee","title":"Sacrifice Oversized Tee","description":"\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last, holding its shape wash after wash.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Black","offer_id":47694335246574,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Black","offer_id":47694335312110,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":47694335377646,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":47694335443182,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":47694335508718,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":47694335574254,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_153714_1566a6a1-e05f-4522-bc71-2bb9ba0570ba.png?v=1794411750"},{"product_id":"sacrifice-5-mesh-short","title":"SACRIFICE 5\" MESH SHORT","description":"\u003cp\u003eBuilt for the ones who show up. Breathable single-layer mesh that dries fast and holds its shape session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ White","offer_id":47694335836398,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"S \/ Black","offer_id":47694335869166,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"M \/ White","offer_id":47694335901934,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"M \/ Black","offer_id":47694335934702,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"L \/ White","offer_id":47694335967470,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"L \/ Black","offer_id":47694336000238,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"XL \/ White","offer_id":47694336033006,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"XL \/ Black","offer_id":47694336065774,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_160049_6ec62e4d-e3c8-4bf4-8212-f268ac609e5f.png?v=1794412958"},{"product_id":"vision-oversized-tee","title":"Vision Oversized Tee","description":"\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last, holding its shape wash after wash.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Black","offer_id":47694336131310,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Black","offer_id":47694336196846,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":47694336262382,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":47694336327918,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":47694336393454,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":47694336458990,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_161830_4bf12da9-8b7c-48e5-af32-8b2e933618ea.png?v=1794414240"},{"product_id":"signature-5-mesh-short-1","title":"SIGNATURE 5\" MESH SHORT","description":"\u003cp\u003eBuilt for the ones who show up. Breathable single-layer mesh that dries fast and holds its shape session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Black","offer_id":47694336491758,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":47694336590062,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":47694336688366,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"XL \/ Black","offer_id":47694336786670,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/5.png?v=1785375408"},{"product_id":"vf-oversized-tee","title":"Vital Oversized Tee","description":"\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last, holding its shape wash after wash.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Tan","offer_id":47694336884974,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Tan","offer_id":47694336950510,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Tan","offer_id":47694337016046,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Tan","offer_id":47694337081582,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Tan","offer_id":47694337147118,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Tan","offer_id":47694337212654,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_182557_3bce2cd7-eb0c-46aa-ba0b-f1f5423d2894.png?v=1794421663"},{"product_id":"defy-oversized-tee","title":"DEFY OVERSIZED TEE","description":"\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last, holding its shape wash after wash.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Midnight Black","offer_id":47694337573102,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Midnight Black","offer_id":47694337671406,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Midnight Black","offer_id":47694337769710,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Midnight Black","offer_id":47694337868014,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Midnight Black","offer_id":47694337966318,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Midnight Black","offer_id":47694338064622,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/23.png?v=1773298414"},{"product_id":"monogram-5-mesh-short","title":"MONOGRAM 5\" MESH SHORT","description":"\u003cp\u003eBuilt for the ones who show up. Breathable single-layer mesh that dries fast and holds its shape session after session.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Forest","offer_id":47694338162926,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Forest","offer_id":47694338359534,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Forest","offer_id":47694338556142,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Forest","offer_id":47694338752750,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/30.png?v=1773273334"},{"product_id":"vital-5-mesh-short","title":"VITAL 5\" MESH SHORT","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eBuilt for the ones who show up. Our mesh shorts are constructed from 100% single layer polyester mesh that breathes through every rep, dries fast, and holds its shape session after session. Comfortable enough for everyday wear, clean enough for anywhere.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"mesh-shorts\" data-name='VITAL 5\" MESH SHORT'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ White","offer_id":47694338949358,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":47694339145966,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"L \/ White","offer_id":47694339342574,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":47694339539182,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/12_7c65bcb8-85a3-40b4-af9e-bf2eb68edf54.png?v=1773297969"},{"product_id":"vital-5-running-short","title":"VITAL 5\" RUNNING SHORT","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eBuilt for every type of training. Our athletic shorts are lightweight, fast drying, and constructed to hold up session after session. Whether you are running, lifting, or just living in them, these are the shorts that keep up without slowing you down. True to size.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"vital-running-shorts\" data-name='VITAL 5\" RUNNING SHORT'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Ice Grey","offer_id":47694339735790,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Ice Grey","offer_id":47694339866862,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Ice Grey","offer_id":47694339997934,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Ice Grey","offer_id":47694340129006,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Ice Grey","offer_id":47694340260078,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Ice Grey","offer_id":47694340391150,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/4_a96e5b91-c821-4445-b68a-dcc78dd52621.png?v=1773297725"},{"product_id":"defy-5-cotton-short","title":"DEFY 5\" COTTON SHORT","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eBuilt for every type of training. Our athletic shorts are lightweight, fast drying, and constructed to hold up session after session. Whether you are running, lifting, or just living in them, these are the shorts that keep up without slowing you down. True to size.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"defy-cotton-shorts\" data-name='DEFY 5\" COTTON SHORT'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ White","offer_id":47694340522222,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":47694340653294,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":47694340784366,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":47694340915438,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":47694341046510,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ White","offer_id":47694341177582,"sku":null,"price":32.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/6_1450fcf8-4d3c-40c7-969b-34a9edb077ed.png?v=1773297524"},{"product_id":"defy-tank","title":"DEFY TANK","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eSimple. Intentional. Built for the people who show up without needing to announce it. Our tanks are lightweight, fast drying, and versatile enough to take you from the gym floor to wherever the rest of your day demands. Clean cut, full range of motion, zero excess.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"defy-blackout-tank\" data-name=\"DEFY TANK\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"Black \/ S","offer_id":47694341308654,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ M","offer_id":47694341341422,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ L","offer_id":47694341374190,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ XL","offer_id":47694341406958,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/43.png?v=1773275612"},{"product_id":"vital-stringer","title":"VITAL STRINGER","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eMaximum range. Zero restrictions. Our stringers are cut deep through the arms for complete freedom of movement in every session. Lightweight polyester construction that breathes, dries fast, and stays out of your way while you do the work.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | Deep arm cut | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"stringers\" data-name=\"VITAL STRINGER\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Royal Blue","offer_id":47694341701870,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Royal Blue","offer_id":47694341800174,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Royal Blue","offer_id":47694341898478,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Royal Blue","offer_id":47694341996782,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Royal Blue","offer_id":47694342095086,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/31.png?v=1773273173"},{"product_id":"vital-muscle-tee","title":"VITAL MUSCLE TEE","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eBuilt to show what you have built. Our muscle tees are cut wide at the arms and tapered through the body. 95% Cotton, 5% Spandex, compression fit that contours your upper body through every rep while staying relaxed at the hem. Wear it as proof of the work.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 95% Cotton | 5% Spandex\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression | Contours upper body | Relaxed hem | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"muscle-compression-tees\" data-name=\"VITAL MUSCLE TEE\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Baby Blue","offer_id":47694342193390,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Baby Blue","offer_id":47694342291694,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Baby Blue","offer_id":47694342389998,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Baby Blue","offer_id":47694342488302,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Baby Blue","offer_id":47694342586606,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/43_3898cf9c-6aaf-45a7-a2cc-6261d4db8809.png?v=1773271268"},{"product_id":"oversized-tee-copy","title":"\"I AM\" Oversized Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last. Our oversized tees are cut with a structured drop shoulder silhouette that holds its shape wash after wash. Substantial fabric, clean construction, and a fit that works as hard outside the gym as you do inside it. Size down if you prefer a relaxed structured look.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"oversized-tees\" data-name='\"I AM\" OVERSIZED TEE'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Stone Olive","offer_id":47763574194414,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Stone Olive","offer_id":47763574292718,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Stone Olive","offer_id":47763574391022,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Stone Olive","offer_id":47763574489326,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Stone Olive","offer_id":47763574587630,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Stone Olive","offer_id":47763574685934,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_224512_5237fd27-0f1e-4de4-b64f-e1a5e035374f.png?v=1794437541"},{"product_id":"retribution-oversized-tee","title":"“Retribution” Oversized Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last. Our oversized tees are cut with a structured drop shoulder silhouette that holds its shape wash after wash. Substantial fabric, clean construction, and a fit that works as hard outside the gym as you do inside it. Size down if you prefer a relaxed structured look.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"oversized-tees\" data-name=\"RETRIBUTION OVERSIZED TEE\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Stone Olive","offer_id":47763578290414,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Stone Olive","offer_id":47763578388718,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Stone Olive","offer_id":47763578487022,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Stone Olive","offer_id":47763578585326,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Stone Olive","offer_id":47763578683630,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Stone Olive","offer_id":47763578781934,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_223133_5c045349-9873-4b98-a151-ba204cc2203d.png?v=1794440010"},{"product_id":"fear-average-oversized-tee","title":"\"Fear Average\" Oversized Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eHeavyweight cotton. Drop shoulder. Built to last. Our oversized tees are cut with a structured drop shoulder silhouette that holds its shape wash after wash. Substantial fabric, clean construction, and a fit that works as hard outside the gym as you do inside it. Size down if you prefer a relaxed structured look.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"oversized-tees\" data-name=\"FEAR AVERAGE OVERSIZED TEE\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS \/ Stone Olive","offer_id":47763580158190,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Stone Olive","offer_id":47763580256494,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Stone Olive","offer_id":47763580354798,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Stone Olive","offer_id":47763580453102,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Stone Olive","offer_id":47763580551406,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Stone Olive","offer_id":47763580649710,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_223647_96a6a506-99d9-495c-825b-6765a41f646f.png?v=1794438026"},{"product_id":"fear-average-5-mesh-short","title":"FEAR AVERAGE  5\" MESH SHORT","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eBuilt for the ones who show up. Our mesh shorts are constructed from 100% single layer polyester mesh that breathes through every rep, dries fast, and holds its shape session after session. Comfortable enough for everyday wear, clean enough for anywhere.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"mesh-shorts\" data-name='FEAR AVERAGE  5\" MESH SHORT'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ White","offer_id":47763623969006,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"M \/ White","offer_id":47763624165614,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":47763624362222,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":47763624558830,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/v1_5.png?v=1773265339"},{"product_id":"i-am-5-mesh-short-copy","title":"\"I AM\"  5\" MESH SHORT","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eBuilt for the ones who show up. Our mesh shorts are constructed from 100% single layer polyester mesh that breathes through every rep, dries fast, and holds its shape session after session. Comfortable enough for everyday wear, clean enough for anywhere.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Standard | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"mesh-shorts\" data-name='\"I AM\"  5\" MESH SHORT'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ White","offer_id":47763625148654,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":47763625279726,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"L \/ White","offer_id":47763625410798,"sku":null,"price":35.0,"currency_code":"USD","in_stock":false},{"title":"XL \/ White","offer_id":47763625541870,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/v1_930636b6-ca52-45b4-be87-71aec6aae260.png?v=1773265339"},{"product_id":"fear-average-muscle-tee","title":"FEAR AVERAGE MUSCLE TEE","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eBuilt to show what you have built. Our muscle tees are cut wide at the arms and tapered through the body. 95% Cotton, 5% Spandex, compression fit that contours your upper body through every rep while staying relaxed at the hem. Wear it as proof of the work.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 95% Cotton | 5% Spandex\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression | Contours upper body | Relaxed hem | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"muscle-compression-tees\" data-name=\"FEAR AVERAGE MUSCLE TEE\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Grey","offer_id":47763626590446,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Grey","offer_id":47763626688750,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Grey","offer_id":47763626787054,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Grey","offer_id":47763626885358,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Grey","offer_id":47763626983662,"sku":null,"price":35.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/34_ec3f87d5-326b-4166-8882-b19bd2ac82a2.png?v=1773268466"},{"product_id":"staple-muscle-tee","title":"STAPLE MUSCLE TEE","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eBuilt to show what you have built. Our muscle tees are cut wide at the arms and tapered through the body. 95% Cotton, 5% Spandex, compression fit that contours your upper body through every rep while staying relaxed at the hem. Wear it as proof of the work.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 95% Cotton | 5% Spandex\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression | Contours upper body | Relaxed hem | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"muscle-compression-tees\" data-name=\"STAPLE MUSCLE TEE\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S \/ Steel","offer_id":47800923586798,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Steel","offer_id":47800923685102,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Steel","offer_id":47800923783406,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Steel","offer_id":47800923881710,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Steel","offer_id":47800923980014,"sku":null,"price":28.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/37_7a2f5410-e0ba-4e79-b4a6-7e54a994f02b.png?v=1774117451"},{"product_id":"vantage-5-shorts","title":"Vantage 5\" Shorts","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eThe short that goes the distance. A clean 5\" cut with a locked-in liner and four-way stretch that moves with every stride, sprint, and set. Lightweight enough to disappear on you, built well enough to outlast the season. Warm-up to the walk home.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lined | 4-way stretch\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | 5\" inseam | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"stride-vantage-shorts\" data-name='Vantage 5\" Shorts'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394975539438,"sku":"VF-VTG-SHT-BLK-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394975637742,"sku":"VF-VTG-SHT-BLK-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394975736046,"sku":"VF-VTG-SHT-BLK-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394975834350,"sku":"VF-VTG-SHT-BLK-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49394975932654,"sku":"VF-VTG-SHT-BLK-2XL","price":40.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Vantage_5__Shorts_Purple_Front.png?v=1786398027"},{"product_id":"stride-5-shorts","title":"Stride 5\" Shorts","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eYour everyday 5\". Lightweight, breathable, and cut for full range through every step. The pair you reach for on repeat because it just works. Built for training, made for the rest of the day too.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lined | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | 5\" inseam | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"stride-vantage-shorts\" data-name='Stride 5\" Shorts'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394976653550,"sku":"VF-STR-SHT-BLK-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394976751854,"sku":"VF-STR-SHT-BLK-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394976850158,"sku":"VF-STR-SHT-BLK-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394976948462,"sku":"VF-STR-SHT-BLK-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49394977046766,"sku":"VF-STR-SHT-BLK-2XL","price":40.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Stride_5__Shorts_Black_Front.png?v=1786398041"},{"product_id":"vantage-compression-tee","title":"Vantage Compression Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eSecond-skin support without the squeeze on your range. Our compression tee locks in through the chest and arms, wicks fast, and holds its shape rep after rep. Wear it solo or layer it under a tank. Size up if you are between sizes.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Compression blend | 4-way stretch\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression | Size up if between sizes\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"muscle-compression-tees\" data-name=\"Vantage Compression Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394977341678,"sku":"VF-VTG-CMP-BLK-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394977439982,"sku":"VF-VTG-CMP-BLK-M","price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394977538286,"sku":"VF-VTG-CMP-BLK-L","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394977636590,"sku":"VF-VTG-CMP-BLK-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49394977734894,"sku":"VF-VTG-CMP-BLK-2XL","price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Vantage_Compression_Tee_Black.png?v=1786398027"},{"product_id":"core-compression-tee","title":"Core Compression Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eThe base layer you build everything on. A fitted compression cut that contours without restricting, moves heat away fast, and stays put through the hardest sets. Clean, essential, always in rotation. Size up if you are between sizes.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Compression blend | 4-way stretch\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression | Size up if between sizes\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"muscle-compression-tees\" data-name=\"Core Compression Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394977833198,"sku":"VF-COR-CMP-BLK-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394977931502,"sku":"VF-COR-CMP-BLK-M","price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394978029806,"sku":"VF-COR-CMP-BLK-L","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394978128110,"sku":"VF-COR-CMP-BLK-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49394978226414,"sku":"VF-COR-CMP-BLK-2XL","price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Core_Compression_Tee_White.png?v=1786398041"},{"product_id":"vantage-tank","title":"Vantage Tank","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eCut for the work. Lightweight, fast-drying, and open through the arms for full range of motion on every lift. Clean lines, zero excess, gym floor to street. Simple by design.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"core-vantage-tank\" data-name=\"Vantage Tank\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394978324718,"sku":"VF-VTG-TNK-BLK-S","price":38.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394978423022,"sku":"VF-VTG-TNK-BLK-M","price":38.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394978521326,"sku":"VF-VTG-TNK-BLK-L","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394978619630,"sku":"VF-VTG-TNK-BLK-XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49394978717934,"sku":"VF-VTG-TNK-BLK-2XL","price":38.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Vantage_Tank_White.png?v=1786398041"},{"product_id":"core-tank","title":"Core Tank","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eThe one you will live in. Lightweight and breathable with a clean athletic cut that carries from your session to the rest of your day. No frills, no restrictions, just the staple you restock on repeat.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"core-vantage-tank\" data-name=\"Core Tank\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394978849006,"sku":"VF-COR-TNK-BLK-S","price":38.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394978947310,"sku":"VF-COR-TNK-BLK-M","price":38.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394979045614,"sku":"VF-COR-TNK-BLK-L","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394979143918,"sku":"VF-COR-TNK-BLK-XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49394979242222,"sku":"VF-COR-TNK-BLK-2XL","price":38.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Core_Tank_White.png?v=1786398040"},{"product_id":"vantage-sweatpants","title":"Vantage Sweatpants","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eOff-duty, done right. Heavyweight fleece with a relaxed fit and a tapered leg that keeps it clean. Warm enough for the walk in, comfortable enough to never take off. The pair you keep reaching for. Size down for a more fitted look.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Heavyweight fleece blend\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Relaxed | Tapered leg | Size down for a fitted look\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"sweatpants\" data-name=\"Vantage Sweatpants\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Cream","offer_id":49394979373294,"sku":"VF-VTG-SWP-CRM-S","price":70.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Cream","offer_id":49394979471598,"sku":"VF-VTG-SWP-CRM-M","price":70.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Cream","offer_id":49394979569902,"sku":"VF-VTG-SWP-CRM-L","price":70.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Cream","offer_id":49394979668206,"sku":"VF-VTG-SWP-CRM-XL","price":70.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Cream","offer_id":49394979766510,"sku":"VF-VTG-SWP-CRM-2XL","price":70.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Vantage_Sweatpants_Heather_Grey.png?v=1786398028"},{"product_id":"more-than-an-athlete-mesh-shorts","title":"More Than An Athlete Mesh Shorts","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eMore than a pair of shorts. Breathable single-layer mesh built to keep you cool when the work gets hot, with a clean cut that moves how you move. Lightweight, unrestrictive, and made for the ones who don't clock out. On the court, in the gym, everywhere in between.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"mesh-shorts\" data-name=\"More Than An Athlete Mesh Shorts\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49402825539822,"sku":"VF-MTA-SHT-BLK-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49402825605358,"sku":"VF-MTA-SHT-BLK-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49402825670894,"sku":"VF-MTA-SHT-BLK-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49402825736430,"sku":"VF-MTA-SHT-BLK-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49402825801966,"sku":"VF-MTA-SHT-BLK-2XL","price":40.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/v1_516f563e-68b3-4409-a396-59a3b4d3b59d.png?v=1786485051"},{"product_id":"athlete-oversized-tee","title":"''More Than An Athlete'' Oversized Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eHeavyweight cotton with a structured drop shoulder that holds its shape wash after wash. The Athlete tee wears clean on the floor and everywhere after, substantial fabric and a boxy oversized cut that lets the work speak for itself. Size down if you prefer a more structured fit.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"oversized-tees\" data-name=\"More Than An Athlete Oversized Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49416481767662,"sku":"VF-ATH-OTEE-BLK-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49416481833198,"sku":"VF-ATH-OTEE-BLK-M","price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49416481898734,"sku":"VF-ATH-OTEE-BLK-L","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49416481964270,"sku":"VF-ATH-OTEE-BLK-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49416482029806,"sku":"VF-ATH-OTEE-BLK-2XL","price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_223333_9fb72800-d1df-4af7-bf98-fea89614df5e.png?v=1794438466"},{"product_id":"visionary-lifting-club-oversized-tee","title":"\"Visionary Lifting Club\" Oversized Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eMembers welcome, effort required. Heavyweight cotton, drop shoulder, and a relaxed oversized cut built for the gym and the rest of your day. The Visionary Lifting Club tee holds its shape and its statement wash after wash. Size down for a more structured fit.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"oversized-tees\" data-name=\"Visionary Lifting Club Oversized Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49416482750702,"sku":"VF-VLC-OTEE-BLK-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49416482816238,"sku":"VF-VLC-OTEE-BLK-M","price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49416482881774,"sku":"VF-VLC-OTEE-BLK-L","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49416482947310,"sku":"VF-VLC-OTEE-BLK-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":49416483012846,"sku":"VF-VLC-OTEE-BLK-2XL","price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_221138_c76a58c0-e7aa-401e-a111-35339a255d89.png?v=1794435221"},{"product_id":"ambition-compression-tee","title":"Ambition Compression Tee","description":"\u003cp\u003e\u003cstrong\u003eTrain in second skin.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eA performance compression tee built to move with you. The 4-way-stretch blend locks to the body, wicks sweat and holds its shape set after set.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eCompression fit\u003c\/li\u003e\n\u003cli\u003e4-way stretch\u003c\/li\u003e\n\u003cli\u003eSweat-wicking\u003c\/li\u003e\n\u003cli\u003eFlatlock seams\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Compression blend, 4-way stretch\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression — size up if you’re between sizes\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cool wash separately (30°C) · Cool tumble dry · Do not dry clean or bleach · Cool iron\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"muscle-compression-tees\" data-name=\"Ambition Compression Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]},\n\n    'core-bratop': {name:'Bra \/ Top', fit:'true to size', metric:'bust',\n      cols:['Bust','UK','US'],\n      rows:[['XS',86.4,'4-6','0-2'],['S',91.4,'8-10','4-6'],['M',96.5,'12-14','8-10'],['L',102.1,'16-18','12-14'],['XL',106.9,'20-22','16-18']]},\n    'core-shorts': {name:'Shorts', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inseam','UK','US'],\n      rows:[['XS',63.5,88.9,11.4,'4-6','0-2'],['S',69.9,96.5,11.4,'8-10','4-6'],['M',76.2,104.1,11.4,'12-14','8-10'],['L',83.8,110.5,11.4,'16-18','12-14'],['XL',92.7,118.1,11.4,'20-22','16-18']]},\n    'core-leggings': {name:'Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','UK','US'],\n      rows:[['XS',63.5,88.9,'4-6','0-2'],['S',69.9,96.5,'8-10','4-6'],['M',76.2,104.1,'12-14','8-10'],['L',83.8,110.5,'16-18','12-14'],['XL',92.7,118.1,'20-22','16-18']]},\n    'core-flares': {name:'Flare Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inside leg','UK','US'],\n      rows:[['XS',63.5,88.9,71.9,'4-6','0-2'],['S',69.9,96.5,72.9,'8-10','4-6'],['M',76.2,104.1,73.9,'12-14','8-10'],['L',83.8,110.5,74.9,'16-18','12-14'],['XL',92.7,118.1,75.9,'20-22','16-18']]},\n    'ambition-zip': {name:'Zip Up', fit:'relaxed', metric:'chest',\n      note:'Estimated from a standard zip-up block \\u2014 confirm against your sample before relying on it.',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['S',112,68,63],['M',118,70,64],['L',124,72,65],['XL',130,74,66],['XXL',136,76,67]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=(typeof r[i]==='number')?disp(r[i]):r[i]; tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS","offer_id":49925527175406,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S","offer_id":49925527208174,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":49925527240942,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":49925527273710,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":49925527306478,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":49925527339246,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_060806_eaf9431b-bfc0-4a40-bd93-4d710f601df0.png?v=1794377382"},{"product_id":"ambition-oversized-tee","title":"Ambition Oversized Tee","description":"\u003cp\u003e\u003cstrong\u003eHeavyweight. Street-ready.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eA heavyweight 100% cotton oversized tee with a dropped shoulder and a boxy, lived-in drape. Built to layer and built to last.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eHeavyweight 100% cotton\u003c\/li\u003e\n\u003cli\u003eOversized drop-shoulder fit\u003c\/li\u003e\n\u003cli\u003eBoxy, structured drape\u003c\/li\u003e\n\u003cli\u003eRibbed crew neck\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% cotton, heavyweight\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder — size down for a closer fit\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cool wash separately (30°C) · Cool tumble dry · Do not dry clean or bleach · Cool iron\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"oversized-tees\" data-name=\"Ambition Oversized Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]},\n\n    'core-bratop': {name:'Bra \/ Top', fit:'true to size', metric:'bust',\n      cols:['Bust','UK','US'],\n      rows:[['XS',86.4,'4-6','0-2'],['S',91.4,'8-10','4-6'],['M',96.5,'12-14','8-10'],['L',102.1,'16-18','12-14'],['XL',106.9,'20-22','16-18']]},\n    'core-shorts': {name:'Shorts', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inseam','UK','US'],\n      rows:[['XS',63.5,88.9,11.4,'4-6','0-2'],['S',69.9,96.5,11.4,'8-10','4-6'],['M',76.2,104.1,11.4,'12-14','8-10'],['L',83.8,110.5,11.4,'16-18','12-14'],['XL',92.7,118.1,11.4,'20-22','16-18']]},\n    'core-leggings': {name:'Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','UK','US'],\n      rows:[['XS',63.5,88.9,'4-6','0-2'],['S',69.9,96.5,'8-10','4-6'],['M',76.2,104.1,'12-14','8-10'],['L',83.8,110.5,'16-18','12-14'],['XL',92.7,118.1,'20-22','16-18']]},\n    'core-flares': {name:'Flare Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inside leg','UK','US'],\n      rows:[['XS',63.5,88.9,71.9,'4-6','0-2'],['S',69.9,96.5,72.9,'8-10','4-6'],['M',76.2,104.1,73.9,'12-14','8-10'],['L',83.8,110.5,74.9,'16-18','12-14'],['XL',92.7,118.1,75.9,'20-22','16-18']]},\n    'ambition-zip': {name:'Zip Up', fit:'relaxed', metric:'chest',\n      note:'Estimated from a standard zip-up block \\u2014 confirm against your sample before relying on it.',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['S',112,68,63],['M',118,70,64],['L',124,72,65],['XL',130,74,66],['XXL',136,76,67]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=(typeof r[i]==='number')?disp(r[i]):r[i]; tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS","offer_id":49925527601390,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"S","offer_id":49925527634158,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":49925527666926,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":49925527699694,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":49925527732462,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":49925527765230,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_024000_97dd7ff3-ab0a-4add-97d3-1cba349780fc.png?v=1794365933"},{"product_id":"ambition-zip-up","title":"Ambition Zip Up","description":"\u003cp\u003e\u003cstrong\u003eLayer with intent.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eA heavyweight full-zip built for warm-ups, cool-downs and everything off the gym floor. Soft brushed interior, structured fit, full-length zip.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFull-length zip\u003c\/li\u003e\n\u003cli\u003eBrushed fleece interior\u003c\/li\u003e\n\u003cli\u003eStructured relaxed fit\u003c\/li\u003e\n\u003cli\u003eRibbed cuffs \u0026amp; hem\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Heavyweight fleece blend\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Relaxed\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cool wash separately (30°C) · Cool tumble dry · Do not dry clean or bleach · Cool iron\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"ambition-zip\" data-name=\"Ambition Zip Up\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]},\n\n    'core-bratop': {name:'Bra \/ Top', fit:'true to size', metric:'bust',\n      cols:['Bust','UK','US'],\n      rows:[['XS',86.4,'4-6','0-2'],['S',91.4,'8-10','4-6'],['M',96.5,'12-14','8-10'],['L',102.1,'16-18','12-14'],['XL',106.9,'20-22','16-18']]},\n    'core-shorts': {name:'Shorts', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inseam','UK','US'],\n      rows:[['XS',63.5,88.9,11.4,'4-6','0-2'],['S',69.9,96.5,11.4,'8-10','4-6'],['M',76.2,104.1,11.4,'12-14','8-10'],['L',83.8,110.5,11.4,'16-18','12-14'],['XL',92.7,118.1,11.4,'20-22','16-18']]},\n    'core-leggings': {name:'Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','UK','US'],\n      rows:[['XS',63.5,88.9,'4-6','0-2'],['S',69.9,96.5,'8-10','4-6'],['M',76.2,104.1,'12-14','8-10'],['L',83.8,110.5,'16-18','12-14'],['XL',92.7,118.1,'20-22','16-18']]},\n    'core-flares': {name:'Flare Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inside leg','UK','US'],\n      rows:[['XS',63.5,88.9,71.9,'4-6','0-2'],['S',69.9,96.5,72.9,'8-10','4-6'],['M',76.2,104.1,73.9,'12-14','8-10'],['L',83.8,110.5,74.9,'16-18','12-14'],['XL',92.7,118.1,75.9,'20-22','16-18']]},\n    'ambition-zip': {name:'Zip Up', fit:'relaxed', metric:'chest',\n      note:'Estimated from a standard zip-up block \\u2014 confirm against your sample before relying on it.',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['S',112,68,63],['M',118,70,64],['L',124,72,65],['XL',130,74,66],['XXL',136,76,67]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=(typeof r[i]==='number')?disp(r[i]):r[i]; tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S","offer_id":49925527994606,"sku":null,"price":85.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":49925528027374,"sku":null,"price":85.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":49925528060142,"sku":null,"price":85.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":49925528092910,"sku":null,"price":85.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":49925528125678,"sku":null,"price":85.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_053105_b3355ae8-80ea-484d-830f-0a908c7918ca.png?v=1794375199"},{"product_id":"lc-jogger","title":"Ambition Joggers","description":"\u003cp\u003e\u003cstrong\u003eTapered. Everyday.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eA heavyweight fleece jogger with a tapered leg and a clean ribbed cuff. Soft enough to lounge in, sharp enough to wear out.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eHeavyweight fleece\u003c\/li\u003e\n\u003cli\u003eTapered leg\u003c\/li\u003e\n\u003cli\u003eRibbed ankle cuff\u003c\/li\u003e\n\u003cli\u003eSide pockets\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Heavyweight fleece blend\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Relaxed, tapered leg — size down for a fitted look\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cool wash separately (30°C) · Cool tumble dry · Do not dry clean or bleach · Cool iron\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"sweatpants\" data-name=\"LC Jogger\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]},\n\n    'core-bratop': {name:'Bra \/ Top', fit:'true to size', metric:'bust',\n      cols:['Bust','UK','US'],\n      rows:[['XS',86.4,'4-6','0-2'],['S',91.4,'8-10','4-6'],['M',96.5,'12-14','8-10'],['L',102.1,'16-18','12-14'],['XL',106.9,'20-22','16-18']]},\n    'core-shorts': {name:'Shorts', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inseam','UK','US'],\n      rows:[['XS',63.5,88.9,11.4,'4-6','0-2'],['S',69.9,96.5,11.4,'8-10','4-6'],['M',76.2,104.1,11.4,'12-14','8-10'],['L',83.8,110.5,11.4,'16-18','12-14'],['XL',92.7,118.1,11.4,'20-22','16-18']]},\n    'core-leggings': {name:'Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','UK','US'],\n      rows:[['XS',63.5,88.9,'4-6','0-2'],['S',69.9,96.5,'8-10','4-6'],['M',76.2,104.1,'12-14','8-10'],['L',83.8,110.5,'16-18','12-14'],['XL',92.7,118.1,'20-22','16-18']]},\n    'core-flares': {name:'Flare Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inside leg','UK','US'],\n      rows:[['XS',63.5,88.9,71.9,'4-6','0-2'],['S',69.9,96.5,72.9,'8-10','4-6'],['M',76.2,104.1,73.9,'12-14','8-10'],['L',83.8,110.5,74.9,'16-18','12-14'],['XL',92.7,118.1,75.9,'20-22','16-18']]},\n    'ambition-zip': {name:'Zip Up', fit:'relaxed', metric:'chest',\n      note:'Estimated from a standard zip-up block \\u2014 confirm against your sample before relying on it.',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['S',112,68,63],['M',118,70,64],['L',124,72,65],['XL',130,74,66],['XXL',136,76,67]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=(typeof r[i]==='number')?disp(r[i]):r[i]; tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S","offer_id":49925528322286,"sku":null,"price":69.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":49925528355054,"sku":null,"price":69.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":49925528387822,"sku":null,"price":69.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":49925528420590,"sku":null,"price":69.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":49925528453358,"sku":null,"price":69.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_053437_9412b557-2f90-4fdc-91f1-096c06457754.png?v=1794375707"},{"product_id":"signature-5-short","title":"Ambition Athletic Shorts 5''","description":"\u003cp\u003e\u003cstrong\u003eBreathe through it.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eA single-layer 5\" mesh short built for airflow and range of motion. Lightweight 250gsm mesh, elastic drawcord waist, true to size.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e5\" inseam\u003c\/li\u003e\n\u003cli\u003e100% polyester mesh, 250gsm\u003c\/li\u003e\n\u003cli\u003eSingle-layer, breathable\u003c\/li\u003e\n\u003cli\u003eElastic drawcord waist\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% polyester, 250gsm single-layer mesh\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e True to size\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cool wash separately (30°C) · Cool tumble dry · Do not dry clean or bleach · Cool iron\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"mesh-shorts\" data-name='Signature 5\" Short'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]},\n\n    'core-bratop': {name:'Bra \/ Top', fit:'true to size', metric:'bust',\n      cols:['Bust','UK','US'],\n      rows:[['XS',86.4,'4-6','0-2'],['S',91.4,'8-10','4-6'],['M',96.5,'12-14','8-10'],['L',102.1,'16-18','12-14'],['XL',106.9,'20-22','16-18']]},\n    'core-shorts': {name:'Shorts', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inseam','UK','US'],\n      rows:[['XS',63.5,88.9,11.4,'4-6','0-2'],['S',69.9,96.5,11.4,'8-10','4-6'],['M',76.2,104.1,11.4,'12-14','8-10'],['L',83.8,110.5,11.4,'16-18','12-14'],['XL',92.7,118.1,11.4,'20-22','16-18']]},\n    'core-leggings': {name:'Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','UK','US'],\n      rows:[['XS',63.5,88.9,'4-6','0-2'],['S',69.9,96.5,'8-10','4-6'],['M',76.2,104.1,'12-14','8-10'],['L',83.8,110.5,'16-18','12-14'],['XL',92.7,118.1,'20-22','16-18']]},\n    'core-flares': {name:'Flare Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inside leg','UK','US'],\n      rows:[['XS',63.5,88.9,71.9,'4-6','0-2'],['S',69.9,96.5,72.9,'8-10','4-6'],['M',76.2,104.1,73.9,'12-14','8-10'],['L',83.8,110.5,74.9,'16-18','12-14'],['XL',92.7,118.1,75.9,'20-22','16-18']]},\n    'ambition-zip': {name:'Zip Up', fit:'relaxed', metric:'chest',\n      note:'Estimated from a standard zip-up block \\u2014 confirm against your sample before relying on it.',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['S',112,68,63],['M',118,70,64],['L',124,72,65],['XL',130,74,66],['XXL',136,76,67]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=(typeof r[i]==='number')?disp(r[i]):r[i]; tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"S","offer_id":49925529043182,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":49925529075950,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":49925529108718,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":49925529141486,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":49925529174254,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_054833_0c082924-8460-411b-ad1b-948ab3c84cc6.png?v=1794376797"},{"product_id":"ambition-compression-tee-1","title":"Ambition Compression Tee","description":"\u003cp\u003e\u003cstrong\u003eTrain in second skin.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eA performance compression tee built to move with you. The 4-way-stretch blend locks to the body, wicks sweat and holds its shape set after set.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eCompression fit\u003c\/li\u003e\n\u003cli\u003e4-way stretch\u003c\/li\u003e\n\u003cli\u003eSweat-wicking\u003c\/li\u003e\n\u003cli\u003eFlatlock seams\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Compression blend, 4-way stretch\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression — size up if you’re between sizes\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cool wash separately (30°C) · Cool tumble dry · Do not dry clean or bleach · Cool iron\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"muscle-compression-tees\" data-name=\"Ambition Compression Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]},\n\n    'core-bratop': {name:'Bra \/ Top', fit:'true to size', metric:'bust',\n      cols:['Bust','UK','US'],\n      rows:[['XS',86.4,'4-6','0-2'],['S',91.4,'8-10','4-6'],['M',96.5,'12-14','8-10'],['L',102.1,'16-18','12-14'],['XL',106.9,'20-22','16-18']]},\n    'core-shorts': {name:'Shorts', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inseam','UK','US'],\n      rows:[['XS',63.5,88.9,11.4,'4-6','0-2'],['S',69.9,96.5,11.4,'8-10','4-6'],['M',76.2,104.1,11.4,'12-14','8-10'],['L',83.8,110.5,11.4,'16-18','12-14'],['XL',92.7,118.1,11.4,'20-22','16-18']]},\n    'core-leggings': {name:'Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','UK','US'],\n      rows:[['XS',63.5,88.9,'4-6','0-2'],['S',69.9,96.5,'8-10','4-6'],['M',76.2,104.1,'12-14','8-10'],['L',83.8,110.5,'16-18','12-14'],['XL',92.7,118.1,'20-22','16-18']]},\n    'core-flares': {name:'Flare Leggings', fit:'true to size', metric:'waist',\n      cols:['Waist','Hip','Inside leg','UK','US'],\n      rows:[['XS',63.5,88.9,71.9,'4-6','0-2'],['S',69.9,96.5,72.9,'8-10','4-6'],['M',76.2,104.1,73.9,'12-14','8-10'],['L',83.8,110.5,74.9,'16-18','12-14'],['XL',92.7,118.1,75.9,'20-22','16-18']]},\n    'ambition-zip': {name:'Zip Up', fit:'relaxed', metric:'chest',\n      note:'Estimated from a standard zip-up block \\u2014 confirm against your sample before relying on it.',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['S',112,68,63],['M',118,70,64],['L',124,72,65],['XL',130,74,66],['XXL',136,76,67]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=(typeof r[i]==='number')?disp(r[i]):r[i]; tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness Store","offers":[{"title":"XS","offer_id":50013547135214,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S","offer_id":50013547167982,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":50013547200750,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":50013547233518,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":50013547266286,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":50013547299054,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_061036_b9ae4fff-5be0-428e-b274-a53feedec478.png?v=1794377515"}],"url":"https:\/\/visionaryfitness.shop\/collections\/for-him.oembed?page=2","provider":"Visionary Fitness ","version":"1.0","type":"link"}