{"id":54262,"date":"2026-07-09T13:43:58","date_gmt":"2026-07-09T11:43:58","guid":{"rendered":"https:\/\/nilen.pl\/nilen-calculator\/"},"modified":"2026-10-14T18:14:45","modified_gmt":"2026-10-14T16:14:45","slug":"nilen-calculator","status":"publish","type":"page","link":"https:\/\/nilen.pl\/en\/nilen-calculator\/","title":{"rendered":"Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"54262\" class=\"elementor elementor-54262 elementor-54014\" data-elementor-post-type=\"page\">\n\t\t\t\t<!-- dce invisible element 1e224c9 --><div class=\"elementor-element elementor-element-7d7b9da e-con-full empty-for-mobile e-flex e-con e-parent\" data-id=\"7d7b9da\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b08e24e e-flex e-con-boxed e-con e-parent\" data-id=\"b08e24e\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cc7a6a3 elementor-widget elementor-widget-spacer\" data-id=\"cc7a6a3\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ba99a41 e-con-full e-flex e-con e-child\" data-id=\"ba99a41\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9553514 elementor-widget elementor-widget-heading\" data-id=\"9553514\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Nilen \u00b7 Krakow \u00b7 Prices 2026<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e43635a elementor-widget elementor-widget-heading\" data-id=\"e43635a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Renovation cost calculator<\/br> and finishing of an apartment or house in Krakow<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eccc81e elementor-widget elementor-widget-text-editor\" data-id=\"eccc81e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Calculate how much it really costs to finish your apartment or house in Krakow.<br\/>With materials, labor, and costs you won&#8217;t find in other calculators.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d82667 elementor-widget elementor-widget-html\" data-id=\"5d82667\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<meta charset=\"UTF-8\">\n<style>html,body{overflow-x:clip;max-width:100%;}<\/style>\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=PT+Serif:ital,wght@0,400;0,700;1,400&family=Montserrat:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* \u2500\u2500 RESET SCOPED \u2500\u2500 *\/\n#nilen-wycena *, #nilen-wycena *::before, #nilen-wycena *::after {\n  box-sizing: border-box; margin: 0; padding: 0;\n}\n#nilen-wycena input, #nilen-wycena select, #nilen-wycena textarea {\n  max-width: 100%;\n}\n\n\/* \u2500\u2500 ZMIENNE \u2500\u2500 *\/\n#nilen-wycena {\n  --cream:       #E9E1CF;\n  --cream-dark:  #DCD2BD;\n  --cream-light: #F6F1E8;\n  --green:       #3F604B;\n  --green-mid:   #4E7060;\n  --amber:       #BA6B27;\n  --amber-bg:    #F4E6D6;\n  --white:       #FFFCF6;\n  --text:        #26322A;\n  --text-m:      #49604F;\n  --text-l:      #74806F;\n  --serif: \"PT Serif\", Georgia, serif;\n  --sans:  \"Montserrat\", system-ui, sans-serif;\n\n  width: 100%;\n  max-width: 100%;\n  overflow-x: hidden;\n  overflow-x: clip;   \/* clip zamiast hidden \u2014 nie blokuje przyklejonego przycisku (starsze przegl\u0105darki u\u017cyj\u0105 hidden) *\/\n  font-family: var(--sans);\n  font-size: 15px;\n  color: var(--text);\n  line-height: 1.6;\n  letter-spacing: .005em;\n  -webkit-font-smoothing: antialiased;\n}\n\n\/* \u2500\u2500 PASEK POST\u0118PU \u2500\u2500 *\/\n#nilen-wycena .nw-prog {\n  height: 3px;\n  background: rgba(63,96,75,.15);\n  width: 100%;\n  position: relative;\n  z-index: 2;\n}\n#nilen-wycena .nw-prog-fill {\n  height: 100%;\n  background: var(--amber);\n  transition: width .45s cubic-bezier(.4,0,.2,1);\n  width: 20%;\n}\n\n\/* \u2500\u2500 SLIDE \u2014 UKRYTY \u2500\u2500 *\/\n#nilen-wycena .nw-slide { display: none; }\n#nilen-wycena .nw-slide.active {\n  display: grid;\n  grid-template-columns: 2fr 3fr;\n  min-height: 520px;\n}\n@keyframes nwIn {\n  from { opacity: 0; transform: translateY(6px); }\n  to   { opacity: 1; transform: none; }\n}\n\/* Przej\u015bcie mi\u0119dzy krokami: t\u0142o kolumn (ziele\u0144 i krem) zostaje sta\u0142e \u2014 bez przeb\u0142ysku;\n   \u0142agodnie pojawia si\u0119 tylko nowa tre\u015b\u0107, bez przesuwania (bez skoku). *\/\n@keyframes nwFade {\n  from { opacity: 0; }\n  to   { opacity: 1; }\n}\n#nilen-wycena .nw-slide.active .nw-left-inner,\n#nilen-wycena .nw-slide.active .nw-right-inner,\n#nilen-wycena .nw-slide.active .nw-step-deco,\n#nilen-wycena .nw-success.active .nw-success-left > *,\n#nilen-wycena .nw-success.active .nw-success-right > * {\n  animation: nwFade .22s ease-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  #nilen-wycena * { animation: none !important; }\n}\n\n\/* \u2500\u2500 LEWA KOLUMNA (zielona) \u2500\u2500 *\/\n#nilen-wycena .nw-left {\n  background: var(--green);\n  position: relative;\n  overflow: hidden;\n  display: flex;\n  align-items: stretch;\n}\n#nilen-wycena .nw-left-inner {\n  padding: 52px 48px 72px;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  position: relative;\n  z-index: 1;\n  flex: 1;\n}\n\n\/* Numerek t\u0142a *\/\n#nilen-wycena .nw-step-deco {\n  position: absolute;\n  bottom: -18px; right: -8px;\n  font-family: var(--serif);\n  font-size: 11rem;\n  font-weight: 700;\n  color: rgba(255,252,246,.04);\n  line-height: 1;\n  letter-spacing: -.06em;\n  user-select: none;\n  pointer-events: none;\n  z-index: 0;\n}\n\n\/* Linia akcentu przed numerem kroku *\/\n#nilen-wycena .nw-step-lbl {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  font-size: .6rem;\n  font-weight: 700;\n  letter-spacing: .2em;\n  text-transform: uppercase;\n  color: rgba(255,252,246,.5);\n  margin-bottom: 22px;\n}\n#nilen-wycena .nw-step-lbl::before {\n  content: \"\";\n  display: inline-block;\n  width: 20px; height: 1px;\n  background: var(--amber);\n  flex-shrink: 0;\n}\n\n#nilen-wycena .nw-left h2 {\n  font-family: var(--serif);\n  font-size: clamp(1.4rem, 2.6vw, 2rem);\n  font-weight: 400;\n  color: var(--white);\n  line-height: 1.22;\n  letter-spacing: -.025em;\n  margin-bottom: 18px;\n}\n#nilen-wycena .nw-left p {\n  font-size: .83rem;\n  color: rgba(255,252,246,.82);\n  line-height: 1.8;\n  max-width: 270px;\n}\n\n\/* Blok korzy\u015bci \u2014 krok 1 ================================================= *\/\n#nilen-wycena .nw-benefits {\n  margin-top: 22px;\n  border-top: 1px solid rgba(255,252,246,.15);\n  padding-top: 18px;\n}\n#nilen-wycena .nw-benefits-title {\n  font-size: .68rem !important;\n  letter-spacing: .1em;\n  text-transform: uppercase;\n  color: rgba(255,252,246,.5) !important;\n  margin: 0 0 12px !important;\n  max-width: none !important;\n}\n#nilen-wycena .nw-benefits-list {\n  list-style: none;\n  margin: 0; padding: 0;\n  display: flex; flex-direction: column; gap: 9px;\n}\n#nilen-wycena .nw-benefits-list li {\n  font-size: .8rem;\n  color: rgba(255,252,246,.88);\n  line-height: 1.6;\n  max-width: 290px;\n  padding-left: 14px;\n  position: relative;\n}\n#nilen-wycena .nw-benefits-list li::before {\n  content: '';\n  position: absolute;\n  left: 0; top: 9px;\n  width: 5px; height: 1px;\n  background: rgba(181,107,41,.8);\n}\n\n\/* Przycisk Wstecz *\/\n#nilen-wycena .nw-back-btn {\n  position: absolute;\n  bottom: 28px; left: 48px;\n  background: none; border: none; padding: 0;\n  color: rgba(255,252,246,.45);\n  font-family: var(--sans);\n  font-size: .7rem; font-weight: 500;\n  letter-spacing: .04em;\n  cursor: pointer;\n  display: flex; align-items: center; gap: 7px;\n  transition: color .2s;\n  z-index: 2;\n}\n#nilen-wycena .nw-back-btn:hover { color: rgba(255,252,246,.85); }\n#nilen-wycena .nw-back-btn.hidden { display: none; }\n\n\/* Mini podsumowanie (krok 5) *\/\n#nilen-wycena .nw-sum-mini {\n  margin-top: 28px;\n  border-top: 1px solid rgba(255,252,246,.1);\n  padding-top: 18px;\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n}\n#nilen-wycena .nw-sum-row {\n  display: flex;\n  justify-content: space-between;\n  font-size: .73rem;\n}\n#nilen-wycena .nw-sum-k { color: rgba(255,252,246,.45); }\n#nilen-wycena .nw-sum-v { color: rgba(255,252,246,.88); font-weight: 600; }\n\n\/* \u2500\u2500 PRAWA KOLUMNA \u2500\u2500 *\/\n#nilen-wycena .nw-right {\n  background: var(--white);\n  display: flex;\n  align-items: center;\n}\n#nilen-wycena .nw-right-inner {\n  padding: 44px 52px;\n  width: 100%;\n}\n\n\/* Etykieta pytania *\/\n#nilen-wycena .nw-question {\n  font-size: .62rem;\n  font-weight: 700;\n  letter-spacing: .18em;\n  text-transform: uppercase;\n  color: var(--text-l);\n  margin-bottom: 14px;\n}\n\n\/* \u2500\u2500 OPCJE (radio style) \u2500\u2500 *\/\n#nilen-wycena .nw-opts {\n  display: flex;\n  flex-direction: column;\n  gap: 9px;\n  margin-bottom: 22px;\n}\n#nilen-wycena .nw-opts--sm { gap: 8px; margin-bottom: 24px; }\n\n#nilen-wycena .nw-opt {\n  display: flex;\n  align-items: center;\n  gap: 16px;\n  padding: 12px 18px;\n  border: 1px solid rgba(63,96,75,.17);\n  background: rgba(246,241,232,.65);\n  cursor: pointer;\n  transition: border-color .17s, background .17s, box-shadow .17s;\n  user-select: none;\n}\n#nilen-wycena .nw-opt:hover {\n  border-color: rgba(186,107,39,.38);\n  background: rgba(244,230,214,.6);\n}\n#nilen-wycena .nw-opt.active {\n  border-color: var(--amber);\n  background: var(--amber-bg);\n  box-shadow: inset 0 0 0 1px var(--amber);\n}\n\n\/* Ko\u0142o radio *\/\n#nilen-wycena .nw-opt-radio {\n  width: 18px; height: 18px; min-width: 18px;\n  border: 2px solid rgba(63,96,75,.28);\n  border-radius: 50%;\n  background: #fff;\n  position: relative;\n  flex-shrink: 0;\n  transition: border-color .15s, background .15s;\n}\n#nilen-wycena .nw-opt.active .nw-opt-radio {\n  border-color: var(--amber);\n  background: var(--amber);\n}\n#nilen-wycena .nw-opt.active .nw-opt-radio::after {\n  content: \"\";\n  position: absolute; top: 50%; left: 50%;\n  transform: translate(-50%, -50%);\n  width: 6px; height: 6px;\n  border-radius: 50%;\n  background: #fff;\n}\n\n#nilen-wycena .nw-opt-content { flex: 1; }\n#nilen-wycena .nw-opt-title {\n  display: block;\n  font-size: .88rem; font-weight: 600; color: var(--text);\n  margin-bottom: 2px;\n}\n#nilen-wycena .nw-opts--sm .nw-opt-title { font-size: .84rem; }\n#nilen-wycena .nw-opt-sub {\n  font-size: .72rem; color: var(--text-m);\n}\n\n\/* \u2500\u2500 PRZYCISK DALEJ \u2500\u2500 *\/\n#nilen-wycena .nw-next-btn {\n  height: 52px; padding: 0 42px;\n  background: var(--amber); color: var(--white);\n  border: none; cursor: pointer;\n  font-family: var(--sans);\n  font-size: .72rem; font-weight: 700;\n  letter-spacing: .11em; text-transform: uppercase;\n  display: inline-flex; align-items: center; gap: 9px;\n  transition: background .18s;\n}\n#nilen-wycena .nw-next-btn:hover { background: var(--green); }\n#nilen-wycena .nw-next-btn:disabled { opacity: .45; cursor: not-allowed; }\n\n\/* \u2500\u2500 SUWAK (metra\u017c) \u2500\u2500 *\/\n#nilen-wycena .nw-area-big {\n  font-family: var(--serif);\n  font-size: 2.2rem; color: var(--green);\n  display: block; line-height: 1;\n  margin-bottom: 12px;\n}\n#nilen-wycena .nw-range {\n  -webkit-appearance: none; appearance: none;\n  width: 100%; height: 2px;\n  background: rgba(63,96,75,.25); outline: none; cursor: pointer;\n  margin-bottom: 10px;\n}\n#nilen-wycena .nw-range::-webkit-slider-thumb {\n  -webkit-appearance: none;\n  width: 22px; height: 22px;\n  background: var(--amber);\n  border: 3px solid var(--white);\n  box-shadow: 0 0 0 1px var(--amber);\n  cursor: pointer; border-radius: 0;\n}\n#nilen-wycena .nw-range::-moz-range-thumb {\n  width: 22px; height: 22px;\n  background: var(--amber);\n  border: 3px solid var(--white);\n  cursor: pointer; border-radius: 0;\n}\n#nilen-wycena .nw-range-marks {\n  position: relative;\n  height: 16px;\n  font-size: .67rem; color: var(--text-l);\n  margin-bottom: 18px;\n}\n#nilen-wycena .nw-range-marks span {\n  position: absolute;\n  transform: translateX(-50%);\n  white-space: nowrap;\n}\n\/* Pozycje dok\u0142adne wg skali 20\u2013200 (180 jednostek):\n   20  \u2192  0%,  75 \u2192 30.56%,  125 \u2192 58.33%,  200 \u2192 100% *\/\n#nilen-wycena .nw-range-marks span:nth-child(1) { left: 0%;     transform: none; }\n#nilen-wycena .nw-range-marks span:nth-child(2) { left: 30.56%; }\n#nilen-wycena .nw-range-marks span:nth-child(3) { left: 58.33%; }\n#nilen-wycena .nw-range-marks span:nth-child(4) { left: 100%;   transform: translateX(-100%); }\n\n\/* Dok\u0142adny metra\u017c (pole tekstowe) *\/\n#nilen-wycena .nw-area-exact {\n  display: flex; align-items: center; gap: 10px;\n  margin-bottom: 20px;\n}\n#nilen-wycena .nw-area-exact label {\n  font-size: .62rem; font-weight: 700;\n  letter-spacing: .14em; text-transform: uppercase;\n  color: var(--text-l); white-space: nowrap;\n}\n#nilen-wycena .nw-area-exact input {\n  width: 90px; height: 40px;\n  border: 1px solid rgba(63,96,75,.22);\n  background: var(--cream-light);\n  font-family: var(--sans); font-size: .9rem;\n  color: var(--green); text-align: center;\n  padding: 0 10px; outline: none;\n  transition: border-color .15s;\n}\n#nilen-wycena .nw-area-exact input:focus { border-color: var(--amber); background: #fff; }\n\n\/* \u2500\u2500 LICZNIKI POKOI \u2500\u2500 *\/\n#nilen-wycena .nw-field-label {\n  font-size: .62rem; font-weight: 700;\n  letter-spacing: .15em; text-transform: uppercase;\n  color: var(--text-l); display: block;\n  margin-bottom: 12px;\n}\n#nilen-wycena .nw-rooms {\n  display: grid; grid-template-columns: 1fr 1fr;\n  gap: 10px; margin-bottom: 20px;\n}\n#nilen-wycena .nw-room {\n  display: flex; align-items: center;\n  justify-content: space-between;\n  padding: 12px 14px;\n  border: 1px solid rgba(63,96,75,.17);\n  background: rgba(246,241,232,.65);\n}\n#nilen-wycena .nw-room-name { font-size: .8rem; color: var(--text); }\n#nilen-wycena .nw-counter { display: flex; align-items: center; gap: 12px; }\n#nilen-wycena .nw-cnt-btn {\n  width: 26px; height: 26px;\n  border: 1px solid rgba(63,96,75,.28);\n  background: none; cursor: pointer;\n  color: var(--amber); font-size: .95rem; font-weight: 700;\n  display: flex; align-items: center; justify-content: center;\n  font-family: var(--sans);\n  transition: background .15s, color .15s;\n}\n#nilen-wycena .nw-cnt-btn:hover { background: var(--amber); color: #fff; }\n#nilen-wycena .nw-cnt-val {\n  font-weight: 700; font-size: .88rem;\n  min-width: 18px; text-align: center; color: var(--text);\n}\n\n\/* \u2500\u2500 CHECKBOXY DODATKOWE \u2500\u2500 *\/\n#nilen-wycena .nw-extras {\n  display: flex; flex-direction: column; gap: 8px;\n  margin-bottom: 32px;\n}\n#nilen-wycena .nw-extra {\n  display: flex; align-items: center; gap: 14px;\n  padding: 13px 16px;\n  border: 1px solid rgba(63,96,75,.17);\n  background: rgba(246,241,232,.65);\n  cursor: pointer;\n  transition: border-color .17s, background .17s;\n}\n#nilen-wycena .nw-extra:hover { border-color: rgba(186,107,39,.35); background: rgba(244,230,214,.5); }\n#nilen-wycena .nw-extra:has(input:checked) { border-color: var(--amber); background: var(--amber-bg); }\n\n#nilen-wycena .nw-extra input[type=\"checkbox\"] {\n  appearance: none; -webkit-appearance: none;\n  width: 18px; height: 18px; min-width: 18px;\n  display: flex; align-items: center; justify-content: center;\n  border: 1.5px solid rgba(63,96,75,.32);\n  background: #fff;\n  display: inline-grid; place-content: center;\n  cursor: pointer; flex-shrink: 0;\n  transition: background .12s, border-color .12s;\n}\n#nilen-wycena .nw-extra input[type=\"checkbox\"]::before {\n  content: \"\\2713\";\n  display: block; line-height: 1;\n  font-size: 12px; font-weight: 700; color: #fff;\n  transform: scale(0); transition: transform .12s ease;\n}\n#nilen-wycena .nw-extra input[type=\"checkbox\"]:checked {\n  background: var(--amber); border-color: var(--amber);\n}\n#nilen-wycena .nw-extra input[type=\"checkbox\"]:checked::before { transform: scale(1); }\n\n#nilen-wycena .nw-extra-name { font-size: .83rem; font-weight: 500; color: var(--text); display: block; }\n#nilen-wycena .nw-extra-hint { font-size: .7rem; color: var(--text-l); }\n\n\/* \u2500\u2500 FORMULARZ (krok 5) \u2500\u2500 *\/\n#nilen-wycena .nw-form-grid {\n  display: grid; grid-template-columns: 1fr 1fr;\n  gap: 14px; margin-bottom: 18px;\n}\n#nilen-wycena .nw-form-grid .full { grid-column: 1 \/ -1; }\n#nilen-wycena .nw-input-lbl {\n  font-size: .6rem; font-weight: 700;\n  letter-spacing: .14em; text-transform: uppercase;\n  color: var(--text-l); display: block; margin-bottom: 6px;\n}\n#nilen-wycena .nw-input {\n  width: 100%; height: 48px;\n  border: 1px solid rgba(63,96,75,.2);\n  background: rgba(246,241,232,.7);\n  font-family: var(--sans); font-size: .88rem;\n  color: var(--text); padding: 0 14px; outline: none;\n  transition: border-color .15s, background .15s;\n}\n#nilen-wycena .nw-input:focus { border-color: var(--amber); background: #fff; }\n#nilen-wycena .nw-input.nw-err { border-color: #c0392b; }\n#nilen-wycena .nw-req { color: var(--amber); }\n\n\/* Zgody *\/\n#nilen-wycena .nw-consents {\n  display: flex; flex-direction: column;\n  gap: 10px; margin-bottom: 16px;\n}\n#nilen-wycena .nw-consent {\n  display: flex; gap: 11px; align-items: flex-start;\n  font-size: .74rem; color: var(--text-m);\n  line-height: 1.65; cursor: pointer;\n}\n#nilen-wycena .nw-consent input[type=\"checkbox\"] {\n  appearance: none; -webkit-appearance: none;\n  width: 16px; height: 16px; min-width: 16px;\n  display: flex; align-items: center; justify-content: center;\n  border: 1.5px solid rgba(63,96,75,.3);\n  background: #fff;\n  display: inline-grid; place-content: center;\n  cursor: pointer; flex-shrink: 0; margin-top: 3px;\n  transition: background .12s, border-color .12s;\n}\n#nilen-wycena .nw-consent input[type=\"checkbox\"]::before {\n  content: \"\\2713\";\n  display: block; line-height: 1;\n  font-size: 11px; font-weight: 700; color: #fff;\n  transform: scale(0); transition: transform .12s ease;\n}\n#nilen-wycena .nw-consent input[type=\"checkbox\"]:checked {\n  background: var(--green); border-color: var(--green);\n}\n#nilen-wycena .nw-consent input[type=\"checkbox\"]:checked::before { transform: scale(1); }\n#nilen-wycena .nw-consent strong { color: var(--text); }\n#nilen-wycena .nw-consent--all { cursor: pointer; }\n#nilen-wycena .nw-consent--all input:checked { background: var(--amber); border-color: var(--amber); }\n\n#nilen-wycena .nw-rodo {\n  font-size: .67rem; color: var(--text-l); line-height: 1.65;\n  margin-bottom: 22px;\n}\n#nilen-wycena .nw-rodo a { color: var(--amber); }\n\n\/* Pole miasta (krok 1) \u2014 rozwijane po wyborze \u201eInna lokalizacja\u201d *\/\n#nilen-wycena .nw-city-wrap {\n  display: none;\n  margin: -22px 0 32px;\n  animation: nwIn .25s ease;\n}\n#nilen-wycena .nw-city-wrap.open { display: block; }\n\n#nilen-wycena .nw-error {\n  display: none;\n  font-size: .76rem; color: #c0392b;\n  padding: 11px 14px;\n  border-left: 2px solid #c0392b;\n  background: rgba(192,57,43,.05);\n  margin-bottom: 16px; line-height: 1.5;\n}\n\n\/* \u2500\u2500 EKRAN SUKCESU \u2500\u2500 *\/\n#nilen-wycena .nw-success { display: none; }\n#nilen-wycena .nw-success.active {\n  display: grid;\n  grid-template-columns: 2fr 3fr;\n  min-height: 520px;\n}\n#nilen-wycena .nw-success-left {\n  background: var(--green);\n  padding: 64px 48px;\n  display: flex; flex-direction: column;\n  justify-content: center;\n  position: relative; overflow: hidden;\n}\n#nilen-wycena .nw-success-right {\n  background: var(--white);\n  padding: 64px 56px;\n  display: flex; align-items: center;\n}\n#nilen-wycena .nw-check-icon {\n  width: 54px; height: 54px;\n  border: 1px solid rgba(255,252,246,.28);\n  display: flex; align-items: center; justify-content: center;\n  margin-bottom: 26px; flex-shrink: 0;\n}\n#nilen-wycena .nw-success-left h2 {\n  font-family: var(--serif);\n  font-size: clamp(1.45rem, 2.8vw, 2rem);\n  font-weight: 400; color: var(--white);\n  letter-spacing: -.025em; line-height: 1.22;\n  margin-bottom: 16px;\n}\n#nilen-wycena .nw-success-left p {\n  font-size: .82rem;\n  color: rgba(255,252,246,.6);\n  line-height: 1.8; max-width: 270px;\n}\n#nilen-wycena .nw-success-deco {\n  position: absolute; bottom: -20px; right: -10px;\n  font-family: var(--serif); font-size: 11rem;\n  font-weight: 700; color: rgba(255,252,246,.04);\n  line-height: 1; user-select: none; pointer-events: none;\n  letter-spacing: -.06em;\n}\n#nilen-wycena .nw-next-steps {\n  display: flex; flex-direction: column; gap: 18px;\n  margin-bottom: 36px;\n}\n#nilen-wycena .nw-next-step {\n  display: flex; gap: 16px; align-items: flex-start;\n}\n#nilen-wycena .nw-step-num-box {\n  width: 26px; height: 26px; min-width: 26px;\n  border: 1px solid var(--amber);\n  display: flex; align-items: center; justify-content: center;\n  font-size: .6rem; font-weight: 700; color: var(--amber);\n  flex-shrink: 0;\n}\n#nilen-wycena .nw-next-step-txt {\n  font-size: .8rem; color: var(--text-m);\n  line-height: 1.6; padding-top: 3px;\n}\n#nilen-wycena .nw-success-actions {\n  display: flex; gap: 10px; flex-wrap: wrap;\n}\n#nilen-wycena .nw-sa-btn {\n  height: 50px; padding: 0 28px;\n  font-family: var(--sans); font-size: .7rem;\n  font-weight: 700; letter-spacing: .1em; text-transform: uppercase;\n  text-decoration: none; cursor: pointer;\n  display: inline-flex; align-items: center;\n  transition: background .18s, color .18s, border-color .18s;\n  border: 1px solid transparent;\n}\n#nilen-wycena .nw-sa-btn--green {\n  background: var(--green); color: var(--white); border-color: var(--green);\n}\n#nilen-wycena .nw-sa-btn--green:hover {\n  background: var(--amber); border-color: var(--amber); color: var(--white);\n  text-decoration: none;\n}\n#nilen-wycena .nw-sa-btn--outline {\n  background: transparent; color: var(--green);\n  border-color: rgba(63,96,75,.3);\n}\n#nilen-wycena .nw-sa-btn--outline:hover {\n  background: var(--cream); text-decoration: none;\n}\n\n\/* \u2500\u2500 RESPONSYWNO\u015a\u0106 \u2500\u2500 *\/\n@media (max-width: 800px) {\n  #nilen-wycena .nw-slide.active,\n  #nilen-wycena .nw-success.active {\n    grid-template-columns: 1fr;\n  }\n  #nilen-wycena .nw-left { min-height: 190px; }\n  #nilen-wycena .nw-left-inner { padding: 34px 26px 60px; }\n  #nilen-wycena .nw-left h2 { font-size: 1.35rem; }\n  #nilen-wycena .nw-benefits { display: none; }\n  #nilen-wycena .nw-step-deco { font-size: 7rem; bottom: -10px; right: -4px; }\n  #nilen-wycena .nw-back-btn { bottom: 18px; left: 26px; }\n  #nilen-wycena .nw-sum-mini { display: none; }\n  #nilen-wycena .nw-right-inner { padding: 36px 26px; }\n  #nilen-wycena .nw-rooms { grid-template-columns: 1fr; }\n  #nilen-wycena .nw-form-grid { grid-template-columns: 1fr; }\n  #nilen-wycena .nw-success-left { min-height: 200px; padding: 34px 26px; }\n  #nilen-wycena .nw-success-right { padding: 36px 26px; }\n  #nilen-wycena .nw-next-btn { width: 100%; justify-content: center; }\n  #nilen-wycena .nw-sa-btn { flex: 1; justify-content: center; }\n  #nilen-wycena .nw-opts--sm .nw-opt { padding: 13px 14px; }\n}\n@media (max-width: 440px) {\n  #nilen-wycena .nw-area-exact { flex-direction: column; align-items: flex-start; }\n  #nilen-wycena .nw-right-inner { padding: 28px 20px; }\n  #nilen-wycena .nw-left-inner { padding: 28px 20px 56px; }\n  #nilen-wycena .nw-success-left { padding: 28px 20px; }\n  #nilen-wycena .nw-success-right { padding: 28px 20px; }\n}\n\/* iOS: zapobiega auto-zoom przy focusie na input < 16px *\/\n@media (max-width: 800px) {\n  #nilen-wycena input, #nilen-wycena select, #nilen-wycena textarea {\n    font-size: 16px !important;\n  }\n}\n\n\/* \u2500\u2500 R\u00d3WNA WYSOKO\u015a\u0106 KROK\u00d3W (desktop) \u2500\u2500\n   Wszystkie kroki maj\u0105 wysoko\u015b\u0107 najwy\u017cszego (liczon\u0105 skryptem \u2192 --nw-step-h),\n   a przycisk \u201eDalej\u201d jest przyklejony do do\u0142u prawej kolumny \u2014 zawsze w tym samym miejscu.\n   Na telefonie kroki zostaj\u0105 w naturalnej wysoko\u015bci (inaczej powsta\u0142yby du\u017ce puste pola). *\/\n#nilen-wycena { position: relative; }\n@media (min-width: 801px) {\n  #nilen-wycena .nw-slide.active,\n  #nilen-wycena .nw-success.active { min-height: var(--nw-step-h, 520px); }\n  #nilen-wycena .nw-right { align-items: stretch; }\n  #nilen-wycena .nw-right-inner { display: flex; flex-direction: column; }\n  #nilen-wycena .nw-right-inner > .nw-next-btn { margin-top: auto !important; align-self: flex-start; }\n  \/* Krok 5: przycisk \u201eWy\u015blij\u201d jest w formularzu \u2014 formularz wype\u0142nia kolumn\u0119, przycisk na dole *\/\n  #nilen-wycena #nwForm { flex: 1; display: flex; flex-direction: column; }\n  #nilen-wycena #nwSubmitBtn { margin-top: auto; align-self: flex-start; }\n}\n\n\/* Krok 3: trzy liczniki pomieszcze\u0144 w jednym rz\u0119dzie (szersze ekrany) *\/\n@media (min-width: 1024px) {\n  #nilen-wycena .nw-rooms     { grid-template-columns: repeat(3, 1fr); }\n  #nilen-wycena .nw-room      { padding: 10px 12px; gap: 6px; }\n  #nilen-wycena .nw-room-name { line-height: 1.25; }\n  #nilen-wycena .nw-counter   { gap: 8px; }\n}\n\n\/* \u2500\u2500 DOPASOWANIE DO WYSOKO\u015aCI OKNA (desktop) \u2500\u2500\n   Skrypt nwEqualizeSteps() sprawdza, czy kroki mieszcz\u0105 si\u0119 w oknie przegl\u0105darki,\n   i w\u0142\u0105cza tylko tyle docisku, ile trzeba:\n     nw-c1 \u2014 mniejsze odst\u0119py (wygl\u0105d prawie bez zmian)\n     nw-c2 \u2014 dodatkowo opcje obok siebie (ma\u0142e laptopy)\n     nw-c3 \u2014 dodatkowo cia\u015bniejsze teksty (bardzo niskie okna, np. 1280\u00d7720) *\/\n@media (min-width: 801px) {\n  \/* nw-c1: mniejsze odst\u0119py *\/\n\n  #nilen-wycena.nw-c1 .nw-left-inner  { padding: 40px 44px 60px; }\n  #nilen-wycena.nw-c1 .nw-right-inner { padding: 36px 52px; }\n  #nilen-wycena.nw-c1 .nw-left h2     { font-size: clamp(1.3rem, 2.2vw, 1.7rem); margin-bottom: 12px; }\n  #nilen-wycena.nw-c1 .nw-step-lbl    { margin-bottom: 14px; }\n  #nilen-wycena.nw-c1 .nw-benefits    { margin-top: 14px; padding-top: 12px; }\n  #nilen-wycena.nw-c1 .nw-benefits-list { gap: 5px; }\n  #nilen-wycena.nw-c1 .nw-question    { margin-bottom: 12px; }\n  #nilen-wycena.nw-c1 .nw-opts        { gap: 8px; margin-bottom: 22px; }\n  #nilen-wycena.nw-c1 .nw-opt         { padding: 12px 18px; }\n  #nilen-wycena.nw-c1 .nw-opts--sm    { margin-bottom: 16px; }\n  #nilen-wycena.nw-c1 .nw-area-big    { font-size: 2.1rem; margin-bottom: 10px; }\n  #nilen-wycena.nw-c1 .nw-range-marks { margin-bottom: 16px; }\n  #nilen-wycena.nw-c1 .nw-area-exact  { margin-bottom: 20px; }\n  #nilen-wycena.nw-c1 .nw-rooms       { gap: 8px; margin-bottom: 20px; }\n  #nilen-wycena.nw-c1 .nw-room        { padding: 8px 12px; }\n  #nilen-wycena.nw-c1 .nw-form-grid   { gap: 10px; margin-bottom: 12px; }\n  #nilen-wycena.nw-c1 .nw-input       { height: 42px; }\n  #nilen-wycena.nw-c1 .nw-consents    { gap: 6px; margin-bottom: 10px; }\n  #nilen-wycena.nw-c1 .nw-rodo        { margin-bottom: 14px; }\n  #nilen-wycena.nw-c1 .nw-back-btn    { bottom: 20px; }\n\n  \/* Opcje obok siebie zamiast jedna pod drug\u0105 (ka\u017cda opcja = kolumna), opisy zostaj\u0105 *\/\n  #nilen-wycena.nw-c2 .nw-opts        { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; }\n  #nilen-wycena.nw-c2 .nw-opt         { align-items: flex-start; padding: 12px 14px; gap: 10px; }\n  #nilen-wycena.nw-c2 .nw-opt-radio   { margin-top: 2px; }\n  #nilen-wycena.nw-c2 .nw-opt-title   { font-size: .82rem; line-height: 1.3; margin-bottom: 3px; }\n  #nilen-wycena.nw-c2 .nw-opt-sub     { display: block; font-size: .68rem; line-height: 1.4; }\n\n  \/* Krok 3: trzy liczniki pomieszcze\u0144 w jednym rz\u0119dzie *\/\n  #nilen-wycena.nw-c2 .nw-rooms       { grid-template-columns: repeat(3, 1fr); }\n  #nilen-wycena.nw-c2 .nw-room        { padding: 8px 10px; gap: 6px; }\n  #nilen-wycena.nw-c2 .nw-room-name   { font-size: .74rem; line-height: 1.25; }\n  #nilen-wycena.nw-c2 .nw-counter     { gap: 8px; }\n\n  \/* Krok 5: imi\u0119, telefon i e-mail w jednym rz\u0119dzie *\/\n  #nilen-wycena.nw-c2 .nw-form-grid   { grid-template-columns: 1fr 1fr 1.3fr; }\n  #nilen-wycena.nw-c2 .nw-form-grid .full { grid-column: auto; }\n\n  \/* nw-c3: jeszcze cia\u015bniejsze teksty *\/\n\n  #nilen-wycena.nw-c3 .nw-left-inner  { padding: 30px 44px 52px; }\n  #nilen-wycena.nw-c3 .nw-left p      { line-height: 1.6; }\n  #nilen-wycena.nw-c3 .nw-benefits-list li { font-size: .74rem; line-height: 1.45; }\n  #nilen-wycena.nw-c3 .nw-right-inner { padding: 28px 52px; }\n  #nilen-wycena.nw-c3 .nw-consent     { line-height: 1.5; }\n  #nilen-wycena.nw-c3 .nw-rodo        { font-size: .62rem; line-height: 1.5; margin-bottom: 10px; }\n}\n<\/style>\n\n<!-- ================================================================ HTML -->\n<div id=\"nilen-wycena\">\n\n  <!-- PASEK POST\u0118PU -->\n  <div class=\"nw-prog\"><div class=\"nw-prog-fill\" id=\"nwPF\"><\/div><\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 KROK 1 \u2014 TYP MIESZKANIA \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"nw-slide active\" id=\"nwS1\">\n    <div class=\"nw-left\">\n      <div class=\"nw-step-deco\">01<\/div>\n      <div class=\"nw-left-inner\">\n        <span class=\"nw-step-lbl\">Step 1 of 5<\/span>\n        <h2>Find out how much your apartment could cost to finish<\/h2>\n        <p>This calculator is based on data from over 200 completed projects in <b>Krakow<\/b> . Answer the questions in 5 steps and receive a preliminary estimate via email. <\/p>\n        <div class=\"nw-benefits\">\n          <p class=\"nw-benefits-title\">What will you get after completing it?<\/p>\n          <ul class=\"nw-benefits-list\">\n            <li>An initial cost estimate delivered by email within minutes<\/li>\n            <li>A clear breakdown of what is included in Nilen\u2019s turnkey service<\/li>\n            <li>The option to book a free consultation with our advisor<\/li>\n            <li>No obligation - the estimate is free and entirely indicative<\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n    <\/div>\n    <div class=\"nw-right\">\n      <div class=\"nw-right-inner\">\n        <div class=\"nw-question\">What type of apartment are you finishing?<\/div>\n        <div class=\"nw-opts\" id=\"nwG1\">\n          <div class=\"nw-opt active\" onclick=\"nwPick('type','new',this,'nwG1')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">New-build apartment<\/span>\n<span class=\"nw-opt-sub\">New apartment in developer finish, ready for interior works<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"nw-opt\" onclick=\"nwPick('type','secondary',this,'nwG1')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Resale apartment<\/span>\n<span class=\"nw-opt-sub\">Previously occupied apartment requiring renovation or modernisation<\/span>\n            <\/span>\n          <\/div>\n        <\/div>\n\n        <!-- Lokalizacja -->\n        <div class=\"nw-question\">Where is the property located?<\/div>\n        <div class=\"nw-opts\" id=\"nwGLoc\">\n          <div class=\"nw-opt active\" onclick=\"nwPick('loc','krakow',this,'nwGLoc')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Krakow or surrounding areas<\/span>\n              <span class=\"nw-opt-sub\">Up to approx. 40 km from Krakow <\/span>\n            <\/span>\n          <\/div>\n          <div class=\"nw-opt\" onclick=\"nwPick('loc','other',this,'nwGLoc')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Other location<\/span>\n<span class=\"nw-opt-sub\">Enter the city where the property is located<\/span>\n            <\/span>\n          <\/div>\n        <\/div>\n\n        <!-- Pole miasta \u2014 widoczne tylko po wybraniu \u201eInna lokalizacja\u201d -->\n        <div class=\"nw-city-wrap\" id=\"nwCityWrap\">\n          <label class=\"nw-input-lbl\" for=\"nwCity\">City <span class=\"nw-req\">*<\/span><\/label>\n          <input class=\"nw-input\" id=\"nwCity\" type=\"text\" maxlength=\"60\" placeholder=\"For example, Wroclaw\" autocomplete=\"address-level2\" oninput=\"nwCityInput(this.value)\">\n        <\/div>\n        <div class=\"nw-error\" id=\"nwCityErr\">Enter the city where the property is located.<\/div>\n\n        <button class=\"nw-next-btn\" onclick=\"nwStep1Next()\">Next \u2192<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 KROK 2 \u2014 STANDARD \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"nw-slide\" id=\"nwS2\">\n    <div class=\"nw-left\">\n      <div class=\"nw-step-deco\">02<\/div>\n      <div class=\"nw-left-inner\">\n        <span class=\"nw-step-lbl\">Step 2 of 5<\/span>\n        <h2>What scope and standard of finishing are you planning?<\/h2>\n        <p>Choose the variant that best suits your needs. You can then customize it as desired. <\/p>\n      <\/div>\n      <button class=\"nw-back-btn\" onclick=\"nwGo(1)\">\u2190 Back<\/button>\n    <\/div>\n    <div class=\"nw-right\">\n      <div class=\"nw-right-inner\">\n        <!-- Zakres prac -->\n        <div class=\"nw-question\">What scope of work are you planning?<\/div>\n        <div class=\"nw-opts\" id=\"nwGScope\">\n          <div class=\"nw-opt active\" onclick=\"nwPick('scope','full',this,'nwGScope')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">The whole apartment<\/span>\n<span class=\"nw-opt-sub\">Comprehensive finishing of all rooms<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"nw-opt\" onclick=\"nwPick('scope','partial',this,'nwGScope')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Part of the apartment<\/span>\n<span class=\"nw-opt-sub\">Selected rooms or minor works<\/span>\n            <\/span>\n          <\/div>\n        <\/div>\n\n        <div class=\"nw-question\">Choose your finishing standard<\/div>\n        <div class=\"nw-opts\" id=\"nwG2\">\n          <div class=\"nw-opt\" onclick=\"nwPick('standard','economy',this,'nwG2')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Essential<\/span>\n<span class=\"nw-opt-sub\">Reliable materials and practical solutions for a carefully managed budget<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"nw-opt active\" onclick=\"nwPick('standard','standard',this,'nwG2')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Standard<\/span>\n<span class=\"nw-opt-sub\">Our most popular choice - a balanced combination of quality, aesthetics and cost<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"nw-opt\" onclick=\"nwPick('standard','premium',this,'nwG2')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Premium<\/span>\n<span class=\"nw-opt-sub\">Premium materials, refined details and more individual design solutions<\/span>\n            <\/span>\n          <\/div>\n        <\/div>\n        <button class=\"nw-next-btn\" onclick=\"nwGo(3)\">Next \u2192<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 KROK 3 \u2014 METRA\u017b I POKOJE \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"nw-slide\" id=\"nwS3\">\n    <div class=\"nw-left\">\n      <div class=\"nw-step-deco\">03<\/div>\n      <div class=\"nw-left-inner\">\n        <span class=\"nw-step-lbl\">Step 3 of 5<\/span>\n        <h2>What is the size and layout of the apartment?<\/h2>\n        <p>The more accurate the data, the more precise the initial calculation.<\/p>\n      <\/div>\n      <button class=\"nw-back-btn\" onclick=\"nwGo(2)\">\u2190 Back<\/button>\n    <\/div>\n    <div class=\"nw-right\">\n      <div class=\"nw-right-inner\">\n\n        <!-- Slider -->\n        <div class=\"nw-question\">Apartment area<\/div>\n        <span class=\"nw-area-big\" id=\"nwAreaDisp\">50 m\u00b2<\/span>\n        <input type=\"range\" class=\"nw-range\" id=\"nwAreaSl\" min=\"20\" max=\"200\" value=\"50\" step=\"1\" oninput=\"nwArea(this.value)\">\n        <div class=\"nw-range-marks\">\n          <span>20 m\u00b2<\/span> <span>75 m\u00b2<\/span> <span>125 m\u00b2<\/span> <span>200 m\u00b2<\/span>\n        <\/div>\n\n        <!-- Dok\u0142adny metra\u017c -->\n        <div class=\"nw-area-exact\">\n          <label for=\"nwAreaIn\">Exact dimensions:<\/label>\n<input id=\"nwAreaIn\" type=\"text\" value=\"50\" inputmode=\"decimal\" autocomplete=\"off\" maxlength=\"8\" oninput=\"nwAreaPreview(this.value)\" onblur=\"nwArea(this.value)\" onkeydown=\"if(event.key==='Enter'){nwArea(this.value);this.blur();}\"\/>\n<span style=\"font-size:.8rem;color:var(--text-l)\">m\u00b2<\/span>\n        <\/div>\n\n        <!-- Pokoje -->\n        <span class=\"nw-field-label\">Number of rooms<\/span>\n        <div class=\"nw-rooms\">\n          <div class=\"nw-room\">\n            <span class=\"nw-room-name\">Bathrooms<\/span>\n            <div class=\"nw-counter\">\n              <button class=\"nw-cnt-btn\" onclick=\"nwRoom('bath',-1)\">\u2212<\/button>\n <span class=\"nw-cnt-val\" id=\"nwBath\">1<\/span>\n <button class=\"nw-cnt-btn\" onclick=\"nwRoom('bath',1)\">+<\/button>\n            <\/div>\n          <\/div>\n          <div class=\"nw-room\">\n            <span class=\"nw-room-name\">Separate toilet<\/span>\n            <div class=\"nw-counter\">\n              <button class=\"nw-cnt-btn\" onclick=\"nwRoom('wc',-1)\">\u2212<\/button>\n <span class=\"nw-cnt-val\" id=\"nwWc\">0<\/span>\n <button class=\"nw-cnt-btn\" onclick=\"nwRoom('wc',1)\">+<\/button>\n            <\/div>\n          <\/div>\n          <div class=\"nw-room\">\n            <span class=\"nw-room-name\">Rooms<\/span>\n            <div class=\"nw-counter\">\n              <button class=\"nw-cnt-btn\" onclick=\"nwRoom('bed',-1)\">\u2212<\/button>\n <span class=\"nw-cnt-val\" id=\"nwBed\">1<\/span>\n <button class=\"nw-cnt-btn\" onclick=\"nwRoom('bed',1)\">+<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <!-- Typ kuchni -->\n        <span class=\"nw-field-label\" style=\"margin-top:8px\">Type of kitchen<\/span>\n        <div class=\"nw-opts nw-opts--sm\" id=\"nwGKit\">\n          <div class=\"nw-opt active\" onclick=\"nwPick('kitType','kitchen',this,'nwGKit')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Kitchen in a separate room<\/span>\n<span class=\"nw-opt-sub\">Closed kitchen with door<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"nw-opt\" onclick=\"nwPick('kitType','open',this,'nwGKit')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">Kitchen open to the living room<\/span>\n<span class=\"nw-opt-sub\">Full kitchen connected to the living room, island or large built-in<\/span>\n            <\/span>\n          <\/div>\n        <\/div>\n\n        <button class=\"nw-next-btn\" onclick=\"nwGo(4)\">Next \u2192<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 KROK 4 \u2014 PROJEKT + DODATKI \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"nw-slide\" id=\"nwS4\">\n    <div class=\"nw-left\">\n      <div class=\"nw-step-deco\">04<\/div>\n      <div class=\"nw-left-inner\">\n        <span class=\"nw-step-lbl\">Step 4 of 5<\/span>\n        <h2>A few final details<\/h2>\n        <p>These final details will help us provide a more accurate initial estimate.<\/p>\n      <\/div>\n      <button class=\"nw-back-btn\" onclick=\"nwGo(3)\">\u2190 Back<\/button>\n    <\/div>\n    <div class=\"nw-right\">\n      <div class=\"nw-right-inner\">\n\n        <!-- Projekt -->\n        <div class=\"nw-question\">Interior design<\/div>\n        <div class=\"nw-opts nw-opts--sm\" id=\"nwG3\">\n          <div class=\"nw-opt active\" onclick=\"nwPick('project','have',this,'nwG3')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">I already have an interior design<\/span>\n<span class=\"nw-opt-sub\">Calculate the cost of the finishing work only<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"nw-opt\" onclick=\"nwPick('project','need',this,'nwG3')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">I need an interior design<\/span>\n<span class=\"nw-opt-sub\">Include the design, visualisations and technical documentation<\/span>\n            <\/span>\n          <\/div>\n        <\/div>\n\n        <!-- Cel -->\n        <div class=\"nw-question\" style=\"margin-top:20px\">How will the apartment be used?<\/div>\n        <div class=\"nw-opts nw-opts--sm\" id=\"nwG4\">\n          <div class=\"nw-opt\" onclick=\"nwPick('purpose','investment',this,'nwG4')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">As an investment<\/span>\n<span class=\"nw-opt-sub\">For rental or resale<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"nw-opt active\" onclick=\"nwPick('purpose','own',this,'nwG4')\">\n            <span class=\"nw-opt-radio\"><\/span>\n            <span class=\"nw-opt-content\">\n              <span class=\"nw-opt-title\">As my own home<\/span>\n<span class=\"nw-opt-sub\">Finished around your lifestyle and everyday needs<\/span>\n            <\/span>\n          <\/div>\n        <\/div>\n\n        <button class=\"nw-next-btn\" onclick=\"nwGo(5)\" style=\"margin-top:28px\">Last step\u2192<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 KROK 5 \u2014 DANE KONTAKTOWE \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"nw-slide\" id=\"nwS5\">\n    <div class=\"nw-left\">\n      <div class=\"nw-step-deco\">05<\/div>\n      <div class=\"nw-left-inner\">\n        <span class=\"nw-step-lbl\">Step 5 of 5 - Almost Done<\/span>\n        <h2>We\u2019ll send your estimate straight to your inbox<\/h2>\n        <p>Enter your details to receive an initial cost estimate and a summary of your selected options within a few minutes.<\/p>\n        <!-- Podsumowanie wybor\u00f3w -->\n        <div class=\"nw-sum-mini\" id=\"nwSumMini\"><\/div>\n      <\/div>\n      <button class=\"nw-back-btn\" onclick=\"nwGo(4)\">\u2190 Back<\/button>\n    <\/div>\n    <div class=\"nw-right\">\n      <div class=\"nw-right-inner\">\n        <div class=\"nw-question\">Your contact details<\/div>\n        <form id=\"nwForm\" onsubmit=\"nwSubmit(event)\" novalidate=\"\">\n          <div class=\"nw-form-grid\">\n            <div>\n              <label class=\"nw-input-lbl\" for=\"nwName\"><span class=\"nw-req\">Full name *<\/span><\/label>\n              <input class=\"nw-input\" id=\"nwName\" type=\"text\" placeholder=\"John Smith\" autocomplete=\"name\">\n            <\/div>\n            <div>\n              <label class=\"nw-input-lbl\" for=\"nwPhone\"><span class=\"nw-req\">Phone number *<\/span><\/label>\n              <input class=\"nw-input\" id=\"nwPhone\" type=\"tel\" placeholder=\"+48 000 000 000\" autocomplete=\"tel\">\n            <\/div>\n            <div class=\"full\">\n              <label class=\"nw-input-lbl\" for=\"nwEmail\">Email address <span class=\"nw-req\">*<\/span><\/label>\n              <input class=\"nw-input\" id=\"nwEmail\" type=\"email\" placeholder=\"jan@przyklad.pl\" autocomplete=\"email\">\n            <\/div>\n          <\/div>\n\n          <!-- Anty-spam (honeypot): pole niewidoczne dla ludzi \u2014 NIE usuwa\u0107.\n               Ukryte poza ekranem (nie display:none), \u017ceby boty je wype\u0142nia\u0142y. -->\n          <div aria-hidden=\"true\" style=\"position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;\">\n            <label for=\"nwWebsite\">Do not fill in this field<\/label>\n            <input type=\"text\" id=\"nwWebsite\" name=\"nw_website\" value=\"\" tabindex=\"-1\" autocomplete=\"off\">\n          <\/div>\n\n          <!-- Zaznacz wszystkie -->\n          <label class=\"nw-consent nw-consent--all\" id=\"nwConsentAll\" onclick=\"nwToggleAll(this)\" style=\"margin-bottom:6px;padding:10px 14px;background:rgba(63,96,75,.06);border:1px solid rgba(63,96,75,.15);\">\n            <input type=\"checkbox\" id=\"nwCAll\">\n            <span><strong>Select all consents<\/strong><\/span>\n          <\/label>\n\n          <div class=\"nw-consents\">\n            <label class=\"nw-consent\">\n              <input type=\"checkbox\" id=\"nwC1\">\n              <span><strong>Consent to the processing of personal data <span class=\"nw-req\">*<\/span><\/strong><br\/> I consent to the processing of my personal data by Nilen sp. z o. o. for the purpose of preparing calculations, responding to inquiries, and contacting me regarding the offer (e-mail, phone). Without this consent, we cannot send the result or contact you. Required.   <\/span>\n            <\/label>\n            <label class=\"nw-consent\">\n              <input type=\"checkbox\" id=\"nwC2\">\n              <span><strong>Schedule a free consultation with me<\/strong>\n <em style=\"font-size:.68rem;color:var(--text-l)\">(optional)<\/em><br\/> I would like to talk to an advisor about the details and implementation options.<\/span>\n            <\/label>\n            <label class=\"nw-consent\">\n              <input type=\"checkbox\" id=\"nwC3\">\n              <span><strong>I want to receive the Nilen newsletter<\/strong>\n <em style=\"font-size:.68rem;color:var(--text-l)\">(optional)<\/em><br\/> Practical information about interior design and finishing. You can unsubscribe at any time. <\/span>\n            <\/label>\n          <\/div>\n\n          <p class=\"nw-rodo\">\n  * Required fields. Data administrator: Nilen, ul. Jana Zamoyskiego 63,\n 30-519 Krak\u00f3w. Data processed in accordance with  &nbsp;<a href=\"https:\/\/nilen.pl\/en\/privacy-policy\/\" target=\"_blank\">privacy policy<\/a> .\n          <\/p>\n\n          <div class=\"nw-error\" id=\"nwErr\"><\/div>\n\n          <button type=\"submit\" class=\"nw-next-btn\" id=\"nwSubmitBtn\">\n Wy\u015blij mi kalkulacj\u0119 \u2192\n          <\/button>\n        <\/form>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 EKRAN SUKCESU \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"nw-success\" id=\"nwOK\">\n    <div class=\"nw-success-left\">\n      <div class=\"nw-success-deco\">\u2713<\/div>\n      <div class=\"nw-check-icon\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewbox=\"0 0 22 22\" fill=\"none\">\n          <path d=\"M3 11l5 6 11-13\" stroke=\"rgba(255,252,246,.88)\" stroke-width=\"1.5\"><\/path>\n        <\/svg>\n      <\/div>\n      <h2>Calculation is on its way!<\/h2>\n      <p>\n Wys\u0142ali\u015bmy wst\u0119pn\u0105 kalkulacj\u0119 na&nbsp;<strong id=\"nwOKmail\" style=\"color:rgba(255,252,246,.88)\"><\/strong>.<br\/> Sprawd\u017a skrzynk\u0119, mo\u017ce trafi\u0107 do folderu Spam.\n      <\/p>\n    <\/div>\n    <div class=\"nw-success-right\">\n      <div style=\"max-width:380px\">\n        <div style=\"font-size:.58rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--text-l);margin-bottom:24px\">What's next?<\/div>\n        <div class=\"nw-next-steps\">\n          <div class=\"nw-next-step\">\n            <div class=\"nw-step-num-box\">1<\/div>\n            <div class=\"nw-next-step-txt\">\n Odbierz e-mail z&nbsp;wst\u0119pn\u0105 kalkulacj\u0105,\n znajdziesz tam por\u00f3wnanie opcji i orientacyjne wide\u0142ki cenowe.\n            <\/div>\n          <\/div>\n          <div class=\"nw-next-step\">\n            <div class=\"nw-step-num-box\">2<\/div>\n            <div class=\"nw-next-step-txt\">\n Nasz doradca skontaktuje si\u0119 z&nbsp;Tob\u0105\n w&nbsp;ci\u0105gu <strong>24&nbsp;godzin roboczych<\/strong>.\n            <\/div>\n          <\/div>\n          <div class=\"nw-next-step\">\n            <div class=\"nw-step-num-box\">3<\/div>\n            <div class=\"nw-next-step-txt\">\n Um\u00f3w bezp\u0142atn\u0105 konsultacj\u0119, om\u00f3wimy zakres i przygotujemy indywidualn\u0105 wycen\u0119.\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"nw-success-actions\">\n          <a href=\"https:\/\/nilen.pl\/en\/realizations\/\" class=\"nw-sa-btn nw-sa-btn--green\">\n Zobacz realizacje\n          <\/a>\n          <a href=\"tel:+48510360305\" class=\"nw-sa-btn nw-sa-btn--outline\">\n +48&nbsp;510&nbsp;360&nbsp;305\n          <\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div><!-- \/#nilen-wycena -->\n\n<script>\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\/\/ NILEN \u2014 LOGIKA WIZARDA\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\/\/ \u2500\u2500 STAN \u2500\u2500\nconst NWS = {\n  type:     'new',\n  scope:    'full',      \/\/ zakres prac (krok 2) \u2014 tylko informacyjnie\n  loc:      'krakow',    \/\/ lokalizacja (krok 1): 'krakow' | 'other'\n  city:     '',          \/\/ miasto wpisane przy 'other'\n  standard: 'standard',\n  project:  'have',\n  purpose:  'own',\n  kitType:  'kitchen',\n  area:     50,\n  rooms:    { bath: 1, wc: 0, bed: 1 }\n};\n\n\/\/ Kalkulacja cenowa przeniesiona do PHP (wycena-functions.php) \u2014 niewidoczna w przegl\u0105darce.\n\n\/\/ NW_LABELS usuni\u0119te \u2014 warto\u015bci czytane z DOM (WPML ju\u017c je t\u0142umaczy)\n\n\/\/ \u2500\u2500 NAWIGACJA \u2500\u2500\nfunction nwGo(step) {\n  \/\/ Opuszczaj\u0105c krok 3 \u2014 zatwierd\u017a metra\u017c z pola (zakres 20\u2013200, tak\u017ce gdy pole wci\u0105\u017c ma fokus)\n  const s3 = document.getElementById('nwS3'), areaIn = document.getElementById('nwAreaIn');\n  if (s3 && areaIn && s3.classList.contains('active')) nwArea(areaIn.value);\n  document.querySelectorAll('#nilen-wycena .nw-slide').forEach(s => s.classList.remove('active'));\n  const prog = document.getElementById('nwPF');\n  if (prog) prog.style.width = (step \/ 5 * 100) + '%';\n  if (step === 5) nwBuildSummary();\n  const target = document.getElementById('nwS' + step);\n  if (target) target.classList.add('active');\n  const wrap = document.getElementById('nilen-wycena');\n  if (wrap) {\n    const rect = wrap.getBoundingClientRect();\n    const topVisible = rect.top >= 0 && rect.top < window.innerHeight * 0.4;\n    if (!topVisible) {\n      window.scrollTo({ top: rect.top + window.scrollY - 80, behavior: 'smooth' });\n    }\n  }\n}\n\n\/\/ \u2500\u2500 R\u00d3WNA WYSOKO\u015a\u0106 KROK\u00d3W (desktop) \u2500\u2500\n\/\/ Mierzy naturaln\u0105 wysoko\u015b\u0107 ka\u017cdego kroku i ustawia wszystkim wysoko\u015b\u0107 najwy\u017cszego.\n\/\/ Liczone na \u017cywo, wi\u0119c dzia\u0142a te\u017c po t\u0142umaczeniu WPML (inna d\u0142ugo\u015b\u0107 tekst\u00f3w).\nfunction nwEqualizeSteps() {\n  const wrap = document.getElementById('nilen-wycena');\n  if (!wrap) return;\n  const LEVELS = ['nw-c1', 'nw-c2', 'nw-c3'];          \/\/ stopnie docisku (patrz CSS)\n  wrap.classList.remove.apply(wrap.classList, LEVELS);\n  if (window.matchMedia('(max-width: 800px)').matches) {\n    wrap.style.removeProperty('--nw-step-h');\n    return;\n  }\n\n  \/\/ Najwy\u017cszy krok w bie\u017c\u0105cym uk\u0142adzie (naturalna wysoko\u015b\u0107, bez narzuconej)\n  function measureMax() {\n    wrap.style.setProperty('--nw-step-h', '0px');\n    const city = document.getElementById('nwCityWrap');\n    const cityWasOpen = city && city.classList.contains('open');\n    if (city) city.classList.add('open');                 \/\/ licz z rozwini\u0119tym polem \u201eMiasto\u201d\n    let max = 520;\n    wrap.querySelectorAll('.nw-slide').forEach(function (s) {\n      const hidden = !s.classList.contains('active');\n      if (hidden) {   \/\/ ten sam uk\u0142ad co aktywny krok (2 kolumny), ale niewidoczny\n        s.style.display = 'grid'; s.style.gridTemplateColumns = '2fr 3fr';\n        s.style.position = 'absolute'; s.style.visibility = 'hidden';\n        s.style.left = '0'; s.style.right = '0';\n      }\n      max = Math.max(max, Math.ceil(s.getBoundingClientRect().height));\n      if (hidden) {\n        s.style.display = ''; s.style.gridTemplateColumns = '';\n        s.style.position = ''; s.style.visibility = '';\n        s.style.left = ''; s.style.right = '';\n      }\n    });\n    if (city && !cityWasOpen) city.classList.remove('open');\n    return max;\n  }\n\n  \/\/ Miejsce w oknie: kalkulator po przej\u015bciu kroku stoi ok. 80 px od g\u00f3ry okna.\n  const avail = window.innerHeight - 96;\n  let max = measureMax();\n  \/\/ Docisk tylko gdy trzeba \u2014 po kolei: mniejsze odst\u0119py \u2192 opcje obok siebie \u2192 cia\u015bniejsze teksty\n  for (let i = 0; i < LEVELS.length && max > avail; i++) {\n    wrap.classList.add(LEVELS[i]);\n    max = measureMax();\n  }\n  \/\/ Wsp\u00f3lna wysoko\u015b\u0107 krok\u00f3w, ale nie wy\u017csza ni\u017c okno. Gdyby krok i tak by\u0142 d\u0142u\u017cszy od okna,\n  \/\/ zostaje w naturalnej wysoko\u015bci (przycisk pod tre\u015bci\u0105, nic nie jest zas\u0142oni\u0119te).\n  const target = Math.min(max, Math.max(520, avail));\n  wrap.style.setProperty('--nw-step-h', target + 'px');\n}\nnwEqualizeSteps();\nwindow.addEventListener('load', nwEqualizeSteps);\nif (document.fonts && document.fonts.ready) document.fonts.ready.then(nwEqualizeSteps);\n(function () {\n  let t;\n  window.addEventListener('resize', function () { clearTimeout(t); t = setTimeout(nwEqualizeSteps, 150); });\n})();\n\n\/\/ \u2500\u2500 WYB\u00d3R OPCJI \u2500\u2500\nfunction nwPick(key, val, el, groupId) {\n  NWS[key] = val;\n  document.querySelectorAll('#' + groupId + ' .nw-opt').forEach(o => o.classList.remove('active'));\n  el.classList.add('active');\n  if (key === 'loc') {\n    const wrap = document.getElementById('nwCityWrap');\n    const err  = document.getElementById('nwCityErr');\n    if (val === 'other') {\n      if (wrap) wrap.classList.add('open');\n      const inp = document.getElementById('nwCity');\n      if (inp) setTimeout(function () { inp.focus(); }, 50);\n    } else {\n      if (wrap) wrap.classList.remove('open');\n      if (err)  err.style.display = 'none';\n    }\n  }\n}\n\n\/\/ \u2500\u2500 MIASTO \u2014 zapis na bie\u017c\u0105co \u2500\u2500\nfunction nwCityInput(v) {\n  NWS.city = v.trim();\n  const inp = document.getElementById('nwCity');\n  const err = document.getElementById('nwCityErr');\n  if (NWS.city) {\n    if (inp) inp.classList.remove('nw-err');\n    if (err) err.style.display = 'none';\n  }\n}\n\n\/\/ \u2500\u2500 KROK 1 \u2192 2: przy \u201eInna lokalizacja\u201d wymagaj wpisania miasta \u2500\u2500\nfunction nwStep1Next() {\n  if (NWS.loc === 'other' && !NWS.city) {\n    const inp = document.getElementById('nwCity');\n    const err = document.getElementById('nwCityErr');\n    if (inp) { inp.classList.add('nw-err'); inp.focus(); }\n    if (err) err.style.display = 'block';\n    return;\n  }\n  nwGo(2);\n}\n\n\/\/ \u2500\u2500 SUWAK POWIERZCHNI \u2500\u2500\n\/\/ Podgl\u0105d podczas pisania \u2014 tylko wy\u015bwietlacz, bez clamp i sync\n\/\/ Metra\u017c wpisany r\u0119cznie: akceptuje \u201e47\u201d, \u201e47,85\u201d, \u201e47.85\u201d, \u201e47,85 m2\u201d \u2192 zaokr\u0105gla do pe\u0142nych m\u00b2\nfunction nwParseArea(v) {\n  const m = String(v == null ? '' : v).replace(',', '.').match(\/\\d+(\\.\\d+)?\/);\n  return m ? Math.round(parseFloat(m[0])) : NaN;\n}\n\n\/\/ Podczas pisania \u2014 poprawn\u0105 warto\u015b\u0107 zapisujemy od razu (nie czekamy na opuszczenie pola,\n\/\/ bo np. na iPhonie klawiatura numeryczna nie ma Enter, a \u201eDalej\u201d nie zawsze zamyka pole)\nfunction nwAreaPreview(v) {\n  const val = nwParseArea(v);\n  if (isNaN(val)) return;\n  const d = document.getElementById('nwAreaDisp');\n  if (d) d.textContent = val + ' m\u00b2';\n  if (val >= 20 && val <= 200) {\n    NWS.area = val;\n    const s = document.getElementById('nwAreaSl');\n    if (s) s.value = val;\n  }\n}\n\nfunction nwArea(v) {\n  let val = nwParseArea(v);\n  if (isNaN(val)) val = NWS.area || 50;   \/\/ nieczytelny wpis \u2192 zostaw poprzedni\u0105 warto\u015b\u0107 (bez resetu do 50)\n  val = Math.max(20, Math.min(200, val));\n  NWS.area = val;\n  const d = document.getElementById('nwAreaDisp');\n  const s = document.getElementById('nwAreaSl');\n  const i = document.getElementById('nwAreaIn');\n  if (d) d.textContent = val + ' m\u00b2';\n  if (s && +s.value !== val) s.value = val;\n  if (i && i.value !== String(val)) i.value = val;\n}\n\n\/\/ \u2500\u2500 LICZNIKI POKOI \u2500\u2500\nfunction nwRoom(k, d) {\n  const min = k === 'bath' ? 1 : 0;\n  NWS.rooms[k] = Math.max(min, Math.min(5, NWS.rooms[k] + d));\n  const ids = { bath: 'nwBath', wc: 'nwWc', bed: 'nwBed' };\n  const el = document.getElementById(ids[k]);\n  if (el) el.textContent = NWS.rooms[k];\n}\n\n\/\/ \u2500\u2500 PODSUMOWANIE (lewa kolumna kroku 5, BEZ kwot) \u2500\u2500\nfunction nwBuildSummary() {\n  const el = document.getElementById('nwSumMini');\n  if (!el) return;\n\n  \/\/ Etykiety wierszy \u2014 wykryj j\u0119zyk strony (WPML ustawia html[lang])\n  const lang = (document.documentElement.lang || 'pl').toLowerCase().slice(0, 2);\n  const KL = {\n    pl: { type: 'Typ',  standard: 'Standard', area: 'Powierzchnia', kitchen: 'Kuchnia', project: 'Projekt' },\n    en: { type: 'Type', standard: 'Standard', area: 'Area', kitchen: 'Kitchen', project: 'Project' },\n    uk: { type: '\u0422\u0438\u043f',  standard: '\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442', area: '\u041f\u043b\u043e\u0449\u0430', kitchen: '\u041a\u0443\u0445\u043d\u044f', project: '\u041f\u0440\u043e\u0454\u043a\u0442' }\n  };\n  const K = KL[lang] || KL.pl;\n\n  \/\/ Warto\u015bci \u2014 czytaj tekst aktywnej opcji z DOM (WPML ju\u017c go przet\u0142umaczy\u0142)\n  function getActive(groupId) {\n    var g = document.getElementById(groupId);\n    if (!g) return '';\n    var t = g.querySelector('.nw-opt.active .nw-opt-title');\n    return t ? t.textContent.trim() : '';\n  }\n\n  const rows = [\n    [K.type,     getActive('nwG1')],\n    [K.standard, getActive('nwG2')],\n    [K.area,     NWS.area + ' m\u00b2'],\n    [K.kitchen,  getActive('nwGKit')],\n    [K.project,  getActive('nwG3')]\n  ];\n  el.innerHTML = rows.map(function(r) {\n    return '<div class=\"nw-sum-row\"><span class=\"nw-sum-k\">' + r[0] + '<\/span><span class=\"nw-sum-v\">' + r[1] + '<\/span><\/div>';\n  }).join('');\n}\n\n\/\/ \u2500\u2500 ZAZNACZ WSZYSTKIE ZGODY \u2500\u2500\nfunction nwToggleAll(labelEl) {\n  \/\/ Nie blokujemy domy\u015blnego zachowania \u2014 checkbox zmieni si\u0119 automatycznie\n  \/\/ Reagujemy po mikrotiku \u017ceby odczyta\u0107 nowy stan\n  setTimeout(function() {\n    const master = document.getElementById('nwCAll');\n    const checked = master ? master.checked : false;\n    ['nwC1','nwC2','nwC3'].forEach(function(id) {\n      var cb = document.getElementById(id);\n      if (cb) cb.checked = checked;\n    });\n  }, 0);\n}\n\n\/\/ Synchronizacja master checkbox gdy klikamy pojedyncze zgody\ndocument.addEventListener('change', function(e) {\n  if (['nwC1','nwC2','nwC3'].indexOf(e.target.id) !== -1) {\n    var master = document.getElementById('nwCAll');\n    if (!master) return;\n    var all = ['nwC1','nwC2','nwC3'].every(function(id) {\n      var cb = document.getElementById(id);\n      return cb && cb.checked;\n    });\n    master.checked = all;\n  }\n});\n\n\/\/ \u2500\u2500 WALIDACJA TELEFONU \u2500\u2500\n\/\/ Akceptuje numery z +48 lub bez, polskie i zagraniczne.\n\/\/ Dozwolone znaki: cyfry, spacje, my\u015blniki, nawiasy, wiod\u0105cy +\n\/\/ Wymagana liczba cyfr: 7\u201315 (standard E.164)\nfunction nwValidPhone(raw) {\n  if (!raw) return false;\n  \/\/ Tylko dozwolone znaki telefoniczne\n  if (!\/^\\+?[\\d\\s\\-().]+$\/.test(raw)) return false;\n  \/\/ Policz same cyfry\n  const digits = raw.replace(\/\\D\/g, '');\n  return digits.length >= 7 && digits.length <= 15;\n}\n\n\/\/ \u2500\u2500 ANTY-SPAM: czas od za\u0142adowania widgetu (pu\u0142apka czasowa, pole nw_t) \u2500\u2500\nvar nwLoadedAt = Date.now();\n\n\/\/ \u2500\u2500 \u015aWIE\u017bY NONCE \u2500\u2500\n\/\/ Strona mo\u017ce by\u0107 w cache (LiteSpeed \/ WP Rocket \/ Cloudflare), a nonce\n\/\/ z wp_footer wygasa po 12\u201324 h. Pobieramy \u015bwie\u017cy tu\u017c przed wysy\u0142k\u0105.\n\/\/ Przy jakimkolwiek b\u0142\u0119dzie \u2192 zapasowy nonce z nilenWycena.\nasync function nwFetchNonce(ajaxUrl) {\n  var fallback = (typeof nilenWycena !== 'undefined') ? nilenWycena.nonce : '';\n  try {\n    var fd = new FormData();\n    fd.append('action', 'nilen_wycena_nonce');\n    var resp = await fetch(ajaxUrl, { method: 'POST', body: fd, credentials: 'same-origin', cache: 'no-store' });\n    var json = await resp.json();\n    if (json && json.success && json.data && json.data.nonce) return json.data.nonce;\n  } catch (err) {}\n  return fallback;\n}\n\n\/\/ \u2500\u2500 WYSY\u0141ANIE \u2500\u2500\nasync function nwSubmit(e) {\n  e.preventDefault();\n\n  const name  = document.getElementById('nwName').value.trim();\n  const phone = document.getElementById('nwPhone').value.trim();\n  const email = document.getElementById('nwEmail').value.trim();\n  const c1    = document.getElementById('nwC1').checked;\n  const errEl = document.getElementById('nwErr');\n\n  \/\/ Walidacja\n  let ok = true;\n  ['nwName', 'nwPhone', 'nwEmail'].forEach(id => {\n    const el = document.getElementById(id);\n    if (!el || !el.value.trim()) { if (el) el.classList.add('nw-err'); ok = false; }\n    else el.classList.remove('nw-err');\n  });\n  if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n    document.getElementById('nwEmail').classList.add('nw-err'); ok = false;\n  }\n  \/\/ Walidacja telefonu: dozwolone cyfry, spacje, my\u015blniki, nawiasy, wiod\u0105cy +\n  \/\/ Liczymy same cyfry \u2014 poprawny numer ma 7\u201315 cyfr (standard E.164)\n  if (!nwValidPhone(phone)) {\n    document.getElementById('nwPhone').classList.add('nw-err'); ok = false;\n  }\n  if (!c1) {\n    document.getElementById('nwC1').style.outline = '2px solid #c0392b'; ok = false;\n  } else {\n    document.getElementById('nwC1').style.outline = '';\n  }\n  if (!ok) {\n    errEl.textContent = 'Uzupe\u0142nij wszystkie wymagane pola (telefon: min. 7 cyfr, np. +48 123 456 789) i zaznacz zgod\u0119 na e-mail.';\n    errEl.style.display = 'block'; return;\n  }\n\n  const btn = document.getElementById('nwSubmitBtn');\n  const btnLabel = btn.textContent;   \/\/ oryginalny (przet\u0142umaczony) tekst \u2014 przywracany po b\u0142\u0119dzie\n  btn.disabled = true; btn.textContent = 'Wysy\u0142am\u2026';\n  errEl.style.display = 'none';\n\n  \/\/ \u015awie\u017cy nonce PRZED zbudowaniem payloadu (odporno\u015b\u0107 na cache strony)\n  const ajaxUrl = (typeof nilenWycena !== 'undefined') ? nilenWycena.ajaxUrl : '\/wp-admin\/admin-ajax.php';\n  const nonce   = await nwFetchNonce(ajaxUrl);\n\n  const areaInS = document.getElementById('nwAreaIn');   \/\/ metra\u017c \u2014 ostatnie zatwierdzenie przed wysy\u0142k\u0105\n  if (areaInS) nwArea(areaInS.value);\n\n  const payload = new FormData();\n  payload.append('action',    'nilen_wycena');\n  payload.append('lang',      (document.documentElement.lang || 'pl').split('-')[0].toLowerCase());\n\n  \/\/ Atrybucja \u017ar\u00f3d\u0142a \u2014 zapisana przy pierwszym wej\u015bciu na stron\u0119 (patrz wp_footer)\n  var nwAttr = (typeof window.nilenGetAttr === 'function')\n             ? window.nilenGetAttr()\n             : { source:'', medium:'', campaign:'', conf:'', ga_cid:'' };\n  payload.append('attr_source',   nwAttr.source);\n  payload.append('attr_medium',   nwAttr.medium);\n  payload.append('attr_campaign', nwAttr.campaign);\n  payload.append('attr_conf',     nwAttr.conf);\n  payload.append('ga_cid',        nwAttr.ga_cid);\n  payload.append('nonce',     nonce);\n  \/\/ Anty-spam: honeypot (cz\u0142owiek zostawia puste) + czas od za\u0142adowania widgetu [ms]\n  var nwHp = document.getElementById('nwWebsite');\n  payload.append('nw_website', nwHp ? nwHp.value : '');\n  payload.append('nw_t',       String(Date.now() - nwLoadedAt));\n  payload.append('name',      name);\n  payload.append('phone',     phone);\n  payload.append('email',     email);\n  payload.append('c_email',   c1 ? '1' : '0');\n  payload.append('c_tel',     document.getElementById('nwC2').checked ? '1' : '0');\n  payload.append('c_news',    document.getElementById('nwC3').checked ? '1' : '0');\n  payload.append('type',      NWS.type);\n  payload.append('scope',     NWS.scope);\n  payload.append('loc',       NWS.loc);\n  payload.append('city',      NWS.loc === 'other' ? NWS.city : '');\n  payload.append('standard',  NWS.standard);\n  payload.append('project',   NWS.project);\n  payload.append('purpose',   NWS.purpose);\n  payload.append('area',      NWS.area);\n  payload.append('r_bath',    NWS.rooms.bath);\n  payload.append('r_wc',      NWS.rooms.wc);\n  payload.append('kit_type',  NWS.kitType);\n  payload.append('r_bed',     NWS.rooms.bed);\n\n  try {\n    let resp = await fetch(ajaxUrl, { method: 'POST', body: payload });\n    let json = await resp.json();\n\n    \/\/ Niewa\u017cny nonce (np. strona z cache) \u2192 JEDNA automatyczna ponowna pr\u00f3ba\n    if (!json.success && json.data && json.data.code === 'bad_nonce') {\n      payload.set('nonce', await nwFetchNonce(ajaxUrl));\n      resp = await fetch(ajaxUrl, { method: 'POST', body: payload });\n      json = await resp.json();\n    }\n\n    if (json.success) {\n      \/\/ \u2500\u2500 GTM \u2014 zdarzenie konwersji \u2500\u2500\n      window.dataLayer = window.dataLayer || [];\n      window.dataLayer.push({\n        event:          'lead_kalkulator',\n        event_category: 'Kalkulator wyceny',\n        event_label:    'Wycena wyko\u0144czenia',\n        area:           NWS.area,\n        standard:       NWS.standard,\n        type:           NWS.type\n      });\n      document.querySelectorAll('#nilen-wycena .nw-slide').forEach(s => s.classList.remove('active'));\n      const okEl = document.getElementById('nwOK');\n      if (okEl) okEl.classList.add('active');\n      const okMail = document.getElementById('nwOKmail');\n      if (okMail) okMail.textContent = email;\n      const prog = document.getElementById('nwPF');\n      if (prog) prog.style.width = '100%';\n    } else {\n      \/\/ json.data: string (stare b\u0142\u0119dy) albo { code, message } (nowe przypadki)\n      const d   = json.data;\n      const err = new Error((d && d.message) || (typeof d === 'string' ? d : '') || 'server error');\n      err.code  = (d && d.code) || '';\n      throw err;\n    }\n  } catch (err) {\n    errEl.textContent = (err && err.code === 'rate_limited')\n      ? 'Wys\u0142ano ju\u017c kilka kalkulacji w kr\u00f3tkim czasie. Spr\\xF3buj ponownie za jaki\u015b czas lub zadzwo\u0144: +48 510 360 305'\n      : 'Co\u015b posz\u0142o nie tak. Spr\\xF3buj ponownie lub zadzwo\u0144: +48 510 360 305';\n    errEl.style.display = 'block';\n    btn.disabled = false;\n    btn.textContent = btnLabel;\n  }\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-732a852 elementor-widget elementor-widget-spacer\" data-id=\"732a852\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8515e78 elementor-widget elementor-widget-html\" data-id=\"8515e78\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<meta charset=\"UTF-8\">\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=PT+Serif:ital,wght@0,400;0,700;1,400&family=Montserrat:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n\n\/* \u2500\u2500 HERO SEO \u2500\u2500 *\/\n#nilen-hero {\n  --green:       #3F604B;\n  --green-dark:  #2A4032;\n  --amber:       #BA6B27;\n  --amber-bg:    #F4E6D6;\n  --cream-light: #F6F1E8;\n  --cream-mid:   #EDE8DC;\n  --white:       #FFFCF6;\n  --text:        #26322A;\n  --text-m:      #49604F;\n  --text-l:      #74806F;\n  --serif: \"PT Serif\", Georgia, serif;\n  --sans:  \"Montserrat\", system-ui, sans-serif;\n  font-family: var(--sans);\n  color: var(--text);\n  -webkit-font-smoothing: antialiased;\n  width: 100%;\n}\n#nilen-hero *, #nilen-hero *::before, #nilen-hero *::after {\n  box-sizing: border-box; margin: 0; padding: 0;\n}\n#nilen-hero .nh-hero {\n  background: var(--cream-light);\n  padding: 64px 48px 52px;\n  text-align: center;\n  border-bottom: 1px solid rgba(63,96,75,.12);\n}\n#nilen-hero .nh-label {\n  font-size: .58rem; font-weight: 700;\n  letter-spacing: .22em; text-transform: uppercase;\n  color: var(--amber);\n  margin-bottom: 18px;\n}\n#nilen-hero h1 {\n  font-family: var(--serif);\n  font-size: clamp(1.9rem, 4vw, 3rem);\n  font-weight: 400;\n  color: var(--green-dark);\n  letter-spacing: -.03em;\n  line-height: 1.18;\n  margin-bottom: 18px;\n}\n#nilen-hero .nh-sub {\n  font-size: .88rem;\n  color: var(--text-m);\n  line-height: 1.85;\n  max-width: 560px;\n  margin: 0 auto 40px;\n}\n#nilen-hero .nh-stats {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  gap: 0;\n  max-width: 700px;\n  margin: 0 auto;\n}\n#nilen-hero .nh-stat {\n  padding: 0 36px;\n  border-right: 1px solid rgba(63,96,75,.18);\n  flex: 1;\n}\n#nilen-hero .nh-stat:first-child { padding-left: 0; }\n#nilen-hero .nh-stat:last-child  { border-right: none; padding-right: 0; }\n#nilen-hero .nh-stat-num {\n  font-family: var(--serif);\n  font-size: 1.45rem; font-weight: 400;\n  color: var(--green-dark);\n  letter-spacing: -.02em;\n  line-height: 1;\n  margin-bottom: 6px;\n}\n#nilen-hero .nh-stat-num span { color: var(--amber); }\n#nilen-hero .nh-stat-label {\n  font-size: .63rem; font-weight: 400;\n  color: var(--text-l);\n  line-height: 1.5;\n}\n#nilen-hero .nh-seo {\n  background: var(--cream-mid);\n  padding: 14px 48px;\n  text-align: center;\n  border-bottom: 1px solid rgba(63,96,75,.1);\n}\n#nilen-hero .nh-seo-label {\n  font-size: .62rem;\n  color: var(--text-l);\n  display: inline;\n}\n#nilen-hero .nh-seo-tags {\n  display: inline;\n  font-size: .62rem;\n  color: var(--text-l);\n}\n#nilen-hero .nh-seo-tags a {\n  color: var(--text-l);\n  text-decoration: none;\n}\n#nilen-hero .nh-seo-tags a:hover { color: var(--amber); }\n@media (max-width: 800px) {\n  #nilen-hero .nh-hero { padding: 40px 24px 36px; }\n  #nilen-hero .nh-stats { flex-direction: column; gap: 18px; }\n  #nilen-hero .nh-stat { border-right: none; border-bottom: 1px solid rgba(63,96,75,.12); padding: 0 0 18px; width: 100%; text-align: center; }\n  #nilen-hero .nh-stat:last-child { border-bottom: none; padding-bottom: 0; }\n  #nilen-hero .nh-stat:first-child { padding-left: 0; }\n  #nilen-hero .nh-seo { padding: 12px 24px; }\n}\n\n#nilen-below *, #nilen-below *::before, #nilen-below *::after {\n  box-sizing: border-box; margin: 0; padding: 0;\n}\n#nilen-below {\n  --green:       #3F604B;\n  --green-dark:  #2A4032;\n  --amber:       #BA6B27;\n  --amber-bg:    #F4E6D6;\n  --cream-light: #F6F1E8;\n  --white:       #FFFCF6;\n  --text:        #26322A;\n  --text-m:      #49604F;\n  --text-l:      #74806F;\n  --serif: \"PT Serif\", Georgia, serif;\n  --sans:  \"Montserrat\", system-ui, sans-serif;\n  font-family: var(--sans);\n  font-size: 15px;\n  color: var(--text);\n  line-height: 1.6;\n  -webkit-font-smoothing: antialiased;\n  width: 100%;\n}\n\n\/* \u2500\u2500 JAK DZIA\u0141A \u2500\u2500 *\/\n#nilen-below .nwb-how {\n  background: var(--cream-light);\n  padding: 64px 48px;\n  border-top: 3px solid var(--amber);\n}\n#nilen-below .nwb-label {\n  font-size: .58rem; font-weight: 700;\n  letter-spacing: .2em; text-transform: uppercase;\n  color: var(--text-l); margin-bottom: 12px;\n  display: flex; align-items: center; gap: 10px;\n}\n#nilen-below .nwb-label::before {\n  content: \"\"; display: inline-block;\n  width: 20px; height: 1px; background: var(--amber); flex-shrink: 0;\n}\n#nilen-below .nwb-title {\n  font-family: var(--serif);\n  font-size: clamp(1.5rem, 2.8vw, 2.1rem);\n  font-weight: 400; color: var(--green-dark);\n  letter-spacing: -.025em; line-height: 1.2;\n  margin-bottom: 16px;\n}\n#nilen-below .nwb-desc {\n  font-size: .85rem; color: var(--text-m);\n  line-height: 1.85; max-width: 580px;\n  margin-bottom: 48px;\n}\n#nilen-below .nwb-steps {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 24px;\n}\n#nilen-below .nwb-step {\n  background: var(--white);\n  border: 1px solid rgba(63,96,75,.13);\n  padding: 28px 24px;\n  position: relative;\n}\n#nilen-below .nwb-step-accent {\n  position: absolute; top: 0; left: 0;\n  width: 3px; height: 40px;\n  background: var(--amber);\n}\n#nilen-below .nwb-step-num {\n  font-family: var(--serif);\n  font-size: 2.8rem; font-weight: 700;\n  color: rgba(186,107,39,.15);\n  line-height: 1; margin-bottom: 16px;\n  letter-spacing: -.04em;\n}\n#nilen-below .nwb-step-title {\n  font-size: .82rem; font-weight: 700;\n  color: var(--green-dark);\n  margin-bottom: 8px;\n}\n#nilen-below .nwb-step-text {\n  font-size: .78rem; color: var(--text-m);\n  line-height: 1.75;\n}\n\n\/* \u2500\u2500 POD KLUCZ \u2500\u2500 *\/\n#nilen-below .nwb-turnkey {\n  background: var(--green);\n  padding: 64px 48px;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 56px;\n  align-items: center;\n}\n#nilen-below .nwb-tk-label {\n  font-size: .58rem; font-weight: 700;\n  letter-spacing: .2em; text-transform: uppercase;\n  color: rgba(255,252,246,.4);\n  display: flex; align-items: center; gap: 10px;\n  margin-bottom: 12px;\n}\n#nilen-below .nwb-tk-label::before {\n  content: \"\"; display: inline-block;\n  width: 20px; height: 1px; background: var(--amber); flex-shrink: 0;\n}\n#nilen-below .nwb-tk-title {\n  font-family: var(--serif);\n  font-size: clamp(1.4rem, 2.5vw, 1.9rem);\n  font-weight: 400; color: var(--white);\n  letter-spacing: -.025em; line-height: 1.22;\n  margin-bottom: 16px;\n}\n#nilen-below .nwb-tk-desc {\n  font-size: .82rem;\n  color: rgba(255,252,246,.6);\n  line-height: 1.85;\n  margin-bottom: 28px;\n}\n#nilen-below .nwb-tk-btn {\n  display: inline-flex; align-items: center; gap: 9px;\n  height: 50px; padding: 0 36px;\n  background: var(--amber); color: var(--white);\n  border: none; cursor: pointer;\n  font-family: var(--sans);\n  font-size: .7rem; font-weight: 700;\n  letter-spacing: .1em; text-transform: uppercase;\n  text-decoration: none;\n  transition: background .18s;\n}\n#nilen-below .nwb-tk-btn:hover { background: #9A5720; text-decoration: none; }\n#nilen-below .nwb-benefits {\n  display: flex; flex-direction: column;\n}\n#nilen-below .nwb-benefit {\n  display: flex; gap: 16px; align-items: flex-start;\n  padding: 16px 0;\n  border-bottom: 1px solid rgba(255,252,246,.08);\n}\n#nilen-below .nwb-benefit:first-child {\n  border-top: 1px solid rgba(255,252,246,.08);\n}\n#nilen-below .nwb-benefit-icon {\n  width: 22px; height: 22px; min-width: 22px;\n  border: 1px solid rgba(186,107,39,.6);\n  display: flex; align-items: center; justify-content: center;\n  font-size: .65rem; color: var(--amber);\n  flex-shrink: 0; margin-top: 1px; font-weight: 700;\n}\n#nilen-below .nwb-benefit-title {\n  font-size: .8rem; font-weight: 600;\n  color: var(--white); margin-bottom: 2px;\n}\n#nilen-below .nwb-benefit-sub {\n  font-size: .72rem;\n  color: rgba(255,252,246,.5);\n  line-height: 1.6;\n}\n\n\/* \u2500\u2500 STATYSTYKI \u2500\u2500 *\/\n#nilen-below .nwb-stats {\n  background: var(--green-dark);\n  padding: 36px 48px;\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 0;\n}\n#nilen-below .nwb-stat {\n  text-align: center;\n  padding: 12px 24px;\n  border-right: 1px solid rgba(255,252,246,.1);\n}\n#nilen-below .nwb-stat:last-child { border-right: none; }\n#nilen-below .nwb-stat-num {\n  font-family: var(--serif);\n  font-size: 2rem; font-weight: 700;\n  color: var(--white);\n  line-height: 1; margin-bottom: 6px;\n  letter-spacing: -.03em;\n}\n#nilen-below .nwb-stat-num span {\n  color: var(--amber);\n}\n#nilen-below .nwb-stat-label {\n  font-size: .68rem; font-weight: 500;\n  letter-spacing: .06em;\n  color: rgba(255,252,246,.45);\n  text-transform: uppercase;\n}\n\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\n#nilen-below .nwb-faq {\n  background: var(--cream-light);\n  padding: 64px 48px;\n  border-top: 1px solid rgba(63,96,75,.1);\n}\n#nilen-below .nwb-faq-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 2px;\n  margin-top: 40px;\n}\n#nilen-below .nwb-faq-item {\n  background: var(--white);\n  padding: 28px 28px;\n  border: 1px solid rgba(63,96,75,.1);\n  cursor: pointer;\n  transition: border-color .18s;\n}\n#nilen-below .nwb-faq-item:hover { border-color: rgba(186,107,39,.4); }\n#nilen-below .nwb-faq-q {\n  font-size: .84rem; font-weight: 700;\n  color: var(--green-dark);\n  display: flex; justify-content: space-between;\n  align-items: flex-start; gap: 16px;\n  margin-bottom: 0;\n}\n#nilen-below .nwb-faq-icon {\n  width: 20px; height: 20px; min-width: 20px;\n  border: 1px solid rgba(186,107,39,.5);\n  display: flex; align-items: center; justify-content: center;\n  color: var(--amber); font-size: .75rem; font-weight: 700;\n  flex-shrink: 0; margin-top: 1px;\n  transition: transform .2s, background .18s;\n}\n#nilen-below .nwb-faq-item.open .nwb-faq-icon {\n  background: var(--amber); color: var(--white);\n  transform: rotate(45deg);\n}\n#nilen-below .nwb-faq-a {\n  display: none;\n  font-size: .78rem; color: var(--text-m);\n  line-height: 1.8;\n  margin-top: 14px;\n  padding-top: 14px;\n  border-top: 1px solid rgba(63,96,75,.08);\n}\n#nilen-below .nwb-faq-item.open .nwb-faq-a { display: block; }\n\n\/* \u2500\u2500 ZDJ\u0118CIE POD KLUCZ \u2500\u2500 *\/\n#nilen-below .nwb-tk-photo {\n  position: relative;\n  flex-shrink: 0;\n}\n#nilen-below .nwb-tk-photo img {\n  width: 100%;\n  height: 520px;\n  object-fit: cover;\n  border-radius: 8px 140px 8px 8px;\n  display: block;\n}\n\n\/* \u2500\u2500 RESPONSYWNO\u015a\u0106 \u2500\u2500 *\/\n@media (max-width: 800px) {\n  #nilen-below .nwb-how { padding: 40px 24px; }\n  #nilen-below .nwb-steps { grid-template-columns: 1fr; }\n  #nilen-below .nwb-stats { grid-template-columns: repeat(2, 1fr); padding: 28px 24px; }\n  #nilen-below .nwb-stat { border-right: none; border-bottom: 1px solid rgba(255,252,246,.1); }\n  #nilen-below .nwb-turnkey { grid-template-columns: 1fr; padding: 40px 24px; gap: 36px; }\n  #nilen-below .nwb-tk-photo img { height: 280px; border-radius: 8px 80px 8px 8px; }\n  #nilen-below .nwb-faq { padding: 40px 24px; }\n  #nilen-below .nwb-faq-grid { grid-template-columns: 1fr; }\n}\n<\/style>\n\n\n\n<div id=\"nilen-below\">\n\n  <!-- JAK DZIA\u0141A KALKULATOR -->\n  <div class=\"nwb-how\">\n    <div class=\"nwb-label\">Valuation calculator<\/div>\n    <h2 class=\"nwb-title\">How does the finishing calculator work?<\/h2>\n    <p class=\"nwb-desc\">\n Kalkulator oparty jest na realnych kosztach z ponad 200 zrealizowanych przez nas mieszka\u0144 w Krakowie.\n  These aren't random ranges. These are data from actual cost estimates, taking into account the current market.\n materials and labor. It takes approximately 2 minutes to complete.  \n    <\/p>\n    <div class=\"nwb-steps\">\n      <div class=\"nwb-step\">\n        <div class=\"nwb-step-accent\"><\/div>\n        <div class=\"nwb-step-num\">01<\/div>\n        <div class=\"nwb-step-title\">Provide apartment details<\/div>\n        <p class=\"nwb-step-text\">Square footage, property type (new construction or secondary market), finishing standard and number of rooms.<\/p>\n      <\/div>\n      <div class=\"nwb-step\">\n        <div class=\"nwb-step-accent\"><\/div>\n        <div class=\"nwb-step-num\">02<\/div>\n        <div class=\"nwb-step-title\">Calculation in 2 minutes<\/div>\n        <p class=\"nwb-step-text\">Based on your answers, the system calculates an approximate cost estimate for Nilen's finishing work. The result takes into account the apartment's square footage, standard, and layout. <\/p>\n      <\/div>\n      <div class=\"nwb-step\">\n        <div class=\"nwb-step-accent\"><\/div>\n        <div class=\"nwb-step-num\">03<\/div>\n        <div class=\"nwb-step-title\">Results straight to your email<\/div>\n        <p class=\"nwb-step-text\">Detailed price ranges with a comparison of options are sent to your email address.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- STATYSTYKI -->\n  <div class=\"nwb-stats\">\n    <div class=\"nwb-stat\">\n      <div class=\"nwb-stat-num\"><span>200+<\/span><\/div>\n      <div class=\"nwb-stat-label\">Finished apartments<\/div>\n    <\/div>\n    <div class=\"nwb-stat\">\n      <div class=\"nwb-stat-num\">5 <span>+<\/span><\/div>\n      <div class=\"nwb-stat-label\">Years of experience<\/div>\n    <\/div>\n    <div class=\"nwb-stat\">\n      <div class=\"nwb-stat-num\">100 <span>%<\/span><\/div>\n      <div class=\"nwb-stat-label\">Turnkey implementation<\/div>\n    <\/div>\n    <div class=\"nwb-stat\">\n      <div class=\"nwb-stat-num\" style=\"font-size:1.3rem;padding-top:6px\">Krakow <span style=\"font-size:1.3rem\">and surrounding areas<\/span><\/div>\n      <div class=\"nwb-stat-label\">Area of \u200b\u200boperation approx. 40 km <\/div>\n    <\/div>\n  <\/div>\n\n  \n\n  <!-- FAQ -->\n<div class=\"nwb-faq\">\n  <div class=\"nwb-label\">Frequently asked questions<\/div>\n\n  <h2 class=\"nwb-title\">\n Najcz\u0119stsze pytania o kalkulator koszt\u00f3w wyko\u0144czenia\n  <\/h2>\n\n  <div class=\"nwb-faq-grid\">\n\n    <div class=\"nwb-faq-item\" onclick=\"nwbFaq(this)\">\n      <div class=\"nwb-faq-q\">\n Czy wynik kalkulatora jest wi\u0105\u017c\u0105c\u0105 ofert\u0105?\n        <span class=\"nwb-faq-icon\">+<\/span>\n      <\/div>\n\n      <div class=\"nwb-faq-a\">\n  No. The calculator provides an approximate budget and possible cost range.\n finishing of the apartment. The result is based on the given square footage,\n standard and interior layout as well as data from similar Nilen implementations.\n We prepare a detailed quote after consultation and analysis of the apartment's floor plan.\n and determining the exact scope of work.  \n      <\/div>\n    <\/div>\n\n    <div class=\"nwb-faq-item\" onclick=\"nwbFaq(this)\">\n      <div class=\"nwb-faq-q\">\n Ile kosztuje wyko\u0144czenie mieszkania w Krakowie?\n        <span class=\"nwb-faq-icon\">+<\/span>\n      <\/div>\n\n      <div class=\"nwb-faq-a\">\n  The cost of finishing the apartment depends primarily on the square footage and condition.\n property, selected standard, number of bathrooms, type of kitchen\n and the scope of the project. The calculator takes this information into account and\n based on which individual, indicative ranges for the service are determined\n turnkey finishing in Krakow. \n      <\/div>\n    <\/div>\n\n    <div class=\"nwb-faq-item\" onclick=\"nwbFaq(this)\">\n      <div class=\"nwb-faq-q\">\n Co obejmuje kalkulacja wyko\u0144czenia pod klucz?\n        <span class=\"nwb-faq-icon\">+<\/span>\n      <\/div>\n\n      <div class=\"nwb-faq-a\">\n  The calculation includes the approximate cost of materials, labor,\n coordination of teams and deliveries, quality control, cleaning after completion\n works and guarantees for the work performed. If you select\n interior design, its estimated cost will also be included\n in the submitted calculation. \n      <\/div>\n    <\/div>\n\n    <div class=\"nwb-faq-item\" onclick=\"nwbFaq(this)\">\n      <div class=\"nwb-faq-q\">\n Jak d\u0142ugo trwa wyko\u0144czenie mieszkania?\n        <span class=\"nwb-faq-icon\">+<\/span>\n      <\/div>\n\n      <div class=\"nwb-faq-a\">\n  The implementation time depends on the size, standard and scope of work.\n Finishing an apartment with an area of \u200b\u200b50\u201370 m\u00b2 usually takes about\n 10\u201314 weeks from commencement of work. Larger apartments, premium projects\n and aftermarket repairs may require more time. Accurate\n We establish a schedule before starting the implementation.  \n      <\/div>\n    <\/div>\n\n    <div class=\"nwb-faq-item\" onclick=\"nwbFaq(this)\">\n      <div class=\"nwb-faq-q\">\n Dlaczego wide\u0142ki dla rynku wt\u00f3rnego s\u0105 szersze?\n        <span class=\"nwb-faq-icon\">+<\/span>\n      <\/div>\n\n      <div class=\"nwb-faq-a\">\n W mieszkaniu z rynku wt\u00f3rnego ostateczny koszt zale\u017cy mi\u0119dzy innymi\n od stanu instalacji elektrycznej i wodno-kanalizacyjnej, zakresu\n wyburze\u0144, kondycji \u015bcian i pod\u0142\u00f3g oraz prac przygotowawczych.\n Dok\u0142adniejsz\u0105 wycen\u0119 mo\u017cemy przygotowa\u0107 po analizie rzutu i bezp\u0142atnej\n wizji lokalnej.\n      <\/div>\n    <\/div>\n\n    <div class=\"nwb-faq-item\" onclick=\"nwbFaq(this)\">\n      <div class=\"nwb-faq-q\">\n Czy realizujecie wyko\u0144czenia poza Krakowem?\n        <span class=\"nwb-faq-icon\">+<\/span>\n      <\/div>\n\n      <div class=\"nwb-faq-a\">\n  We operate primarily in Krakow and surrounding areas up to approximately 40 km away. For larger projects,\n we can individually discuss the possibility of interior finishing\n in a further location. \n      <\/div>\n    <\/div>\n\n    <div class=\"nwb-faq-item\" onclick=\"nwbFaq(this)\">\n      <div class=\"nwb-faq-q\">\n Kiedy i jak otrzymam wynik kalkulacji?\n        <span class=\"nwb-faq-icon\">+<\/span>\n      <\/div>\n\n      <div class=\"nwb-faq-a\">\n  You will receive a preliminary calculation at the email address you provided, usually within\n a few minutes after submitting the form. In the message you will find\n indicative budget, possible price range, summary of selected\n parameters and information about what the comprehensive Nilen service includes.\n If the message does not appear in your inbox, check your Spam folder. \n      <\/div>\n    <\/div>\n\n    <div class=\"nwb-faq-item\" onclick=\"nwbFaq(this)\">\n      <div class=\"nwb-faq-q\">\n Czy po otrzymaniu kalkulacji musz\u0119 umawia\u0107 konsultacj\u0119?\n        <span class=\"nwb-faq-icon\">+<\/span>\n      <\/div>\n\n      <div class=\"nwb-faq-a\">\n  No. The calculation is free and there is no obligation to use it.\n from Nilen services. If you would like to discuss the result and receive a more detailed\n quote, you can voluntarily arrange a free consultation. If\n If you select this option in the form, our consultant will contact you\n with you within 24 business hours.   \n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\nfunction nwbFaq(el) {\n  el.classList.toggle('open');\n}\n<\/script><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-08efae3 elementor-widget elementor-widget-spacer\" data-id=\"08efae3\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<!-- dce invisible element d0d9362 --><style>\n    .title{\n        max-width: calc(100% - 90px);\n    }\n<\/style>\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a16c29e e-flex e-con-boxed e-con e-parent\" data-id=\"a16c29e\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0421491 elementor-widget elementor-widget-html\" data-id=\"0421491\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>document.addEventListener('DOMContentLoaded', function() {\r\n    console.log('Skrypt zosta\u0142 za\u0142adowany');\r\n\r\n    function updateAccordionItems() {\r\n        var accordionItems = document.querySelectorAll('.elementor-accordion-item');\r\n        if (accordionItems.length > 0) {\r\n            console.log('Znaleziono ' + accordionItems.length + ' element\u00f3w akordeonu');\r\n            accordionItems.forEach(function(accordionItem, index) {\r\n                var accordionTitle = accordionItem.querySelector('.elementor-tab-title');\r\n                var accordionContent = accordionItem.querySelector('.elementor-tab-content');\r\n\r\n                console.log('Przetwarzanie elementu ' + index);\r\n                console.log('Przed: ', accordionTitle.classList.contains('elementor-active'), accordionContent.style.display);\r\n\r\n                accordionTitle.classList.remove('elementor-active');\r\n                accordionContent.style.display = 'none';\r\n\r\n                console.log('Po: ', accordionTitle.classList.contains('elementor-active'), accordionContent.style.display);\r\n            });\r\n            console.log('Wszystkie elementy akordeonu zosta\u0142y zaktualizowane');\r\n        } else {\r\n            console.log('Nie znaleziono \u017cadnych element\u00f3w akordeonu');\r\n        }\r\n    }\r\n\r\n    \/\/ Wykonaj aktualizacj\u0119 od razu i powtarzaj co 500ms przez 5 sekund\r\n    updateAccordionItems();\r\n    var interval = setInterval(updateAccordionItems, 500);\r\n    setTimeout(function() {\r\n        clearInterval(interval);\r\n    }, 5000); \/\/ Zatrzymaj po 5 sekundach\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Welcome to Nilen Concept Fill out the form \u2193 Nilen \u00b7 Krakow \u00b7 Prices 2026 Renovation cost calculator and finishing of an apartment or house in Krakow Calculate how much it really costs to finish your apartment or house in Krakow.With materials, labor, and costs you won&#8217;t find in other calculators. 01 Step 1 of [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":40877,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-54262","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Apartment renovation and finishing cost calculator 2026 | Nilen<\/title>\n<meta name=\"description\" content=\"Calculate the approximate cost of renovating and finishing an apartment or house in Krakow. Select the square footage and standard, and you&#039;ll receive the estimate via email.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nilen.pl\/en\/nilen-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apartment renovation and finishing cost calculator 2026 | Nilen\" \/>\n<meta property=\"og:description\" content=\"Calculate the approximate cost of renovating and finishing an apartment or house in Krakow. Select the square footage and standard, and you&#039;ll receive the estimate via email.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nilen.pl\/en\/nilen-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Nilen\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/nilenconcept\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-14T16:14:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nilen.pl\/wp-content\/uploads\/2023\/07\/25.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"864\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/nilen-calculator\\\/\",\"url\":\"https:\\\/\\\/nilen.pl\\\/en\\\/nilen-calculator\\\/\",\"name\":\"Apartment renovation and finishing cost calculator 2026 | Nilen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/nilen-calculator\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/nilen-calculator\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/25.webp\",\"datePublished\":\"2026-07-09T11:43:58+00:00\",\"dateModified\":\"2026-10-14T16:14:45+00:00\",\"description\":\"Calculate the approximate cost of renovating and finishing an apartment or house in Krakow. Select the square footage and standard, and you'll receive the estimate via email.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/nilen-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nilen.pl\\\/en\\\/nilen-calculator\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/nilen-calculator\\\/#primaryimage\",\"url\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/25.webp\",\"contentUrl\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/25.webp\",\"width\":1536,\"height\":864},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/nilen-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/nilen.pl\\\/en\\\/home-page\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/nilen.pl\\\/en\\\/\",\"name\":\"Nilen Concept\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#organization\"},\"alternateName\":\"Nilen\",\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#organization\",\"name\":\"Nilen Concept\",\"alternateName\":\"Nilen\",\"url\":\"https:\\\/\\\/nilen.pl\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Stopki-NILEN-6.png\",\"contentUrl\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Stopki-NILEN-6.png\",\"width\":2048,\"height\":2048,\"caption\":\"Nilen Concept\"},\"image\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/nilenconcept\",\"https:\\\/\\\/www.instagram.com\\\/nilen_concept\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCyslp6cP9_ULJSGCe9Gqu2w\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apartment renovation and finishing cost calculator 2026 | Nilen","description":"Calculate the approximate cost of renovating and finishing an apartment or house in Krakow. Select the square footage and standard, and you'll receive the estimate via email.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nilen.pl\/en\/nilen-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Apartment renovation and finishing cost calculator 2026 | Nilen","og_description":"Calculate the approximate cost of renovating and finishing an apartment or house in Krakow. Select the square footage and standard, and you'll receive the estimate via email.","og_url":"https:\/\/nilen.pl\/en\/nilen-calculator\/","og_site_name":"Nilen","article_publisher":"https:\/\/www.facebook.com\/nilenconcept","article_modified_time":"2026-10-14T16:14:45+00:00","og_image":[{"width":1536,"height":864,"url":"https:\/\/nilen.pl\/wp-content\/uploads\/2023\/07\/25.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nilen.pl\/en\/nilen-calculator\/","url":"https:\/\/nilen.pl\/en\/nilen-calculator\/","name":"Apartment renovation and finishing cost calculator 2026 | Nilen","isPartOf":{"@id":"https:\/\/nilen.pl\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nilen.pl\/en\/nilen-calculator\/#primaryimage"},"image":{"@id":"https:\/\/nilen.pl\/en\/nilen-calculator\/#primaryimage"},"thumbnailUrl":"https:\/\/nilen.pl\/wp-content\/uploads\/2023\/07\/25.webp","datePublished":"2026-07-09T11:43:58+00:00","dateModified":"2026-10-14T16:14:45+00:00","description":"Calculate the approximate cost of renovating and finishing an apartment or house in Krakow. Select the square footage and standard, and you'll receive the estimate via email.","breadcrumb":{"@id":"https:\/\/nilen.pl\/en\/nilen-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nilen.pl\/en\/nilen-calculator\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nilen.pl\/en\/nilen-calculator\/#primaryimage","url":"https:\/\/nilen.pl\/wp-content\/uploads\/2023\/07\/25.webp","contentUrl":"https:\/\/nilen.pl\/wp-content\/uploads\/2023\/07\/25.webp","width":1536,"height":864},{"@type":"BreadcrumbList","@id":"https:\/\/nilen.pl\/en\/nilen-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/nilen.pl\/en\/home-page\/"},{"@type":"ListItem","position":2,"name":"Calculator"}]},{"@type":"WebSite","@id":"https:\/\/nilen.pl\/en\/#website","url":"https:\/\/nilen.pl\/en\/","name":"Nilen Concept","description":"","publisher":{"@id":"https:\/\/nilen.pl\/en\/#organization"},"alternateName":"Nilen","inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nilen.pl\/en\/#organization","name":"Nilen Concept","alternateName":"Nilen","url":"https:\/\/nilen.pl\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nilen.pl\/en\/#\/schema\/logo\/image\/","url":"https:\/\/nilen.pl\/wp-content\/uploads\/2025\/07\/Stopki-NILEN-6.png","contentUrl":"https:\/\/nilen.pl\/wp-content\/uploads\/2025\/07\/Stopki-NILEN-6.png","width":2048,"height":2048,"caption":"Nilen Concept"},"image":{"@id":"https:\/\/nilen.pl\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/nilenconcept","https:\/\/www.instagram.com\/nilen_concept\/","https:\/\/www.youtube.com\/channel\/UCyslp6cP9_ULJSGCe9Gqu2w"]}]}},"_links":{"self":[{"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/pages\/54262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/comments?post=54262"}],"version-history":[{"count":31,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/pages\/54262\/revisions"}],"predecessor-version":[{"id":55850,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/pages\/54262\/revisions\/55850"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/media\/40877"}],"wp:attachment":[{"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/media?parent=54262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}