{"product_id":"czy-mnie-stac-na-budowe-domu","title":"Czy mnie stać na budowę domu?","description":"\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Syne:wght@700;800\u0026amp;family=DM+Sans:wght@400;500\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\u003cstyle\u003e\n#kalk {\n  --ink: #0d0d0d; --paper: #f5f2ec; --accent: #c8411b;\n  --accent2: #1b4dc8; --muted: #6b6660; --border: #d8d4cc; --success: #1a7a4a;\n  all: initial; display: block;\n  font-family: 'DM Sans', sans-serif; color: var(--ink); background: var(--paper); width: 100%;\n}\n#kalk *, #kalk *::before, #kalk *::after { box-sizing: border-box; font-family: inherit; }\n#kalk input, #kalk select, #kalk button, #kalk a { -webkit-appearance: none; appearance: none; border-radius: 0; }\n#kalk .f { margin-bottom: 16px; }\n#kalk .lb { display: block; font-size: 10px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }\n#kalk input[type=number], #kalk input[type=email], #kalk select {\n  width: 100%; padding: 12px 14px; border: 2px solid var(--border) !important;\n  background: #fff !important; font-family: 'DM Sans', sans-serif !important;\n  font-size: 0.9375rem; color: var(--ink) !important; outline: none; box-shadow: none !important;\n}\n#kalk input:focus, #kalk select:focus { border-color: var(--ink) !important; }\n#kalk select {\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%230d0d0d' stroke-width='1.5' fill='none'\/%3E%3C\/svg%3E\") !important;\n  background-repeat: no-repeat !important; background-position: right 12px center !important; padding-right: 36px !important; cursor: pointer;\n}\n#kalk .g2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n@media(max-width:580px){ #kalk .g2 { grid-template-columns: 1fr; } }\n#kalk .chks { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }\n#kalk .chk { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border: 2px solid var(--border); cursor: pointer; background: #fff; transition: border-color .15s; user-select: none; }\n#kalk .chk:hover { border-color: var(--ink); }\n#kalk .chk input { display: none; }\n#kalk .cb { width: 16px; height: 16px; border: 2px solid var(--border); background: var(--paper); flex-shrink: 0; position: relative; }\n#kalk .chk.on .cb { background: var(--ink); border-color: var(--ink); }\n#kalk .chk.on .cb::after { content: ''; position: absolute; inset: 2px; background: #fff; clip-path: polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%); }\n#kalk .cl { font-size: 0.8125rem; font-weight: 500; color: var(--ink); }\n#kalk .rv { text-align: right; font-family: 'Syne', sans-serif; font-size: 1.1rem; font-weight: 800; margin-bottom: 6px; }\n#kalk input[type=range] { width: 100%; height: 4px; background: var(--border) !important; border: none !important; padding: 0 !important; cursor: pointer; accent-color: var(--ink); }\n#kalk .btn { width: 100%; padding: 16px; background: #0d0d0d !important; color: #f5f2ec !important; border: none !important; outline: none !important; box-shadow: none !important; font-family: 'Syne', sans-serif !important; font-size: 0.8125rem !important; font-weight: 700 !important; letter-spacing: 0.1em !important; text-transform: uppercase !important; cursor: pointer; transition: background .2s; margin-top: 8px; display: block; border-radius: 0 !important; }\n#kalk .btn:hover { background: #c8411b !important; color: #fff !important; }\n#kalk .res { display: none; margin-top: 24px; border: 2px solid var(--ink); background: #fff; }\n#kalk .res.on { display: block; animation: ksl .3s ease; }\n@keyframes ksl { from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:translateY(0)} }\n#kalk .rh { background: #0d0d0d; color: #fff; padding: 16px 20px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; }\n#kalk .rh h3 { font-family: 'Syne', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; opacity: 0.5; margin: 0; color: #fff; }\n#kalk .rv2 { font-family: 'Syne', sans-serif; font-size: 1.75rem; font-weight: 800; color: #fff; line-height: 1.1; }\n#kalk .rb { padding: 18px 20px; }\n#kalk .row { display: flex; justify-content: space-between; align-items: baseline; padding: 9px 0; border-bottom: 1px solid var(--border); }\n#kalk .row:last-of-type { border-bottom: none; }\n#kalk .rl { font-size: 0.8125rem; color: var(--muted); }\n#kalk .rr { font-family: 'Syne', sans-serif; font-size: 0.9375rem; font-weight: 700; color: var(--ink); }\n#kalk .row.tot .rl { font-weight: 700; color: var(--ink); }\n#kalk .row.tot .rr { color: var(--accent); font-size: 1rem; }\n#kalk .al { padding: 12px 16px; margin-top: 12px; border-left: 4px solid var(--accent); background: rgba(200,65,27,0.06); }\n#kalk .al.gr { background: rgba(26,122,74,0.06); border-color: var(--success); }\n#kalk .al.bl { background: rgba(27,77,200,0.06); border-color: var(--accent2); }\n#kalk .al p { font-size: 0.8125rem; line-height: 1.6; margin: 0; color: var(--ink); }\n#kalk .risk-lbl { display:flex; justify-content:space-between; font-size:10px; color:var(--muted); margin-bottom:4px; }\n#kalk .risk-bar { height: 6px; background: var(--border); }\n#kalk .risk-fill { height: 100%; transition: width .5s ease; }\n#kalk .lead { margin-top: 16px; border: 2px solid var(--accent); padding: 18px; background: rgba(200,65,27,0.04); }\n#kalk .lead h4 { font-family: 'Syne', sans-serif; font-size: 0.9375rem; font-weight: 800; margin: 0 0 6px; color: var(--ink); }\n#kalk .lead p { font-size: 0.8125rem; color: var(--muted); margin: 0 0 12px; line-height: 1.5; }\n#kalk .lf { display: flex; gap: 8px; flex-wrap: wrap; }\n#kalk .lf input[type=email] { flex: 1; min-width: 160px; }\n#kalk .lbtn { padding: 12px 18px; background: #c8411b !important; color: #fff !important; border: none !important; outline: none !important; box-shadow: none !important; font-family: 'Syne', sans-serif !important; font-size: 11px !important; font-weight: 700 !important; letter-spacing: 0.08em !important; text-transform: uppercase !important; cursor: pointer; white-space: nowrap; transition: background .2s; border-radius: 0 !important; }\n#kalk .lbtn:hover { background: #0d0d0d !important; }\n#kalk .lok { display: none; background: var(--success); color: #fff; padding: 12px 16px; margin-top: 8px; font-family: 'Syne', sans-serif; font-size: 0.8125rem; font-weight: 700; }\n#kalk .up { margin-top: 12px; padding: 16px 18px; background: #0d0d0d; color: #fff; display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }\n#kalk .up p { font-size: 0.8125rem; line-height: 1.5; opacity: 0.8; flex: 1; margin: 0; color: #fff; }\n#kalk .up a { display: inline-block; padding: 10px 16px; background: #c8411b !important; color: #fff !important; font-family: 'Syne', sans-serif !important; font-size: 10px !important; font-weight: 700 !important; letter-spacing: 0.08em !important; text-transform: uppercase !important; text-decoration: none !important; white-space: nowrap; border-radius: 0 !important; border: none !important; transition: opacity .2s; }\n#kalk .up a:hover { opacity: 0.8; }\n#kalk .mt12 { margin-top: 12px; }\n#kalk .ph { margin-bottom: 24px; }\n#kalk .ph h2 { font-family: 'Syne', sans-serif; font-size: 1.4rem; font-weight: 800; margin: 0 0 6px; color: var(--ink); }\n#kalk .ph p { font-size: 0.875rem; color: var(--muted); line-height: 1.6; margin: 0; }\n#kalk .main { max-width: 860px; margin: 0 auto; padding: 32px 20px 60px; background: var(--paper); }\n\u003c\/style\u003e\n\n\u003cdiv id=\"kalk\"\u003e\u003cdiv class=\"main\"\u003e\n\u003cdiv class=\"ph\"\u003e\n\u003ch2\u003eCzy mnie stać na budowę domu?\u003c\/h2\u003e\n\u003cp\u003eSprawdź realistyczny budżet i poziom ryzyka finansowego zanim zaczniesz planować budowę.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"g2\"\u003e\n\u003cdiv\u003e\n  \u003cdiv class=\"f\"\u003e\n\u003cspan class=\"lb\"\u003eWkład własny \/ oszczędności (zł)\u003c\/span\u003e\u003cinput type=\"number\" id=\"zwkl\" min=\"0\" placeholder=\"np. 150000\" oninput=\"cZ()\"\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"f\"\u003e\n\u003cspan class=\"lb\"\u003eMax rata kredytu miesięcznie (zł)\u003c\/span\u003e\u003cinput type=\"number\" id=\"zrat\" min=\"0\" placeholder=\"np. 3000\" oninput=\"cZ()\"\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"f\"\u003e\n\u003cspan class=\"lb\"\u003eCzy masz działkę?\u003c\/span\u003e\u003cselect id=\"zdz\" onchange=\"cZ()\"\u003e\u003coption value=\"0\"\u003eNie mam działki\u003c\/option\u003e\n\u003coption value=\"1\"\u003eMam działkę\u003c\/option\u003e\u003c\/select\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"f\"\u003e\n\u003cspan class=\"lb\"\u003eStandard budowy\u003c\/span\u003e\u003cselect id=\"zstd\" onchange=\"cZ()\"\u003e\u003coption value=\"3800\"\u003eEkonomiczny (~3 800 zł\/m²)\u003c\/option\u003e\n\u003coption value=\"5000\" selected\u003eŚredni (~5 000 zł\/m²)\u003c\/option\u003e\n\u003coption value=\"7000\"\u003ePremium (~7 000 zł\/m²)\u003c\/option\u003e\u003c\/select\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n  \u003cdiv class=\"f\"\u003e\n\u003cspan class=\"lb\"\u003eMetraż: \u003cspan id=\"zm2l\"\u003e100 m²\u003c\/span\u003e\u003c\/span\u003e\n    \u003cinput type=\"range\" id=\"zm2\" min=\"60\" max=\"300\" value=\"100\" oninput=\"rng('zm2','zm2l',' m²');cZ()\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbutton class=\"btn\" onclick=\"cZ();show('rz')\"\u003eOblicz zdolność budowy →\u003c\/button\u003e\n\u003cdiv class=\"res\" id=\"rz\"\u003e\n  \u003cdiv class=\"rh\"\u003e\u003cdiv\u003e\n\u003ch3\u003eMaks. bezpieczny budżet\u003c\/h3\u003e\n\u003cdiv class=\"rv2\" id=\"zbud\"\u003e—\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n  \u003cdiv class=\"rb\"\u003e\n    \u003cdiv class=\"row\"\u003e\n\u003cspan class=\"rl\"\u003eSzacowany koszt budowy\u003c\/span\u003e\u003cspan class=\"rr\" id=\"zkos\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"row\"\u003e\n\u003cspan class=\"rl\"\u003eZdolność kredytowa (est.)\u003c\/span\u003e\u003cspan class=\"rr\" id=\"zkrd\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"row tot\"\u003e\n\u003cspan class=\"rl\"\u003eŁączny dostępny budżet\u003c\/span\u003e\u003cspan class=\"rr\" id=\"zlac\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"mt12\"\u003e\n      \u003cdiv class=\"risk-lbl\"\u003e\n\u003cspan\u003ePoziom ryzyka\u003c\/span\u003e\u003cspan id=\"zrlbl\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"risk-bar\"\u003e\u003cdiv class=\"risk-fill\" id=\"zrfil\" style=\"width:0%;background:#c8411b\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"al mt12\" id=\"zalrt\"\u003e\u003cp id=\"zalrtp\"\u003e—\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"lead mt12\"\u003e\n      \u003ch4\u003eChcesz plan budowy dopasowany do Twojego budżetu?\u003c\/h4\u003e\n      \u003cp\u003ePDF: Twoja budowa krok po kroku — harmonogram, etapy, gdzie oszczędzać.\u003c\/p\u003e\n      \u003cdiv class=\"lf\"\u003e\n\u003cinput type=\"email\" id=\"emz\" placeholder=\"Twój e-mail\"\u003e\u003cbutton class=\"lbtn\" onclick=\"lead('emz','okz','zdolnosc')\"\u003eWyślij plan →\u003c\/button\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"lok\" id=\"okz\"\u003eWysłano! Sprawdź skrzynkę.\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"up\"\u003e\n\u003cp\u003ePomogę Ci zaplanować budowę bez ryzyka finansowego — od działki do klucza.\u003c\/p\u003e\n\u003ca href=\"\/pages\/konsultacja\"\u003eZaplanuj budowę ze mną\u003c\/a\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cscript\u003e\nconst $  = id =\u003e document.getElementById(id);\nconst gv = id =\u003e parseFloat($(id).value)||0;\nconst sv = (id,v) =\u003e { if($(id)) $(id).textContent=v; };\nconst F  = n =\u003e Math.round(n).toLocaleString('pl-PL')+' zł';\nconst Fn = n =\u003e Math.round(n).toLocaleString('pl-PL');\nfunction show(id){ $(id).classList.add('on'); setTimeout(()=\u003e$(id).scrollIntoView({behavior:'smooth',block:'nearest'}),100); }\nfunction tog(el,id){ el.classList.toggle('on'); $(id).checked=!$(id).checked; }\nfunction rng(i,l,s){ sv(l,$(i).value+s); }\nconst GR_KEY = '4kwer86nxyszjvs2c8ewogcc8tbftv4e';\nlet grCID = null;\nasync function getGRCID(){\n  if(grCID) return grCID;\n  try{ const r=await fetch('https:\/\/api.getresponse.com\/v3\/campaigns?query[name]=kalkulator',{headers:{'X-Auth-Token':'api-key '+GR_KEY}}); const d=await r.json(); if(d\u0026\u0026d[0]) grCID=d[0].campaignId; }catch(e){}\n  return grCID;\n}\nasync function lead(eId,okId,src){\n  const em=$(eId).value;\n  if(!em||!em.includes('@')){ alert('Podaj poprawny adres e-mail.'); return; }\n  const cid=await getGRCID();\n  if(cid){ try{ await fetch('https:\/\/api.getresponse.com\/v3\/contacts',{method:'POST',headers:{'X-Auth-Token':'api-key '+GR_KEY,'Content-Type':'application\/json'},body:JSON.stringify({email:em,campaign:{campaignId:cid}})}); }catch(e){} }\n  $(okId).style.display='block'; $(eId).style.display='none'; $(eId).nextElementSibling.style.display='none';\n}\nfunction fixBtns(){\n  document.querySelectorAll('#kalk .btn').forEach(b=\u003e{ b.style.setProperty('background','#0d0d0d','important'); b.style.setProperty('color','#f5f2ec','important'); b.style.setProperty('border','none','important'); b.style.setProperty('border-radius','0','important'); b.style.setProperty('box-shadow','none','important'); b.onmouseenter=()=\u003eb.style.setProperty('background','#c8411b','important'); b.onmouseleave=()=\u003eb.style.setProperty('background','#0d0d0d','important'); });\n  document.querySelectorAll('#kalk .lbtn').forEach(b=\u003e{ b.style.setProperty('background','#c8411b','important'); b.style.setProperty('color','#fff','important'); b.style.setProperty('border','none','important'); b.style.setProperty('border-radius','0','important'); });\n}\ndocument.addEventListener('DOMContentLoaded',fixBtns);\nsetTimeout(fixBtns,300);\n\u003c\/script\u003e\n\n\u003cscript\u003e\nfunction cZ(){\n  const wkl=gv(\"zwkl\"), rat=gv(\"zrat\");\n  const m2=parseFloat($(\"zm2\").value)||100, cena=parseFloat($(\"zstd\").value);\n  const maDz=parseInt($(\"zdz\").value);\n  sv(\"zm2l\",m2+\" m\\u00b2\");\n  const kos=m2*cena*(maDz?1:1.15), krd=rat*120, lac=wkl+krd, bud=lac*.9;\n  const brak=kos-lac, rv=Math.min(100,Math.max(0,(brak\/kos)*100+30));\n  let rlbl,rclr,atxt,acls;\n  if(brak\u003c0){rlbl=\"BEZPIECZNY\";rclr=\"#1a7a4a\";atxt=\"Mozesz budowac. Nadwyzka: \"+F(-brak)+\".\";acls=\"gr\";}\n  else if(brak\u003ckos*.2){rlbl=\"NAPIETY\";rclr=\"#e8a020\";atxt=\"Budzet napiety. Brakuje ok. \"+F(brak)+\". Rozwaz mniejszy metraz lub tanszy standard.\";acls=\"\";}\n  else{rlbl=\"RYZYKOWNY\";rclr=\"#c8411b\";atxt=\"Budzet niewystarczajacy. Brakuje \"+F(brak)+\". Potrzebujesz dodatkowego finansowania.\";acls=\"\";}\n  if(!wkl\u0026\u0026!rat) return;\n  sv(\"zbud\",F(bud)); sv(\"zkos\",F(kos)); sv(\"zkrd\",F(krd)); sv(\"zlac\",F(lac));\n  sv(\"zrlbl\",rlbl);\n  $(\"zrfil\").style.width=rv+\"%\"; $(\"zrfil\").style.background=rclr;\n  $(\"zalrt\").className=\"al mt12\"+(acls?\" \"+acls:\"\");\n  sv(\"zalrtp\",atxt);\n}\n\u003c\/script\u003e","brand":"actwithsystem.com","offers":[{"title":"Default Title","offer_id":55271497826568,"sku":"9,90","price":0.0,"currency_code":"PLN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1007\/7906\/5608\/files\/KALKALTOR_BUDZETU_BODOWY_2.jpg?v=1774824431","url":"https:\/\/actwithsystem.com\/products\/czy-mnie-stac-na-budowe-domu","provider":"actwithsystem.com","version":"1.0","type":"link"}