<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archiwa Ceny instalacji - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/ceny-instalacji/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/ceny-instalacji/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Wed, 16 Sep 2026 17:23:32 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Ceny instalacji - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/ceny-instalacji/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wycena ogrzewania podłogowego wodnego – analizator ofert i pełnego budżetu.</title>
		<link>https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 09 Dec 2025 12:04:56 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Ceny]]></category>
		<category><![CDATA[Ceny instalacji]]></category>
		<category><![CDATA[Energooszczędny dom]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty budowy domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Remont i modernizacja]]></category>
		<category><![CDATA[Wycena]]></category>
		<category><![CDATA[instalacja podłogowa]]></category>
		<category><![CDATA[kocioł gazowy]]></category>
		<category><![CDATA[koszt budowy domu]]></category>
		<category><![CDATA[koszt podłogówki]]></category>
		<category><![CDATA[ogrzewanie podłogowe cena]]></category>
		<category><![CDATA[ogrzewanie podłogowe wodne]]></category>
		<category><![CDATA[podłogówka w domu]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[wycena ogrzewania podłogowego]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2922</guid>

					<description><![CDATA[<p>Planujesz inwestycję w komfort na lata i chcesz wiedzieć, ile realnie kosztuje nowoczesne ogrzewanie podłogowe? Ten poradnik pokazuje, jak wygląda kompleksowa wycena ogrzewania podłogowego wodnego krok po kroku – od projektu, przez materiały, robociznę, aż po dobór źródła ciepła. Dowiesz się, jakie elementy najbardziej wpływają na budżet, gdzie nie warto oszczędzać oraz jak uniknąć najczęstszych kosztownych błędów inwestorskich.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">Wycena ogrzewania podłogowego wodnego – analizator ofert i pełnego budżetu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-quote-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b465b;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #078faa;
    --rk-cyan-soft: #def7fa;
    --rk-orange: #ff6846;
    --rk-orange-dark: #e44f31;
    --rk-yellow: #f2b526;
    --rk-green: #2fcda1;
    --rk-green-dark: #168267;
    --rk-red: #d7504a;
    --rk-purple: #6963ce;
    --rk-ink: #10283a;
    --rk-copy: #3c5668;
    --rk-muted: #6b8191;
    --rk-line: #d3e2e8;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.62;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

  #rk-quote-guide,
  #rk-quote-guide * {
    box-sizing: border-box;
    min-width: 0;
  }

  #rk-quote-guide a {
    color: var(--rk-cyan-dark);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }

  #rk-quote-guide a:hover,
  #rk-quote-guide a:focus-visible {
    color: var(--rk-orange-dark);
  }

  #rk-quote-guide button,
  #rk-quote-guide input,
  #rk-quote-guide select {
    font: inherit;
  }

  #rk-quote-guide button:focus-visible,
  #rk-quote-guide a:focus-visible,
  #rk-quote-guide summary:focus-visible,
  #rk-quote-guide input:focus-visible,
  #rk-quote-guide select:focus-visible {
    outline: 3px solid rgba(41, 196, 215, 0.48);
    outline-offset: 3px;
  }

  #rk-quote-guide img {
    display: block;
    height: auto;
    max-width: 100%;
  }

  #rk-quote-guide p {
    color: var(--rk-copy);
    margin: 0 0 18px;
  }

  #rk-quote-guide strong {
    color: var(--rk-ink);
  }

  #rk-quote-guide .rk-quote-shell {
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    box-shadow: 0 22px 65px rgba(13, 41, 57, 0.12);
    overflow: hidden;
  }

  #rk-quote-guide .rk-quote-hero {
    background:
      radial-gradient(circle at 90% 115%, rgba(41, 196, 215, 0.24) 0, rgba(41, 196, 215, 0.24) 18%, transparent 18.2%),
      linear-gradient(120deg, #0b2536 0%, #143e52 61%, #0d6576 100%);
    color: var(--rk-white);
    overflow: hidden;
    padding: 62px 58px 56px;
    position: relative;
  }

  #rk-quote-guide .rk-quote-hero::before {
    background: var(--rk-orange);
    border-radius: 50%;
    box-shadow: 0 0 0 9px rgba(255, 104, 70, 0.14);
    content: "";
    height: 12px;
    left: 58px;
    position: absolute;
    top: 43px;
    width: 12px;
  }

  #rk-quote-guide .rk-quote-kicker {
    color: #6ce5ef;
    display: block;
    font-size: 0.77rem;
    font-weight: 900;
    letter-spacing: 0.13em;
    margin: 0 0 19px 28px;
    text-transform: uppercase;
  }

  #rk-quote-guide .rk-quote-hero-title,
  #rk-quote-guide .rk-quote-section-title,
  #rk-quote-guide .rk-quote-cta-title,
  #rk-quote-guide .rk-quote-author-title {
    font-family: Arial, Helvetica, sans-serif;
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.06;
  }

  #rk-quote-guide .rk-quote-hero-title {
    color: #ffffff !important;
    font-size: clamp(2.35rem, 6vw, 5rem);
    margin: 0;
    max-width: 1190px;
  }

  #rk-quote-guide .rk-quote-hero-title span {
    color: #69e7f2;
  }

  #rk-quote-guide .rk-quote-hero-lead {
    color: #e3f0f4 !important;
    font-size: clamp(1.08rem, 2vw, 1.43rem);
    line-height: 1.55;
    margin: 27px 0 0;
    max-width: 1100px;
  }

  #rk-quote-guide .rk-quote-hero-tags,
  #rk-quote-guide .rk-quote-meta,
  #rk-quote-guide .rk-quote-nav {
    display: flex;
    flex-wrap: wrap;
  }

  #rk-quote-guide .rk-quote-hero-tags {
    gap: 10px;
    margin-top: 30px;
  }

  #rk-quote-guide .rk-quote-hero-tags span {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 999px;
    color: #ffffff;
    font-size: 0.82rem;
    font-weight: 800;
    padding: 8px 14px;
  }

  #rk-quote-guide .rk-quote-meta {
    color: #c5d9df;
    font-size: 0.83rem;
    font-weight: 700;
    gap: 12px 24px;
    margin-top: 34px;
  }

  #rk-quote-guide .rk-quote-meta strong {
    color: #ffffff;
  }

  #rk-quote-guide .rk-quote-nav {
    align-items: center;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-line);
    gap: 9px;
    padding: 22px 34px;
    position: static;
  }

  #rk-quote-guide .rk-quote-nav-label {
    color: var(--rk-ink);
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    margin-right: 4px;
    text-transform: uppercase;
  }

  #rk-quote-guide .rk-quote-nav a {
    background: #f1f6f8;
    border: 1px solid transparent;
    border-radius: 999px;
    color: var(--rk-ink);
    font-size: 0.76rem;
    font-weight: 800;
    line-height: 1.25;
    padding: 8px 12px;
    text-decoration: none;
  }

  #rk-quote-guide .rk-quote-nav a:hover,
  #rk-quote-guide .rk-quote-nav a:focus-visible {
    background: var(--rk-cyan-soft);
    border-color: #91dce5;
    color: #075f78;
  }

  #rk-quote-guide .rk-quote-section {
    padding: 64px 58px;
  }

  #rk-quote-guide .rk-quote-section + .rk-quote-section {
    border-top: 1px solid var(--rk-line);
  }

  #rk-quote-guide .rk-quote-section-soft {
    background: var(--rk-bg);
  }

  #rk-quote-guide .rk-quote-section-dark {
    background: var(--rk-navy);
    color: #ffffff;
  }

  #rk-quote-guide .rk-quote-eyebrow {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.75rem;
    font-weight: 900;
    letter-spacing: 0.12em;
    margin-bottom: 12px;
    text-transform: uppercase;
  }

  #rk-quote-guide .rk-quote-section-dark .rk-quote-eyebrow {
    color: #68e6ef;
  }

  #rk-quote-guide .rk-quote-section-title,
  #rk-quote-guide .rk-quote-author-title {
    color: var(--rk-ink);
    font-size: clamp(2rem, 4vw, 3.65rem);
    margin: 0;
    max-width: 1080px;
  }

  #rk-quote-guide .rk-quote-section-dark .rk-quote-section-title {
    color: #ffffff;
  }

  #rk-quote-guide .rk-quote-lead {
    color: var(--rk-copy);
    font-size: clamp(1.03rem, 1.7vw, 1.24rem);
    line-height: 1.7;
    margin: 22px 0 0;
    max-width: 1130px;
  }

  #rk-quote-guide .rk-quote-copy {
    color: var(--rk-copy);
    margin: 22px 0 0;
  }

  #rk-quote-guide .rk-quote-section-dark .rk-quote-lead,
  #rk-quote-guide .rk-quote-section-dark .rk-quote-copy {
    color: #c8dbe2;
  }

  #rk-quote-guide .rk-quote-section-dark > strong,
  #rk-quote-guide .rk-quote-section-dark .rk-quote-lead strong,
  #rk-quote-guide .rk-quote-section-dark .rk-quote-copy strong {
    color: #ffffff;
  }

  #rk-quote-guide .rk-quote-answer {
    background: linear-gradient(135deg, #e6fafd 0%, #f8fcfd 100%);
    border: 1px solid #9cdfe8;
    border-left: 7px solid var(--rk-cyan);
    border-radius: 18px;
    margin-top: 28px;
    padding: 27px 29px;
  }

  #rk-quote-guide .rk-quote-answer strong {
    color: var(--rk-ink);
    display: block;
    font-size: 1.24rem;
    line-height: 1.4;
  }

  #rk-quote-guide .rk-quote-answer p {
    margin: 10px 0 0;
  }

  #rk-quote-guide .rk-quote-grid-2,
  #rk-quote-guide .rk-quote-grid-3,
  #rk-quote-guide .rk-quote-grid-4,
  #rk-quote-guide .rk-quote-author-facts,
  #rk-quote-guide .rk-quote-source-grid {
    display: grid;
    gap: 18px;
    margin-top: 30px;
  }

  #rk-quote-guide .rk-quote-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-quote-guide .rk-quote-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-quote-guide .rk-quote-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

  #rk-quote-guide .rk-quote-card {
    background: #ffffff;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    padding: 24px;
  }

  #rk-quote-guide .rk-quote-section-soft .rk-quote-card {
    background: rgba(255, 255, 255, 0.88);
  }

  #rk-quote-guide .rk-quote-card-no,
  #rk-quote-guide .rk-quote-card-label {
    align-items: center;
    background: var(--rk-cyan-soft);
    border-radius: 10px;
    color: #076c85;
    display: inline-flex;
    font-size: 0.78rem;
    font-weight: 900;
    height: 36px;
    justify-content: center;
    margin-bottom: 14px;
    min-width: 36px;
    padding: 0 10px;
  }

  #rk-quote-guide .rk-quote-card h3 {
    color: var(--rk-ink);
    font-size: 1.12rem;
    line-height: 1.3;
    margin: 0 0 9px;
  }

  #rk-quote-guide .rk-quote-card p {
    margin: 0;
  }

  #rk-quote-guide .rk-quote-note {
    background: #fff6e2;
    border-left: 6px solid var(--rk-yellow);
    border-radius: 14px;
    color: #5b4a1d;
    margin-top: 26px;
    padding: 18px 21px;
  }

  #rk-quote-guide .rk-quote-note p {
    color: inherit;
    margin: 0;
  }

  #rk-quote-guide .rk-quote-note-good {
    background: #e9faf5;
    border-left-color: var(--rk-green);
    color: #145e4d;
  }

  #rk-quote-guide .rk-quote-note-bad {
    background: #fff0ec;
    border-left-color: var(--rk-orange);
    color: #743425;
  }

  #rk-quote-guide .rk-quote-bullets {
    color: var(--rk-copy);
    margin: 20px 0 0;
    padding-left: 22px;
  }

  #rk-quote-guide .rk-quote-bullets li + li {
    margin-top: 9px;
  }

  #rk-quote-guide .rk-quote-table-wrap {
    margin-top: 30px;
    overflow-x: auto;
  }

  #rk-quote-guide table {
    border-collapse: separate;
    border-spacing: 0;
    min-width: 760px;
    width: 100%;
  }

  #rk-quote-guide th {
    background: var(--rk-navy);
    border-bottom: 1px solid #31576a;
    color: #ffffff;
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    padding: 15px 16px;
    text-align: left;
    text-transform: uppercase;
  }

  #rk-quote-guide th:first-child { border-radius: 14px 0 0; }
  #rk-quote-guide th:last-child { border-radius: 0 14px 0 0; }

  #rk-quote-guide td {
    background: #ffffff;
    border-bottom: 1px solid var(--rk-line);
    color: var(--rk-copy);
    padding: 16px;
    vertical-align: top;
  }

  #rk-quote-guide tbody tr td:first-child { border-left: 1px solid var(--rk-line); }
  #rk-quote-guide tbody tr td:last-child { border-right: 1px solid var(--rk-line); }
  #rk-quote-guide tbody tr:last-child td:first-child { border-radius: 0 0 0 14px; }
  #rk-quote-guide tbody tr:last-child td:last-child { border-radius: 0 0 14px; }
  #rk-quote-guide td strong { color: var(--rk-ink); }

  #rk-quote-guide .rk-quote-baskets {
    background: var(--rk-navy);
    border-radius: 22px;
    color: #ffffff;
    margin-top: 32px;
    padding: 28px;
  }

  #rk-quote-guide .rk-quote-basket-intro {
    color: #bdd5de;
    margin: 0 0 20px;
  }

  #rk-quote-guide .rk-quote-basket-tabs {
    display: grid;
    gap: 10px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-quote-guide .rk-quote-basket-tab {
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 13px;
    color: #ffffff;
    cursor: pointer;
    font-weight: 900;
    line-height: 1.25;
    min-height: 68px;
    padding: 12px 14px;
    text-align: left;
  }

  #rk-quote-guide .rk-quote-basket-tab small {
    color: #bcd2db;
    display: block;
    font-size: 0.72rem;
    font-weight: 700;
    margin-top: 4px;
  }

  #rk-quote-guide .rk-quote-basket-tab[aria-selected="true"] {
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
    color: #072838;
  }

  #rk-quote-guide .rk-quote-basket-tab[aria-selected="true"] small {
    color: #17475a;
  }

  #rk-quote-guide .rk-quote-basket-panel {
    background: #17394b;
    border: 1px solid #356178;
    border-radius: 18px;
    margin-top: 18px;
    padding: 25px;
  }

  #rk-quote-guide .rk-quote-basket-panel-label {
    color: #71e6ef;
    display: block;
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-quote-guide .rk-quote-basket-panel h3 {
    color: #ffffff;
    font-size: 1.55rem;
    line-height: 1.25;
    margin: 7px 0 8px;
  }

  #rk-quote-guide .rk-quote-basket-panel > p {
    color: #c8dce3;
    margin: 0;
  }

  #rk-quote-guide .rk-quote-basket-facts {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 20px;
  }

  #rk-quote-guide .rk-quote-basket-fact {
    background: rgba(255, 255, 255, 0.055);
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 13px;
    padding: 16px;
  }

  #rk-quote-guide .rk-quote-basket-fact strong {
    color: #71e6ef;
    display: block;
    font-size: 0.71rem;
    letter-spacing: 0.07em;
    margin-bottom: 6px;
    text-transform: uppercase;
  }

  #rk-quote-guide .rk-quote-basket-fact span {
    color: #ffffff;
  }

  #rk-quote-guide .rk-quote-analyzer {
    background: #102f42;
    border: 1px solid #315a70;
    border-radius: 22px;
    margin-top: 32px;
    padding: 28px;
  }

  #rk-quote-guide .rk-quote-analyzer-head {
    border-bottom: 1px solid #315a70;
    margin-bottom: 25px;
    padding-bottom: 20px;
  }

  #rk-quote-guide .rk-quote-analyzer-head h3 {
    color: #ffffff;
    font-size: clamp(1.55rem, 3vw, 2.3rem);
    line-height: 1.2;
    margin: 0;
  }

  #rk-quote-guide .rk-quote-analyzer-head p {
    color: #bad3dc;
    margin: 9px 0 0;
  }

  #rk-quote-guide .rk-quote-stage,
  #rk-quote-guide .rk-quote-offer-panel {
    background: #17394b;
    border: 1px solid #376177;
    border-radius: 17px;
    margin-top: 18px;
    padding: 22px;
  }

  #rk-quote-guide .rk-quote-stage-head {
    align-items: flex-start;
    display: flex;
    gap: 13px;
    margin-bottom: 18px;
  }

  #rk-quote-guide .rk-quote-stage-no {
    align-items: center;
    background: var(--rk-cyan);
    border-radius: 10px;
    color: #082c3c;
    display: inline-flex;
    flex: 0 0 38px;
    font-weight: 900;
    height: 38px;
    justify-content: center;
  }

  #rk-quote-guide .rk-quote-stage-head h4,
  #rk-quote-guide .rk-quote-offer-title {
    color: #ffffff;
    font-size: 1.15rem;
    line-height: 1.3;
    margin: 0;
  }

  #rk-quote-guide .rk-quote-stage-head p {
    color: #aecad5;
    font-size: 0.88rem;
    margin: 4px 0 0;
  }

  #rk-quote-guide .rk-quote-fields {
    display: grid;
    gap: 15px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-quote-guide .rk-quote-field {
    display: block;
  }

  #rk-quote-guide .rk-quote-field span {
    color: #eaf6f8;
    display: block;
    font-size: 0.78rem;
    font-weight: 800;
    line-height: 1.35;
    margin-bottom: 7px;
  }

  #rk-quote-guide .rk-quote-field small {
    color: #9ebbc7;
    display: block;
    font-size: 0.7rem;
    line-height: 1.4;
    margin-top: 6px;
  }

  #rk-quote-guide .rk-quote-field input,
  #rk-quote-guide .rk-quote-field select {
    appearance: auto;
    background: #ffffff;
    border: 1px solid #b8ccd5;
    border-radius: 10px;
    color: var(--rk-ink);
    min-height: 48px;
    padding: 10px 12px;
    width: 100%;
  }

  #rk-quote-guide .rk-quote-scope-grid {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-quote-guide .rk-quote-scope-item {
    background: #214b60;
    border: 1px solid #416d81;
    border-radius: 13px;
    padding: 15px;
  }

  #rk-quote-guide .rk-quote-scope-check {
    align-items: flex-start;
    color: #ffffff;
    cursor: pointer;
    display: flex;
    font-size: 0.83rem;
    font-weight: 900;
    gap: 9px;
    line-height: 1.35;
  }

  #rk-quote-guide .rk-quote-scope-check input {
    accent-color: var(--rk-cyan);
    flex: 0 0 auto;
    height: 18px;
    margin: 1px 0 0;
    width: 18px;
  }

  #rk-quote-guide .rk-quote-scope-cost-label {
    color: #b9d0d9;
    display: block;
    font-size: 0.68rem;
    font-weight: 700;
    margin-top: 11px;
  }

  #rk-quote-guide .rk-quote-scope-cost {
    background: #ffffff;
    border: 1px solid #b8ccd5;
    border-radius: 9px;
    color: var(--rk-ink);
    margin-top: 5px;
    min-height: 42px;
    padding: 8px 10px;
    width: 100%;
  }

  #rk-quote-guide .rk-quote-offer-head {
    align-items: center;
    display: flex;
    gap: 12px;
    justify-content: space-between;
    margin-bottom: 17px;
  }

  #rk-quote-guide .rk-quote-offer-badge {
    align-items: center;
    background: var(--rk-orange);
    border-radius: 10px;
    color: #ffffff;
    display: inline-flex;
    flex: 0 0 42px;
    font-weight: 900;
    height: 42px;
    justify-content: center;
  }

  #rk-quote-guide .rk-quote-offer-statuses {
    display: grid;
    gap: 10px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 17px;
  }

  #rk-quote-guide .rk-quote-status-field {
    background: rgba(255, 255, 255, 0.055);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 11px;
    display: block;
    padding: 11px;
  }

  #rk-quote-guide .rk-quote-status-field span {
    color: #eaf6f8;
    display: block;
    font-size: 0.72rem;
    font-weight: 800;
    line-height: 1.35;
    margin-bottom: 7px;
  }

  #rk-quote-guide .rk-quote-status-field select {
    background: #ffffff;
    border: 1px solid #b8ccd5;
    border-radius: 8px;
    color: var(--rk-ink);
    min-height: 42px;
    padding: 8px;
    width: 100%;
  }

  #rk-quote-guide .rk-quote-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 11px;
    margin-top: 20px;
  }

  #rk-quote-guide .rk-quote-run,
  #rk-quote-guide .rk-quote-reset {
    border-radius: 11px;
    cursor: pointer;
    font-weight: 900;
    min-height: 48px;
    padding: 11px 18px;
  }

  #rk-quote-guide .rk-quote-run {
    background: var(--rk-orange);
    border: 1px solid var(--rk-orange);
    color: #ffffff;
  }

  #rk-quote-guide .rk-quote-run:hover { background: var(--rk-orange-dark); }

  #rk-quote-guide .rk-quote-reset {
    background: transparent;
    border: 1px solid #5d7c8d;
    color: #ffffff;
  }

  #rk-quote-guide .rk-quote-result {
    background: #ffffff;
    border-left: 7px solid var(--rk-yellow);
    border-radius: 17px;
    margin-top: 22px;
    padding: 24px;
  }

  #rk-quote-guide .rk-quote-result.is-good { border-left-color: var(--rk-green); }
  #rk-quote-guide .rk-quote-result.is-stop { border-left-color: var(--rk-orange); }

  #rk-quote-guide .rk-quote-result-status {
    color: var(--rk-ink) !important;
    font-size: clamp(1.3rem, 2.6vw, 1.95rem);
    font-weight: 900;
    line-height: 1.25;
    margin: 0 !important;
  }

  #rk-quote-guide .rk-quote-result-intro {
    color: var(--rk-copy) !important;
    margin: 8px 0 0 !important;
  }

  #rk-quote-guide .rk-quote-result-offers {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 19px;
  }

  #rk-quote-guide .rk-quote-result-offer {
    background: #f4f8fa;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    padding: 17px;
  }

  #rk-quote-guide .rk-quote-result-offer h4 {
    color: var(--rk-ink);
    font-size: 1rem;
    margin: 0 0 12px;
  }

  #rk-quote-guide .rk-quote-result-metric {
    border-top: 1px solid #dce7eb;
    display: flex;
    gap: 10px;
    justify-content: space-between;
    padding: 8px 0;
  }

  #rk-quote-guide .rk-quote-result-metric span {
    color: var(--rk-muted);
    font-size: 0.77rem;
  }

  #rk-quote-guide .rk-quote-result-metric strong {
    color: var(--rk-ink) !important;
    font-size: 0.87rem;
    text-align: right;
  }

  #rk-quote-guide .rk-quote-chart {
    background: #f4f8fa;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    margin-top: 18px;
    padding: 18px;
  }

  #rk-quote-guide .rk-quote-chart h4 {
    color: var(--rk-ink);
    font-size: 0.95rem;
    margin: 0 0 6px;
  }

  #rk-quote-guide .rk-quote-chart > p {
    font-size: 0.78rem;
    margin: 0 0 16px;
  }

  #rk-quote-guide .rk-quote-chart-row + .rk-quote-chart-row {
    margin-top: 15px;
  }

  #rk-quote-guide .rk-quote-chart-label {
    color: var(--rk-ink);
    display: flex;
    font-size: 0.78rem;
    font-weight: 900;
    gap: 10px;
    justify-content: space-between;
    margin-bottom: 6px;
  }

  #rk-quote-guide .rk-quote-chart-track {
    background: #dfe9ed;
    border-radius: 999px;
    display: flex;
    height: 22px;
    overflow: hidden;
  }

  #rk-quote-guide .rk-quote-chart-raw {
    background: var(--rk-cyan-dark);
    height: 100%;
  }

  #rk-quote-guide .rk-quote-chart-add {
    background: var(--rk-orange);
    height: 100%;
  }

  #rk-quote-guide .rk-quote-chart-legend {
    color: var(--rk-copy);
    display: flex;
    flex-wrap: wrap;
    font-size: 0.73rem;
    gap: 14px;
    margin-top: 14px;
  }

  #rk-quote-guide .rk-quote-chart-legend span::before {
    border-radius: 3px;
    content: "";
    display: inline-block;
    height: 9px;
    margin-right: 6px;
    width: 18px;
  }

  #rk-quote-guide .rk-quote-chart-legend .is-raw::before { background: var(--rk-cyan-dark); }
  #rk-quote-guide .rk-quote-chart-legend .is-add::before { background: var(--rk-orange); }

  #rk-quote-guide .rk-quote-question-box {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 18px;
  }

  #rk-quote-guide .rk-quote-question-list {
    background: #f7fafb;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 16px;
  }

  #rk-quote-guide .rk-quote-question-list h4 {
    color: var(--rk-ink);
    font-size: 0.84rem;
    letter-spacing: 0.04em;
    margin: 0 0 10px;
    text-transform: uppercase;
  }

  #rk-quote-guide .rk-quote-question-list ul {
    color: var(--rk-copy);
    font-size: 0.84rem;
    margin: 0;
    padding-left: 18px;
  }

  #rk-quote-guide .rk-quote-question-list li + li { margin-top: 7px; }

  #rk-quote-guide .rk-quote-disclaimer {
    color: #6c8190 !important;
    font-size: 0.78rem;
    margin: 15px 0 0 !important;
  }

  #rk-quote-guide .rk-quote-cta {
    background:
      radial-gradient(circle at 93% 120%, rgba(41, 196, 215, 0.22) 0, rgba(41, 196, 215, 0.22) 19%, transparent 19.2%),
      linear-gradient(125deg, #0b2536 0%, #153e51 62%, #0d6272 100%);
    border-radius: 21px;
    color: #ffffff;
    margin-top: 34px;
    overflow: hidden;
    padding: 36px;
  }

  #rk-quote-guide .rk-quote-cta-title {
    color: #ffffff;
    font-size: clamp(1.7rem, 3.3vw, 2.8rem);
    margin: 0;
    max-width: 1000px;
  }

  #rk-quote-guide .rk-quote-cta p {
    color: #cee0e6;
    margin: 14px 0 0;
    max-width: 1000px;
  }

  #rk-quote-guide .rk-quote-cta-button {
    background: var(--rk-orange);
    border-radius: 12px;
    box-shadow: 0 12px 25px rgba(255, 104, 70, 0.24);
    color: #ffffff;
    display: inline-block;
    font-weight: 900;
    margin-top: 22px;
    padding: 14px 20px;
    text-decoration: none;
  }

  #rk-quote-guide .rk-quote-cta-button:hover,
  #rk-quote-guide .rk-quote-cta-button:focus-visible {
    background: #ffffff;
    color: var(--rk-orange-dark);
  }

  #rk-quote-guide .rk-quote-link-disclosure {
    color: #a9c4ce;
    display: block;
    font-size: 0.75rem;
    margin-top: 12px;
  }

  #rk-quote-guide .rk-quote-final {
    background: linear-gradient(180deg, #f4fafb 0%, #ffffff 100%);
  }

  #rk-quote-guide .rk-quote-source-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #rk-quote-guide .rk-quote-source-card {
    background: #f2f7f9;
    border: 1px solid #cfe0e7;
    border-radius: 15px;
    padding: 20px;
  }

  #rk-quote-guide .rk-quote-source-card a {
    color: var(--rk-cyan-dark);
    font-size: 1rem;
    font-weight: 900;
  }

  #rk-quote-guide .rk-quote-source-card p {
    margin: 8px 0 0;
  }

  #rk-quote-guide .rk-quote-responsibility {
    background: #fff0eb;
    border-left: 6px solid var(--rk-orange);
    border-radius: 14px;
    color: #613427;
    margin-top: 26px;
    padding: 19px 22px;
  }

  #rk-quote-guide .rk-quote-responsibility p {
    color: inherit;
    margin: 0;
  }

  #rk-quote-guide .rk-quote-faq {
    display: grid;
    gap: 12px;
    margin-top: 30px;
  }

  #rk-quote-guide .rk-quote-faq details {
    background: #ffffff;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    overflow: hidden;
  }

  #rk-quote-guide .rk-quote-faq summary {
    color: var(--rk-ink);
    cursor: pointer;
    font-weight: 900;
    list-style: none;
    padding: 19px 52px 19px 20px;
    position: relative;
  }

  #rk-quote-guide .rk-quote-faq summary::-webkit-details-marker { display: none; }

  #rk-quote-guide .rk-quote-faq summary::after {
    color: var(--rk-cyan-dark);
    content: "+";
    font-size: 1.55rem;
    font-weight: 700;
    position: absolute;
    right: 20px;
    top: 12px;
  }

  #rk-quote-guide .rk-quote-faq details[open] summary::after { content: "−"; }

  #rk-quote-guide .rk-quote-faq-answer {
    border-top: 1px solid var(--rk-line);
    color: var(--rk-copy);
    padding: 18px 20px;
  }

  #rk-quote-guide .rk-quote-faq-answer p { margin: 0; }

  #rk-quote-guide .rk-quote-author {
    background: #eef6f8;
    border-top: 1px solid var(--rk-line);
    padding: 64px 58px;
  }

  #rk-quote-guide .rk-quote-author-layout {
    background: #ffffff;
    border: 1px solid #cbdde5;
    border-radius: 21px;
    display: grid;
    grid-template-columns: 290px minmax(0, 1fr);
    margin-top: 30px;
    overflow: hidden;
  }

  #rk-quote-guide .rk-quote-author-side {
    align-items: center;
    background: var(--rk-navy);
    color: #ffffff;
    display: flex;
    flex-direction: column;
    padding: 35px 25px;
    text-align: center;
  }

  #rk-quote-guide .rk-quote-author-photo {
    background: #ffffff;
    border: 6px solid rgba(255, 255, 255, 0.2);
    border-radius: 50%;
    overflow: hidden;
    width: 158px;
  }

  #rk-quote-guide .rk-quote-author-name {
    color: #ffffff;
    font-size: 1.25rem;
    font-weight: 900;
    margin-top: 20px;
  }

  #rk-quote-guide .rk-quote-author-role {
    color: #bcd2db;
    font-size: 0.82rem;
    margin: 8px 0 0;
  }

  #rk-quote-guide .rk-quote-author-social {
    display: flex;
    gap: 10px;
    margin-top: 21px;
  }

  #rk-quote-guide .rk-quote-author-social a {
    align-items: center;
    border: 1px solid #497185;
    border-radius: 50%;
    color: #d8e9ee;
    display: inline-flex;
    height: 42px;
    justify-content: center;
    text-decoration: none;
    width: 42px;
  }

  #rk-quote-guide .rk-quote-author-social a:hover {
    background: var(--rk-cyan);
    color: var(--rk-navy);
  }

  #rk-quote-guide .rk-quote-author-main {
    padding: 37px;
  }

  #rk-quote-guide .rk-quote-author-title {
    font-size: clamp(1.85rem, 3.5vw, 3rem);
  }

  #rk-quote-guide .rk-quote-author-quote {
    background: #f7fbfc;
    border: 1px solid #cfe0e7;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 14px;
    color: var(--rk-ink);
    font-size: 1.04rem;
    font-style: italic;
    font-weight: 700;
    line-height: 1.7;
    margin-top: 24px;
    padding: 20px 22px;
  }

  #rk-quote-guide .rk-quote-author-main > p {
    margin: 18px 0 0;
  }

  #rk-quote-guide .rk-quote-author-facts {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-quote-guide .rk-quote-author-fact {
    background: #eef7f9;
    border: 1px solid #d2e4e9;
    border-radius: 13px;
    color: var(--rk-copy);
    font-size: 0.84rem;
    padding: 15px;
  }

  #rk-quote-guide .rk-quote-author-fact strong {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.73rem;
    letter-spacing: 0.06em;
    margin-bottom: 5px;
    text-transform: uppercase;
  }

  #rk-quote-guide .rk-quote-visually-hidden {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }

  [hidden] { display: none !important; }

  @media (max-width: 1050px) {
    #rk-quote-guide .rk-quote-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-quote-guide .rk-quote-fields,
    #rk-quote-guide .rk-quote-scope-grid,
    #rk-quote-guide .rk-quote-offer-statuses { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-quote-guide .rk-quote-result-offers { grid-template-columns: minmax(0, 1fr); }
  }

  @media (max-width: 820px) {
    #rk-quote-guide .rk-quote-hero,
    #rk-quote-guide .rk-quote-section,
    #rk-quote-guide .rk-quote-author {
      padding-left: 28px;
      padding-right: 28px;
    }
    #rk-quote-guide .rk-quote-hero::before { left: 28px; }
    #rk-quote-guide .rk-quote-nav { padding-left: 22px; padding-right: 22px; }
    #rk-quote-guide .rk-quote-grid-3,
    #rk-quote-guide .rk-quote-basket-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-quote-guide .rk-quote-basket-facts { grid-template-columns: minmax(0, 1fr); }
    #rk-quote-guide .rk-quote-author-layout { grid-template-columns: minmax(0, 1fr); }
  }

  @media (max-width: 660px) {
    #rk-quote-guide .rk-quote-hero { padding-bottom: 42px; padding-top: 52px; }
    #rk-quote-guide .rk-quote-section,
    #rk-quote-guide .rk-quote-author { padding-bottom: 46px; padding-top: 46px; }
    #rk-quote-guide .rk-quote-grid-2,
    #rk-quote-guide .rk-quote-grid-3,
    #rk-quote-guide .rk-quote-grid-4,
    #rk-quote-guide .rk-quote-fields,
    #rk-quote-guide .rk-quote-scope-grid,
    #rk-quote-guide .rk-quote-offer-statuses,
    #rk-quote-guide .rk-quote-question-box,
    #rk-quote-guide .rk-quote-source-grid,
    #rk-quote-guide .rk-quote-author-facts,
    #rk-quote-guide .rk-quote-basket-tabs {
      grid-template-columns: minmax(0, 1fr);
    }
    #rk-quote-guide .rk-quote-baskets,
    #rk-quote-guide .rk-quote-analyzer,
    #rk-quote-guide .rk-quote-cta { border-radius: 17px; padding: 20px; }
    #rk-quote-guide .rk-quote-basket-panel,
    #rk-quote-guide .rk-quote-stage,
    #rk-quote-guide .rk-quote-offer-panel,
    #rk-quote-guide .rk-quote-result { padding: 18px; }
    #rk-quote-guide .rk-quote-actions { display: grid; grid-template-columns: minmax(0, 1fr); }
    #rk-quote-guide .rk-quote-run,
    #rk-quote-guide .rk-quote-reset,
    #rk-quote-guide .rk-quote-cta-button { text-align: center; width: 100%; }
    #rk-quote-guide .rk-quote-table-wrap { overflow: visible; }
    #rk-quote-guide table,
    #rk-quote-guide thead,
    #rk-quote-guide tbody,
    #rk-quote-guide tr,
    #rk-quote-guide th,
    #rk-quote-guide td {
      display: block;
      min-width: 0;
      width: 100%;
    }
    #rk-quote-guide thead {
      clip: rect(0 0 0 0);
      clip-path: inset(50%);
      height: 1px;
      overflow: hidden;
      position: absolute;
      white-space: nowrap;
      width: 1px;
    }
    #rk-quote-guide tbody { display: grid; gap: 14px; }
    #rk-quote-guide tbody tr {
      background: #ffffff;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      overflow: hidden;
    }
    #rk-quote-guide td,
    #rk-quote-guide tbody tr td:first-child,
    #rk-quote-guide tbody tr td:last-child {
      border: 0;
      border-bottom: 1px solid #e1ebef;
      border-radius: 0;
      padding: 13px 15px;
    }
    #rk-quote-guide td:last-child { border-bottom: 0; }
    #rk-quote-guide td::before {
      color: var(--rk-cyan-dark);
      content: attr(data-label);
      display: block;
      font-size: 0.69rem;
      font-weight: 900;
      letter-spacing: 0.07em;
      margin-bottom: 4px;
      text-transform: uppercase;
    }
    #rk-quote-guide .rk-quote-author-main { padding: 25px 20px; }
  }

  @media (max-width: 430px) {
    #rk-quote-guide .rk-quote-hero,
    #rk-quote-guide .rk-quote-section,
    #rk-quote-guide .rk-quote-author { padding-left: 18px; padding-right: 18px; }
    #rk-quote-guide .rk-quote-hero::before { left: 18px; }
    #rk-quote-guide .rk-quote-nav { padding-left: 14px; padding-right: 14px; }
    #rk-quote-guide .rk-quote-nav a { flex: 1 1 calc(50% - 9px); text-align: center; }
    #rk-quote-guide .rk-quote-nav-label { flex: 1 0 100%; }
    #rk-quote-guide .rk-quote-hero-title { font-size: 2.2rem; }
    #rk-quote-guide .rk-quote-section-title { font-size: 1.9rem; }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-quote-guide *,
    #rk-quote-guide *::before,
    #rk-quote-guide *::after {
      scroll-behavior: auto;
      transition-duration: 0.01ms;
    }
  }
</style>

<article id="rk-quote-guide" aria-labelledby="rk-quote-visual-title">
  <div class="rk-quote-shell">
    <header class="rk-quote-hero">
      <span class="rk-quote-kicker">Budżet bez mieszania zakresów · aktualizacja 2026</span>
      <div class="rk-quote-hero-title" id="rk-quote-visual-title">Wycena ogrzewania podłogowego: <span>porównaj zakres, nie samą kwotę</span></div>
      <p class="rk-quote-hero-lead">Tańsza oferta może nie obejmować projektu, magistral, rozdzielaczy, próby, automatyki albo warstw podłogi. Ten poradnik rozdziela koszt instalacji, konstrukcji podłogi i źródła ciepła oraz pozwala przeanalizować do trzech wycen na jednej podstawie.</p>
      <div class="rk-quote-hero-tags" aria-label="Zakres poradnika">
        <span>analizator 3 ofert</span>
        <span>zakres wliczony i wyłączony</span>
        <span>cena za m²</span>
        <span>koszty braków</span>
        <span>pytania do wykonawcy</span>
      </div>
      <div class="rk-quote-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 26 minut</strong></span>
        <span>Weryfikacja techniczna: <strong>16 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-quote-nav" aria-label="Na skróty — sekcje artykułu">
      <span class="rk-quote-nav-label">Na skróty</span>
      <a href="#rk-quote-answer">Szybka odpowiedź</a>
      <a href="#rk-quote-baskets">Zakres budżetu</a>
      <a href="#rk-quote-square-meter">Cena za m²</a>
      <a href="#rk-quote-inputs">Dane do wyceny</a>
      <a href="#rk-quote-analyzer-section">Analizator ofert</a>
      <a href="#rk-quote-reading">Jak czytać wynik</a>
      <a href="#rk-quote-project">Projekt</a>
      <a href="#rk-quote-system">Materiały</a>
      <a href="#rk-quote-labor">Robocizna</a>
      <a href="#rk-quote-floor">Warstwy podłogi</a>
      <a href="#rk-quote-source">Źródło ciepła</a>
      <a href="#rk-quote-variants">Nowy dom i remont</a>
      <a href="#rk-quote-contract">Porównanie i umowa</a>
      <a href="#rk-quote-errors">Błędy</a>
      <a href="#rk-quote-final">Następny krok</a>
      <a href="#rk-quote-sources">Źródła</a>
      <a href="#rk-quote-faq">FAQ</a>
      <a href="#rk-quote-author">Autor</a>
    </nav>

    <section class="rk-quote-section" id="rk-quote-answer">
      <span class="rk-quote-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-quote-section-title">Ile kosztuje wodne ogrzewanie podłogowe?</h2>
      <p class="rk-quote-lead"><strong>Nie istnieje jedna prawidłowa cena za m² bez wskazania powierzchni i zakresu.</strong> Kwota może dotyczyć samego ułożenia rur, materiałów hydraulicznych, kompletnej instalacji z próbą albo całej podłogi z izolacją i jastrychem. Źródło ciepła i kotłownia najczęściej tworzą kolejny, odrębny budżet.</p>
      <div class="rk-quote-answer">
        <strong>Najpierw porównaj to, co wykonawcy wycenili. Dopiero później porównuj sumy.</strong>
        <p>Każda oferta powinna wskazywać podstawę metrażu, ilości, parametry materiałów, robociznę, próby, uruchomienie, podatek i wyłączenia. Pozycja nieopisana nie kosztuje automatycznie zero — pozostaje ryzykiem budżetowym.</p>
      </div>
      <div class="rk-quote-grid-3">
        <article class="rk-quote-card"><span class="rk-quote-card-no">1</span><h3>Ustal powierzchnie</h3><p>Oddziel powierzchnię całkowitą, ogrzewaną oraz czynną, na której rzeczywiście znajdzie się rura.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-no">2</span><h3>Ujednolić zakres</h3><p>Materiały, montaż, izolacja, jastrych, automatyka i źródło nie powinny znikać w jednym haśle „komplet”.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-no">3</span><h3>Wyjaśnij nieznane</h3><p>Najniższej ceny nie wybiera się, dopóki nie wiadomo, jakie pozycje trzeba będzie później doliczyć.</p></article>
      </div>
      <p class="rk-quote-copy">Jeśli chcesz zbudować własny kosztorys od ilości i stawek jednostkowych, skorzystaj z osobnego <a href="https://projekt-ogrzewania.pl/ile-kosztuje-100-m%c2%b2-ogrzewania-podlogowego/">kalkulatora kosztu ogrzewania podłogowego dla 100 m² i dowolnego metrażu</a>. Narzędzie w tym artykule służy innemu zadaniu: sprawdza i porównuje oferty, które już otrzymałeś.</p>
    </section>

    <section class="rk-quote-section rk-quote-section-soft" id="rk-quote-baskets">
      <span class="rk-quote-eyebrow">Jedna inwestycja, sześć różnych budżetów</span>
      <h2 class="rk-quote-section-title">Co naprawdę może obejmować wycena podłogówki?</h2>
      <p class="rk-quote-lead">Największe rozbieżności powstają wtedy, gdy pod jedną nazwą łączy się prace instalacyjne, warstwy budowlane oraz wyposażenie kotłowni. Poniższy moduł rozdziela te zakresy.</p>
      <div class="rk-quote-baskets" aria-labelledby="rk-quote-basket-intro">
        <p class="rk-quote-basket-intro" id="rk-quote-basket-intro"><strong>Moduł edukacyjny:</strong> wybierz koszyk kosztów i sprawdź, co powinno zostać opisane w ofercie.</p>
        <div class="rk-quote-basket-tabs" role="tablist" aria-label="Koszyki pełnego budżetu">
          <button class="rk-quote-basket-tab" type="button" role="tab" aria-selected="true" data-rk-basket="design">1. Projekt i obliczenia<small>ilości oraz parametry</small></button>
          <button class="rk-quote-basket-tab" type="button" role="tab" aria-selected="false" data-rk-basket="floor">2. System w podłodze<small>rury, mocowanie, obwody</small></button>
          <button class="rk-quote-basket-tab" type="button" role="tab" aria-selected="false" data-rk-basket="distribution">3. Rozdział i magistrale<small>szafki, armatura, zasilanie</small></button>
          <button class="rk-quote-basket-tab" type="button" role="tab" aria-selected="false" data-rk-basket="control">4. Sterowanie i odbiór<small>automatyka, próba, nastawy</small></button>
          <button class="rk-quote-basket-tab" type="button" role="tab" aria-selected="false" data-rk-basket="layers">5. Warstwy podłogi<small>izolacja, jastrych, dylatacje</small></button>
          <button class="rk-quote-basket-tab" type="button" role="tab" aria-selected="false" data-rk-basket="source">6. Źródło i kotłownia<small>oddzielny zakres hydrauliczny</small></button>
        </div>
        <div class="rk-quote-basket-panel" role="tabpanel" aria-live="polite">
          <span class="rk-quote-basket-panel-label" id="rk-quote-basket-label">Koszyk 1</span>
          <h3 id="rk-quote-basket-title">Projekt i obliczenia</h3>
          <p id="rk-quote-basket-summary">Dokumentacja definiuje wspólną podstawę dla wykonawców: pomieszczenia, powierzchnie czynne, rozstawy, pętle, przepływy, rozdzielacze i materiały.</p>
          <div class="rk-quote-basket-facts">
            <div class="rk-quote-basket-fact"><strong>Powinno być opisane</strong><span id="rk-quote-basket-included">zakres OZC, układ pętli, hydraulika oraz zestawienie materiałów.</span></div>
            <div class="rk-quote-basket-fact"><strong>Często pozostaje niejasne</strong><span id="rk-quote-basket-unclear">czy cena obejmuje obliczenia pomieszczeń, korekty i wersję wykonawczą.</span></div>
            <div class="rk-quote-basket-fact"><strong>Pytanie kontrolne</strong><span id="rk-quote-basket-question">Czy każdy wykonawca wycenia dokładnie te same ilości i parametry?</span></div>
          </div>
        </div>
      </div>
    </section>

    <section class="rk-quote-section" id="rk-quote-square-meter">
      <span class="rk-quote-eyebrow">Cena potrzebuje mianownika</span>
      <h2 class="rk-quote-section-title">Dlaczego dwie ceny za m² mogą oznaczać zupełnie co innego?</h2>
      <p class="rk-quote-lead">Stawka ma sens dopiero wtedy, gdy wiadomo, od której powierzchni jest liczona i jakie pozycje zawiera. Inaczej oferta 120 zł/m² może być droższa od oferty 160 zł/m² po doliczeniu braków.</p>
      <div class="rk-quote-table-wrap">
        <table>
          <thead><tr><th>Powierzchnia</th><th>Co opisuje</th><th>Do czego może służyć</th><th>Najczęstszy błąd</th></tr></thead>
          <tbody>
            <tr><td data-label="Powierzchnia"><strong>Całkowita</strong></td><td data-label="Co opisuje">Rzut objęty inwestycją, czasem razem ze ścianami, schodami lub garażem.</td><td data-label="Do czego może służyć">Prace ogólnobudowlane, izolacja lub jastrych — jeśli umowa tak stanowi.</td><td data-label="Najczęstszy błąd">Przyjęcie, że na całym metrażu zostanie ułożona rura.</td></tr>
            <tr><td data-label="Powierzchnia"><strong>Ogrzewana</strong></td><td data-label="Co opisuje">Pomieszczenia przewidziane do ogrzewania podłogowego.</td><td data-label="Do czego może służyć">Rozliczenie robocizny montażowej, gdy podstawa jest jasno wskazana.</td><td data-label="Najczęstszy błąd">Brak informacji, czy stawka obejmuje łazienki, garaż i strefy wyłączone.</td></tr>
            <tr><td data-label="Powierzchnia"><strong>Czynna</strong></td><td data-label="Co opisuje">Pole, w którym rzeczywiście znajduje się rura i które oddaje ciepło.</td><td data-label="Do czego może służyć">Wstępne ilości rury oraz kontrola wymaganej mocy jednostkowej.</td><td data-label="Najczęstszy błąd">Pomijanie zabudowy, dylatacji, dobiegów i geometrii pomieszczeń.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-quote-note"><p><strong>Nie przeliczaj automatycznie całej oferty proporcją powierzchni.</strong> Rozdzielacz, projekt, dojazd czy uruchomienie są kosztami ryczałtowymi i nie rosną liniowo z każdym metrem kwadratowym.</p></div>
      <p class="rk-quote-copy">Osobne zestawienie zakresów wykonawczych znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/">podłogówka — cena za m² robocizny</a>. Ilość przewodu nie wynika natomiast ze stawki wykonawcy — zobacz, <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">ile rury przypada orientacyjnie na m² podłogówki</a>.</p>
    </section>

    <section class="rk-quote-section rk-quote-section-soft" id="rk-quote-inputs">
      <span class="rk-quote-eyebrow">Przed wysłaniem zapytania ofertowego</span>
      <h2 class="rk-quote-section-title">Jakie dane są potrzebne do rzetelnej wyceny?</h2>
      <p class="rk-quote-lead">Im mniej danych dostanie wykonawca, tym więcej własnych założeń musi przyjąć. Wtedy dwie firmy formalnie wyceniają ten sam dom, ale technicznie proponują inne instalacje.</p>
      <div class="rk-quote-grid-4">
        <article class="rk-quote-card"><span class="rk-quote-card-label">BUDYNEK</span><h3>Rzuty i przekroje</h3><p>Wymiary, kondygnacje, poziomy podłóg, stała zabudowa, dylatacje i położenie kotłowni.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">CIEPŁO</span><h3>Obciążenia pomieszczeń</h3><p>Straty ciepła oraz temperatury obliczeniowe są potrzebne do oceny możliwości podłogi.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">PODŁOGA</span><h3>Warstwy i okładziny</h3><p>Izolacja, system mokry lub suchy, jastrych, płytki, drewno albo panele i ich opór cieplny.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">ŹRÓDŁO</span><h3>Parametry instalacji</h3><p>Rodzaj źródła, temperatury pracy, rozdział obiegów, bufor, pompy oraz sposób sterowania.</p></article>
      </div>
      <p class="rk-quote-copy">Punktem wyjścia jest <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">obliczenie strat cieplnych budynku</a>. Dopiero potem można odpowiedzialnie <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">zaplanować rozmieszczenie pętli</a> i przygotować dokumentację, której zakres opisuje poradnik <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt podłogówki</a>.</p>
    </section>

    <section class="rk-quote-section rk-quote-section-dark" id="rk-quote-analyzer-section">
      <span class="rk-quote-eyebrow">Narzędzie główne</span>
      <h2 class="rk-quote-section-title">Analizator kompletności i porównania ofert</h2>
      <p class="rk-quote-lead">Wprowadź od jednej do trzech wycen. Narzędzie nie ocenia marek ani jakości wykonawcy. Sprawdza, czy ceny odnoszą się do tego samego metrażu, podstawy podatkowej i docelowego zakresu.</p>

      <div class="rk-quote-analyzer" id="rk-quote-analyzer">
        <div class="rk-quote-analyzer-head">
          <h3>Od kwoty z nagłówka do porównywalnego zakresu</h3>
          <p>Dane startowe są demonstracją działania. Zastąp je informacjami z własnych ofert. Nie są cennikiem rynkowym ani rekomendacją konkretnych stawek.</p>
        </div>

        <div class="rk-quote-stage">
          <div class="rk-quote-stage-head"><span class="rk-quote-stage-no">1</span><div><h4>Wspólna podstawa porównania</h4><p>Wybierz liczbę ofert i ustal metraż oraz podstawę cen, które mają być porównywane.</p></div></div>
          <div class="rk-quote-fields">
            <label class="rk-quote-field"><span>Liczba analizowanych ofert</span><select id="rk-quote-offer-count"><option value="1">1 oferta</option><option value="2">2 oferty</option><option value="3" selected="">3 oferty</option></select></label>
            <label class="rk-quote-field"><span>Docelowa powierzchnia ogrzewana [m²]</span><input id="rk-quote-target-area" type="number" min="1" max="10000" step="0.1" value="150" inputmode="decimal"></label>
            <label class="rk-quote-field"><span>Wspólna podstawa cen</span><select id="rk-quote-target-basis"><option value="gross" selected="">Kwoty brutto</option><option value="net">Kwoty netto</option></select><small>Analizator nie przelicza automatycznie podatku.</small></label>
          </div>
        </div>

        <div class="rk-quote-stage">
          <div class="rk-quote-stage-head"><span class="rk-quote-stage-no">2</span><div><h4>Zakres, który chcesz porównać</h4><p>Zaznacz wymagane pozycje. Kwota uzupełniająca służy tylko do doliczenia znanego kosztu braku — wpisz własną wartość na tej samej podstawie netto lub brutto.</p></div></div>
          <div class="rk-quote-scope-grid" id="rk-quote-scope-grid"></div>
          <div class="rk-quote-note"><p><strong>Wartości demonstracyjne:</strong> początkowe kwoty pokazują mechanizm normalizacji i nie są średnimi cenami. Wyzeruj pozycję, jeżeli koszt jest nieznany — analizator pozostawi ją jako nierozstrzygniętą.</p></div>
        </div>

        <div class="rk-quote-stage">
          <div class="rk-quote-stage-head"><span class="rk-quote-stage-no">3</span><div><h4>Dane otrzymanych ofert</h4><p>Dla każdej wymaganej pozycji wybierz: wliczona, wyłączona albo niejasna. „Komplet” bez opisu zaznacz jako niejasne.</p></div></div>
          <div id="rk-quote-offers"></div>
        </div>

        <div class="rk-quote-actions">
          <button class="rk-quote-run" id="rk-quote-run" type="button">Przeanalizuj oferty</button>
          <button class="rk-quote-reset" id="rk-quote-reset" type="button">Przywróć przykład</button>
        </div>

        <div class="rk-quote-result" id="rk-quote-result" aria-live="polite">
          <p class="rk-quote-result-status" id="rk-quote-result-status">Przykładowe oferty są gotowe do analizy</p>
          <p class="rk-quote-result-intro" id="rk-quote-result-intro">Wynik pokaże zakres w cenie, znane dopłaty i pytania wymagające wyjaśnienia.</p>
          <div class="rk-quote-result-offers" id="rk-quote-result-offers"></div>
          <div class="rk-quote-chart">
            <h4>Cena podana i znane uzupełnienia zakresu</h4>
            <p>Pomarańczowa część obejmuje wyłącznie koszty wpisane przez użytkownika. Pozycje niejasne nie są automatycznie wyceniane.</p>
            <div id="rk-quote-chart-rows"></div>
            <div class="rk-quote-chart-legend"><span class="is-raw">Cena podana</span><span class="is-add">Znane uzupełnienia</span></div>
          </div>
          <div class="rk-quote-question-box">
            <div class="rk-quote-question-list"><h4>Pytania do wykonawców</h4><ul id="rk-quote-question-list"><li>Uruchom analizę, aby utworzyć listę pytań.</li></ul></div>
            <div class="rk-quote-question-list"><h4>Warunki porównania</h4><ul id="rk-quote-warning-list"><li>Sprawdź metraż, netto/brutto i docelowy zakres.</li></ul></div>
          </div>
          <p class="rk-quote-disclaimer">Analizator porządkuje dane wpisane przez użytkownika. Nie wycenia jakości materiałów, nie sprawdza mocy cieplnej, hydrauliki, wiarygodności wykonawcy ani kompletności dokumentacji technicznej.</p>
        </div>
      </div>

      <aside class="rk-quote-cta" aria-label="Projekt ogrzewania podłogowego">
        <div class="rk-quote-cta-title">Analizator wykrył braki. Projekt zamienia je w jeden policzony zakres dla wszystkich wykonawców</div>
        <p>Bez określonych rozstawów, długości pętli, przepływów, liczby rozdzielaczy i zestawienia materiałów każda firma może wyceniać inną instalację. Projekt nie ustala ceny wykonawcy, ale sprawia, że oferty odnoszą się do tego samego rozwiązania.</p>
        <a class="rk-quote-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres indywidualnego projektu podłogówki</a>
        <small class="rk-quote-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-quote-section" id="rk-quote-reading">
      <span class="rk-quote-eyebrow">Wynik to początek rozmowy, nie werdykt</span>
      <h2 class="rk-quote-section-title">Jak czytać wynik analizatora ofert?</h2>
      <p class="rk-quote-lead">Narzędzie rozdziela cenę wpisaną przez wykonawcę, znane koszty uzupełnienia i pozycje nierozstrzygnięte. Dzięki temu nie udaje dokładności tam, gdzie oferta nie zawiera danych.</p>
      <div class="rk-quote-grid-4">
        <article class="rk-quote-card"><span class="rk-quote-card-no">1</span><h3>Cena podana</h3><p>To kwota przepisana z oferty. Nie oznacza jeszcze, że obejmuje cały wymagany zakres.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-no">2</span><h3>Znane uzupełnienia</h3><p>To suma własnych kwot wpisanych przy pozycjach wymaganych, lecz wyłączonych przez wykonawcę.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-no">3</span><h3>Pozycje niejasne</h3><p>Nie są wyceniane automatycznie. Najpierw wymagają pisemnej odpowiedzi i dopiero potem można uzupełnić koszt.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-no">4</span><h3>Porównywalność</h3><p>Powstaje dopiero przy tym samym metrażu, podstawie netto lub brutto i rozstrzygniętym zakresie.</p></article>
      </div>
      <div class="rk-quote-note rk-quote-note-good"><p><strong>Najważniejszy wniosek:</strong> „najniższa znana suma” nie oznacza automatycznie najlepszej oferty. Analizator nie ocenia jakości materiałów, doświadczenia ekipy, terminów, gwarancji ani poprawności technicznej rozwiązania.</p></div>
    </section>

    <section class="rk-quote-section rk-quote-section-soft" id="rk-quote-project">
      <span class="rk-quote-eyebrow">Wspólna specyfikacja przed wspólną ceną</span>
      <h2 class="rk-quote-section-title">Czy projekt ogrzewania podłogowego jest kosztem, czy narzędziem kontroli budżetu?</h2>
      <p class="rk-quote-lead">Projekt jest osobną pozycją, ale ogranicza dowolność założeń w wycenach. Określa, ile pętli, metrów rury, rozdzielaczy i jakich przepływów potrzeba w konkretnym budynku.</p>
      <div class="rk-quote-grid-3">
        <article class="rk-quote-card"><span class="rk-quote-card-label">CIEPŁO</span><h3>Bilans pomieszczeń</h3><p>Pokazuje, ile mocy trzeba dostarczyć w każdym wnętrzu i czy dostępna powierzchnia podłogi może ją oddać.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">UKŁAD</span><h3>Pętle i rozstawy</h3><p>Wyznacza podział powierzchni, strefy brzegowe, dobiegi oraz położenie rozdzielaczy.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">HYDRAULIKA</span><h3>Przepływy i opory</h3><p>Umożliwia dobór średnic, nastaw, pompy oraz ocenę współpracy instalacji ze źródłem ciepła.</p></article>
      </div>
      <p class="rk-quote-copy">Cena dokumentacji zależy od zakresu i złożoności — szerzej omawia to poradnik <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje projekt ogrzewania podłogowego</a>. Różnicę między szkicem wykonanym „z głowy” a dokumentacją obliczeniową pokazuje analiza <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projekt podłogówki z głowy a projekt z obliczeniami</a>.</p>
    </section>

    <section class="rk-quote-section" id="rk-quote-system">
      <span class="rk-quote-eyebrow">Materiały trzeba opisać ilością i parametrem</span>
      <h2 class="rk-quote-section-title">Co powinno znaleźć się w wycenie instalacji podłogowej?</h2>
      <p class="rk-quote-lead">Sformułowanie „kompletny materiał” jest zbyt ogólne. Oferta powinna pozwalać sprawdzić, czy wszystkie elementy pasują do projektu i tworzą jeden działający system.</p>
      <div class="rk-quote-table-wrap">
        <table>
          <thead><tr><th>Grupa</th><th>Co opisać</th><th>Co wpływa na ilość</th><th>Pytanie kontrolne</th></tr></thead>
          <tbody>
            <tr><td data-label="Grupa"><strong>Rury i mocowanie</strong></td><td data-label="Co opisać">Typ, wymiar, bariera tlenowa, metraż, system mocowania i elementy ochronne.</td><td data-label="Co wpływa na ilość">Rozstaw, powierzchnia czynna, dobiegi i układ pętli.</td><td data-label="Pytanie kontrolne">Czy metraż wynika z rysunków, czy ze wskaźnika na m²?</td></tr>
            <tr><td data-label="Grupa"><strong>Rozdzielacze</strong></td><td data-label="Co opisać">Liczbę sekcji, przepływomierze, zawory, odpowietrzenie, szafkę i wyposażenie.</td><td data-label="Co wpływa na ilość">Liczba pętli, kondygnacje i lokalizacja szafek.</td><td data-label="Pytanie kontrolne">Czy szafka, przyłącza i osprzęt są w tej samej pozycji?</td></tr>
            <tr><td data-label="Grupa"><strong>Magistrale</strong></td><td data-label="Co opisać">Średnice, materiał, izolację, długości, armaturę i przejścia.</td><td data-label="Co wpływa na ilość">Odległość od źródła, przepływ i podział instalacji.</td><td data-label="Pytanie kontrolne">Gdzie kończy się instalacja źródła, a zaczyna zakres podłogówki?</td></tr>
            <tr><td data-label="Grupa"><strong>Automatyka</strong></td><td data-label="Co opisać">Termostaty, listwy, siłowniki, czujniki, przewody i uruchomienie.</td><td data-label="Co wpływa na ilość">Liczba stref i przyjęta strategia sterowania.</td><td data-label="Pytanie kontrolne">Czy instalacja elektryczna i konfiguracja także są wliczone?</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-quote-copy">Przed porównaniem materiałów warto znać kryteria doboru <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rur do ogrzewania podłogowego</a> oraz funkcje <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacza podłogówki</a>. Średnica zasilania rozdzielacza powinna wynikać z przepływu i oporów, a nie z ceny dostępnego przewodu — pomocniczo służy do tego <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">kalkulator średnicy rury zasilającej rozdzielacz</a>.</p>
    </section>

    <section class="rk-quote-section rk-quote-section-soft" id="rk-quote-labor">
      <span class="rk-quote-eyebrow">Robocizna to proces, nie samo rozłożenie przewodu</span>
      <h2 class="rk-quote-section-title">Jakiego zakresu montażu szukać w ofercie?</h2>
      <p class="rk-quote-lead">Dwie ekipy mogą podać podobną stawkę za m², lecz jedna zakończy pracę na zamocowanych rurach, a druga wykona także rozdzielacze, próbę, opis obwodów, nastawy i dokumentację powykonawczą.</p>
      <div class="rk-quote-grid-4">
        <article class="rk-quote-card"><span class="rk-quote-card-no">01</span><h3>Przygotowanie</h3><p>Sprawdzenie podłoża i izolacji, wyznaczenie dylatacji, osi pętli oraz miejsc rozdzielaczy.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-no">02</span><h3>Montaż</h3><p>Ułożenie pętli, dobiegów i osłon, podłączenie rozdzielaczy oraz oznaczenie obwodów.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-no">03</span><h3>Kontrola</h3><p>Płukanie, napełnienie, odpowietrzenie i próba według przyjętej procedury wraz z protokołem.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-no">04</span><h3>Uruchomienie</h3><p>Wstępne przepływy, konfiguracja sterowania, dokumentacja zmian i przekazanie instalacji.</p></article>
      </div>
      <div class="rk-quote-note"><p><strong>Ustal granicę odpowiedzialności przed betonowaniem.</strong> Kto kontroluje instalację podczas wylewania, kto odpowiada za uszkodzenie rury i czy obecność wykonawcy w tym dniu jest ujęta w cenie?</p></div>
      <p class="rk-quote-copy">Zakres oraz dokumentację badania trzeba zapisać w umowie. Procedurę wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbie szczelności ogrzewania podłogowego</a>, a sens i ograniczenia sterowania omawia artykuł <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">czy warto montować sterowniki do podłogówki</a>.</p>
    </section>

    <section class="rk-quote-section" id="rk-quote-floor">
      <span class="rk-quote-eyebrow">Instalacja grzewcza i konstrukcja podłogi to dwa zakresy</span>
      <h2 class="rk-quote-section-title">Izolacja, dylatacje i jastrych — czy są w cenie podłogówki?</h2>
      <p class="rk-quote-lead">Nie należy tego zakładać. Izolacja cieplna, warstwy wyrównawcze, taśmy brzegowe, dylatacje, jastrych i finalna okładzina bywają realizowane przez różne firmy oraz rozliczane od innych powierzchni.</p>
      <div class="rk-quote-grid-3">
        <article class="rk-quote-card"><span class="rk-quote-card-label">POD RURĄ</span><h3>Izolacja i podłoże</h3><p>Grubość, wytrzymałość, liczba warstw, prowadzenie innych instalacji i przygotowanie płaszczyzny.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">WOKÓŁ POLA</span><h3>Brzegi i dylatacje</h3><p>Taśmy, profile, osłony przewodów i podział pól trzeba skoordynować z geometrią pętli.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">NAD RURĄ</span><h3>Jastrych i okładzina</h3><p>Rodzaj, grubość, pielęgnacja, wygrzewanie oraz opór finalnego wykończenia wpływają na pracę układu.</p></article>
      </div>
      <p class="rk-quote-copy">Ilość izolacji można uporządkować na podstawie poradnika <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">ile styropianu pod ogrzewanie podłogowe</a>. Osobnych ustaleń wymagają <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacja brzegowa i dylatacje</a>, <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewka na ogrzewanie podłogowe</a> oraz <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">wpływ okładziny na wydajność podłogówki</a>.</p>
    </section>

    <section class="rk-quote-section rk-quote-section-soft" id="rk-quote-source">
      <span class="rk-quote-eyebrow">Oddzielny budżet, wspólne parametry</span>
      <h2 class="rk-quote-section-title">Czy źródło ciepła i kotłownia wchodzą w wycenę podłogówki?</h2>
      <p class="rk-quote-lead">Zwykle nie, chyba że oferta wyraźnie opisuje zakres kompleksowy. Pompa ciepła, kocioł, zasobnik, bufor, grupa bezpieczeństwa, pompy, armatura, komin, gaz, zasilanie elektryczne i uruchomienie tworzą osobne pozycje.</p>
      <div class="rk-quote-grid-2">
        <article class="rk-quote-card"><span class="rk-quote-icon">A</span><h3>Zakres podłogówki</h3><p>Pętle, rozdzielacze, magistrale, regulacja i warunki hydrauliczne po stronie instalacji odbiorczej.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-icon">B</span><h3>Zakres źródła</h3><p>Wytwarzanie ciepła, ciepła woda użytkowa, osprzęt źródła, przyłącza, zabezpieczenia i pierwsze uruchomienie.</p></article>
      </div>
      <div class="rk-quote-note rk-quote-note-bad"><p><strong>Nie kupuj źródła według powierzchni domu.</strong> Moc wynika z obciążenia cieplnego, przygotowania ciepłej wody i sposobu pracy instalacji. Przewymiarowanie nie jest bezpłatnym „zapasem bezpieczeństwa”.</p></div>
      <p class="rk-quote-copy">Wariant niskotemperaturowy warto sprawdzić jako całość w <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie podłogówki z pompą ciepła</a>. Przy kotle trzeba określić hydraulikę i sposób ograniczenia temperatury — punktem wyjścia jest poradnik o <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kotle gazowym w instalacji podłogowej</a>. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">Bufor ciepła</a> powinien wynikać z funkcji w układzie, a nie być automatycznie dopisanym elementem każdej kotłowni.</p>
    </section>

    <section class="rk-quote-section" id="rk-quote-variants">
      <span class="rk-quote-eyebrow">Koszt zależy od technologii i stanu budynku</span>
      <h2 class="rk-quote-section-title">Nowy dom, remont, system suchy czy frezowanie?</h2>
      <p class="rk-quote-lead">Jedna stawka nie opisuje wszystkich sytuacji. W remoncie koszt podnoszą rozbiórki, naprawy, niska rezerwa wysokości, nieznany stan podłoża i konieczność utrzymania pozostałych instalacji.</p>
      <div class="rk-quote-table-wrap">
        <table>
          <thead><tr><th>Wariant</th><th>Typowe pozycje dodatkowe</th><th>Ryzyko do sprawdzenia</th><th>Jak wyceniać</th></tr></thead>
          <tbody>
            <tr><td data-label="Wariant"><strong>Nowy dom — system mokry</strong></td><td data-label="Pozycje dodatkowe">Koordynacja warstw, dylatacji, rozdzielaczy i harmonogramu jastrychu.</td><td data-label="Ryzyko">Zmiany rzędnych i instalacji po wykonaniu projektu.</td><td data-label="Jak wyceniać">Na podstawie jednego projektu i oddzielnych zakresów branżowych.</td></tr>
            <tr><td data-label="Wariant"><strong>Remont z nową podłogą</strong></td><td data-label="Pozycje dodatkowe">Rozbiórka, wywóz, naprawa podłoża, nowe warstwy i progi.</td><td data-label="Ryzyko">Wilgoć, nośność, nierówności i dostępna wysokość.</td><td data-label="Jak wyceniać">Po odkrywkach i pomiarach, z rezerwą na roboty nieprzewidziane.</td></tr>
            <tr><td data-label="Wariant"><strong>System suchy</strong></td><td data-label="Pozycje dodatkowe">Płyty systemowe, lamele, warstwa rozkładająca obciążenia i suche wykończenie.</td><td data-label="Ryzyko">Zgodność elementów, nośność i akustyka.</td><td data-label="Jak wyceniać">Jako kompletny system, nie przez porównanie samej rury.</td></tr>
            <tr><td data-label="Wariant"><strong>Frezowanie</strong></td><td data-label="Pozycje dodatkowe">Badanie jastrychu, frezowanie, odkurzanie, naprawy i nowe trasy przy rozdzielaczu.</td><td data-label="Ryzyko">Grubość, zbrojenie, istniejące przewody i stan wylewki.</td><td data-label="Jak wyceniać">Po wizji lub wiarygodnej dokumentacji istniejącej podłogi.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-quote-copy">Porównaj warunki <a href="https://projekt-ogrzewania.pl/czym-jest-system-mokry-w-wodnym-ogrzewaniu-podlogowym/">systemu mokrego</a> i <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">systemu suchego</a>. Przy modernizacji osobną procedurę oceny opisuje poradnik <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">frezowanie ogrzewania podłogowego w starym domu</a>.</p>
    </section>

    <section class="rk-quote-section rk-quote-section-soft" id="rk-quote-contract">
      <span class="rk-quote-eyebrow">Od arkusza porównawczego do bezpiecznej umowy</span>
      <h2 class="rk-quote-section-title">Jak porównać wykonawców i zamknąć budżet?</h2>
      <p class="rk-quote-lead">Po wyjaśnieniu zakresu poproś o uzupełnione oferty w tej samej strukturze. Ustalenia telefoniczne przenieś do dokumentu — inaczej podczas realizacji mogą zostać uznane za roboty dodatkowe.</p>
      <div class="rk-quote-grid-3">
        <article class="rk-quote-card"><span class="rk-quote-card-label">OFERTA</span><h3>Jedna tabela ilości</h3><ul class="rk-quote-bullets"><li>te same pomieszczenia i metraż,</li><li>te same parametry materiałów,</li><li>jasne ilości i ceny jednostkowe,</li><li>netto, VAT i brutto osobno,</li><li>lista wyłączeń.</li></ul></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">UMOWA</span><h3>Zakres i odpowiedzialność</h3><ul class="rk-quote-bullets"><li>terminy i etapy płatności,</li><li>procedura zmian i dopłat,</li><li>odpowiedzialność za materiały,</li><li>próby i dokumentacja,</li><li>warunki gwarancji.</li></ul></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">ODBIÓR</span><h3>Dowody wykonania</h3><ul class="rk-quote-bullets"><li>zdjęcia tras przed zakryciem,</li><li>opis pętli i rozdzielaczy,</li><li>protokół próby,</li><li>nastawy i uruchomienie,</li><li>lista zatwierdzonych zmian.</li></ul></article>
      </div>
      <div class="rk-quote-note"><p><strong>Rezerwa budżetowa nie naprawia niejasnej oferty.</strong> Rezerwa służy zdarzeniom trudnym do przewidzenia, a nie elementom, które można było zinwentaryzować i wycenić przed podpisaniem umowy.</p></div>
    </section>

    <section class="rk-quote-section" id="rk-quote-errors">
      <span class="rk-quote-eyebrow">Najczęstsze pułapki kosztorysowe</span>
      <h2 class="rk-quote-section-title">Błędy, przez które tania podłogówka staje się droga</h2>
      <div class="rk-quote-grid-3">
        <article class="rk-quote-card"><span class="rk-quote-card-label">BŁĄD 1</span><h3>Porównanie samych sum</h3><p>Oferty o innym zakresie, metrażu i podatku nie tworzą jeszcze rankingu cenowego.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">BŁĄD 2</span><h3>„Komplet” bez załącznika</h3><p>Jedno słowo nie definiuje rozdzielaczy, magistral, automatyki, prób ani uruchomienia.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">BŁĄD 3</span><h3>Metraż brutto jako ilość rury</h3><p>Rozstaw, powierzchnia czynna, dobiegi i podział pętli zmieniają ilości materiału.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">BŁĄD 4</span><h3>Najtańszy materiał bez parametrów</h3><p>Brak dokładnej specyfikacji uniemożliwia ocenę równoważności zamiennika.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">BŁĄD 5</span><h3>Pominięcie prac budowlanych</h3><p>Izolacja, jastrych, naprawy i wykończenie mogą być większą pozycją niż sama instalacja.</p></article>
        <article class="rk-quote-card"><span class="rk-quote-card-label">BŁĄD 6</span><h3>Zakup przed obliczeniami</h3><p>Materiały zamówione bez podziału pętli mogą nie odpowiadać mocy i hydraulice budynku.</p></article>
      </div>
    </section>

    <section class="rk-quote-section rk-quote-final" id="rk-quote-final">
      <span class="rk-quote-eyebrow">Od porównania ofert do wykonania</span>
      <h2 class="rk-quote-section-title">Najpierw wspólny zakres techniczny, potem uczciwa konkurencja cenowa</h2>
      <p class="rk-quote-lead">Dobra wycena nie musi być najkrótsza. Ma pozwolić inwestorowi rozpoznać ilości, parametry, granice odpowiedzialności i pełny koszt dojścia do działającej instalacji.</p>
      <div class="rk-quote-cta">
        <div class="rk-quote-cta-title">Przekaż wykonawcom ten sam projekt i porównaj koszt tego samego rozwiązania</div>
        <p>Dokumentacja określi rozmieszczenie i rozstaw rur, podział pętli, przepływy, rozdzielacze i zestawienie materiałów. Dzięki temu rozmowa o cenie zaczyna się od wspólnej specyfikacji, a nie od różnych założeń ukrytych pod hasłem „komplet”.</p>
        <a class="rk-quote-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-quote-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-quote-section" id="rk-quote-sources">
      <span class="rk-quote-eyebrow">Oficjalna podstawa techniczna i statystyczna</span>
      <h2 class="rk-quote-section-title">Źródła i zakres odpowiedzialności</h2>
      <p class="rk-quote-lead">Normy opisują metody projektowania i instalowania systemów płaszczyznowych. Dane statystyczne pomagają obserwować zmiany cen, ale nie zastępują lokalnej oferty wykonawcy ani kosztorysu konkretnego budynku.</p>
      <div class="rk-quote-source-grid">
        <article class="rk-quote-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — projektowanie i określanie mocy</a><p>Oficjalna karta normy dotyczącej wyznaczania projektowej mocy wodnych systemów ogrzewania i chłodzenia płaszczyznowego.</p></article>
        <article class="rk-quote-source-card"><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-5:2021 — instalowanie systemów</a><p>Oficjalna karta części normy dotyczącej wykonania wbudowanych wodnych systemów płaszczyznowych.</p></article>
        <article class="rk-quote-source-card"><a href="https://stat.gov.pl/files/gfx/portalinformacyjny/pl/defaultaktualnosci/5465/5/168/1/1_kwartal_2026.pdf" target="_blank" rel="nofollow noopener noreferrer">GUS — ceny robót budowlano-montażowych, I kwartał 2026</a><p>Oficjalna publikacja statystyczna przydatna do obserwacji dynamiki cen; nie jest cennikiem pojedynczej instalacji.</p></article>
        <article class="rk-quote-source-card"><a href="https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/" target="_blank" rel="nofollow noopener noreferrer">Budowlane ABC — oficjalny kalkulator współczynników przegród</a><p>Narzędzie MRiT wspierające opis przegród budynku, które są jednymi z danych wejściowych do obliczeń cieplnych.</p></article>
      </div>
      <div class="rk-quote-responsibility"><p><strong>Zakres poradnika:</strong> analizator porównuje wyłącznie dane wpisane przez użytkownika i jawnie wskazane statusy pozycji. Kwoty startowe są przykładem działania, nie cennikiem ani prognozą ceny. Materiał nie zastępuje projektu, przedmiaru, lokalnej oferty, sprawdzenia podatku, umowy, nadzoru ani odbioru technicznego.</p></div>
    </section>

    <section class="rk-quote-section rk-quote-section-soft" id="rk-quote-faq">
      <span class="rk-quote-eyebrow">Pytania inwestorów przed podpisaniem umowy</span>
      <h2 class="rk-quote-section-title">FAQ — wycena ogrzewania podłogowego wodnego</h2>
      <div class="rk-quote-faq">
        <details><summary>Ile kosztuje ogrzewanie podłogowe za m²?</summary><div class="rk-quote-faq-answer"><p>Bez zdefiniowania zakresu nie ma jednej odpowiedzialnej stawki. Cena może dotyczyć wyłącznie montażu rur, materiałów i robocizny, pełnej instalacji z rozdzielaczami albo także izolacji i jastrychu. Trzeba też wskazać, czy mianownikiem jest powierzchnia całkowita, ogrzewana czy czynna.</p></div></details>
        <details><summary>Co powinna obejmować kompletna wycena podłogówki?</summary><div class="rk-quote-faq-answer"><p>Powinna wskazywać podstawę metrażu, ilości i parametry rur, mocowanie, rozdzielacze, szafki, magistrale, armaturę, automatykę, robociznę, próbę, uruchomienie, dokumentację, podatek i listę wyłączeń. Warstwy budowlane oraz źródło ciepła należy opisać jako osobne zakresy, jeśli są wliczone.</p></div></details>
        <details><summary>Czy najtańsza oferta jest rzeczywiście najtańsza?</summary><div class="rk-quote-faq-answer"><p>Nie wiadomo, dopóki oferty nie obejmują tego samego zakresu i nie mają wyjaśnionych pozycji niejasnych. Znane braki można doliczyć, lecz kosztu nieopisanej pozycji nie należy zgadywać. O jakości, terminie i odpowiedzialności trzeba zdecydować niezależnie od sumy.</p></div></details>
        <details><summary>Czy porównywać ceny netto czy brutto?</summary><div class="rk-quote-faq-answer"><p>Porównuj wszystkie oferty na jednej podstawie i wymagaj podania stawki oraz wartości podatku. Analizator celowo nie przelicza podatku, ponieważ właściwa kwalifikacja zależy od rodzaju świadczenia i warunków transakcji.</p></div></details>
        <details><summary>Jaki metraż wpisać do porównania ofert?</summary><div class="rk-quote-faq-answer"><p>Użyj powierzchni, którą strony jednoznacznie zdefiniowały jako podstawę rozliczenia. Dla montażu bywa to powierzchnia ogrzewana, ale ilości rur wynikają z powierzchni czynnej, rozstawu, dobiegów i geometrii. Nie mieszaj tych wartości.</p></div></details>
        <details><summary>Czy rozdzielacze i szafki są zawsze w cenie?</summary><div class="rk-quote-faq-answer"><p>Nie. Oferta powinna osobno wskazać liczbę i wyposażenie rozdzielaczy, szafki, przyłącza, zawory, przepływomierze i osprzęt. Hasło „materiał kompletny” nie daje pewności, jaki zestaw przewidziano.</p></div></details>
        <details><summary>Czy cena obejmuje sterowanie strefowe?</summary><div class="rk-quote-faq-answer"><p>Tylko wtedy, gdy wymieniono termostaty, listwy, siłowniki, czujniki, okablowanie, konfigurację i zakres prac elektrycznych. Sama instalacja rozdzielacza nie oznacza automatycznie dostawy oraz uruchomienia sterowania.</p></div></details>
        <details><summary>Czy styropian i wylewka należą do kosztu podłogówki?</summary><div class="rk-quote-faq-answer"><p>Są elementami całej podłogi, ale często pozostają poza zakresem instalatora. W budżecie inwestycji należy je uwzględnić, natomiast w umowie trzeba wskazać, która firma odpowiada za izolację, taśmy, dylatacje, jastrych i wygrzewanie.</p></div></details>
        <details><summary>Czy źródło ciepła jest wliczone w instalację podłogową?</summary><div class="rk-quote-faq-answer"><p>Najczęściej jest oddzielnym zakresem. Jeżeli oferta ma być kompleksowa, powinna wyliczać urządzenie, zasobnik lub bufor, armaturę, zabezpieczenia, przyłącza, automatykę, uruchomienie i granicę między kotłownią a obiegami podłogowymi.</p></div></details>
        <details><summary>Ile rezerwy budżetowej przyjąć?</summary><div class="rk-quote-faq-answer"><p>Rezerwa zależy od jakości dokumentacji i stanu budynku. W nowym domu z projektem ryzyko może być mniejsze niż w remoncie bez odkrywek. Najpierw wyceń wszystkie rozpoznawalne pozycje; rezerwa nie powinna maskować braków w ofercie.</p></div></details>
        <details><summary>Czy można przeliczyć ofertę proporcjonalnie po zmianie metrażu?</summary><div class="rk-quote-faq-answer"><p>Nie dla całej kwoty. Rura i część robocizny mogą zależeć od powierzchni, ale projekt, rozdzielacze, dojazd, uruchomienie i część armatury są kosztami skokowymi lub ryczałtowymi. Po zmianie domu lub zakresu poproś o aktualizację ilości.</p></div></details>
        <details><summary>Dlaczego analizator nie dolicza ceny pozycji „niejasnej”?</summary><div class="rk-quote-faq-answer"><p>Niejasne nie znaczy wyłączone. Automatyczne doliczenie mogłoby podwójnie policzyć element już zawarty w ofercie. Najpierw uzyskaj odpowiedź wykonawcy, a potem oznacz pozycję jako wliczoną albo wyłączoną i wpisz znany koszt uzupełnienia.</p></div></details>
        <details><summary>Czy projekt zwraca się przez tańsze oferty?</summary><div class="rk-quote-faq-answer"><p>Nie można zagwarantować określonej oszczędności. Projekt dostarcza jednak wspólnych ilości i parametrów, ułatwia wykrycie braków oraz ogranicza ryzyko, że wykonawcy wyceniają różne instalacje. Jego głównym celem jest poprawność techniczna i kontrola zakresu.</p></div></details>
        <details><summary>Jak rozliczać roboty dodatkowe?</summary><div class="rk-quote-faq-answer"><p>Umowa powinna określać, co jest zmianą, kto ją zatwierdza, w jakiej formie powstaje wycena i kiedy wolno rozpocząć pracę. Bez pisemnej procedury spór może dotyczyć zarówno zasadności, jak i ceny dodatkowego zakresu.</p></div></details>
        <details><summary>Jakie dokumenty odebrać po montażu?</summary><div class="rk-quote-faq-answer"><p>Co najmniej aktualny przebieg pętli, ich opisy i długości, zdjęcia przed zakryciem, protokół próby, dane użytych materiałów, zatwierdzone zmiany, nastawy wstępne oraz instrukcje elementów. Zakres odbioru powinien zostać zapisany przed rozpoczęciem prac.</p></div></details>
      </div>
    </section>

    <section class="rk-quote-author" id="rk-quote-author">
      <span class="rk-quote-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
      <h2 class="rk-quote-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-quote-author-layout">
        <aside class="rk-quote-author-side">
          <div class="rk-quote-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-quote-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-quote-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-quote-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-quote-author-main">
          <div class="rk-quote-author-quote">„Moim zdaniem najgroźniejszą wadą taniej wyceny nie jest niska cena, lecz brak informacji, za co dokładnie płacimy. Dopiero wspólny projekt, ilości i granice odpowiedzialności pozwalają uczciwie porównać wykonawców.”</div>
          <p>Robert Kucharski przygotowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W praktyce analizuje zależność między obciążeniem pomieszczeń, powierzchnią grzejną, temperaturą zasilania, przepływami oraz kosztami wykonania.</p>
          <p>Ten poradnik został zbudowany tak, aby rozdzielić trzy często mieszane obszary: instalację podłogową, warstwy budowlane i źródło ciepła. Analizator nie publikuje „średniej ceny”, lecz uczy porównywać otrzymane oferty na wspólnej podstawie i jawnie zostawia nierozstrzygnięte elementy do wyjaśnienia.</p>
          <p>Autor publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego w serwisie Projekt-Ogrzewania.pl</a>.</p>
          <div class="rk-quote-author-facts">
            <div class="rk-quote-author-fact"><strong>Praktyka projektowa</strong>OZC, układy pętli, przepływy, opory i współpraca instalacji ze źródłem ciepła.</div>
            <div class="rk-quote-author-fact"><strong>Metoda poradnika</strong>Oddzielenie zakresu technicznego, kosztów budowlanych i wyposażenia kotłowni.</div>
            <div class="rk-quote-author-fact"><strong>Zakres aktualizacji</strong>Logika porównywania ofert i źródła oficjalne sprawdzone 16 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "kosztorysowanie instalacji grzewczych",
        "obliczenia strat ciepła",
        "hydraulika instalacji grzewczych",
        "projektowanie instalacji sanitarnych"
      ],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-b8b906199/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Kompleksowa-wycena-ogrzewania-podlogowego-wodnego-–-na-co-przygotowac-budzet.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Kompleksowa-wycena-ogrzewania-podlogowego-wodnego-–-na-co-przygotowac-budzet.webp",
      "caption": "Kompleksowa wycena ogrzewania podłogowego wodnego"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Poradniki", "item": "https://projekt-ogrzewania.pl/blog/" },
        { "@type": "ListItem", "position": 3, "name": "Wycena ogrzewania podłogowego", "item": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#webpage",
      "url": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/",
      "name": "Wycena ogrzewania podłogowego wodnego – analizator ofert i pełnego budżetu",
      "description": "Sprawdź, co obejmuje wycena ogrzewania podłogowego. Porównaj do trzech ofert, wykryj brakujące koszty i oblicz cenę wspólnego zakresu.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#primaryimage" },
      "datePublished": "2025-12-09T12:04:56+00:00",
      "dateModified": "2026-09-16T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#webpage" },
      "headline": "Wycena ogrzewania podłogowego wodnego – analizator ofert i pełnego budżetu",
      "description": "Przewodnik po kosztach wodnego ogrzewania podłogowego z analizatorem ofert, zakresem materiałów, robocizny, warstw podłogi i źródła ciepła.",
      "image": { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2025-12-09T12:04:56+00:00",
      "dateModified": "2026-09-16T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": [
        "wycena ogrzewania podłogowego wodnego",
        "koszt ogrzewania podłogowego",
        "porównanie ofert instalacyjnych",
        "koszt materiałów i robocizny",
        "projekt ogrzewania podłogowego"
      ],
      "keywords": "wycena ogrzewania podłogowego wodnego, koszt podłogówki, cena podłogówki za m2, porównanie ofert, kalkulator kosztów ogrzewania podłogowego",
      "isAccessibleForFree": true,
      "citation": [
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74685.html",
        "https://stat.gov.pl/files/gfx/portalinformacyjny/pl/defaultaktualnosci/5465/5/168/1/1_kwartal_2026.pdf",
        "https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/"
      ],
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#analyzer" },
        { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#cost-baskets" },
        { "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#analyzer",
      "name": "Analizator ofert ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#rk-quote-analyzer-section",
      "applicationCategory": "FinanceApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie porównujące do trzech ofert według metrażu, podstawy netto lub brutto, zakresu wliczonego, znanych dopłat i pozycji nierozstrzygniętych.",
      "featureList": [
        "porównanie do trzech ofert",
        "kontrola ceny za metr kwadratowy",
        "ocena kompletności zakresu",
        "doliczanie znanych uzupełnień",
        "lista pytań do wykonawców",
        "wykres ceny podanej i uzupełnień"
      ]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#howto",
      "name": "Jak porównać oferty ogrzewania podłogowego",
      "description": "Procedura sprowadzenia ofert wykonawców do wspólnego metrażu, podstawy cen i zakresu technicznego.",
      "totalTime": "PT25M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Ustal wspólny metraż", "text": "Określ, czy porównanie dotyczy powierzchni ogrzewanej, czynnej czy innej jednoznacznie zdefiniowanej podstawy." },
        { "@type": "HowToStep", "position": 2, "name": "Ujednolić netto i brutto", "text": "Porównuj wszystkie kwoty na tej samej podstawie i wyjaśnij sposób naliczenia podatku." },
        { "@type": "HowToStep", "position": 3, "name": "Zdefiniuj zakres docelowy", "text": "Wybierz elementy, które każda oferta ma obejmować, od projektu po próbę i uruchomienie." },
        { "@type": "HowToStep", "position": 4, "name": "Oznacz pozycje w ofertach", "text": "Każdą wymaganą pozycję zakwalifikuj jako wliczoną, wyłączoną albo niejasną." },
        { "@type": "HowToStep", "position": 5, "name": "Dodaj wyłącznie znane koszty", "text": "Do pozycji wyłączonych wpisz udokumentowane lub własne kwoty uzupełnienia; nie zgaduj ceny pozycji niejasnych." },
        { "@type": "HowToStep", "position": 6, "name": "Wyjaśnij różnice i zaktualizuj umowę", "text": "Poproś wykonawców o pisemne odpowiedzi oraz poprawione oferty na wspólnej specyfikacji." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#cost-baskets",
      "name": "Sześć koszyków budżetu ogrzewania podłogowego",
      "numberOfItems": 6,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Projekt i obliczenia" },
        { "@type": "ListItem", "position": 2, "name": "System w podłodze" },
        { "@type": "ListItem", "position": 3, "name": "Rozdział i magistrale" },
        { "@type": "ListItem", "position": 4, "name": "Sterowanie i odbiór" },
        { "@type": "ListItem", "position": 5, "name": "Warstwy podłogi" },
        { "@type": "ListItem", "position": 6, "name": "Źródło ciepła i kotłownia" }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "serviceType": "Projekt ogrzewania podłogowego",
      "description": "Projekt instalacji obejmujący rozmieszczenie i rozstaw rur, podział pętli, przepływy, nastawy i zestawienie materiałów."
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Ile kosztuje ogrzewanie podłogowe za m²?", "acceptedAnswer": { "@type": "Answer", "text": "Bez zdefiniowania zakresu nie ma jednej odpowiedzialnej stawki. Cena może dotyczyć wyłącznie montażu rur, materiałów i robocizny, pełnej instalacji z rozdzielaczami albo także izolacji i jastrychu. Trzeba też wskazać, czy mianownikiem jest powierzchnia całkowita, ogrzewana czy czynna." } },
        { "@type": "Question", "name": "Co powinna obejmować kompletna wycena podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Powinna wskazywać podstawę metrażu, ilości i parametry rur, mocowanie, rozdzielacze, szafki, magistrale, armaturę, automatykę, robociznę, próbę, uruchomienie, dokumentację, podatek i listę wyłączeń. Warstwy budowlane oraz źródło ciepła należy opisać jako osobne zakresy, jeśli są wliczone." } },
        { "@type": "Question", "name": "Czy najtańsza oferta jest rzeczywiście najtańsza?", "acceptedAnswer": { "@type": "Answer", "text": "Nie wiadomo, dopóki oferty nie obejmują tego samego zakresu i nie mają wyjaśnionych pozycji niejasnych. Znane braki można doliczyć, lecz kosztu nieopisanej pozycji nie należy zgadywać. O jakości, terminie i odpowiedzialności trzeba zdecydować niezależnie od sumy." } },
        { "@type": "Question", "name": "Czy porównywać ceny netto czy brutto?", "acceptedAnswer": { "@type": "Answer", "text": "Porównuj wszystkie oferty na jednej podstawie i wymagaj podania stawki oraz wartości podatku. Analizator celowo nie przelicza podatku, ponieważ właściwa kwalifikacja zależy od rodzaju świadczenia i warunków transakcji." } },
        { "@type": "Question", "name": "Jaki metraż wpisać do porównania ofert?", "acceptedAnswer": { "@type": "Answer", "text": "Użyj powierzchni, którą strony jednoznacznie zdefiniowały jako podstawę rozliczenia. Dla montażu bywa to powierzchnia ogrzewana, ale ilości rur wynikają z powierzchni czynnej, rozstawu, dobiegów i geometrii. Nie mieszaj tych wartości." } },
        { "@type": "Question", "name": "Czy rozdzielacze i szafki są zawsze w cenie?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Oferta powinna osobno wskazać liczbę i wyposażenie rozdzielaczy, szafki, przyłącza, zawory, przepływomierze i osprzęt. Hasło materiał kompletny nie daje pewności, jaki zestaw przewidziano." } },
        { "@type": "Question", "name": "Czy cena obejmuje sterowanie strefowe?", "acceptedAnswer": { "@type": "Answer", "text": "Tylko wtedy, gdy wymieniono termostaty, listwy, siłowniki, czujniki, okablowanie, konfigurację i zakres prac elektrycznych. Sama instalacja rozdzielacza nie oznacza automatycznie dostawy oraz uruchomienia sterowania." } },
        { "@type": "Question", "name": "Czy styropian i wylewka należą do kosztu podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Są elementami całej podłogi, ale często pozostają poza zakresem instalatora. W budżecie inwestycji należy je uwzględnić, natomiast w umowie trzeba wskazać, która firma odpowiada za izolację, taśmy, dylatacje, jastrych i wygrzewanie." } },
        { "@type": "Question", "name": "Czy źródło ciepła jest wliczone w instalację podłogową?", "acceptedAnswer": { "@type": "Answer", "text": "Najczęściej jest oddzielnym zakresem. Jeżeli oferta ma być kompleksowa, powinna wyliczać urządzenie, zasobnik lub bufor, armaturę, zabezpieczenia, przyłącza, automatykę, uruchomienie i granicę między kotłownią a obiegami podłogowymi." } },
        { "@type": "Question", "name": "Ile rezerwy budżetowej przyjąć?", "acceptedAnswer": { "@type": "Answer", "text": "Rezerwa zależy od jakości dokumentacji i stanu budynku. W nowym domu z projektem ryzyko może być mniejsze niż w remoncie bez odkrywek. Najpierw wyceń wszystkie rozpoznawalne pozycje; rezerwa nie powinna maskować braków w ofercie." } },
        { "@type": "Question", "name": "Czy można przeliczyć ofertę proporcjonalnie po zmianie metrażu?", "acceptedAnswer": { "@type": "Answer", "text": "Nie dla całej kwoty. Rura i część robocizny mogą zależeć od powierzchni, ale projekt, rozdzielacze, dojazd, uruchomienie i część armatury są kosztami skokowymi lub ryczałtowymi. Po zmianie domu lub zakresu poproś o aktualizację ilości." } },
        { "@type": "Question", "name": "Dlaczego analizator nie dolicza ceny pozycji niejasnej?", "acceptedAnswer": { "@type": "Answer", "text": "Niejasne nie znaczy wyłączone. Automatyczne doliczenie mogłoby podwójnie policzyć element już zawarty w ofercie. Najpierw uzyskaj odpowiedź wykonawcy, a potem oznacz pozycję jako wliczoną albo wyłączoną i wpisz znany koszt uzupełnienia." } },
        { "@type": "Question", "name": "Czy projekt zwraca się przez tańsze oferty?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można zagwarantować określonej oszczędności. Projekt dostarcza jednak wspólnych ilości i parametrów, ułatwia wykrycie braków oraz ogranicza ryzyko, że wykonawcy wyceniają różne instalacje. Jego głównym celem jest poprawność techniczna i kontrola zakresu." } },
        { "@type": "Question", "name": "Jak rozliczać roboty dodatkowe?", "acceptedAnswer": { "@type": "Answer", "text": "Umowa powinna określać, co jest zmianą, kto ją zatwierdza, w jakiej formie powstaje wycena i kiedy wolno rozpocząć pracę. Bez pisemnej procedury spór może dotyczyć zarówno zasadności, jak i ceny dodatkowego zakresu." } },
        { "@type": "Question", "name": "Jakie dokumenty odebrać po montażu?", "acceptedAnswer": { "@type": "Answer", "text": "Co najmniej aktualny przebieg pętli, ich opisy i długości, zdjęcia przed zakryciem, protokół próby, dane użytych materiałów, zatwierdzone zmiany, nastawy wstępne oraz instrukcje elementów. Zakres odbioru powinien zostać zapisany przed rozpoczęciem prac." } }
      ]
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  var guide = document.getElementById("rk-quote-guide");
  if (!guide) {
    return;
  }

  var basketData = {
    design: {
      label: "Koszyk 1",
      title: "Projekt i obliczenia",
      summary: "Dokumentacja definiuje wspólną podstawę dla wykonawców: pomieszczenia, powierzchnie czynne, rozstawy, pętle, przepływy, rozdzielacze i materiały.",
      included: "zakres OZC, układ pętli, hydraulika oraz zestawienie materiałów.",
      unclear: "czy cena obejmuje obliczenia pomieszczeń, korekty i wersję wykonawczą.",
      question: "Czy każdy wykonawca wycenia dokładnie te same ilości i parametry?"
    },
    floor: {
      label: "Koszyk 2",
      title: "System w podłodze",
      summary: "Ten zakres obejmuje elementy od rozdzielacza przez pętle do ochrony rur w przejściach. Ilości powinny wynikać z rysunków, a nie wyłącznie z powierzchni domu.",
      included: "rura z pełnym oznaczeniem, system mocowania, łuki, osłony, taśmy i elementy przejść.",
      unclear: "metraż dobiegów, sposób mocowania, materiał rur i zakres przy dylatacjach.",
      question: "Czy zestawienie zawiera ilość rury dla każdej pętli i łączny metraż z dobiegami?"
    },
    distribution: {
      label: "Koszyk 3",
      title: "Rozdział i magistrale",
      summary: "Rozdzielacze, szafki i przewody zasilające są kosztami zależnymi od liczby obwodów, kondygnacji, przepływów i odległości od źródła.",
      included: "rozdzielacze z wyposażeniem, szafki, przyłącza, magistrale, izolacja i armatura.",
      unclear: "liczba sekcji, średnice magistral, sposób prowadzenia i granica zakresu kotłowni.",
      question: "Ile rozdzielaczy i sekcji przewidziano oraz gdzie kończy się ten zakres?"
    },
    control: {
      label: "Koszyk 4",
      title: "Sterowanie, próba i odbiór",
      summary: "Automatyka i czynności odbiorowe muszą zostać opisane oddzielnie. Montaż rur nie oznacza automatycznie uruchomienia kompletnego układu.",
      included: "termostaty, siłowniki, listwy, okablowanie, próba, protokół, nastawy i dokumentacja.",
      unclear: "kto wykonuje elektrykę, konfiguruje sterowanie i odpowiada za instalację podczas jastrychu.",
      question: "Jakie czynności i dokumenty zostaną przekazane w ramach odbioru?"
    },
    layers: {
      label: "Koszyk 5",
      title: "Warstwy podłogi",
      summary: "Izolacja, warstwy wyrównawcze, dylatacje, jastrych i okładzina należą do całej inwestycji, ale często nie należą do umowy instalatora.",
      included: "materiał i montaż izolacji, taśmy, dylatacje, jastrych, pielęgnacja oraz wygrzewanie.",
      unclear: "od jakiej powierzchni liczona jest cena i kto odpowiada za przygotowanie podłoża.",
      question: "Które warstwy są wliczone, z jakim parametrem i kto odbiera je przed kolejnym etapem?"
    },
    source: {
      label: "Koszyk 6",
      title: "Źródło ciepła i kotłownia",
      summary: "Źródło ciepła współpracuje z podłogówką, lecz zazwyczaj stanowi osobny zakres dostawy, montażu, zabezpieczeń oraz uruchomienia.",
      included: "urządzenie, osprzęt, zasobnik lub bufor, pompy, armatura, przyłącza i uruchomienie.",
      unclear: "granica hydrauliczna, instalacja elektryczna lub gazowa, serwis i warunki gwarancji.",
      question: "Czy oferta źródła została dobrana do OZC i projektowych parametrów instalacji?"
    }
  };

  var basketButtons = guide.querySelectorAll("[data-rk-basket]");

  function showBasket(key) {
    var data = basketData[key];
    if (!data) {
      return;
    }
    document.getElementById("rk-quote-basket-label").textContent = data.label;
    document.getElementById("rk-quote-basket-title").textContent = data.title;
    document.getElementById("rk-quote-basket-summary").textContent = data.summary;
    document.getElementById("rk-quote-basket-included").textContent = data.included;
    document.getElementById("rk-quote-basket-unclear").textContent = data.unclear;
    document.getElementById("rk-quote-basket-question").textContent = data.question;
    basketButtons.forEach(function (button) {
      var selected = button.getAttribute("data-rk-basket") === key;
      button.setAttribute("aria-selected", selected ? "true" : "false");
    });
  }

  basketButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      showBasket(button.getAttribute("data-rk-basket"));
    });
  });

  var categories = [
    { key: "design", label: "Projekt i obliczenia", selected: true, cost: 1000, question: "Czy oferta obejmuje projekt, obliczenia pomieszczeń i zestawienie materiałów?" },
    { key: "floorSystem", label: "Rury i system mocowania", selected: true, cost: 9000, question: "Jaki typ, wymiar i metraż rury oraz jaki system mocowania są wliczone?" },
    { key: "distribution", label: "Rozdzielacze i szafki", selected: true, cost: 5000, question: "Ile rozdzielaczy, sekcji i szafek obejmuje oferta oraz z jakim wyposażeniem?" },
    { key: "mains", label: "Magistrale i armatura", selected: true, cost: 3000, question: "Czy przewody zasilające, izolacja i armatura między źródłem a rozdzielaczami są wliczone?" },
    { key: "automation", label: "Automatyka i sterowanie", selected: true, cost: 3000, question: "Czy wliczono termostaty, listwy, siłowniki, okablowanie i konfigurację?" },
    { key: "labor", label: "Montaż instalacji", selected: true, cost: 7000, question: "Jakie dokładnie czynności montażowe obejmuje podana robocizna?" },
    { key: "testing", label: "Próba, uruchomienie i protokół", selected: true, cost: 800, question: "Czy oferta obejmuje próbę, protokół, opis obwodów i wstępne nastawy?" },
    { key: "insulation", label: "Izolacja podłogi", selected: false, cost: 7000, question: "Czy dostawa i ułożenie izolacji podłogi są wliczone oraz według jakiej grubości?" },
    { key: "screed", label: "Jastrych i dylatacje", selected: false, cost: 9000, question: "Czy oferta obejmuje jastrych, dylatacje, pielęgnację i procedurę wygrzewania?" },
    { key: "heatSource", label: "Źródło ciepła i kotłownia", selected: false, cost: 35000, question: "Czy urządzenie, osprzęt kotłowni, przyłącza i uruchomienie źródła są wliczone?" },
    { key: "demolition", label: "Rozbiórki i naprawy", selected: false, cost: 5000, question: "Czy rozbiórka, wywóz i naprawa podłoża są częścią ceny?" },
    { key: "commercial", label: "Transport, dokumentacja i koszty dodatkowe", selected: true, cost: 1200, question: "Czy transport, dojazd, dokumentacja i wszystkie koszty ryczałtowe są wliczone?" }
  ];

  var offerDefaults = [
    {
      name: "Oferta A", total: 24500, area: 150, basis: "gross",
      statuses: { design: "excluded", floorSystem: "included", distribution: "included", mains: "unclear", automation: "excluded", labor: "included", testing: "included", insulation: "excluded", screed: "excluded", heatSource: "excluded", demolition: "excluded", commercial: "unclear" }
    },
    {
      name: "Oferta B", total: 31000, area: 150, basis: "gross",
      statuses: { design: "included", floorSystem: "included", distribution: "included", mains: "included", automation: "unclear", labor: "included", testing: "included", insulation: "unclear", screed: "excluded", heatSource: "excluded", demolition: "excluded", commercial: "included" }
    },
    {
      name: "Oferta C", total: 34800, area: 150, basis: "gross",
      statuses: { design: "included", floorSystem: "included", distribution: "included", mains: "included", automation: "included", labor: "included", testing: "included", insulation: "included", screed: "included", heatSource: "excluded", demolition: "excluded", commercial: "included" }
    }
  ];

  function money(value) {
    var safeValue = Number(value);
    if (!isFinite(safeValue)) {
      safeValue = 0;
    }
    return new Intl.NumberFormat("pl-PL", { style: "currency", currency: "PLN", maximumFractionDigits: 0 }).format(safeValue);
  }

  function numberFrom(id) {
    var field = document.getElementById(id);
    if (!field) {
      return 0;
    }
    var value = parseFloat(field.value);
    if (!isFinite(value)) {
      return 0;
    }
    return value;
  }

  function pushUnique(list, textValue) {
    if (list.indexOf(textValue) === -1) {
      list.push(textValue);
    }
  }

  function renderScope() {
    var scopeGrid = document.getElementById("rk-quote-scope-grid");
    scopeGrid.textContent = "";
    categories.forEach(function (category) {
      var item = document.createElement("div");
      item.className = "rk-quote-scope-item";

      var checkLabel = document.createElement("label");
      checkLabel.className = "rk-quote-scope-check";
      var checkbox = document.createElement("input");
      checkbox.type = "checkbox";
      checkbox.id = "rk-quote-target-" + category.key;
      checkbox.checked = category.selected;
      var checkText = document.createElement("span");
      checkText.textContent = category.label;
      checkLabel.appendChild(checkbox);
      checkLabel.appendChild(checkText);

      var costLabel = document.createElement("label");
      costLabel.className = "rk-quote-scope-cost-label";
      costLabel.setAttribute("for", "rk-quote-cost-" + category.key);
      costLabel.textContent = "Znany koszt uzupełnienia [zł]";
      var cost = document.createElement("input");
      cost.className = "rk-quote-scope-cost";
      cost.id = "rk-quote-cost-" + category.key;
      cost.type = "number";
      cost.min = "0";
      cost.max = "10000000";
      cost.step = "100";
      cost.value = String(category.cost);
      cost.inputMode = "decimal";

      item.appendChild(checkLabel);
      item.appendChild(costLabel);
      item.appendChild(cost);
      scopeGrid.appendChild(item);
    });
  }

  function option(value, label, selectedValue) {
    var element = document.createElement("option");
    element.value = value;
    element.textContent = label;
    element.selected = value === selectedValue;
    return element;
  }

  function createOfferPanel(index) {
    var data = offerDefaults[index];
    var panel = document.createElement("section");
    panel.className = "rk-quote-offer-panel";
    panel.id = "rk-quote-offer-panel-" + index;

    var head = document.createElement("div");
    head.className = "rk-quote-offer-head";
    var title = document.createElement("h4");
    title.className = "rk-quote-offer-title";
    title.textContent = "Dane oferty " + String.fromCharCode(65 + index);
    var badge = document.createElement("span");
    badge.className = "rk-quote-offer-badge";
    badge.textContent = String.fromCharCode(65 + index);
    head.appendChild(title);
    head.appendChild(badge);
    panel.appendChild(head);

    var fields = document.createElement("div");
    fields.className = "rk-quote-fields";
    var fieldConfigs = [
      { label: "Nazwa oferty", id: "rk-quote-name-" + index, type: "text", value: data.name },
      { label: "Cena podana [zł]", id: "rk-quote-total-" + index, type: "number", value: data.total },
      { label: "Powierzchnia w ofercie [m²]", id: "rk-quote-area-" + index, type: "number", value: data.area }
    ];
    fieldConfigs.forEach(function (config) {
      var label = document.createElement("label");
      label.className = "rk-quote-field";
      var caption = document.createElement("span");
      caption.textContent = config.label;
      var input = document.createElement("input");
      input.id = config.id;
      input.type = config.type;
      input.value = String(config.value);
      if (config.type === "number") {
        input.min = "0";
        input.max = "10000000";
        input.step = "0.1";
        input.inputMode = "decimal";
      }
      label.appendChild(caption);
      label.appendChild(input);
      fields.appendChild(label);
    });

    var basisLabel = document.createElement("label");
    basisLabel.className = "rk-quote-field";
    var basisCaption = document.createElement("span");
    basisCaption.textContent = "Podstawa ceny";
    var basis = document.createElement("select");
    basis.id = "rk-quote-basis-" + index;
    basis.appendChild(option("gross", "Brutto", data.basis));
    basis.appendChild(option("net", "Netto", data.basis));
    basisLabel.appendChild(basisCaption);
    basisLabel.appendChild(basis);
    fields.appendChild(basisLabel);
    panel.appendChild(fields);

    var statuses = document.createElement("div");
    statuses.className = "rk-quote-offer-statuses";
    categories.forEach(function (category) {
      var label = document.createElement("label");
      label.className = "rk-quote-status-field";
      var caption = document.createElement("span");
      caption.textContent = category.label;
      var select = document.createElement("select");
      select.id = "rk-quote-status-" + index + "-" + category.key;
      var selectedStatus = data.statuses[category.key];
      select.appendChild(option("included", "Wliczona", selectedStatus));
      select.appendChild(option("excluded", "Wyłączona", selectedStatus));
      select.appendChild(option("unclear", "Niejasna", selectedStatus));
      label.appendChild(caption);
      label.appendChild(select);
      statuses.appendChild(label);
    });
    panel.appendChild(statuses);
    return panel;
  }

  function renderOffers() {
    var offers = document.getElementById("rk-quote-offers");
    offers.textContent = "";
    offerDefaults.forEach(function (data, index) {
      offers.appendChild(createOfferPanel(index));
    });
  }

  function updateOfferVisibility() {
    var count = parseInt(document.getElementById("rk-quote-offer-count").value, 10);
    offerDefaults.forEach(function (data, index) {
      var panel = document.getElementById("rk-quote-offer-panel-" + index);
      panel.hidden = index >= count;
    });
  }

  function activeCategories() {
    return categories.filter(function (category) {
      var field = document.getElementById("rk-quote-target-" + category.key);
      if (!field) {
        return false;
      }
      return field.checked;
    });
  }

  function offerName(index) {
    var field = document.getElementById("rk-quote-name-" + index);
    var value = field.value.trim();
    if (value === "") {
      return "Oferta " + String.fromCharCode(65 + index);
    }
    return value;
  }

  function metric(labelText, valueText) {
    var row = document.createElement("div");
    row.className = "rk-quote-result-metric";
    var label = document.createElement("span");
    label.textContent = labelText;
    var value = document.createElement("strong");
    value.textContent = valueText;
    row.appendChild(label);
    row.appendChild(value);
    return row;
  }

  function renderList(id, items, emptyText) {
    var list = document.getElementById(id);
    list.textContent = "";
    if (items.length === 0) {
      var empty = document.createElement("li");
      empty.textContent = emptyText;
      list.appendChild(empty);
      return;
    }
    items.forEach(function (textValue) {
      var item = document.createElement("li");
      item.textContent = textValue;
      list.appendChild(item);
    });
  }

  function analyzeOffers() {
    var count = parseInt(document.getElementById("rk-quote-offer-count").value, 10);
    var targetArea = numberFrom("rk-quote-target-area");
    var targetBasis = document.getElementById("rk-quote-target-basis").value;
    var active = activeCategories();
    var results = [];
    var questions = [];
    var warnings = [];
    var invalidInput = false;

    if (targetArea <= 0) {
      invalidInput = true;
      warnings.push("Docelowa powierzchnia musi być większa od zera.");
    }
    if (active.length === 0) {
      invalidInput = true;
      warnings.push("Zaznacz co najmniej jedną pozycję wspólnego zakresu.");
    }

    for (var index = 0; index < count; index += 1) {
      var name = offerName(index);
      var total = numberFrom("rk-quote-total-" + index);
      var area = numberFrom("rk-quote-area-" + index);
      var basis = document.getElementById("rk-quote-basis-" + index).value;
      var included = 0;
      var clear = 0;
      var correction = 0;
      var unresolved = [];

      if (total <= 0) {
        invalidInput = true;
        warnings.push(name + ": cena musi być większa od zera.");
      }
      if (area <= 0) {
        invalidInput = true;
        warnings.push(name + ": powierzchnia musi być większa od zera.");
      }
      if (targetArea > 0) {
        if (Math.abs(area - targetArea) > 0.05) {
          warnings.push(name + ": powierzchnia " + area.toLocaleString("pl-PL") + " m² różni się od docelowych " + targetArea.toLocaleString("pl-PL") + " m². Nie wykonano skalowania ceny.");
        }
      }
      if (basis !== targetBasis) {
        warnings.push(name + ": podstawa ceny nie odpowiada wspólnej podstawie " + (targetBasis === "gross" ? "brutto" : "netto") + ". Nie wykonano przeliczenia podatku.");
      }

      active.forEach(function (category) {
        var status = document.getElementById("rk-quote-status-" + index + "-" + category.key).value;
        if (status === "included") {
          included += 1;
          clear += 1;
        } else if (status === "excluded") {
          clear += 1;
          var cost = numberFrom("rk-quote-cost-" + category.key);
          if (cost > 0) {
            correction += cost;
          } else {
            unresolved.push(category.label + " — brak kwoty uzupełnienia");
            pushUnique(questions, name + ": " + category.question);
          }
        } else {
          unresolved.push(category.label + " — zakres niejasny");
          pushUnique(questions, name + ": " + category.question);
        }
      });

      if (unresolved.length > 0) {
        warnings.push(name + ": nierozstrzygnięte pozycje — " + unresolved.join(", ") + ".");
      }

      var areaMatches = false;
      if (targetArea > 0) {
        areaMatches = Math.abs(area - targetArea) <= 0.05;
      }
      var comparable = areaMatches;
      if (basis !== targetBasis) {
        comparable = false;
      }
      if (unresolved.length > 0) {
        comparable = false;
      }
      if (total <= 0) {
        comparable = false;
      }
      if (area <= 0) {
        comparable = false;
      }

      results.push({
        name: name,
        total: total,
        area: area,
        basis: basis,
        included: included,
        clear: clear,
        correction: correction,
        normalized: total + correction,
        unresolved: unresolved,
        comparable: comparable
      });
    }

    var allComparable = results.length > 0;
    results.forEach(function (resultItem) {
      if (!resultItem.comparable) {
        allComparable = false;
      }
    });
    if (invalidInput) {
      allComparable = false;
    }

    var resultBox = document.getElementById("rk-quote-result");
    var statusText = document.getElementById("rk-quote-result-status");
    var introText = document.getElementById("rk-quote-result-intro");
    resultBox.classList.remove("is-good");
    resultBox.classList.remove("is-stop");

    if (invalidInput) {
      resultBox.classList.add("is-stop");
      statusText.textContent = "Uzupełnij prawidłowe dane wejściowe";
      introText.textContent = "Co najmniej jedna wartość uniemożliwia wykonanie porównania.";
    } else if (allComparable) {
      resultBox.classList.add("is-good");
      if (results.length > 1) {
        var lowest = results[0];
        results.forEach(function (resultItem) {
          if (resultItem.normalized < lowest.normalized) {
            lowest = resultItem;
          }
        });
        statusText.textContent = "Oferty mają wspólną podstawę — najniższą znaną sumę ma " + lowest.name;
        introText.textContent = "To porównanie ceny i zadeklarowanego zakresu, nie rekomendacja wykonawcy ani ocena jakości technicznej.";
      } else {
        statusText.textContent = "Oferta ma rozstrzygnięty wybrany zakres";
        introText.textContent = "Możesz teraz ocenić dokumentację, parametry materiałów, warunki umowy i jakość wykonawcy.";
      }
    } else {
      resultBox.classList.add("is-stop");
      statusText.textContent = "Ofert nie można jeszcze uczciwie porównać";
      introText.textContent = "Wyjaśnij różnice metrażu, netto lub brutto i pozycje niejasne. Znana suma nie obejmuje kosztów, których nie podano.";
    }

    var resultOffers = document.getElementById("rk-quote-result-offers");
    resultOffers.textContent = "";
    results.forEach(function (resultItem) {
      var card = document.createElement("article");
      card.className = "rk-quote-result-offer";
      var heading = document.createElement("h4");
      heading.textContent = resultItem.name;
      card.appendChild(heading);
      var pricePerSquare = 0;
      if (resultItem.area > 0) {
        pricePerSquare = resultItem.total / resultItem.area;
      }
      var coverage = 0;
      var clarity = 0;
      if (active.length > 0) {
        coverage = Math.round((resultItem.included / active.length) * 100);
        clarity = Math.round((resultItem.clear / active.length) * 100);
      }
      card.appendChild(metric("Cena podana", money(resultItem.total)));
      card.appendChild(metric("Cena podana / m²", money(pricePerSquare)));
      card.appendChild(metric("Wliczony zakres", resultItem.included + "/" + active.length + " (" + coverage + "%)"));
      card.appendChild(metric("Jasność zakresu", resultItem.clear + "/" + active.length + " (" + clarity + "%)"));
      card.appendChild(metric("Znane uzupełnienia", money(resultItem.correction)));
      card.appendChild(metric("Suma po znanych dopłatach", money(resultItem.normalized)));
      card.appendChild(metric("Nierozstrzygnięte", String(resultItem.unresolved.length)));
      card.appendChild(metric("Podstawa", resultItem.area.toLocaleString("pl-PL") + " m² · " + (resultItem.basis === "gross" ? "brutto" : "netto")));
      resultOffers.appendChild(card);
    });

    var chartRows = document.getElementById("rk-quote-chart-rows");
    chartRows.textContent = "";
    var maxTotal = 1;
    results.forEach(function (resultItem) {
      if (resultItem.normalized > maxTotal) {
        maxTotal = resultItem.normalized;
      }
    });
    results.forEach(function (resultItem) {
      var row = document.createElement("div");
      row.className = "rk-quote-chart-row";
      var label = document.createElement("div");
      label.className = "rk-quote-chart-label";
      var labelName = document.createElement("span");
      labelName.textContent = resultItem.name;
      var labelValue = document.createElement("span");
      labelValue.textContent = money(resultItem.normalized);
      label.appendChild(labelName);
      label.appendChild(labelValue);
      var track = document.createElement("div");
      track.className = "rk-quote-chart-track";
      track.setAttribute("aria-label", resultItem.name + ": cena podana " + money(resultItem.total) + ", znane uzupełnienia " + money(resultItem.correction));
      var raw = document.createElement("div");
      raw.className = "rk-quote-chart-raw";
      raw.style.width = Math.max(0, (resultItem.total / maxTotal) * 100) + "%";
      var add = document.createElement("div");
      add.className = "rk-quote-chart-add";
      add.style.width = Math.max(0, (resultItem.correction / maxTotal) * 100) + "%";
      track.appendChild(raw);
      track.appendChild(add);
      row.appendChild(label);
      row.appendChild(track);
      chartRows.appendChild(row);
    });

    if (questions.length === 0) {
      questions.push("Poproś o potwierdzenie ilości, parametrów materiałów, terminów, gwarancji i procedury robót dodatkowych.");
    }
    if (allComparable) {
      warnings.push("Metraż, podstawa cen i wybrany zakres są formalnie porównywalne. Nadal sprawdź projekt, jakość, terminy, gwarancję i odpowiedzialność.");
    }
    warnings.push("Kwoty uzupełniające są założeniami użytkownika; analizator nie potwierdza cen rynkowych.");
    renderList("rk-quote-question-list", questions, "Brak pytań wygenerowanych przez zakres.");
    renderList("rk-quote-warning-list", warnings, "Nie wykryto formalnych różnic w danych.");
  }

  function resetAnalyzer() {
    document.getElementById("rk-quote-offer-count").value = "3";
    document.getElementById("rk-quote-target-area").value = "150";
    document.getElementById("rk-quote-target-basis").value = "gross";
    categories.forEach(function (category) {
      document.getElementById("rk-quote-target-" + category.key).checked = category.selected;
      document.getElementById("rk-quote-cost-" + category.key).value = String(category.cost);
    });
    offerDefaults.forEach(function (data, index) {
      document.getElementById("rk-quote-name-" + index).value = data.name;
      document.getElementById("rk-quote-total-" + index).value = String(data.total);
      document.getElementById("rk-quote-area-" + index).value = String(data.area);
      document.getElementById("rk-quote-basis-" + index).value = data.basis;
      categories.forEach(function (category) {
        document.getElementById("rk-quote-status-" + index + "-" + category.key).value = data.statuses[category.key];
      });
    });
    updateOfferVisibility();
    analyzeOffers();
  }

  renderScope();
  renderOffers();
  updateOfferVisibility();

  document.getElementById("rk-quote-offer-count").addEventListener("change", function () {
    updateOfferVisibility();
    analyzeOffers();
  });
  document.getElementById("rk-quote-run").addEventListener("click", analyzeOffers);
  document.getElementById("rk-quote-reset").addEventListener("click", resetAnalyzer);
  document.getElementById("rk-quote-analyzer").addEventListener("change", function (event) {
    if (event.target.id !== "rk-quote-offer-count") {
      analyzeOffers();
    }
  });
  document.getElementById("rk-quote-analyzer").addEventListener("input", function (event) {
    if (event.target.tagName === "INPUT") {
      analyzeOffers();
    }
  });

  showBasket("design");
  analyzeOffers();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">Wycena ogrzewania podłogowego wodnego – analizator ofert i pełnego budżetu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ile kosztuje 100 m² ogrzewania podłogowego?</title>
		<link>https://projekt-ogrzewania.pl/ile-kosztuje-100-m%c2%b2-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 01 Jan 2025 12:48:12 +0000</pubDate>
				<category><![CDATA[Cennik]]></category>
		<category><![CDATA[Ceny]]></category>
		<category><![CDATA[Ceny instalacji]]></category>
		<category><![CDATA[Koszt podłogówki]]></category>
		<category><![CDATA[Koszty instalacji]]></category>
		<category><![CDATA[Koszty materiałów grzewczych]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Planowanie budżetów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[darmowy projekt ogrzewania]]></category>
		<category><![CDATA[ile kosztuje ogrzewanie podłogowe]]></category>
		<category><![CDATA[instalacja ogrzewania]]></category>
		<category><![CDATA[koszty instalacji ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe 2025]]></category>
		<category><![CDATA[planowanie budżetów]]></category>
		<category><![CDATA[rozdzielacz do podłogówki]]></category>
		<category><![CDATA[rury do ogrzewania podłogowego]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<category><![CDATA[szafka do rozdzielacza]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1875</guid>

					<description><![CDATA[<p>Ile kosztuje 100 m² ogrzewania podłogowego? To pytanie nurtuje wielu inwestorów. W artykule szczegółowo omawiamy koszty materiałów i robocizny na 2025 rok. Dowiedz się, jakie wydatki uwzględnić, by zaplanować budżet na ogrzewanie podłogowe. Opisujemy kluczowe elementy, takie jak rury, rozdzielacz i szafka, a także podpowiadamy, jak skorzystać z darmowego projektu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-kosztuje-100-m%c2%b2-ogrzewania-podlogowego/">Ile kosztuje 100 m² ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
#rk-100-cost{--dark:#102536;--navy:#14384d;--blue:#078fbe;--cyan:#25c7d8;--cyan-soft:#e8fbff;--orange:#ff6a3d;--orange-soft:#fff1eb;--green:#16836b;--green-soft:#eaf8f3;--yellow:#e6ad2f;--yellow-soft:#fff8df;--red:#d94b3d;--red-soft:#fff0ee;--violet:#656fd4;--ink:#1f2c37;--text:#475967;--muted:#6b7e8a;--line:#d5e4eb;--soft:#f4f9fb;--white:#fff;width:100%;max-width:1180px;margin:34px auto 72px;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:18px;line-height:1.75}
#rk-100-cost,#rk-100-cost *{box-sizing:border-box}#rk-100-cost img,#rk-100-cost svg{display:block;max-width:100%}#rk-100-cost a{color:var(--blue);text-decoration-thickness:1px;text-underline-offset:3px}#rk-100-cost p{margin:0 0 18px}#rk-100-cost ul,#rk-100-cost ol{margin:0 0 20px;padding-left:24px}#rk-100-cost li+li{margin-top:8px}#rk-100-cost strong{color:var(--dark)}#rk-100-cost section[id]{scroll-margin-top:28px}
#rk-100-cost .rk100-shell{position:relative;overflow:hidden;background:var(--white);border:1px solid var(--line);border-radius:28px;box-shadow:0 24px 65px rgba(16,37,54,.10)}#rk-100-cost .rk100-progress-track{position:absolute;top:0;left:0;right:0;z-index:8;height:6px;background:rgba(255,255,255,.14)}#rk-100-cost .rk100-progress{width:0;height:100%;background:linear-gradient(90deg,var(--cyan),var(--orange))}
#rk-100-cost .rk100-hero{position:relative;overflow:hidden;color:#fff;background:radial-gradient(circle at 88% 18%,rgba(37,199,216,.24),transparent 29%),radial-gradient(circle at 8% 110%,rgba(255,106,61,.20),transparent 33%),linear-gradient(130deg,#0f2738 0%,#143e53 58%,#102536 100%)}#rk-100-cost .rk100-hero:after{content:"";position:absolute;top:-55%;right:-7%;width:310px;height:620px;border:34px solid rgba(255,255,255,.05);border-radius:50%;transform:rotate(-15deg)}#rk-100-cost .rk100-hero-inner{position:relative;z-index:2;padding:72px 72px 64px}#rk-100-cost .rk100-eyebrow,#rk-100-cost .rk100-kicker{display:inline-flex;align-items:center;gap:9px;color:var(--blue);font-size:.72rem;font-weight:900;letter-spacing:.08em;line-height:1.35;text-transform:uppercase}#rk-100-cost .rk100-eyebrow{color:#8cf3ff}#rk-100-cost .rk100-eyebrow b{width:9px;height:9px;border-radius:99px;background:var(--orange);box-shadow:0 0 0 7px rgba(255,106,61,.14)}#rk-100-cost .rk100-hero-title{max-width:990px;margin:18px 0 20px;color:#fff;font-size:clamp(2rem,4.5vw,4rem);font-weight:950;letter-spacing:-.045em;line-height:1.02}#rk-100-cost .rk100-hero-lead{max-width:920px;margin-bottom:28px;color:#dceef4;font-size:1.09rem;line-height:1.68}#rk-100-cost .rk100-meta{display:flex;flex-wrap:wrap;gap:11px 24px;color:#b9d5df;font-size:.76rem;font-weight:750}#rk-100-cost .rk100-meta span{display:inline-flex;align-items:center;gap:8px}#rk-100-cost .rk100-meta i{width:7px;height:7px;border-radius:99px;background:var(--cyan)}
#rk-100-cost .rk100-nav{padding:24px 34px 25px;border-bottom:1px solid var(--line);background:#fbfdfe}#rk-100-cost .rk100-nav strong{display:block;margin:0 0 12px;color:var(--muted);font-size:.68rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase}#rk-100-cost .rk100-nav-links{display:flex;flex-wrap:wrap;gap:8px}#rk-100-cost .rk100-nav a{display:inline-flex;align-items:center;min-height:39px;padding:8px 14px;color:var(--dark);font-size:.72rem;font-weight:850;line-height:1.25;text-decoration:none;background:#edf5f8;border:1px solid transparent;border-radius:999px;transition:.2s ease}#rk-100-cost .rk100-nav a:hover,#rk-100-cost .rk100-nav a:focus-visible{color:var(--blue);border-color:var(--cyan);background:var(--cyan-soft);transform:translateY(-1px)}
#rk-100-cost .rk100-section{padding:68px 72px;border-bottom:1px solid var(--line)}#rk-100-cost .rk100-section:nth-of-type(even){background:#fcfeff}#rk-100-cost h2{max-width:980px;margin:9px 0 21px;color:var(--dark);font-size:clamp(1.65rem,3.2vw,2.65rem);font-weight:950;letter-spacing:-.035em;line-height:1.12}#rk-100-cost h3{margin:0 0 10px;color:var(--dark);font-size:1.14rem;font-weight:900;letter-spacing:-.015em;line-height:1.28}#rk-100-cost h4{margin:0 0 8px;color:var(--dark);font-size:.92rem;font-weight:900;line-height:1.35}#rk-100-cost .rk100-intro{max-width:960px;color:var(--text);font-size:1.05rem}
#rk-100-cost .rk100-answer{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,.75fr);overflow:hidden;margin:30px 0;border:1px solid var(--line);border-radius:20px}#rk-100-cost .rk100-answer-main{padding:30px;background:var(--cyan-soft)}#rk-100-cost .rk100-answer-side{padding:30px;background:var(--dark)}#rk-100-cost .rk100-answer-side h3{color:#fff}#rk-100-cost .rk100-answer-side p{color:#d7e9ef}#rk-100-cost .rk100-number{display:block;margin:8px 0;color:#fff;font-size:1.62rem;font-weight:950;line-height:1.08}#rk-100-cost .rk100-grid-2,#rk-100-cost .rk100-grid-3,#rk-100-cost .rk100-grid-4{display:grid;gap:18px;margin-top:26px}#rk-100-cost .rk100-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}#rk-100-cost .rk100-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}#rk-100-cost .rk100-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}#rk-100-cost .rk100-card{padding:25px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 12px 30px rgba(16,37,54,.045)}#rk-100-cost .rk100-card p:last-child{margin-bottom:0}#rk-100-cost .rk100-card-label{display:block;margin-bottom:15px;color:var(--blue);font-size:.66rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}#rk-100-cost .rk100-card-price{display:block;margin:11px 0;color:var(--dark);font-size:1.35rem;font-weight:950;line-height:1.15}
#rk-100-cost .rk100-notice{margin:26px 0 0;padding:20px 22px;border:1px solid var(--line);border-left:5px solid var(--blue);border-radius:14px;background:var(--cyan-soft)}#rk-100-cost .rk100-notice.is-orange{border-left-color:var(--orange);background:var(--orange-soft)}#rk-100-cost .rk100-notice.is-green{border-left-color:var(--green);background:var(--green-soft)}#rk-100-cost .rk100-notice.is-yellow{border-left-color:var(--yellow);background:var(--yellow-soft)}#rk-100-cost .rk100-notice p:last-child{margin-bottom:0}#rk-100-cost .rk100-formula{margin:25px 0;padding:22px 25px;color:#dff4fa;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92rem;background:var(--dark);border-radius:14px;overflow-wrap:anywhere}
#rk-100-cost .rk100-tool{overflow:hidden;margin-top:30px;color:#eaf6fa;background:var(--dark);border:1px solid #305269;border-radius:24px;box-shadow:0 22px 46px rgba(16,37,54,.18)}#rk-100-cost .rk100-tool strong,#rk-100-cost .rk100-tool h3,#rk-100-cost .rk100-tool h4{color:#fff}#rk-100-cost .rk100-tool p{color:#c7dce4}#rk-100-cost .rk100-tool-head{display:flex;align-items:flex-start;justify-content:space-between;gap:26px;padding:30px 34px;background:linear-gradient(135deg,#14384d,#174d61);border-bottom:1px solid #31566c}#rk-100-cost .rk100-tool-head p{max-width:820px;margin:5px 0 0;font-size:.82rem}#rk-100-cost .rk100-reset{flex:0 0 auto;min-height:42px;padding:9px 16px;color:#dff8fc;font:inherit;font-size:.72rem;font-weight:850;cursor:pointer;border:1px solid #50778a;border-radius:999px;background:rgba(255,255,255,.06)}#rk-100-cost .rk100-input-block{padding:28px 34px;border-bottom:1px solid #31566c}#rk-100-cost .rk100-input-block:nth-child(odd){background:#112c3e}#rk-100-cost .rk100-input-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}#rk-100-cost .rk100-input-intro p{max-width:760px;margin:0;font-size:.70rem}#rk-100-cost .rk100-input-tag{flex:0 0 auto;padding:6px 10px;color:#8debf5;font-size:.58rem;font-weight:900;text-transform:uppercase;border:1px solid #3d687a;border-radius:999px}#rk-100-cost .rk100-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}#rk-100-cost .rk100-field{min-width:0}#rk-100-cost .rk100-field label{display:block;min-height:42px;margin-bottom:7px;color:#ecf8fb;font-size:.66rem;font-weight:850;line-height:1.35}#rk-100-cost .rk100-field input,#rk-100-cost .rk100-field select{width:100%;height:46px;margin:0;padding:9px 12px;color:var(--dark);font:inherit;font-size:.80rem;background:#fff;border:1px solid #a9c0cb;border-radius:9px;outline:none}#rk-100-cost .rk100-field input:focus,#rk-100-cost .rk100-field select:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(37,199,216,.16)}#rk-100-cost .rk100-field small{display:block;margin-top:5px;color:#8facb8;font-size:.56rem;line-height:1.45}#rk-100-cost .rk100-rates-note{margin:15px 0 0;color:#91adb8;font-size:.60rem}
#rk-100-cost .rk100-options{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}#rk-100-cost .rk100-option{position:relative;display:flex;align-items:flex-start;gap:9px;min-height:67px;padding:12px;color:#cfe2e9;font-size:.63rem;font-weight:800;line-height:1.4;cursor:pointer;background:#17384a;border:1px solid #3b6074;border-radius:11px}#rk-100-cost .rk100-option input{flex:0 0 auto;width:17px;height:17px;margin:2px 0 0;accent-color:var(--cyan)}#rk-100-cost .rk100-option span{display:block}#rk-100-cost .rk100-option small{display:block;margin-top:3px;color:#8facb8;font-size:.53rem;font-weight:650}
#rk-100-cost .rk100-live{padding:28px 34px;border-bottom:1px solid #31566c;background:#102b3c}#rk-100-cost .rk100-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}#rk-100-cost .rk100-summary-card{min-width:0;padding:16px 14px;background:#17384a;border:1px solid #3b6074;border-radius:13px}#rk-100-cost .rk100-summary-card span{display:block;min-height:34px;color:#9db9c4;font-size:.57rem;font-weight:800;line-height:1.35;text-transform:uppercase}#rk-100-cost .rk100-summary-card strong{display:block;margin-top:7px;color:#fff;font-size:.98rem;line-height:1.2;overflow-wrap:anywhere}
#rk-100-cost .rk100-scope-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-top:14px}#rk-100-cost .rk100-scope{padding:19px;background:#173344;border:1px solid #3d6073;border-radius:15px}#rk-100-cost .rk100-scope.is-main{border-color:var(--cyan);box-shadow:inset 0 0 0 1px rgba(37,199,216,.25)}#rk-100-cost .rk100-scope small{display:block;min-height:37px;color:#9db9c4;font-size:.58rem;font-weight:850;line-height:1.35;text-transform:uppercase}#rk-100-cost .rk100-scope b{display:block;margin:8px 0 5px;color:#fff;font-size:1.25rem;line-height:1.1}#rk-100-cost .rk100-scope span{display:block;color:#9bc0cc;font-size:.57rem;line-height:1.45}
#rk-100-cost .rk100-chart-card{margin:18px 34px;padding:24px;background:#173344;border:1px solid #3d6073;border-radius:17px}#rk-100-cost .rk100-chart-card>p{margin-bottom:16px;font-size:.70rem}#rk-100-cost .rk100-stack{display:flex;width:100%;height:32px;overflow:hidden;background:#27485a;border:1px solid #476b7d;border-radius:9px}#rk-100-cost .rk100-segment{width:0;min-width:0;height:100%;transition:width .35s ease}#rk-100-cost .rk100-segment.is-pipe{background:#26c7d8}#rk-100-cost .rk100-segment.is-system{background:#078fbe}#rk-100-cost .rk100-segment.is-labor{background:#ff6a3d}#rk-100-cost .rk100-segment.is-start{background:#e6ad2f}#rk-100-cost .rk100-segment.is-project{background:#16836b}#rk-100-cost .rk100-segment.is-auto{background:#656fd4}#rk-100-cost .rk100-segment.is-floor{background:#af6cc4}#rk-100-cost .rk100-segment.is-other{background:#8a9ba5}#rk-100-cost .rk100-legend{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px 13px;margin-top:15px}#rk-100-cost .rk100-legend-item{display:grid;grid-template-columns:10px minmax(0,1fr);gap:8px;align-items:start;color:#bcd2da;font-size:.59rem;line-height:1.4}#rk-100-cost .rk100-dot{width:10px;height:10px;margin-top:4px;border-radius:3px}#rk-100-cost .rk100-legend-item b{display:block;color:#fff;font-size:.62rem}#rk-100-cost .rk100-dot.is-pipe{background:#26c7d8}#rk-100-cost .rk100-dot.is-system{background:#078fbe}#rk-100-cost .rk100-dot.is-labor{background:#ff6a3d}#rk-100-cost .rk100-dot.is-start{background:#e6ad2f}#rk-100-cost .rk100-dot.is-project{background:#16836b}#rk-100-cost .rk100-dot.is-auto{background:#656fd4}#rk-100-cost .rk100-dot.is-floor{background:#af6cc4}#rk-100-cost .rk100-dot.is-other{background:#8a9ba5}
#rk-100-cost .rk100-output-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:0 34px 18px;align-items:stretch}#rk-100-cost .rk100-output-card{min-width:0;padding:22px;background:#173344;border:1px solid #3d6073;border-radius:17px}#rk-100-cost .rk100-output-card>p{margin-bottom:15px;font-size:.70rem}#rk-100-cost .rk100-quantity-list,#rk-100-cost .rk100-missing-list{display:grid;gap:8px}#rk-100-cost .rk100-quantity{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 12px;color:#bcd2da;font-size:.63rem;background:#102b3c;border:1px solid #35576a;border-radius:9px}#rk-100-cost .rk100-quantity b{color:#fff;text-align:right}#rk-100-cost .rk100-missing{position:relative;padding:11px 12px 11px 38px;color:#cfe2e9;font-size:.63rem;background:#102b3c;border:1px solid #35576a;border-radius:9px}#rk-100-cost .rk100-missing:before{content:"!";position:absolute;left:12px;top:11px;display:grid;place-items:center;width:19px;height:19px;color:#fff;font-size:.58rem;font-weight:950;background:var(--orange);border-radius:50%}#rk-100-cost .rk100-missing.is-complete:before{content:"✓";background:var(--green)}
#rk-100-cost .rk100-offer-checks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:16px}#rk-100-cost .rk100-output-card .rk100-offer-checks{grid-template-columns:repeat(2,minmax(0,1fr))}#rk-100-cost .rk100-offer-check{display:flex;align-items:flex-start;gap:8px;padding:11px;color:#cee2e9;font-size:.59rem;line-height:1.4;background:#102b3c;border:1px solid #35576a;border-radius:9px}#rk-100-cost .rk100-offer-check input{flex:0 0 auto;width:16px;height:16px;margin:1px 0 0;accent-color:var(--green)}
#rk-100-cost .rk100-diagnostics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;padding:0 34px 30px}#rk-100-cost .rk100-diagnostic{padding:18px;background:#173344;border:1px solid #3d6073;border-left:5px solid var(--cyan);border-radius:13px}#rk-100-cost .rk100-diagnostic.is-warn{border-left-color:var(--orange)}#rk-100-cost .rk100-diagnostic.is-alert{border-left-color:var(--red)}#rk-100-cost .rk100-diagnostic.is-ok{border-left-color:var(--green)}#rk-100-cost .rk100-diagnostic span{display:block;margin-bottom:6px;color:#8facb8;font-size:.56rem;font-weight:850;letter-spacing:.05em;text-transform:uppercase}#rk-100-cost .rk100-diagnostic strong{display:block;margin-bottom:7px;font-size:.83rem}#rk-100-cost .rk100-diagnostic p{margin:0;color:#bdd1d9;font-size:.65rem;line-height:1.55}#rk-100-cost .rk100-tool-note{margin:0;padding:0 34px 28px;color:#91adb8;font-size:.60rem}
#rk-100-cost .rk100-cta{position:relative;overflow:hidden;margin:0;padding:46px 54px;color:#fff;background:linear-gradient(135deg,#102536,#165267)}#rk-100-cost .rk100-cta:after{content:"";position:absolute;right:-90px;bottom:-120px;width:310px;height:310px;border:34px solid rgba(37,199,216,.10);border-radius:50%}#rk-100-cost .rk100-cta>*{position:relative;z-index:2}#rk-100-cost .rk100-cta h2{color:#fff}#rk-100-cost .rk100-cta p{max-width:930px;color:#d6e8ee}#rk-100-cost .rk100-cta-button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;margin-top:10px;padding:13px 23px;color:#fff!important;font-size:.82rem;font-weight:950;line-height:1.25;text-align:center;text-decoration:none!important;background:linear-gradient(135deg,var(--orange),#ff8a46);border:1px solid rgba(255,255,255,.22);border-radius:11px;box-shadow:0 12px 26px rgba(255,106,61,.24);transition:.2s ease}#rk-100-cost .rk100-cta-button:hover{transform:translateY(-2px)}#rk-100-cost .rk100-disclosure{display:block;max-width:880px;margin-top:12px;color:#9ebbc6;font-size:.60rem}
#rk-100-cost .rk100-table-wrap{margin-top:28px}#rk-100-cost .rk100-table{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden;font-size:.81rem;border:1px solid var(--line);border-radius:16px}#rk-100-cost .rk100-table th,#rk-100-cost .rk100-table td{padding:15px 16px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}#rk-100-cost .rk100-table th{color:#fff;font-size:.68rem;line-height:1.35;background:var(--dark)}#rk-100-cost .rk100-table td{color:var(--text);background:#fff}#rk-100-cost .rk100-table tbody tr:last-child td{border-bottom:0}#rk-100-cost .rk100-table td strong{display:block}#rk-100-cost .rk100-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin-top:26px}#rk-100-cost .rk100-checkitem{position:relative;padding:15px 16px 15px 47px;color:var(--text);font-size:.80rem;background:#fff;border:1px solid var(--line);border-radius:12px}#rk-100-cost .rk100-checkitem:before{content:"✓";position:absolute;left:15px;top:14px;display:grid;place-items:center;width:23px;height:23px;color:#fff;font-size:.65rem;font-weight:950;background:var(--green);border-radius:99px}#rk-100-cost .rk100-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:26px}#rk-100-cost .rk100-step{position:relative;padding:52px 21px 21px;background:#fff;border:1px solid var(--line);border-radius:15px}#rk-100-cost .rk100-step:before{content:attr(data-step);position:absolute;left:20px;top:18px;color:var(--blue);font-size:.67rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}#rk-100-cost .rk100-step p{margin:0;font-size:.80rem}
#rk-100-cost .rk100-faq{display:grid;gap:11px;margin-top:26px}#rk-100-cost .rk100-faq details{overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:13px}#rk-100-cost .rk100-faq summary{position:relative;padding:19px 56px 19px 20px;color:var(--dark);font-size:.87rem;font-weight:900;cursor:pointer;list-style:none}#rk-100-cost .rk100-faq summary::-webkit-details-marker{display:none}#rk-100-cost .rk100-faq summary:after{content:"+";position:absolute;right:18px;top:50%;display:grid;place-items:center;width:27px;height:27px;color:var(--blue);font-size:1.1rem;background:var(--cyan-soft);border-radius:99px;transform:translateY(-50%)}#rk-100-cost .rk100-faq details[open] summary:after{content:"−"}#rk-100-cost .rk100-faq-answer{padding:0 20px 19px;color:var(--text);font-size:.83rem}#rk-100-cost .rk100-source-box{margin-top:25px;padding:25px;background:var(--soft);border:1px solid var(--line);border-radius:15px}#rk-100-cost .rk100-update{margin-top:15px;color:var(--muted);font-size:.67rem;font-weight:800}
#rk-100-cost .rk100-author{margin:0;background:#f7fbfd;border-bottom:1px solid var(--line)}#rk-100-cost .rk100-author>input{position:absolute;opacity:0;pointer-events:none}#rk-100-cost .rk100-author-head{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:38px 52px 24px}#rk-100-cost .rk100-author-head h2{margin-bottom:5px}#rk-100-cost .rk100-author-head p{margin:0;color:var(--muted);font-size:.77rem}#rk-100-cost .rk100-author-mark{color:var(--blue);font-size:.64rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}#rk-100-cost .rk100-author-layout{display:grid;grid-template-columns:300px minmax(0,1fr);border-top:1px solid var(--line)}#rk-100-cost .rk100-author-side{padding:28px;text-align:center;background:var(--dark)}#rk-100-cost .rk100-author-photo{width:150px;height:150px;margin:0 auto 17px;overflow:hidden;border:5px solid rgba(255,255,255,.12);border-radius:50%}#rk-100-cost .rk100-author-photo img{width:100%;height:100%;object-fit:cover}#rk-100-cost .rk100-author-name{color:#fff;font-size:1.1rem;font-weight:950}#rk-100-cost .rk100-author-role{margin-top:6px;color:#afc9d3;font-size:.67rem;line-height:1.55}#rk-100-cost .rk100-author-social-label{margin-top:24px;color:#87a6b2;font-size:.57rem;font-weight:900;letter-spacing:.05em;text-transform:uppercase}#rk-100-cost .rk100-author-social{display:flex;justify-content:center;gap:9px;margin-top:10px}#rk-100-cost .rk100-author-social a{display:grid;place-items:center;width:41px;height:41px;color:#cde2e9;border:1px solid #446577;border-radius:50%}#rk-100-cost .rk100-author-social svg{width:18px;height:18px;fill:currentColor}#rk-100-cost .rk100-author-main{padding:28px 34px 34px}#rk-100-cost .rk100-author-quote{position:relative;margin:0 0 23px;padding:23px 24px 23px 63px;background:#fff;border:1px solid var(--line);border-radius:14px}#rk-100-cost .rk100-author-quote:before{content:"“";position:absolute;left:20px;top:2px;color:var(--cyan);font-family:Georgia,serif;font-size:4rem;line-height:1}#rk-100-cost .rk100-author-quote p{margin:0;color:var(--dark);font-size:.86rem;font-weight:750}#rk-100-cost .rk100-author-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}#rk-100-cost .rk100-author-tab{padding:9px 13px;color:var(--muted);font-size:.62rem;font-weight:900;cursor:pointer;background:#e8f1f5;border-radius:999px}#rk-100-cost .rk100-author-panel{display:none;color:var(--text);font-size:.79rem}#rk-100-cost #rk100-author-about:checked~.rk100-author-layout .rk100-panel-about,#rk-100-cost #rk100-author-exp:checked~.rk100-author-layout .rk100-panel-exp,#rk-100-cost #rk100-author-sites:checked~.rk100-author-layout .rk100-panel-sites{display:block}#rk-100-cost #rk100-author-about:checked~.rk100-author-layout label[for="rk100-author-about"],#rk-100-cost #rk100-author-exp:checked~.rk100-author-layout label[for="rk100-author-exp"],#rk-100-cost #rk100-author-sites:checked~.rk100-author-layout label[for="rk100-author-sites"]{color:#fff;background:var(--blue)}#rk-100-cost .rk100-author-lead{color:var(--dark);font-size:.88rem;font-weight:750}#rk-100-cost .rk100-author-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:20px 0}#rk-100-cost .rk100-author-fact{padding:14px 15px;background:#fff;border:1px solid var(--line);border-radius:11px}#rk-100-cost .rk100-author-fact b{display:block;margin-bottom:4px;color:var(--blue);font-size:.58rem;letter-spacing:.05em;text-transform:uppercase}#rk-100-cost .rk100-author-fact span{display:block;color:var(--dark);font-size:.71rem;font-weight:800;line-height:1.45}#rk-100-cost .rk100-author-topics{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0 18px;padding:0;list-style:none}#rk-100-cost .rk100-author-topics li{margin:0;padding:7px 10px;color:var(--navy);font-size:.61rem;font-weight:800;background:var(--cyan-soft);border-radius:999px}#rk-100-cost .rk100-author-method{margin-top:17px;padding:15px 17px;background:var(--green-soft);border-left:4px solid var(--green);border-radius:10px}#rk-100-cost .rk100-author-method strong{display:block;margin-bottom:4px;font-size:.68rem}#rk-100-cost .rk100-author-method p{margin:0;font-size:.70rem;line-height:1.55}#rk-100-cost .rk100-site-links{display:flex;flex-wrap:wrap;gap:9px}#rk-100-cost .rk100-site-links a{padding:8px 12px;font-size:.65rem;font-weight:850;text-decoration:none;background:var(--cyan-soft);border-radius:999px}#rk-100-cost .rk100-final-cta{padding-top:58px;padding-bottom:58px}
@media(max-width:980px){#rk-100-cost .rk100-hero-inner,#rk-100-cost .rk100-section{padding-left:42px;padding-right:42px}#rk-100-cost .rk100-fields{grid-template-columns:repeat(2,minmax(0,1fr))}#rk-100-cost .rk100-options{grid-template-columns:repeat(3,minmax(0,1fr))}#rk-100-cost .rk100-offer-checks{grid-template-columns:repeat(3,minmax(0,1fr))}#rk-100-cost .rk100-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}#rk-100-cost .rk100-grid-3,#rk-100-cost .rk100-steps{grid-template-columns:repeat(2,minmax(0,1fr))}#rk-100-cost .rk100-author-layout{grid-template-columns:255px minmax(0,1fr)}}
@media(max-width:760px){#rk-100-cost{margin:18px auto 46px;font-size:16px}#rk-100-cost .rk100-shell{border-radius:18px}#rk-100-cost .rk100-hero-inner{padding:54px 24px 42px}#rk-100-cost .rk100-hero-title{font-size:clamp(2rem,11vw,3rem)}#rk-100-cost .rk100-nav{padding:20px 18px}#rk-100-cost .rk100-nav a{min-height:36px;padding:7px 11px;font-size:.66rem}#rk-100-cost .rk100-section{padding:48px 22px}#rk-100-cost .rk100-answer,#rk-100-cost .rk100-grid-2,#rk-100-cost .rk100-grid-3,#rk-100-cost .rk100-grid-4,#rk-100-cost .rk100-steps,#rk-100-cost .rk100-output-grid,#rk-100-cost .rk100-diagnostics,#rk-100-cost .rk100-author-layout{grid-template-columns:1fr}#rk-100-cost .rk100-tool-head,#rk-100-cost .rk100-input-intro{display:block}#rk-100-cost .rk100-tool-head{padding:25px 20px}#rk-100-cost .rk100-reset{margin-top:8px}#rk-100-cost .rk100-input-block,#rk-100-cost .rk100-live{padding-left:20px;padding-right:20px}#rk-100-cost .rk100-fields,#rk-100-cost .rk100-options,#rk-100-cost .rk100-offer-checks{grid-template-columns:1fr}#rk-100-cost .rk100-field label{min-height:0}#rk-100-cost .rk100-input-tag{display:inline-block;margin-top:10px}#rk-100-cost .rk100-summary{grid-template-columns:repeat(2,minmax(0,1fr))}#rk-100-cost .rk100-scope-grid{grid-template-columns:1fr}#rk-100-cost .rk100-chart-card{margin-left:20px;margin-right:20px}#rk-100-cost .rk100-legend{grid-template-columns:repeat(2,minmax(0,1fr))}#rk-100-cost .rk100-output-grid,#rk-100-cost .rk100-diagnostics{padding-left:20px;padding-right:20px}#rk-100-cost .rk100-tool-note{padding-left:20px;padding-right:20px}#rk-100-cost .rk100-cta{padding:42px 24px}#rk-100-cost .rk100-cta-button{width:100%}#rk-100-cost .rk100-author-head{display:block;padding:34px 22px 22px}#rk-100-cost .rk100-author-main{padding:24px 20px}#rk-100-cost .rk100-author-facts{grid-template-columns:1fr}#rk-100-cost .rk100-table{border:0;background:transparent}#rk-100-cost .rk100-table thead{display:none}#rk-100-cost .rk100-table tbody,#rk-100-cost .rk100-table tr,#rk-100-cost .rk100-table td{display:block;width:100%}#rk-100-cost .rk100-table tr{overflow:hidden;margin-bottom:14px;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 22px rgba(16,37,54,.05)}#rk-100-cost .rk100-table td{display:grid;grid-template-columns:minmax(105px,.75fr) minmax(0,1.25fr);gap:13px;padding:13px 15px;border-bottom:1px solid var(--line)}#rk-100-cost .rk100-table td:before{content:attr(data-label);color:var(--muted);font-size:.61rem;font-weight:900;line-height:1.35;text-transform:uppercase}#rk-100-cost .rk100-table td:last-child{border-bottom:0}}
@media(max-width:420px){#rk-100-cost .rk100-summary,#rk-100-cost .rk100-legend{grid-template-columns:1fr}#rk-100-cost .rk100-table td{grid-template-columns:1fr;gap:4px}}
</style>

<div id="rk-100-cost">
  <article class="rk100-shell">
    <div class="rk100-progress-track" aria-hidden="true"><div class="rk100-progress" id="rk100-progress"></div></div>

    <header class="rk100-hero">
      <div class="rk100-hero-inner">
        <span class="rk100-eyebrow"><b></b> Budżet inwestycji bez mieszania zakresów</span>
        <div class="rk100-hero-title">100 m² podłogówki może oznaczać trzy zupełnie różne ceny</div>
        <p class="rk100-hero-lead">Policz osobno materiały hydrauliczne, montaż instalacji oraz kompletną konstrukcję ogrzewanej podłogi. Zmieniaj metraż, ilość rury i każdą stawkę — wynik nie udaje uniwersalnego cennika.</p>
        <div class="rk100-meta"><span><i></i> Aktualizacja: 30 sierpnia 2026</span><span><i></i> Stawki edytowalne</span><span><i></i> Trzy zakresy kosztu</span><span><i></i> Kalkulator i kontrola oferty</span></div>
      </div>
    </header>

    <nav class="rk100-nav" aria-label="Skróty do części artykułu">
      <strong>Przejdź bezpośrednio do sekcji</strong>
      <div class="rk100-nav-links">
        <a href="#rk100-answer">Szybka odpowiedź</a><a href="#rk100-area-meaning">Co oznacza 100 m²?</a><a href="#rk100-scopes">Trzy zakresy</a><a href="#rk100-calculator">Kalkulator</a><a href="#rk100-result">Jak czytać wynik?</a><a href="#rk100-pipe">Rury</a><a href="#rk100-manifold">Rozdzielacz</a><a href="#rk100-labor">Robocizna</a><a href="#rk100-insulation">Izolacja</a><a href="#rk100-screed">Jastrych</a><a href="#rk100-automation">Automatyka</a><a href="#rk100-distribution">Magistrale i źródło</a><a href="#rk100-spacing">Rozstaw</a><a href="#rk100-active-area">Powierzchnia czynna</a><a href="#rk100-loops">Pętle</a><a href="#rk100-variants">Wariant budowy</a><a href="#rk100-offers">Porównanie ofert</a><a href="#rk100-exclusions">Wyłączenia</a><a href="#rk100-project">Wpływ projektu</a><a href="#rk100-checklist">Checklista</a><a href="#rk100-faq">FAQ</a><a href="#rk100-sources">Źródła</a>
      </div>
    </nav>

    <section class="rk100-section" id="rk100-answer">
      <span class="rk100-kicker">Najkrótsza odpowiedź</span>
      <h2>Ile kosztuje 100 m² ogrzewania podłogowego?</h2>
      <p class="rk100-intro"><strong>Nie istnieje jedna technicznie poprawna cena za 100 m² podłogówki</strong>, dopóki nie wiadomo, czy wycena obejmuje tylko rury i rozdzielacz, gotową instalację hydrauliczną, czy również izolację, automatykę i jastrych.</p>
      <div class="rk100-answer">
        <div class="rk100-answer-main">
          <h3>Przejrzysty model odniesienia</h3>
          <p>Dla domu o powierzchni całkowitej 100 m², powierzchni ogrzewanej 92 m² i powierzchni czynnej 82 m² kalkulator startuje od około 709 m rury oraz 8 orientacyjnych pętli. Przy wpisanych stawkach przykładowych daje to:</p>
          <ul><li>około <strong>6171 zł</strong> za podstawowe materiały hydrauliczne,</li><li>około <strong>10 161 zł</strong> za materiały, montaż, podłączenie i próbę,</li><li>około <strong>23 511 zł</strong> po przykładowym doliczeniu projektu, automatyki, izolacji i jastrychu.</li></ul>
          <p>To <strong>jawne obliczenie modelowe</strong>, nie średnia rynkowa ani oferta. Każdą wartość można zmienić w narzędziu.</p>
        </div>
        <aside class="rk100-answer-side">
          <h3>Najpierw zakres, później cena</h3>
          <span class="rk100-number">100 m² ≠ 100 m² rury</span>
          <p>Od powierzchni całkowitej trzeba odróżnić powierzchnię ogrzewaną i rzeczywiście czynną. Dopiero ta ostatnia pozwala wstępnie policzyć ilość przewodu.</p>
        </aside>
      </div>
      <div class="rk100-notice is-orange"><p><strong>Ważne:</strong> aktualizowanie dawnej ceny jednym procentem nie tworzy wiarygodnej wyceny. GUS podał, że w I kwartale 2026 r. ceny robót budowlanych specjalistycznych wzrosły o 1,7% względem poprzedniego kwartału, ale jest to wskaźnik grupy robót, a nie cennik konkretnej instalacji.</p></div>
    </section>

    <section class="rk100-section" id="rk100-area-meaning">
      <span class="rk100-kicker">Trzy różne powierzchnie</span>
      <h2>Co naprawdę oznacza „100 m² podłogówki”?</h2>
      <p class="rk100-intro">W kosztorysie trzeba nazwać podstawę każdej pozycji. Jeden wykonawca może liczyć robociznę od powierzchni całkowitej, drugi od ogrzewanej, a ilość rury i tak zależy od powierzchni czynnej oraz dobiegów.</p>
      <div class="rk100-grid-3">
        <article class="rk100-card"><span class="rk100-card-label">Powierzchnia całkowita</span><h3>Rzut objęty inwestycją</h3><p>Może obejmować ściany, schody, garaż, zabudowę lub pomieszczenia bez ogrzewania podłogowego. Jest przydatna przy części prac ogólnobudowlanych, lecz nie wyznacza automatycznie ilości rury.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Powierzchnia ogrzewana</span><h3>Pomieszczenia z podłogówką</h3><p>Obejmuje pomieszczenia przewidziane do ogrzewania płaszczyznowego. Może być podstawą rozliczenia robocizny, jeśli umowa jasno tak stanowi.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Powierzchnia czynna</span><h3>Pole, w którym faktycznie leży rura</h3><p>Pomniejsza się ją o trwałą zabudowę i inne wyłączone fragmenty. To od niej, rozstawu i geometrii zaczyna się szacowanie długości przewodu.</p></article>
      </div>
      <div class="rk100-formula">długość orientacyjna rury = (powierzchnia czynna × zużycie rury na m² + dobiegi) × zapas materiałowy</div>
    </section>

    <section class="rk100-section" id="rk100-scopes">
      <span class="rk100-kicker">Porównuj porównywalne</span>
      <h2>Trzy zakresy kosztu ogrzewania podłogowego</h2>
      <p class="rk100-intro">Największa różnica w internetowych „cenach za m²” często nie wynika ze stawki, lecz z innego zakresu. Dlatego ten artykuł i kalkulator pokazują trzy osobne sumy.</p>
      <div class="rk100-grid-3">
        <article class="rk100-card"><span class="rk100-card-label">Zakres 1</span><h3>Materiały hydrauliczne</h3><p>Rura, rozdzielacz, szafka oraz elementy systemowe i montażowe. Bez robocizny, automatyki, izolacji, jastrychu i źródła ciepła.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Zakres 2</span><h3>Wykonana instalacja</h3><p>Materiały hydrauliczne, ułożenie rur, podłączenie rozdzielacza, próba i podstawowe uruchomienie w zakresie wpisanym do narzędzia.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Zakres 3</span><h3>Kompletna ogrzewana podłoga</h3><p>Instalacja oraz zaznaczone dodatki: projekt, automatyka, izolacja, jastrych i inne koszty. Nadal bez elementów niewpisanych w kalkulatorze.</p></article>
      </div>
    </section>

    <section class="rk100-section" id="rk100-calculator">
      <span class="rk100-kicker">Narzędzie interaktywne</span>
      <h2>Kalkulator kosztu podłogówki dla 100 m² i dowolnego metrażu</h2>
      <p class="rk100-intro">Wpisz rzeczywiste powierzchnie, założenia materiałowe i ceny brutto z własnych ofert. Narzędzie nie pobiera cenników sprzedawców — dzięki temu wiadomo, z jakich liczb powstał wynik.</p>

      <div class="rk100-tool" id="rk100-tool">
        <div class="rk100-tool-head">
          <div><h3>Policz trzy zakresy i sprawdź kompletność oferty</h3><p>Najpierw wyznacz orientacyjne ilości, następnie wpisz ceny jednostkowe. Opcjonalne warstwy można włączać oddzielnie, bez ukrywania ich w jednej stawce za m².</p></div>
          <button class="rk100-reset" type="button" id="rk100-reset">Przywróć przykład 100 m²</button>
        </div>

        <div class="rk100-input-block">
          <div class="rk100-input-intro"><div><h4>1. Powierzchnie i układ instalacji</h4><p>Powierzchnia czynna nie może być większa od ogrzewanej, a ogrzewana od całkowitej. Długość i liczba pętli pozostają oszacowaniem budżetowym.</p></div><span class="rk100-input-tag">Geometria</span></div>
          <div class="rk100-fields">
            <div class="rk100-field"><label for="rk100-total-area">Powierzchnia całkowita [m²]</label><input id="rk100-total-area" type="number" min="1" max="2000" step="1" value="100" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-heated-area">Powierzchnia ogrzewana [m²]</label><input id="rk100-heated-area" type="number" min="1" max="2000" step="1" value="92" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-active-area-input">Powierzchnia czynna z rurą [m²]</label><input id="rk100-active-area-input" type="number" min="1" max="2000" step="1" value="82" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-manifolds">Liczba rozdzielaczy [szt.]</label><input id="rk100-manifolds" type="number" min="1" max="20" step="1" value="1" inputmode="numeric"></div>
            <div class="rk100-field"><label for="rk100-pipe-density">Zużycie rury w polu [m/m²]</label><input id="rk100-pipe-density" type="number" min="2" max="25" step="0.1" value="7.5" inputmode="decimal"><small>Wpisz wartość z układu lub projektu, nie wybieraj jej wyłącznie ze źródła ciepła.</small></div>
            <div class="rk100-field"><label for="rk100-approaches">Łączne dobiegi [m]</label><input id="rk100-approaches" type="number" min="0" max="3000" step="1" value="60" inputmode="decimal"><small>Zasilania i powroty od rozdzielacza do pól grzewczych.</small></div>
            <div class="rk100-field"><label for="rk100-loop-limit">Długość modelowa jednej pętli [m]</label><input id="rk100-loop-limit" type="number" min="20" max="250" step="1" value="90" inputmode="decimal"><small>To parametr budżetowy, nie automatyczny limit projektowy.</small></div>
            <div class="rk100-field"><label for="rk100-reserve">Zapas materiałowy [%]</label><input id="rk100-reserve" type="number" min="0" max="30" step="0.5" value="5" inputmode="decimal"></div>
          </div>
        </div>

        <div class="rk100-input-block">
          <div class="rk100-input-intro"><div><h4>2. Ceny jednostkowe brutto</h4><p>Wartości startowe służą wyłącznie do pokazania działania. Zastąp je aktualną ofertą materiałową i wykonawczą dla swojej lokalizacji.</p></div><span class="rk100-input-tag">Edytowalne stawki</span></div>
          <div class="rk100-fields">
            <div class="rk100-field"><label for="rk100-pipe-rate">Rura [zł/m]</label><input id="rk100-pipe-rate" type="number" min="0" max="200" step="0.01" value="3.91" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-manifold-rate">Rozdzielacz [zł/szt.]</label><input id="rk100-manifold-rate" type="number" min="0" max="100000" step="10" value="1400" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-cabinet-rate">Szafka [zł/szt.]</label><input id="rk100-cabinet-rate" type="number" min="0" max="50000" step="10" value="400" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-system-rate">Materiały systemowe [zł/ryczałt]</label><input id="rk100-system-rate" type="number" min="0" max="500000" step="10" value="1600" inputmode="decimal"><small>M.in. mocowanie, przyłącza i elementy opisane w ofercie.</small></div>
            <div class="rk100-field"><label for="rk100-labor-rate">Układanie i montaż [zł/m² ogrz.]</label><input id="rk100-labor-rate" type="number" min="0" max="1000" step="0.5" value="32.5" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-manifold-labor-rate">Montaż rozdzielacza [zł/szt.]</label><input id="rk100-manifold-labor-rate" type="number" min="0" max="50000" step="10" value="400" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-test-rate">Próba i uruchomienie [zł/ryczałt]</label><input id="rk100-test-rate" type="number" min="0" max="100000" step="10" value="600" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-project-rate">Projekt [zł/ryczałt]</label><input id="rk100-project-rate" type="number" min="0" max="100000" step="10" value="850" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-automation-rate">Automatyka [zł/ryczałt]</label><input id="rk100-automation-rate" type="number" min="0" max="500000" step="10" value="3500" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-insulation-rate">Izolacja z ułożeniem [zł/m² całk.]</label><input id="rk100-insulation-rate" type="number" min="0" max="1000" step="0.5" value="35" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-screed-rate">Jastrych [zł/m² całk.]</label><input id="rk100-screed-rate" type="number" min="0" max="1000" step="0.5" value="55" inputmode="decimal"></div>
            <div class="rk100-field"><label for="rk100-other-rate">Pozostałe prace [zł/ryczałt]</label><input id="rk100-other-rate" type="number" min="0" max="1000000" step="10" value="0" inputmode="decimal"></div>
          </div>
          <p class="rk100-rates-note">Kalkulator nie rozpoznaje automatycznie kwot netto i brutto. Przed porównaniem sprowadź wszystkie stawki do tej samej podstawy podatkowej.</p>
        </div>

        <div class="rk100-input-block">
          <div class="rk100-input-intro"><div><h4>3. Elementy doliczane do pełnego zakresu</h4><p>Włączenie pozycji nie oznacza, że jest potrzebna w każdym budynku. Pokazuje jedynie jej wpływ na budżet przy wpisanej stawce.</p></div><span class="rk100-input-tag">Zakres pełny</span></div>
          <div class="rk100-options">
            <label class="rk100-option"><input id="rk100-add-project" type="checkbox"><span>Projekt indywidualny<small>ryczałt wpisany wyżej</small></span></label>
            <label class="rk100-option"><input id="rk100-add-automation" type="checkbox"><span>Automatyka strefowa<small>sterowanie, siłowniki i osprzęt</small></span></label>
            <label class="rk100-option"><input id="rk100-add-insulation" type="checkbox"><span>Izolacja podłogi<small>liczona od powierzchni całkowitej</small></span></label>
            <label class="rk100-option"><input id="rk100-add-screed" type="checkbox"><span>Jastrych<small>liczony od powierzchni całkowitej</small></span></label>
            <label class="rk100-option"><input id="rk100-add-other" type="checkbox"><span>Pozostałe prace<small>magistrale, kotłownia lub pozycja własna</small></span></label>
          </div>
        </div>

        <div class="rk100-live" aria-live="polite">
          <div class="rk100-summary">
            <div class="rk100-summary-card"><span>Orientacyjna ilość rury</span><strong id="rk100-pipe-length">709 m</strong></div>
            <div class="rk100-summary-card"><span>Modelowa liczba pętli</span><strong id="rk100-loop-count">8 szt.</strong></div>
            <div class="rk100-summary-card"><span>Powierzchnia czynna</span><strong id="rk100-active-share">82,0%</strong></div>
            <div class="rk100-summary-card"><span>Pełny zakres na m² całk.</span><strong id="rk100-full-per-m2">101,61 zł/m²</strong></div>
          </div>
          <div class="rk100-scope-grid">
            <div class="rk100-scope"><small>1. Podstawowe materiały hydrauliczne</small><b id="rk100-material-total">6171 zł</b><span id="rk100-material-per">61,71 zł/m² powierzchni całkowitej</span></div>
            <div class="rk100-scope is-main"><small>2. Instalacja z montażem i próbą</small><b id="rk100-installed-total">10 161 zł</b><span id="rk100-installed-per">101,61 zł/m² powierzchni całkowitej</span></div>
            <div class="rk100-scope"><small>3. Pełny zaznaczony zakres</small><b id="rk100-full-total">10 161 zł</b><span id="rk100-full-note">Brak włączonych elementów dodatkowych</span></div>
          </div>
        </div>

        <div class="rk100-chart-card" role="img" aria-label="Dynamiczny wykres udziału kategorii w pełnym koszcie">
          <h4>Dynamiczna struktura kosztu</h4>
          <p>Szerokość segmentu pokazuje udział kategorii w aktualnej sumie pełnego zakresu. Włącz dodatkowe pozycje, aby zobaczyć, jak zmienia się budżet.</p>
          <div class="rk100-stack" aria-hidden="true"><span class="rk100-segment is-pipe" id="rk100-seg-pipe"></span><span class="rk100-segment is-system" id="rk100-seg-system"></span><span class="rk100-segment is-labor" id="rk100-seg-labor"></span><span class="rk100-segment is-start" id="rk100-seg-start"></span><span class="rk100-segment is-project" id="rk100-seg-project"></span><span class="rk100-segment is-auto" id="rk100-seg-auto"></span><span class="rk100-segment is-floor" id="rk100-seg-floor"></span><span class="rk100-segment is-other" id="rk100-seg-other"></span></div>
          <div class="rk100-legend">
            <div class="rk100-legend-item"><i class="rk100-dot is-pipe"></i><span>Rura<b id="rk100-legend-pipe">2771 zł</b></span></div>
            <div class="rk100-legend-item"><i class="rk100-dot is-system"></i><span>Rozdzielacz i osprzęt<b id="rk100-legend-system">3400 zł</b></span></div>
            <div class="rk100-legend-item"><i class="rk100-dot is-labor"></i><span>Układanie rur<b id="rk100-legend-labor">2990 zł</b></span></div>
            <div class="rk100-legend-item"><i class="rk100-dot is-start"></i><span>Podłączenie i próba<b id="rk100-legend-start">1000 zł</b></span></div>
            <div class="rk100-legend-item"><i class="rk100-dot is-project"></i><span>Projekt<b id="rk100-legend-project">0 zł</b></span></div>
            <div class="rk100-legend-item"><i class="rk100-dot is-auto"></i><span>Automatyka<b id="rk100-legend-auto">0 zł</b></span></div>
            <div class="rk100-legend-item"><i class="rk100-dot is-floor"></i><span>Izolacja i jastrych<b id="rk100-legend-floor">0 zł</b></span></div>
            <div class="rk100-legend-item"><i class="rk100-dot is-other"></i><span>Pozostałe<b id="rk100-legend-other">0 zł</b></span></div>
          </div>
        </div>

        <div class="rk100-output-grid">
          <div class="rk100-output-card">
            <h4>Ilości i podstawa obliczenia</h4>
            <p>To zestawienie pomaga wychwycić różnicę między powierzchnią domu a ilością materiału.</p>
            <div class="rk100-quantity-list">
              <div class="rk100-quantity"><span>Rura w polu grzewczym</span><b id="rk100-field-pipe">615 m</b></div>
              <div class="rk100-quantity"><span>Dobiegi przed zapasem</span><b id="rk100-approach-output">60 m</b></div>
              <div class="rk100-quantity"><span>Zapas materiałowy</span><b id="rk100-reserve-output">34 m</b></div>
              <div class="rk100-quantity"><span>Koszt samej rury</span><b id="rk100-pipe-cost-output">2771 zł</b></div>
              <div class="rk100-quantity"><span>Aktywna powierzchnia / pętla</span><b id="rk100-area-per-loop">10,25 m²</b></div>
            </div>
          </div>
          <div class="rk100-output-card">
            <h4>Kontrola kompletności oferty</h4>
            <p>Zaznacz pozycje, które wykonawca jednoznacznie opisał i wycenił. „W cenie” bez zakresu nie jest pozycją sprawdzoną.</p>
            <div class="rk100-offer-checks">
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="rury i sposób mocowania" checked>Rury i mocowanie</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="rozdzielacze i ich wyposażenie" checked>Rozdzielacze</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="szafki rozdzielaczowe" checked>Szafki</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="podłączenia oraz materiały systemowe" checked>Podłączenia</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="robociznę i podstawę metrażu" checked>Robocizna</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="próbę, płukanie i uruchomienie" checked>Próba i rozruch</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="projekt i dane do nastaw">Projekt</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="automatykę i instalację elektryczną">Automatyka</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="izolację oraz warstwy pod rurami">Izolacja</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="jastrych, dylatacje i pielęgnację">Jastrych</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="magistrale i połączenie ze źródłem">Magistrale</label>
              <label class="rk100-offer-check"><input class="rk100-offer-item" type="checkbox" data-name="podatek, transport i warunki płatności">Podatek i transport</label>
            </div>
            <div class="rk100-missing-list" id="rk100-missing-list" style="margin-top:12px"><div class="rk100-missing">Do wyjaśnienia pozostaje 6 pozycji.</div></div>
          </div>
        </div>

        <div class="rk100-diagnostics">
          <div class="rk100-diagnostic is-ok" id="rk100-diag-area"><span>Relacja powierzchni</span><strong id="rk100-diag-area-title">Dane są logiczne</strong><p id="rk100-diag-area-text">Powierzchnia czynna mieści się w ogrzewanej, a ogrzewana w całkowitej.</p></div>
          <div class="rk100-diagnostic is-warn" id="rk100-diag-quantity"><span>Model ilościowy</span><strong id="rk100-diag-quantity-title">Wymaga projektu trasy</strong><p id="rk100-diag-quantity-text">Liczba pętli wynika z podziału długości, a nie z rzeczywistej geometrii i hydrauliki.</p></div>
          <div class="rk100-diagnostic is-warn" id="rk100-diag-scope"><span>Zakres kosztu</span><strong id="rk100-diag-scope-title">Dodatki są wyłączone</strong><p id="rk100-diag-scope-text">Pełny wynik jest obecnie równy instalacji z montażem.</p></div>
        </div>
        <p class="rk100-tool-note">Wynik jest kalkulacją budżetową na podstawie danych wpisanych przez użytkownika. Nie stanowi oferty handlowej, projektu wykonawczego ani potwierdzenia, że założona liczba pętli, rozdzielaczy i długości jest poprawna hydraulicznie.</p>
      </div>
    </section>

    <section class="rk100-cta" aria-label="Projekt z obliczonym materiałem i zakresem">
      <span class="rk100-eyebrow"><b></b> Naturalny następny krok po kosztorysie</span>
      <h2>Kalkulator zna stawki, ale nie zna trasy żadnej pętli</h2>
      <p>Może przeliczyć wpisane ilości i ceny, lecz nie widzi geometrii pomieszczeń, trwałej zabudowy, dylatacji, przejść przez drzwi, rzeczywistych dobiegów ani oporów poszczególnych obwodów. Bez rozrysowania instalacji nie da się potwierdzić liczby pętli, rozdzielaczy i kompletnej listy materiałów.</p>
      <a class="rk100-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z zestawieniem materiałów i wyceną</a>
      <small class="rk100-disclosure">To pierwsze z dokładnie dwóch CTA sprzedażowych w artykule. Projekt jest usługą indywidualną, a zakres i cena zależą od powierzchni, liczby kondygnacji oraz wybranego terminu realizacji.</small>
    </section>

    <section class="rk100-section" id="rk100-result">
      <span class="rk100-kicker">Interpretacja bez skrótów</span>
      <h2>Jak czytać wynik kalkulatora kosztów?</h2>
      <p class="rk100-intro">Najważniejszą liczbą nie zawsze jest najwyższa suma. Najpierw sprawdź, jaka powierzchnia i jaki zakres stoją za wynikiem, a dopiero później porównuj cenę za m².</p>
      <div class="rk100-grid-3">
        <article class="rk100-card"><span class="rk100-card-label">Krok 1</span><h3>Sprawdź ilości</h3><p>Zweryfikuj powierzchnię czynną, długość dobiegów, zużycie rury i liczbę rozdzielaczy. Błąd w ilości materiału przechodzi do każdej kolejnej sumy.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Krok 2</span><h3>Wybierz właściwy zakres</h3><p>Materiały hydrauliczne nie są kompletną instalacją, a wykonana instalacja nie zawsze obejmuje izolację i jastrych. Porównuj tę samą kolumnę zakresu.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Krok 3</span><h3>Wyjaśnij braki</h3><p>Pozycja niezaznaczona w kontroli oferty nie musi być potrzebna, ale musi zostać świadomie potwierdzona jako wliczona, wyłączona albo rozliczana osobno.</p></article>
      </div>
      <div class="rk100-notice"><p><strong>Cena za m² jest wskaźnikiem pomocniczym.</strong> Jeżeli jedna oferta liczy 100 m² powierzchni całkowitej, a druga 82 m² powierzchni czynnej, same stawki jednostkowe nie są porównywalne.</p></div>
    </section>

    <section class="rk100-section" id="rk100-pipe">
      <span class="rk100-kicker">Najłatwiejsza pozycja do sprawdzenia</span>
      <h2>Ile kosztują rury do podłogówki na 100 m²?</h2>
      <p class="rk100-intro">Koszt przewodu jest iloczynem rzeczywistej długości zakupowej i ceny za metr. Nie powinien wynikać ze stałego założenia, że każdy dom o powierzchni 100 m² potrzebuje takiej samej liczby metrów.</p>
      <div class="rk100-formula">koszt rury = [(A<sub>czynna</sub> × zużycie m/m² + dobiegi) × (1 + zapas / 100)] × cena zł/m</div>
      <div class="rk100-grid-2">
        <article class="rk100-card"><h3>Co zwiększa długość?</h3><ul><li>mniejszy rozstaw wynikający z obliczeń,</li><li>większa powierzchnia rzeczywiście czynna,</li><li>długie trasy do rozdzielacza,</li><li>strefy brzegowe i złożona geometria,</li><li>racjonalny zapas montażowy.</li></ul></article>
        <article class="rk100-card"><h3>Czego cena rury nie obejmuje?</h3><ul><li>złączek przy rozdzielaczu,</li><li>systemu mocowania i warstw ochronnych,</li><li>przewodów rozdzielczych oraz kotłowni,</li><li>robocizny, próby i uruchomienia,</li><li>strat materiału większych niż wpisany zapas.</li></ul></article>
      </div>
      <p>Jeżeli chcesz sprawdzić objętość medium po ustaleniu długości, użyj osobnego <a href="https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/">kalkulatora ilości wody w podłogówce</a>. Pojemność instalacji nie jest jednak podstawą do wyznaczania ceny rury.</p>
    </section>

    <section class="rk100-section" id="rk100-manifold">
      <span class="rk100-kicker">Nie tylko korpus z belkami</span>
      <h2>Rozdzielacz, szafka i wyposażenie — co wliczyć?</h2>
      <p class="rk100-intro">Pozycja „rozdzielacz” może oznaczać sam komplet belek albo gotowy węzeł z szafką, zaworami, odpowietrzeniem, przyłączami, siłownikami i montażem. W kosztorysie elementy powinny być nazwane.</p>
      <div class="rk100-table-wrap">
        <table class="rk100-table">
          <thead><tr><th>Element</th><th>Co sprawdzić w ofercie?</th><th>Typowa niejasność</th></tr></thead>
          <tbody>
            <tr><td data-label="Element"><strong>Rozdzielacz</strong></td><td data-label="Co sprawdzić?">Liczbę obwodów, wyposażenie belek, zawory, sposób odpowietrzania i spustu.</td><td data-label="Niejasność">Zdjęcie produktu zastępuje specyfikację.</td></tr>
            <tr><td data-label="Element"><strong>Szafka</strong></td><td data-label="Co sprawdzić?">Typ, wymiar, montaż natynkowy lub podtynkowy i prace wykończeniowe.</td><td data-label="Niejasność">Szafka bywa liczona osobno mimo nagłówka „komplet”.</td></tr>
            <tr><td data-label="Element"><strong>Przyłącza pętli</strong></td><td data-label="Co sprawdzić?">Liczbę kompletów przyłączeniowych oraz ich zgodność z rurą.</td><td data-label="Niejasność">Drobne elementy nie pojawiają się w skróconym zestawieniu.</td></tr>
            <tr><td data-label="Element"><strong>Siłowniki i listwa</strong></td><td data-label="Co sprawdzić?">Czy należą do automatyki, czy do podstawowego wyposażenia rozdzielacza.</td><td data-label="Niejasność">Cena rozdzielacza jest porównywana z ceną całego sterowania.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Dobór liczby obwodów i miejsca montażu opisuje szerzej poradnik o <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielaczu do ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk100-section" id="rk100-labor">
      <span class="rk100-kicker">Cena bez zakresu jest nieporównywalna</span>
      <h2>Ile kosztuje robocizna podłogówki na 100 m²?</h2>
      <p class="rk100-intro">Robocizna może być rozliczana za m², za pętlę, za rozdzielacz albo ryczałtowo. Stawka za samo rozłożenie rury na przygotowanym podłożu nie jest tym samym co kompleksowe wykonanie, próba i uruchomienie.</p>
      <div class="rk100-grid-3">
        <article class="rk100-card"><span class="rk100-card-label">Przed montażem</span><h3>Przygotowanie</h3><p>Kontrola podłoża, wyznaczenie stref, dylatacji, tras i położenia rozdzielaczy. Ustal, kto usuwa przeszkody i poprawia podłoże.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Montaż</span><h3>Rury i rozdzielacze</h3><p>Rozłożenie i zamocowanie przewodów, opis pętli, przejścia, podłączenie oraz zabezpieczenie instalacji przed wykonaniem jastrychu.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Odbiór</span><h3>Próba i dokumentacja</h3><p>Procedura próby zgodna z systemem, protokół, identyfikacja obwodów, wartości uruchomieniowe i odpowiedzialność za ponowny dojazd.</p></article>
      </div>
      <p>Rozbudowane porównanie zakresów znajduje się w artykule <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/">podłogówka — cena za m² robocizny</a>. W kalkulatorze tej strony stawka dotyczy powierzchni ogrzewanej, a montaż rozdzielacza i próba są oddzielnymi pozycjami.</p>
    </section>

    <section class="rk100-section" id="rk100-insulation">
      <span class="rk100-kicker">Warstwa budowlana, nie dodatek do rury</span>
      <h2>Czy koszt styropianu wlicza się do ceny podłogówki?</h2>
      <p class="rk100-intro">Może się wliczać, ale tylko wtedy, gdy oferta obejmuje konstrukcję podłogi. Grubości izolacji nie dobiera się z samej informacji „dom ma 100 m²” ani z uniwersalnego pakietu 15 cm.</p>
      <p>Projektant przegrody sprawdza warstwy, właściwości materiału, warunki po obu stronach przegrody i wymagany współczynnik przenikania ciepła. Kalkulator kosztów potrzebuje natomiast powierzchni, ceny jednostkowej oraz jasnej informacji, czy stawka obejmuje materiał, ułożenie, docinanie, warstwy wyrównawcze i odpady.</p>
      <div class="rk100-notice is-green"><p>Osobny <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">kalkulator izolacji pod ogrzewaniem podłogowym</a> pomaga policzyć objętość i liczbę paczek. Wynik kosztowy z tej strony nie zastępuje sprawdzenia wymaganej grubości oraz parametrów cieplnych.</p></div>
    </section>

    <section class="rk100-section" id="rk100-screed">
      <span class="rk100-kicker">Oddzielny zakres wykonawczy</span>
      <h2>Jastrych, dylatacje i uruchomienie ogrzewania</h2>
      <p class="rk100-intro">Koszt jastrychu zależy od rodzaju materiału, grubości, powierzchni, logistyki, przygotowania pól i zakresu dylatacji. Jedna stała grubość „nad rurą” nie jest właściwa dla wszystkich systemów.</p>
      <div class="rk100-grid-2">
        <article class="rk100-card"><h3>Przed wylaniem</h3><ul><li>uzgodnij konstrukcję i wymagania systemu,</li><li>sprawdź dylatacje oraz przejścia przewodów,</li><li>zabezpiecz rozdzielacze i instalację,</li><li>wykonaj i udokumentuj właściwą próbę.</li></ul></article>
        <article class="rk100-card"><h3>Po wykonaniu</h3><ul><li>przestrzegaj warunków pielęgnacji materiału,</li><li>nie uruchamiaj wygrzewania według uniwersalnego kalendarza,</li><li>zachowaj protokół wygrzewania,</li><li>sprawdź wymagania późniejszej okładziny.</li></ul></article>
      </div>
      <p>Jeżeli wykonawca instalacji nie wykonuje jastrychu, w umowie trzeba wskazać moment przekazania odpowiedzialności i warunki, w których instalacja pozostaje podczas dalszych robót.</p>
    </section>

    <section class="rk100-section" id="rk100-automation">
      <span class="rk100-kicker">Opcja wymagająca opisu funkcji</span>
      <h2>Ile doliczyć za automatykę strefową?</h2>
      <p class="rk100-intro">Cena automatyki zależy od liczby stref, sposobu komunikacji, termostatów, siłowników, listew sterujących, okablowania i integracji ze źródłem. Nie należy jej szacować wyłącznie procentem od ceny rury.</p>
      <div class="rk100-table-wrap">
        <table class="rk100-table">
          <thead><tr><th>Pozycja</th><th>Jednostka kosztu</th><th>Pytanie kontrolne</th></tr></thead>
          <tbody>
            <tr><td data-label="Pozycja"><strong>Termostaty</strong></td><td data-label="Jednostka">Liczba sterowanych stref</td><td data-label="Pytanie">Czy jedno pomieszczenie jest jedną strefą i gdzie będzie pomiar temperatury?</td></tr>
            <tr><td data-label="Pozycja"><strong>Siłowniki</strong></td><td data-label="Jednostka">Liczba sterowanych obwodów</td><td data-label="Pytanie">Czy jedna strefa steruje jedną pętlą, czy kilkoma?</td></tr>
            <tr><td data-label="Pozycja"><strong>Listwy i zasilanie</strong></td><td data-label="Jednostka">Liczba rozdzielaczy i punktów zasilania</td><td data-label="Pytanie">Kto wykonuje przewody elektryczne i połączenie ze źródłem?</td></tr>
            <tr><td data-label="Pozycja"><strong>Uruchomienie</strong></td><td data-label="Jednostka">Ryczałt lub liczba stref</td><td data-label="Pytanie">Czy oferta obejmuje konfigurację, test i instruktaż?</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk100-notice is-yellow"><p><strong>Automatyka nie naprawia błędnej hydrauliki.</strong> Przed zamykaniem pętli siłownikami instalacja powinna mieć prawidłowe przepływy, nastawy oraz warunki pracy źródła i pompy.</p></div>
    </section>

    <section class="rk100-section" id="rk100-distribution">
      <span class="rk100-kicker">Częsty koszt poza ceną za m²</span>
      <h2>Magistrale, kotłownia i źródło ciepła</h2>
      <p class="rk100-intro">Kalkulacja pętli podłogowych nie obejmuje automatycznie przewodów od źródła do rozdzielaczy, armatury, sprzęgła, grup pompowych, pompy obiegowej, przygotowania kotłowni ani samego źródła ciepła.</p>
      <div class="rk100-grid-2">
        <article class="rk100-card"><h3>Po stronie instalacji rozdzielczej</h3><p>Znaczenie mają długości zasilania i powrotu, średnice, izolacja przewodów, armatura, sposób prowadzenia oraz liczba kondygnacji. Możesz wpisać ich łączny koszt w pozycji „pozostałe prace”, ale zachowaj szczegółowy załącznik do oferty.</p></article>
        <article class="rk100-card"><h3>Po stronie źródła</h3><p>Zakres może obejmować podłączenie, ochronę przepływu, dodatkowe pompy, hydrauliczne rozdzielenie obiegów i automatykę. Każdy z tych elementów powinien wynikać ze schematu, a nie z gotowego pakietu dla każdego domu.</p></article>
      </div>
      <p>Jeżeli w instalacji występują różne obiegi, pomocny będzie poradnik o <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgle hydraulicznym</a>. Punkt pracy pompy można wstępnie przeanalizować w <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatorze doboru pompy obiegowej</a>.</p>
    </section>

    <section class="rk100-section" id="rk100-spacing">
      <span class="rk100-kicker">Koszt jest skutkiem, nie kryterium doboru</span>
      <h2>Jak rozstaw rur zmienia koszt 100 m² podłogówki?</h2>
      <p class="rk100-intro">Mniejszy rozstaw zwykle zwiększa ilość rury, liczbę mocowań i potencjalnie liczbę pętli. Nie oznacza to jednak, że 10 cm jest automatycznie właściwe przy pompie ciepła, a 15 cm przy kotle.</p>
      <div class="rk100-table-wrap">
        <table class="rk100-table">
          <thead><tr><th>Rozstaw geometryczny</th><th>Teoretyczna długość w polu</th><th>Jak używać wartości?</th></tr></thead>
          <tbody>
            <tr><td data-label="Rozstaw"><strong>5 cm</strong></td><td data-label="Długość">około 20 m/m²</td><td data-label="Zastosowanie">Tylko jako zależność geometryczna; wymaga uzasadnienia konstrukcyjnego i hydraulicznego.</td></tr>
            <tr><td data-label="Rozstaw"><strong>10 cm</strong></td><td data-label="Długość">około 10 m/m²</td><td data-label="Zastosowanie">Bez dobiegów, łuków i zapasu; nie jest automatycznym wyborem dla źródła.</td></tr>
            <tr><td data-label="Rozstaw"><strong>15 cm</strong></td><td data-label="Długość">około 6,7 m/m²</td><td data-label="Zastosowanie">Wartość czysto geometryczna, nie gwarancja wymaganej mocy.</td></tr>
            <tr><td data-label="Rozstaw"><strong>20 cm</strong></td><td data-label="Długość">około 5 m/m²</td><td data-label="Zastosowanie">Wymaga sprawdzenia mocy, temperatury powierzchni i równomierności.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Dobór należy oprzeć na stracie ciepła, powierzchni czynnej, konstrukcji podłogi, oporze okładziny i temperaturach pracy. Zobacz pełne porównanie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu 10 i 15 cm</a> oraz poradnik <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/">jak gęsto rozkładać podłogówkę</a>.</p>
    </section>

    <section class="rk100-section" id="rk100-active-area">
      <span class="rk100-kicker">Najważniejszy mianownik</span>
      <h2>Dlaczego powierzchnia czynna zmienia koszt i możliwość ogrzania?</h2>
      <p class="rk100-intro">Dwie kondygnacje po 100 m² mogą potrzebować innej ilości rury, ponieważ różnią się zabudową, łazienkami, schodami, wyspami kuchennymi, dylatacjami i polami wyłączonymi.</p>
      <div class="rk100-formula">wymagana moc jednostkowa podłogi q<sub>wym</sub> = strata ciepła pomieszczenia Q / powierzchnia czynna A<sub>czynna</sub></div>
      <p>Zmniejszenie powierzchni czynnej ma dwa skutki. Zwykle obniża ilość rury w danym pomieszczeniu, ale równocześnie zwiększa moc, którą każdy czynny metr kwadratowy musi oddać. Dlatego niższy koszt materiału nie oznacza automatycznie, że system będzie wykonalny przy oczekiwanych temperaturach.</p>
      <div class="rk100-notice is-orange"><p><strong>Kalkulator kosztu nie liczy wydajności cieplnej.</strong> Przed zakupem materiału trzeba potwierdzić, że zaprojektowana powierzchnia grzewcza pokrywa obciążenie pomieszczeń bez przekroczenia dopuszczalnych warunków pracy.</p></div>
    </section>

    <section class="rk100-section" id="rk100-loops">
      <span class="rk100-kicker">Budżetowa liczba nie jest projektem</span>
      <h2>Ile pętli podłogówki potrzeba na 100 m²?</h2>
      <p class="rk100-intro">Podzielenie całkowitej długości rury przez 90 m daje orientacyjną liczbę obwodów do budżetu. Nie wystarcza jednak do rozrysowania pętli ani dobrania rozdzielacza.</p>
      <div class="rk100-grid-3">
        <article class="rk100-card"><h3>Geometria</h3><p>Pętla musi obsłużyć rzeczywiste pole bez przypadkowego przecinania dylatacji i z uwzględnieniem dojścia z rozdzielacza.</p></article>
        <article class="rk100-card"><h3>Hydraulika</h3><p>Znaczenie mają średnica, przepływ, długość, opory przyłączy i dostępna wysokość podnoszenia. Sama liczba metrów nie opisuje punktu pracy.</p></article>
        <article class="rk100-card"><h3>Regulacja</h3><p>Obwody powinny mieć obliczone przepływy, a rozdzielacz odpowiednią liczbę wyjść i warunki do równoważenia.</p></article>
      </div>
      <p>Więcej o ograniczeniach znajdziesz w opracowaniu <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki na jednej pętli</a>. Wartość 90 m w kalkulatorze jest edytowalną podstawą kosztorysową, a nie uniwersalnym maksimum.</p>
    </section>

    <section class="rk100-section" id="rk100-variants">
      <span class="rk100-kicker">Technologia zmienia pozycje kosztorysu</span>
      <h2>Nowy dom, remont, system suchy czy frezowanie?</h2>
      <p class="rk100-intro">Nie wolno przenosić ceny klasycznego systemu mokrego na każdą technologię. Inny jest zakres warstw, przygotowania podłoża, elementów systemowych i robocizny.</p>
      <div class="rk100-grid-4">
        <article class="rk100-card"><span class="rk100-card-label">Nowy budynek</span><h3>System mokry</h3><p>Najłatwiej skoordynować izolację, rury, dylatacje i jastrych, ale trzeba jasno rozdzielić branże i odpowiedzialność.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Modernizacja</span><h3>Nowa podłoga</h3><p>Dochodzą demontaże, wyrównanie, wysokości progów, kolizje i ocena istniejącej przegrody.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Mała wysokość</span><h3>System suchy</h3><p>Inne elementy rozprowadzające ciepło i poszycia oznaczają inny koszt materiałów oraz wykonania.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Istniejący jastrych</span><h3>Frezowanie</h3><p>Trzeba ocenić grubość, stan i przebieg instalacji w podłożu; samo frezowanie nie rozwiązuje hydrauliki ani mocy.</p></article>
      </div>
    </section>

    <section class="rk100-section" id="rk100-offers">
      <span class="rk100-kicker">Cena końcowa zamiast nagłówka reklamowego</span>
      <h2>Jak porównać dwie oferty na 100 m² podłogówki?</h2>
      <p class="rk100-intro">Najpierw ujednolić dane wejściowe, później zakres, a dopiero na końcu ceny. Oferta z niższą stawką za m² może być droższa po doliczeniu rozdzielaczy, prób, transportu i uruchomienia.</p>
      <div class="rk100-steps">
        <article class="rk100-step" data-step="Krok 1"><h3>Ustal powierzchnie</h3><p>Wpisz osobno całkowitą, ogrzewaną i czynną. Wskaż, od której liczona jest każda stawka.</p></article>
        <article class="rk100-step" data-step="Krok 2"><h3>Ujednolić projekt</h3><p>Porównuj oferty dla tej samej liczby pętli, rozdzielaczy, metrów rury i technologii podłogi.</p></article>
        <article class="rk100-step" data-step="Krok 3"><h3>Rozpisz materiały</h3><p>Oddziel rurę, rozdzielacze, szafki, przyłącza, mocowanie, izolację i automatykę.</p></article>
        <article class="rk100-step" data-step="Krok 4"><h3>Rozpisz robociznę</h3><p>Sprawdź przygotowanie, układanie, podłączenia, próbę, rozruch, dojazdy i prace dodatkowe.</p></article>
        <article class="rk100-step" data-step="Krok 5"><h3>Ujednolić podatek</h3><p>Nie zestawiaj kwoty netto z brutto. Ustal również transport, płatności i ważność ceny.</p></article>
        <article class="rk100-step" data-step="Krok 6"><h3>Policz braki i ryzyko</h3><p>Pozycja nieustalona nie kosztuje zera. Wyjaśnij ją pisemnie przed wyborem wykonawcy.</p></article>
      </div>
    </section>

    <section class="rk100-section" id="rk100-exclusions">
      <span class="rk100-kicker">Najczęstsza przyczyna rozbieżności</span>
      <h2>Czego zwykle nie obejmuje skrócona cena podłogówki?</h2>
      <p class="rk100-intro">Każda firma może zbudować inny zakres, dlatego poniższej listy nie należy traktować jako reguły. Jest to checklista pozycji, które wymagają jednoznacznej odpowiedzi.</p>
      <div class="rk100-checklist">
        <div class="rk100-checkitem">Obliczenia cieplne, układ pętli i dokumentacja wykonawcza.</div>
        <div class="rk100-checkitem">Izolacja podłogi, warstwy wyrównawcze i folia systemowa.</div>
        <div class="rk100-checkitem">Jastrych, dylatacje, pielęgnacja i protokół wygrzewania.</div>
        <div class="rk100-checkitem">Automatyka, przewody elektryczne, konfiguracja i siłowniki.</div>
        <div class="rk100-checkitem">Magistrale do rozdzielaczy, izolacja rur i armatura.</div>
        <div class="rk100-checkitem">Kotłownia, źródło ciepła, pompy i rozdzielenie hydrauliczne.</div>
        <div class="rk100-checkitem">Demontaże, naprawy podłoża, przewierty i prace wykończeniowe.</div>
        <div class="rk100-checkitem">Transport, wniesienie, dojazdy, podatek i odbiór odpadów.</div>
      </div>
      <div class="rk100-notice"><p>Wypełnienie instalacji także powinno mieć opisane medium i procedurę. Nie zakładaj automatycznie, że każda podłogówka wymaga wody demineralizowanej, glikolu lub inhibitora. Decyzja zależy od materiałów, warunków pracy i wymagań dokumentacji. Zobacz: <a href="https://projekt-ogrzewania.pl/czym-napelnic-instalacje-ogrzewania-podlogowego/">czym napełnić ogrzewanie podłogowe</a>.</p></div>
    </section>

    <section class="rk100-section" id="rk100-project">
      <span class="rk100-kicker">Koszt ma mieć podstawę techniczną</span>
      <h2>Jak projekt wpływa na koszt ogrzewania podłogowego?</h2>
      <p class="rk100-intro">Projekt nie gwarantuje najniższej ceny i nie tworzy automatycznie określonego procentu oszczędności. Daje natomiast wspólną podstawę ilościową i techniczną do wyceny, wykonania oraz odbioru.</p>
      <div class="rk100-grid-3">
        <article class="rk100-card"><span class="rk100-card-label">Przed ofertą</span><h3>Porównywalne ilości</h3><p>Wykonawcy mogą wyceniać te same długości pętli, liczbę rozdzielaczy, powierzchnie i zakres materiałów.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Na budowie</span><h3>Mniej decyzji przypadkowych</h3><p>Rozstaw, przebieg, dobiegi i podział obwodów nie powstają dopiero w chwili układania rur.</p></article>
        <article class="rk100-card"><span class="rk100-card-label">Przy odbiorze</span><h3>Dane do sprawdzenia</h3><p>Długości, opisy pętli, przepływy i nastawy można zestawić z dokumentacją zamiast oceniać wyłącznie wygląd instalacji.</p></article>
      </div>
      <p>Aktualny zakres usługi projektowej obejmuje m.in. obliczenia cieplne i hydrauliczne, układ pętli, długości, rozstawy, przepływy, dobór rozdzielaczy, parametry wody oraz zestawienie materiałów z wyceną. Cena jest zmienna zależnie od powierzchni, liczby kondygnacji i terminu, dlatego nie należy utrwalać w artykule jednej dawnej kwoty.</p>
    </section>

    <section class="rk100-section" id="rk100-checklist">
      <span class="rk100-kicker">Przed podpisaniem umowy</span>
      <h2>Checklista kosztorysu podłogówki na 100 m²</h2>
      <p class="rk100-intro">Poniższe punkty tworzą prostą procedurę odbioru oferty. Jeżeli któryś z nich pozostaje nieznany, zapisz go jako ryzyko lub pozycję do doprecyzowania, a nie jako koszt równy zero.</p>
      <div class="rk100-steps">
        <article class="rk100-step" data-step="01"><h3>Powierzchnie</h3><p>Zapisz powierzchnię całkowitą, ogrzewaną i czynną oraz podstawę rozliczenia robocizny.</p></article>
        <article class="rk100-step" data-step="02"><h3>Ilości</h3><p>Potwierdź metry rury, dobiegi, zapas, liczbę pętli, rozdzielaczy i szafek.</p></article>
        <article class="rk100-step" data-step="03"><h3>Parametry</h3><p>Sprawdź, czy podział obwodów i rozstaw wynikają z obliczeń, a nie tylko z przyjętej ceny.</p></article>
        <article class="rk100-step" data-step="04"><h3>Materiały</h3><p>Wymagaj nazw, parametrów, ilości, jednostek oraz jasnego wskazania dopuszczalnych zamienników.</p></article>
        <article class="rk100-step" data-step="05"><h3>Robocizna</h3><p>Oddziel montaż rur, rozdzielaczy, próbę, uruchomienie, transport i prace dodatkowe.</p></article>
        <article class="rk100-step" data-step="06"><h3>Warstwy podłogi</h3><p>Ustal, kto odpowiada za izolację, dylatacje, jastrych, wygrzewanie oraz odbiór podłoża.</p></article>
        <article class="rk100-step" data-step="07"><h3>Automatyka</h3><p>Zdefiniuj liczbę stref, urządzenia, okablowanie, integrację i konfigurację.</p></article>
        <article class="rk100-step" data-step="08"><h3>Wyłączenia</h3><p>Wypisz źródło ciepła, magistrale, kotłownię, demontaże i wszystko, czego oferta nie obejmuje.</p></article>
        <article class="rk100-step" data-step="09"><h3>Warunki handlowe</h3><p>Ujednolić netto lub brutto, terminy, płatności, gwarancję oraz sposób rozliczenia zmian.</p></article>
      </div>
    </section>

    <section class="rk100-section" id="rk100-faq">
      <span class="rk100-kicker">Pytania inwestorów</span>
      <h2>FAQ — koszt 100 m² ogrzewania podłogowego</h2>
      <div class="rk100-faq">
        <details><summary>Ile kosztuje 100 m² ogrzewania podłogowego?</summary><div class="rk100-faq-answer"><p>Nie ma jednej prawidłowej kwoty bez określenia zakresu. W modelu startowym tego artykułu podstawowe materiały hydrauliczne kosztują około 6171 zł, instalacja z montażem i próbą około 10 161 zł, a po przykładowym doliczeniu projektu, automatyki, izolacji i jastrychu około 23 511 zł. Są to obliczenia z jawnych stawek przykładowych, nie cennik ani oferta.</p></div></details>
        <details><summary>Co obejmuje cena ogrzewania podłogowego za m²?</summary><div class="rk100-faq-answer"><p>Tylko to, co wykonawca zapisał w zakresie. Stawka może dotyczyć samego układania rur, kompletnej robocizny, materiałów z montażem albo konstrukcji podłogi. Należy wskazać podstawę metrażu, materiały, rozdzielacze, próbę, automatykę, izolację, jastrych i wyłączenia.</p></div></details>
        <details><summary>Ile kosztują materiały na podłogówkę 100 m²?</summary><div class="rk100-faq-answer"><p>Koszt zależy od długości rury, liczby obwodów i rozdzielaczy, systemu mocowania oraz zakresu nazywanego „materiałami”. Kalkulator pokazuje osobno rurę, rozdzielacz, szafkę i materiały systemowe, dzięki czemu można wpisać własne ceny zamiast przyjmować jedną stałą wartość.</p></div></details>
        <details><summary>Ile kosztuje robocizna podłogówki dla 100 m²?</summary><div class="rk100-faq-answer"><p>Trzeba pomnożyć uzgodnioną podstawę metrażu przez stawkę, a następnie dodać ryczałty za rozdzielacze, próbę, uruchomienie, transport i prace dodatkowe. Wartość przykładowa w narzędziu służy demonstracji i powinna zostać zastąpiona rzeczywistą ofertą brutto.</p></div></details>
        <details><summary>Ile metrów rury potrzeba na 100 m²?</summary><div class="rk100-faq-answer"><p>Nie wyznacza tego powierzchnia całkowita domu. Potrzebne są powierzchnia czynna, zaprojektowany rozstaw, geometria, dobiegi i zapas. Przykład startowy z 82 m² powierzchni czynnej, zużyciem 7,5 m/m², 60 m dobiegów i 5% zapasu daje około 709 m rury.</p></div></details>
        <details><summary>Ile pętli podłogówki potrzeba na 100 m²?</summary><div class="rk100-faq-answer"><p>Nie ma jednej liczby dla każdego budynku. Podział całkowitej długości przez długość modelową daje tylko wartość budżetową. Projekt musi uwzględnić pomieszczenia, dylatacje, przepływy, średnicę, straty ciśnienia, dobiegi i położenie rozdzielacza.</p></div></details>
        <details><summary>Czy cena podłogówki obejmuje styropian?</summary><div class="rk100-faq-answer"><p>Nie automatycznie. Izolacja może należeć do zakresu ogólnobudowlanego albo instalacyjnego. Oferta powinna podawać rodzaj i parametry materiału, grubości warstw, powierzchnię, zakres ułożenia i odpowiedzialność za podłoże.</p></div></details>
        <details><summary>Czy cena obejmuje jastrych?</summary><div class="rk100-faq-answer"><p>Tylko gdy został wskazany. Trzeba sprawdzić rodzaj materiału, grubość i poziomy, dylatacje, logistykę, warunki pielęgnacji, próbę instalacji przed wylaniem oraz późniejszy protokół wygrzewania.</p></div></details>
        <details><summary>Czy źródło ciepła jest wliczone w koszt podłogówki?</summary><div class="rk100-faq-answer"><p>Zwykle stanowi osobny zakres, ale decyduje umowa. Samo źródło, kotłownia, armatura, pompy, magistrale do rozdzielaczy i automatyka nadrzędna nie są automatycznie częścią ceny pętli podłogowych.</p></div></details>
        <details><summary>Czy rozstaw 10 cm zawsze kosztuje więcej niż 15 cm?</summary><div class="rk100-faq-answer"><p>Przy tej samej powierzchni czynnej zwykle wymaga więcej rury i mocowań, lecz pełna różnica kosztu zależy też od liczby pętli, rozdzielaczy, robocizny i dobiegów. Rozstawu nie należy wybierać na podstawie ceny ani samego rodzaju źródła.</p></div></details>
        <details><summary>Dlaczego ceny podłogówki różnią się między regionami?</summary><div class="rk100-faq-answer"><p>Wpływają na nie lokalne stawki pracy, dostępność ekip, transport, skala zlecenia, technologia, termin oraz szczegółowość zakresu. Dlatego kalkulator pozwala wpisać własne ceny, a nie przedstawia jednej stawki jako obowiązującej w całej Polsce.</p></div></details>
        <details><summary>Czy wynik kalkulatora jest ofertą lub projektem?</summary><div class="rk100-faq-answer"><p>Nie. To model budżetowy z danych użytkownika. Nie potwierdza mocy cieplnej, przebiegu pętli, oporów hydraulicznych, liczby rozdzielaczy, warstw przegrody ani warunków wykonania. Ostateczne ilości powinny wynikać z dokumentacji i ofert dla konkretnego budynku.</p></div></details>
      </div>
    </section>

    <section class="rk100-section" id="rk100-sources">
      <span class="rk100-kicker">Podstawa i ograniczenia</span>
      <h2>Źródła techniczne i aktualizacja cenowa</h2>
      <p class="rk100-intro">Źródła nie służą do udawania jednej ceny rynkowej. Pokazują metodę oceny wydajności systemu, znaczenie parametrów przegrody oraz kierunek zmian cen w budownictwie.</p>
      <div class="rk100-source-box">
        <h3>Wykorzystane źródła zewnętrzne</h3>
        <ul>
          <li><a href="https://stat.gov.pl/files/gfx/portalinformacyjny/pl/defaultaktualnosci/5465/5/168/1/1_kwartal_2026.pdf" target="_blank" rel="noopener nofollow">Główny Urząd Statystyczny — Zmiany cen w budownictwie w I kwartale 2026 r.</a> — ogólny kontekst zmian cen robót; publikacja nie jest cennikiem podłogówki.</li>
          <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="noopener nofollow">ISO 11855-2:2021</a> — oficjalny opis metod wyznaczania wydajności wodnych systemów ogrzewania i chłodzenia płaszczyznowego.</li>
          <li><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="noopener nofollow">ISO 11855-5:2021</a> — oficjalna strona części dotyczącej instalacji systemów ogrzewania i chłodzenia płaszczyznowego.</li>
          <li><a href="https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/" target="_blank" rel="noopener nofollow">Ministerstwo Rozwoju i Technologii — kalkulator współczynnika przenikania ciepła U<sub>c</sub></a> — pomoc w analizie przegrody, nie dobór jednego uniwersalnego pakietu izolacji.</li>
        </ul>
        <p class="rk100-update">Ostatnia weryfikacja merytoryczna i cenowa modelu: 30 sierpnia 2026 r. Stawki startowe kalkulatora są przykładem edytowalnym i nie są pobierane ze sklepów ani cenników konkurencji.</p>
      </div>
    </section>

    <section class="rk100-author" id="rk100-author" aria-labelledby="rk100-author-heading">
      <input type="radio" name="rk100-author-tabs" id="rk100-author-about" checked>
      <input type="radio" name="rk100-author-tabs" id="rk100-author-exp">
      <input type="radio" name="rk100-author-tabs" id="rk100-author-sites">
      <div class="rk100-author-head">
        <div><h2 id="rk100-author-heading">Autor opracowania</h2><p>Treść techniczna, model kosztowy i narzędzie zostały przygotowane oraz zweryfikowane przez autora projektującego wodne instalacje grzewcze.</p></div>
        <span class="rk100-author-mark">Projekt Ogrzewania</span>
      </div>
      <div class="rk100-author-layout">
        <aside class="rk100-author-side">
          <div class="rk100-author-photo"><img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i specjalista HVAC" width="150" height="150" loading="lazy"></div>
          <div class="rk100-author-name">Robert Kucharski</div>
          <div class="rk100-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk100-author-social-label">Profile autora</div>
          <div class="rk100-author-social">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.98 3.5C4.98 4.88 3.87 6 2.5 6S.02 4.88.02 3.5 1.13 1 2.5 1s2.48 1.12 2.48 2.5zM.5 8h4V24h-4V8zm7 0h3.83v2.19h.05c.53-1.01 1.84-2.19 3.78-2.19 4.04 0 4.79 2.66 4.79 6.12V24h-4v-8.76c0-2.09-.04-4.78-2.91-4.78-2.91 0-3.36 2.27-3.36 4.63V24h-4V8z"/></svg></a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M22 12a10 10 0 1 0-11.56 9.88v-6.99H7.9V12h2.54V9.8c0-2.51 1.49-3.89 3.77-3.89 1.09 0 2.23.2 2.23.2v2.45h-1.25c-1.24 0-1.62.77-1.62 1.56V12h2.77l-.44 2.89h-2.33v6.99A10 10 0 0 0 22 12z"/></svg></a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt Ogrzewania w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.24 2H21l-6.03 6.9L22.06 22h-5.55l-4.35-5.69L7.19 22H4.42l6.45-7.37L4.06 2h5.69l3.93 5.2L18.24 2zm-.97 17.7h1.53L8.91 4.18H7.27L17.27 19.7z"/></svg></a>
          </div>
        </aside>
        <div class="rk100-author-main">
          <blockquote class="rk100-author-quote"><p>Rzetelny kosztorys nie zaczyna się od ceny za metr kwadratowy. Zaczyna się od zdefiniowania powierzchni, tras pętli, ilości materiału i odpowiedzialności każdej branży.</p></blockquote>
          <div class="rk100-author-tabs"><label class="rk100-author-tab" for="rk100-author-about">O autorze</label><label class="rk100-author-tab" for="rk100-author-exp">Doświadczenie</label><label class="rk100-author-tab" for="rk100-author-sites">Serwisy</label></div>
          <div class="rk100-author-panel rk100-panel-about">
            <p class="rk100-author-lead">Robert Kucharski jest projektantem instalacji sanitarnych i specjalistą HVAC, koncentrującym się na wodnym ogrzewaniu podłogowym, obliczeniach cieplnych oraz hydraulice instalacji.</p>
            <p>Przygotowuje indywidualne projekty dla nowych i modernizowanych budynków. W pracy łączy obciążenia cieplne pomieszczeń z rzeczywistą powierzchnią grzejną, konstrukcją podłogi, przebiegiem pętli, długościami dobiegów, przepływami, stratami ciśnienia, średnicami magistral i punktem pracy pompy.</p>
            <div class="rk100-author-facts">
              <div class="rk100-author-fact"><b>Specjalizacja</b><span>Wodne ogrzewanie podłogowe i instalacje HVAC</span></div>
              <div class="rk100-author-fact"><b>Zakres projektowy</b><span>Obliczenia cieplne, hydraulika, pętle i rozdzielacze</span></div>
              <div class="rk100-author-fact"><b>Praktyka</b><span>Przepływy, opory, pompy, magistrale i nastawy</span></div>
              <div class="rk100-author-fact"><b>Publikacje</b><span>Autorskie poradniki i interaktywne narzędzia techniczne</span></div>
            </div>
            <div class="rk100-author-method"><strong>Jak powstają opracowania?</strong><p>Treści oddzielają wymagania dokumentacji i oficjalnych źródeł od założeń kosztowych. Wzory, dane startowe oraz ograniczenia kalkulatorów są opisane tak, aby czytelnik mógł odtworzyć wynik i zastąpić wartości własnymi.</p></div>
          </div>
          <div class="rk100-author-panel rk100-panel-exp">
            <p class="rk100-author-lead">Doświadczenie autora obejmuje cały ciąg decyzyjny — od zapotrzebowania pomieszczeń i konstrukcji podłogi do tras pętli, przepływów, nastaw oraz zestawienia materiałów potrzebnego do wyceny.</p>
            <ul class="rk100-author-topics"><li>obciążenia cieplne</li><li>powierzchnia czynna</li><li>rozstawy rur</li><li>długości pętli</li><li>przepływy</li><li>straty ciśnienia</li><li>rozdzielacze</li><li>pompy obiegowe</li><li>magistrale</li><li>zestawienia materiałów</li><li>automatyka</li><li>uruchomienie</li></ul>
            <p>Wykonywane projekty porządkują dane, których nie zapewnia sama stawka za m²: rzeczywistą ilość rury, podział obwodów, liczbę wyjść rozdzielacza, parametry przepływu oraz relację instalacji ze źródłem ciepła. Dzięki temu kosztorys może odnosić się do konkretnego rozwiązania, a nie do powierzchni budynku potraktowanej jako jedyna zmienna.</p>
            <div class="rk100-author-method"><strong>Odpowiedzialność redakcyjna</strong><p>Robert Kucharski jest wskazanym autorem opracowania i odpowiada za jego aktualizację techniczną. Materiał zawiera datę weryfikacji, źródła oraz wyraźne rozróżnienie między modelem budżetowym, ofertą handlową i indywidualnym projektem.</p></div>
          </div>
          <div class="rk100-author-panel rk100-panel-sites">
            <p class="rk100-author-lead">Robert Kucharski jest autorem i właścicielem trzech serwisów poświęconych instalacjom, budowie oraz modernizacji budynków.</p>
            <div class="rk100-author-facts">
              <div class="rk100-author-fact"><b>Projekt Ogrzewania</b><span>Projekty, obliczenia i poradniki o instalacjach grzewczych</span></div>
              <div class="rk100-author-fact"><b>Remont.biz.pl</b><span>Techniczne materiały dotyczące budowy i modernizacji</span></div>
              <div class="rk100-author-fact"><b>Sobir.pl</b><span>Wiedza o budownictwie, instalacjach i energii</span></div>
              <div class="rk100-author-fact"><b>Tożsamość autora</b><span>Publiczne profile zawodowe i społecznościowe</span></div>
            </div>
            <div class="rk100-site-links"><a href="https://projekt-ogrzewania.pl/">projekt-ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">sobir.pl</a></div>
            <div class="rk100-author-method"><strong>Powiązanie z publikacją</strong><p>Projekt-Ogrzewania.pl jest miejscem publikacji i aktualizacji tego opracowania. Pozostałe serwisy pokazują szerszy zakres działalności autora w obszarze budownictwa i instalacji.</p></div>
          </div>
        </div>
      </div>
    </section>

    <section class="rk100-cta rk100-final-cta" aria-label="Końcowe zamówienie projektu ogrzewania podłogowego">
      <span class="rk100-eyebrow"><b></b> Od budżetu do dokumentacji wykonawczej</span>
      <h2>Chcesz wyceniać konkretną instalację, a nie średnią cenę z internetu?</h2>
      <p>Projekt pokaże układ i długości pętli, rozstawy, przepływy, nastawy rozdzielaczy, parametry pracy oraz zestawienie materiałów. Dzięki temu możesz wysłać wykonawcom tę samą podstawę i porównać oferty bez zgadywania, co oznacza „100 m² podłogówki”.</p>
      <a class="rk100-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
      <small class="rk100-disclosure">To drugie i ostatnie CTA sprzedażowe. Przed zamówieniem sprawdź aktualne warianty usługi, zakres oraz termin realizacji na stronie produktu.</small>
    </section>
  </article>
</div>

<script type="application/ld+json">
{
  "@context":"https://schema.org",
  "@graph":[
    {
      "@type":"TechArticle",
      "@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#article",
      "headline":"Ile kosztuje 100 m² ogrzewania podłogowego? Materiały, robocizna i pełny koszt",
      "description":"Przejrzysty kosztorys 100 m² ogrzewania podłogowego z edytowalnymi stawkami, trzema zakresami ceny i kontrolą kompletności oferty.",
      "inLanguage":"pl-PL",
      "dateModified":"2026-08-30",
      "mainEntityOfPage":{"@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#webpage"},
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "image":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "about":["koszt ogrzewania podłogowego","koszt podłogówki 100 m²","materiały do podłogówki","robocizna ogrzewania podłogowego","kosztorys instalacji grzewczej"]
    },
    {
      "@type":"WebPage",
      "@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#webpage",
      "url":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/",
      "name":"Ile kosztuje 100 m² ogrzewania podłogowego? Materiały, robocizna i pełny koszt",
      "description":"Kalkulator oraz poradnik rozdzielający koszt materiałów hydraulicznych, montażu i kompletnej konstrukcji ogrzewanej podłogi.",
      "inLanguage":"pl-PL",
      "isPartOf":{"@id":"https://projekt-ogrzewania.pl/#website"},
      "breadcrumb":{"@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#breadcrumb"},
      "primaryImageOfPage":{"@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#article"},
      "dateModified":"2026-08-30"
    },
    {
      "@type":"BreadcrumbList",
      "@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#breadcrumb",
      "itemListElement":[
        {"@type":"ListItem","position":1,"name":"Strona główna","item":"https://projekt-ogrzewania.pl/"},
        {"@type":"ListItem","position":2,"name":"Blog","item":"https://projekt-ogrzewania.pl/blog/"},
        {"@type":"ListItem","position":3,"name":"Ile kosztuje 100 m² ogrzewania podłogowego?","item":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/"}
      ]
    },
    {
      "@type":"WebApplication",
      "@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#calculator",
      "name":"Kalkulator kosztu ogrzewania podłogowego",
      "url":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#rk100-calculator",
      "applicationCategory":"UtilitiesApplication",
      "operatingSystem":"Dowolny system z przeglądarką internetową",
      "browserRequirements":"Włączona obsługa JavaScript",
      "inLanguage":"pl-PL",
      "isAccessibleForFree":true,
      "description":"Narzędzie oblicza ilość rury, modelową liczbę pętli oraz koszt materiałów hydraulicznych, instalacji z robocizną i wybranego pełnego zakresu.",
      "featureList":["edytowalne powierzchnie","edytowalne ceny brutto","trzy zakresy kosztu","dynamiczna struktura kosztu","kontrola kompletności oferty"],
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "provider":{"@id":"https://projekt-ogrzewania.pl/#organization"}
    },
    {
      "@type":"HowTo",
      "@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#howto",
      "name":"Jak porównać oferty na ogrzewanie podłogowe dla 100 m²",
      "description":"Sześć kroków ujednolicenia danych, zakresu i cen przed wyborem wykonawcy.",
      "inLanguage":"pl-PL",
      "step":[
        {"@type":"HowToStep","position":1,"name":"Ustal powierzchnie","text":"Zapisz powierzchnię całkowitą, ogrzewaną i czynną oraz podstawę każdej stawki."},
        {"@type":"HowToStep","position":2,"name":"Ujednolić projekt","text":"Porównuj oferty dla tej samej liczby pętli, rozdzielaczy, metrów rury i technologii."},
        {"@type":"HowToStep","position":3,"name":"Rozpisz materiały","text":"Oddziel rurę, rozdzielacze, szafki, przyłącza, mocowanie, izolację i automatykę."},
        {"@type":"HowToStep","position":4,"name":"Rozpisz robociznę","text":"Sprawdź przygotowanie, układanie, podłączenia, próbę, rozruch i prace dodatkowe."},
        {"@type":"HowToStep","position":5,"name":"Ujednolić podatek","text":"Sprowadź kwoty do netto albo brutto i ustal transport, płatności oraz ważność ceny."},
        {"@type":"HowToStep","position":6,"name":"Policz braki i ryzyko","text":"Wyjaśnij wszystkie pozycje nieustalone przed wyborem wykonawcy."}
      ]
    },
    {
      "@type":"FAQPage",
      "@id":"https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/#faq",
      "mainEntity":[
        {"@type":"Question","name":"Ile kosztuje 100 m² ogrzewania podłogowego?","acceptedAnswer":{"@type":"Answer","text":"Nie ma jednej prawidłowej kwoty bez określenia zakresu. W modelu startowym podstawowe materiały hydrauliczne kosztują około 6171 zł, instalacja z montażem i próbą około 10 161 zł, a po przykładowym doliczeniu projektu, automatyki, izolacji i jastrychu około 23 511 zł. Są to obliczenia z jawnych stawek przykładowych, nie cennik ani oferta."}},
        {"@type":"Question","name":"Co obejmuje cena ogrzewania podłogowego za m²?","acceptedAnswer":{"@type":"Answer","text":"Tylko zakres opisany przez wykonawcę. Stawka może dotyczyć samego układania rur, kompletnej robocizny, materiałów z montażem albo całej konstrukcji podłogi."}},
        {"@type":"Question","name":"Ile kosztują materiały na podłogówkę 100 m²?","acceptedAnswer":{"@type":"Answer","text":"Koszt zależy od długości rury, liczby obwodów i rozdzielaczy, systemu mocowania oraz definicji materiałów. Kalkulator pokazuje te pozycje oddzielnie i pozwala wpisać własne ceny."}},
        {"@type":"Question","name":"Ile kosztuje robocizna podłogówki dla 100 m²?","acceptedAnswer":{"@type":"Answer","text":"Należy pomnożyć uzgodnioną podstawę metrażu przez stawkę i dodać ryczałty za rozdzielacze, próbę, uruchomienie, transport oraz prace dodatkowe. Stawkę przykładową trzeba zastąpić rzeczywistą ofertą."}},
        {"@type":"Question","name":"Ile metrów rury potrzeba na 100 m²?","acceptedAnswer":{"@type":"Answer","text":"Potrzebne są powierzchnia czynna, zaprojektowany rozstaw, geometria, dobiegi i zapas. Przykład z 82 m² powierzchni czynnej, zużyciem 7,5 m/m², 60 m dobiegów i 5% zapasu daje około 709 m rury."}},
        {"@type":"Question","name":"Ile pętli podłogówki potrzeba na 100 m²?","acceptedAnswer":{"@type":"Answer","text":"Nie ma jednej liczby dla każdego budynku. Projekt musi uwzględnić pomieszczenia, dylatacje, przepływy, średnicę, straty ciśnienia, dobiegi i położenie rozdzielacza."}},
        {"@type":"Question","name":"Czy cena podłogówki obejmuje styropian?","acceptedAnswer":{"@type":"Answer","text":"Nie automatycznie. Oferta powinna podawać rodzaj i parametry izolacji, grubości warstw, powierzchnię, zakres ułożenia i odpowiedzialność za podłoże."}},
        {"@type":"Question","name":"Czy cena obejmuje jastrych?","acceptedAnswer":{"@type":"Answer","text":"Tylko gdy został wskazany. Trzeba sprawdzić rodzaj materiału, grubość, dylatacje, logistykę, warunki pielęgnacji, próbę instalacji oraz protokół wygrzewania."}},
        {"@type":"Question","name":"Czy źródło ciepła jest wliczone w koszt podłogówki?","acceptedAnswer":{"@type":"Answer","text":"Decyduje umowa. Źródło, kotłownia, armatura, pompy, magistrale do rozdzielaczy i automatyka nadrzędna nie są automatycznie częścią ceny pętli podłogowych."}},
        {"@type":"Question","name":"Czy rozstaw 10 cm zawsze kosztuje więcej niż 15 cm?","acceptedAnswer":{"@type":"Answer","text":"Przy tej samej powierzchni czynnej zwykle wymaga więcej rury i mocowań, ale pełna różnica zależy także od liczby pętli, rozdzielaczy, robocizny i dobiegów. Rozstawu nie wybiera się na podstawie ceny ani samego źródła."}},
        {"@type":"Question","name":"Dlaczego ceny podłogówki różnią się między regionami?","acceptedAnswer":{"@type":"Answer","text":"Wpływają na nie lokalne stawki pracy, dostępność ekip, transport, skala zlecenia, technologia, termin i szczegółowość zakresu."}},
        {"@type":"Question","name":"Czy wynik kalkulatora jest ofertą lub projektem?","acceptedAnswer":{"@type":"Answer","text":"Nie. To model budżetowy z danych użytkownika. Nie potwierdza mocy cieplnej, przebiegu pętli, oporów hydraulicznych, liczby rozdzielaczy ani warstw przegrody."}}
      ]
    },
    {
      "@type":"Person",
      "@id":"https://projekt-ogrzewania.pl/#robert-kucharski",
      "name":"Robert Kucharski",
      "url":"https://projekt-ogrzewania.pl/",
      "image":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle":"Projektant instalacji sanitarnych i specjalista HVAC",
      "description":"Autor projektów, obliczeń i opracowań dotyczących wodnego ogrzewania podłogowego, hydrauliki instalacji oraz systemów HVAC.",
      "knowsAbout":["ogrzewanie podłogowe","instalacje sanitarne","HVAC","obliczenia cieplne","obliczenia hydrauliczne","dobór pomp","rozdzielacze","zestawienia materiałów"],
      "worksFor":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "sameAs":["https://www.linkedin.com/in/robert-kucharski-38069b48/","https://www.facebook.com/projektogrzewaniapl","https://x.com/Projekt_HVAC"]
    },
    {
      "@type":"Organization",
      "@id":"https://projekt-ogrzewania.pl/#organization",
      "name":"Projekt Ogrzewania",
      "url":"https://projekt-ogrzewania.pl/",
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type":"Organization",
      "@id":"https://remont.biz.pl/#organization",
      "name":"Remont.biz.pl",
      "url":"https://remont.biz.pl/",
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type":"Organization",
      "@id":"https://sobir.pl/#organization",
      "name":"Sobir.pl",
      "url":"https://sobir.pl/",
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type":"WebSite",
      "@id":"https://projekt-ogrzewania.pl/#website",
      "url":"https://projekt-ogrzewania.pl/",
      "name":"Projekt Ogrzewania",
      "inLanguage":"pl-PL",
      "publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

<script>
(function(){
  "use strict";
  var root=document.getElementById("rk-100-cost");
  if(!root){return;}

  var byId=function(id){return document.getElementById(id);};
  var numericIds=["rk100-total-area","rk100-heated-area","rk100-active-area-input","rk100-manifolds","rk100-pipe-density","rk100-approaches","rk100-loop-limit","rk100-reserve","rk100-pipe-rate","rk100-manifold-rate","rk100-cabinet-rate","rk100-system-rate","rk100-labor-rate","rk100-manifold-labor-rate","rk100-test-rate","rk100-project-rate","rk100-automation-rate","rk100-insulation-rate","rk100-screed-rate","rk100-other-rate"];
  var optionIds=["rk100-add-project","rk100-add-automation","rk100-add-insulation","rk100-add-screed","rk100-add-other"];
  var defaults={
    "rk100-total-area":"100","rk100-heated-area":"92","rk100-active-area-input":"82","rk100-manifolds":"1","rk100-pipe-density":"7.5","rk100-approaches":"60","rk100-loop-limit":"90","rk100-reserve":"5","rk100-pipe-rate":"3.91","rk100-manifold-rate":"1400","rk100-cabinet-rate":"400","rk100-system-rate":"1600","rk100-labor-rate":"32.5","rk100-manifold-labor-rate":"400","rk100-test-rate":"600","rk100-project-rate":"850","rk100-automation-rate":"3500","rk100-insulation-rate":"35","rk100-screed-rate":"55","rk100-other-rate":"0"
  };
  var read=function(id,min){var node=byId(id);var value=node?Number(String(node.value).replace(",",".")):0;if(!Number.isFinite(value)){value=0;}if(typeof min==="number"){value=Math.max(min,value);}return value;};
  var money=function(value){return new Intl.NumberFormat("pl-PL",{maximumFractionDigits:0}).format(Math.round(value))+" zł";};
  var money2=function(value){return new Intl.NumberFormat("pl-PL",{minimumFractionDigits:2,maximumFractionDigits:2}).format(value)+" zł/m²";};
  var number1=function(value){return new Intl.NumberFormat("pl-PL",{minimumFractionDigits:1,maximumFractionDigits:1}).format(value);};
  var setText=function(id,value){var node=byId(id);if(node){node.textContent=value;}};
  var setDiagnostic=function(id,kind,title,copy){var node=byId("rk100-diag-"+id);if(node){node.className="rk100-diagnostic is-"+kind;}setText("rk100-diag-"+id+"-title",title);setText("rk100-diag-"+id+"-text",copy);};
  var setSegment=function(id,value,total){var node=byId(id);if(!node){return;}var share=total>0?value/total*100:0;node.style.width=Math.max(0,share).toFixed(3)+"%";};

  var updateOffer=function(){
    var items=Array.from(root.querySelectorAll(".rk100-offer-item"));
    var missing=[];
    items.forEach(function(item){if(!item.checked){missing.push(item.getAttribute("data-name"));}});
    var list=byId("rk100-missing-list");
    if(!list){return;}
    while(list.firstChild){list.removeChild(list.firstChild);}
    var row=document.createElement("div");
    row.className=missing.length===0?"rk100-missing is-complete":"rk100-missing";
    if(missing.length===0){row.textContent="Oferta ma opisane wszystkie pozycje z checklisty. Nadal sprawdź ich parametry, ilości i wyłączenia.";}
    else{
      var preview=missing.slice(0,3).join(", ");
      var suffix=missing.length>3?" oraz "+String(missing.length-3)+" kolejnych":"";
      row.textContent="Do wyjaśnienia: "+preview+suffix+".";
    }
    list.appendChild(row);
  };

  var update=function(){
    var total=read("rk100-total-area",1);
    var heated=read("rk100-heated-area",1);
    var active=read("rk100-active-area-input",1);
    var manifolds=Math.max(1,Math.round(read("rk100-manifolds",1)));
    var density=read("rk100-pipe-density",0);
    var approaches=read("rk100-approaches",0);
    var loopLimit=read("rk100-loop-limit",1);
    var reservePct=read("rk100-reserve",0);
    var fieldPipe=active*density;
    var basePipe=fieldPipe+approaches;
    var pipeLength=basePipe*(1+reservePct/100);
    var reserveLength=pipeLength-basePipe;
    var loops=Math.max(1,Math.ceil(pipeLength/loopLimit));

    var pipeCost=pipeLength*read("rk100-pipe-rate",0);
    var manifoldCost=manifolds*read("rk100-manifold-rate",0);
    var cabinetCost=manifolds*read("rk100-cabinet-rate",0);
    var systemCost=read("rk100-system-rate",0);
    var laborCost=heated*read("rk100-labor-rate",0);
    var manifoldLabor=manifolds*read("rk100-manifold-labor-rate",0);
    var testCost=read("rk100-test-rate",0);
    var materialTotal=pipeCost+manifoldCost+cabinetCost+systemCost;
    var installedTotal=materialTotal+laborCost+manifoldLabor+testCost;

    var projectOn=byId("rk100-add-project").checked;
    var automationOn=byId("rk100-add-automation").checked;
    var insulationOn=byId("rk100-add-insulation").checked;
    var screedOn=byId("rk100-add-screed").checked;
    var otherOn=byId("rk100-add-other").checked;
    var projectCost=projectOn?read("rk100-project-rate",0):0;
    var automationCost=automationOn?read("rk100-automation-rate",0):0;
    var insulationCost=insulationOn?total*read("rk100-insulation-rate",0):0;
    var screedCost=screedOn?total*read("rk100-screed-rate",0):0;
    var otherCost=otherOn?read("rk100-other-rate",0):0;
    var floorCost=insulationCost+screedCost;
    var fullTotal=installedTotal+projectCost+automationCost+floorCost+otherCost;
    var extras=[projectOn,automationOn,insulationOn,screedOn,otherOn].filter(Boolean).length;

    setText("rk100-pipe-length",new Intl.NumberFormat("pl-PL",{maximumFractionDigits:0}).format(pipeLength)+" m");
    setText("rk100-loop-count",String(loops)+" szt.");
    setText("rk100-active-share",number1(active/total*100)+"%");
    setText("rk100-full-per-m2",money2(fullTotal/total));
    setText("rk100-material-total",money(materialTotal));
    setText("rk100-material-per",money2(materialTotal/total)+" powierzchni całkowitej");
    setText("rk100-installed-total",money(installedTotal));
    setText("rk100-installed-per",money2(installedTotal/total)+" powierzchni całkowitej");
    setText("rk100-full-total",money(fullTotal));
    setText("rk100-full-note",extras===0?"Brak włączonych elementów dodatkowych":"Włączone elementy dodatkowe: "+String(extras));
    setText("rk100-field-pipe",new Intl.NumberFormat("pl-PL",{maximumFractionDigits:0}).format(fieldPipe)+" m");
    setText("rk100-approach-output",new Intl.NumberFormat("pl-PL",{maximumFractionDigits:0}).format(approaches)+" m");
    setText("rk100-reserve-output",new Intl.NumberFormat("pl-PL",{maximumFractionDigits:0}).format(reserveLength)+" m");
    setText("rk100-pipe-cost-output",money(pipeCost));
    setText("rk100-area-per-loop",number1(active/loops)+" m²");

    var systemGroup=manifoldCost+cabinetCost+systemCost;
    var startGroup=manifoldLabor+testCost;
    setText("rk100-legend-pipe",money(pipeCost));
    setText("rk100-legend-system",money(systemGroup));
    setText("rk100-legend-labor",money(laborCost));
    setText("rk100-legend-start",money(startGroup));
    setText("rk100-legend-project",money(projectCost));
    setText("rk100-legend-auto",money(automationCost));
    setText("rk100-legend-floor",money(floorCost));
    setText("rk100-legend-other",money(otherCost));
    setSegment("rk100-seg-pipe",pipeCost,fullTotal);
    setSegment("rk100-seg-system",systemGroup,fullTotal);
    setSegment("rk100-seg-labor",laborCost,fullTotal);
    setSegment("rk100-seg-start",startGroup,fullTotal);
    setSegment("rk100-seg-project",projectCost,fullTotal);
    setSegment("rk100-seg-auto",automationCost,fullTotal);
    setSegment("rk100-seg-floor",floorCost,fullTotal);
    setSegment("rk100-seg-other",otherCost,fullTotal);

    var areaInvalid=[heated>total,active>heated,active>total].some(Boolean);
    if(areaInvalid){setDiagnostic("area","alert","Sprawdź relację powierzchni","Powierzchnia czynna nie powinna przekraczać ogrzewanej, a ogrzewana całkowitej. Kalkulator liczy wpisane wartości, ale wynik ma błędną podstawę.");}
    else if(active/total<0.55){setDiagnostic("area","warn","Mały udział powierzchni czynnej","Tylko "+number1(active/total*100)+"% powierzchni całkowitej ma rurę. Sprawdź trwałą zabudowę i wymaganą moc jednostkową.");}
    else{setDiagnostic("area","ok","Dane są logiczne","Powierzchnia czynna mieści się w ogrzewanej, a ogrzewana w całkowitej.");}

    if([loopLimit<50,loopLimit>130,density>15].some(Boolean)){setDiagnostic("quantity","alert","Założenia wymagają weryfikacji","Nietypowa długość modelowa lub duże zużycie rury może mocno zmieniać liczbę obwodów. Ustal trasy i hydraulikę przed zakupem.");}
    else{setDiagnostic("quantity","warn","Wymaga projektu trasy","Wynik "+String(loops)+" pętli powstał z podziału długości przez "+new Intl.NumberFormat("pl-PL",{maximumFractionDigits:0}).format(loopLimit)+" m. Nie uwzględnia geometrii i oporów obwodów.");}

    if(extras===0){setDiagnostic("scope","warn","Dodatki są wyłączone","Pełny wynik jest równy instalacji z montażem. Projekt, automatyka, izolacja, jastrych i pozostałe prace nie są doliczone.");}
    else if(extras<5){setDiagnostic("scope","warn","Zakres jest częściowy","Włączono "+String(extras)+" z 5 grup dodatkowych. Sprawdź, czy pozostałe są zbędne, wliczone gdzie indziej czy jeszcze niewycenione.");}
    else{setDiagnostic("scope","ok","Wszystkie grupy są aktywne","Pełny wynik zawiera wszystkie grupy dodatkowe, lecz jego kompletność nadal zależy od opisu oraz poprawności wpisanych stawek.");}
    updateOffer();
  };

  numericIds.forEach(function(id){var node=byId(id);if(node){node.addEventListener("input",update);node.addEventListener("change",update);}});
  optionIds.forEach(function(id){var node=byId(id);if(node){node.addEventListener("change",update);}});
  Array.from(root.querySelectorAll(".rk100-offer-item")).forEach(function(node){node.addEventListener("change",updateOffer);});
  var reset=byId("rk100-reset");
  if(reset){reset.addEventListener("click",function(){Object.keys(defaults).forEach(function(id){var node=byId(id);if(node){node.value=defaults[id];}});optionIds.forEach(function(id){var node=byId(id);if(node){node.checked=false;}});var offers=Array.from(root.querySelectorAll(".rk100-offer-item"));offers.forEach(function(node,index){node.checked=index<6;});update();});}

  var progress=byId("rk100-progress");
  var updateProgress=function(){if(!progress){return;}var rect=root.getBoundingClientRect();var totalHeight=root.offsetHeight-window.innerHeight;var passed=Math.min(totalHeight,Math.max(0,-rect.top));progress.style.width=(totalHeight>0?passed/totalHeight*100:100).toFixed(1)+"%";};
  window.addEventListener("scroll",updateProgress,{passive:true});
  window.addEventListener("resize",updateProgress);
  update();
  updateProgress();
})();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-kosztuje-100-m%c2%b2-ogrzewania-podlogowego/">Ile kosztuje 100 m² ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
