{"title":"MEN'S SHORT SLEEVES","description":null,"products":[{"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":"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":"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":"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":"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-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-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":"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-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"},{"product_id":"ambition-oversized-tee-1","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":50013547528430,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"S","offer_id":50013547561198,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":50013547593966,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":50013547626734,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":50013547659502,"sku":null,"price":50.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":50013547692270,"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_022912_322e6bc8-0e94-4354-b6e3-a92c390e43e3.png?v=1794365364"},{"product_id":"sacrifice-oversized-tee-1","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 \/ White","offer_id":50019579396334,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":50019579461870,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":50019579527406,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":50019579592942,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":50019579658478,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ White","offer_id":50019579724014,"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_154751_19f7df5a-eb7d-4f73-bca9-cf440433314f.png?v=1794412359"},{"product_id":"vision-oversized-tee-1","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","offer_id":50020733223150,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S","offer_id":50020733288686,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":50020733354222,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":50020733419758,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":50020733485294,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":50020733550830,"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_164712_1a7ca4c9-8459-46b4-ac96-8840c4a98673.png?v=1794415878"},{"product_id":"seek-discomfort-oversized-tee","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 \/ Navy","offer_id":50021430198510,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Navy","offer_id":50021430264046,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Navy","offer_id":50021430329582,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Navy","offer_id":50021430395118,"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_170351_038e4635-542d-40d2-baef-18711aad1eef.png?v=1794421192"},{"product_id":"vital-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 \/ Washed Grey","offer_id":50021432983790,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Washed Grey","offer_id":50021433049326,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Washed Grey","offer_id":50021433114862,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Washed Grey","offer_id":50021433180398,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Washed Grey","offer_id":50021433245934,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Washed Grey","offer_id":50021433311470,"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_182629_56e087ae-29a1-4aa3-9c6a-13ee993973f6.png?v=1794421847"},{"product_id":"more-than-an-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 \/ White","offer_id":50021434228974,"sku":"VF-ATH-OTEE-WHT-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":50021434294510,"sku":"VF-ATH-OTEE-WHT-M","price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":50021434360046,"sku":"VF-ATH-OTEE-WHT-L","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":50021434425582,"sku":"VF-ATH-OTEE-WHT-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ White","offer_id":50021434491118,"sku":"VF-ATH-OTEE-WHT-2XL","price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_223342_edffd94c-e578-49f4-bce1-419a632a739b.png?v=1794438553"},{"product_id":"visionary-lifting-club-oversized-tee-1","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 \/ White","offer_id":50021434589422,"sku":"VF-VLC-OTEE-WHT-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":50021434654958,"sku":"VF-VLC-OTEE-WHT-M","price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":50021434720494,"sku":"VF-VLC-OTEE-WHT-L","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":50021434786030,"sku":"VF-VLC-OTEE-WHT-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ White","offer_id":50021434851566,"sku":"VF-VLC-OTEE-WHT-2XL","price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/hf_20261111_221222_ebdd43b3-88de-46d9-a46c-bf9783c4aade.png?v=1794435351"},{"product_id":"i-am-oversized-tee","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 \/ Sand Stone","offer_id":50021448876270,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Sand Stone","offer_id":50021448974574,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Sand Stone","offer_id":50021449072878,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Sand Stone","offer_id":50021449171182,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Sand Stone","offer_id":50021449269486,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Sand Stone","offer_id":50021449367790,"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_224522_7616760e-1dee-424f-b106-e26657d659a1.png?v=1794437544"},{"product_id":"i-am-oversized-tee-1","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 \/ White","offer_id":50021449498862,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":50021449597166,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":50021449695470,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":50021449793774,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":50021449892078,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ White","offer_id":50021449990382,"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_224530_a4c5610c-e193-436b-b6e7-d44a5b2514e2.png?v=1794437553"},{"product_id":"retribution-oversized-tee-1","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 \/ Sand Stone","offer_id":50021450055918,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Sand Stone","offer_id":50021450154222,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Sand Stone","offer_id":50021450252526,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Sand Stone","offer_id":50021450350830,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Sand Stone","offer_id":50021450449134,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Sand Stone","offer_id":50021450547438,"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_223129_0ed4a50b-3ef6-4ea5-bbb6-e5061be506c9.png?v=1794440060"},{"product_id":"retribution-oversized-tee-2","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 \/ White","offer_id":50021450744046,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":50021450842350,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":50021450940654,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":50021451038958,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":50021451137262,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ White","offer_id":50021451235566,"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_223143_e570f33c-984c-4b3f-ac56-51b113c55b29.png?v=1794440162"},{"product_id":"fear-average-oversized-tee-1","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 \/ Sand Stone","offer_id":50021476335854,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Sand Stone","offer_id":50021476466926,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Sand Stone","offer_id":50021476597998,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Sand Stone","offer_id":50021476729070,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Sand Stone","offer_id":50021476860142,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Sand Stone","offer_id":50021476991214,"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_223704_3ba0d6fa-3c23-4635-b0ed-290a184dbfaf.png?v=1794438030"},{"product_id":"fear-average-oversized-tee-2","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 \/ White","offer_id":50021477187822,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":50021477318894,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":50021477449966,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":50021477581038,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":50021477712110,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ White","offer_id":50021477843182,"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_223714_f8644418-c65b-4aee-8dac-c7b4914b95d4.png?v=1794438038"},{"product_id":"fear-average-oversized-tee-3","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 \/ Black","offer_id":50021478007022,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Black","offer_id":50021478138094,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":50021478269166,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":50021478400238,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":50021478531310,"sku":null,"price":45.0,"currency_code":"USD","in_stock":true},{"title":"XXL \/ Black","offer_id":50021478662382,"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_223723_5cf7e479-7e0a-4f0a-be2e-eccc61bf0737.png?v=1794438049"}],"url":"https:\/\/visionaryfitness.shop\/collections\/mens-short-sleeves.oembed","provider":"Visionary Fitness ","version":"1.0","type":"link"}