{"title":"SUMMER SALE","description":null,"products":[{"product_id":"i-just-wanted-it-more-black-longsleeve","title":"“i just wanted it more” black longsleeve","description":"\u003c!-- ================================================================\n     FNSSE — LONGSLEEVE \"we all want it\"\n     Opis produktu + size finder w jednym bloku.\n     Wklej całość w opis produktu (Shopify → Add custom liquid \/\n     sekcja HTML). Klasy mają prefix fnsse-sf- żeby nie kolidowały\n     z motywem. Nie używa cookies ani localStorage.\n     ================================================================ --\u003e\n\u003cdiv class=\"fnsse-sf fnsse-sf--desc\" id=\"fnsse-sf-desc\"\u003e\n\u003cspan class=\"fnsse-sf__eyebrow\"\u003efinesse-tingz-up\u003c\/span\u003e\n\u003ch3 class=\"fnsse-sf__title\"\u003ewe all want it\u003c\/h3\u003e\n\u003cp class=\"fnsse-sf__lead\"\u003eLongsleeve, który mówi to, czego się nie wysyła. Screen print z przodu i doszyty na dole badge — detal, który czujesz palcem, zanim go zobaczysz.\u003c\/p\u003e\n\u003cp class=\"fnsse-sf__lead\"\u003eSzyty na zamówienie: każda sztuka powstaje dopiero, gdy ją zamówisz. Zero magazynowych resztek, zero przypadku.\u003c\/p\u003e\n\u003cul class=\"fnsse-sf__specs\"\u003e\n\u003cli\u003e\n\u003cspan\u003emateriał\u003c\/span\u003e 100% bawełna, gęsty splot\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003enadruk\u003c\/span\u003e screen print + doszyty badge\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003ekrój\u003c\/span\u003e slim-to-regular\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003epranie\u003c\/span\u003e maks. 30°C, na lewej stronie\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cspan class=\"fnsse-sf__eyebrow fnsse-sf__eyebrow--mt\"\u003etabela rozmiarów\u003c\/span\u003e\n\u003ctable class=\"fnsse-sf__chart\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003esize\u003c\/th\u003e\n\u003cth\u003elength\u003c\/th\u003e\n\u003cth\u003echest\u003c\/th\u003e\n\u003cth\u003earms\u003c\/th\u003e\n\u003cth\u003esleeve\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eS\u003c\/td\u003e\n\u003ctd\u003e69\u003c\/td\u003e\n\u003ctd\u003e46\u003c\/td\u003e\n\u003ctd\u003e43\u003c\/td\u003e\n\u003ctd\u003e61\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eM\u003c\/td\u003e\n\u003ctd\u003e71\u003c\/td\u003e\n\u003ctd\u003e51\u003c\/td\u003e\n\u003ctd\u003e46\u003c\/td\u003e\n\u003ctd\u003e64\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eL\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003ctd\u003e56\u003c\/td\u003e\n\u003ctd\u003e48\u003c\/td\u003e\n\u003ctd\u003e65\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eXL\u003c\/td\u003e\n\u003ctd\u003e76\u003c\/td\u003e\n\u003ctd\u003e61\u003c\/td\u003e\n\u003ctd\u003e51\u003c\/td\u003e\n\u003ctd\u003e66\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp class=\"fnsse-sf__chart-note\"\u003e* wymiary w cm, mierzone płasko\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fnsse-sf\" id=\"fnsse-sf\"\u003e\n\u003cdiv class=\"fnsse-sf__head\"\u003e\n\u003cspan class=\"fnsse-sf__eyebrow\"\u003efinesse-tingz-up\u003c\/span\u003e\n\u003ch3 class=\"fnsse-sf__title\"\u003edobierz rozmiar\u003c\/h3\u003e\n\u003cp class=\"fnsse-sf__sub\"\u003eTrzy pola. Bez zgadywania. Krój slim-to-regular — liczymy z realnej tabeli.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fnsse-sf__field\"\u003e\n\u003clabel class=\"fnsse-sf__label\" for=\"fnsse-sf-height\"\u003ewzrost \u003cspan\u003ecm\u003c\/span\u003e\u003c\/label\u003e \u003cinput class=\"fnsse-sf__input\" id=\"fnsse-sf-height\" type=\"number\" inputmode=\"numeric\" min=\"140\" max=\"215\" placeholder=\"np. 180\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fnsse-sf__field\"\u003e\n\u003clabel class=\"fnsse-sf__label\" for=\"fnsse-sf-weight\"\u003ewaga \u003cspan\u003ekg\u003c\/span\u003e\u003c\/label\u003e \u003cinput class=\"fnsse-sf__input\" id=\"fnsse-sf-weight\" type=\"number\" inputmode=\"numeric\" min=\"40\" max=\"160\" placeholder=\"np. 75\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fnsse-sf__field\"\u003e\n\u003cspan class=\"fnsse-sf__label\"\u003ejak lubisz nosić\u003c\/span\u003e\n\u003cdiv class=\"fnsse-sf__fit\" role=\"radiogroup\"\u003e\n\u003cbutton type=\"button\" class=\"fnsse-sf__chip\" role=\"radio\"\u003edopasowane\u003c\/button\u003e \u003cbutton type=\"button\" class=\"fnsse-sf__chip is-active\" role=\"radio\"\u003estandard\u003c\/button\u003e \u003cbutton type=\"button\" class=\"fnsse-sf__chip\" role=\"radio\"\u003eluźno\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"fnsse-sf__go\" id=\"fnsse-sf-go\"\u003epokaż mój rozmiar\u003c\/button\u003e\n\u003cdiv class=\"fnsse-sf__result\" id=\"fnsse-sf-result\" hidden=\"\"\u003e\n\u003cdiv class=\"fnsse-sf__size\"\u003e\n\u003cspan class=\"fnsse-sf__size-label\"\u003etwój rozmiar\u003c\/span\u003e \u003cspan class=\"fnsse-sf__size-val\" id=\"fnsse-sf-size\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cp class=\"fnsse-sf__note\" id=\"fnsse-sf-note\"\u003e\u003c\/p\u003e\n\u003ctable class=\"fnsse-sf__table\" id=\"fnsse-sf-dims\" hidden=\"\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003edługość\u003c\/td\u003e\n\u003ctd id=\"fnsse-sf-d-len\"\u003e—\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eszerokość (w klatce)\u003c\/td\u003e\n\u003ctd id=\"fnsse-sf-d-chest\"\u003e—\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003erękaw\u003c\/td\u003e\n\u003ctd id=\"fnsse-sf-d-sleeve\"\u003e—\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp class=\"fnsse-sf__hint\"\u003eWymiary płasko, w cm. Między rozmiarami? Weź większy — ten krój nie jest oversize.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n  .fnsse-sf{\n    --bg:#ffffff; --fg:#0a0a0a; --dim:#8a8a8a; --line:#e6e6e6;\n    --field:#ffffff; --accent:#0a0a0a;\n    box-sizing:border-box; max-width:420px; margin:0 auto; padding:26px 22px 24px;\n    background:var(--bg); color:var(--fg);\n    font-family:ui-monospace,\"SF Mono\",\"Roboto Mono\",Menlo,Consolas,monospace;\n    border:1px solid var(--line);\n  }\n  .fnsse-sf *{box-sizing:border-box}\n  .fnsse-sf__eyebrow{\n    display:block; font-size:10px; letter-spacing:.22em; text-transform:uppercase;\n    color:var(--dim); margin-bottom:14px;\n  }\n  .fnsse-sf__title{\n    margin:0; font-size:26px; line-height:1; font-weight:700;\n    letter-spacing:-.01em; text-transform:lowercase;\n  }\n  .fnsse-sf__sub{margin:10px 0 0; font-size:12px; line-height:1.5; color:var(--dim)}\n  .fnsse-sf--desc{margin-bottom:14px}\n  .fnsse-sf__lead{margin:14px 0 0; font-size:13px; line-height:1.6; color:var(--fg)}\n  .fnsse-sf__specs{margin:20px 0 0; padding:0; list-style:none; border-top:1px solid var(--line)}\n  .fnsse-sf__specs li{\n    display:flex; justify-content:space-between; gap:16px; padding:11px 0;\n    border-bottom:1px solid var(--line); font-size:12px; color:var(--fg);\n  }\n  .fnsse-sf__specs li span{\n    color:var(--dim); text-transform:uppercase; letter-spacing:.12em;\n    font-size:10px; white-space:nowrap; padding-top:1px;\n  }\n  .fnsse-sf__eyebrow--mt{margin-top:22px}\n  .fnsse-sf__chart{width:100%; border-collapse:collapse; font-size:12px}\n  .fnsse-sf__chart th{\n    padding:9px 8px; text-align:center; font-size:9px; letter-spacing:.12em;\n    text-transform:uppercase; font-weight:500; color:#fff; background:var(--fg);\n  }\n  .fnsse-sf__chart th:first-child{text-align:left}\n  .fnsse-sf__chart td{\n    padding:11px 8px; text-align:center; border-bottom:1px solid var(--line); color:var(--fg);\n  }\n  .fnsse-sf__chart td:first-child{text-align:left; font-weight:700}\n  .fnsse-sf__chart tbody tr:nth-child(even){background:#f8f8f8}\n  .fnsse-sf__chart tbody tr:last-child td{border-bottom:none}\n  .fnsse-sf__chart-note{margin:8px 0 0; font-size:11px; font-style:italic; color:var(--dim)}\n  .fnsse-sf__field{margin-top:20px}\n  .fnsse-sf__label{\n    display:block; font-size:11px; letter-spacing:.14em; text-transform:uppercase;\n    color:var(--fg); margin-bottom:8px;\n  }\n  .fnsse-sf__label span{color:var(--dim); text-transform:none; letter-spacing:0}\n  .fnsse-sf__input{\n    width:100%; padding:13px 14px; background:var(--field); color:var(--fg);\n    border:1px solid var(--line); border-radius:0; font:inherit; font-size:15px;\n    -webkit-appearance:none; appearance:none; transition:border-color .15s ease;\n  }\n  .fnsse-sf__input::placeholder{color:#b8b8b8}\n  .fnsse-sf__input:focus{outline:none; border-color:var(--accent)}\n  .fnsse-sf__fit{display:flex; gap:8px}\n  .fnsse-sf__chip{\n    flex:1; padding:12px 6px; background:#f6f6f6; color:var(--dim);\n    border:1px solid var(--line); border-radius:0; font:inherit; font-size:12px;\n    text-transform:lowercase; cursor:pointer; transition:all .15s ease;\n  }\n  .fnsse-sf__chip:hover{color:var(--fg); border-color:#bdbdbd}\n  .fnsse-sf__chip.is-active{\n    background:var(--fg); color:var(--bg); border-color:var(--fg); font-weight:700;\n  }\n  .fnsse-sf__chip:focus-visible{outline:2px solid var(--accent); outline-offset:2px}\n  .fnsse-sf__go{\n    width:100%; margin-top:24px; padding:16px; background:var(--fg); color:var(--bg);\n    border:none; border-radius:0; font:inherit; font-size:13px; font-weight:700;\n    letter-spacing:.1em; text-transform:uppercase; cursor:pointer;\n    transition:opacity .15s ease;\n  }\n  .fnsse-sf__go:hover{opacity:.82}\n  .fnsse-sf__go:focus-visible{outline:2px solid var(--accent); outline-offset:2px}\n  .fnsse-sf__result{margin-top:22px; padding-top:22px; border-top:1px solid var(--line)}\n  \/* signature: echo-layered size, jak warstwowe lyrics na bluzach *\/\n  .fnsse-sf__size{position:relative; display:flex; flex-direction:column; gap:4px}\n  .fnsse-sf__size::after{\n    content:attr(data-echo); position:absolute; left:2px; top:calc(50% - 4px);\n    font-size:52px; font-weight:800; line-height:1; color:var(--fg);\n    opacity:.10; pointer-events:none; transform:translateY(2px);\n  }\n  .fnsse-sf__size-label{font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--dim)}\n  .fnsse-sf__size-val{font-size:52px; font-weight:800; line-height:1; position:relative; z-index:1}\n  .fnsse-sf__note{margin:14px 0 0; font-size:12px; line-height:1.5; color:var(--fg)}\n  .fnsse-sf__table{width:100%; margin-top:16px; border-collapse:collapse; font-size:12px}\n  .fnsse-sf__table td{padding:9px 0; border-bottom:1px solid var(--line); color:var(--dim)}\n  .fnsse-sf__table td:last-child{text-align:right; color:var(--fg)}\n  .fnsse-sf__hint{margin:14px 0 0; font-size:11px; line-height:1.5; color:var(--dim)}\n  @media (prefers-reduced-motion:reduce){.fnsse-sf *{transition:none!important}}\n\u003c\/style\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"finesse","offers":[{"title":"S","offer_id":49183519015177,"sku":null,"price":159.0,"currency_code":"PLN","in_stock":true},{"title":"M","offer_id":49183519047945,"sku":null,"price":159.0,"currency_code":"PLN","in_stock":true},{"title":"L","offer_id":49183519080713,"sku":null,"price":159.0,"currency_code":"PLN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0842\/2712\/9609\/files\/IMG-8691.png?v=1785197855"},{"product_id":"unforgettable-neon-green-hoodie","title":"„unforgettable” neon hoodie","description":"\u003cdiv style=\"font-family: sans-serif; color: #111; line-height: 1.8; max-width: 560px;\"\u003e\n\u003cp style=\"font-size: 15px; font-weight: 600; margin-bottom: 8px;\"\u003eSzyte na zamówienie - specjalnie dla Ciebie\u003c\/p\u003e\n\u003chr style=\"border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;\"\u003e\n\u003cp\u003e\u003cstrong\u003eMateriał:\u003c\/strong\u003e 90% bawełna, 10% poliester — 420g\/m² \u003cmeta charset=\"utf-8\"\u003e(ciężka, gęsta dzianina)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKrój:\u003c\/strong\u003e \u003cmeta charset=\"utf-8\"\u003eoversize, leży zgodnie z tabelą. Chcesz mocniejszy oversize, bierz rozmiar wyżej.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePielęgnacja:\u003c\/strong\u003e pranie max 30°C, na lewej stronie, bez suszarki\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eDostawa: \u003c\/b\u003e4-8 tygodni. Kupujesz sztukę, we can't rush it.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!-- ============ SIZE FINDER ============ --\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    #fnsSizeFinder{--fns-ink:#111;--fns-line:#e0e0e0;--fns-mut:#999;font-family:sans-serif;color:var(--fns-ink);border:1px solid var(--fns-ink);margin:0 0 28px;}\n    #fnsSizeFinder .fns-hd{background:var(--fns-ink);color:#fff;padding:9px 12px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:500;}\n    #fnsSizeFinder .fns-bd{padding:16px 12px 14px;}\n    #fnsSizeFinder .fns-lb{display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--fns-mut);margin:0 0 6px;font-weight:500;line-height:1;}\n    #fnsSizeFinder .fns-row{display:flex;gap:10px;margin:0 0 14px;flex-wrap:wrap;}\n    #fnsSizeFinder .fns-col{flex:1 1 120px;min-width:0;}\n    #fnsSizeFinder .fns-seg{display:flex;border:1px solid var(--fns-line);}\n    #fnsSizeFinder .fns-seg button{flex:1;appearance:none;background:#fff;border:0;border-right:1px solid var(--fns-line);padding:9px 4px;font:inherit;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#555;cursor:pointer;line-height:1.2;transition:background .15s,color .15s;}\n    #fnsSizeFinder .fns-seg button:last-child{border-right:0;}\n    #fnsSizeFinder .fns-seg button:hover{background:#f4f4f4;}\n    #fnsSizeFinder .fns-seg button[aria-pressed=\"true\"]{background:var(--fns-ink);color:#fff;}\n    #fnsSizeFinder input{width:100%;box-sizing:border-box;border:1px solid var(--fns-line);padding:9px 10px;font:inherit;font-size:14px;color:var(--fns-ink);background:#fff;border-radius:0;-webkit-appearance:none;appearance:none;margin:0;}\n    #fnsSizeFinder input:focus{outline:0;border-color:var(--fns-ink);}\n    #fnsSizeFinder input::-webkit-outer-spin-button,#fnsSizeFinder input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}\n    #fnsSizeFinder .fns-out{border-top:1px solid var(--fns-line);margin-top:2px;padding-top:14px;}\n    #fnsSizeFinder .fns-empty{font-size:12px;color:var(--fns-mut);font-style:italic;line-height:1.6;margin:0;}\n    #fnsSizeFinder .fns-pick{display:flex;align-items:baseline;gap:10px;margin:0 0 8px;}\n    #fnsSizeFinder .fns-big{font-size:40px;font-weight:700;line-height:.9;letter-spacing:-.02em;}\n    #fnsSizeFinder .fns-cap{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fns-mut);}\n    #fnsSizeFinder .fns-msg{font-size:12.5px;line-height:1.6;margin:0 0 10px;color:#333;}\n    #fnsSizeFinder .fns-dim{display:flex;gap:18px;flex-wrap:wrap;font-size:11px;color:#555;border-top:1px solid var(--fns-line);padding-top:10px;}\n    #fnsSizeFinder .fns-dim b{display:block;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--fns-mut);font-weight:500;margin-bottom:2px;}\n    #fnsSizeFinder .fns-warn{font-size:11.5px;color:#a02020;margin:8px 0 0;line-height:1.5;}\n  \u003c\/style\u003e\n\u003cdiv style=\"font-family: sans-serif; color: #111; line-height: 1.8; max-width: 560px;\"\u003e\n\u003cdiv id=\"fnsSizeFinder\"\u003e\n\u003cdiv class=\"fns-hd\"\u003edobierz rozmiar\u003c\/div\u003e\n\u003cdiv class=\"fns-bd\"\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\" style=\"flex: 1 1 100%;\"\u003e\n\u003cspan class=\"fns-lb\"\u003epłeć\u003c\/span\u003e\n\u003cdiv class=\"fns-seg\" data-fns-group=\"sex\"\u003e\n\u003cbutton type=\"button\" data-v=\"m\" aria-pressed=\"false\"\u003emężczyzna\u003c\/button\u003e \u003cbutton type=\"button\" data-v=\"f\" aria-pressed=\"false\"\u003ekobieta\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\"\u003e\n\u003cspan class=\"fns-lb\"\u003ewzrost (cm)\u003c\/span\u003e \u003cinput id=\"fnsH\" type=\"number\" inputmode=\"numeric\" min=\"140\" max=\"220\" placeholder=\"np. 178\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-col\"\u003e\n\u003cspan class=\"fns-lb\"\u003ewaga (kg)\u003c\/span\u003e \u003cinput id=\"fnsW\" type=\"number\" inputmode=\"numeric\" min=\"35\" max=\"200\" placeholder=\"np. 72\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\" style=\"flex: 1 1 100%;\"\u003e\n\u003cspan class=\"fns-lb\"\u003ejak ma leżeć\u003c\/span\u003e\n\u003cdiv class=\"fns-seg\" data-fns-group=\"fit\"\u003e\n\u003cbutton type=\"button\" data-v=\"-0.5\" aria-pressed=\"false\"\u003edopasowany\u003c\/button\u003e \u003cbutton type=\"button\" data-v=\"0.5\" aria-pressed=\"false\"\u003eoversized\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-out\" id=\"fnsOut\"\u003e\n\u003cp class=\"fns-empty\"\u003euzupełnij pola powyżej — podpowiemy rozmiar.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n  (function(){\n    var root = document.getElementById('fnsSizeFinder');\n    if(!root || root.dataset.fnsInit) return;\n    root.dataset.fnsInit = '1';\n\n    var SIZES = [\n      {n:'S',  w:64, l:64, s:57},\n      {n:'M',  w:66, l:65, s:60},\n      {n:'L',  w:69, l:67, s:62},\n      {n:'XL', w:71, l:69, s:65}\n    ];\n\n    var state = {sex:null, fit:null};\n    var out = root.querySelector('#fnsOut');\n    var inH = root.querySelector('#fnsH');\n    var inW = root.querySelector('#fnsW');\n\n    root.querySelectorAll('[data-fns-group]').forEach(function(g){\n      g.addEventListener('click', function(e){\n        var b = e.target.closest('button');\n        if(!b) return;\n        g.querySelectorAll('button').forEach(function(x){ x.setAttribute('aria-pressed','false'); });\n        b.setAttribute('aria-pressed','true');\n        state[g.dataset.fnsGroup] = b.dataset.v;\n        render();\n      });\n    });\n    inH.addEventListener('input', render);\n    inW.addEventListener('input', render);\n\n    function heightBase(h){\n      if(h \u003c= 172) return 0;\n      if(h \u003c= 182) return 1;\n      if(h \u003c= 190) return 2;\n      return 3;\n    }\n\n    function bmiAdj(bmi){\n      if(bmi \u003c 18.5) return -0.5;\n      if(bmi \u003c 25)   return 0;\n      if(bmi \u003c 29)   return 0.5;\n      if(bmi \u003c 33)   return 1;\n      return 1.5;\n    }\n\n    function render(){\n      var h = parseFloat(inH.value), w = parseFloat(inW.value);\n      var ok = state.sex \u0026\u0026 state.fit !== null \u0026\u0026 h \u003e= 140 \u0026\u0026 h \u003c= 220 \u0026\u0026 w \u003e= 35 \u0026\u0026 w \u003c= 200;\n\n      if(!ok){\n        out.innerHTML = '\u003cp class=\"fns-empty\"\u003euzupełnij pola powyżej — podpowiemy rozmiar.\u003c\/p\u003e';\n        return;\n      }\n\n      var bmi   = w \/ Math.pow(h\/100, 2);\n      var score = heightBase(h) + bmiAdj(bmi) + (state.sex === 'f' ? -0.5 : 0) + parseFloat(state.fit);\n\n      var idx  = Math.max(0, Math.min(3, Math.round(score)));\n      var pick = SIZES[idx];\n\n      var msg;\n      if(state.fit === '-0.5'){\n        msg = 'Najbardziej dopasowany fit, jaki da się tu uzyskać — krój i tak jest szyty oversize, więc leży luźno w barkach.';\n        if(idx \u003c 3) msg += ' Chcesz luźniej — weź ' + SIZES[idx+1].n + '.';\n      } else {\n        msg = 'Wyraźnie luźno — opuszczone ramię, szeroka boxy sylwetka, rękaw lekko zachodzi na dłoń.';\n        if(idx \u003e 0) msg += ' Wolisz bliżej ciała — weź ' + SIZES[idx-1].n + '.';\n      }\n\n      var warn = '';\n      if(score \u003e 3.4)      warn = 'Uwaga: XL to nasz największy rozmiar — przy Twoich parametrach i wybranym fitcie może leżeć bardziej \"true to size\" niż oversize.';\n      else if(score \u003c -0.4) warn = 'Uwaga: S to nasz najmniejszy rozmiar — przy Twoich parametrach będzie leżał wyraźnie oversize.';\n\n      out.innerHTML =\n        '\u003cdiv class=\"fns-pick\"\u003e\u003cspan class=\"fns-big\"\u003e' + pick.n + '\u003c\/span\u003e' +\n        '\u003cspan class=\"fns-cap\"\u003etwój rozmiar\u003c\/span\u003e\u003c\/div\u003e' +\n        '\u003cp class=\"fns-msg\"\u003e' + msg + '\u003c\/p\u003e' +\n        '\u003cdiv class=\"fns-dim\"\u003e' +\n          '\u003cspan\u003e\u003cb\u003ewidth\u003c\/b\u003e' + pick.w + ' cm\u003c\/span\u003e' +\n          '\u003cspan\u003e\u003cb\u003elength\u003c\/b\u003e' + pick.l + ' cm\u003c\/span\u003e' +\n          '\u003cspan\u003e\u003cb\u003esleeve\u003c\/b\u003e' + pick.s + ' cm\u003c\/span\u003e' +\n        '\u003c\/div\u003e' +\n        (warn ? '\u003cp class=\"fns-warn\"\u003e' + warn + '\u003c\/p\u003e' : '');\n    }\n  })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- ========== \/SIZE FINDER ========== --\u003e\n\u003cp style=\"font-size: 13px; color: #333; margin-bottom: 6px;\"\u003e\u003cstrong\u003e\u003c\/strong\u003esize chart\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 13px;\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background: #111; color: #fff;\"\u003e\n\u003cth style=\"padding: 9px 10px; text-align: left; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eSIZE\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eWIDTH\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eLENGTH\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eSLEEVE\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eHEIGHT\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eS\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e64\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e64\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e57\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e155–172\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background: #f8f8f8;\"\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eM\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e66\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e65\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e60\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e173–182\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e69\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e67\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e62\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e182–190\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background: #f8f8f8;\"\u003e\n\u003ctd style=\"padding: 10px;\"\u003e\u003cstrong\u003eXL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e71\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e69\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e65\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; color: #999; font-style: italic;\"\u003e190+\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"font-size: 11px; color: #999; margin-top: 8px; font-style: italic;\"\u003e* everything in cm, fit is true to size.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"finesse.","offers":[{"title":"S","offer_id":55601902813449,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"M","offer_id":55601902846217,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"L","offer_id":55601902878985,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"XL","offer_id":55601902911753,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0842\/2712\/9609\/files\/hf_20260728_222924_5374b1c5-44f4-47b0-90dd-ebf4adb7f7ff.png?v=1785278428"},{"product_id":"unforgettable-purple-hoodie","title":"„unforgettable” purple hoodie","description":"\u003cdiv style=\"font-family: sans-serif; color: #111; line-height: 1.8; max-width: 560px;\"\u003e\n\u003cp style=\"font-size: 15px; font-weight: 600; margin-bottom: 8px;\"\u003eSzyte na zamówienie - specjalnie dla Ciebie\u003c\/p\u003e\n\u003chr style=\"border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;\"\u003e\n\u003cp\u003e\u003cstrong\u003eMateriał:\u003c\/strong\u003e 90% bawełna, 10% poliester — 420g\/m² \u003cmeta charset=\"utf-8\"\u003e(ciężka, gęsta dzianina)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKrój:\u003c\/strong\u003e \u003cmeta charset=\"utf-8\"\u003eoversize, leży zgodnie z tabelą. Chcesz mocniejszy oversize, bierz rozmiar wyżej.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePielęgnacja:\u003c\/strong\u003e pranie max 30°C, na lewej stronie, bez suszarki\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eDostawa: \u003c\/b\u003e4-8 tygodni. Kupujesz sztukę, we can't rush it.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!-- ============ SIZE FINDER ============ --\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    #fnsSizeFinder{--fns-ink:#111;--fns-line:#e0e0e0;--fns-mut:#999;font-family:sans-serif;color:var(--fns-ink);border:1px solid var(--fns-ink);margin:0 0 28px;}\n    #fnsSizeFinder .fns-hd{background:var(--fns-ink);color:#fff;padding:9px 12px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:500;}\n    #fnsSizeFinder .fns-bd{padding:16px 12px 14px;}\n    #fnsSizeFinder .fns-lb{display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--fns-mut);margin:0 0 6px;font-weight:500;line-height:1;}\n    #fnsSizeFinder .fns-row{display:flex;gap:10px;margin:0 0 14px;flex-wrap:wrap;}\n    #fnsSizeFinder .fns-col{flex:1 1 120px;min-width:0;}\n    #fnsSizeFinder .fns-seg{display:flex;border:1px solid var(--fns-line);}\n    #fnsSizeFinder .fns-seg button{flex:1;appearance:none;background:#fff;border:0;border-right:1px solid var(--fns-line);padding:9px 4px;font:inherit;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#555;cursor:pointer;line-height:1.2;transition:background .15s,color .15s;}\n    #fnsSizeFinder .fns-seg button:last-child{border-right:0;}\n    #fnsSizeFinder .fns-seg button:hover{background:#f4f4f4;}\n    #fnsSizeFinder .fns-seg button[aria-pressed=\"true\"]{background:var(--fns-ink);color:#fff;}\n    #fnsSizeFinder input{width:100%;box-sizing:border-box;border:1px solid var(--fns-line);padding:9px 10px;font:inherit;font-size:14px;color:var(--fns-ink);background:#fff;border-radius:0;-webkit-appearance:none;appearance:none;margin:0;}\n    #fnsSizeFinder input:focus{outline:0;border-color:var(--fns-ink);}\n    #fnsSizeFinder input::-webkit-outer-spin-button,#fnsSizeFinder input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}\n    #fnsSizeFinder .fns-out{border-top:1px solid var(--fns-line);margin-top:2px;padding-top:14px;}\n    #fnsSizeFinder .fns-empty{font-size:12px;color:var(--fns-mut);font-style:italic;line-height:1.6;margin:0;}\n    #fnsSizeFinder .fns-pick{display:flex;align-items:baseline;gap:10px;margin:0 0 8px;}\n    #fnsSizeFinder .fns-big{font-size:40px;font-weight:700;line-height:.9;letter-spacing:-.02em;}\n    #fnsSizeFinder .fns-cap{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fns-mut);}\n    #fnsSizeFinder .fns-msg{font-size:12.5px;line-height:1.6;margin:0 0 10px;color:#333;}\n    #fnsSizeFinder .fns-dim{display:flex;gap:18px;flex-wrap:wrap;font-size:11px;color:#555;border-top:1px solid var(--fns-line);padding-top:10px;}\n    #fnsSizeFinder .fns-dim b{display:block;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--fns-mut);font-weight:500;margin-bottom:2px;}\n    #fnsSizeFinder .fns-warn{font-size:11.5px;color:#a02020;margin:8px 0 0;line-height:1.5;}\n  \u003c\/style\u003e\n\u003cdiv style=\"font-family: sans-serif; color: #111; line-height: 1.8; max-width: 560px;\"\u003e\n\u003cdiv id=\"fnsSizeFinder\"\u003e\n\u003cdiv class=\"fns-hd\"\u003edobierz rozmiar\u003c\/div\u003e\n\u003cdiv class=\"fns-bd\"\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\" style=\"flex: 1 1 100%;\"\u003e\n\u003cspan class=\"fns-lb\"\u003epłeć\u003c\/span\u003e\n\u003cdiv class=\"fns-seg\" data-fns-group=\"sex\"\u003e\n\u003cbutton type=\"button\" data-v=\"m\" aria-pressed=\"false\"\u003emężczyzna\u003c\/button\u003e \u003cbutton type=\"button\" data-v=\"f\" aria-pressed=\"false\"\u003ekobieta\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\"\u003e\n\u003cspan class=\"fns-lb\"\u003ewzrost (cm)\u003c\/span\u003e \u003cinput id=\"fnsH\" type=\"number\" inputmode=\"numeric\" min=\"140\" max=\"220\" placeholder=\"np. 178\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-col\"\u003e\n\u003cspan class=\"fns-lb\"\u003ewaga (kg)\u003c\/span\u003e \u003cinput id=\"fnsW\" type=\"number\" inputmode=\"numeric\" min=\"35\" max=\"200\" placeholder=\"np. 72\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\" style=\"flex: 1 1 100%;\"\u003e\n\u003cspan class=\"fns-lb\"\u003ejak ma leżeć\u003c\/span\u003e\n\u003cdiv class=\"fns-seg\" data-fns-group=\"fit\"\u003e\n\u003cbutton type=\"button\" data-v=\"-0.5\" aria-pressed=\"false\"\u003edopasowany\u003c\/button\u003e \u003cbutton type=\"button\" data-v=\"0.5\" aria-pressed=\"false\"\u003eoversized\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-out\" id=\"fnsOut\"\u003e\n\u003cp class=\"fns-empty\"\u003euzupełnij pola powyżej — podpowiemy rozmiar.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n  (function(){\n    var root = document.getElementById('fnsSizeFinder');\n    if(!root || root.dataset.fnsInit) return;\n    root.dataset.fnsInit = '1';\n\n    var SIZES = [\n      {n:'S',  w:64, l:64, s:57},\n      {n:'M',  w:66, l:65, s:60},\n      {n:'L',  w:69, l:67, s:62},\n      {n:'XL', w:71, l:69, s:65}\n    ];\n\n    var state = {sex:null, fit:null};\n    var out = root.querySelector('#fnsOut');\n    var inH = root.querySelector('#fnsH');\n    var inW = root.querySelector('#fnsW');\n\n    root.querySelectorAll('[data-fns-group]').forEach(function(g){\n      g.addEventListener('click', function(e){\n        var b = e.target.closest('button');\n        if(!b) return;\n        g.querySelectorAll('button').forEach(function(x){ x.setAttribute('aria-pressed','false'); });\n        b.setAttribute('aria-pressed','true');\n        state[g.dataset.fnsGroup] = b.dataset.v;\n        render();\n      });\n    });\n    inH.addEventListener('input', render);\n    inW.addEventListener('input', render);\n\n    function heightBase(h){\n      if(h \u003c= 172) return 0;\n      if(h \u003c= 182) return 1;\n      if(h \u003c= 190) return 2;\n      return 3;\n    }\n\n    function bmiAdj(bmi){\n      if(bmi \u003c 18.5) return -0.5;\n      if(bmi \u003c 25)   return 0;\n      if(bmi \u003c 29)   return 0.5;\n      if(bmi \u003c 33)   return 1;\n      return 1.5;\n    }\n\n    function render(){\n      var h = parseFloat(inH.value), w = parseFloat(inW.value);\n      var ok = state.sex \u0026\u0026 state.fit !== null \u0026\u0026 h \u003e= 140 \u0026\u0026 h \u003c= 220 \u0026\u0026 w \u003e= 35 \u0026\u0026 w \u003c= 200;\n\n      if(!ok){\n        out.innerHTML = '\u003cp class=\"fns-empty\"\u003euzupełnij pola powyżej — podpowiemy rozmiar.\u003c\/p\u003e';\n        return;\n      }\n\n      var bmi   = w \/ Math.pow(h\/100, 2);\n      var score = heightBase(h) + bmiAdj(bmi) + (state.sex === 'f' ? -0.5 : 0) + parseFloat(state.fit);\n\n      var idx  = Math.max(0, Math.min(3, Math.round(score)));\n      var pick = SIZES[idx];\n\n      var msg;\n      if(state.fit === '-0.5'){\n        msg = 'Najbardziej dopasowany fit, jaki da się tu uzyskać — krój i tak jest szyty oversize, więc leży luźno w barkach.';\n        if(idx \u003c 3) msg += ' Chcesz luźniej — weź ' + SIZES[idx+1].n + '.';\n      } else {\n        msg = 'Wyraźnie luźno — opuszczone ramię, szeroka boxy sylwetka, rękaw lekko zachodzi na dłoń.';\n        if(idx \u003e 0) msg += ' Wolisz bliżej ciała — weź ' + SIZES[idx-1].n + '.';\n      }\n\n      var warn = '';\n      if(score \u003e 3.4)      warn = 'Uwaga: XL to nasz największy rozmiar — przy Twoich parametrach i wybranym fitcie może leżeć bardziej \"true to size\" niż oversize.';\n      else if(score \u003c -0.4) warn = 'Uwaga: S to nasz najmniejszy rozmiar — przy Twoich parametrach będzie leżał wyraźnie oversize.';\n\n      out.innerHTML =\n        '\u003cdiv class=\"fns-pick\"\u003e\u003cspan class=\"fns-big\"\u003e' + pick.n + '\u003c\/span\u003e' +\n        '\u003cspan class=\"fns-cap\"\u003etwój rozmiar\u003c\/span\u003e\u003c\/div\u003e' +\n        '\u003cp class=\"fns-msg\"\u003e' + msg + '\u003c\/p\u003e' +\n        '\u003cdiv class=\"fns-dim\"\u003e' +\n          '\u003cspan\u003e\u003cb\u003ewidth\u003c\/b\u003e' + pick.w + ' cm\u003c\/span\u003e' +\n          '\u003cspan\u003e\u003cb\u003elength\u003c\/b\u003e' + pick.l + ' cm\u003c\/span\u003e' +\n          '\u003cspan\u003e\u003cb\u003esleeve\u003c\/b\u003e' + pick.s + ' cm\u003c\/span\u003e' +\n        '\u003c\/div\u003e' +\n        (warn ? '\u003cp class=\"fns-warn\"\u003e' + warn + '\u003c\/p\u003e' : '');\n    }\n  })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- ========== \/SIZE FINDER ========== --\u003e\n\u003cp style=\"font-size: 13px; color: #333; margin-bottom: 6px;\"\u003e\u003cstrong\u003e\u003c\/strong\u003esize chart\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 13px;\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background: #111; color: #fff;\"\u003e\n\u003cth style=\"padding: 9px 10px; text-align: left; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eSIZE\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eWIDTH\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eLENGTH\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eSLEEVE\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eHEIGHT\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eS\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e64\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e64\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e57\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e155–172\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background: #f8f8f8;\"\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eM\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e66\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e65\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e60\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e173–182\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e69\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e67\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e62\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e182–190\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background: #f8f8f8;\"\u003e\n\u003ctd style=\"padding: 10px;\"\u003e\u003cstrong\u003eXL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e71\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e69\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e65\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; color: #999; font-style: italic;\"\u003e190+\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"font-size: 11px; color: #999; margin-top: 8px; font-style: italic;\"\u003e* everything in cm, fit is true to size.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"finesse.","offers":[{"title":"S","offer_id":55601907466505,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"M","offer_id":55601907499273,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"L","offer_id":55601907532041,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"XL","offer_id":55601907564809,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0842\/2712\/9609\/files\/hf_20260728_222001_e3d01553-579e-4665-bf7e-b1794ef881e3.png?v=1785278349"},{"product_id":"unforgettable-black-hoodie","title":"„unforgettable” black hoodie","description":"\u003cdiv style=\"font-family: sans-serif; color: #111; line-height: 1.8; max-width: 560px;\"\u003e\n\u003cp style=\"font-size: 15px; font-weight: 600; margin-bottom: 8px;\"\u003eSzyte na zamówienie - specjalnie dla Ciebie\u003c\/p\u003e\n\u003chr style=\"border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;\"\u003e\n\u003cp\u003e\u003cstrong\u003eMateriał:\u003c\/strong\u003e 90% bawełna, 10% poliester — 420g\/m² \u003cmeta charset=\"utf-8\"\u003e(ciężka, gęsta dzianina)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKrój:\u003c\/strong\u003e \u003cmeta charset=\"utf-8\"\u003eoversize, leży zgodnie z tabelą. Chcesz mocniejszy oversize, bierz rozmiar wyżej.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePielęgnacja:\u003c\/strong\u003e pranie max 30°C, na lewej stronie, bez suszarki\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eDostawa: \u003c\/b\u003e4-8 tygodni. Kupujesz sztukę, we can't rush it.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!-- ============ SIZE FINDER ============ --\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    #fnsSizeFinder{--fns-ink:#111;--fns-line:#e0e0e0;--fns-mut:#999;font-family:sans-serif;color:var(--fns-ink);border:1px solid var(--fns-ink);margin:0 0 28px;}\n    #fnsSizeFinder .fns-hd{background:var(--fns-ink);color:#fff;padding:9px 12px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:500;}\n    #fnsSizeFinder .fns-bd{padding:16px 12px 14px;}\n    #fnsSizeFinder .fns-lb{display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--fns-mut);margin:0 0 6px;font-weight:500;line-height:1;}\n    #fnsSizeFinder .fns-row{display:flex;gap:10px;margin:0 0 14px;flex-wrap:wrap;}\n    #fnsSizeFinder .fns-col{flex:1 1 120px;min-width:0;}\n    #fnsSizeFinder .fns-seg{display:flex;border:1px solid var(--fns-line);}\n    #fnsSizeFinder .fns-seg button{flex:1;appearance:none;background:#fff;border:0;border-right:1px solid var(--fns-line);padding:9px 4px;font:inherit;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#555;cursor:pointer;line-height:1.2;transition:background .15s,color .15s;}\n    #fnsSizeFinder .fns-seg button:last-child{border-right:0;}\n    #fnsSizeFinder .fns-seg button:hover{background:#f4f4f4;}\n    #fnsSizeFinder .fns-seg button[aria-pressed=\"true\"]{background:var(--fns-ink);color:#fff;}\n    #fnsSizeFinder input{width:100%;box-sizing:border-box;border:1px solid var(--fns-line);padding:9px 10px;font:inherit;font-size:14px;color:var(--fns-ink);background:#fff;border-radius:0;-webkit-appearance:none;appearance:none;margin:0;}\n    #fnsSizeFinder input:focus{outline:0;border-color:var(--fns-ink);}\n    #fnsSizeFinder input::-webkit-outer-spin-button,#fnsSizeFinder input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}\n    #fnsSizeFinder .fns-out{border-top:1px solid var(--fns-line);margin-top:2px;padding-top:14px;}\n    #fnsSizeFinder .fns-empty{font-size:12px;color:var(--fns-mut);font-style:italic;line-height:1.6;margin:0;}\n    #fnsSizeFinder .fns-pick{display:flex;align-items:baseline;gap:10px;margin:0 0 8px;}\n    #fnsSizeFinder .fns-big{font-size:40px;font-weight:700;line-height:.9;letter-spacing:-.02em;}\n    #fnsSizeFinder .fns-cap{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fns-mut);}\n    #fnsSizeFinder .fns-msg{font-size:12.5px;line-height:1.6;margin:0 0 10px;color:#333;}\n    #fnsSizeFinder .fns-dim{display:flex;gap:18px;flex-wrap:wrap;font-size:11px;color:#555;border-top:1px solid var(--fns-line);padding-top:10px;}\n    #fnsSizeFinder .fns-dim b{display:block;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--fns-mut);font-weight:500;margin-bottom:2px;}\n    #fnsSizeFinder .fns-warn{font-size:11.5px;color:#a02020;margin:8px 0 0;line-height:1.5;}\n  \u003c\/style\u003e\n\u003cdiv style=\"font-family: sans-serif; color: #111; line-height: 1.8; max-width: 560px;\"\u003e\n\u003cdiv id=\"fnsSizeFinder\"\u003e\n\u003cdiv class=\"fns-hd\"\u003edobierz rozmiar\u003c\/div\u003e\n\u003cdiv class=\"fns-bd\"\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\" style=\"flex: 1 1 100%;\"\u003e\n\u003cspan class=\"fns-lb\"\u003epłeć\u003c\/span\u003e\n\u003cdiv class=\"fns-seg\" data-fns-group=\"sex\"\u003e\n\u003cbutton type=\"button\" data-v=\"m\" aria-pressed=\"false\"\u003emężczyzna\u003c\/button\u003e \u003cbutton type=\"button\" data-v=\"f\" aria-pressed=\"false\"\u003ekobieta\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\"\u003e\n\u003cspan class=\"fns-lb\"\u003ewzrost (cm)\u003c\/span\u003e \u003cinput id=\"fnsH\" type=\"number\" inputmode=\"numeric\" min=\"140\" max=\"220\" placeholder=\"np. 178\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-col\"\u003e\n\u003cspan class=\"fns-lb\"\u003ewaga (kg)\u003c\/span\u003e \u003cinput id=\"fnsW\" type=\"number\" inputmode=\"numeric\" min=\"35\" max=\"200\" placeholder=\"np. 72\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\" style=\"flex: 1 1 100%;\"\u003e\n\u003cspan class=\"fns-lb\"\u003ejak ma leżeć\u003c\/span\u003e\n\u003cdiv class=\"fns-seg\" data-fns-group=\"fit\"\u003e\n\u003cbutton type=\"button\" data-v=\"-0.5\" aria-pressed=\"false\"\u003edopasowany\u003c\/button\u003e \u003cbutton type=\"button\" data-v=\"0.5\" aria-pressed=\"false\"\u003eoversized\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-out\" id=\"fnsOut\"\u003e\n\u003cp class=\"fns-empty\"\u003euzupełnij pola powyżej — podpowiemy rozmiar.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n  (function(){\n    var root = document.getElementById('fnsSizeFinder');\n    if(!root || root.dataset.fnsInit) return;\n    root.dataset.fnsInit = '1';\n\n    var SIZES = [\n      {n:'S',  w:64, l:64, s:57},\n      {n:'M',  w:66, l:65, s:60},\n      {n:'L',  w:69, l:67, s:62},\n      {n:'XL', w:71, l:69, s:65}\n    ];\n\n    var state = {sex:null, fit:null};\n    var out = root.querySelector('#fnsOut');\n    var inH = root.querySelector('#fnsH');\n    var inW = root.querySelector('#fnsW');\n\n    root.querySelectorAll('[data-fns-group]').forEach(function(g){\n      g.addEventListener('click', function(e){\n        var b = e.target.closest('button');\n        if(!b) return;\n        g.querySelectorAll('button').forEach(function(x){ x.setAttribute('aria-pressed','false'); });\n        b.setAttribute('aria-pressed','true');\n        state[g.dataset.fnsGroup] = b.dataset.v;\n        render();\n      });\n    });\n    inH.addEventListener('input', render);\n    inW.addEventListener('input', render);\n\n    function heightBase(h){\n      if(h \u003c= 172) return 0;\n      if(h \u003c= 182) return 1;\n      if(h \u003c= 190) return 2;\n      return 3;\n    }\n\n    function bmiAdj(bmi){\n      if(bmi \u003c 18.5) return -0.5;\n      if(bmi \u003c 25)   return 0;\n      if(bmi \u003c 29)   return 0.5;\n      if(bmi \u003c 33)   return 1;\n      return 1.5;\n    }\n\n    function render(){\n      var h = parseFloat(inH.value), w = parseFloat(inW.value);\n      var ok = state.sex \u0026\u0026 state.fit !== null \u0026\u0026 h \u003e= 140 \u0026\u0026 h \u003c= 220 \u0026\u0026 w \u003e= 35 \u0026\u0026 w \u003c= 200;\n\n      if(!ok){\n        out.innerHTML = '\u003cp class=\"fns-empty\"\u003euzupełnij pola powyżej — podpowiemy rozmiar.\u003c\/p\u003e';\n        return;\n      }\n\n      var bmi   = w \/ Math.pow(h\/100, 2);\n      var score = heightBase(h) + bmiAdj(bmi) + (state.sex === 'f' ? -0.5 : 0) + parseFloat(state.fit);\n\n      var idx  = Math.max(0, Math.min(3, Math.round(score)));\n      var pick = SIZES[idx];\n\n      var msg;\n      if(state.fit === '-0.5'){\n        msg = 'Najbardziej dopasowany fit, jaki da się tu uzyskać — krój i tak jest szyty oversize, więc leży luźno w barkach.';\n        if(idx \u003c 3) msg += ' Chcesz luźniej — weź ' + SIZES[idx+1].n + '.';\n      } else {\n        msg = 'Wyraźnie luźno — opuszczone ramię, szeroka boxy sylwetka, rękaw lekko zachodzi na dłoń.';\n        if(idx \u003e 0) msg += ' Wolisz bliżej ciała — weź ' + SIZES[idx-1].n + '.';\n      }\n\n      var warn = '';\n      if(score \u003e 3.4)      warn = 'Uwaga: XL to nasz największy rozmiar — przy Twoich parametrach i wybranym fitcie może leżeć bardziej \"true to size\" niż oversize.';\n      else if(score \u003c -0.4) warn = 'Uwaga: S to nasz najmniejszy rozmiar — przy Twoich parametrach będzie leżał wyraźnie oversize.';\n\n      out.innerHTML =\n        '\u003cdiv class=\"fns-pick\"\u003e\u003cspan class=\"fns-big\"\u003e' + pick.n + '\u003c\/span\u003e' +\n        '\u003cspan class=\"fns-cap\"\u003etwój rozmiar\u003c\/span\u003e\u003c\/div\u003e' +\n        '\u003cp class=\"fns-msg\"\u003e' + msg + '\u003c\/p\u003e' +\n        '\u003cdiv class=\"fns-dim\"\u003e' +\n          '\u003cspan\u003e\u003cb\u003ewidth\u003c\/b\u003e' + pick.w + ' cm\u003c\/span\u003e' +\n          '\u003cspan\u003e\u003cb\u003elength\u003c\/b\u003e' + pick.l + ' cm\u003c\/span\u003e' +\n          '\u003cspan\u003e\u003cb\u003esleeve\u003c\/b\u003e' + pick.s + ' cm\u003c\/span\u003e' +\n        '\u003c\/div\u003e' +\n        (warn ? '\u003cp class=\"fns-warn\"\u003e' + warn + '\u003c\/p\u003e' : '');\n    }\n  })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- ========== \/SIZE FINDER ========== --\u003e\n\u003cp style=\"font-size: 13px; color: #333; margin-bottom: 6px;\"\u003e\u003cstrong\u003e\u003c\/strong\u003esize chart\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 13px;\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background: #111; color: #fff;\"\u003e\n\u003cth style=\"padding: 9px 10px; text-align: left; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eSIZE\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eWIDTH\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eLENGTH\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eSLEEVE\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eHEIGHT\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eS\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e64\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e64\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e57\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e155–172\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background: #f8f8f8;\"\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eM\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e66\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e65\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e60\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e173–182\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e69\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e67\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e62\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e182–190\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background: #f8f8f8;\"\u003e\n\u003ctd style=\"padding: 10px;\"\u003e\u003cstrong\u003eXL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e71\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e69\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e65\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; color: #999; font-style: italic;\"\u003e190+\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"font-size: 11px; color: #999; margin-top: 8px; font-style: italic;\"\u003e* everything in cm, fit is true to size.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"finesse.","offers":[{"title":"S","offer_id":55601910382857,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"M","offer_id":55601910350089,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"L","offer_id":55601910317321,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"XL","offer_id":55601910415625,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0842\/2712\/9609\/files\/hf_20260728_223356_3d583edf-1dcf-4ba9-93b8-bcfe2ca4afbe.png?v=1785278271"},{"product_id":"where-is-love-pink-hoodie-1","title":"\"where is love?\" pink hoodie","description":"\u003cdiv style=\"font-family: sans-serif; color: #111; line-height: 1.8; max-width: 560px;\"\u003e\n\u003cp style=\"font-size: 15px; font-weight: 600; margin-bottom: 8px;\"\u003eSzyte na zamówienie - specjalnie dla Ciebie\u003c\/p\u003e\n\u003chr style=\"border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;\"\u003e\n\u003cp\u003e\u003cstrong\u003eMateriał:\u003c\/strong\u003e 90% bawełna, 10% poliester — 420g\/m² \u003cmeta charset=\"utf-8\"\u003e(ciężka, gęsta dzianina)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKrój:\u003c\/strong\u003e \u003cmeta charset=\"utf-8\"\u003eoversize, leży zgodnie z tabelą. Chcesz mocniejszy oversize, bierz rozmiar wyżej.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePielęgnacja:\u003c\/strong\u003e pranie max 30°C, na lewej stronie, bez suszarki\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eDostawa: \u003c\/b\u003e4-8 tygodni. Kupujesz sztukę, we can't rush it.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!-- ============ SIZE FINDER ============ --\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    #fnsSizeFinder{--fns-ink:#111;--fns-line:#e0e0e0;--fns-mut:#999;font-family:sans-serif;color:var(--fns-ink);border:1px solid var(--fns-ink);margin:0 0 28px;}\n    #fnsSizeFinder .fns-hd{background:var(--fns-ink);color:#fff;padding:9px 12px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:500;}\n    #fnsSizeFinder .fns-bd{padding:16px 12px 14px;}\n    #fnsSizeFinder .fns-lb{display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--fns-mut);margin:0 0 6px;font-weight:500;line-height:1;}\n    #fnsSizeFinder .fns-row{display:flex;gap:10px;margin:0 0 14px;flex-wrap:wrap;}\n    #fnsSizeFinder .fns-col{flex:1 1 120px;min-width:0;}\n    #fnsSizeFinder .fns-seg{display:flex;border:1px solid var(--fns-line);}\n    #fnsSizeFinder .fns-seg button{flex:1;appearance:none;background:#fff;border:0;border-right:1px solid var(--fns-line);padding:9px 4px;font:inherit;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#555;cursor:pointer;line-height:1.2;transition:background .15s,color .15s;}\n    #fnsSizeFinder .fns-seg button:last-child{border-right:0;}\n    #fnsSizeFinder .fns-seg button:hover{background:#f4f4f4;}\n    #fnsSizeFinder .fns-seg button[aria-pressed=\"true\"]{background:var(--fns-ink);color:#fff;}\n    #fnsSizeFinder input{width:100%;box-sizing:border-box;border:1px solid var(--fns-line);padding:9px 10px;font:inherit;font-size:14px;color:var(--fns-ink);background:#fff;border-radius:0;-webkit-appearance:none;appearance:none;margin:0;}\n    #fnsSizeFinder input:focus{outline:0;border-color:var(--fns-ink);}\n    #fnsSizeFinder input::-webkit-outer-spin-button,#fnsSizeFinder input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}\n    #fnsSizeFinder .fns-out{border-top:1px solid var(--fns-line);margin-top:2px;padding-top:14px;}\n    #fnsSizeFinder .fns-empty{font-size:12px;color:var(--fns-mut);font-style:italic;line-height:1.6;margin:0;}\n    #fnsSizeFinder .fns-pick{display:flex;align-items:baseline;gap:10px;margin:0 0 8px;}\n    #fnsSizeFinder .fns-big{font-size:40px;font-weight:700;line-height:.9;letter-spacing:-.02em;}\n    #fnsSizeFinder .fns-cap{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fns-mut);}\n    #fnsSizeFinder .fns-msg{font-size:12.5px;line-height:1.6;margin:0 0 10px;color:#333;}\n    #fnsSizeFinder .fns-dim{display:flex;gap:18px;flex-wrap:wrap;font-size:11px;color:#555;border-top:1px solid var(--fns-line);padding-top:10px;}\n    #fnsSizeFinder .fns-dim b{display:block;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--fns-mut);font-weight:500;margin-bottom:2px;}\n    #fnsSizeFinder .fns-warn{font-size:11.5px;color:#a02020;margin:8px 0 0;line-height:1.5;}\n  \u003c\/style\u003e\n\u003cdiv style=\"font-family: sans-serif; color: #111; line-height: 1.8; max-width: 560px;\"\u003e\n\u003cdiv id=\"fnsSizeFinder\"\u003e\n\u003cdiv class=\"fns-hd\"\u003edobierz rozmiar\u003c\/div\u003e\n\u003cdiv class=\"fns-bd\"\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\" style=\"flex: 1 1 100%;\"\u003e\n\u003cspan class=\"fns-lb\"\u003epłeć\u003c\/span\u003e\n\u003cdiv class=\"fns-seg\" data-fns-group=\"sex\"\u003e\n\u003cbutton type=\"button\" data-v=\"m\" aria-pressed=\"false\"\u003emężczyzna\u003c\/button\u003e \u003cbutton type=\"button\" data-v=\"f\" aria-pressed=\"false\"\u003ekobieta\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\"\u003e\n\u003cspan class=\"fns-lb\"\u003ewzrost (cm)\u003c\/span\u003e \u003cinput id=\"fnsH\" type=\"number\" inputmode=\"numeric\" min=\"140\" max=\"220\" placeholder=\"np. 178\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-col\"\u003e\n\u003cspan class=\"fns-lb\"\u003ewaga (kg)\u003c\/span\u003e \u003cinput id=\"fnsW\" type=\"number\" inputmode=\"numeric\" min=\"35\" max=\"200\" placeholder=\"np. 72\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-row\"\u003e\n\u003cdiv class=\"fns-col\" style=\"flex: 1 1 100%;\"\u003e\n\u003cspan class=\"fns-lb\"\u003ejak ma leżeć\u003c\/span\u003e\n\u003cdiv class=\"fns-seg\" data-fns-group=\"fit\"\u003e\n\u003cbutton type=\"button\" data-v=\"-0.5\" aria-pressed=\"false\"\u003edopasowany\u003c\/button\u003e \u003cbutton type=\"button\" data-v=\"0.5\" aria-pressed=\"false\"\u003eoversized\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fns-out\" id=\"fnsOut\"\u003e\n\u003cp class=\"fns-empty\"\u003euzupełnij pola powyżej — podpowiemy rozmiar.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n  (function(){\n    var root = document.getElementById('fnsSizeFinder');\n    if(!root || root.dataset.fnsInit) return;\n    root.dataset.fnsInit = '1';\n\n    var SIZES = [\n      {n:'S',  w:64, l:64, s:57},\n      {n:'M',  w:66, l:65, s:60},\n      {n:'L',  w:69, l:67, s:62},\n      {n:'XL', w:71, l:69, s:65}\n    ];\n\n    var state = {sex:null, fit:null};\n    var out = root.querySelector('#fnsOut');\n    var inH = root.querySelector('#fnsH');\n    var inW = root.querySelector('#fnsW');\n\n    root.querySelectorAll('[data-fns-group]').forEach(function(g){\n      g.addEventListener('click', function(e){\n        var b = e.target.closest('button');\n        if(!b) return;\n        g.querySelectorAll('button').forEach(function(x){ x.setAttribute('aria-pressed','false'); });\n        b.setAttribute('aria-pressed','true');\n        state[g.dataset.fnsGroup] = b.dataset.v;\n        render();\n      });\n    });\n    inH.addEventListener('input', render);\n    inW.addEventListener('input', render);\n\n    function heightBase(h){\n      if(h \u003c= 172) return 0;\n      if(h \u003c= 182) return 1;\n      if(h \u003c= 190) return 2;\n      return 3;\n    }\n\n    function bmiAdj(bmi){\n      if(bmi \u003c 18.5) return -0.5;\n      if(bmi \u003c 25)   return 0;\n      if(bmi \u003c 29)   return 0.5;\n      if(bmi \u003c 33)   return 1;\n      return 1.5;\n    }\n\n    function render(){\n      var h = parseFloat(inH.value), w = parseFloat(inW.value);\n      var ok = state.sex \u0026\u0026 state.fit !== null \u0026\u0026 h \u003e= 140 \u0026\u0026 h \u003c= 220 \u0026\u0026 w \u003e= 35 \u0026\u0026 w \u003c= 200;\n\n      if(!ok){\n        out.innerHTML = '\u003cp class=\"fns-empty\"\u003euzupełnij pola powyżej — podpowiemy rozmiar.\u003c\/p\u003e';\n        return;\n      }\n\n      var bmi   = w \/ Math.pow(h\/100, 2);\n      var score = heightBase(h) + bmiAdj(bmi) + (state.sex === 'f' ? -0.5 : 0) + parseFloat(state.fit);\n\n      var idx  = Math.max(0, Math.min(3, Math.round(score)));\n      var pick = SIZES[idx];\n\n      var msg;\n      if(state.fit === '-0.5'){\n        msg = 'Najbardziej dopasowany fit, jaki da się tu uzyskać — krój i tak jest szyty oversize, więc leży luźno w barkach.';\n        if(idx \u003c 3) msg += ' Chcesz luźniej — weź ' + SIZES[idx+1].n + '.';\n      } else {\n        msg = 'Wyraźnie luźno — opuszczone ramię, szeroka boxy sylwetka, rękaw lekko zachodzi na dłoń.';\n        if(idx \u003e 0) msg += ' Wolisz bliżej ciała — weź ' + SIZES[idx-1].n + '.';\n      }\n\n      var warn = '';\n      if(score \u003e 3.4)      warn = 'Uwaga: XL to nasz największy rozmiar — przy Twoich parametrach i wybranym fitcie może leżeć bardziej \"true to size\" niż oversize.';\n      else if(score \u003c -0.4) warn = 'Uwaga: S to nasz najmniejszy rozmiar — przy Twoich parametrach będzie leżał wyraźnie oversize.';\n\n      out.innerHTML =\n        '\u003cdiv class=\"fns-pick\"\u003e\u003cspan class=\"fns-big\"\u003e' + pick.n + '\u003c\/span\u003e' +\n        '\u003cspan class=\"fns-cap\"\u003etwój rozmiar\u003c\/span\u003e\u003c\/div\u003e' +\n        '\u003cp class=\"fns-msg\"\u003e' + msg + '\u003c\/p\u003e' +\n        '\u003cdiv class=\"fns-dim\"\u003e' +\n          '\u003cspan\u003e\u003cb\u003ewidth\u003c\/b\u003e' + pick.w + ' cm\u003c\/span\u003e' +\n          '\u003cspan\u003e\u003cb\u003elength\u003c\/b\u003e' + pick.l + ' cm\u003c\/span\u003e' +\n          '\u003cspan\u003e\u003cb\u003esleeve\u003c\/b\u003e' + pick.s + ' cm\u003c\/span\u003e' +\n        '\u003c\/div\u003e' +\n        (warn ? '\u003cp class=\"fns-warn\"\u003e' + warn + '\u003c\/p\u003e' : '');\n    }\n  })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- ========== \/SIZE FINDER ========== --\u003e\n\u003cp style=\"font-size: 13px; color: #333; margin-bottom: 6px;\"\u003e\u003cstrong\u003e\u003c\/strong\u003esize chart\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 13px;\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background: #111; color: #fff;\"\u003e\n\u003cth style=\"padding: 9px 10px; text-align: left; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eSIZE\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eWIDTH\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eLENGTH\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eSLEEVE\u003c\/th\u003e\n\u003cth style=\"padding: 9px 10px; text-align: center; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500;\"\u003eHEIGHT\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eS\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e64\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e64\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e57\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e155–172\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background: #f8f8f8;\"\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eM\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e66\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e65\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e60\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e173–182\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 10px; border-bottom: 1px solid #eee;\"\u003e\u003cstrong\u003eL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e69\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e67\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee;\"\u003e62\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; border-bottom: 1px solid #eee; color: #999; font-style: italic;\"\u003e182–190\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background: #f8f8f8;\"\u003e\n\u003ctd style=\"padding: 10px;\"\u003e\u003cstrong\u003eXL\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e71\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e69\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center;\"\u003e65\u003c\/td\u003e\n\u003ctd style=\"padding: 10px; text-align: center; color: #999; font-style: italic;\"\u003e190+\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"font-size: 11px; color: #999; margin-top: 8px; font-style: italic;\"\u003e* everything in cm, fit is true to size.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"finesse.","offers":[{"title":"S","offer_id":56378069352713,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"M","offer_id":56378069385481,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"L","offer_id":56378069418249,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true},{"title":"XL","offer_id":56378069451017,"sku":null,"price":249.0,"currency_code":"PLN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0842\/2712\/9609\/files\/hf_20260728_222914_8de66c82-a338-4e75-ac02-89aaa89cd36b.png?v=1785278199"},{"product_id":"blessing-in-disguise-black-hoodie","title":"\"blessing in disguise\" black hoodie","description":"\u003cp style=\"text-align: left;\"\u003e\u003cb\u003e\u003cu\u003ePREMADE\u003c\/u\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e100% bawelna, pętelka\u003c\/li\u003e\n\u003cli\u003e420 gsm\u003c\/li\u003e\n\u003cli\u003eDostawa 1-3 dni robocze\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eNadruk DTG\u003c\/li\u003e\n\u003cli\u003e\u003cspan style=\"text-align: center;\"\u003eModel ma 178 cm wzrostu i nosi rozmiar M\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003ePACZKOMAT MOŻNA WYBRAĆ PO ZAKUPIE\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv class=\"size-guide-container\"\u003e\n\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0842\/2712\/9609\/files\/IMG_1783.png?v=1769477030\"\u003e\u003cbr\u003e\n\u003cdiv class=\"table-scroll-container\"\u003e\n\u003ctable class=\"custom-size-chart\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e\u003c\/th\u003e\n\u003cth\u003esmall\u003c\/th\u003e\n\u003cth\u003emedium\u003c\/th\u003e\n\u003cth\u003elarge\u003c\/th\u003e\n\u003cth\u003exlarge\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003echest width (cm)\u003c\/td\u003e\n\u003ctd\u003e64\u003c\/td\u003e\n\u003ctd\u003e66\u003c\/td\u003e\n\u003ctd\u003e69\u003c\/td\u003e\n\u003ctd\u003e71\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003echest height (cm)\u003c\/td\u003e\n\u003ctd\u003e64\u003c\/td\u003e\n\u003ctd\u003e65\u003c\/td\u003e\n\u003ctd\u003e67\u003c\/td\u003e\n\u003ctd\u003e69\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003esleeve length (cm)\u003c\/td\u003e\n\u003ctd\u003e57\u003c\/td\u003e\n\u003ctd\u003e60\u003c\/td\u003e\n\u003ctd\u003e62\u003c\/td\u003e\n\u003ctd\u003e65\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: #f4f4f4;\"\u003e\n\u003ctd\u003eSugerowany wzrost (cm)\u003c\/td\u003e\n\u003ctd\u003e165 - 175\u003c\/td\u003e\n\u003ctd\u003e175 - 182\u003c\/td\u003e\n\u003ctd\u003e182 - 190\u003c\/td\u003e\n\u003ctd\u003e190 +\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"finesse.","offers":[{"title":"S","offer_id":56380373106953,"sku":null,"price":259.0,"currency_code":"PLN","in_stock":false},{"title":"M","offer_id":56380373139721,"sku":null,"price":259.0,"currency_code":"PLN","in_stock":false},{"title":"L","offer_id":56380373172489,"sku":null,"price":259.0,"currency_code":"PLN","in_stock":false},{"title":"XL","offer_id":56380373205257,"sku":null,"price":259.0,"currency_code":"PLN","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0842\/2712\/9609\/files\/IMG-1599.jpg?v=1769478150"}],"url":"https:\/\/fnsse.store\/collections\/hoodie.oembed","provider":"finesse.","version":"1.0","type":"link"}