{"title":"French Bulldog Clothing","description":"\u003cp\u003eStyle and comfort for your Frenchie. Browse hoodies, sweatshirts, winter coats, raincoats, vests and outfits made for the French Bulldog's compact body.\u003cbr\u003e\u003c\/p\u003e","products":[{"product_id":"clothing","title":"Lay's Classic Potato Chip Mesh Vest \u0026 Bag Set for French Bulldogs","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp data-path-to-node=\"1\"\u003eKeep your Frenchie cool and \"crisp\" this summer with this breathable mesh vest. Featuring the iconic Lay’s Classic design, this lightweight jersey is tailored for the stocky build of French Bulldogs, ensuring maximum airflow and a hilarious look.\u003c\/p\u003e\n\u003ch3 data-path-to-node=\"3\"\u003e\u003cb data-path-to-node=\"3\" data-index-in-node=\"0\"\u003eProduct Highlights\u003c\/b\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli data-path-to-node=\"4,0,0\"\u003e\n\u003cb data-path-to-node=\"4,0,0\" data-index-in-node=\"0\"\u003eBreathable Mesh:\u003c\/b\u003e Ultra-lightweight fabric designed to prevent overheating.\u003c\/li\u003e\n\u003cli data-path-to-node=\"4,1,0\"\u003e\n\u003cb data-path-to-node=\"4,1,0\" data-index-in-node=\"0\"\u003eFrenchie Fit:\u003c\/b\u003e Wide neck and chest openings tailored for the bulldog physique.\u003c\/li\u003e\n\u003cli data-path-to-node=\"4,2,0\"\u003e\n\u003cb data-path-to-node=\"4,2,0\" data-index-in-node=\"0\"\u003eVibrant Design:\u003c\/b\u003e High-quality \"Lay's\" print with a matching plush snack bag.\u003c\/li\u003e\n\u003cli data-path-to-node=\"4,3,0\"\u003e\n\u003cb data-path-to-node=\"4,3,0\" data-index-in-node=\"0\"\u003eEasy Wear:\u003c\/b\u003e Flexible pullover style for quick and stress-free dressing.\u003c\/li\u003e\n\u003cli data-path-to-node=\"4,4,0\"\u003e\n\u003cb data-path-to-node=\"4,4,0\" data-index-in-node=\"0\"\u003eDurable:\u003c\/b\u003e Machine-washable polyester that stays bright all summer.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Frenchie Hub","offers":[{"title":"Only Vest \/ S","offer_id":45955622568097,"sku":"035FD6BABB5C47B4BB097F85ECD81EB1","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Only Vest \/ M","offer_id":45955622600865,"sku":"F172470B33DE460499E6213E1A80D7C0","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Only Vest \/ L","offer_id":45955622633633,"sku":"730BB6B8EB0148D58D426467ECF63133","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Only Vest \/ XL","offer_id":45955622666401,"sku":"28B38106239D4E97B8FE4A27261497D6","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Vest with Bag \/ S","offer_id":45955622699169,"sku":"5B9EE519F0DB49E199B443151E6FB0FF","price":42.99,"currency_code":"USD","in_stock":true},{"title":"Vest with Bag \/ M","offer_id":45955622731937,"sku":"78DE3A4E73B0436292C55CA9C707AC09","price":42.99,"currency_code":"USD","in_stock":true},{"title":"Vest with Bag \/ L","offer_id":45955622764705,"sku":"83E2D4CA84254F6B9BE1013291602F83","price":42.99,"currency_code":"USD","in_stock":true},{"title":"Vest with Bag \/ XL","offer_id":45955622797473,"sku":"C93B91083CF5478395438913F25A2CDA","price":42.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/2FB0BA65A6F9DA5BA7590DB0AFB12BBE_1.jpg?v=1776982696"},{"product_id":"american-flag-tide-brand-windproof-and-rainproof-north-dog-large-dog-raincoat-dog-pet-jacket","title":"Frenchie Explorer Raincoat – Windproof \u0026 Water-Resistant Dog Rain Jacket","description":"\u003cdiv id=\"frenchie-calc\"\u003e\n  \u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\n  \u003cbutton class=\"fc-open-btn\" onclick=\"fcToggleModal()\"\u003e\n    📏 Find my Frenchie's size\n  \u003c\/button\u003e\n\n  \u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n    \u003cdiv class=\"fc-modal\"\u003e\n      \u003cbutton class=\"fc-close\" onclick=\"fcToggleModal()\"\u003e×\u003c\/button\u003e\n      \u003ch3\u003eSize calculator\u003c\/h3\u003e\n      \u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\n      \u003cdiv class=\"fc-unit-toggle\"\u003e\n        \u003cbutton class=\"fc-unit-btn active\" onclick=\"fcSetUnit('cm')\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e\n        \u003cbutton class=\"fc-unit-btn\" onclick=\"fcSetUnit('in')\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-grid\"\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n        \u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\n      \u003cbutton class=\"fc-toggle-btn\" onclick=\"fcToggleChart()\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n      \u003cdiv id=\"fc-chart\" style=\"display:none\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n          \u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003eKeep your Frenchie dry and adventurous with this sleek, high-performance raincoat. Designed specifically to handle the broad chest and stocky frame of French Bulldogs, this windproof polyester jacket offers maximum protection without sacrificing comfort. Whether it’s a drizzly morning walk or a windy afternoon at the park, this lightweight, durable parka ensures your bat-eared companion stays cozy and looks sharp in any weather.\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Black \/ S","offer_id":45958382878881,"sku":"B4F58164020F4431BA65B22BCA7653FA","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ M","offer_id":45958382911649,"sku":"7E21645FB3BE4A59A4396F7B396ADCD4","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ L","offer_id":45958382944417,"sku":"ACBDF5B4148340D6BA4AE05BCEA14922","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XL","offer_id":45958382977185,"sku":"1D818825372B4F2E9524822F435E33A9","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XXL","offer_id":45958383009953,"sku":"282BB9D603404E41A8ED1B2CF90D1739","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XXXL","offer_id":45958383042721,"sku":"FD475201511040528B5F67A7B4667961","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ 5XL","offer_id":45958383075489,"sku":"65CCD3EDBE3F4E3F900302B358C1F101","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ 4XL","offer_id":45958383108257,"sku":"AA4B8783251C4C489DA5A8A708735ECC","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Camouflage \/ M","offer_id":45958383141025,"sku":"FD5E5C520E534A2B8A48A9DD04924AAF","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Camouflage \/ L","offer_id":45958383173793,"sku":"8D3F1725056E4EA781FA8ED0719F36B8","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Camouflage \/ XL","offer_id":45958383206561,"sku":"7C8C582F0AAB4E0D88B6EC48DCF44BE4","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Camouflage \/ XXL","offer_id":45958383239329,"sku":"146A26E7D7264E388860010E11B16D89","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Camouflage \/ XXXL","offer_id":45958383272097,"sku":"5B12AD22D37C4D1BA49370F50B778AB3","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Camouflage \/ 4XL","offer_id":45958383304865,"sku":"7E3EDE8316934FB8BB2F75734F4B5E2A","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Camouflage \/ 5XL","offer_id":45958383337633,"sku":"DADA3F03014F41C996F7BCB770E032FC","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Camouflage \/ S","offer_id":45958383370401,"sku":"DC45ADEFCD334413929D35760BE2A9AE","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ S","offer_id":45958383403169,"sku":"F93012D94E424C6489CC78421EEDD5C9","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ M","offer_id":45958383435937,"sku":"1A64518FAAF543EC9DE9DE3045456424","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ L","offer_id":45958383468705,"sku":"7ECC20B5FF16432291329916F544640E","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ XL","offer_id":45958383501473,"sku":"13C5EC6DF2FC49A4B2F86778BFE6332D","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ XXL","offer_id":45958383534241,"sku":"37ECEF66B61240DC8165A065D509E6D9","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ XXXL","offer_id":45958383567009,"sku":"001F70FAA68D4FEAB344B5392C0A9387","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ 4XL","offer_id":45958383599777,"sku":"B5EF119F5AAD49BCACAF875379624938","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ 5XL","offer_id":45958383632545,"sku":"AEBC9000E3064BDCA10D532AB15E66F1","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ S","offer_id":45958383665313,"sku":"E56FDFF683604C5EB0150F9AFBE38BE4","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ M","offer_id":45958383698081,"sku":"1232430127DF4ABAA7BA75B48BDE459C","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ L","offer_id":45958383730849,"sku":"E286E179541D4BF0B6BE13D0B22B39DD","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ XL","offer_id":45958383763617,"sku":"ADE6F2B3B612491ABE72163B9971B7C1","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ XXL","offer_id":45958383796385,"sku":"F454888194014A8AB658B543C1273E96","price":27.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ XXXL","offer_id":45958383829153,"sku":"454498F4DDC64456B2335D081245C06E","price":27.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/E74F753E8644EBD12725BBB5FC1265CC_7.jpg?v=1777064061"},{"product_id":"rainproof","title":"French Bulldog Reflective Raincoat – Waterproof \u0026 Breathable","description":"\u003cdiv id=\"frenchie-calc\"\u003e\n  \u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\n  \u003cbutton class=\"fc-open-btn\" onclick=\"fcToggleModal()\"\u003e\n    📏 Find my Frenchie's size\n  \u003c\/button\u003e\n\n  \u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n    \u003cdiv class=\"fc-modal\"\u003e\n      \u003cbutton class=\"fc-close\" onclick=\"fcToggleModal()\"\u003e×\u003c\/button\u003e\n      \u003ch3\u003eSize calculator\u003c\/h3\u003e\n      \u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\n      \u003cdiv class=\"fc-unit-toggle\"\u003e\n        \u003cbutton class=\"fc-unit-btn active\" onclick=\"fcSetUnit('cm')\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e\n        \u003cbutton class=\"fc-unit-btn\" onclick=\"fcSetUnit('in')\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-grid\"\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n        \u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\n      \u003cbutton class=\"fc-toggle-btn\" onclick=\"fcToggleChart()\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n      \u003cdiv id=\"fc-chart\" style=\"display:none\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n          \u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003eRain or shine, your Frenchie stays dry, safe, and still the most stylish pup on the block. 🌧️\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e☔ \u003cstrong\u003eRainproof Protection\u003c\/strong\u003e: Waterproof polyester keeps your Frenchie fully dry in any weather\u003c\/li\u003e\n\u003cli\u003e🌬️ \u003cstrong\u003eBreathable Fabric\u003c\/strong\u003e: Allows airflow so your Frenchie stays comfortable and never overheats\u003c\/li\u003e\n\u003cli\u003e🌟 \u003cstrong\u003eReflective Nightwear\u003c\/strong\u003e: High-visibility strips keep your pup safe and seen on night walks\u003c\/li\u003e\n\u003cli\u003e🐾 \u003cstrong\u003eFour-Legged Design\u003c\/strong\u003e: Full body coverage — protects all four legs from rain and mud\u003c\/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003e3 Colors\u003c\/strong\u003e: Available in Red, Green and Gray to suit every Frenchie's style\u003c\/li\u003e\n\u003cli\u003e📏 \u003cstrong\u003e5 Sizes\u003c\/strong\u003e: S to 2XL — fits French Bulldogs from lean pups to big chunky adults\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPTImage28avr.2026_21_44_46.png?v=1777409105\" alt=\"\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Red \/ S","offer_id":46042358087841,"sku":"775DDB89F5D04C76AD5458CBBAC66AB5","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ M","offer_id":46042358120609,"sku":"822BEB3AC62545C6B4F84B356549A522","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ L","offer_id":46042358153377,"sku":"7F0A4E25FE6941A387EDFA53C87F7E90","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ XL","offer_id":46042358186145,"sku":"6BC8AF72BBF14CB3B0627A45DA850CA7","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ XXL","offer_id":46042358218913,"sku":"11335F1E3EB843F9AEBBDB59BFB26ED9","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ S","offer_id":46042358251681,"sku":"33CB63906CD04405817741BC18EC28B3","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ M","offer_id":46042358284449,"sku":"31FAEDE472644F5785CCDC6F823F65B6","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ L","offer_id":46042358317217,"sku":"546E7787A8AD481FBB0A23A223D08DE7","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ XL","offer_id":46042358349985,"sku":"F5769036E0F04C3596EDEA3A7BC93B89","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ XXL","offer_id":46042358382753,"sku":"5473A3EB438A4C97850CCC633D33159A","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ S","offer_id":46042358415521,"sku":"2A072CFC8FD74431ABF5D321BD9E1F21","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ M","offer_id":46042358448289,"sku":"FDD4AE5EE37B42158266B73390D1A346","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ L","offer_id":46042358481057,"sku":"886E5A90A13F4913ADDBEE11620CF41E","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ XL","offer_id":46042358513825,"sku":"0CDE7404B2364C12ACC6012D293FF391","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Grey \/ XXL","offer_id":46042358546593,"sku":"9D41E6A3D48E49089686F9E562920D15","price":29.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Gemini_Generated_Image_c072ecc072ecc072.jpg?v=1777409059"},{"product_id":"winter-dog-clothes-for-small-dogs-warm-dog-coat-jacket-french-bulldog-clothes-hooded-coat-pet-puppy-cloting-fleece-padded-outfit","title":"French Bulldog Winter Hooded Coat – Warm Fleece Padded Jacket","description":"\u003cdiv id=\"frenchie-calc\"\u003e\n  \u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\n  \u003cbutton class=\"fc-open-btn\" onclick=\"fcToggleModal()\"\u003e\n    📏 Find my Frenchie's size\n  \u003c\/button\u003e\n\n  \u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n    \u003cdiv class=\"fc-modal\"\u003e\n      \u003cbutton class=\"fc-close\" onclick=\"fcToggleModal()\"\u003e×\u003c\/button\u003e\n      \u003ch3\u003eSize calculator\u003c\/h3\u003e\n      \u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\n      \u003cdiv class=\"fc-unit-toggle\"\u003e\n        \u003cbutton class=\"fc-unit-btn active\" onclick=\"fcSetUnit('cm')\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e\n        \u003cbutton class=\"fc-unit-btn\" onclick=\"fcSetUnit('in')\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-grid\"\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n        \u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\n      \u003cbutton class=\"fc-toggle-btn\" onclick=\"fcToggleChart()\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n      \u003cdiv id=\"fc-chart\" style=\"display:none\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n          \u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003eKeep your Frenchie cozy, cute and runway-ready all winter long — because cold weather is no excuse for bad style. 🧥\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 \u003cstrong\u003eFleece Padded Warmth\u003c\/strong\u003e: Thick padded fleece inner keeps your Frenchie warm in cold weather\u003c\/li\u003e\n\u003cli\u003e🪶 \u003cstrong\u003eLightweight Design\u003c\/strong\u003e: Cozy without the bulk — your Frenchie moves freely and comfortably\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eMachine Washable\u003c\/strong\u003e: Easy to clean and maintain — stays fresh wash after wash\u003c\/li\u003e\n\u003cli\u003e🎩 \u003cstrong\u003eHooded Style\u003c\/strong\u003e: Built-in hood adds extra warmth and makes your pup look absolutely adorable\u003c\/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003e3 Colors\u003c\/strong\u003e: Available in Green, Gray and Khaki — stylish options for every Frenchie\u003c\/li\u003e\n\u003cli\u003e📏 \u003cstrong\u003e5 Sizes\u003c\/strong\u003e: S to 2XL — perfect fit for French Bulldogs from small pups to chunky adults\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/size.png?v=1777576164\" alt=\"\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Green \/ S","offer_id":46125515702433,"sku":"4CB704B0B64149BD9666705ECA102D00","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ M","offer_id":46125515735201,"sku":"2A42CB1B905B4E7D9158631FB9FB5E77","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ L","offer_id":46125515767969,"sku":"B361381FB13540629616FF41F037EF65","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ XL","offer_id":46125515800737,"sku":"57821B5F09C64621A8475FFA8B119122","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ 2XL","offer_id":46125515833505,"sku":"40D0EACC25844460A9BA26982C718F3F","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Gray \/ S","offer_id":46125515866273,"sku":"B4C05DB6EF384CCCBB0F9627C1AADA16","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Gray \/ M","offer_id":46125515899041,"sku":"60B756F8A1A54305B17291DFC1952BA4","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Gray \/ L","offer_id":46125515931809,"sku":"85267247E1A54D358356B630C3EE39A9","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Gray \/ XL","offer_id":46125515964577,"sku":"2BC330BDDD6C40EDA1EAD40D6CBCA58A","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Gray \/ 2XL","offer_id":46125515997345,"sku":"B58990CDB52C4F81B3B2FB41C39C6D9B","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ S","offer_id":46125516030113,"sku":"96526432BF5744A994F6567AC4C34851","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ M","offer_id":46125516062881,"sku":"6948FB647903478A92E5AFEB245BAFA0","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ L","offer_id":46125516095649,"sku":"6C2530A15E754E9FB578149D3BB287FB","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ XL","offer_id":46125516128417,"sku":"3BA616F6F5874081BA9F02F11B92B769","price":29.99,"currency_code":"USD","in_stock":true},{"title":"Khaki \/ 2XL","offer_id":46125516161185,"sku":"7BC5208F5F9843D591C205B0C6FEB32A","price":29.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/5_2.jpg?v=1777576076"},{"product_id":"pet-trend-clothes-cat-dog-clothes-teddy-schnauzer-puppy-thin-section-handsome-cowboy-vest-dogs-clothes-summer-supplies","title":"French Bulldog Denim Vest – Trendy Cowboy Summer Dog Outfit","description":"\u003cdiv id=\"frenchie-calc\"\u003e\n  \u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\n  \u003cbutton class=\"fc-open-btn\" onclick=\"fcToggleModal()\"\u003e\n    📏 Find my Frenchie's size\n  \u003c\/button\u003e\n\n  \u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n    \u003cdiv class=\"fc-modal\"\u003e\n      \u003cbutton class=\"fc-close\" onclick=\"fcToggleModal()\"\u003e×\u003c\/button\u003e\n      \u003ch3\u003eSize calculator\u003c\/h3\u003e\n      \u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\n      \u003cdiv class=\"fc-unit-toggle\"\u003e\n        \u003cbutton class=\"fc-unit-btn active\" onclick=\"fcSetUnit('cm')\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e\n        \u003cbutton class=\"fc-unit-btn\" onclick=\"fcSetUnit('in')\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-grid\"\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n        \u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\n      \u003cbutton class=\"fc-toggle-btn\" onclick=\"fcToggleChart()\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n      \u003cdiv id=\"fc-chart\" style=\"display:none\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n          \u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003eYour Frenchie didn't come to blend in — dress them in denim and let them own every room they walk into. 🤠🐾\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e👖 \u003cstrong\u003eDenim Jean Material\u003c\/strong\u003e: Lightweight and breathable denim keeps your Frenchie cool and stylish all summer\u003c\/li\u003e\n\u003cli\u003e🌬️ \u003cstrong\u003eThin Summer Cut\u003c\/strong\u003e: Sleeveless vest design allows maximum airflow — perfect for hot days\u003c\/li\u003e\n\u003cli\u003e😎 \u003cstrong\u003eCowboy Aesthetic\u003c\/strong\u003e: Bold western-inspired style makes your Frenchie the coolest pup at the park\u003c\/li\u003e\n\u003cli\u003e🔵 \u003cstrong\u003eClassic Blue\u003c\/strong\u003e: Timeless blue denim color that goes with absolutely everything\u003c\/li\u003e\n\u003cli\u003e🐾 \u003cstrong\u003eFrenchie Friendly Fit\u003c\/strong\u003e: Cut to suit the stocky, muscular build of French Bulldogs perfectly\u003c\/li\u003e\n\u003cli\u003e✨ \u003cstrong\u003eTrend Ready\u003c\/strong\u003e: Inspired by high-end pet fashion — because your Frenchie deserves to be iconic\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPT_Image_1_mai_2026_22_19_49.png?v=1777670546\" alt=\"\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"S","offer_id":46179159441569,"sku":"065C6A2DE3AE412C84C3470D7150BEED","price":29.99,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":46179159474337,"sku":"4F494D9FB7F141D8B6255586C160BCB7","price":29.99,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":46179159507105,"sku":"4D164466E1C34A4799A2719C432BC25F","price":29.99,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":46179159539873,"sku":"04611353ABC242DDA58E0183807BFEB8","price":29.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/untitled_ChatGPT_Images_2.0_Edit_2026-05-01_20-42-49_4.jpg?v=1777670545"},{"product_id":"pet-dog-clothing-winter-cotton-dog-vest-jacket","title":"French Bulldog Winter Cotton Vest – Slim Fit \u0026 Minimalist Style","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv id=\"fc-modal-bg\" class=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton id=\"fc-btn-cm\" class=\"fc-unit-btn active\"\u003ecm\u003c\/button\u003e \u003cbutton id=\"fc-btn-in\" class=\"fc-unit-btn\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput min=\"1\" placeholder=\"e.g. 32\" id=\"fc-neck\" type=\"number\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput min=\"1\" placeholder=\"e.g. 54\" id=\"fc-chest\" type=\"number\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput min=\"1\" placeholder=\"e.g. 30\" id=\"fc-back\" type=\"number\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"fc-result\" class=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton id=\"fc-chart-toggle\" class=\"fc-toggle-btn\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv style=\"display: none;\" id=\"fc-chart\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003eSimple, clean and effortlessly chic — because your Frenchie's winter wardrobe deserves a staple they can wear anywhere. 🐾\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧥 \u003cstrong\u003eWarm Cotton Fill\u003c\/strong\u003e: Cozy padded vest keeps your Frenchie snug without the bulk this winter\u003c\/li\u003e\n\u003cli\u003e✂️ \u003cstrong\u003eSlim Fit Cut\u003c\/strong\u003e: Tailored fit hugs your Frenchie's body perfectly — no baggy, no sliding\u003c\/li\u003e\n\u003cli\u003e🔘 \u003cstrong\u003eButton Closure\u003c\/strong\u003e: Easy button-up design makes dressing your Frenchie quick and stress-free\u003c\/li\u003e\n\u003cli\u003e👕 \u003cstrong\u003eSleeveless \u0026amp; Round Neck\u003c\/strong\u003e: Freedom of movement for active Frenchies while keeping the core warm\u003c\/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003e4 Colors\u003c\/strong\u003e: Off White, Pink, Red and Blue — a clean minimalist palette for every mood\u003c\/li\u003e\n\u003cli\u003e🌿 \u003cstrong\u003eMinimalist Style\u003c\/strong\u003e: Solid, no-fuss design that looks polished and pairs with any outfit\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/1.png?v=1777742275\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Off white \/ XS","offer_id":46221772947617,"sku":"DC2EEE4794444372967C032D2D03AEB3","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Off white \/ S","offer_id":46221772980385,"sku":"81485939F927409CB35F30FBDBD9C15F","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Off white \/ M","offer_id":46221773013153,"sku":"00CB49C715324B4FBFA70D3039B14241","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Off white \/ L","offer_id":46221773045921,"sku":"205F43A3474A437FB857B7E31D37A6F5","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Off white \/ XL","offer_id":46221773078689,"sku":"78181861C1D748EE9167663574F91024","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Off white \/ XXL","offer_id":46221773111457,"sku":"EF02D960D43B4847A3885A5B9CBF831D","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XS","offer_id":46221773144225,"sku":"8921820E7312447288324614E369AB5E","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ S","offer_id":46221773176993,"sku":"BE7C6166E036495482BBD10771887B5D","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ M","offer_id":46221773209761,"sku":"7F28FF6DF31A491A8C107AA15EA11ACF","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ L","offer_id":46221773242529,"sku":"C000945E4AB44985B1A9767E4EE6B3DA","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XL","offer_id":46221773275297,"sku":"1B52DA0B0CC24DB684ACC80C4868A445","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XXL","offer_id":46221773308065,"sku":"A5AC2E8D474B4D80BFD351F7DE9D178B","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ XS","offer_id":46221773340833,"sku":"4A00C3E15A494827BC1DA93BAD09A458","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ S","offer_id":46221773373601,"sku":"64EFD58EC81347519CB79F8B7338FF9C","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ M","offer_id":46221773406369,"sku":"0256D49A70C0450A9E5DE47FD3275BD6","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ L","offer_id":46221773439137,"sku":"71858392FFCD42BABB078E271F8FF777","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ XL","offer_id":46221773471905,"sku":"80F0A23455D44A778079FC32FBE92150","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ XXL","offer_id":46221773504673,"sku":"1BF8DDAA279443D5913DD9104DBFB71B","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ XS","offer_id":46221773537441,"sku":"5146BDD99BC64215AB372355FAEC4DB1","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ S","offer_id":46221773570209,"sku":"401EECB7C64B49B6B1A1544AD855EEAA","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ M","offer_id":46221773602977,"sku":"75E6858BE4884DA694E95EC16C67FFCB","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ L","offer_id":46221773635745,"sku":"FA3D6CD852B048CBB51C82DD3446B1E4","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ XL","offer_id":46221773668513,"sku":"8761AC962BFA42F49F7684291917F050","price":20.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ XXL","offer_id":46221773701281,"sku":"D5BA3956329743D393E4AF01F85BC095","price":20.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Gemini_Generated_Image_k7dg90k7dg90k7dg_1.jpg?v=1777742080"},{"product_id":"cotton","title":"French Bulldog Hooded Sweatshirt – Soft Fleece \u0026 Cozy Fit - Red","description":"\u003cdiv id=\"frenchie-calc\"\u003e\n  \u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\n  \u003cbutton class=\"fc-open-btn\" onclick=\"fcToggleModal()\"\u003e\n    📏 Find my Frenchie's size\n  \u003c\/button\u003e\n\n  \u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n    \u003cdiv class=\"fc-modal\"\u003e\n      \u003cbutton class=\"fc-close\" onclick=\"fcToggleModal()\"\u003e×\u003c\/button\u003e\n      \u003ch3\u003eSize calculator\u003c\/h3\u003e\n      \u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\n      \u003cdiv class=\"fc-unit-toggle\"\u003e\n        \u003cbutton class=\"fc-unit-btn active\" onclick=\"fcSetUnit('cm')\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e\n        \u003cbutton class=\"fc-unit-btn\" onclick=\"fcSetUnit('in')\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-grid\"\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n        \u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\n      \u003cbutton class=\"fc-toggle-btn\" onclick=\"fcToggleChart()\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n      \u003cdiv id=\"fc-chart\" style=\"display:none\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n          \u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46226553208993,"sku":"ADS-3AHPDG01-NN1FZ-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46226553241761,"sku":"ADS-3AHPDG01-NN1FZ-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46226553274529,"sku":"ADS-3AHPDG01-NN1FZ-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46226553307297,"sku":"ADS-3AHPDG01-NN1FZ-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46226553340065,"sku":"ADS-3AHPDG01-NN1FZ-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46226553372833,"sku":"ADS-3AHPDG01-NN1FZ-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Gemini_Generated_Image_w1m6uuw1m6uuw1m6_1_2.jpg?v=1777750548"},{"product_id":"coat","title":"French Bulldog Embroidered Dog Face Coat – Warm Fashion Shirt","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cp\u003eTurn heads at the dog park with this embroidered dog face coat that makes your Frenchie look like a whole fashion statement. 🐶✨\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧵 \u003cstrong\u003eEmbroidered Dog Face\u003c\/strong\u003e: Unique dog face embroidery detail that makes every Frenchie stand out instantly\u003c\/li\u003e\n\u003cli\u003e🔥 \u003cstrong\u003eWarm Polyester Fabric\u003c\/strong\u003e: Cozy and insulating — keeps your Frenchie comfortable in cooler weather\u003c\/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003e4 Bold Colors\u003c\/strong\u003e: Available in Green, Black, Orange and Pink — a color for every Frenchie personality\u003c\/li\u003e\n\u003cli\u003e📏 \u003cstrong\u003e7 Sizes\u003c\/strong\u003e: XS to 3XL — fits French Bulldogs of all shapes, from slim pups to chunky legends\u003c\/li\u003e\n\u003cli\u003e👕 \u003cstrong\u003eFashion Coat Style\u003c\/strong\u003e: Structured coat design that looks polished and stylish for any occasion\u003c\/li\u003e\n\u003cli\u003e🐾 \u003cstrong\u003eFrenchie Approved Fit\u003c\/strong\u003e: Cut to perfectly suit the stocky, muscular build of French Bulldogs\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPT_Image_3_mai_2026_12_30_10.png?v=1777807862\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Green \/ XS","offer_id":46240408043681,"sku":"50E3F6B319CD4784A686420E3F072C5E","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ S","offer_id":46240408076449,"sku":"A54054204EE74D08A00ACA1262D2A96B","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ M","offer_id":46240408109217,"sku":"2A7A0424A9F14C07B4FE814D22F45CAB","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ L","offer_id":46240408141985,"sku":"9E179837AA6146CDAA107596B2EB5CE2","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ XL","offer_id":46240408174753,"sku":"2663CDC8C95948748334369EFA2B3FE7","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ XXL","offer_id":46240408207521,"sku":"7740C0702E2E45A78ED2CDD43DAFA79E","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Green \/ 3XL","offer_id":46240408240289,"sku":"D36E368B75AF4CFF8A3A432E579C436C","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XS","offer_id":46240408273057,"sku":"E172A9E71BC0400C858226DF771E12EE","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ S","offer_id":46240408305825,"sku":"46DBCE8C69A8472FAD5928263D695750","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ M","offer_id":46240408338593,"sku":"AC460A8187D54A84AA51B5A8F6ED39D1","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ L","offer_id":46240408371361,"sku":"74005C77C8DD4B2EB770D45E56167B42","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XL","offer_id":46240408404129,"sku":"E31C18EF986D45D8A5ED75D62C1E9B4D","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XXL","offer_id":46240408436897,"sku":"5315F10DE99D44A1840766F96B809FCF","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ 3XL","offer_id":46240408469665,"sku":"8E5A04690EBD414AB0B10743BD4B13E0","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Orange \/ XS","offer_id":46240408502433,"sku":"5156C5E17C424C73B4112B755ECA5B34","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Orange \/ S","offer_id":46240408535201,"sku":"EE17804DDC01499E923E9D9782580DB8","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Orange \/ M","offer_id":46240408567969,"sku":"EE15FBD97FB8432785B71DF6C5730EC6","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Orange \/ L","offer_id":46240408600737,"sku":"BB9F232BC0724B3BB2DFCBE07B6DA1F5","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Orange \/ XL","offer_id":46240408633505,"sku":"D204F4E010CB44EF9A1313E62AE6308E","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Orange \/ XXL","offer_id":46240408666273,"sku":"084C1FC7F7CC4A75BCBCCD60B4BD627D","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Orange \/ 3XL","offer_id":46240408699041,"sku":"7B09ADFE284B45CCAD1EC7BAD997EB2B","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XS","offer_id":46240408731809,"sku":"4B874C304F4044D0AAA32BF48303E9B2","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ S","offer_id":46240408764577,"sku":"F06D5217A97B4E188C4A13BD3498BDD0","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ M","offer_id":46240408797345,"sku":"1191810B76A44294874E98F4FAFB5677","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ L","offer_id":46240408830113,"sku":"1CB78431C0B44EACABEBE7FD1CFF13B8","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XL","offer_id":46240408862881,"sku":"34C2B9D6E70D4B9DB5A4659B0639AF34","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XXL","offer_id":46240408895649,"sku":"641807F34A194CA4B3BFCC99BC419E9D","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ 3XL","offer_id":46240408928417,"sku":"C1C0F8CC7ADF4EBB80BECB6088DE1DE2","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Gemini_Generated_Image_lmawy4lmawy4lmaw_1.jpg?v=1777806574"},{"product_id":"french-bulldog-luxury-winter-jacket-stylish-polyester-dog-coat","title":"French Bulldog Luxury Winter Jacket – Stylish Polyester Dog Coat","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv id=\"fc-modal-bg\" class=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton id=\"fc-btn-cm\" class=\"fc-unit-btn active\"\u003ecm\u003c\/button\u003e \u003cbutton id=\"fc-btn-in\" class=\"fc-unit-btn\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput min=\"1\" placeholder=\"e.g. 32\" id=\"fc-neck\" type=\"number\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput min=\"1\" placeholder=\"e.g. 54\" id=\"fc-chest\" type=\"number\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput min=\"1\" placeholder=\"e.g. 30\" id=\"fc-back\" type=\"number\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"fc-result\" class=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton id=\"fc-chart-toggle\" class=\"fc-toggle-btn\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv style=\"display: none;\" id=\"fc-chart\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003eYour Frenchie deserves luxury — this designer winter jacket is the chicest thing they'll ever wear. 🐾👑\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e👑 \u003cstrong\u003eLuxury Designer Style\u003c\/strong\u003e: Classic high-end aesthetic that makes your Frenchie look like a true fashion icon\u003c\/li\u003e\n\u003cli\u003e🌿 \u003cstrong\u003eEco-Friendly Polyester\u003c\/strong\u003e: Durable, lightweight and planet-conscious material built for everyday wear\u003c\/li\u003e\n\u003cli\u003e🌦️ \u003cstrong\u003eAll Season Versatile\u003c\/strong\u003e: Designed for year-round use — perfect for winter walks and holiday outings\u003c\/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003e4 Elegant Colors\u003c\/strong\u003e: Available in Blue, Pink, Beige and Orange — soft, luxe tones for every Frenchie\u003c\/li\u003e\n\u003cli\u003e📏 \u003cstrong\u003eXS to 3XL\u003c\/strong\u003e: Wide size range for a perfect fit on every French Bulldog — small pups to chunky adults\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Hand wash or machine wash — low maintenance luxury that stays fresh and beautiful\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPT_Image_May_5_2026_10_16_53_PM.png?v=1778015859\" alt=\"\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Blue","offer_id":46334941167777,"sku":null,"price":36.99,"currency_code":"USD","in_stock":true},{"title":"Beige","offer_id":46334941200545,"sku":null,"price":36.99,"currency_code":"USD","in_stock":true},{"title":"Orange","offer_id":46334941233313,"sku":null,"price":36.99,"currency_code":"USD","in_stock":true},{"title":"Pink","offer_id":46334941266081,"sku":null,"price":36.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/variant_imageH97d19c1422ec4aac9c7090a84a969675Z_5.jpg?v=1778014016"},{"product_id":"pet-clothes","title":"French Bulldog Reflective Winter Coat – Waterproof Padded Jacket","description":"\u003cdiv id=\"frenchie-calc\"\u003e\n  \u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\n  \u003cbutton class=\"fc-open-btn\" onclick=\"fcToggleModal()\"\u003e\n    📏 Find my Frenchie's size\n  \u003c\/button\u003e\n\n  \u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n    \u003cdiv class=\"fc-modal\"\u003e\n      \u003cbutton class=\"fc-close\" onclick=\"fcToggleModal()\"\u003e×\u003c\/button\u003e\n      \u003ch3\u003eSize calculator\u003c\/h3\u003e\n      \u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\n      \u003cdiv class=\"fc-unit-toggle\"\u003e\n        \u003cbutton class=\"fc-unit-btn active\" onclick=\"fcSetUnit('cm')\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e\n        \u003cbutton class=\"fc-unit-btn\" onclick=\"fcSetUnit('in')\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-grid\"\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n        \u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\n      \u003cbutton class=\"fc-toggle-btn\" onclick=\"fcToggleChart()\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n      \u003cdiv id=\"fc-chart\" style=\"display:none\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n          \u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003eRain, wind or freezing cold — your Frenchie stays warm, dry and safe no matter what the weather throws at them. 🧥🐾 \u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e☔ \u003cstrong\u003eWaterproof Polyester\u003c\/strong\u003e: Prevents rainwater from seeping in — keeps your Frenchie dry on every outdoor adventure\u003c\/li\u003e\n\u003cli\u003e🔥 \u003cstrong\u003e160g PP Cotton Fill\u003c\/strong\u003e: Thick, soft padding that locks in warmth and keeps your Frenchie cozy in cold weather\u003c\/li\u003e\n\u003cli\u003e🌟 \u003cstrong\u003eReflective Night Safety\u003c\/strong\u003e: Bright reflective strips make your Frenchie visible and safe during night walks\u003c\/li\u003e\n\u003cli\u003e🔒 \u003cstrong\u003eElastic Belly \u0026amp; Cuffs\u003c\/strong\u003e: Snug elastic design hugs your Frenchie's body perfectly — no air leakage, no cold drafts\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eReinforced Towing Ring\u003c\/strong\u003e: Heavy-duty leash ring with reinforced stitching — strong enough for the most energetic Frenchie\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003eNeck Shrink Design\u003c\/strong\u003e: Retractable collar keeps wind out and warmth in during outdoor walks and travel\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPT_Image_7_mai_2026_21_32_40.png?v=1778185999\" alt=\"\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Grey Orange \/ XL","offer_id":46384517251233,"sku":"31AA3461FB524690928A2DA1E0E418DF","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Grey Orange \/ 2 XL","offer_id":46384517284001,"sku":"8B53B18E6098472D95260F93DD5B02C5","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Grey Orange \/ 3 XL","offer_id":46384517316769,"sku":"5F9B22423E594687A3B010BE710A7733","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Grey Orange \/ 4 XL","offer_id":46384517349537,"sku":"55A940A0F4BC4F2CA31CEA364C3F137B","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Grey Orange \/ 5 XL","offer_id":46384517382305,"sku":"7BC375471CFD45878292D7C63098FDD5","price":39.99,"currency_code":"USD","in_stock":true},{"title":"Grey Orange \/ 6 XL","offer_id":46384517415073,"sku":"AC7A91F3FA714E4C8F102080BEB8DB65","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Gemini_Generated_Image_lsuy6jlsuy6jlsuy_1.jpg?v=1778185822"},{"product_id":"jeans","title":"French Bulldog Denim Overalls – Stretchy Washed Jeans Jumpsuit","description":"\u003cdiv id=\"frenchie-calc\"\u003e\n  \u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\n  \u003cbutton class=\"fc-open-btn\" onclick=\"fcToggleModal()\"\u003e\n    📏 Find my Frenchie's size\n  \u003c\/button\u003e\n\n  \u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n    \u003cdiv class=\"fc-modal\"\u003e\n      \u003cbutton class=\"fc-close\" onclick=\"fcToggleModal()\"\u003e×\u003c\/button\u003e\n      \u003ch3\u003eSize calculator\u003c\/h3\u003e\n      \u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\n      \u003cdiv class=\"fc-unit-toggle\"\u003e\n        \u003cbutton class=\"fc-unit-btn active\" onclick=\"fcSetUnit('cm')\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e\n        \u003cbutton class=\"fc-unit-btn\" onclick=\"fcSetUnit('in')\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-grid\"\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\" oninput=\"fcCalc()\"\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n        \u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\n      \u003cbutton class=\"fc-toggle-btn\" onclick=\"fcToggleChart()\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n      \u003cdiv id=\"fc-chart\" style=\"display:none\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n          \u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003eYour Frenchie just became the most stylish dog on the block — denim overalls that are as comfy as they are cool. 👖🐾\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e👖 \u003cstrong\u003eWashed Denim Style\u003c\/strong\u003e: Casual worn-in denim look that gives your Frenchie instant streetwear credibility\u003c\/li\u003e\n\u003cli\u003e🤸 \u003cstrong\u003eStretchy \u0026amp; Flexible\u003c\/strong\u003e: Elastic denim fabric moves with your Frenchie — no restriction, full comfort all day\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003eOverall Jumpsuit Cut\u003c\/strong\u003e: Full coverage one-piece design that fits the stocky Frenchie build perfectly\u003c\/li\u003e\n\u003cli\u003e🌀 \u003cstrong\u003eSoft \u0026amp; Comfortable\u003c\/strong\u003e: Lightweight denim feel that won't irritate your Frenchie's skin during long wear\u003c\/li\u003e\n\u003cli\u003e🔵 \u003cstrong\u003eClassic Denim Blue\u003c\/strong\u003e: Timeless washed blue color that pairs with absolutely any look or occasion\u003c\/li\u003e\n\u003cli\u003e📏 \u003cstrong\u003e6 Sizes\u003c\/strong\u003e: S to XXL — a perfect fit for every French Bulldog from lean pups to chunky adults\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPT_Image_10_mai_2026_11_58_28.png?v=1778410739\" alt=\"\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Denim Blue \/ S","offer_id":46419640156321,"sku":"23026F0DEB5E45B6AAD055FE643372B8","price":28.99,"currency_code":"USD","in_stock":true},{"title":"Denim Blue \/ SM","offer_id":46419640189089,"sku":"EBCBB64D2DDE49F589E55AA219AEA2D4","price":28.99,"currency_code":"USD","in_stock":true},{"title":"Denim Blue \/ M","offer_id":46419640221857,"sku":"04B4008E8A514F04AF7E40E6D42A13EA","price":28.99,"currency_code":"USD","in_stock":true},{"title":"Denim Blue \/ L","offer_id":46419640254625,"sku":"B259AD7FC797445DA11995F4845B89B1","price":28.99,"currency_code":"USD","in_stock":true},{"title":"Denim Blue \/ XL","offer_id":46419640287393,"sku":"65D734ABBE574E81A87B221C5D313E8F","price":28.99,"currency_code":"USD","in_stock":true},{"title":"Denim Blue \/ XXL","offer_id":46419640320161,"sku":"E9840E32B10B4E1B929886F91F0E5895","price":28.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Gemini_Generated_Image_acgedyacgedyacge_3.jpg?v=1778410375"},{"product_id":"hoodie","title":"French Bulldog Hooded Sweatshirt – Soft Fleece \u0026 Cozy Fit - Green","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46419793215649,"sku":"ADS-3AHPDG01-NPK7M-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46419793248417,"sku":"ADS-3AHPDG01-NPK7M-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46419793281185,"sku":"ADS-3AHPDG01-NPK7M-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46419793313953,"sku":"ADS-3AHPDG01-NPK7M-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46419793346721,"sku":"ADS-3AHPDG01-NPK7M-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46419793379489,"sku":"ADS-3AHPDG01-NPK7M-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Gemini_Generated_Image_fl7i77fl7i77fl7i.jpg?v=1778422412"},{"product_id":"hoodie-20","title":"French Bulldog Hooded Sweatshirt – Soft Fleece Cotton Hoodie","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46564774281377,"sku":"ADS-3AHPDG01-NZ77E-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46564774314145,"sku":"ADS-3AHPDG01-NZ77E-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46564774346913,"sku":"ADS-3AHPDG01-NZ77E-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46564774379681,"sku":"ADS-3AHPDG01-NZ77E-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46564774412449,"sku":"ADS-3AHPDG01-NZ77E-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46564774445217,"sku":"ADS-3AHPDG01-NZ77E-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Gemini_Generated_Image_4ccole4ccole4cco.jpg?v=1782050019"},{"product_id":"hoodie-1","title":"French Bulldog Hooded Sweatshirt – Soft Fleece \u0026 Cozy Fit","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46564775067809,"sku":"ADS-3AHPDG01-NZ77Q-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46564775100577,"sku":"ADS-3AHPDG01-NZ77Q-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46564775133345,"sku":"ADS-3AHPDG01-NZ77Q-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46564775166113,"sku":"ADS-3AHPDG01-NZ77Q-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46564775198881,"sku":"ADS-3AHPDG01-NZ77Q-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46564775231649,"sku":"ADS-3AHPDG01-NZ77Q-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/1_3.jpg?v=1782050581"},{"product_id":"hoodie-2","title":"French Bulldog Hoodie – Soft Fleece Comfort Fit","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46564776116385,"sku":"ADS-3AHPDG01-NZ77X-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46564776149153,"sku":"ADS-3AHPDG01-NZ77X-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46564776181921,"sku":"ADS-3AHPDG01-NZ77X-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46564776214689,"sku":"ADS-3AHPDG01-NZ77X-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46564776247457,"sku":"ADS-3AHPDG01-NZ77X-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46564776280225,"sku":"ADS-3AHPDG01-NZ77X-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/1_5.jpg?v=1782051081"},{"product_id":"hoodie-3","title":"French Bulldog Hooded Sweatshirt – Warm \u0026 Cozy Fleece","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46564776476833,"sku":"ADS-3AHPDG01-NZ782-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46564776509601,"sku":"ADS-3AHPDG01-NZ782-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46564776542369,"sku":"ADS-3AHPDG01-NZ782-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46564776575137,"sku":"ADS-3AHPDG01-NZ782-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46564776607905,"sku":"ADS-3AHPDG01-NZ782-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46564776640673,"sku":"ADS-3AHPDG01-NZ782-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPT_Image_21_juin_2026_20_11_57.jpg?v=1782069997"},{"product_id":"hoodie-4","title":"French Bulldog Hoodie – Plush Fleece Everyday Comfort","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46564781195425,"sku":"ADS-3AHPDG01-NZ789-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46564781228193,"sku":"ADS-3AHPDG01-NZ789-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46564781260961,"sku":"ADS-3AHPDG01-NZ789-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46564781293729,"sku":"ADS-3AHPDG01-NZ789-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46564781326497,"sku":"ADS-3AHPDG01-NZ789-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46564781359265,"sku":"ADS-3AHPDG01-NZ789-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/2_1.jpg?v=1782070500"},{"product_id":"hoodie-5","title":"French Bulldog Sweatshirt – Soft Fleece Pullover Hoodie","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46564783751329,"sku":"ADS-3AHPDG01-NZ78F-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46564783784097,"sku":"ADS-3AHPDG01-NZ78F-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46564783816865,"sku":"ADS-3AHPDG01-NZ78F-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46564783849633,"sku":"ADS-3AHPDG01-NZ78F-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46564783882401,"sku":"ADS-3AHPDG01-NZ78F-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46564783915169,"sku":"ADS-3AHPDG01-NZ78F-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/2_5.jpg?v=1782071050"},{"product_id":"hoodie-6","title":"French Bulldog Cotton Hoodie – Cozy Dog Sweatshirt for Small Dogs","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46585618563233,"sku":"ADS-3AHPDG01-NZDPW-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46585618596001,"sku":"ADS-3AHPDG01-NZDPW-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46585618628769,"sku":"ADS-3AHPDG01-NZDPW-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46585618661537,"sku":"ADS-3AHPDG01-NZDPW-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46585618694305,"sku":"ADS-3AHPDG01-NZDPW-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46585618727073,"sku":"ADS-3AHPDG01-NZDPW-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/3_8.jpg?v=1782155000"},{"product_id":"hoodie-7","title":"French Bulldog Dog Hoodie – Soft Cotton Pullover for Frenchies","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46585628688545,"sku":"ADS-3AHPDG01-NZDR7-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46585628721313,"sku":"ADS-3AHPDG01-NZDR7-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46585628754081,"sku":"ADS-3AHPDG01-NZDR7-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46585628786849,"sku":"ADS-3AHPDG01-NZDR7-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46585628819617,"sku":"ADS-3AHPDG01-NZDR7-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46585628852385,"sku":"ADS-3AHPDG01-NZDR7-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/3_6.jpg?v=1782154333"},{"product_id":"hoodie-8","title":"French Bulldog Pet Hoodie – Comfortable Cotton Dog Apparel","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46585630326945,"sku":"ADS-3AHPDG01-NZDRV-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46585630359713,"sku":"ADS-3AHPDG01-NZDRV-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46585630392481,"sku":"ADS-3AHPDG01-NZDRV-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46585630425249,"sku":"ADS-3AHPDG01-NZDRV-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46585630458017,"sku":"ADS-3AHPDG01-NZDRV-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46585630490785,"sku":"ADS-3AHPDG01-NZDRV-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/3_4.jpg?v=1782153775"},{"product_id":"hoodie-9","title":"French Bulldog Dog Sweatshirt – Soft Cotton Hoodie for Frenchies","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46585637601441,"sku":"ADS-3AHPDG01-NZDT5-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46585637634209,"sku":"ADS-3AHPDG01-NZDT5-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46585637666977,"sku":"ADS-3AHPDG01-NZDT5-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46585637699745,"sku":"ADS-3AHPDG01-NZDT5-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46585637732513,"sku":"ADS-3AHPDG01-NZDT5-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46585637765281,"sku":"ADS-3AHPDG01-NZDT5-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/3_3.jpg?v=1782153281"},{"product_id":"hoodie-10","title":"French Bulldog Hoodie – Soft Cotton Sweatshirt for Frenchie Lovers","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46618565935265,"sku":"ADS-3AHPDG01-P18KY-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46618565968033,"sku":"ADS-3AHPDG01-P18KY-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46618566000801,"sku":"ADS-3AHPDG01-P18KY-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46618566033569,"sku":"ADS-3AHPDG01-P18KY-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46618566066337,"sku":"ADS-3AHPDG01-P18KY-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46618566099105,"sku":"ADS-3AHPDG01-P18KY-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/A_2.jpg?v=1782505957"},{"product_id":"hoodie-11","title":"Frenchie Dog Hoodie – Cozy Cotton Sweatshirt for French Bulldogs","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46618569179297,"sku":"ADS-3AHPDG01-P18LZ-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46618569212065,"sku":"ADS-3AHPDG01-P18LZ-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46618569244833,"sku":"ADS-3AHPDG01-P18LZ-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46618569277601,"sku":"ADS-3AHPDG01-P18LZ-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46618569310369,"sku":"ADS-3AHPDG01-P18LZ-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46618569343137,"sku":"ADS-3AHPDG01-P18LZ-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPT_Image_26_juin_2026_21_35_09.jpg?v=1782506290"},{"product_id":"hoodie-12","title":"Frenchie Hoodie – Comfortable Cotton Sweatshirt for Dog Lovers","description":"\u003cstyle\u003e\n    #frenchie-calc{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;max-width:600px;margin:1.5rem auto;color:#1a1a1a}\n    #frenchie-calc .fc-open-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;background:#FFA02E;color:#003049;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}\n    #frenchie-calc .fc-open-btn:hover{opacity:.85}\n    #frenchie-calc .fc-modal-bg{display:none;margin-top:16px}\n    #frenchie-calc .fc-modal-bg.open{display:block}\n    #frenchie-calc .fc-modal{background:#fff;border:1px solid #e0e0e0;border-radius:14px;padding:24px;position:relative}\n    #frenchie-calc .fc-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:20px;cursor:pointer;color:#888;line-height:1;padding:0}\n    #frenchie-calc h3{font-size:16px;font-weight:600;margin:0 0 4px}\n    #frenchie-calc .fc-sub{font-size:13px;color:#666;margin:0 0 18px}\n    #frenchie-calc .fc-unit-toggle{display:flex;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px}\n    #frenchie-calc .fc-unit-btn{padding:6px 18px;font-size:13px;cursor:pointer;background:transparent;border:none;color:#666;font-family:inherit}\n    #frenchie-calc .fc-unit-btn.active{background:#f0f0f0;color:#1a1a1a;font-weight:600}\n    #frenchie-calc .fc-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}\n    #frenchie-calc .fc-field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}\n    #frenchie-calc .fc-field input{width:100%;box-sizing:border-box;padding:8px 11px;border:1px solid #ddd;border-radius:8px;font-size:14px;font-family:inherit;outline:none}\n    #frenchie-calc .fc-field input:focus{border-color:#FFA02E}\n    #frenchie-calc .fc-result{border:1px solid #e0e0e0;border-radius:10px;padding:16px;margin-bottom:14px;background:#fafafa;min-height:70px}\n    #frenchie-calc .fc-size-big{font-size:48px;font-weight:700;line-height:1;color:#003049}\n    #frenchie-calc .fc-result-note{font-size:13px;color:#444;margin-top:8px;line-height:1.6}\n    #frenchie-calc .fc-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}\n    #frenchie-calc .fc-pill{padding:3px 10px;border-radius:20px;font-size:12px;border:1px solid #ddd;color:#888;background:transparent;font-weight:500}\n    #frenchie-calc .fc-pill.active{background:#FFA02E;color:#003049;border-color:#FFA02E;font-weight:700}\n    #frenchie-calc .fc-tip{border-left:2px solid #FFA02E;padding:9px 12px;font-size:12px;color:#555;line-height:1.6;margin-bottom:12px}\n    #frenchie-calc .fc-toggle-btn{font-size:12px;color:#555;cursor:pointer;background:none;border:none;padding:0;font-family:inherit;text-decoration:underline;margin-bottom:8px}\n    #frenchie-calc table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}\n    #frenchie-calc table th{text-align:left;padding:7px 8px;color:#666;font-weight:600;border-bottom:1px solid #e0e0e0}\n    #frenchie-calc table td{padding:7px 8px;border-bottom:1px solid #f0f0f0;color:#1a1a1a}\n    #frenchie-calc table tr.fc-hl td{background:#003049;color:#fff;font-weight:600}\n    #frenchie-calc .fc-placeholder{font-size:13px;color:#888;padding:8px 0}\n    @media(max-width:460px){#frenchie-calc .fc-grid{grid-template-columns:1fr}}\n  \u003c\/style\u003e\n\u003cdiv id=\"frenchie-calc\"\u003e\n\u003cbutton class=\"fc-open-btn\"\u003e 📏 Find my Frenchie's size \u003c\/button\u003e\n\u003cdiv class=\"fc-modal-bg\" id=\"fc-modal-bg\"\u003e\n\u003cdiv class=\"fc-modal\"\u003e\n\u003cbutton class=\"fc-close\"\u003e×\u003c\/button\u003e\n\u003ch3\u003eSize calculator\u003c\/h3\u003e\n\u003cp class=\"fc-sub\"\u003eEnter your dog's measurements for an instant recommendation.\u003c\/p\u003e\n\u003cdiv class=\"fc-unit-toggle\"\u003e\n\u003cbutton class=\"fc-unit-btn active\" id=\"fc-btn-cm\"\u003ecm\u003c\/button\u003e \u003cbutton class=\"fc-unit-btn\" id=\"fc-btn-in\"\u003einches\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-grid\"\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-neck\"\u003eNeck (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-neck\" placeholder=\"e.g. 32\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-chest\"\u003eChest (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-chest\" placeholder=\"e.g. 54\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-field\"\u003e\n\u003clabel id=\"fc-lbl-back\"\u003eBack (cm)\u003c\/label\u003e\u003cinput type=\"number\" id=\"fc-back\" placeholder=\"e.g. 30\" min=\"1\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-result\" id=\"fc-result\"\u003e\n\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fc-tip\"\u003eFrench bulldogs have a wide chest — always size up if between sizes. Chest measurement is the most important.\u003c\/div\u003e\n\u003cbutton class=\"fc-toggle-btn\" id=\"fc-chart-toggle\"\u003eShow full size chart ↓\u003c\/button\u003e\n\u003cdiv id=\"fc-chart\" style=\"display: none;\"\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth id=\"fc-th-neck\"\u003eNeck (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-chest\"\u003eChest (cm)\u003c\/th\u003e\n\u003cth id=\"fc-th-back\"\u003eBack (cm)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"fc-tbody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function(){\n      var SIZES=[\n        {name:'XXS',neck:[22,26],chest:[32,38],back:[18,22]},\n        {name:'XS',neck:[26,30],chest:[38,44],back:[22,26]},\n        {name:'S',neck:[30,34],chest:[44,50],back:[26,30]},\n        {name:'M',neck:[34,38],chest:[50,57],back:[30,35]},\n        {name:'L',neck:[38,43],chest:[57,64],back:[35,40]},\n        {name:'XL',neck:[43,49],chest:[64,72],back:[40,46]},\n        {name:'XXL',neck:[49,55],chest:[72,80],back:[46,52]},\n        {name:'3XL',neck:[55,62],chest:[80,90],back:[52,58]}\n      ];\n      var unit='cm';\n\n      window.fcToggleModal=function(){\n        document.getElementById('fc-modal-bg').classList.toggle('open');\n      };\n\n      window.fcSetUnit=function(u){\n        unit=u;\n        document.getElementById('fc-btn-cm').className='fc-unit-btn'+(u==='cm'?' active':'');\n        document.getElementById('fc-btn-in').className='fc-unit-btn'+(u==='in'?' active':'');\n        var s=u==='cm'?'cm':'in';\n        document.getElementById('fc-lbl-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-lbl-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-lbl-back').textContent='Back ('+s+')';\n        document.getElementById('fc-th-neck').textContent='Neck ('+s+')';\n        document.getElementById('fc-th-chest').textContent='Chest ('+s+')';\n        document.getElementById('fc-th-back').textContent='Back ('+s+')';\n        document.getElementById('fc-neck').value='';\n        document.getElementById('fc-chest').value='';\n        document.getElementById('fc-back').value='';\n        fcRenderChart(-1);fcCalc();\n      };\n\n      function toCm(v){return unit==='in'?v*2.54:v;}\n      function fromCm(v){return unit==='in'?(v\/2.54).toFixed(1):v;}\n\n      window.fcCalc=function(){\n        var n=parseFloat(document.getElementById('fc-neck').value);\n        var c=parseFloat(document.getElementById('fc-chest').value);\n        var b=parseFloat(document.getElementById('fc-back').value);\n        var result=document.getElementById('fc-result');\n        if([n,c,b].filter(function(x){return!isNaN(x)\u0026\u0026x\u003e0;}).length===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eEnter measurements above to get your size.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var ncm=isNaN(n)?null:toCm(n),ccm=isNaN(c)?null:toCm(c),bcm=isNaN(b)?null:toCm(b);\n        var best=null,bestScore=-1;\n        for(var i=0;i\u003cSIZES.length;i++){\n          var s=SIZES[i],pts=0;\n          if(ncm!==null\u0026\u0026ncm\u003e=s.neck[0]\u0026\u0026ncm\u003cs.neck[1])pts+=1;\n          if(ccm!==null\u0026\u0026ccm\u003e=s.chest[0]\u0026\u0026ccm\u003cs.chest[1])pts+=2;\n          if(bcm!==null\u0026\u0026bcm\u003e=s.back[0]\u0026\u0026bcm\u003cs.back[1])pts+=1;\n          if(pts\u003ebestScore){bestScore=pts;best=i;}\n        }\n        if(bestScore===0){\n          result.innerHTML='\u003cdiv class=\"fc-placeholder\"\u003eCould not match — please check measurements or contact us.\u003c\/div\u003e';\n          fcRenderChart(-1);return;\n        }\n        var sz=SIZES[best];\n        var nextName=best\u003cSIZES.length-1?SIZES[best+1].name:null;\n        var note=(ccm!==null\u0026\u0026ccm\u003e=sz.chest[1]-2\u0026\u0026nextName)?'Chest is near the upper limit — consider \u003cstrong\u003e'+nextName+'\u003c\/strong\u003e for a roomier fit.':'This size should fit your Frenchie well.';\n        var pills=SIZES.map(function(s){return'\u003cdiv class=\"fc-pill'+(s.name===sz.name?' active':'')+'\"\u003e'+ s.name+'\u003c\/div\u003e';}).join('');\n        result.innerHTML='\u003cdiv style=\"display:flex;align-items:flex-end;gap:10px;margin-bottom:6px\"\u003e\u003cdiv class=\"fc-size-big\"\u003e'+sz.name+'\u003c\/div\u003e\u003cdiv style=\"font-size:13px;color:#666;padding-bottom:8px\"\u003erecommended\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"fc-result-note\"\u003e'+note+'\u003c\/div\u003e\u003cdiv class=\"fc-pills\"\u003e'+pills+'\u003c\/div\u003e';\n        fcRenderChart(best);\n      };\n\n      function fcRenderChart(activeIdx){\n        document.getElementById('fc-tbody').innerHTML=SIZES.map(function(s,i){\n          var cls=i===activeIdx?' class=\"fc-hl\"':'';\n          return'\u003ctr'+cls+'\u003e\u003ctd\u003e'+s.name+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.neck[0])+' – '+fromCm(s.neck[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.chest[0])+' – '+fromCm(s.chest[1])+'\u003c\/td\u003e\u003ctd\u003e'+fromCm(s.back[0])+' – '+fromCm(s.back[1])+'\u003c\/td\u003e\u003c\/tr\u003e';\n        }).join('');\n      }\n\n      window.fcToggleChart=function(){\n        var chart=document.getElementById('fc-chart'),btn=document.getElementById('fc-chart-toggle');\n        if(chart.style.display==='none'){chart.style.display='block';btn.textContent='Hide size chart ↑';}\n        else{chart.style.display='none';btn.textContent='Show full size chart ↓';}\n      };\n\n      fcRenderChart(-1);\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan style=\"font-family: helvetica, arial, sans-serif; font-size: 16px;\"\u003eThe hoodie your Frenchie never knew they needed — soft, warm and stylish enough to break the internet. 🐾🔥\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🧶 \u003cstrong\u003e100% Cotton Fleece\u003c\/strong\u003e: Soft knit outer with micro fleece inner — warm, cozy and gentle on skin\u003c\/li\u003e\n\u003cli\u003e🎽 \u003cstrong\u003ePerfect Body Fit\u003c\/strong\u003e: Short front, long back cut designed to follow your Frenchie's natural shape\u003c\/li\u003e\n\u003cli\u003e🪢 \u003cstrong\u003eAdjustable Drawstring Hood\u003c\/strong\u003e: Classic hoodie look with a functional drawstring for a snug fit\u003c\/li\u003e\n\u003cli\u003e🧤 \u003cstrong\u003eCuff Hem Design\u003c\/strong\u003e: Fitted cuffs keep the hoodie in place during walks, play and photoshoots\u003c\/li\u003e\n\u003cli\u003e🧼 \u003cstrong\u003eEasy Care\u003c\/strong\u003e: Machine wash cold, line dry — low maintenance and built to last wash after wash\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003ePhoto Ready\u003c\/strong\u003e: Sleek clean design perfect for daily outings and those must-post Frenchie moments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSize Guide\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/Size_2.png?v=1777750779\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"XL","offer_id":46618571636897,"sku":"ADS-3AHPDG01-P18N1-FFFFFF-XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"2XL","offer_id":46618571669665,"sku":"ADS-3AHPDG01-P18N1-FFFFFF-2XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"3XL","offer_id":46618571702433,"sku":"ADS-3AHPDG01-P18N1-FFFFFF-3XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"4XL","offer_id":46618571735201,"sku":"ADS-3AHPDG01-P18N1-FFFFFF-4XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"5XL","offer_id":46618571767969,"sku":"ADS-3AHPDG01-P18N1-FFFFFF-5XL","price":39.99,"currency_code":"USD","in_stock":true},{"title":"6XL","offer_id":46618571800737,"sku":"ADS-3AHPDG01-P18N1-FFFFFF-6XL","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/HH.jpg?v=1782506661"},{"product_id":"raincoat","title":"French Bulldog Reflective Raincoat – Waterproof Transparent Cape","description":"\u003cp\u003eRain won't stop your Frenchie's daily walk — this transparent reflective cape keeps them dry, visible and totally stylish. 🌧️🐾\u003c\/p\u003e\n\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e☔ \u003cstrong\u003e100% Waterproof\u003c\/strong\u003e: PU leather material is fully rainproof and impermeable — your Frenchie stays completely dry\u003c\/li\u003e\n\u003cli\u003e🌟 \u003cstrong\u003e360° Reflective Design\u003c\/strong\u003e: Surrounded by reflective strips for maximum visibility and safety on rainy night walks\u003c\/li\u003e\n\u003cli\u003e🔍 \u003cstrong\u003eTransparent Style\u003c\/strong\u003e: Clear PU material shows off your Frenchie's look underneath — no hiding that cute face\u003c\/li\u003e\n\u003cli\u003e🔗 \u003cstrong\u003eLeash Compatible\u003c\/strong\u003e: Built-in tow opening lets you attach a leash easily without removing the raincoat\u003c\/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003e3 Fresh Colors\u003c\/strong\u003e: Available in Yellow, Pink and Blue — bright and fun options for every Frenchie\u003c\/li\u003e\n\u003cli\u003e📏 \u003cstrong\u003e6 Sizes\u003c\/strong\u003e: S to 3XL — fits French Bulldogs of all sizes from slim pups to chunky adults\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/sIZE_6.png?v=1784463905\" alt=\"\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Blue \/ S","offer_id":46718517969057,"sku":"54F31E4717A741A8AE67700EDFE3B23F","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ M","offer_id":46718518001825,"sku":"1504D558A4FE42709CE70423A6F697A5","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ L","offer_id":46718518034593,"sku":"9D69BCC5FF304C169C56621A658F3E41","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ XL","offer_id":46718518067361,"sku":"F6CEFE47DCE14A79B057E0D25A3356D9","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ XXL","offer_id":46718518100129,"sku":"1AB0010028CB4AA7BE246F59A56959BF","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Blue \/ XXXL","offer_id":46718518132897,"sku":"39D39D7DC204414F976FF9D47CF70E90","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ S","offer_id":46718518165665,"sku":"941AEE4F974D409C83590127D6E328C9","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ M","offer_id":46718518198433,"sku":"974E8AE87DCA46379FDD0F71094C832D","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ L","offer_id":46718518231201,"sku":"1DDC056F28EA49CFB7095328AC8FD3E8","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XL","offer_id":46718518263969,"sku":"64DA45D5852746D2860F39E0A0D5C517","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XXL","offer_id":46718518296737,"sku":"A9F2B6F1D6084A3A87E4323ADBA93081","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XXXL","offer_id":46718518329505,"sku":"B91C851958394928B36109F8C5D71DE7","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Yellow \/ S","offer_id":46718518362273,"sku":"07FECD6D53BA43D288C8AEF506266475","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Yellow \/ M","offer_id":46718518395041,"sku":"6381FE8B3C20462CAF777639C90FB35E","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Yellow \/ L","offer_id":46718518427809,"sku":"E7058D203789444BB6C9F18A0FCA58EB","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Yellow \/ XL","offer_id":46718518460577,"sku":"0BAA5AAF4FF64AFBAD610D429CC86B15","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Yellow \/ XXL","offer_id":46718518493345,"sku":"D1355F42055C458E819836D4C243854E","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Yellow \/ XXXL","offer_id":46718518526113,"sku":"A43D58310F97402DA809E62E709A2DED","price":34.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/f.png?v=1784463255"},{"product_id":"headgear","title":"French Bulldog Bow Headgear – Cute Dress Up Hat Accessory","description":"\u003cp class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"\u003eOne bow headgear and your Frenchie instantly becomes the most adorable and photogenic pup in the room. 🎀🐾\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e🎀 \u003cstrong\u003eCute Bow Design\u003c\/strong\u003e: Adorable bow headgear that adds instant charm and cuteness to your Frenchie's everyday look\u003c\/li\u003e\n\u003cli\u003e🧵 \u003cstrong\u003eSoft Polyester Material\u003c\/strong\u003e: Lightweight and gentle fabric that sits comfortably on your Frenchie's head without irritation\u003c\/li\u003e\n\u003cli\u003e📸 \u003cstrong\u003eUltimate Photo Prop\u003c\/strong\u003e: The perfect accessory for viral photos, reels and those must-post Frenchie content moments\u003c\/li\u003e\n\u003cli\u003e🎭 \u003cstrong\u003eFun Dress Up Style\u003c\/strong\u003e: Transforms your Frenchie into the cutest dressed-up pup for parties and special occasions\u003c\/li\u003e\n\u003cli\u003e🪄 \u003cstrong\u003eEasy to Wear\u003c\/strong\u003e: Simple headband style slips on and stays in place — no fussing, no struggling with your Frenchie\u003c\/li\u003e\n\u003cli\u003e🎁 \u003cstrong\u003ePerfect Gift\u003c\/strong\u003e: A fun and affordable gift for any French Bulldog owner who loves to style and spoil their pup\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cspan class=\"offer-attr-item-value\" style=\"box-sizing: border-box; text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; margin: 0px; padding: 0px 20px 0px 0px; outline: none; flex: 1 1 0%; font-size: 12px; color: rgb(51, 51, 51); overflow: hidden; text-overflow: ellipsis;\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan class=\"offer-attr-item-value\" style=\"box-sizing: border-box; text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; margin: 0px; padding: 0px 20px 0px 0px; outline: none; flex: 1 1 0%; font-size: 12px; color: rgb(51, 51, 51); overflow: hidden; text-overflow: ellipsis;\"\u003e\u003cimg src=\"https:\/\/shopifyfile.oss-accelerate.aliyuncs.com\/attached\/image\/202204\/56AD0DA225E50BC5E527C9B94B951505.jpg\" title=\"56AD0DA225E50BC5E527C9B94B951505.jpg\" alt=\"详情-03.jpg\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan class=\"offer-attr-item-value\" style=\"box-sizing: border-box; text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; margin: 0px; padding: 0px 20px 0px 0px; outline: none; flex: 1 1 0%; font-size: 12px; color: rgb(51, 51, 51); overflow: hidden; text-overflow: ellipsis;\"\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Yellow","offer_id":46897514971297,"sku":"66A5A2442E404DFEAD67CB4BD32387E5","price":19.99,"currency_code":"USD","in_stock":true},{"title":"Blue","offer_id":46897515004065,"sku":"943105758E6D47EEB9997A685B1BE76A","price":19.99,"currency_code":"USD","in_stock":true},{"title":"Purple","offer_id":46897515036833,"sku":"876ABA0E87304AA9BF9F94A618662BC3","price":19.99,"currency_code":"USD","in_stock":true},{"title":"Grey","offer_id":46897515069601,"sku":"729635BCE1134045AC6D9E2F7EBB17B4","price":19.99,"currency_code":"USD","in_stock":true},{"title":"Pink","offer_id":46897515102369,"sku":"BC408FC214184442895E89C04ED4BC33","price":19.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/hvh.jpg?v=1787080107"},{"product_id":"frenchie-weeding","title":"French Bulldog Wedding Tuxedo – Gentleman Bow Tie Formal Suit","description":"\u003cp dir=\"ltr\"\u003eDress your Frenchie up like the dapper gentleman they are with this sharp wedding tuxedo and bow tie combo. 🥹\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul dir=\"ltr\"\u003e\n\u003cli\u003e🎩 \u003cstrong\u003eGentleman Tuxedo Style\u003c\/strong\u003e: Classic Western-inspired suit gives your French Bulldog a formal, polished look\u003c\/li\u003e\n\u003cli\u003e🎀 \u003cstrong\u003eDelicate Bow Tie Design\u003c\/strong\u003e: Adds an elegant, graceful finishing touch for weddings and special occasions\u003c\/li\u003e\n\u003cli\u003e🖤 \u003cstrong\u003eFake Two-Piece Look\u003c\/strong\u003e: Black and white design makes your Frenchie look steady and put-together\u003c\/li\u003e\n\u003cli\u003e🧵 \u003cstrong\u003eSoft Cotton Material\u003c\/strong\u003e: Comfortable fabric keeps your Frenchie at ease all event long\u003c\/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003e2 Color Options\u003c\/strong\u003e: Choose Black or White to match your event's theme\u003c\/li\u003e\n\u003cli\u003e🐾 \u003cstrong\u003eMade for Big Dogs\u003c\/strong\u003e: Sized to comfortably fit a Frenchie's sturdy, muscular build\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cspan style=\"font-size: 14.0px;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/ChatGPT_Image_27_aout_2026_11_57_20.png?v=1787828276\" alt=\"\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/HTB1Y3dVXOrxK1RkHFCcq6AQCVXay.jpg\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/HTB1XklZXJfvK1RjSspoq6zfNpXaO.jpg\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/ae01.alicdn.com\/kf\/HTB1NzJ0XOnrK1Rjy1Xcq6yeDVXaI.jpg\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"White \/ XS","offer_id":46931296059553,"sku":"1FF1F1868D044305830ED47E00BDB782","price":28.99,"currency_code":"USD","in_stock":true},{"title":"White \/ S","offer_id":46931296092321,"sku":"4F64AC8A379642F1BDCDAED1073E7051","price":28.99,"currency_code":"USD","in_stock":true},{"title":"White \/ M","offer_id":46931296125089,"sku":"C0BE114DDCB14F22875E63F230EE6527","price":28.99,"currency_code":"USD","in_stock":true},{"title":"White \/ L","offer_id":46931296157857,"sku":"0DC3BEED884A41D5A83F855026FF7DB6","price":28.99,"currency_code":"USD","in_stock":true},{"title":"White \/ XL","offer_id":46931296190625,"sku":"DA51DDF20505498E90F062EB4ABE6DDD","price":35.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XS","offer_id":46931296354465,"sku":"756B875C87D64ADDA6B631DA9ACAE61E","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ S","offer_id":46931296387233,"sku":"1EC424BAE03547BA9F70EE61456AB72B","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ M","offer_id":46931296420001,"sku":"9EDE17C96CCD4641B446FFEE4586BE70","price":34.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ L","offer_id":46931296452769,"sku":"B7671FC937EF4F8B9A95FEF864B092F3","price":37.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XL","offer_id":46931296485537,"sku":"CF26E294065841DC960A5EF6F1DD6863","price":36.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/hjvhj.jpg?v=1787827514"},{"product_id":"contrast-color-winter-waterproof-clothing-warm-clothing-for-dogs","title":"French Bulldog Waterproof Puffer Vest – Warm Winter Harness Coat","description":"\u003cp dir=\"ltr\"\u003eWinter walks just got warmer — this quilted waterproof puffer keeps your Frenchie cozy, dry and ready to head out. 🧥🐾\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cstrong\u003eProduct Features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul dir=\"ltr\"\u003e\n\u003cli\u003e☔ \u003cstrong\u003eWaterproof Protection\u003c\/strong\u003e: Keeps your Frenchie dry in rain, wet snow and damp autumn weather\u003c\/li\u003e\n\u003cli\u003e🔥 \u003cstrong\u003eQuilted Padded Puffer\u003c\/strong\u003e: Insulated padding locks in warmth and keeps your Frenchie comfortable in the cold\u003c\/li\u003e\n\u003cli\u003e🦮 \u003cstrong\u003eBuilt-In Nylon Harness\u003c\/strong\u003e: Clip your leash straight on, so walks are easier and there’s no need for a separate harness\u003c\/li\u003e\n\u003cli\u003e🎨 \u003cstrong\u003eContrast Color Style\u003c\/strong\u003e: Eye-catching two-tone design that makes your Frenchie stand out on every winter walk\u003c\/li\u003e\n\u003cli\u003e🧵 \u003cstrong\u003ePolyester \u0026amp; Cotton Blend\u003c\/strong\u003e: Soft, durable fabric that feels comfortable against your Frenchie’s body\u003c\/li\u003e\n\u003cli\u003e📏 \u003cstrong\u003e5 Sizes\u003c\/strong\u003e: S to 2XL for a snug, secure fit on French Bulldogs of every size\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/sizzz.jpg?v=1793564539\" alt=\"\"\u003e\u003c\/p\u003e","brand":"Frenchie Hub","offers":[{"title":"Yellow+White \/ M","offer_id":48214937141409,"sku":"XO2022102700020002","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Yellow+White \/ L","offer_id":48214937174177,"sku":"XO2022102700020003","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Yellow+White \/ XL","offer_id":48214937206945,"sku":"XO2022102700020004","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Yellow+White \/ XXL","offer_id":48214937239713,"sku":"XO2022102700020005","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ M","offer_id":48214937272481,"sku":"XO2022102700020007","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ L","offer_id":48214937305249,"sku":"XO2022102700020008","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XL","offer_id":48214937338017,"sku":"XO2022102700020009","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ XXL","offer_id":48214937370785,"sku":"XO2022102700020010","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Orange+Black \/ M","offer_id":48214937403553,"sku":"XO2022102700020012","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Orange+Black \/ L","offer_id":48214937436321,"sku":"XO2022102700020013","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Orange+Black \/ XL","offer_id":48214937469089,"sku":"XO2022102700020014","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Orange+Black \/ XXL","offer_id":48214937501857,"sku":"XO2022102700020015","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Blue+Green \/ M","offer_id":48214937534625,"sku":"XO2022102700020017","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Blue+Green \/ L","offer_id":48214937567393,"sku":"XO2022102700020018","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Blue+Green \/ XL","offer_id":48214937600161,"sku":"XO2022102700020019","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Blue+Green \/ XXL","offer_id":48214937632929,"sku":"XO2022102700020020","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Yellow+White \/ S","offer_id":48214937665697,"sku":"XO2022102700020001","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Pink \/ S","offer_id":48214937698465,"sku":"XO2022102700020006","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Orange+Black \/ S","offer_id":48214937731233,"sku":"XO2022102700020011","price":25.99,"currency_code":"USD","in_stock":true},{"title":"Blue+Green \/ S","offer_id":48214937764001,"sku":"XO2022102700020016","price":25.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/files\/jacket.jpg?v=1793563950"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0722\/2539\/0753\/collections\/Gemini_Generated_Image_acgedyacgedyacge_1.jpg?v=1793478486","url":"https:\/\/frenchiehub.shop\/collections\/french-bulldog-clothing.oembed","provider":"Frenchie Hub","version":"1.0","type":"link"}