{"title":"New Drop","description":null,"products":[{"product_id":"vantage-5-shorts","title":"Vantage 5\" Shorts","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eThe short that goes the distance. A clean 5\" cut with a locked-in liner and four-way stretch that moves with every stride, sprint, and set. Lightweight enough to disappear on you, built well enough to outlast the season. Warm-up to the walk home.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lined | 4-way stretch\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | 5\" inseam | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"stride-vantage-shorts\" data-name='Vantage 5\" Shorts'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394975539438,"sku":"VF-VTG-SHT-BLK-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Blue","offer_id":49394975572206,"sku":"VF-VTG-SHT-BLU-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Purple","offer_id":49394975604974,"sku":"VF-VTG-SHT-PUR-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394975637742,"sku":"VF-VTG-SHT-BLK-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Blue","offer_id":49394975670510,"sku":"VF-VTG-SHT-BLU-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Purple","offer_id":49394975703278,"sku":"VF-VTG-SHT-PUR-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394975736046,"sku":"VF-VTG-SHT-BLK-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Blue","offer_id":49394975768814,"sku":"VF-VTG-SHT-BLU-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Purple","offer_id":49394975801582,"sku":"VF-VTG-SHT-PUR-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394975834350,"sku":"VF-VTG-SHT-BLK-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Blue","offer_id":49394975867118,"sku":"VF-VTG-SHT-BLU-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Purple","offer_id":49394975899886,"sku":"VF-VTG-SHT-PUR-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Black","offer_id":49394975932654,"sku":"VF-VTG-SHT-BLK-2XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Blue","offer_id":49394975965422,"sku":"VF-VTG-SHT-BLU-2XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Purple","offer_id":49394975998190,"sku":"VF-VTG-SHT-PUR-2XL","price":40.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Vantage_5__Shorts_Purple_Front.png?v=1786398027"},{"product_id":"stride-5-shorts","title":"Stride 5\" Shorts","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eYour everyday 5\". Lightweight, breathable, and cut for full range through every step. The pair you reach for on repeat because it just works. Built for training, made for the rest of the day too.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lined | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | 5\" inseam | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"stride-vantage-shorts\" data-name='Stride 5\" Shorts'\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394976653550,"sku":"VF-STR-SHT-BLK-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Blue","offer_id":49394976686318,"sku":"VF-STR-SHT-BLU-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Purple","offer_id":49394976719086,"sku":"VF-STR-SHT-PUR-S","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394976751854,"sku":"VF-STR-SHT-BLK-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Blue","offer_id":49394976784622,"sku":"VF-STR-SHT-BLU-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Purple","offer_id":49394976817390,"sku":"VF-STR-SHT-PUR-M","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394976850158,"sku":"VF-STR-SHT-BLK-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Blue","offer_id":49394976882926,"sku":"VF-STR-SHT-BLU-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Purple","offer_id":49394976915694,"sku":"VF-STR-SHT-PUR-L","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394976948462,"sku":"VF-STR-SHT-BLK-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Blue","offer_id":49394976981230,"sku":"VF-STR-SHT-BLU-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Purple","offer_id":49394977013998,"sku":"VF-STR-SHT-PUR-XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Black","offer_id":49394977046766,"sku":"VF-STR-SHT-BLK-2XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Blue","offer_id":49394977079534,"sku":"VF-STR-SHT-BLU-2XL","price":40.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Purple","offer_id":49394977112302,"sku":"VF-STR-SHT-PUR-2XL","price":40.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Stride_5__Shorts_Black_Front.png?v=1786398041"},{"product_id":"vantage-compression-tee","title":"Vantage Compression Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eSecond-skin support without the squeeze on your range. Our compression tee locks in through the chest and arms, wicks fast, and holds its shape rep after rep. Wear it solo or layer it under a tank. Size up if you are between sizes.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Compression blend | 4-way stretch\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Compression | Size up if between sizes\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"muscle-compression-tees\" data-name=\"Vantage Compression Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394977341678,"sku":"VF-VTG-CMP-BLK-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Grey","offer_id":49394977374446,"sku":"VF-VTG-CMP-GRY-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":49394977407214,"sku":"VF-VTG-CMP-WHT-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":"M \/ Grey","offer_id":49394977472750,"sku":"VF-VTG-CMP-GRY-M","price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":49394977505518,"sku":"VF-VTG-CMP-WHT-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":"L \/ Grey","offer_id":49394977571054,"sku":"VF-VTG-CMP-GRY-L","price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":49394977603822,"sku":"VF-VTG-CMP-WHT-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":"XL \/ Grey","offer_id":49394977669358,"sku":"VF-VTG-CMP-GRY-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":49394977702126,"sku":"VF-VTG-CMP-WHT-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Black","offer_id":49394977734894,"sku":"VF-VTG-CMP-BLK-2XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Grey","offer_id":49394977767662,"sku":"VF-VTG-CMP-GRY-2XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ White","offer_id":49394977800430,"sku":"VF-VTG-CMP-WHT-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":"S \/ Grey","offer_id":49394977865966,"sku":"VF-COR-CMP-GRY-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":49394977898734,"sku":"VF-COR-CMP-WHT-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":"M \/ Grey","offer_id":49394977964270,"sku":"VF-COR-CMP-GRY-M","price":45.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":49394977997038,"sku":"VF-COR-CMP-WHT-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":"L \/ Grey","offer_id":49394978062574,"sku":"VF-COR-CMP-GRY-L","price":45.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":49394978095342,"sku":"VF-COR-CMP-WHT-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":"XL \/ Grey","offer_id":49394978160878,"sku":"VF-COR-CMP-GRY-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":49394978193646,"sku":"VF-COR-CMP-WHT-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Black","offer_id":49394978226414,"sku":"VF-COR-CMP-BLK-2XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Grey","offer_id":49394978259182,"sku":"VF-COR-CMP-GRY-2XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ White","offer_id":49394978291950,"sku":"VF-COR-CMP-WHT-2XL","price":45.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Core_Compression_Tee_White.png?v=1786398041"},{"product_id":"vantage-tank","title":"Vantage Tank","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eCut for the work. Lightweight, fast-drying, and open through the arms for full range of motion on every lift. Clean lines, zero excess, gym floor to street. Simple by design.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"core-vantage-tank\" data-name=\"Vantage Tank\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394978324718,"sku":"VF-VTG-TNK-BLK-S","price":38.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Gun Metal Grey","offer_id":49394978357486,"sku":"VF-VTG-TNK-GMG-S","price":38.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":49394978390254,"sku":"VF-VTG-TNK-WHT-S","price":38.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394978423022,"sku":"VF-VTG-TNK-BLK-M","price":38.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Gun Metal Grey","offer_id":49394978455790,"sku":"VF-VTG-TNK-GMG-M","price":38.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":49394978488558,"sku":"VF-VTG-TNK-WHT-M","price":38.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394978521326,"sku":"VF-VTG-TNK-BLK-L","price":38.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Gun Metal Grey","offer_id":49394978554094,"sku":"VF-VTG-TNK-GMG-L","price":38.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":49394978586862,"sku":"VF-VTG-TNK-WHT-L","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394978619630,"sku":"VF-VTG-TNK-BLK-XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Gun Metal Grey","offer_id":49394978652398,"sku":"VF-VTG-TNK-GMG-XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":49394978685166,"sku":"VF-VTG-TNK-WHT-XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Black","offer_id":49394978717934,"sku":"VF-VTG-TNK-BLK-2XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Gun Metal Grey","offer_id":49394978750702,"sku":"VF-VTG-TNK-GMG-2XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ White","offer_id":49394978783470,"sku":"VF-VTG-TNK-WHT-2XL","price":38.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Vantage_Tank_White.png?v=1786398041"},{"product_id":"core-tank","title":"Core Tank","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eThe one you will live in. Lightweight and breathable with a clean athletic cut that carries from your session to the rest of your day. No frills, no restrictions, just the staple you restock on repeat.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | Lightweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 5'11\" | 190 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"core-vantage-tank\" data-name=\"Core Tank\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49394978849006,"sku":"VF-COR-TNK-BLK-S","price":38.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Gun Metal Grey","offer_id":49394978881774,"sku":"VF-COR-TNK-GMG-S","price":38.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":49394978914542,"sku":"VF-COR-TNK-WHT-S","price":38.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":49394978947310,"sku":"VF-COR-TNK-BLK-M","price":38.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Gun Metal Grey","offer_id":49394978980078,"sku":"VF-COR-TNK-GMG-M","price":38.0,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":49394979012846,"sku":"VF-COR-TNK-WHT-M","price":38.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":49394979045614,"sku":"VF-COR-TNK-BLK-L","price":38.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Gun Metal Grey","offer_id":49394979078382,"sku":"VF-COR-TNK-GMG-L","price":38.0,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":49394979111150,"sku":"VF-COR-TNK-WHT-L","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":49394979143918,"sku":"VF-COR-TNK-BLK-XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Gun Metal Grey","offer_id":49394979176686,"sku":"VF-COR-TNK-GMG-XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":49394979209454,"sku":"VF-COR-TNK-WHT-XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Black","offer_id":49394979242222,"sku":"VF-COR-TNK-BLK-2XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Gun Metal Grey","offer_id":49394979274990,"sku":"VF-COR-TNK-GMG-2XL","price":38.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ White","offer_id":49394979307758,"sku":"VF-COR-TNK-WHT-2XL","price":38.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Core_Tank_White.png?v=1786398040"},{"product_id":"vantage-sweatpants","title":"Vantage Sweatpants","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eOff-duty, done right. Heavyweight fleece with a relaxed fit and a tapered leg that keeps it clean. Warm enough for the walk in, comfortable enough to never take off. The pair you keep reaching for. Size down for a more fitted look.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e Heavyweight fleece blend\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Relaxed | Tapered leg | Size down for a fitted look\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"sweatpants\" data-name=\"Vantage Sweatpants\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Cream","offer_id":49394979373294,"sku":"VF-VTG-SWP-CRM-S","price":70.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Gun Metal Grey","offer_id":49394979406062,"sku":"VF-VTG-SWP-GMG-S","price":70.0,"currency_code":"USD","in_stock":true},{"title":"S \/ Heather Grey","offer_id":49394979438830,"sku":"VF-VTG-SWP-HGR-S","price":70.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Cream","offer_id":49394979471598,"sku":"VF-VTG-SWP-CRM-M","price":70.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Gun Metal Grey","offer_id":49394979504366,"sku":"VF-VTG-SWP-GMG-M","price":70.0,"currency_code":"USD","in_stock":true},{"title":"M \/ Heather Grey","offer_id":49394979537134,"sku":"VF-VTG-SWP-HGR-M","price":70.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Cream","offer_id":49394979569902,"sku":"VF-VTG-SWP-CRM-L","price":70.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Gun Metal Grey","offer_id":49394979602670,"sku":"VF-VTG-SWP-GMG-L","price":70.0,"currency_code":"USD","in_stock":true},{"title":"L \/ Heather Grey","offer_id":49394979635438,"sku":"VF-VTG-SWP-HGR-L","price":70.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Cream","offer_id":49394979668206,"sku":"VF-VTG-SWP-CRM-XL","price":70.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Gun Metal Grey","offer_id":49394979700974,"sku":"VF-VTG-SWP-GMG-XL","price":70.0,"currency_code":"USD","in_stock":true},{"title":"XL \/ Heather Grey","offer_id":49394979733742,"sku":"VF-VTG-SWP-HGR-XL","price":70.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Cream","offer_id":49394979766510,"sku":"VF-VTG-SWP-CRM-2XL","price":70.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Gun Metal Grey","offer_id":49394979799278,"sku":"VF-VTG-SWP-GMG-2XL","price":70.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Heather Grey","offer_id":49394979832046,"sku":"VF-VTG-SWP-HGR-2XL","price":70.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/Vantage_Sweatpants_Heather_Grey.png?v=1786398028"},{"product_id":"more-than-an-athlete-mesh-shorts","title":"More Than An Athlete Mesh Shorts","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eMore than a pair of shorts. Breathable single-layer mesh built to keep you cool when the work gets hot, with a clean cut that moves how you move. Lightweight, unrestrictive, and made for the ones who don't clock out. On the court, in the gym, everywhere in between.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Polyester | 250gsm | Single layer mesh\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Athletic | True to size\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMade to Order\u003c\/strong\u003e — this piece is produced just for you. Please see our \u003ca href=\"https:\/\/visionaryfitness.shop\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener\"\u003eShipping Policy\u003c\/a\u003e for current production \u0026amp; delivery timelines.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"mesh-shorts\" data-name=\"More Than An Athlete Mesh Shorts\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49402825539822,"sku":"VF-MTA-SHT-BLK-S","price":40.0,"currency_code":"USD","in_stock":false},{"title":"S \/ White","offer_id":49402825572590,"sku":"VF-MTA-SHT-WHT-S","price":40.0,"currency_code":"USD","in_stock":false},{"title":"M \/ Black","offer_id":49402825605358,"sku":"VF-MTA-SHT-BLK-M","price":40.0,"currency_code":"USD","in_stock":false},{"title":"M \/ White","offer_id":49402825638126,"sku":"VF-MTA-SHT-WHT-M","price":40.0,"currency_code":"USD","in_stock":false},{"title":"L \/ Black","offer_id":49402825670894,"sku":"VF-MTA-SHT-BLK-L","price":40.0,"currency_code":"USD","in_stock":false},{"title":"L \/ White","offer_id":49402825703662,"sku":"VF-MTA-SHT-WHT-L","price":40.0,"currency_code":"USD","in_stock":false},{"title":"XL \/ Black","offer_id":49402825736430,"sku":"VF-MTA-SHT-BLK-XL","price":40.0,"currency_code":"USD","in_stock":false},{"title":"XL \/ White","offer_id":49402825769198,"sku":"VF-MTA-SHT-WHT-XL","price":40.0,"currency_code":"USD","in_stock":false},{"title":"2XL \/ Black","offer_id":49402825801966,"sku":"VF-MTA-SHT-BLK-2XL","price":40.0,"currency_code":"USD","in_stock":false},{"title":"2XL \/ White","offer_id":49402825834734,"sku":"VF-MTA-SHT-WHT-2XL","price":40.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0796\/2578\/1486\/files\/v1_516f563e-68b3-4409-a396-59a3b4d3b59d.png?v=1786485051"},{"product_id":"athlete-oversized-tee","title":"More Than An Athlete Oversized Tee","description":"\u003cp\u003e\u003cstrong\u003eAbout This Piece\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eHeavyweight cotton with a structured drop shoulder that holds its shape wash after wash. The Athlete tee wears clean on the floor and everywhere after, substantial fabric and a boxy oversized cut that lets the work speak for itself. Size down if you prefer a more structured fit.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eMaterial:\u003c\/strong\u003e 100% Cotton | Heavyweight\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eFit:\u003c\/strong\u003e Oversized drop shoulder | Size down for a structured fit\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e 6'0\" | 200 lbs | Wearing size Large\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCare:\u003c\/strong\u003e Cold wash only. Hang dry. No high heat. Do not bleach.\u003c\/p\u003e\n\u003c!-- VF-SIZE-GUIDE START --\u003e\n\u003chr\u003e\n\u003ch3\u003eSize guide\u003c\/h3\u003e\n\u003cdiv class=\"vf-size\" data-chart=\"oversized-tees\" data-name=\"More Than An Athlete Oversized Tee\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__vfSizeGuide) { window.__vfSizeGuide.scan(); return; }\n\n  \/* ---- shared charts (edit measurements here, in ONE place) ----\n     girth = the column used to recommend a size.\n     flat  = measurement taken laid flat \/ half body, so we double it\n             when matching to a customer's real body measurement.        *\/\n  var CHARTS = {\n    'stringers': {name:'Stringer', fit:'true to size', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['S',90,68],['M',94,70],['L',98,72],['XL',102,74],['XXL',106,76]]},\n    'defy-blackout-tank': {name:'Defy \/ Blackout Tank', fit:'fitted', metric:'chest',\n      cols:['Chest','Length'],\n      rows:[['XS',76,63],['S',78,65],['M',80,67],['L',85,69],['XL',90,71],['XXL',92,73]]},\n    'core-vantage-tank': {name:'Core \/ Vantage Tank', fit:'fitted', metric:'chest', flat:true,\n      cols:['Chest','Length'],\n      rows:[['XS',47,66],['S',49,68],['M',51,70],['L',53,72],['XL',55,74],['XXL',57,76]]},\n    'oversized-tees': {name:'Oversized Tee', fit:'oversized', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',108,69,22],['S',112,71,23],['M',116,73,24],['L',120,75,25],['XL',124,77,26],['XXL',126,79,27]]},\n    'muscle-compression-tees': {name:'Muscle \/ Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',80,63,27],['S',84,65,28],['M',88,67,29],['L',92,69,30],['XL',96,71,31],['XXL',100,73,32]]},\n    'longsleeve-compression-tee': {name:'Longsleeve Compression Tee', fit:'fitted', metric:'chest',\n      cols:['Chest','Length','Sleeve'],\n      rows:[['XS',105,70,63],['S',107,72,64],['M',112,74,65],['L',117,76,66],['XL',122,78,67],['XXL',127,80,68]]},\n\n    'legacy-liner-shorts': {name:'Legacy Liner Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',70,45,100],['M',74,46,104],['L',78,47,108],['XL',82,48,112],['XXL',86,49,116]]},\n    'vital-running-shorts': {name:'Vital Running Shorts', fit:'regular', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,45,101],['M',74,46,104],['L',76,47,108],['XL',78,48,112],['XXL',80,49,116]]},\n    'mesh-shorts': {name:'Mesh Shorts', fit:'athletic \/ true to size', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',71.1,39.4,105.9],['M',74.9,40.6,110],['L',78,41.4,113.8],['XL',81,42.4,117.9],['XXL',85.1,43.4,121.9]]},\n    'stride-vantage-shorts': {name:'Stride \/ Vantage Shorts', fit:'lined', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',71,33,49],['S',74,34.5,51],['M',76,36,53],['L',78,38,55],['XL',83,40,57],['XXL',86,42,59]]},\n    'defy-cotton-shorts': {name:'Defy Cotton Shorts', fit:'regular', metric:'waist',\n      note:'Length \u0026 hip on this chart look swapped from Molly — confirm before going live.',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',72,108,42],['M',76,112,43],['L',80,116,44],['XL',84,122,45.5],['XXL',88,128,47]]},\n    'sweatpants': {name:'Sweatpants', fit:'relaxed', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',66,99,58],['M',69,101,60],['L',72,103,62],['XL',75,105,64],['XXL',78,107,66]]},\n\n    'revival-bra': {name:'Revival Bra', fit:'compression', metric:'bust',\n      cols:['Bust','Length','Hem'],\n      rows:[['S',68,33,56],['M',72,34,60],['L',76,35,64]]},\n    'revival-booty-shorts': {name:'Revival Booty Shorts', fit:'high-waist', metric:'waist',\n      cols:['Waist','Length','Hip'],\n      rows:[['S',58,34,72],['M',62,36,76],['L',68,38,80]]},\n    'serenity-leggings': {name:'Serenity Leggings', fit:'high-stretch', metric:'waist', flat:true,\n      note:'High-stretch. Waist \u0026 hip are relaxed (laid-flat) numbers — the fabric expands well past these.',\n      cols:['Waist','Length','Hip'],\n      rows:[['XS',25.5,78,31],['S',28,79,33.5],['M',30.5,80,36],['L',33,81,38.5],['XL',35.5,82,41]]}\n  };\n\n  var CSS = ''\n  + '@import url(\\'https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;800\u0026display=swap\\');'\n  + '.vf-size{--paper:#0b0b0b;--card:#171717;--ink:#ffffff;--muted:#a1a099;--line:#2a2a28;'\n  + '--line-strong:#3d3d3a;--accent:#5c78ff;--accent-soft:#1b2350;'\n  + \"--font:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;\"\n  + 'font-family:var(--font);color:var(--ink);background:var(--paper);line-height:1.4;'\n  + '-webkit-font-smoothing:antialiased;box-sizing:border-box;max-width:620px;margin:22px auto;'\n  + 'padding:clamp(16px,4vw,28px);border:1px solid var(--line-strong);border-radius:3px;}'\n  + '.vf-size *,.vf-size *::before,.vf-size *::after{box-sizing:border-box;}'\n  + '.vf-size button{font-family:inherit;cursor:pointer;}'\n  + '.vf-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;'\n  + 'border-bottom:2px solid var(--ink);padding-bottom:12px;}'\n  + '.vf-ey{font-weight:800;letter-spacing:.14em;font-size:11px;text-transform:uppercase;color:var(--muted);}'\n  + '.vf-ey b{color:var(--accent);}'\n  + '.vf-nm{font-weight:800;font-size:clamp(22px,5vw,30px);line-height:1;letter-spacing:-.01em;margin:3px 0 0;}'\n  + '.vf-fit{font-size:12px;color:var(--muted);border:1px solid var(--line-strong);padding:3px 9px;'\n  + 'border-radius:2px;white-space:nowrap;margin-top:2px;}'\n  + '.vf-units{display:inline-flex;align-items:center;gap:16px;flex-shrink:0;}'\n  + '.vf-u{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--muted);cursor:pointer;'\n  + 'padding-bottom:3px;border-bottom:2px solid transparent;user-select:none;line-height:1;}'\n  + '.vf-u[aria-pressed=\"true\"]{color:var(--ink);border-bottom-color:var(--accent);}'\n  + '.vf-find{background:var(--card);border:1.5px solid var(--ink);border-radius:3px;padding:16px;margin-top:18px;}'\n  + '.vf-fh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;}'\n  + '.vf-ft{font-weight:800;font-size:14px;}'\n  + '.vf-ask{font-size:13px;color:var(--muted);} .vf-ask b{color:var(--ink);font-weight:600;}'\n  + '.vf-ro{display:flex;align-items:flex-end;gap:14px;margin:14px 0 2px;flex-wrap:wrap;}'\n  + '.vf-num{display:flex;align-items:baseline;border:1.5px solid var(--line-strong);border-radius:2px;'\n  + 'background:var(--paper);padding:6px 9px;}'\n  + '.vf-num input{all:unset;width:82px;font-family:inherit;font-weight:800;font-size:23px;color:var(--ink);'\n  + 'font-variant-numeric:tabular-nums;}'\n  + '.vf-num span{font-size:12px;font-weight:600;color:var(--muted);margin-left:2px;}'\n  + '.vf-res{flex:1;min-width:140px;font-size:13px;color:var(--muted);}'\n  + '.vf-big{display:inline-block;background:var(--accent);color:#fff;font-weight:800;font-size:14px;'\n  + 'padding:4px 12px;border-radius:2px;letter-spacing:.03em;}'\n  + '.vf-rn{margin-top:6px;font-size:12px;color:var(--muted);}'\n  + '.vf-ruler{margin-top:12px;}'\n  + '.vf-ticks{position:relative;height:15px;margin:0 8px 2px;}'\n  + '.vf-ticks i{position:absolute;top:0;width:1px;background:var(--line-strong);}'\n  + '.vf-ticks i.maj{height:15px;background:var(--muted);} .vf-ticks i.min{height:7px;}'\n  + '.vf-rg{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--ink);outline:none;margin:2px 0 0;}'\n  + '.vf-rg::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:28px;'\n  + 'background:var(--accent);border:2px solid #fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);}'\n  + '.vf-rg::-moz-range-thumb{width:20px;height:28px;background:var(--accent);border:2px solid #fff;border-radius:2px;}'\n  + '.vf-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;'\n  + 'font-variant-numeric:tabular-nums;margin-top:5px;padding:0 2px;}'\n  + '.vf-tw{margin-top:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;}'\n  + '.vf-tb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:300px;}'\n  + '.vf-tb th{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:0;'\n  + 'text-align:right;padding:0 0 9px;border-bottom:2px solid var(--ink);}'\n  + '.vf-tb th:first-child{text-align:left;}'\n  + '.vf-tb td{font-size:14px;padding:11px 0;border:0;border-bottom:1px solid var(--line);text-align:right;font-weight:500;}'\n  + '.vf-tb td:first-child{text-align:left;font-weight:800;font-size:15px;}'\n  + '.vf-tb tr.on td{background:var(--accent-soft);border-bottom-color:var(--accent);}'\n  + '.vf-tb tr.on td:first-child{color:var(--accent);position:relative;}'\n  + '.vf-tb tr.on td:first-child::before{content:\"\";position:absolute;left:-14px;top:0;bottom:0;width:4px;background:var(--accent);}'\n  + '.vf-cap{font-size:11px;color:var(--muted);margin-top:9px;text-align:right;}'\n  + '.vf-note{font-size:12px;color:var(--muted);margin-top:10px;font-style:italic;}'\n  + '.vf-how{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;}'\n  + '.vf-how summary{font-size:13px;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;}'\n  + '.vf-how summary::-webkit-details-marker{display:none;}'\n  + '.vf-how summary::before{content:\"+\";width:15px;font-weight:800;color:var(--accent);}'\n  + '.vf-how[open] summary::before{content:\"\\\\2013\";}'\n  + '.vf-how ul{margin:11px 0 0;padding:0;list-style:none;font-size:13px;color:var(--muted);}'\n  + '.vf-how li{padding:4px 0 4px 15px;position:relative;} .vf-how li b{color:var(--ink);font-weight:600;}'\n  + '.vf-how li::before{content:\"\";position:absolute;left:0;top:11px;width:6px;height:1px;background:var(--muted);}'\n  + '@media(max-width:560px){'\n  + '.vf-size{padding:16px;}'\n  + '.vf-hd{padding-bottom:11px;}'\n  + '.vf-nm{font-size:21px;}'\n  + '.vf-find{padding:14px;}'\n  + '.vf-fh{gap:4px;}'\n  + '.vf-num input{width:72px;font-size:20px;}'\n  + '.vf-num span{font-size:11px;}'\n  + '.vf-ft{font-size:13px;} .vf-ask{font-size:12px;}'\n  + '.vf-res{min-width:120px;font-size:12px;}'\n  + '.vf-tb{min-width:0;} .vf-tw{overflow-x:visible;}'\n  + '.vf-tb td{font-size:13px;padding:10px 0;} .vf-tb td:first-child{font-size:14px;}'\n  + '.vf-tb th{font-size:9px;letter-spacing:.06em;}'\n  + '.vf-cap{font-size:10px;}'\n  + '.vf-tb tr.on td:first-child::before{left:-10px;width:3px;}'\n  + '}';\n\n  function injectCSS(){\n    if(document.getElementById('vf-size-css'))return;\n    var s=document.createElement('style'); s.id='vf-size-css'; s.textContent=CSS;\n    document.head.appendChild(s);\n  }\n\n  function init(mount){\n    var chart = CHARTS[mount.getAttribute('data-chart')];\n    if(!chart){ mount.innerHTML='\u003cp style=\"font:13px sans-serif;color:#a00\"\u003eSize chart not found.\u003c\/p\u003e'; return; }\n    var name = mount.getAttribute('data-name') || chart.name;\n\n    var unit='in', userCm=null;\n    var toIn=function(cm){return Math.round((cm\/2.54)*10)\/10;};\n    var disp=function(cm){return unit==='in'?toIn(cm):cm;};\n    var eGirth=function(r){return chart.flat?r[1]*2:r[1];};\n\n    mount.innerHTML=''\n      +'\u003cdiv class=\"vf-hd\"\u003e\u003cdiv\u003e'\n      +'\u003cdiv class=\"vf-ey\"\u003eVisionary \u003cb\u003e\/\u003c\/b\u003e size guide\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-nm\"\u003e\u003c\/div\u003e\u003cdiv class=\"vf-fit\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-units\" role=\"group\" aria-label=\"Units\"\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"in\" role=\"button\" tabindex=\"0\" aria-pressed=\"true\"\u003eIN\u003c\/span\u003e'\n      +'\u003cspan class=\"vf-u\" data-u=\"cm\" role=\"button\" tabindex=\"0\" aria-pressed=\"false\"\u003eCM\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-find\"\u003e\u003cdiv class=\"vf-fh\"\u003e\u003cdiv class=\"vf-ft\"\u003eFind your fit\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ask\"\u003eEnter your \u003cb class=\"vf-metric\"\u003e\u003c\/b\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ro\"\u003e\u003cdiv class=\"vf-num\"\u003e\u003cinput class=\"vf-input\" type=\"number\" inputmode=\"decimal\" step=\"0.5\" value=\"0\"\u003e\u003cspan class=\"vf-iu\"\u003ein\u003c\/span\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-res\"\u003eWe recommend \u003cspan class=\"vf-big vf-rec\"\u003e\\u2013\u003c\/span\u003e\u003cdiv class=\"vf-rn\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-ruler\"\u003e\u003cdiv class=\"vf-ticks\"\u003e\u003c\/div\u003e'\n      +'\u003cinput class=\"vf-rg\" type=\"range\" step=\"0.5\"\u003e\u003cdiv class=\"vf-scale\"\u003e\u003cspan class=\"vf-mn\"\u003e\u003c\/span\u003e\u003cspan class=\"vf-mx\"\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-tw\"\u003e\u003ctable class=\"vf-tb\"\u003e\u003cthead\u003e\u003ctr class=\"vf-th\"\u003e\u003c\/tr\u003e\u003c\/thead\u003e\u003ctbody class=\"vf-tbd\"\u003e\u003c\/tbody\u003e\u003c\/table\u003e\u003cdiv class=\"vf-cap\"\u003e\u003c\/div\u003e\u003c\/div\u003e'\n      +'\u003cdiv class=\"vf-note\"\u003e\u003c\/div\u003e'\n      +'\u003cdetails class=\"vf-how\"\u003e\u003csummary\u003eHow to measure\u003c\/summary\u003e\u003cul\u003e'\n      +'\u003cli\u003e\u003cb\u003eChest \/ bust\u003c\/b\u003e \\u2014 around the fullest part, tape level under the arms, relaxed.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eWaist\u003c\/b\u003e \\u2014 around your natural waistline, roughly at the belly button.\u003c\/li\u003e'\n      +'\u003cli\u003e\u003cb\u003eLength\u003c\/b\u003e \\u2014 from the highest shoulder seam straight down to the hem.\u003c\/li\u003e'\n      +'\u003cli\u003eBetween sizes? Size up for a looser fit, down for a closer one.\u003c\/li\u003e\u003c\/ul\u003e\u003c\/details\u003e';\n\n    var q=function(s){return mount.querySelector(s);};\n    q('.vf-nm').textContent=name;\n    q('.vf-fit').textContent=chart.fit;\n    q('.vf-metric').textContent=chart.metric;\n\n    function recommend(cm){\n      if(cm==null)return null; var best=null,bd=1e9;\n      chart.rows.forEach(function(r){var d=Math.abs(eGirth(r)-cm); if(d\u003cbd){bd=d;best=r[0];}});\n      return best;\n    }\n    function girthRange(){\n      var v=chart.rows.map(eGirth); return [Math.round(Math.min.apply(null,v)-8), Math.round(Math.max.apply(null,v)+8)];\n    }\n    function ticks(mn,mx){\n      var t=q('.vf-ticks'); t.innerHTML=''; var span=mx-mn; if(span\u003c=0)return;\n      var step=unit==='in'?1:2, maj=unit==='in'?5:10;\n      for(var v=Math.ceil(mn); v\u003c=mx; v+=step){\n        var i=document.createElement('i'); i.className=(Math.round(v)%maj===0)?'maj':'min';\n        i.style.left=((v-mn)\/span*100)+'%'; t.appendChild(i);\n      }\n    }\n    function table(){\n      var b=q('.vf-tbd'); b.innerHTML=''; var rec=recommend(userCm);\n      chart.rows.forEach(function(r){\n        var tr=document.createElement('tr'); if(r[0]===rec)tr.className='on';\n        var td0=document.createElement('td'); td0.textContent=r[0]; tr.appendChild(td0);\n        for(var i=1;i\u003cr.length;i++){var td=document.createElement('td'); td.textContent=disp(r[i]); tr.appendChild(td);}\n        b.appendChild(tr);\n      });\n    }\n    function rec(){\n      var s=recommend(userCm); q('.vf-rec').textContent=s||'\\u2013'; var n=q('.vf-rn');\n      if(!s){n.textContent='';return;}\n      var row=chart.rows.filter(function(r){return r[0]===s;})[0], g=eGirth(row), c=userCm-g, m;\n      if(Math.abs(c)\u003c=2)m='Right in range for this piece.';\n      else if(c\u003e0)m='Near the top of this size \\u2014 size up for more room.';\n      else m='Comfortable, with a little room to spare.';\n      n.textContent=m;\n    }\n    function render(){\n      var thr=q('.vf-th'); thr.innerHTML='\u003cth\u003eSize\u003c\/th\u003e';\n      chart.cols.forEach(function(c){var th=document.createElement('th');th.textContent=c;thr.appendChild(th);});\n      var rr=girthRange(), mn=unit==='in'?toIn(rr[0]):rr[0], mx=unit==='in'?toIn(rr[1]):rr[1];\n      var rg=q('.vf-rg'); rg.min=mn; rg.max=mx;\n      q('.vf-mn').textContent=mn+(unit==='in'?'\"':''); q('.vf-mx').textContent=mx+(unit==='in'?'\"':'');\n      q('.vf-iu').textContent=unit==='in'?'in':'cm';\n      if(userCm==null){var mid=chart.rows[Math.floor(chart.rows.length\/2)]; userCm=eGirth(mid);}\n      var ud=disp(userCm); q('.vf-input').value=ud; rg.value=Math.min(mx,Math.max(mn,ud));\n      ticks(mn,mx); table(); rec();\n      q('.vf-cap').textContent='Measurements in '+(unit==='in'?'inches':'centimetres')+'.';\n      q('.vf-note').textContent=chart.note?('* '+chart.note):'';\n    }\n\n    mount.querySelectorAll('.vf-u').forEach(function(bt){\n      var go=function(){ unit=bt.getAttribute('data-u');\n        mount.querySelectorAll('.vf-u').forEach(function(x){x.setAttribute('aria-pressed',x===bt?'true':'false');});\n        render(); };\n      bt.onclick=go;\n      bt.onkeydown=function(e){ if(e.key==='Enter'||e.key===' '){e.preventDefault();go();} };\n    });\n    q('.vf-rg').addEventListener('input',function(){var v=parseFloat(this.value);userCm=unit==='in'?v*2.54:v;q('.vf-input').value=v;table();rec();});\n    q('.vf-input').addEventListener('input',function(){var v=parseFloat(this.value);if(isNaN(v))return;userCm=unit==='in'?v*2.54:v;\n      var rg=q('.vf-rg');rg.value=Math.min(parseFloat(rg.max),Math.max(parseFloat(rg.min),v));table();rec();});\n\n    render(); mount.setAttribute('data-vf-ready','1');\n  }\n\n  function scan(){ injectCSS(); document.querySelectorAll('.vf-size[data-chart]:not([data-vf-ready])').forEach(init); }\n  window.__vfSizeGuide={scan:scan,charts:CHARTS};\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',scan); else scan();\n})();\n\u003c\/script\u003e\n\u003c!-- VF-SIZE-GUIDE END --\u003e","brand":"Visionary Fitness","offers":[{"title":"S \/ Black","offer_id":49416481767662,"sku":"VF-ATH-OTEE-BLK-S","price":45.0,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":49416481800430,"sku":"VF-ATH-OTEE-WHT-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":"M \/ White","offer_id":49416481865966,"sku":"VF-ATH-OTEE-WHT-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":"L \/ White","offer_id":49416481931502,"sku":"VF-ATH-OTEE-WHT-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":"XL \/ White","offer_id":49416481997038,"sku":"VF-ATH-OTEE-WHT-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Black","offer_id":49416482029806,"sku":"VF-ATH-OTEE-BLK-2XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ White","offer_id":49416482062574,"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\/16_85599d23-16cf-4add-8114-5c9539fd09e6.png?v=1786670212"},{"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":"S \/ White","offer_id":49416482783470,"sku":"VF-VLC-OTEE-WHT-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":"M \/ White","offer_id":49416482849006,"sku":"VF-VLC-OTEE-WHT-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":"L \/ White","offer_id":49416482914542,"sku":"VF-VLC-OTEE-WHT-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":"XL \/ White","offer_id":49416482980078,"sku":"VF-VLC-OTEE-WHT-XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Black","offer_id":49416483012846,"sku":"VF-VLC-OTEE-BLK-2XL","price":45.0,"currency_code":"USD","in_stock":true},{"title":"2XL \/ White","offer_id":49416483045614,"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\/28_3d04b011-8fe4-496c-9881-6efb35a9b8e1.png?v=1786670235"}],"url":"https:\/\/visionaryfitness.shop\/collections\/new-drop.oembed","provider":"Visionary Fitness ","version":"1.0","type":"link"}