{"product_id":"upf30-half-zip-quick-dry-stretch-sun-jacket","title":"UPF30+ Half-Zip Quick-Dry Stretch Sun Jacket","description":"\u003ch4\u003eProps\u003c\/h4\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-family: sans-serif; font-size: 14px; text-align: center;box-sizing: border-box;\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;background-color: #f2f2f2;\"\u003eItem number\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eSS23\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;background-color: #f2f2f2;\"\u003eBrand\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eLALAVAVA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;background-color: #f2f2f2;\"\u003eMarket launch year\/season\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003e2025 Summer\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;background-color: #f2f2f2;\"\u003eUPF value\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eUPF30+\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;background-color: #f2f2f2;\"\u003eUVA transmittance\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eLess than 5%\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;background-color: #f2f2f2;\"\u003eSizing\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eS, M, L, XL\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;background-color: #f2f2f2;\"\u003eColor options\u003c\/td\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eGray, Black\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\n\u003cstyle\u003e\n.sc-section{font-family:sans-serif;}\n.sc-section table{border-collapse:collapse;width:100%;margin-bottom:16px;}\n.sc-section td,.sc-section th{border:1px solid #ddd;padding:6px 10px;text-align:center;font-size:14px;}\n.sc-section th{background:#f7f7f7;font-weight:600;}\n.sc-toggle{float:right;display:inline-flex;gap:3px;font-size:11px;font-weight:normal;}\n.sc-ubtn{padding:2px 7px;border:1px solid #bbb;border-radius:3px;cursor:pointer;\n         background:#f0f0f0;color:#555;line-height:1.6;}\n.sc-ubtn.active{background:#333;color:#fff;border-color:#333;}\nh4{overflow:hidden;}\n.sc-rec-widget{margin:8px 0 16px;}\n.sc-rec-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;}\n.sc-rec-label{font-size:13px;display:flex;align-items:center;gap:5px;}\n.sc-rec-input{width:68px;padding:4px 7px;border:1px solid #bbb;border-radius:4px;font-size:13px;}\n.sc-rec-btn{padding:5px 14px;background:#333;color:#fff;border:none;border-radius:4px;\n            cursor:pointer;font-size:13px;}\n.sc-rec-btn:hover{background:#555;}\n.sc-rec-result{margin-top:8px;font-size:14px;min-height:20px;}\n.sc-rec-result strong{font-size:17px;color:#222;}\n.sc-rec-result.rec-none{color:#999;font-size:13px;}\n\u003c\/style\u003e\n\u003cscript\u003e\nfunction swUnit(btn){\n  var u=btn.dataset.u;\n  var sec=btn.closest('.sc-section');\n  sec.querySelectorAll('.sc-ubtn').forEach(function(b){\n    b.classList.toggle('active',b.dataset.u===u);\n  });\n  sec.querySelectorAll('[data-m]').forEach(function(el){\n    el.textContent=u==='metric'?el.dataset.m:el.dataset.i;\n  });\n  sec.querySelectorAll('.sc-rec-h-unit').forEach(function(el){el.textContent=u==='metric'?'cm':'in';});\n  sec.querySelectorAll('.sc-rec-w-unit').forEach(function(el){el.textContent=u==='metric'?'kg':'lbs';});\n  sec.querySelectorAll('.sc-rec-h-input').forEach(function(el){el.placeholder=u==='metric'?'170':'67';});\n  sec.querySelectorAll('.sc-rec-w-input').forEach(function(el){el.placeholder=u==='metric'?'60':'132';});\n}\nfunction queryRecSize(btn){\n  var widget=btn.closest('.sc-rec-widget');\n  var sec=btn.closest('.sc-section');\n  var unit='metric';\n  if(sec){var ab=sec.querySelector('.sc-ubtn.active');if(ab)unit=ab.dataset.u;}\n  var hVal=parseFloat(widget.querySelector('.sc-rec-h-input').value);\n  var wVal=parseFloat(widget.querySelector('.sc-rec-w-input').value);\n  var result=widget.querySelector('.sc-rec-result');\n  if(isNaN(hVal)||isNaN(wVal)){\n    result.className='sc-rec-result rec-none';\n    result.textContent='Please enter both height and weight.';return;\n  }\n  var h=unit==='imperial'?hVal*2.54:hVal;\n  var w=unit==='imperial'?wVal\/2.20462:wVal;\n  var data=JSON.parse(widget.querySelector('.sc-rec-data').textContent);\n  var match=null;\n  for(var i=0;i\u003cdata.length;i++){\n    var r=data[i];\n    if(h\u003e=r.hMin\u0026\u0026h\u003cr.hMax\u0026\u0026w\u003e=r.wMin\u0026\u0026w\u003cr.wMax){match=r;break;}\n  }\n  result.className='sc-rec-result';\n  if(match){result.innerHTML='Recommended Size: \u003cstrong\u003e'+match.size+'\u003c\/strong\u003e';}\n  else{result.className='sc-rec-result rec-none';result.textContent='No exact match. Please contact customer service.';}\n}\n\u003c\/script\u003e\n\u003cdiv class=\"sc-section\"\u003e\n\u003ch4\u003eSize Chart \u003cspan class=\"sc-toggle\"\u003e\u003cbutton class=\"sc-ubtn active\" data-u=\"metric\" onclick=\"swUnit(this)\"\u003ecm \/ kg\u003c\/button\u003e\u003cbutton class=\"sc-ubtn\" data-u=\"imperial\" onclick=\"swUnit(this)\"\u003ein \/ lbs\u003c\/button\u003e\u003c\/span\u003e\n\u003c\/h4\u003e\n\u003cp\u003eUnit: centimeter (cm). Measurements are taken flat by hand; please allow ±1–3 cm tolerance.\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-family: sans-serif; font-size: 14px; text-align: center;box-sizing: border-box;\"\u003e\n\u003cthead\u003e\u003ctr style=\"background-color: #f2f2f2;\"\u003e\n\u003cth style=\"border: 1px solid #ddd; padding: 8px;\"\u003eMeasurement Item\u003c\/th\u003e\n\u003cth style=\"border: 1px solid #ddd; padding: 8px;\"\u003eS\u003c\/th\u003e\n\u003cth style=\"border: 1px solid #ddd; padding: 8px;\"\u003eM\u003c\/th\u003e\n\u003cth style=\"border: 1px solid #ddd; padding: 8px;\"\u003eL\u003c\/th\u003e\n\u003cth style=\"border: 1px solid #ddd; padding: 8px;\"\u003eXL\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eClothes Length\u003c\/td\u003e\n\u003ctd data-i=\"24.8\" data-m=\"63\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e63\u003c\/td\u003e\n\u003ctd data-i=\"25.6\" data-m=\"65\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e65\u003c\/td\u003e\n\u003ctd data-i=\"26.4\" data-m=\"67\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e67\u003c\/td\u003e\n\u003ctd data-i=\"27.2\" data-m=\"69\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e69\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eShoulder\u003c\/td\u003e\n\u003ctd data-i=\"15.7\" data-m=\"40\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e40\u003c\/td\u003e\n\u003ctd data-i=\"16.9\" data-m=\"43\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e43\u003c\/td\u003e\n\u003ctd data-i=\"18.1\" data-m=\"46\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e46\u003c\/td\u003e\n\u003ctd data-i=\"19.3\" data-m=\"49\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e49\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eChest\u003c\/td\u003e\n\u003ctd data-i=\"35.4\" data-m=\"90\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e90\u003c\/td\u003e\n\u003ctd data-i=\"37.0\" data-m=\"94\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e94\u003c\/td\u003e\n\u003ctd data-i=\"38.6\" data-m=\"98\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e98\u003c\/td\u003e\n\u003ctd data-i=\"40.2\" data-m=\"102\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e102\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: 1px solid #ddd; padding: 8px;\"\u003eSleeve\u003c\/td\u003e\n\u003ctd data-i=\"17.3\" data-m=\"44\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e44\u003c\/td\u003e\n\u003ctd data-i=\"17.7\" data-m=\"45\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e45\u003c\/td\u003e\n\u003ctd data-i=\"18.1\" data-m=\"46\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e46\u003c\/td\u003e\n\u003ctd data-i=\"18.5\" data-m=\"47\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e47\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ch4\u003eModel Info \u003cspan class=\"sc-toggle\"\u003e\u003cbutton class=\"sc-ubtn active\" data-u=\"metric\" onclick=\"swUnit(this)\"\u003ecm \/ kg\u003c\/button\u003e\u003cbutton class=\"sc-ubtn\" data-u=\"imperial\" onclick=\"swUnit(this)\"\u003ein \/ lbs\u003c\/button\u003e\u003c\/span\u003e\n\u003c\/h4\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-family: sans-serif; font-size: 14px; text-align: center;box-sizing: border-box;\"\u003e\n\u003cthead\u003e\u003ctr style=\"background-color: #f2f2f2;\"\u003e\n\u003cth style=\"border: 1px solid #ddd; padding: 8px;\"\u003eHeight\u003c\/th\u003e\n\u003cth style=\"border: 1px solid #ddd; padding: 8px;\"\u003eWeight\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd data-i=\"6′0″\" data-m=\"183.0\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e183.0\u003c\/td\u003e\n\u003ctd data-i=\"160.9\" data-m=\"73.0\" style=\"border: 1px solid #ddd; padding: 8px;\"\u003e73.0\u003c\/td\u003e\n\u003c\/tr\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e","brand":"Lalavava - Whistle Hunter","offers":[{"title":"S \/ Gray","offer_id":54557223911796,"sku":"908953066581_5769941436985","price":59.99,"currency_code":"USD","in_stock":true},{"title":"S \/ Black","offer_id":54557223944564,"sku":"908953066581_5769941436986","price":59.99,"currency_code":"USD","in_stock":true},{"title":"M \/ Gray","offer_id":54557223977332,"sku":"908953066581_5769941436988","price":59.99,"currency_code":"USD","in_stock":true},{"title":"M \/ Black","offer_id":54557224010100,"sku":"908953066581_5769941436989","price":59.99,"currency_code":"USD","in_stock":true},{"title":"L \/ Gray","offer_id":54557224042868,"sku":"908953066581_5769941436991","price":59.99,"currency_code":"USD","in_stock":true},{"title":"L \/ Black","offer_id":54557224075636,"sku":"908953066581_5769941436992","price":59.99,"currency_code":"USD","in_stock":true},{"title":"XL \/ Gray","offer_id":54557224108404,"sku":"908953066581_5769941436994","price":59.99,"currency_code":"USD","in_stock":true},{"title":"XL \/ Black","offer_id":54557224141172,"sku":"908953066581_5769941436995","price":59.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0957\/6176\/0628\/files\/021777627665179b7f99da0eb26b9ad44cd88ab09cbbdafdcc09c_0.jpg?v=1777627744","url":"https:\/\/lalavava.com\/products\/upf30-half-zip-quick-dry-stretch-sun-jacket","provider":"Lalavava","version":"1.0","type":"link"}