<?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 oszczędności energii - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/oszczednosci-energii/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/oszczednosci-energii/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Mon, 14 Sep 2026 20:49:18 +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 oszczędności energii - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/oszczednosci-energii/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Rzeczywiste oszczędności na kosztach ogrzewania w skali roku – analiza rozstawu rur dla domu 150 m².</title>
		<link>https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 31 Jan 2026 11:58:03 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywność cieplna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty instalacji]]></category>
		<category><![CDATA[Koszty instalacji grzewczych]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Koszty ogrzewania podłogowego]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Oszczędności energii]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Taryfy energii]]></category>
		<category><![CDATA[cop pompy ciepła]]></category>
		<category><![CDATA[dom 150 m2]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędności energii]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[taryfy ure 2026]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3344</guid>

					<description><![CDATA[<p>Rzeczywiste oszczędności na kosztach ogrzewania w skali roku zaczynają się znacznie wcześniej niż przy wyborze źródła ciepła. W tej analizie, wykonanej dla domu o powierzchni 150 m², pokazujemy, jak rozstaw rur w ogrzewaniu podłogowym wpływa na temperaturę zasilania, sprawność instalacji oraz realne rachunki za energię. Porównujemy wariant 10 cm i 15 cm, uwzględniając nowe taryfy energetyczne, długoterminową eksploatację i faktyczne liczby, które mają bezpośrednie przełożenie na domowy budżet.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/">Rzeczywiste oszczędności na kosztach ogrzewania w skali roku – analiza rozstawu rur dla domu 150 m².</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>

  #rk-savings-guide {
    --rk-savings-navy: #123247;
    --rk-savings-navy-deep: #0b2536;
    --rk-savings-teal: #0e7787;
    --rk-savings-cyan: #5fdef0;
    --rk-savings-orange: #ff7a21;
    --rk-savings-green: #248c68;
    --rk-savings-red: #c64b48;
    --rk-savings-amber: #b77812;
    --rk-savings-ink: #173246;
    --rk-savings-muted: #5d7180;
    --rk-savings-line: #d7e1e7;
    --rk-savings-soft: #f3f7f9;
    --rk-savings-white: #ffffff;
    --rk-savings-shadow: 0 18px 48px rgba(13, 43, 60, 0.12);
    color: var(--rk-savings-ink);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    font-size: 18px;
    line-height: 1.72;
    overflow-x: hidden;
  }

  #rk-savings-guide,
  #rk-savings-guide *,
  #rk-savings-guide *::before,
  #rk-savings-guide *::after {
    box-sizing: border-box;
  }

  #rk-savings-guide .rk-savings-shell {
    width: min(1240px, 100%);
    margin: 0 auto;
  }

  #rk-savings-guide a {
    color: #087a9f;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
    overflow-wrap: anywhere;
  }

  #rk-savings-guide a:hover {
    color: #055d79;
  }

  #rk-savings-guide p,
  #rk-savings-guide ul,
  #rk-savings-guide ol {
    margin: 0 0 1.1rem;
  }

  #rk-savings-guide strong {
    color: inherit;
  }

  #rk-savings-guide .rk-savings-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(42px, 6vw, 78px);
    border-radius: 32px;
    background:
      radial-gradient(circle at 90% 112%, rgba(95, 222, 240, 0.16) 0 150px, transparent 151px),
      radial-gradient(circle at 90% 112%, transparent 0 205px, rgba(95, 222, 240, 0.09) 206px 275px, transparent 276px),
      linear-gradient(115deg, #122f43 0%, #123c4f 56%, #0d5b63 100%);
    color: #ffffff;
    box-shadow: var(--rk-savings-shadow);
  }

  #rk-savings-guide .rk-savings-hero::before {
    content: "";
    position: absolute;
    z-index: -1;
    left: -120px;
    bottom: -180px;
    width: 440px;
    height: 440px;
    border-radius: 50%;
    background: rgba(255, 122, 33, 0.10);
    filter: blur(2px);
  }

  #rk-savings-guide .rk-savings-hero-inner {
    position: relative;
    z-index: 1;
  }

  #rk-savings-guide .rk-savings-kicker,
  #rk-savings-guide .rk-savings-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 18px;
    color: var(--rk-savings-orange);
    font-size: 0.78rem;
    font-weight: 850;
    letter-spacing: 0.13em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-savings-guide .rk-savings-kicker::before,
  #rk-savings-guide .rk-savings-eyebrow::before {
    content: "";
    flex: 0 0 9px;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: currentColor;
  }

  #rk-savings-guide .rk-savings-hero-title {
    max-width: 1110px;
    margin: 0;
    color: #ffffff;
    font-size: clamp(2.55rem, 6.1vw, 5.2rem);
    font-weight: 900;
    letter-spacing: -0.055em;
    line-height: 0.98;
    text-wrap: balance;
  }

  #rk-savings-guide .rk-savings-hero-title span {
    color: var(--rk-savings-cyan);
  }

  #rk-savings-guide .rk-savings-hero-lead {
    max-width: 1050px;
    margin: 30px 0 0;
    color: #eef9fc;
    font-size: clamp(1.05rem, 2vw, 1.34rem);
    line-height: 1.62;
  }

  #rk-savings-guide .rk-savings-hero-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 11px;
    margin: 28px 0 0;
  }

  #rk-savings-guide .rk-savings-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    padding: 8px 17px;
    border: 1px solid rgba(255, 255, 255, 0.26);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
    font-size: 0.84rem;
    font-weight: 800;
    line-height: 1.3;
  }

  #rk-savings-guide .rk-savings-byline {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 24px;
    margin: 34px 0 0;
    color: #e5f0f4;
    font-size: 0.85rem;
    font-weight: 700;
  }

  #rk-savings-guide .rk-savings-hero-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
    margin-top: 38px;
  }

  #rk-savings-guide .rk-savings-hero-metric {
    min-width: 0;
    padding: 22px 24px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 19px;
    background: rgba(255, 255, 255, 0.08);
    color: #eff9fb;
    backdrop-filter: blur(5px);
  }

  #rk-savings-guide .rk-savings-hero-metric b {
    display: block;
    margin-bottom: 7px;
    color: #ffffff;
    font-size: 1.02rem;
    line-height: 1.3;
  }

  #rk-savings-guide .rk-savings-hero-metric span {
    display: block;
    color: #e2f1f5;
    font-size: 0.88rem;
    line-height: 1.55;
  }

  #rk-savings-guide .rk-savings-shortcuts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 24px 0;
    padding: 22px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 22px;
    background: #ffffff;
    box-shadow: 0 10px 30px rgba(18, 50, 71, 0.07);
  }

  #rk-savings-guide .rk-savings-shortcuts-label {
    display: block;
    flex-basis: 100%;
    color: var(--rk-savings-navy);
    font-size: 0.8rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-savings-guide .rk-savings-shortcuts a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 7px 13px;
    border: 1px solid #cbd9e1;
    border-radius: 999px;
    background: var(--rk-savings-soft);
    color: var(--rk-savings-navy);
    font-size: 0.76rem;
    font-weight: 800;
    line-height: 1.25;
    text-decoration: none;
  }

  #rk-savings-guide .rk-savings-shortcuts a:hover {
    border-color: var(--rk-savings-teal);
    background: #e8f6f8;
    color: #075f6b;
  }

  #rk-savings-guide .rk-savings-section,
  #rk-savings-guide .rk-savings-author {
    margin: 24px 0;
    padding: clamp(30px, 5vw, 62px);
    border: 1px solid var(--rk-savings-line);
    border-radius: 28px;
    background: #ffffff;
    box-shadow: 0 14px 42px rgba(18, 50, 71, 0.07);
    scroll-margin-top: 28px;
  }

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

  #rk-savings-guide .rk-savings-section-dark {
    border-color: #234c61;
    background:
      radial-gradient(circle at 105% 100%, rgba(95, 222, 240, 0.12) 0 190px, transparent 191px),
      linear-gradient(135deg, #102d40, #0e4854);
    color: #eff8fb;
  }

  #rk-savings-guide .rk-savings-section-dark .rk-savings-section-title,
  #rk-savings-guide .rk-savings-section-dark h3,
  #rk-savings-guide .rk-savings-section-dark strong {
    color: #ffffff;
  }

  #rk-savings-guide .rk-savings-section-dark .rk-savings-lead,
  #rk-savings-guide .rk-savings-section-dark p,
  #rk-savings-guide .rk-savings-section-dark li {
    color: #e3f0f4;
  }

  #rk-savings-guide .rk-savings-section-title,
  #rk-savings-guide .rk-savings-author-title {
    max-width: 1010px;
    margin: 0 0 18px;
    color: var(--rk-savings-navy);
    font-size: clamp(1.8rem, 3.7vw, 3.05rem);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.12;
    text-wrap: balance;
  }

  #rk-savings-guide .rk-savings-lead {
    max-width: 1040px;
    color: #314c5e;
    font-size: 1.08rem;
    line-height: 1.75;
  }

  #rk-savings-guide .rk-savings-answer {
    margin: 24px 0;
    padding: 26px 28px;
    border-left: 6px solid var(--rk-savings-cyan);
    border-radius: 8px 20px 20px 8px;
    background: var(--rk-savings-navy);
    color: #ffffff;
  }

  #rk-savings-guide .rk-savings-answer-label {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-savings-cyan);
    font-size: 0.76rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-savings-guide .rk-savings-answer p {
    margin: 0;
    color: #ffffff;
    font-size: 1.06rem;
  }

  #rk-savings-guide .rk-savings-grid-2,
  #rk-savings-guide .rk-savings-grid-3,
  #rk-savings-guide .rk-savings-grid-4 {
    display: grid;
    gap: 18px;
    margin: 24px 0;
  }

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

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

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

  #rk-savings-guide .rk-savings-card {
    min-width: 0;
    padding: 23px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 20px;
    background: #ffffff;
    color: var(--rk-savings-ink);
  }

  #rk-savings-guide .rk-savings-card h3 {
    margin: 0 0 10px;
    color: var(--rk-savings-navy);
    font-size: 1.06rem;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-card p,
  #rk-savings-guide .rk-savings-card li {
    color: #3e5869;
    font-size: 0.92rem;
    line-height: 1.65;
  }

  #rk-savings-guide .rk-savings-card p:last-child,
  #rk-savings-guide .rk-savings-card ul:last-child {
    margin-bottom: 0;
  }

  #rk-savings-guide .rk-savings-card-number {
    display: inline-grid;
    place-items: center;
    width: 36px;
    height: 36px;
    margin-bottom: 14px;
    border-radius: 50%;
    background: #dff8fb;
    color: #086678;
    font-size: 0.85rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-callout,
  #rk-savings-guide .rk-savings-note,
  #rk-savings-guide .rk-savings-warning {
    margin: 24px 0 0;
    padding: 20px 22px;
    border-radius: 16px;
    color: #274657;
    font-size: 0.94rem;
    line-height: 1.68;
  }

  #rk-savings-guide .rk-savings-callout {
    border: 1px solid #b9e7ed;
    background: #eaf9fb;
  }

  #rk-savings-guide .rk-savings-note {
    border: 1px solid #d7e1e7;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-warning {
    border: 1px solid #efd0a1;
    background: #fff6e9;
  }

  #rk-savings-guide .rk-savings-tool {
    overflow: hidden;
    margin: 28px 0 0;
    border: 1px solid #aacbd2;
    border-radius: 26px;
    background: #ffffff;
    box-shadow: 0 18px 46px rgba(15, 66, 78, 0.12);
  }

  #rk-savings-guide .rk-savings-tool-head {
    padding: 28px clamp(22px, 4vw, 40px);
    background: linear-gradient(125deg, var(--rk-savings-navy), #0d5962);
    color: #ffffff;
  }

  #rk-savings-guide .rk-savings-tool-head .rk-savings-eyebrow {
    color: #ffad73;
  }

  #rk-savings-guide .rk-savings-tool-head h3 {
    margin: 0 0 10px;
    color: #ffffff;
    font-size: clamp(1.35rem, 3vw, 2.05rem);
    line-height: 1.2;
  }

  #rk-savings-guide .rk-savings-tool-head p {
    max-width: 920px;
    margin: 0;
    color: #e9f7fa;
    font-size: 0.94rem;
  }

  #rk-savings-guide .rk-savings-tool-body {
    padding: clamp(22px, 4vw, 40px);
  }

  #rk-savings-guide .rk-savings-control-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-bottom: 22px;
  }

  #rk-savings-guide .rk-savings-control {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 18px;
    background: var(--rk-savings-soft);
  }

  #rk-savings-guide .rk-savings-control-label {
    display: block;
    margin-bottom: 11px;
    color: var(--rk-savings-navy);
    font-size: 0.84rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-segmented {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  #rk-savings-guide .rk-savings-segmented button {
    min-width: 0;
    min-height: 48px;
    padding: 9px 12px;
    border: 1px solid #bfd0d9;
    border-radius: 13px;
    background: #ffffff;
    color: var(--rk-savings-navy);
    font: inherit;
    font-size: 0.84rem;
    font-weight: 850;
    line-height: 1.25;
    cursor: pointer;
    transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
  }

  #rk-savings-guide .rk-savings-segmented button:hover {
    transform: translateY(-1px);
    border-color: var(--rk-savings-teal);
  }

  #rk-savings-guide .rk-savings-segmented button[aria-pressed="true"] {
    border-color: var(--rk-savings-navy);
    background: var(--rk-savings-navy);
    color: #ffffff;
    box-shadow: 0 8px 18px rgba(18, 50, 71, 0.18);
  }

  #rk-savings-guide .rk-savings-state-summary {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 16px;
    align-items: center;
    margin: 0 0 22px;
    padding: 20px;
    border: 1px solid #b9e7ed;
    border-radius: 18px;
    background: #eaf9fb;
  }

  #rk-savings-guide .rk-savings-state-dot {
    display: grid;
    place-items: center;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: var(--rk-savings-green);
    color: #ffffff;
    font-size: 1.25rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-state-summary[data-flow="closed"] {
    border-color: #e5c4c2;
    background: #fff1f0;
  }

  #rk-savings-guide .rk-savings-state-summary[data-flow="closed"] .rk-savings-state-dot {
    background: var(--rk-savings-red);
  }

  #rk-savings-guide .rk-savings-state-summary strong {
    display: block;
    margin-bottom: 2px;
    color: var(--rk-savings-navy);
    font-size: 1.05rem;
  }

  #rk-savings-guide .rk-savings-state-summary p {
    margin: 0;
    color: #405c6d;
    font-size: 0.91rem;
    line-height: 1.55;
  }

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

  #rk-savings-guide .rk-savings-flow-step {
    position: relative;
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 20px;
    background: #ffffff;
    color: var(--rk-savings-ink);
    transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
  }

  #rk-savings-guide .rk-savings-flow-step.is-active {
    border-color: #64c7d2;
    box-shadow: 0 12px 28px rgba(14, 119, 135, 0.13);
    transform: translateY(-2px);
  }

  #rk-savings-guide .rk-savings-flow-step.is-rest {
    background: #f7f9fa;
  }

  #rk-savings-guide .rk-savings-flow-top {
    display: flex;
    gap: 13px;
    align-items: center;
    margin-bottom: 14px;
  }

  #rk-savings-guide .rk-savings-flow-icon {
    display: grid;
    flex: 0 0 52px;
    place-items: center;
    width: 52px;
    height: 52px;
    border-radius: 16px;
    background: #e6f7f9;
    color: #087083;
  }

  #rk-savings-guide .rk-savings-flow-icon svg {
    width: 29px;
    height: 29px;
    fill: none;
    stroke: currentColor;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.8;
  }

  #rk-savings-guide .rk-savings-flow-number {
    display: block;
    color: var(--rk-savings-orange);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-savings-guide .rk-savings-flow-step h4 {
    margin: 2px 0 0;
    color: var(--rk-savings-navy);
    font-size: 1rem;
    line-height: 1.25;
  }

  #rk-savings-guide .rk-savings-flow-value {
    display: inline-flex;
    align-items: center;
    min-height: 31px;
    margin-bottom: 10px;
    padding: 5px 11px;
    border-radius: 999px;
    background: #dff6e9;
    color: #176a4e;
    font-size: 0.77rem;
    font-weight: 900;
    line-height: 1.2;
  }

  #rk-savings-guide .rk-savings-flow-value.is-off {
    background: #eef1f3;
    color: #5c6e79;
  }

  #rk-savings-guide .rk-savings-flow-value.is-closed {
    background: #fde7e6;
    color: #9c3936;
  }

  #rk-savings-guide .rk-savings-flow-copy {
    margin: 0;
    color: #405b6c;
    font-size: 0.87rem;
    line-height: 1.6;
  }

  #rk-savings-guide .rk-savings-tool-disclaimer {
    margin: 22px 0 0;
    padding: 17px 19px;
    border: 1px solid #efd0a1;
    border-radius: 15px;
    background: #fff6e9;
    color: #5f4a2c;
    font-size: 0.86rem;
    line-height: 1.6;
  }

  #rk-savings-guide .rk-savings-compare-table,
  #rk-savings-guide .rk-savings-diagnostic-table {
    overflow: hidden;
    margin: 24px 0;
    border: 1px solid var(--rk-savings-line);
    border-radius: 20px;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-table-row {
    display: grid;
    grid-template-columns: minmax(150px, 0.8fr) repeat(2, minmax(0, 1fr));
    border-top: 1px solid var(--rk-savings-line);
  }

  #rk-savings-guide .rk-savings-table-row:first-child {
    border-top: 0;
  }

  #rk-savings-guide .rk-savings-table-row > div {
    min-width: 0;
    padding: 18px 20px;
    border-left: 1px solid var(--rk-savings-line);
    color: #3b5667;
    font-size: 0.89rem;
    line-height: 1.58;
  }

  #rk-savings-guide .rk-savings-table-row > div:first-child {
    border-left: 0;
  }

  #rk-savings-guide .rk-savings-table-head {
    background: var(--rk-savings-navy);
  }

  #rk-savings-guide .rk-savings-table-head > div {
    color: #ffffff;
    font-weight: 850;
  }

  #rk-savings-guide .rk-savings-table-label {
    background: #f2f6f8;
    color: var(--rk-savings-navy) !important;
    font-weight: 850;
  }

  #rk-savings-guide .rk-savings-diagnostic-table .rk-savings-table-row {
    grid-template-columns: minmax(180px, 0.8fr) minmax(0, 1fr) minmax(0, 1.15fr);
  }

  #rk-savings-guide .rk-savings-spec-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin: 24px 0;
  }

  #rk-savings-guide .rk-savings-spec {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 17px;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-spec-mark {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #daf4f7;
    color: #0b7180;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-spec strong {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-savings-navy);
    font-size: 0.94rem;
  }

  #rk-savings-guide .rk-savings-spec span {
    display: block;
    color: #4b6474;
    font-size: 0.84rem;
    line-height: 1.55;
  }

  #rk-savings-guide .rk-savings-chain {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    margin: 26px 0;
  }

  #rk-savings-guide .rk-savings-chain-item {
    position: relative;
    min-width: 0;
    padding: 19px 15px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 17px;
    background: #ffffff;
    color: var(--rk-savings-ink);
    text-align: center;
  }

  #rk-savings-guide .rk-savings-chain-item::after {
    content: "→";
    position: absolute;
    top: 50%;
    right: -15px;
    z-index: 2;
    width: 18px;
    color: var(--rk-savings-orange);
    font-size: 1.15rem;
    font-weight: 900;
    line-height: 1;
    transform: translateY(-50%);
  }

  #rk-savings-guide .rk-savings-chain-item:last-child::after {
    display: none;
  }

  #rk-savings-guide .rk-savings-chain-item strong {
    display: block;
    color: var(--rk-savings-navy);
    font-size: 0.9rem;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-chain-item span {
    display: block;
    margin-top: 5px;
    color: #56707f;
    font-size: 0.75rem;
    line-height: 1.45;
  }

  #rk-savings-guide .rk-savings-steps {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin: 24px 0;
    counter-reset: rk-savings-step;
  }

  #rk-savings-guide .rk-savings-step {
    position: relative;
    min-width: 0;
    padding: 21px 21px 21px 67px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 19px;
    background: #ffffff;
    color: var(--rk-savings-ink);
    counter-increment: rk-savings-step;
  }

  #rk-savings-guide .rk-savings-step::before {
    content: counter(rk-savings-step);
    position: absolute;
    top: 20px;
    left: 20px;
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--rk-savings-navy);
    color: #ffffff;
    font-size: 0.82rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-step h3 {
    margin: 0 0 7px;
    color: var(--rk-savings-navy);
    font-size: 1rem;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-step p {
    margin: 0;
    color: #435e6f;
    font-size: 0.88rem;
    line-height: 1.6;
  }

  #rk-savings-guide .rk-savings-mistakes {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 24px;
  }

  #rk-savings-guide .rk-savings-mistake {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 13px;
    min-width: 0;
    padding: 19px;
    border: 1px solid #ead4d2;
    border-radius: 17px;
    background: #fff7f6;
  }

  #rk-savings-guide .rk-savings-mistake-icon {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-savings-red);
    color: #ffffff;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-mistake strong {
    color: #7e302e;
    font-size: 0.94rem;
  }

  #rk-savings-guide .rk-savings-mistake p {
    margin: 4px 0 0;
    color: #5f4d4c;
    font-size: 0.85rem;
    line-height: 1.55;
  }

  #rk-savings-guide .rk-savings-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 24px;
  }

  #rk-savings-guide .rk-savings-checklist-item {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 13px;
    align-items: start;
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 17px;
    background: #ffffff;
    color: #425d6e;
    font-size: 0.86rem;
    line-height: 1.55;
  }

  #rk-savings-guide .rk-savings-checklist-item > span {
    display: grid;
    place-items: center;
    width: 31px;
    height: 31px;
    border-radius: 50%;
    background: #dff6e9;
    color: var(--rk-savings-green);
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-checklist-item strong {
    color: var(--rk-savings-navy);
    font-size: 0.92rem;
  }

  #rk-savings-guide .rk-savings-formula {
    display: grid;
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
    gap: 18px;
    align-items: stretch;
    margin: 24px 0;
  }

  #rk-savings-guide .rk-savings-formula-box {
    display: grid;
    place-items: center;
    min-height: 170px;
    padding: 24px;
    border-radius: 20px;
    background: var(--rk-savings-navy);
    color: #ffffff;
    text-align: center;
  }

  #rk-savings-guide .rk-savings-formula-box strong {
    display: block;
    color: var(--rk-savings-cyan);
    font-size: clamp(1.35rem, 3vw, 2rem);
    line-height: 1.25;
  }

  #rk-savings-guide .rk-savings-formula-box span {
    display: block;
    margin-top: 8px;
    color: #dcecf2;
    font-size: 0.82rem;
  }

  #rk-savings-guide .rk-savings-formula-copy {
    padding: 23px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 20px;
    background: #ffffff;
    color: #3f596a;
  }

  #rk-savings-guide .rk-savings-formula-copy h3 {
    margin: 0 0 9px;
    color: var(--rk-savings-navy);
    font-size: 1.08rem;
  }

  #rk-savings-guide .rk-savings-formula-copy p:last-child {
    margin-bottom: 0;
  }

  #rk-savings-guide .rk-savings-cta {
    margin: 32px 0 0;
    padding: clamp(27px, 4vw, 42px);
    border-radius: 24px;
    background:
      radial-gradient(circle at 100% 110%, rgba(95, 222, 240, 0.14) 0 130px, transparent 131px),
      linear-gradient(125deg, var(--rk-savings-navy), #0b5761);
    color: #ffffff;
    box-shadow: 0 18px 45px rgba(11, 45, 62, 0.18);
  }

  #rk-savings-guide .rk-savings-cta-title {
    max-width: 930px;
    margin: 0 0 12px;
    color: #ffffff;
    font-size: clamp(1.45rem, 3.2vw, 2.35rem);
    font-weight: 900;
    letter-spacing: -0.03em;
    line-height: 1.16;
  }

  #rk-savings-guide .rk-savings-cta p {
    max-width: 980px;
    margin-bottom: 20px;
    color: #e7f3f6;
  }

  #rk-savings-guide .rk-savings-cta-button {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 52px;
    padding: 12px 20px;
    border: 2px solid var(--rk-savings-orange);
    border-radius: 12px;
    background: var(--rk-savings-orange);
    color: #ffffff !important;
    font-weight: 900;
    line-height: 1.3;
    text-align: center;
    text-decoration: none !important;
    box-shadow: 0 10px 22px rgba(255, 122, 33, 0.22);
  }

  #rk-savings-guide .rk-savings-cta-button:hover {
    border-color: #ff9652;
    background: #ff9652;
    color: #ffffff !important;
  }

  #rk-savings-guide .rk-savings-link-disclosure {
    display: block;
    margin-top: 13px;
    color: #cfe1e6;
    font-size: 0.72rem;
    line-height: 1.45;
  }

  #rk-savings-guide .rk-savings-source-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin-top: 24px;
  }

  #rk-savings-guide .rk-savings-source-card {
    min-width: 0;
    padding: 20px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 18px;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-source-card a {
    display: inline-block;
    color: var(--rk-savings-navy);
    font-size: 0.93rem;
    font-weight: 900;
    line-height: 1.45;
  }

  #rk-savings-guide .rk-savings-source-card p {
    margin: 8px 0 0;
    color: #516a79;
    font-size: 0.83rem;
    line-height: 1.55;
  }

  #rk-savings-guide .rk-savings-responsibility {
    margin-top: 20px;
    padding: 21px;
    border: 1px solid #d7e1e7;
    border-radius: 18px;
    background: #ffffff;
    color: #405a6b;
    font-size: 0.87rem;
    line-height: 1.62;
  }

  #rk-savings-guide .rk-savings-responsibility p:last-child {
    margin-bottom: 0;
  }

  #rk-savings-guide .rk-savings-faq details {
    overflow: hidden;
    margin: 12px 0;
    border: 1px solid var(--rk-savings-line);
    border-radius: 16px;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-faq summary {
    position: relative;
    padding: 18px 52px 18px 20px;
    color: var(--rk-savings-navy);
    font-size: 0.96rem;
    font-weight: 850;
    line-height: 1.45;
    cursor: pointer;
    list-style: none;
  }

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

  #rk-savings-guide .rk-savings-faq summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 20px;
    color: var(--rk-savings-teal);
    font-size: 1.4rem;
    font-weight: 700;
    transform: translateY(-50%);
  }

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

  #rk-savings-guide .rk-savings-faq-answer {
    padding: 0 20px 18px;
    color: #415c6d;
    font-size: 0.9rem;
    line-height: 1.65;
  }

  #rk-savings-guide .rk-savings-faq-answer p:last-child {
    margin-bottom: 0;
  }

  #rk-savings-guide .rk-savings-author {
    background:
      radial-gradient(circle at 98% 100%, rgba(95, 222, 240, 0.12) 0 150px, transparent 151px),
      linear-gradient(130deg, #102d40, #113f4e);
    color: #eaf4f7;
  }

  #rk-savings-guide .rk-savings-author .rk-savings-eyebrow {
    color: #ff9a57;
  }

  #rk-savings-guide .rk-savings-author-title {
    color: #ffffff;
  }

  #rk-savings-guide .rk-savings-author-layout {
    display: grid;
    grid-template-columns: minmax(210px, 0.34fr) minmax(0, 1fr);
    gap: 28px;
    align-items: start;
    margin-top: 25px;
  }

  #rk-savings-guide .rk-savings-author-side {
    padding: 22px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 20px;
    background: rgba(255, 255, 255, 0.07);
    text-align: center;
  }

  #rk-savings-guide .rk-savings-author-photo {
    width: 150px;
    height: 150px;
    margin: 0 auto 16px;
    overflow: hidden;
    border: 4px solid rgba(255, 255, 255, 0.24);
    border-radius: 50%;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  #rk-savings-guide .rk-savings-author-name a {
    color: #ffffff;
    font-size: 1.12rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-author-role {
    margin: 7px 0 13px;
    color: #dbeaf0;
    font-size: 0.82rem;
    line-height: 1.5;
  }

  #rk-savings-guide .rk-savings-author-social {
    display: flex;
    justify-content: center;
    gap: 9px;
  }

  #rk-savings-guide .rk-savings-author-social a {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
    font-size: 0.8rem;
    font-weight: 900;
    text-decoration: none;
  }

  #rk-savings-guide .rk-savings-author-main p {
    color: #dcecf1;
    font-size: 0.92rem;
  }

  #rk-savings-guide .rk-savings-author-main a {
    color: var(--rk-savings-cyan);
  }

  #rk-savings-guide .rk-savings-author-quote {
    margin-bottom: 21px;
    padding: 22px;
    border-left: 5px solid var(--rk-savings-cyan);
    border-radius: 7px 17px 17px 7px;
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
    font-size: 1.03rem;
    font-weight: 750;
    line-height: 1.6;
  }

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

  #rk-savings-guide .rk-savings-author-fact {
    min-width: 0;
    padding: 15px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 15px;
    background: rgba(255, 255, 255, 0.06);
    color: #d7e8ed;
    font-size: 0.75rem;
    line-height: 1.45;
  }

  #rk-savings-guide .rk-savings-author-fact strong {
    display: block;
    margin-bottom: 4px;
    color: #ffffff;
    font-size: 0.8rem;
  }

  #rk-savings-guide .rk-savings-tool-tabs,
  #rk-savings-guide .rk-savings-graphic-controls {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin: 0 0 22px;
  }

  #rk-savings-guide .rk-savings-tool-tabs button,
  #rk-savings-guide .rk-savings-graphic-controls button {
    min-height: 44px;
    padding: 9px 15px;
    border: 1px solid #bdd0d8;
    border-radius: 999px;
    background: #ffffff;
    color: var(--rk-savings-navy);
    font: inherit;
    font-size: 0.8rem;
    font-weight: 850;
    line-height: 1.25;
    cursor: pointer;
  }

  #rk-savings-guide .rk-savings-tool-tabs button[aria-selected="true"],
  #rk-savings-guide .rk-savings-graphic-controls button[aria-pressed="true"] {
    border-color: var(--rk-savings-navy);
    background: var(--rk-savings-navy);
    color: #ffffff;
    box-shadow: 0 8px 20px rgba(18, 50, 71, 0.18);
  }

  #rk-savings-guide .rk-savings-panel[hidden],
  #rk-savings-guide .rk-savings-is-hidden {
    display: none !important;
  }

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

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

  #rk-savings-guide .rk-savings-field {
    min-width: 0;
    padding: 16px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 16px;
    background: var(--rk-savings-soft);
  }

  #rk-savings-guide .rk-savings-field label,
  #rk-savings-guide .rk-savings-field-label {
    display: block;
    margin: 0 0 7px;
    color: var(--rk-savings-navy);
    font-size: 0.79rem;
    font-weight: 900;
    line-height: 1.4;
  }

  #rk-savings-guide .rk-savings-field input,
  #rk-savings-guide .rk-savings-field select,
  #rk-savings-guide .rk-savings-loop-row input,
  #rk-savings-guide .rk-savings-curve-row input {
    width: 100%;
    min-height: 47px;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid #b9cbd4;
    border-radius: 11px;
    background: #ffffff;
    color: #173246;
    font: inherit;
    font-size: 0.91rem;
    line-height: 1.2;
  }

  #rk-savings-guide .rk-savings-field input:focus,
  #rk-savings-guide .rk-savings-field select:focus,
  #rk-savings-guide .rk-savings-loop-row input:focus,
  #rk-savings-guide .rk-savings-curve-row input:focus {
    outline: 3px solid rgba(95, 222, 240, 0.34);
    border-color: var(--rk-savings-teal);
  }

  #rk-savings-guide .rk-savings-field-help {
    display: block;
    margin-top: 7px;
    color: #5c7180;
    font-size: 0.7rem;
    line-height: 1.45;
  }

  #rk-savings-guide .rk-savings-tool-subtitle {
    margin: 26px 0 10px;
    color: var(--rk-savings-navy);
    font-size: 1.12rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-loop-editor,
  #rk-savings-guide .rk-savings-curve-editor {
    margin: 18px 0;
    padding: 18px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 18px;
    background: var(--rk-savings-soft);
  }

  #rk-savings-guide .rk-savings-loop-row,
  #rk-savings-guide .rk-savings-curve-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(120px, 0.46fr) auto;
    gap: 9px;
    align-items: end;
    margin-top: 10px;
  }

  #rk-savings-guide .rk-savings-curve-row {
    grid-template-columns: 42px repeat(2, minmax(110px, 1fr));
  }

  #rk-savings-guide .rk-savings-loop-row:first-child,
  #rk-savings-guide .rk-savings-curve-row:first-child {
    margin-top: 0;
  }

  #rk-savings-guide .rk-savings-loop-cell label,
  #rk-savings-guide .rk-savings-curve-cell label {
    display: block;
    margin-bottom: 5px;
    color: #496371;
    font-size: 0.68rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-remove-loop,
  #rk-savings-guide .rk-savings-add-loop {
    min-height: 45px;
    padding: 9px 13px;
    border: 1px solid #c7d5dc;
    border-radius: 11px;
    background: #ffffff;
    color: var(--rk-savings-navy);
    font: inherit;
    font-size: 0.77rem;
    font-weight: 850;
    cursor: pointer;
  }

  #rk-savings-guide .rk-savings-remove-loop {
    width: 45px;
    padding: 8px;
    color: #9b3b38;
  }

  #rk-savings-guide .rk-savings-add-loop {
    margin-top: 13px;
    border-color: #86cdd5;
    background: #eaf9fb;
    color: #075f6b;
  }

  #rk-savings-guide .rk-savings-calc-layout {
    display: grid;
    grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
    gap: 20px;
    align-items: start;
  }

  #rk-savings-guide .rk-savings-results {
    min-width: 0;
  }

  #rk-savings-guide .rk-savings-result-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 11px;
    margin: 0 0 16px;
  }

  #rk-savings-guide .rk-savings-result {
    min-width: 0;
    padding: 17px;
    border: 1px solid #b8dce1;
    border-radius: 16px;
    background: #effbfc;
  }

  #rk-savings-guide .rk-savings-result span {
    display: block;
    color: #4c6876;
    font-size: 0.7rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-result strong {
    display: block;
    margin-top: 4px;
    color: var(--rk-savings-navy);
    font-size: clamp(1.2rem, 2.5vw, 1.7rem);
    line-height: 1.2;
  }

  #rk-savings-guide .rk-savings-breakdown {
    padding: 18px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 17px;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-breakdown-title {
    display: block;
    margin-bottom: 12px;
    color: var(--rk-savings-navy);
    font-size: 0.86rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-break-row {
    display: grid;
    grid-template-columns: minmax(104px, 0.62fr) minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
    margin: 9px 0;
    color: #496371;
    font-size: 0.73rem;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-break-row strong,
  #rk-savings-guide .rk-savings-curve-row > strong {
    color: var(--rk-savings-navy);
  }

  #rk-savings-guide .rk-savings-section-dark .rk-savings-callout strong {
    color: var(--rk-savings-navy);
  }

  #rk-savings-guide .rk-savings-break-track {
    height: 9px;
    overflow: hidden;
    border-radius: 999px;
    background: #e8eef1;
  }

  #rk-savings-guide .rk-savings-break-fill {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-savings-teal), var(--rk-savings-cyan));
  }

  #rk-savings-guide .rk-savings-chart-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 18px;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-chart-title {
    margin: 0 0 11px;
    color: var(--rk-savings-navy);
    font-size: 0.95rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-chart-wrap {
    width: 100%;
    min-width: 0;
    overflow: hidden;
    border-radius: 13px;
    background: #f8fbfc;
  }

  #rk-savings-guide .rk-savings-chart-wrap svg {
    display: block;
    width: 100%;
    height: auto;
    min-height: 310px;
  }

  #rk-savings-guide .rk-savings-chart-grid-line {
    stroke: #dbe5ea;
    stroke-width: 1;
  }

  #rk-savings-guide .rk-savings-chart-axis {
    stroke: #6f8592;
    stroke-width: 1.4;
  }

  #rk-savings-guide .rk-savings-system-path {
    fill: none;
    stroke: var(--rk-savings-teal);
    stroke-width: 4;
  }

  #rk-savings-guide .rk-savings-device-path {
    fill: none;
    stroke: var(--rk-savings-orange);
    stroke-width: 4;
  }

  #rk-savings-guide .rk-savings-design-point {
    fill: var(--rk-savings-navy);
    stroke: #ffffff;
    stroke-width: 4;
  }

  #rk-savings-guide .rk-savings-operating-point {
    fill: var(--rk-savings-orange);
    stroke: #ffffff;
    stroke-width: 4;
  }

  #rk-savings-guide .rk-savings-chart-tick,
  #rk-savings-guide .rk-savings-chart-label {
    fill: #55707f;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
  }

  #rk-savings-guide .rk-savings-chart-label {
    fill: var(--rk-savings-navy);
    font-size: 13px;
    font-weight: 800;
  }

  #rk-savings-guide .rk-savings-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 15px;
    margin-top: 12px;
    color: #536d7b;
    font-size: 0.69rem;
    font-weight: 800;
  }

  #rk-savings-guide .rk-savings-legend span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
  }

  #rk-savings-guide .rk-savings-legend i {
    display: inline-block;
    width: 25px;
    height: 4px;
    border-radius: 999px;
    background: var(--rk-savings-teal);
  }

  #rk-savings-guide .rk-savings-legend .is-pump i {
    background: var(--rk-savings-orange);
  }

  #rk-savings-guide .rk-savings-legend .is-point i {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--rk-savings-navy);
  }

  #rk-savings-guide .rk-savings-status {
    margin: 15px 0 0;
    padding: 15px 17px;
    border: 1px solid #b8dce1;
    border-radius: 14px;
    background: #effbfc;
    color: #315261;
    font-size: 0.79rem;
    line-height: 1.55;
  }

  #rk-savings-guide .rk-savings-status.is-warning {
    border-color: #efd0a1;
    background: #fff6e9;
    color: #664d2b;
  }

  #rk-savings-guide .rk-savings-status.is-bad {
    border-color: #e6c2c0;
    background: #fff2f1;
    color: #743b38;
  }

  #rk-savings-guide .rk-savings-status.is-good {
    border-color: #b8ddce;
    background: #eefaf5;
    color: #245d48;
  }

  #rk-savings-guide .rk-savings-hydraulic-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin-top: 18px;
  }

  #rk-savings-guide .rk-savings-hydraulic-card {
    min-width: 0;
    padding: 20px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 18px;
    background: #ffffff;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
  }

  #rk-savings-guide .rk-savings-hydraulic-card.is-active {
    border-color: #5fc6d1;
    box-shadow: 0 12px 28px rgba(14, 119, 135, 0.13);
    transform: translateY(-2px);
  }

  #rk-savings-guide .rk-savings-hydraulic-card.is-muted {
    opacity: 0.58;
    background: #f3f6f7;
  }

  #rk-savings-guide .rk-savings-hydraulic-number {
    display: inline-grid;
    place-items: center;
    width: 34px;
    height: 34px;
    margin-bottom: 12px;
    border-radius: 50%;
    background: #ddf6f8;
    color: #086878;
    font-size: 0.78rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-hydraulic-card h3 {
    margin: 0 0 8px;
    color: var(--rk-savings-navy);
    font-size: 1rem;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-hydraulic-value {
    display: inline-flex;
    min-height: 29px;
    align-items: center;
    margin: 0 0 9px;
    padding: 5px 10px;
    border-radius: 999px;
    background: #eef4f6;
    color: #3f5e6d;
    font-size: 0.71rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-hydraulic-card.is-active .rk-savings-hydraulic-value {
    background: #dff6e9;
    color: #21664e;
  }

  #rk-savings-guide .rk-savings-hydraulic-card p {
    margin: 0;
    color: #466171;
    font-size: 0.82rem;
    line-height: 1.58;
  }

  #rk-savings-guide .rk-savings-graphic-result {
    margin-top: 16px;
    padding: 20px;
    border-left: 5px solid var(--rk-savings-cyan);
    border-radius: 8px 16px 16px 8px;
    background: var(--rk-savings-navy);
    color: #ffffff;
  }

  #rk-savings-guide .rk-savings-graphic-result strong {
    display: block;
    margin-bottom: 5px;
    color: #ffffff;
  }

  #rk-savings-guide .rk-savings-graphic-result p {
    margin: 0;
    color: #e8f5f8;
    font-size: 0.87rem;
  }

  #rk-savings-guide .rk-savings-equation {
    overflow-wrap: anywhere;
    font-variant-numeric: tabular-nums;
  }

  #rk-savings-guide .rk-savings-visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
  }

  @media (max-width: 1040px) {
    #rk-savings-guide .rk-savings-grid-4 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

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

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

    #rk-savings-guide .rk-savings-chain-item::after {
      display: none;
    }

    #rk-savings-guide .rk-savings-calc-layout {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 820px) {
    #rk-savings-guide {
      font-size: 17px;
    }

    #rk-savings-guide .rk-savings-hero {
      border-radius: 24px;
    }

    #rk-savings-guide .rk-savings-hero-metrics,
    #rk-savings-guide .rk-savings-grid-3,
    #rk-savings-guide .rk-savings-source-grid,
    #rk-savings-guide .rk-savings-author-facts {
      grid-template-columns: 1fr;
    }

    #rk-savings-guide .rk-savings-control-grid,
    #rk-savings-guide .rk-savings-formula,
    #rk-savings-guide .rk-savings-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-savings-guide .rk-savings-author-side {
      max-width: 430px;
    }

    #rk-savings-guide .rk-savings-field-grid-3,
    #rk-savings-guide .rk-savings-hydraulic-grid {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 700px) {
    #rk-savings-guide .rk-savings-section,
    #rk-savings-guide .rk-savings-author {
      border-radius: 22px;
    }

    #rk-savings-guide .rk-savings-grid-2,
    #rk-savings-guide .rk-savings-grid-4,
    #rk-savings-guide .rk-savings-flow-grid,
    #rk-savings-guide .rk-savings-spec-grid,
    #rk-savings-guide .rk-savings-steps,
    #rk-savings-guide .rk-savings-mistakes,
    #rk-savings-guide .rk-savings-checklist,
    #rk-savings-guide .rk-savings-chain {
      grid-template-columns: 1fr;
    }

    #rk-savings-guide .rk-savings-field-grid,
    #rk-savings-guide .rk-savings-result-grid {
      grid-template-columns: 1fr;
    }

    #rk-savings-guide .rk-savings-table-row,
    #rk-savings-guide .rk-savings-diagnostic-table .rk-savings-table-row {
      display: block;
      padding: 8px 0;
      border-top: 8px solid var(--rk-savings-soft);
    }

    #rk-savings-guide .rk-savings-table-row:first-child {
      display: none;
    }

    #rk-savings-guide .rk-savings-table-row > div {
      display: grid;
      grid-template-columns: minmax(104px, 0.42fr) minmax(0, 1fr);
      gap: 10px;
      padding: 12px 15px;
      border: 0;
    }

    #rk-savings-guide .rk-savings-table-row > div::before {
      content: attr(data-label);
      color: var(--rk-savings-navy);
      font-size: 0.76rem;
      font-weight: 900;
      line-height: 1.45;
    }

    #rk-savings-guide .rk-savings-table-label {
      background: #eef4f6;
    }

    #rk-savings-guide .rk-savings-loop-row {
      grid-template-columns: minmax(0, 1fr) minmax(100px, 0.6fr) auto;
    }
  }

  @media (max-width: 520px) {
    #rk-savings-guide {
      font-size: 16px;
    }

    #rk-savings-guide .rk-savings-hero {
      padding: 34px 22px;
      border-radius: 20px;
    }

    #rk-savings-guide .rk-savings-hero-title {
      font-size: clamp(2.25rem, 12vw, 3.5rem);
      letter-spacing: -0.05em;
    }

    #rk-savings-guide .rk-savings-hero-lead {
      margin-top: 23px;
    }

    #rk-savings-guide .rk-savings-hero-tag {
      min-height: 38px;
      padding: 7px 12px;
      font-size: 0.75rem;
    }

    #rk-savings-guide .rk-savings-byline {
      display: grid;
      gap: 7px;
    }

    #rk-savings-guide .rk-savings-hero-metric {
      padding: 19px;
    }

    #rk-savings-guide .rk-savings-shortcuts {
      padding: 17px;
      border-radius: 18px;
    }

    #rk-savings-guide .rk-savings-shortcuts a {
      font-size: 0.72rem;
    }

    #rk-savings-guide .rk-savings-section,
    #rk-savings-guide .rk-savings-author {
      padding: 28px 19px;
    }

    #rk-savings-guide .rk-savings-answer,
    #rk-savings-guide .rk-savings-card,
    #rk-savings-guide .rk-savings-flow-step {
      padding: 20px;
    }

    #rk-savings-guide .rk-savings-tool-head,
    #rk-savings-guide .rk-savings-tool-body {
      padding: 22px 17px;
    }

    #rk-savings-guide .rk-savings-segmented {
      grid-template-columns: 1fr;
    }

    #rk-savings-guide .rk-savings-state-summary {
      grid-template-columns: 1fr;
    }

    #rk-savings-guide .rk-savings-state-dot {
      width: 44px;
      height: 44px;
    }

    #rk-savings-guide .rk-savings-step {
      padding: 66px 19px 19px;
    }

    #rk-savings-guide .rk-savings-step::before {
      top: 19px;
      left: 19px;
    }

    #rk-savings-guide .rk-savings-cta-button {
      width: 100%;
    }

    #rk-savings-guide .rk-savings-table-row > div {
      grid-template-columns: 1fr;
      gap: 4px;
    }

    #rk-savings-guide .rk-savings-loop-row,
    #rk-savings-guide .rk-savings-curve-row {
      grid-template-columns: 1fr;
      padding: 13px;
      border: 1px solid var(--rk-savings-line);
      border-radius: 14px;
      background: #ffffff;
    }

    #rk-savings-guide .rk-savings-remove-loop {
      width: 100%;
    }

    #rk-savings-guide .rk-savings-chart-wrap svg {
      min-height: 260px;
    }

    #rk-savings-guide .rk-savings-break-row {
      grid-template-columns: 1fr auto;
    }

    #rk-savings-guide .rk-savings-break-track {
      grid-column: 1 / -1;
      grid-row: 2;
    }
  }

  @media print {
    #rk-savings-guide .rk-savings-shortcuts,
    #rk-savings-guide .rk-savings-control-grid {
      display: none !important;
    }

    #rk-savings-guide .rk-savings-section,
    #rk-savings-guide .rk-savings-author,
    #rk-savings-guide .rk-savings-hero {
      break-inside: avoid;
      box-shadow: none;
    }

    #rk-savings-guide .rk-savings-faq details {
      break-inside: avoid;
    }

    #rk-savings-guide .rk-savings-faq details:not([open]) .rk-savings-faq-answer {
      display: block;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-savings-guide *,
    #rk-savings-guide *::before,
    #rk-savings-guide *::after {
      scroll-behavior: auto !important;
      transition-duration: 0.01ms !important;
    }
  }

  #rk-savings-guide .rk-savings-field input.rk-savings-range {
    width: 100%;
    min-height: 10px;
    height: 10px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: #dce8ed;
    accent-color: var(--rk-savings-orange);
    cursor: pointer;
  }

  #rk-savings-guide .rk-savings-field input.rk-savings-range:focus {
    outline: 3px solid rgba(95, 222, 240, 0.34);
    outline-offset: 5px;
  }

  #rk-savings-guide .rk-savings-control-label {
    display: block;
    margin: 22px 0 10px;
    color: var(--rk-savings-navy);
    font-size: 0.82rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-limit-line {
    stroke: #ad6f13;
    stroke-width: 2;
    stroke-dasharray: 7 6;
  }

  #rk-savings-guide .rk-savings-limit-label {
    fill: #8a5914;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 11px;
    font-weight: 800;
  }

  #rk-savings-guide .rk-savings-current-guide {
    stroke: #8da0aa;
    stroke-width: 1.5;
    stroke-dasharray: 3 5;
  }

  #rk-savings-guide .rk-savings-section-dark .rk-savings-card {
    border-color: #cbd9e1;
    background: #ffffff;
    color: #173246;
  }

  #rk-savings-guide .rk-savings-section-dark .rk-savings-card h3 {
    color: #123247;
  }

  #rk-savings-guide .rk-savings-section-dark .rk-savings-card p,
  #rk-savings-guide .rk-savings-section-dark .rk-savings-card li {
    color: #3e5869;
  }

  #rk-savings-guide .rk-savings-section-dark .rk-savings-card a {
    color: #087a9f;
  }

  #rk-savings-guide button:focus-visible,
  #rk-savings-guide a:focus-visible,
  #rk-savings-guide summary:focus-visible {
    outline: 3px solid var(--rk-savings-cyan);
    outline-offset: 3px;
  }

  @media (max-width: 520px) {
    #rk-savings-guide .rk-savings-chart-card {
      padding: 12px;
    }

    #rk-savings-guide .rk-savings-chart-wrap svg {
      min-height: 235px;
    }

    #rk-savings-guide .rk-savings-graphic-controls button {
      width: 100%;
    }
  }



  #rk-savings-guide .rk-savings-equation-box {
    margin: 20px 0;
    padding: clamp(20px, 3vw, 30px);
    border: 1px solid #add6dc;
    border-radius: 20px;
    background: linear-gradient(135deg, #f0fbfc 0%, #ffffff 100%);
    box-shadow: 0 12px 30px rgba(13, 73, 88, 0.08);
  }

  #rk-savings-guide .rk-savings-equation-label {
    display: block;
    margin-bottom: 8px;
    color: #087083;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-savings-guide .rk-savings-equation-main {
    margin-bottom: 10px;
    color: var(--rk-savings-navy);
    font-size: clamp(1.18rem, 3vw, 1.78rem);
    font-weight: 950;
    line-height: 1.25;
    overflow-wrap: anywhere;
    font-variant-numeric: tabular-nums;
  }

  #rk-savings-guide .rk-savings-equation-box p {
    margin: 0;
    color: #3f5b69;
  }

  #rk-savings-guide .rk-savings-chart-bar {
    fill: var(--rk-savings-teal);
    stroke: transparent;
    stroke-width: 0;
    transition: opacity 0.18s ease, fill 0.18s ease;
  }

  #rk-savings-guide .rk-savings-chart-bar:hover,
  #rk-savings-guide .rk-savings-chart-bar:focus {
    opacity: 0.78;
    outline: none;
  }

  #rk-savings-guide .rk-savings-chart-bar.is-selected {
    fill: var(--rk-savings-orange);
  }

  #rk-savings-guide .rk-savings-chart-bar.is-over {
    fill: var(--rk-savings-red);
  }

  #rk-savings-guide .rk-savings-chart-bar.is-selected.is-over {
    fill: var(--rk-savings-red);
    stroke: var(--rk-savings-orange);
    stroke-width: 4;
  }

  #rk-savings-guide .rk-savings-chart-target-line {
    stroke: #9b6512;
    stroke-width: 2;
    stroke-dasharray: 8 6;
  }

  #rk-savings-guide .rk-savings-chart-target-label {
    fill: #81540e;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-chart-value {
    fill: #294b5c;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-chart-axis-title {
    fill: #476474;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
    font-weight: 800;
  }

  #rk-savings-guide .rk-savings-legend .is-danger i {
    background: var(--rk-savings-red);
  }

  @media (max-width: 620px) {
    #rk-savings-guide .rk-savings-equation-main {
      font-size: 1.08rem;
    }

    #rk-savings-guide .rk-savings-chart-value,
    #rk-savings-guide .rk-savings-chart-target-label,
    #rk-savings-guide .rk-savings-chart-axis-title {
      font-size: 10px;
    }
  }



  #rk-savings-guide .rk-savings-circuit-editor {
    display: grid;
    gap: 11px;
    margin: 22px 0 12px;
  }

  #rk-savings-guide .rk-savings-circuit-row {
    display: grid;
    grid-template-columns: minmax(135px, 1.2fr) minmax(105px, 0.8fr) minmax(135px, 0.9fr) minmax(112px, 0.7fr) 42px;
    gap: 10px;
    align-items: end;
    padding: 12px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 15px;
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-circuit-cell label,
  #rk-savings-guide .rk-savings-circuit-flow span {
    display: block;
    margin-bottom: 6px;
    color: #496674;
    font-size: 0.72rem;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-circuit-cell input {
    width: 100%;
    min-height: 44px;
    margin: 0;
    padding: 9px 10px;
    border: 1px solid #b9ccd5;
    border-radius: 10px;
    background: #ffffff;
    color: var(--rk-savings-navy);
    font: inherit;
    font-weight: 750;
    line-height: 1.25;
  }

  #rk-savings-guide .rk-savings-circuit-cell input:focus {
    border-color: var(--rk-savings-teal);
    outline: 3px solid rgba(15, 137, 151, 0.18);
  }

  #rk-savings-guide .rk-savings-circuit-flow {
    min-height: 44px;
    padding: 7px 9px;
    border-radius: 10px;
    background: #eef8fa;
  }

  #rk-savings-guide .rk-savings-circuit-flow span {
    margin-bottom: 2px;
  }

  #rk-savings-guide .rk-savings-circuit-flow strong {
    display: block;
    color: var(--rk-savings-navy);
    font-size: 0.94rem;
    font-variant-numeric: tabular-nums;
  }

  #rk-savings-guide .rk-savings-add-loop:disabled {
    cursor: not-allowed;
    opacity: 0.56;
  }

  #rk-savings-guide .rk-savings-chart-common {
    fill: #80cbd3;
  }

  #rk-savings-guide .rk-savings-chart-branch {
    fill: var(--rk-savings-teal);
  }

  #rk-savings-guide .rk-savings-chart-critical-outline {
    fill: none;
    stroke: var(--rk-savings-orange);
    stroke-width: 4;
  }

  #rk-savings-guide .rk-savings-chart-grid {
    stroke: #dbe5e9;
    stroke-width: 1;
  }

  #rk-savings-guide .rk-savings-chart-tick,
  #rk-savings-guide .rk-savings-chart-name,
  #rk-savings-guide .rk-savings-chart-index,
  #rk-savings-guide .rk-savings-chart-value,
  #rk-savings-guide .rk-savings-chart-axis-title {
    fill: #3f5d6c;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 11px;
    font-weight: 800;
  }

  #rk-savings-guide .rk-savings-chart-value {
    fill: var(--rk-savings-navy);
    font-size: 12px;
    font-weight: 950;
  }

  #rk-savings-guide .rk-savings-chart-index {
    fill: #6e8490;
    font-size: 9px;
  }

  #rk-savings-guide .rk-savings-legend .is-common i {
    background: #80cbd3;
  }

  #rk-savings-guide .rk-savings-legend .is-pump i {
    border: 3px solid var(--rk-savings-orange);
    background: transparent;
  }

  #rk-savings-guide .rk-savings-state-controls {
    margin-bottom: 18px;
  }

  @media (max-width: 900px) {
    #rk-savings-guide .rk-savings-circuit-row {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #rk-savings-guide .rk-savings-circuit-flow {
      align-self: end;
    }

    #rk-savings-guide .rk-savings-remove-loop {
      width: 100%;
      grid-column: 1 / -1;
    }
  }

  @media (max-width: 560px) {
    #rk-savings-guide .rk-savings-circuit-row {
      grid-template-columns: 1fr;
    }

    #rk-savings-guide .rk-savings-chart-tick,
    #rk-savings-guide .rk-savings-chart-name,
    #rk-savings-guide .rk-savings-chart-value,
    #rk-savings-guide .rk-savings-chart-axis-title {
      font-size: 9px;
    }
  }



  #rk-savings-guide .rk-savings-segmented button[aria-selected="true"] {
    border-color: var(--rk-savings-navy);
    background: var(--rk-savings-navy);
    color: #ffffff;
    box-shadow: 0 8px 18px rgba(18, 50, 71, 0.18);
  }

  #rk-savings-guide .rk-savings-field-grid-single {
    grid-template-columns: minmax(0, 1fr);
  }

  #rk-savings-guide .rk-savings-calc-summary {
    margin: 22px 0;
    padding: 18px;
    border: 1px solid #b9e3e8;
    border-radius: 18px;
    background: #f0fbfc;
  }

  #rk-savings-guide .rk-savings-calc-summary .rk-savings-result-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-bottom: 13px;
  }

  #rk-savings-guide .rk-savings-calc-summary .rk-savings-result {
    background: #ffffff;
  }

  #rk-savings-guide .rk-savings-calc-summary .rk-savings-result strong {
    font-size: clamp(1.05rem, 2.1vw, 1.42rem);
  }

  #rk-savings-guide .rk-savings-calc-summary .rk-savings-equation {
    margin: 0;
    color: #365665;
    font-size: 0.78rem;
    font-weight: 800;
  }

  #rk-savings-guide .rk-savings-pipe-results {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin: 20px 0;
  }

  #rk-savings-guide .rk-savings-pipe-result {
    min-width: 0;
    padding: 19px;
    border: 1px solid var(--rk-savings-line);
    border-radius: 18px;
    background: #ffffff;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
  }

  #rk-savings-guide .rk-savings-pipe-result.is-selected {
    border-color: var(--rk-savings-orange);
    box-shadow: 0 12px 28px rgba(245, 112, 32, 0.13);
    transform: translateY(-2px);
  }

  #rk-savings-guide .rk-savings-pipe-result-head {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 7px 14px;
    align-items: baseline;
    margin-bottom: 13px;
    color: var(--rk-savings-navy);
  }

  #rk-savings-guide .rk-savings-pipe-result-head span {
    font-size: 1.05rem;
    font-weight: 950;
  }

  #rk-savings-guide .rk-savings-pipe-result-head strong {
    color: #54707e;
    font-size: 0.74rem;
  }

  #rk-savings-guide .rk-savings-pipe-metrics {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  #rk-savings-guide .rk-savings-pipe-metrics > div {
    min-width: 0;
    padding: 11px;
    border-radius: 11px;
    background: #f2f7f8;
  }

  #rk-savings-guide .rk-savings-pipe-metrics span,
  #rk-savings-guide .rk-savings-pipe-metrics strong {
    display: block;
  }

  #rk-savings-guide .rk-savings-pipe-metrics span {
    color: #5b7380;
    font-size: 0.65rem;
    font-weight: 800;
    line-height: 1.35;
  }

  #rk-savings-guide .rk-savings-pipe-metrics strong {
    margin-top: 3px;
    color: var(--rk-savings-navy);
    font-size: 0.87rem;
    font-variant-numeric: tabular-nums;
    line-height: 1.3;
  }

  #rk-savings-guide .rk-savings-pipe-status {
    margin: 12px 0;
    padding: 10px 12px;
    border-radius: 10px;
    font-size: 0.72rem;
    font-weight: 800;
    line-height: 1.45;
  }

  #rk-savings-guide .rk-savings-pipe-status.is-within {
    background: #eaf8f1;
    color: #245e49;
  }

  #rk-savings-guide .rk-savings-pipe-status.is-over {
    background: #fff2e8;
    color: #7b421d;
  }

  #rk-savings-guide .rk-savings-pipe-result button {
    width: 100%;
    min-height: 44px;
    padding: 9px 12px;
    border: 1px solid #bcd0d8;
    border-radius: 11px;
    background: #ffffff;
    color: var(--rk-savings-navy);
    font: inherit;
    font-size: 0.74rem;
    font-weight: 850;
    line-height: 1.3;
    cursor: pointer;
  }

  #rk-savings-guide .rk-savings-pipe-result button[aria-pressed="true"] {
    border-color: var(--rk-savings-navy);
    background: var(--rk-savings-navy);
    color: #ffffff;
  }

  #rk-savings-guide .rk-savings-series-controls {
    display: flex;
    flex-wrap: wrap;
    gap: 7px 13px;
    margin: 0 0 12px;
  }

  #rk-savings-guide .rk-savings-series-controls button {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    gap: 7px;
    padding: 7px 10px;
    border: 1px solid transparent;
    border-radius: 9px;
    background: transparent;
    color: #425f6e;
    font: inherit;
    font-size: 0.72rem;
    font-weight: 850;
    cursor: pointer;
  }

  #rk-savings-guide .rk-savings-series-controls button[aria-pressed="false"] {
    opacity: 0.45;
    text-decoration: line-through;
  }

  #rk-savings-guide .rk-savings-series-controls i {
    display: inline-block;
    width: 24px;
    height: 4px;
    border-radius: 999px;
  }

  #rk-savings-guide .rk-savings-series-controls .is-p16,
  #rk-savings-guide .rk-savings-chart-curve.is-p16,
  #rk-savings-guide .rk-savings-chart-point.is-p16 {
    stroke: #e96a28;
    background: #e96a28;
    fill: #e96a28;
  }

  #rk-savings-guide .rk-savings-series-controls .is-p17,
  #rk-savings-guide .rk-savings-chart-curve.is-p17,
  #rk-savings-guide .rk-savings-chart-point.is-p17 {
    stroke: #087f91;
    background: #087f91;
    fill: #087f91;
  }

  #rk-savings-guide .rk-savings-series-controls .is-p20,
  #rk-savings-guide .rk-savings-chart-curve.is-p20,
  #rk-savings-guide .rk-savings-chart-point.is-p20 {
    stroke: #315aa6;
    background: #315aa6;
    fill: #315aa6;
  }

  #rk-savings-guide .rk-savings-series-controls .is-custom,
  #rk-savings-guide .rk-savings-chart-curve.is-custom,
  #rk-savings-guide .rk-savings-chart-point.is-custom {
    stroke: #7a4ea3;
    background: #7a4ea3;
    fill: #7a4ea3;
  }

  #rk-savings-guide .rk-savings-chart-grid line {
    stroke: #dbe5e9;
    stroke-width: 1;
  }

  #rk-savings-guide .rk-savings-chart-grid text,
  #rk-savings-guide .rk-savings-chart-axis-title,
  #rk-savings-guide .rk-savings-chart-criterion-label {
    fill: #506d7b;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 11px;
    font-weight: 750;
  }

  #rk-savings-guide .rk-savings-chart-axis-title {
    fill: var(--rk-savings-navy);
    font-size: 12px;
    font-weight: 900;
  }

  #rk-savings-guide .rk-savings-chart-frame {
    fill: none;
    stroke: #91a8b2;
    stroke-width: 1.2;
  }

  #rk-savings-guide .rk-savings-chart-curve {
    stroke-width: 2.4;
    stroke-linecap: round;
    stroke-linejoin: round;
  }

  #rk-savings-guide .rk-savings-chart-curve.is-selected {
    stroke-width: 4.5;
  }

  #rk-savings-guide .rk-savings-chart-guide {
    stroke: var(--rk-savings-navy);
    stroke-width: 1.5;
    stroke-dasharray: 6 5;
  }

  #rk-savings-guide .rk-savings-chart-point {
    stroke-width: 2;
    stroke: #ffffff;
  }

  #rk-savings-guide .rk-savings-chart-point.is-selected {
    stroke: var(--rk-savings-navy);
    stroke-width: 3;
  }

  #rk-savings-guide .rk-savings-chart-criterion {
    stroke: #ac5a24;
    stroke-width: 1.5;
    stroke-dasharray: 3 4;
  }

  #rk-savings-guide .rk-savings-chart-criterion-label {
    fill: #7b4a29;
  }

  #rk-savings-guide .rk-savings-chart-reading {
    margin-top: 12px;
    padding: 13px 15px;
    border-left: 4px solid var(--rk-savings-cyan);
    border-radius: 7px 12px 12px 7px;
    background: #edf8fa;
    color: #345463;
    font-size: 0.75rem;
    line-height: 1.5;
  }

  #rk-savings-guide .rk-savings-chart-reading strong {
    color: var(--rk-savings-navy);
  }

  @media (max-width: 900px) {
    #rk-savings-guide .rk-savings-calc-summary .rk-savings-result-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }

  @media (max-width: 700px) {
    #rk-savings-guide .rk-savings-pipe-results {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 460px) {
    #rk-savings-guide .rk-savings-calc-summary .rk-savings-result-grid,
    #rk-savings-guide .rk-savings-pipe-metrics {
      grid-template-columns: 1fr;
    }

    #rk-savings-guide .rk-savings-chart-grid text,
    #rk-savings-guide .rk-savings-chart-axis-title {
      font-size: 10px;
    }
  }


  /* Dodatkowe style modułów temperatury zasilania */
  #rk-savings-guide .rk-savings-result-grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

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

  #rk-savings-guide .rk-savings-chart-card {
    margin-top: 24px;
  }

  #rk-savings-guide .rk-savings-chart-unit {
    fill: #476474;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 14px;
    font-weight: 850;
  }

  #rk-savings-guide .rk-savings-chart-bar.is-required {
    fill: #123247;
  }

  #rk-savings-guide .rk-savings-chart-bar.is-available {
    fill: #0e7787;
  }

  #rk-savings-guide .rk-savings-chart-bar.is-low {
    fill: #248c68;
  }

  #rk-savings-guide .rk-savings-chart-bar.is-high {
    fill: #ff7a21;
  }

  #rk-savings-guide .rk-savings-chart-value.is-inside {
    fill: #ffffff;
  }

  #rk-savings-guide .rk-savings-chart-label {
    font-size: 14px;
  }

  #rk-savings-guide .rk-savings-chart-value {
    font-size: 14px;
  }

  #rk-savings-guide .rk-savings-chart-reading {
    margin-top: 12px;
    padding: 13px 15px;
    border: 1px solid #cfe0e6;
    border-radius: 12px;
    background: #f5f9fa;
    color: #365665;
    font-size: 0.78rem;
    line-height: 1.55;
  }

  #rk-savings-guide .rk-savings-equation {
    margin: 15px 0 0;
    padding: 14px 16px;
    border: 1px solid #d6e3e8;
    border-radius: 13px;
    background: #ffffff;
    color: #365665;
    font-size: 0.78rem;
    font-weight: 800;
  }

  #rk-savings-guide .rk-savings-hydraulic-card.is-warning {
    border-color: #e3ad58;
    background: #fff8ed;
    box-shadow: 0 12px 28px rgba(183, 120, 18, 0.12);
    transform: translateY(-2px);
  }

  #rk-savings-guide .rk-savings-hydraulic-card.is-warning .rk-savings-hydraulic-value {
    background: #ffe9c5;
    color: #7a4e0c;
  }

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

  @media (max-width: 1040px) {
    #rk-savings-guide .rk-savings-field-grid-4 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }

  @media (max-width: 820px) {
    #rk-savings-guide .rk-savings-source-grid {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 700px) {
    #rk-savings-guide .rk-savings-result-grid-3,
    #rk-savings-guide .rk-savings-field-grid-4 {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 520px) {
    #rk-savings-guide .rk-savings-chart-label,
    #rk-savings-guide .rk-savings-chart-tick,
    #rk-savings-guide .rk-savings-chart-value,
    #rk-savings-guide .rk-savings-chart-unit {
      font-size: 12px;
    }
  }


/* Kalkulator kosztów */
#rk-savings-guide .rk-savings-field-grid-4,
#rk-savings-guide .rk-savings-result-grid-4 { grid-template-columns:repeat(4,minmax(0,1fr)); }
#rk-savings-guide .rk-savings-field-grid-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
#rk-savings-guide .rk-savings-profile-box { margin:20px 0;padding:20px;border:1px solid #c7d8df;border-radius:19px;background:#f8fbfc; }
#rk-savings-guide .rk-savings-profile-head { display:flex;align-items:flex-start;justify-content:space-between;gap:18px; }
#rk-savings-guide .rk-savings-profile-head strong,#rk-savings-guide .rk-savings-profile-head span { display:block; }
#rk-savings-guide .rk-savings-profile-head strong { color:var(--rk-savings-navy);font-size:1rem; }
#rk-savings-guide .rk-savings-profile-head span { margin-top:4px;color:#597180;font-size:.77rem;line-height:1.5; }
#rk-savings-guide .rk-savings-status { flex:0 0 auto;padding:7px 11px;border:1px solid #a9ddd0;border-radius:999px;background:#e7f7f1;color:#17694f;font-size:.72rem;font-weight:900;line-height:1.25; }
#rk-savings-guide .rk-savings-status.is-warning { border-color:#e9c585;background:#fff4df;color:#7b5413; }
#rk-savings-guide .rk-savings-result-grid { display:grid;gap:13px;margin:22px 0; }
#rk-savings-guide .rk-savings-result { min-width:0;padding:18px;border:1px solid #ccdbe2;border-radius:17px;background:#fff; }
#rk-savings-guide .rk-savings-result span,#rk-savings-guide .rk-savings-result strong,#rk-savings-guide .rk-savings-result small { display:block; }
#rk-savings-guide .rk-savings-result span { color:#5b7280;font-size:.7rem;font-weight:850;letter-spacing:.04em;line-height:1.35;text-transform:uppercase; }
#rk-savings-guide .rk-savings-result strong { margin-top:7px;color:var(--rk-savings-navy);font-size:1.2rem;line-height:1.25; }
#rk-savings-guide .rk-savings-result small { margin-top:5px;color:#617987;font-size:.69rem;line-height:1.4; }
#rk-savings-guide .rk-savings-result-accent { border-color:#80cfd7;background:#eaf9fb; }
#rk-savings-guide .rk-savings-tool-actions { display:flex;justify-content:flex-end;margin:16px 0 0; }
#rk-savings-guide .rk-savings-secondary-button { min-height:48px;padding:10px 18px;border:2px solid var(--rk-savings-teal);border-radius:12px;background:var(--rk-savings-teal);color:#fff;font:inherit;font-size:.81rem;font-weight:900;line-height:1.25;cursor:pointer; }
#rk-savings-guide .rk-savings-secondary-button:hover { border-color:#075f6b;background:#075f6b; }
#rk-savings-guide .rk-savings-profile-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:22px 0; }
#rk-savings-guide .rk-savings-source-profile { min-width:0;margin:0;padding:18px;border:1px solid #cbd9e0;border-radius:17px;background:#f8fbfc; }
#rk-savings-guide .rk-savings-source-profile legend { max-width:100%;padding:0 7px;color:var(--rk-savings-navy);font-size:.83rem;font-weight:900;line-height:1.35; }
#rk-savings-guide .rk-savings-mini-fields { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; }
#rk-savings-guide .rk-savings-mini-fields label { color:#516a79;font-size:.7rem;font-weight:850; }
#rk-savings-guide .rk-savings-mini-fields input { width:100%;min-height:44px;margin-top:5px;padding:9px 10px;border:1px solid #b9cbd4;border-radius:10px;background:#fff;color:#173246;font:inherit;font-size:.85rem; }
#rk-savings-guide .rk-savings-source-profile p { margin:10px 0 0;color:#5a7180;font-size:.7rem;line-height:1.45; }
#rk-savings-guide .rk-savings-cost-table .is-positive { color:#187053;font-weight:900; }
#rk-savings-guide .rk-savings-cost-table .is-negative { color:#a13f3c;font-weight:900; }
#rk-savings-guide .rk-savings-chart-source { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px; }
#rk-savings-guide .rk-savings-chart-source button { min-width:0;min-height:42px;padding:7px 8px;border:1px solid #bdced6;border-radius:10px;background:#fff;color:var(--rk-savings-navy);font:inherit;font-size:.68rem;font-weight:900;line-height:1.2;cursor:pointer; }
#rk-savings-guide .rk-savings-chart-source button[aria-pressed="true"] { border-color:var(--rk-savings-navy);background:var(--rk-savings-navy);color:#fff; }
#rk-savings-guide .rk-savings-chart-summary { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin:22px 0; }
#rk-savings-guide .rk-savings-chart-summary>div { min-width:0;padding:16px;border:1px solid #c8d9df;border-radius:15px;background:#fff; }
#rk-savings-guide .rk-savings-chart-summary span,#rk-savings-guide .rk-savings-chart-summary strong { display:block; }
#rk-savings-guide .rk-savings-chart-summary span { color:#627987;font-size:.66rem;font-weight:850;line-height:1.35;text-transform:uppercase; }
#rk-savings-guide .rk-savings-chart-summary strong { margin-top:6px;color:var(--rk-savings-navy);font-size:.92rem;line-height:1.35; }
#rk-savings-guide .rk-savings-chart-card { padding:21px;border:1px solid #c8d9df;border-radius:20px;background:#fff; }
#rk-savings-guide .rk-savings-chart-visible-title { color:var(--rk-savings-navy);font-size:.97rem;font-weight:900;line-height:1.4; }
#rk-savings-guide .rk-savings-chart-legend { display:flex;flex-wrap:wrap;gap:9px 17px;margin:13px 0 5px;color:#566f7d;font-size:.7rem;font-weight:800; }
#rk-savings-guide .rk-savings-chart-legend span { display:inline-flex;align-items:center;gap:7px; }
#rk-savings-guide .rk-savings-chart-legend i { display:inline-block;width:18px;height:8px;border-radius:999px; }
#rk-savings-guide .rk-savings-legend-a { background:#123247; }
#rk-savings-guide .rk-savings-legend-b { background:#0e7787; }
#rk-savings-guide .rk-savings-legend-line { height:3px!important;background:#ff7a21; }
#rk-savings-guide .rk-savings-chart-wrap { width:100%;overflow:hidden;margin-top:8px; }
#rk-savings-guide .rk-savings-chart-wrap svg { display:block;width:100%;height:auto;min-height:300px;font-family:inherit; }
#rk-savings-guide .rk-savings-svg-bg { fill:#f7fafb; }
#rk-savings-guide .rk-savings-svg-grid { stroke:#dce6ea;stroke-width:1; }
#rk-savings-guide .rk-savings-svg-axis,#rk-savings-guide .rk-savings-svg-separator { stroke:#9fb4bf;stroke-width:1.2; }
#rk-savings-guide .rk-savings-svg-zero { stroke:#7b909b;stroke-width:1.4;stroke-dasharray:5 5; }
#rk-savings-guide .rk-savings-svg-bar-a { fill:#123247; }
#rk-savings-guide .rk-savings-svg-bar-b { fill:#0e7787; }
#rk-savings-guide .rk-savings-svg-line { fill:none;stroke:#ff7a21;stroke-width:4;stroke-linecap:round;stroke-linejoin:round; }
#rk-savings-guide .rk-savings-svg-point { fill:#fff;stroke:#ff7a21;stroke-width:4; }
#rk-savings-guide .rk-savings-svg-title { fill:#123247;font-size:17px;font-weight:900; }
#rk-savings-guide .rk-savings-svg-label { fill:#526c7a;font-size:13px;font-weight:800; }
#rk-savings-guide .rk-savings-svg-value { fill:#123247;font-size:13px;font-weight:900; }
#rk-savings-guide .rk-savings-svg-tick { fill:#627985;font-size:10px;font-weight:700; }
#rk-savings-guide .rk-savings-svg-note { fill:#657d89;font-size:11px; }
#rk-savings-guide .rk-savings-chart-reading { margin:13px 0 0;padding:15px 17px;border-left:4px solid var(--rk-savings-cyan);border-radius:6px 13px 13px 6px;background:#edf8fa;color:#294b5d;font-size:.79rem;line-height:1.55; }

/* Interaktywna mapa optymalizacji */
#rk-savings-guide .rk-savings-optimization-tool { overflow:hidden;margin-top:26px;border:1px solid #b9d4da;border-radius:24px;background:#f5f9fa;box-shadow:0 16px 42px rgba(18,50,71,.09); }
#rk-savings-guide .rk-savings-optimization-buttons { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:22px; }
#rk-savings-guide .rk-savings-optimization-buttons button { display:grid;grid-template-columns:52px minmax(0,1fr);gap:14px;align-items:start;min-width:0;margin:0;padding:17px;border:1px solid #c9d8df;border-radius:17px;background:#fff;color:var(--rk-savings-ink);font:inherit;text-align:left;cursor:pointer; }
#rk-savings-guide .rk-savings-optimization-buttons button[aria-selected="true"] { border-color:#5fc6d2;background:#eaf9fb;box-shadow:0 10px 24px rgba(14,119,135,.12); }
#rk-savings-guide .rk-savings-optimization-buttons button>span:last-child,#rk-savings-guide .rk-savings-optimization-buttons strong,#rk-savings-guide .rk-savings-optimization-buttons small { display:block;min-width:0; }
#rk-savings-guide .rk-savings-optimization-buttons strong { color:var(--rk-savings-navy);font-size:.88rem;line-height:1.35; }
#rk-savings-guide .rk-savings-optimization-buttons small { margin-top:5px;color:#5a7180;font-size:.7rem;line-height:1.45; }
#rk-savings-guide .rk-savings-optimization-detail { padding:clamp(24px,4vw,40px);background:linear-gradient(135deg,#102f42,#0e5660);color:#fff; }
#rk-savings-guide .rk-savings-optimization-head>span { display:block;color:#ffad73;font-size:.72rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase; }
#rk-savings-guide .rk-savings-optimization-head h3 { margin:7px 0 9px;color:#fff;font-size:clamp(1.35rem,3vw,2rem);line-height:1.2; }
#rk-savings-guide .rk-savings-optimization-head p { max-width:940px;margin:0;color:#e4f1f4;font-size:.94rem; }
#rk-savings-guide .rk-savings-optimization-card { min-width:0;padding:18px;border:1px solid rgba(255,255,255,.20);border-radius:16px;background:rgba(255,255,255,.08); }
#rk-savings-guide .rk-savings-optimization-card span { display:block;color:var(--rk-savings-cyan);font-size:.7rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase; }
#rk-savings-guide .rk-savings-optimization-card p { margin:7px 0 0;color:#eef8fa;font-size:.82rem;line-height:1.55; }
#rk-savings-guide .rk-savings-optimization-limit { margin-top:18px;padding:16px 18px;border:1px solid rgba(255,174,115,.45);border-radius:14px;background:rgba(255,122,33,.10);color:#eef8fa;font-size:.8rem;line-height:1.55; }
#rk-savings-guide .rk-savings-optimization-limit strong { color:#ffb783; }

/* Blokada stylów motywu: cyfra pozostaje dokładnie w środku koła. */
#rk-savings-guide .rk-savings-spec { grid-template-columns:52px minmax(0,1fr)!important;gap:16px!important;align-items:start!important; }
#rk-savings-guide .rk-savings-spec-mark,
#rk-savings-guide .rk-savings-spec .rk-savings-spec-mark,
#rk-savings-guide .rk-savings-optimization-buttons .rk-savings-spec-mark {
  display:flex!important;align-items:center!important;justify-content:center!important;align-self:start!important;justify-self:start!important;
  flex:0 0 52px!important;float:none!important;position:static!important;inset:auto!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;transform:none!important;
  width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;max-width:52px!important;max-height:52px!important;
  margin:0!important;padding:0!important;border:0!important;border-radius:50%!important;background:#d9f3f6!important;color:#0b7180!important;
  font-size:1rem!important;font-weight:900!important;font-variant-numeric:tabular-nums!important;line-height:1!important;letter-spacing:0!important;text-align:center!important;text-indent:0!important;vertical-align:middle!important;white-space:nowrap!important;
}
#rk-savings-guide .rk-savings-spec-mark::before,#rk-savings-guide .rk-savings-spec-mark::after { display:none!important;content:none!important; }

@media(max-width:1040px){#rk-savings-guide .rk-savings-field-grid-4,#rk-savings-guide .rk-savings-result-grid-4,#rk-savings-guide .rk-savings-chart-summary{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:820px){#rk-savings-guide .rk-savings-profile-grid,#rk-savings-guide .rk-savings-optimization-buttons{grid-template-columns:1fr;}}
@media(max-width:700px){#rk-savings-guide .rk-savings-field-grid-4,#rk-savings-guide .rk-savings-field-grid-2,#rk-savings-guide .rk-savings-result-grid-4,#rk-savings-guide .rk-savings-chart-summary{grid-template-columns:1fr;}#rk-savings-guide .rk-savings-profile-head{display:grid;}#rk-savings-guide .rk-savings-status{justify-self:start;}#rk-savings-guide .rk-savings-chart-card{padding:14px;}#rk-savings-guide .rk-savings-chart-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}#rk-savings-guide .rk-savings-chart-wrap svg{width:720px;max-width:none;}}
@media(max-width:520px){#rk-savings-guide .rk-savings-mini-fields,#rk-savings-guide .rk-savings-chart-source{grid-template-columns:repeat(2,minmax(0,1fr));}#rk-savings-guide .rk-savings-optimization-buttons{padding:14px;}#rk-savings-guide .rk-savings-optimization-buttons button{grid-template-columns:52px minmax(0,1fr);padding:14px;}}

</style>
<article id="rk-savings-guide" aria-labelledby="rk-savings-visual-title">
  <div class="rk-savings-shell">
<header class="rk-savings-hero">
      <div class="rk-savings-hero-inner">
        <span class="rk-savings-kicker">Od OZC do kosztu jednej kWh ciepła</span>
        <div class="rk-savings-hero-title" id="rk-savings-visual-title">Nie 10 czy 15 cm. <span>Liczy się koszt całego układu</span></div>
        <p class="rk-savings-hero-lead">Gęstszy rozstaw może obniżyć wymaganą temperaturę wody, ale nie tworzy automatycznie oszczędności. Najpierw trzeba sprawdzić straty każdego pomieszczenia, czynną powierzchnię podłogi, hydraulikę i sezonową sprawność źródła. Dopiero potem można policzyć, czy dodatkowa rura rzeczywiście się zwróci.</p>
        <div class="rk-savings-hero-tags" aria-label="Zakres poradnika">
          <span class="rk-savings-hero-tag">rozstaw 10, 15 i 20 cm</span><span class="rk-savings-hero-tag">dom 150 m²</span><span class="rk-savings-hero-tag">pompa, gaz, pellet i prąd</span><span class="rk-savings-hero-tag">SCOP i sprawność sezonowa</span><span class="rk-savings-hero-tag">koszt oraz zwrot</span>
        </div>
        <div class="rk-savings-byline"><span>Autor: <strong>Robert Kucharski</strong></span><span>Czas czytania: około 43 minuty</span><span>Aktualizacja techniczna: 11 września 2026 r.</span></div>
        <div class="rk-savings-hero-metrics" aria-label="Trzy poziomy rzetelnej analizy kosztów">
          <div class="rk-savings-hero-metric"><b>OZC określa potrzebne ciepło</b><span>Rachunek zaczyna się od obciążenia pomieszczeń, a nie od powierzchni domu i rozstawu.</span></div>
          <div class="rk-savings-hero-metric"><b>Projekt określa parametr</b><span>Rozstaw, czynna podłoga, okładzina i przepływ wyznaczają warunki pracy emitera.</span></div>
          <div class="rk-savings-hero-metric"><b>Źródło zamienia parametr w rachunek</b><span>Liczą się SCOP lub sprawność sezonowa, cena nośnika i energia pomocnicza.</span></div>
        </div>
      </div>
    </header>
<nav class="rk-savings-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-savings-shortcuts-label">Na skróty</span>
      <a href="#rk-savings-answer">Szybka odpowiedź</a><a href="#rk-savings-cost-chain">Skąd bierze się koszt?</a><a href="#rk-savings-spacing-effect">Co zmienia rozstaw?</a><a href="#rk-savings-inputs">Dane do obliczeń</a><a href="#rk-savings-pipe-length">Ile rury na 150 m²?</a><a href="#rk-savings-layouts">Trzy warianty</a><a href="#rk-savings-calculator">Kalkulator i wykres</a><a href="#rk-savings-interpretation">Jak czytać wynik?</a><a href="#rk-savings-optimization-map">Mapa optymalizacji</a><a href="#rk-savings-heat-pump">Pompa ciepła</a><a href="#rk-savings-gas">Gaz</a><a href="#rk-savings-pellet">Pellet</a><a href="#rk-savings-electric">Prąd</a><a href="#rk-savings-radiators">Podłogówka a grzejniki</a><a href="#rk-savings-tariffs">Taryfy</a><a href="#rk-savings-hydraulics">Hydraulika</a><a href="#rk-savings-control">Sterowanie</a><a href="#rk-savings-lifecycle">Koszt w 20 lat</a><a href="#rk-savings-example">Przykład 150 m²</a><a href="#rk-savings-myths">Błędy i mity</a><a href="#rk-savings-checklist">Lista kontrolna</a><a href="#rk-savings-conclusions">Wnioski</a><a href="#rk-savings-references">Źródła</a><a href="#rk-savings-faq">FAQ</a><a href="#rk-savings-author">Autor</a>
    </nav>
<section class="rk-savings-section" id="rk-savings-answer">
      <span class="rk-savings-eyebrow">Odpowiedź w 30 sekund</span>
      <h2 class="rk-savings-section-title">Czy rozstaw rur co 10 cm zawsze daje niższe rachunki niż 15 cm?</h2>
      <div class="rk-savings-answer"><span class="rk-savings-answer-label">Najkrótsza poprawna odpowiedź</span><p><strong>Nie. Rozstaw 10 cm może pozwolić osiągnąć wymaganą moc przy niższej temperaturze wody niż 15 cm, lecz skutek finansowy zależy od sezonowej sprawności konkretnego źródła. Jeżeli oba warianty pracują przy podobnej sprawności albo 15 cm już pokrywa obciążenie przy docelowym parametrze, dodatkowa rura może nie przynieść mierzalnej oszczędności.</strong></p></div>
      <div class="rk-savings-grid-3">
        <article class="rk-savings-card"><h3>10 cm ma sens obliczeniowy</h3><p>W pomieszczeniach o większym obciążeniu powierzchniowym, przy ograniczonej podłodze czynnej albo gdy potrzebny jest niższy parametr.</p></article>
        <article class="rk-savings-card"><h3>15 cm często wystarcza</h3><p>W pomieszczeniach o umiarkowanych stratach, jeśli zweryfikowana moc podłogi pokrywa obciążenie.</p></article>
        <article class="rk-savings-card"><h3>20 cm bywa uzasadnione</h3><p>W strefach o małym zapotrzebowaniu, o ile moc, rozkład temperatury i hydraulika pozostają prawidłowe.</p></article>
      </div>
      <p>Optymalizacja polega na takim doborze geometrii w każdym pomieszczeniu, aby pokryć <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a> przy racjonalnej temperaturze, liczbie pętli i oporach. Szczegółowe porównanie rozwija poradnik <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur co 10 czy 15 cm</a>.</p>
      <div class="rk-savings-callout"><strong>Reguła przewodnia:</strong> każdy dodatkowy metr rury powinien mieć uzasadnienie cieplne, hydrauliczne albo wykonawcze. Samo zwiększenie liczby metrów nie jest strategią oszczędzania energii.</div>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-cost-chain">
      <span class="rk-savings-eyebrow">Rachunek jest końcem łańcucha</span>
      <h2 class="rk-savings-section-title">Od czego naprawdę zależy roczny koszt ogrzewania?</h2>
      <p class="rk-savings-lead">Dla tego samego domu użyteczne ciepło potrzebne do utrzymania temperatury nie znika po zagęszczeniu rur. Zmienić może się temperatura wymagana przez instalację, sprawność źródła, zużycie pomp i skala przegrzewania.</p>
      <div class="rk-savings-chain" aria-label="Łańcuch od strat budynku do rachunku"><div class="rk-savings-chain-item"><strong>Straty budynku</strong><span>kWh ciepła</span></div><div class="rk-savings-chain-item"><strong>Emiter</strong><span>temperatura i przepływ</span></div><div class="rk-savings-chain-item"><strong>Źródło</strong><span>SCOP lub η</span></div><div class="rk-savings-chain-item"><strong>Nośnik</strong><span>prąd albo paliwo</span></div><div class="rk-savings-chain-item"><strong>Rachunek</strong><span>zmienne + stałe</span></div></div>
      <div class="rk-savings-equation-box"><span class="rk-savings-equation-label">Uproszczona relacja roczna</span><div class="rk-savings-equation-main">koszt ≈ (ciepło użyteczne ÷ sprawność sezonowa) × cena nośnika + energia pomocnicza</div><p>Dla pompy ciepła sprawnością sezonową jest SCOP lub wskaźnik z pomiaru całego systemu. Dla kotła stosuje się sezonową sprawność w jasno zdefiniowanych warunkach.</p></div>
      <p>W porównaniu dwóch emiterów nie wolno jednemu przypisać innych strat przegród tylko dlatego, że ma inny rozstaw. Podstawy zapotrzebowania wyjaśnia tekst o tym, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty ciepła budynku</a>.</p>
    </section>
<section class="rk-savings-section" id="rk-savings-spacing-effect">
      <span class="rk-savings-eyebrow">Oddziel efekt cieplny od obietnicy finansowej</span>
      <h2 class="rk-savings-section-title">Co rozstaw rur zmienia, a czego nie zmienia?</h2>
      <div class="rk-savings-compare-table" role="table" aria-label="Wpływ rozstawu rur na instalację i koszty">
        <div class="rk-savings-table-row rk-savings-table-head" role="row"><div role="columnheader">Obszar</div><div role="columnheader">Co może się zmienić?</div><div role="columnheader">Czego nie wolno założyć?</div></div>
        <div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Obszar" role="cell">Moc podłogi</div><div data-label="Możliwy skutek" role="cell">Gęstszy rozstaw może zwiększyć możliwy strumień przy tej samej średniej temperaturze wody.</div><div data-label="Granica" role="cell">Nie ma jednej mocy W/m² przypisanej do 10 albo 15 cm bez konstrukcji i okładziny.</div></div>
        <div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Obszar" role="cell">Temperatura wody</div><div data-label="Możliwy skutek" role="cell">Ten sam wymagany strumień może być osiągalny przy niższej temperaturze średniej.</div><div data-label="Granica" role="cell">Nie można przypisać 10 cm jednej temperatury, a 15 cm drugiej dla każdego domu.</div></div>
        <div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Obszar" role="cell">Hydraulika</div><div data-label="Możliwy skutek" role="cell">Więcej rury oznacza inne długości, liczbę pętli, zład i opory.</div><div data-label="Granica" role="cell">Gęstszy rozstaw nie gwarantuje mniejszego poboru pompy obiegowej.</div></div>
        <div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Obszar" role="cell">Bezwładność</div><div data-label="Możliwy skutek" role="cell">Nieznacznie zmienia się zład wodny i rozprowadzenie ciepła.</div><div data-label="Granica" role="cell">Masa jastrychu nie rośnie od dodatkowej rury, więc nie ma gwarancji rzadszych cykli.</div></div>
        <div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Obszar" role="cell">Straty i rachunek</div><div data-label="Możliwy skutek" role="cell">Niższy parametr i mniejsze przegrzewanie mogą poprawić wynik.</div><div data-label="Granica" role="cell">Rozstaw nie poprawia izolacji i nie daje jednego procentu oszczędności dla wszystkich źródeł.</div></div>
      </div>
      <p>Ten sam średni rozstaw można rozłożyć inaczej w strefach o większym obciążeniu. Zobacz, <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/">jak gęsto rozkładać podłogówkę</a> i kiedy potrzebna jest <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefa brzegowa</a>.</p>
    </section>
<section class="rk-savings-section rk-savings-section-dark" id="rk-savings-inputs">
      <span class="rk-savings-eyebrow">Osiem liczb przed pierwszą złotówką</span>
      <h2 class="rk-savings-section-title">Jakie dane są potrzebne do rzetelnego porównania?</h2>
      <p class="rk-savings-lead">Kosztorys bez bilansu cieplnego pokazuje wyłącznie cenę materiału. Analiza ekonomiczna wymaga równocześnie danych budynku, emitera, źródła oraz taryfy.</p>
      <div class="rk-savings-spec-grid">
        <div class="rk-savings-spec"><span class="rk-savings-spec-mark" aria-hidden="true">1</span><div><strong>Obciążenie pomieszczeń</strong><span>Projektowe straty w watach dla warunków lokalizacji.</span></div></div>
        <div class="rk-savings-spec"><span class="rk-savings-spec-mark" aria-hidden="true">2</span><div><strong>Powierzchnia czynna</strong><span>Fragment podłogi naprawdę oddający ciepło.</span></div></div>
        <div class="rk-savings-spec"><span class="rk-savings-spec-mark" aria-hidden="true">3</span><div><strong>Konstrukcja podłogi</strong><span>Jastrych, rura, opór okładziny i ograniczenia materiałów.</span></div></div>
        <div class="rk-savings-spec"><span class="rk-savings-spec-mark" aria-hidden="true">4</span><div><strong>Geometria obiegów</strong><span>Rozstaw, średnica, trasy, długości i liczba pętli.</span></div></div>
        <div class="rk-savings-spec"><span class="rk-savings-spec-mark" aria-hidden="true">5</span><div><strong>Temperatury i przepływy</strong><span>Zasilanie, powrót, ΔT i przepływ każdej pętli.</span></div></div>
        <div class="rk-savings-spec"><span class="rk-savings-spec-mark" aria-hidden="true">6</span><div><strong>Sprawność sezonowa</strong><span>SCOP albo η dla porównywalnego urządzenia i systemu.</span></div></div>
        <div class="rk-savings-spec"><span class="rk-savings-spec-mark" aria-hidden="true">7</span><div><strong>Cena zmienna nośnika</strong><span>Stawka zależna od zużycia z właściwej umowy.</span></div></div>
        <div class="rk-savings-spec"><span class="rk-savings-spec-mark" aria-hidden="true">8</span><div><strong>Koszt różnicowy</strong><span>Dodatkowa rura, pętle, osprzęt i robocizna.</span></div></div>
      </div>
      <p>Powierzchnia 150 m² nie daje jeszcze żadnej z tych odpowiedzi. Stała zabudowa może ograniczyć obszar aktywny, co omawia poradnik <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">ogrzewanie podłogowe a meble</a>. Sprawdź też, <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">jak okładzina wpływa na wydajność</a>.</p>
    </section>
<section class="rk-savings-section" id="rk-savings-pipe-length">
      <span class="rk-savings-eyebrow">Metry liczymy z powierzchni czynnej</span>
      <h2 class="rk-savings-section-title">Ile rury potrzeba na 150 m² podłogówki?</h2>
      <p class="rk-savings-lead">Do kontroli metrażu pola można użyć relacji powierzchnia czynna podzielona przez rozstaw w metrach. Potem dodaje się podejścia do rozdzielacza, rezerwę i wynikający z tras odpad.</p>
      <div class="rk-savings-equation-box"><span class="rk-savings-equation-label">Orientacyjna długość rury w polu</span><div class="rk-savings-equation-main">L ≈ A<sub>czynna</sub> ÷ s</div><p>Dla 150 m² faktycznie czynnej podłogi otrzymamy około 1500 m przy 10 cm, 1000 m przy 15 cm i 750 m przy 20 cm — przed podejściami i rezerwą.</p></div>
      <div class="rk-savings-compare-table" role="table" aria-label="Orientacyjna długość rury zależnie od powierzchni czynnej">
        <div class="rk-savings-table-row rk-savings-table-head" role="row"><div role="columnheader">Powierzchnia czynna</div><div role="columnheader">Rozstaw 10 cm</div><div role="columnheader">Rozstaw 15 cm</div></div>
        <div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Powierzchnia" role="cell">100 m²</div><div data-label="10 cm" role="cell">około 1000 m w polu</div><div data-label="15 cm" role="cell">około 667 m w polu</div></div>
        <div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Powierzchnia" role="cell">125 m²</div><div data-label="10 cm" role="cell">około 1250 m w polu</div><div data-label="15 cm" role="cell">około 833 m w polu</div></div>
        <div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Powierzchnia" role="cell">150 m²</div><div data-label="10 cm" role="cell">około 1500 m w polu</div><div data-label="15 cm" role="cell">około 1000 m w polu</div></div>
      </div>
      <div class="rk-savings-warning"><strong>To nie jest lista zakupowa.</strong> Dokładny metraż wynika z tras pętli na rzucie. Trzeba uwzględnić rozdzielacze, dylatacje i dopuszczalne długości. Zobacz, <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów przypada na pętlę</a> i od czego zależy <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli</a>.</div>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-layouts">
      <span class="rk-savings-eyebrow">Trzeci wariant zwykle jest ważniejszy od dwóch skrajności</span>
      <h2 class="rk-savings-section-title">10 cm wszędzie, 15 cm wszędzie czy rozstaw pomieszczeniowy?</h2>
      <div class="rk-savings-grid-3">
        <article class="rk-savings-card"><span class="rk-savings-card-number">A</span><h3>Jednolite 15 cm</h3><p>Proste wykonawczo, lecz trzeba potwierdzić moc w łazienkach, przy przeszkleniach i małej powierzchni czynnej.</p></article>
        <article class="rk-savings-card"><span class="rk-savings-card-number">B</span><h3>Jednolite 10 cm</h3><p>Więcej rury wszędzie, ale potencjalnie zbędne metry, pętle i większy rozdzielacz w łatwych pomieszczeniach.</p></article>
        <article class="rk-savings-card"><span class="rk-savings-card-number">C</span><h3>Rozstaw z bilansu</h3><p>10, 15 lub 20 cm tam, gdzie pozwala na to moc, wspólny parametr, komfort i hydraulika.</p></article>
      </div>
      <p>Wariant C nie oznacza przypadkowej mozaiki. W salonie z przeszkleniami może być potrzebne lokalne zagęszczenie, ale nie wynika ono z arbitralnej szerokości pasa. Zobacz projektowanie <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">podłogówki przy dużych przeszkleniach</a>.</p>
    </section>
<section class="rk-savings-section" id="rk-savings-calculator">
      <span class="rk-savings-eyebrow">Kalkulator różnicowy zamiast obietnicy procentowej</span>
      <h2 class="rk-savings-section-title">Policz długość rur, koszt inwestycji i roczne wydatki dla czterech źródeł</h2>
      <p class="rk-savings-lead">Narzędzie porównuje wariant A z wariantem B. Najpierw szacuje metraż i koszt wykonania, a następnie pokazuje roczne koszty dla pompy ciepła, gazu, pelletu i kotła elektrycznego na podstawie wpisanych parametrów sezonowych.</p>
      <div class="rk-savings-tool" id="rk-savings-calculator-tool">
        <div class="rk-savings-tool-head"><span class="rk-savings-eyebrow">Jedno narzędzie, trzy pytania</span><h3>Kalkulator optymalizacji podłogówki 150 m²</h3><p>Ceny i sprawności startowe są wyłącznie przykładem do edycji. Narzędzie nie pobiera taryf ani danych urządzeń z internetu.</p></div>
        <div class="rk-savings-tool-body">
          <div class="rk-savings-tool-tabs" role="tablist" aria-label="Etap kalkulatora"><button type="button" id="rk-savings-tab-geometry" role="tab" aria-selected="true" aria-controls="rk-savings-panel-geometry" data-rk-savings-tab="geometry">1. Rury i inwestycja</button><button type="button" id="rk-savings-tab-operation" role="tab" aria-selected="false" aria-controls="rk-savings-panel-operation" data-rk-savings-tab="operation">2. Roczne koszty</button><button type="button" id="rk-savings-tab-chart" role="tab" aria-selected="false" aria-controls="rk-savings-panel-chart" data-rk-savings-tab="chart">3. Zwrot i wykres</button></div>
          <div class="rk-savings-panel" id="rk-savings-panel-geometry" role="tabpanel" aria-labelledby="rk-savings-tab-geometry">
            <h4 class="rk-savings-tool-subtitle">Geometria i koszt różnicowy</h4>
            <div class="rk-savings-field-grid rk-savings-field-grid-4">
              <div class="rk-savings-field"><label for="rk-savings-gross-area">Powierzchnia domu</label><input id="rk-savings-gross-area" type="number" min="10" max="1000" step="1" value="150"><span class="rk-savings-field-help">Wartość informacyjna, m².</span></div>
              <div class="rk-savings-field"><label for="rk-savings-active-area">Czynna powierzchnia</label><input id="rk-savings-active-area" type="number" min="1" max="1000" step="1" value="125"><span class="rk-savings-field-help">Tylko podłoga objęta rurami.</span></div>
              <div class="rk-savings-field"><label for="rk-savings-base-spacing">Wariant A — rozstaw</label><select id="rk-savings-base-spacing"><option value="0.10">10 cm</option><option value="0.15" selected="">15 cm</option><option value="0.20">20 cm</option></select><span class="rk-savings-field-help">Jednolity wariant bazowy.</span></div>
              <div class="rk-savings-field"><label for="rk-savings-reserve">Podejścia i rezerwa</label><input id="rk-savings-reserve" type="number" min="0" max="30" step="1" value="8"><span class="rk-savings-field-help">Procent dodawany do pola.</span></div>
            </div>
            <div class="rk-savings-profile-box">
              <div class="rk-savings-profile-head"><div><strong>Wariant B — rozstaw pomieszczeniowy</strong><span>Udział powierzchni czynnej; suma powinna wynosić 100%.</span></div><output id="rk-savings-share-status" class="rk-savings-status" aria-live="polite">Suma: 100%</output></div>
              <div class="rk-savings-field-grid rk-savings-field-grid-3"><div class="rk-savings-field"><label for="rk-savings-share-10">Udział 10 cm</label><input id="rk-savings-share-10" type="number" min="0" max="100" value="30"><span class="rk-savings-field-help">Strefy krytyczne.</span></div><div class="rk-savings-field"><label for="rk-savings-share-15">Udział 15 cm</label><input id="rk-savings-share-15" type="number" min="0" max="100" value="50"><span class="rk-savings-field-help">Strefy pośrednie.</span></div><div class="rk-savings-field"><label for="rk-savings-share-20">Udział 20 cm</label><input id="rk-savings-share-20" type="number" min="0" max="100" value="20"><span class="rk-savings-field-help">Tylko po potwierdzeniu mocy.</span></div></div>
            </div>
            <div class="rk-savings-field-grid rk-savings-field-grid-4"><div class="rk-savings-field"><label for="rk-savings-max-loop">Przyjęta długość pętli</label><input id="rk-savings-max-loop" type="number" min="30" max="200" step="5" value="90"><span class="rk-savings-field-help">Do szacunku pętli, m.</span></div><div class="rk-savings-field"><label for="rk-savings-pipe-price">Cena rury</label><input id="rk-savings-pipe-price" type="number" min="0" max="100" step="0.1" value="5"><span class="rk-savings-field-help">zł za metr.</span></div><div class="rk-savings-field"><label for="rk-savings-loop-cost">Dodatkowa pętla</label><input id="rk-savings-loop-cost" type="number" min="0" max="10000" step="10" value="250"><span class="rk-savings-field-help">Robocizna i osprzęt, zł.</span></div><div class="rk-savings-field"><label for="rk-savings-other-cost">Inne koszty B</label><input id="rk-savings-other-cost" type="number" min="-100000" max="100000" step="50" value="0"><span class="rk-savings-field-help">Może być ujemne.</span></div></div>
            <div class="rk-savings-result-grid rk-savings-result-grid-4" aria-live="polite"><div class="rk-savings-result"><span>Wariant A</span><strong id="rk-savings-length-a">—</strong><small id="rk-savings-loops-a">—</small></div><div class="rk-savings-result"><span>Wariant B</span><strong id="rk-savings-length-b">—</strong><small id="rk-savings-loops-b">—</small></div><div class="rk-savings-result"><span>10 cm wszędzie</span><strong id="rk-savings-length-all10">—</strong><small>benchmark, nie zalecenie</small></div><div class="rk-savings-result rk-savings-result-accent"><span>Różnica inwestycji B − A</span><strong id="rk-savings-investment-delta">—</strong><small id="rk-savings-length-delta">—</small></div></div>
            <div class="rk-savings-tool-actions"><button type="button" class="rk-savings-secondary-button" id="rk-savings-go-operation">Przejdź do kosztów rocznych</button></div>
            <div class="rk-savings-tool-disclaimer"><strong>Zakres:</strong> metraż jest estymacją geometryczną. Liczba pętli nie zastępuje podziału pomieszczeń, tras na rzucie ani obliczenia oporów.</div>
          </div>
          <div class="rk-savings-panel rk-savings-is-hidden" id="rk-savings-panel-operation" role="tabpanel" aria-labelledby="rk-savings-tab-operation" hidden="">
            <h4 class="rk-savings-tool-subtitle">Ciepło, sprawności i ceny nośników</h4>
            <div class="rk-savings-field-grid rk-savings-field-grid-4"><div class="rk-savings-field"><label for="rk-savings-annual-heat">Roczne ciepło użyteczne</label><input id="rk-savings-annual-heat" type="number" min="100" max="200000" step="100" value="6750"><span class="rk-savings-field-help">kWh/rok, bez CWU.</span></div><div class="rk-savings-field"><label for="rk-savings-overheat">Mniej przegrzewania w B</label><input id="rk-savings-overheat" type="number" min="0" max="25" step="0.5" value="0"><span class="rk-savings-field-help">Domyślnie 0%.</span></div><div class="rk-savings-field"><label for="rk-savings-aux-a">Energia pomocnicza A</label><input id="rk-savings-aux-a" type="number" min="0" max="10000" step="10" value="150"><span class="rk-savings-field-help">kWh prądu/rok.</span></div><div class="rk-savings-field"><label for="rk-savings-aux-b">Energia pomocnicza B</label><input id="rk-savings-aux-b" type="number" min="0" max="10000" step="10" value="130"><span class="rk-savings-field-help">Wymaga hydraulicznego uzasadnienia.</span></div></div>
            <div class="rk-savings-field-grid rk-savings-field-grid-3"><div class="rk-savings-field"><label for="rk-savings-electricity-price">Energia elektryczna</label><input id="rk-savings-electricity-price" type="number" min="0.01" max="10" step="0.01" value="1.05"><span class="rk-savings-field-help">zmienny koszt, zł/kWh.</span></div><div class="rk-savings-field"><label for="rk-savings-gas-price">Gaz</label><input id="rk-savings-gas-price" type="number" min="0.01" max="5" step="0.01" value="0.35"><span class="rk-savings-field-help">zmienny koszt paliwa, zł/kWh.</span></div><div class="rk-savings-field"><label for="rk-savings-pellet-price">Pellet</label><input id="rk-savings-pellet-price" type="number" min="100" max="10000" step="10" value="1500"><span class="rk-savings-field-help">zł za tonę.</span></div></div>
            <div class="rk-savings-field-grid rk-savings-field-grid-3"><div class="rk-savings-field"><label for="rk-savings-pellet-calorific">Wartość opałowa pelletu</label><input id="rk-savings-pellet-calorific" type="number" min="1" max="10" step="0.1" value="4.8"><span class="rk-savings-field-help">kWh/kg.</span></div><div class="rk-savings-field"><label for="rk-savings-horizon">Horyzont</label><input id="rk-savings-horizon" type="number" min="1" max="40" value="20"><span class="rk-savings-field-help">1–40 lat.</span></div><div class="rk-savings-field"><label for="rk-savings-growth">Zmiana ceny</label><input id="rk-savings-growth" type="number" min="-10" max="25" step="0.5" value="0"><span class="rk-savings-field-help">% rocznie; 0% ogranicza pozorną precyzję.</span></div></div>
            <div class="rk-savings-profile-grid">
              <fieldset class="rk-savings-source-profile"><legend>Pompa ciepła — SCOP</legend><div class="rk-savings-mini-fields"><label>A<input id="rk-savings-hp-eff-a" type="number" min="1" max="10" step="0.1" value="3.4"></label><label>B<input id="rk-savings-hp-eff-b" type="number" min="1" max="10" step="0.1" value="3.8"></label></div><p>Porównywalne dane tej samej pompy.</p></fieldset>
              <fieldset class="rk-savings-source-profile"><legend>Gaz — sprawność sezonowa</legend><div class="rk-savings-mini-fields"><label>A<input id="rk-savings-gas-eff-a" type="number" min="0.1" max="1.2" step="0.01" value="0.90"></label><label>B<input id="rk-savings-gas-eff-b" type="number" min="0.1" max="1.2" step="0.01" value="0.95"></label></div><p>Użyj jednej podstawy sprawności.</p></fieldset>
              <fieldset class="rk-savings-source-profile"><legend>Pellet — sprawność sezonowa</legend><div class="rk-savings-mini-fields"><label>A<input id="rk-savings-pellet-eff-a" type="number" min="0.1" max="1.2" step="0.01" value="0.82"></label><label>B<input id="rk-savings-pellet-eff-b" type="number" min="0.1" max="1.2" step="0.01" value="0.82"></label></div><p>Niska temperatura nie podnosi jej automatycznie.</p></fieldset>
              <fieldset class="rk-savings-source-profile"><legend>Kocioł elektryczny</legend><div class="rk-savings-mini-fields"><label>A<input id="rk-savings-electric-eff-a" type="number" min="0.1" max="1.1" step="0.01" value="0.99"></label><label>B<input id="rk-savings-electric-eff-b" type="number" min="0.1" max="1.1" step="0.01" value="0.99"></label></div><p>Brak premii podobnej do COP.</p></fieldset>
            </div>
            <div class="rk-savings-compare-table rk-savings-cost-table" role="table" aria-label="Roczne koszty czterech źródeł"><div class="rk-savings-table-row rk-savings-table-head" role="row"><div role="columnheader">Źródło</div><div role="columnheader">Wariant A / B</div><div role="columnheader">Oszczędność B</div></div><div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Źródło" role="cell">Pompa ciepła</div><div data-label="Koszt A / B" id="rk-savings-hp-costs" role="cell">—</div><div data-label="Oszczędność" id="rk-savings-hp-saving" role="cell">—</div></div><div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Źródło" role="cell">Kocioł gazowy</div><div data-label="Koszt A / B" id="rk-savings-gas-costs" role="cell">—</div><div data-label="Oszczędność" id="rk-savings-gas-saving" role="cell">—</div></div><div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Źródło" role="cell">Kocioł na pellet</div><div data-label="Koszt A / B" id="rk-savings-pellet-costs" role="cell">—</div><div data-label="Oszczędność" id="rk-savings-pellet-saving" role="cell">—</div></div><div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Źródło" role="cell">Kocioł elektryczny</div><div data-label="Koszt A / B" id="rk-savings-electric-costs" role="cell">—</div><div data-label="Oszczędność" id="rk-savings-electric-saving" role="cell">—</div></div></div>
            <div class="rk-savings-tool-actions"><button type="button" class="rk-savings-secondary-button" id="rk-savings-go-chart">Pokaż zwrot na wykresie</button></div>
            <div class="rk-savings-tool-disclaimer"><strong>Nie wliczamy automatycznie:</strong> CWU, odszraniania, serwisu, kosztu kapitału i opłat stałych identycznych w obu wariantach. Stawki startowe zastąp własnymi danymi.</div>
          </div>
          <div class="rk-savings-panel rk-savings-is-hidden" id="rk-savings-panel-chart" role="tabpanel" aria-labelledby="rk-savings-tab-chart" hidden="">
            <h4 class="rk-savings-tool-subtitle">Koszt roczny i skumulowany zwrot</h4>
            <div class="rk-savings-field-grid rk-savings-field-grid-2"><div class="rk-savings-field"><label for="rk-savings-investment-override">Różnica inwestycji</label><input id="rk-savings-investment-override" type="number" min="-100000" max="500000" step="50" value="0"><span class="rk-savings-field-help">Synchronizowana z geometrią; można nadpisać.</span></div><div class="rk-savings-field"><span class="rk-savings-field-label">Źródło na wykresie</span><div class="rk-savings-chart-source" role="group" aria-label="Wybierz źródło"><button type="button" aria-pressed="true" data-rk-savings-source="hp">Pompa</button><button type="button" aria-pressed="false" data-rk-savings-source="gas">Gaz</button><button type="button" aria-pressed="false" data-rk-savings-source="pellet">Pellet</button><button type="button" aria-pressed="false" data-rk-savings-source="electric">Prąd</button></div></div></div>
            <div class="rk-savings-chart-summary" aria-live="polite"><div><span>Wybrane źródło</span><strong id="rk-savings-chart-source-name">Pompa ciepła</strong></div><div><span>Oszczędność w 1. roku</span><strong id="rk-savings-chart-saving">—</strong></div><div><span>Prosty zwrot</span><strong id="rk-savings-chart-payback">—</strong></div><div><span>Bilans po okresie</span><strong id="rk-savings-chart-total">—</strong></div></div>
            <div class="rk-savings-chart-card"><div class="rk-savings-chart-visible-title">Wariant A i B: koszt roczny oraz skumulowany bilans inwestycji</div><div class="rk-savings-chart-legend"><span><i class="rk-savings-legend-a"></i>Koszt A</span><span><i class="rk-savings-legend-b"></i>Koszt B</span><span><i class="rk-savings-legend-line"></i>Bilans skumulowany</span></div><div class="rk-savings-chart-wrap"><svg id="rk-savings-chart-svg" viewBox="0 0 760 410" role="img" aria-labelledby="rk-savings-chart-title rk-savings-chart-desc"><title id="rk-savings-chart-title">Porównanie kosztów i skumulowanego zwrotu</title><desc id="rk-savings-chart-desc">Wykres aktualizuje się po zmianie danych.</desc></svg></div><p class="rk-savings-chart-reading" id="rk-savings-chart-reading">Zmień dane, aby porównać własny wariant.</p></div>
            <div class="rk-savings-tool-disclaimer"><strong>Wykres nie jest prognozą cen.</strong> Pokazuje konsekwencje wpisanych założeń; prosty zwrot nie uwzględnia kosztu pieniądza ani wymiany urządzeń.</div>
          </div>
        </div>
      </div>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-interpretation">
      <span class="rk-savings-eyebrow">Najpierw sprawdź znak, potem dokładność</span>
      <h2 class="rk-savings-section-title">Jak czytać wynik kalkulatora, żeby nie wyciągnąć złego wniosku?</h2>
      <div class="rk-savings-grid-3">
        <article class="rk-savings-card"><h3>Oszczędność dodatnia</h3><p>Wariant B ma niższy koszt przy wpisanych założeniach. Sprawdź, czy różnica przewyższa niepewność cen, sprawności i zapotrzebowania.</p></article>
        <article class="rk-savings-card"><h3>Oszczędność bliska zeru</h3><p>Decyzję powinny rozstrzygać moc, komfort, hydraulika i możliwość pracy przy docelowym parametrze.</p></article>
        <article class="rk-savings-card"><h3>Oszczędność ujemna</h3><p>Wariant B nie jest tańszy w eksploatacji. Może być potrzebny cieplnie, ale nie należy sprzedawać go jako oszczędności.</p></article>
      </div>
      <p>Najbardziej wrażliwe są zwykle sezonowa sprawność, rzeczywiste ciepło użyteczne i różnica kosztu wykonania. Warto policzyć scenariusz ostrożny, środkowy i korzystny. Ogólny kontekst nakładów opisuje poradnik <a href="https://projekt-ogrzewania.pl/ile-kosztuje-100-m%c2%b2-ogrzewania-podlogowego/">ile kosztuje 100 m² ogrzewania podłogowego</a>.</p>
      <div class="rk-savings-cta">
        <div class="rk-savings-cta-title">Kalkulator wycenia założenia. Projekt sprawdza, czy da się je osiągnąć.</div>
        <p>Roczna oszczędność ma sens dopiero wtedy, gdy wariant B pokrywa obciążenie każdej łazienki, sypialni i strefy przy przeszkleniach, mieści się w ograniczeniach podłogi oraz daje osiągalne przepływy i opory. Projekt łączy te warunki na rzucie budynku.</p>
        <a class="rk-savings-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt i policz wariant pomieszczeniowy</a>
        <small class="rk-savings-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>
<section class="rk-savings-section" id="rk-savings-optimization-map">
      <span class="rk-savings-eyebrow">Interaktywna grafika edukacyjna</span>
      <h2 class="rk-savings-section-title">Sześć miejsc, w których naprawdę optymalizuje się koszt podłogówki</h2>
      <p class="rk-savings-lead">Wybierz etap. Moduł pokaże mechanizm oszczędności, dane potrzebne do oceny oraz granicę, po przekroczeniu której optymalizacja zaczyna pogarszać działanie instalacji.</p>
      <div class="rk-savings-optimization-tool" id="rk-savings-optimization-tool">
        <div class="rk-savings-optimization-buttons" role="tablist" aria-label="Wybierz obszar optymalizacji">
          <button type="button" role="tab" aria-selected="true" aria-controls="rk-savings-optimization-detail" data-rk-savings-lever="ozc"><span class="rk-savings-spec-mark" aria-hidden="true">1</span><span><strong>OZC i straty</strong><small>Najpierw ogranicz energię, której budynek potrzebuje.</small></span></button>
          <button type="button" role="tab" aria-selected="false" aria-controls="rk-savings-optimization-detail" data-rk-savings-lever="area"><span class="rk-savings-spec-mark" aria-hidden="true">2</span><span><strong>Powierzchnia czynna</strong><small>Nie dziel mocy przez podłogę, która nie grzeje.</small></span></button>
          <button type="button" role="tab" aria-selected="false" aria-controls="rk-savings-optimization-detail" data-rk-savings-lever="spacing"><span class="rk-savings-spec-mark" aria-hidden="true">3</span><span><strong>Rozstaw pomieszczeniowy</strong><small>Daj więcej rury tylko tam, gdzie wnosi wartość.</small></span></button>
          <button type="button" role="tab" aria-selected="false" aria-controls="rk-savings-optimization-detail" data-rk-savings-lever="temperature"><span class="rk-savings-spec-mark" aria-hidden="true">4</span><span><strong>Temperatura i krzywa</strong><small>Utrzymuj najniższy parametr pokrywający straty.</small></span></button>
          <button type="button" role="tab" aria-selected="false" aria-controls="rk-savings-optimization-detail" data-rk-savings-lever="hydraulics"><span class="rk-savings-spec-mark" aria-hidden="true">5</span><span><strong>Hydraulika i pompa</strong><small>Pokonuj wymagane opory, a nie największą nastawę.</small></span></button>
          <button type="button" role="tab" aria-selected="false" aria-controls="rk-savings-optimization-detail" data-rk-savings-lever="control"><span class="rk-savings-spec-mark" aria-hidden="true">6</span><span><strong>Sterowanie</strong><small>Ogranicz przegrzewanie bez dławienia źródła.</small></span></button>
        </div>
        <div class="rk-savings-optimization-detail" id="rk-savings-optimization-detail" role="tabpanel" aria-live="polite">
          <div class="rk-savings-optimization-head"><span id="rk-savings-lever-step">Etap 1 z 6</span><h3 id="rk-savings-lever-title">OZC i straty budynku</h3><p id="rk-savings-lever-intro">Największa oszczędność może powstać przed instalacją: przez zmniejszenie strat, które system ma pokrywać przez cały sezon.</p></div>
          <div class="rk-savings-grid-3"><div class="rk-savings-optimization-card"><span>Co zmieniasz?</span><p id="rk-savings-lever-action">Założenia przegród, mostków, wentylacji i temperatur albo standard budynku.</p></div><div class="rk-savings-optimization-card"><span>Jak wpływa na koszt?</span><p id="rk-savings-lever-cost">Mniejsze straty obniżają potrzebne ciepło, moc źródła i temperaturę podłogi.</p></div><div class="rk-savings-optimization-card"><span>Co potwierdzić?</span><p id="rk-savings-lever-check">OZC pomieszczeń i zgodność danych z architekturą oraz wentylacją.</p></div></div>
          <div class="rk-savings-optimization-limit"><strong>Granica:</strong> <span id="rk-savings-lever-limit">Nie zmniejszaj strat tylko w arkuszu. Zaniżone OZC prowadzi do deficytu mocy.</span></div>
        </div>
      </div>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-heat-pump">
      <span class="rk-savings-eyebrow">Źródło najbardziej wrażliwe na temperaturę</span>
      <h2 class="rk-savings-section-title">Pompa ciepła: kiedy gęstszy rozstaw może obniżyć koszt?</h2>
      <p class="rk-savings-lead">Jeżeli gęstsza geometria pozwala tej samej pompie pokryć obciążenie przy niższej temperaturze wody, może poprawić warunki jej pracy. Skali efektu nie wyznacza jednak sam rozstaw, lecz charakterystyka urządzenia i cały sezon.</p>
      <div class="rk-savings-grid-3"><article class="rk-savings-card"><h3>Porównuj ten sam model</h3><p>Zestawiaj dane przy tych samych temperaturach dolnego źródła, obciążeniu i zakresie energii pomocniczej.</p></article><article class="rk-savings-card"><h3>Używaj wyniku sezonowego</h3><p>Punktowy COP nie jest rocznym dzielnikiem energii. Potrzebny jest SCOP albo pomiar całego systemu.</p></article><article class="rk-savings-card"><h3>Sprawdź minimum urządzenia</h3><p>Przepływ, zład, modulacja i odszranianie mogą przesądzić o działaniu mimo korzystnej temperatury.</p></article></div>
      <p>Celem jest najniższa temperatura nadal pokrywająca straty. Zobacz analizę <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">temperatury zasilania pompy ciepła</a> oraz sposób tworzenia <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej podłogówki</a>.</p>
    </section>
<section class="rk-savings-section" id="rk-savings-gas">
      <span class="rk-savings-eyebrow">Niższy powrót może wspierać kondensację</span>
      <h2 class="rk-savings-section-title">Kocioł gazowy: korzyść wynika ze sprawności sezonowej, nie z liczby rur</h2>
      <p>Kocioł kondensacyjny może pracować korzystnie przy niskiej temperaturze powrotu. Nie oznacza to, że przejście z 15 na 10 cm daje każdemu kotłowi tę samą oszczędność. Wynik zależy od temperatur rzeczywistych, modulacji, taktowania, regulacji i strat postojowych.</p>
      <div class="rk-savings-answer"><span class="rk-savings-answer-label">Jak liczyć?</span><p>W kalkulatorze wpisz porównywalną sprawność sezonową wariantu A i B. Jeżeli oba warianty utrzymują kondensację i pracują podobnie, różnica może być mała.</p></div>
      <p>Współpracę źródła z niskotemperaturową instalacją omawia poradnik <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kocioł gazowy w instalacji grzewczej</a>.</p>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-pellet">
      <span class="rk-savings-eyebrow">Niska temperatura emitera nie jest automatycznie lepsza dla kotła</span>
      <h2 class="rk-savings-section-title">Kocioł na pellet: liczą się hydraulika kotłowni i realne zużycie paliwa</h2>
      <p>Trzeba uwzględnić ochronę powrotu, mieszanie, bufor, rozruchy i pracę przy częściowym obciążeniu. Sam fakt, że podłogówka może pracować z niższym parametrem, nie pozwala podnieść sprawności kotła o arbitralny procent.</p>
      <div class="rk-savings-grid-2"><article class="rk-savings-card"><h3>Cena za tonę to za mało</h3><p>Do obliczenia energii paliwa potrzebna jest wartość opałowa konkretnego pelletu. Kalkulator przelicza cenę tony przez wpisane kWh/kg.</p></article><article class="rk-savings-card"><h3>Sprawność trzeba zdefiniować</h3><p>Potrzebny jest sezonowy udział energii paliwa, który dociera jako użyteczne ciepło do instalacji.</p></article></div>
    </section>
<section class="rk-savings-section" id="rk-savings-electric">
      <span class="rk-savings-eyebrow">Brak premii COP</span>
      <h2 class="rk-savings-section-title">Kocioł elektryczny: niższa temperatura wody zwykle nie zmienia sprawności przemiany</h2>
      <p>Grzałka oporowa zamienia pobraną energię elektryczną w ciepło z podobną sprawnością niezależnie od tego, czy instalacja pracuje z wodą 30 czy 40°C. Gęstszy rozstaw może być potrzebny dla mocy i komfortu, ale nie daje oszczędności charakterystycznej dla pompy ciepła.</p>
      <div class="rk-savings-grid-3"><article class="rk-savings-card"><h3>Stałe ciepło użyteczne</h3><p>Jeżeli budynek i komfort są takie same, energia potrzebna w pomieszczeniach pozostaje zbliżona.</p></article><article class="rk-savings-card"><h3>Różnica pomocnicza</h3><p>Hydraulika i pompa obiegowa mogą pobierać inną ilość prądu, ale trzeba policzyć punkt pracy.</p></article><article class="rk-savings-card"><h3>Różnica regulacyjna</h3><p>Oszczędność może powstać przez ograniczenie przegrzewania, a nie przez samą temperaturę wody.</p></article></div>
      <p>Dla odrębnego porównania technologii dostępny jest <a href="https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/">kalkulator ogrzewania elektrycznego i wodnej podłogówki</a>.</p>
    </section>
<section class="rk-savings-section rk-savings-section-dark" id="rk-savings-radiators">
      <span class="rk-savings-eyebrow">Porównuj kompletne systemy w tym samym budynku</span>
      <h2 class="rk-savings-section-title">Podłogówka czy grzejniki — kiedy porównanie kosztów jest uczciwe?</h2>
      <p class="rk-savings-lead">Grzejnik nie zwiększa strat domu tylko dlatego, że wisi na ścianie. Różnica powstaje, gdy systemy wymagają innej temperatury źródła, powodują inne przegrzewanie albo mają inne straty i zużycie pomocnicze.</p>
      <div class="rk-savings-grid-3"><article class="rk-savings-card"><h3>Ten sam budynek i komfort</h3><p>Oba warianty muszą dostarczyć to samo użyteczne ciepło w tej samej pogodzie.</p></article><article class="rk-savings-card"><h3>Rzeczywiste parametry</h3><p>Przewymiarowany grzejnik może pracować niskotemperaturowo; nie przypisuj wszystkim 55°C.</p></article><article class="rk-savings-card"><h3>To samo źródło i zakres</h3><p>Porównuj tę samą pompę lub kocioł oraz jawnie uwzględnij automatykę i pompy.</p></article></div>
      <p>Dlatego kalkulator pozostawia edytowalne parametry A i B zamiast gotowego mnożnika „grzejniki”. Przeczytaj o <a href="https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/">podłogówce w porównaniu z grzejnikami</a> i układzie <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">pompa ciepła, podłogówka oraz grzejniki</a>.</p>
    </section>
<section class="rk-savings-section" id="rk-savings-tariffs">
      <span class="rk-savings-eyebrow">Cena z rachunku nie zawsze jest ceną oszczędzonej kWh</span>
      <h2 class="rk-savings-section-title">Jak prawidłowo wprowadzić taryfę i koszt energii?</h2>
      <p class="rk-savings-lead">Rachunki obejmują składniki zależne od zużycia i opłaty stałe. Jeśli w obu wariantach umowa pozostaje ta sama, oszczędzenie jednej kWh nie usuwa automatycznie całej opłaty stałej.</p>
      <div class="rk-savings-grid-3"><article class="rk-savings-card"><h3>Składniki zmienne</h3><p>Cena energii lub paliwa oraz zmienne składniki dystrybucji rzeczywiście rosną wraz ze zużyciem.</p></article><article class="rk-savings-card"><h3>Składniki stałe</h3><p>Jeżeli są identyczne w A i B, nie zwiększają oszczędności różnicowej.</p></article><article class="rk-savings-card"><h3>Taryfa wielostrefowa</h3><p>Udział tańszych godzin wynika z profilu pracy, bezwładności i sterowania, a nie stałych 70%.</p></article></div>
      <p>Przepisz stawki z własnej umowy i rachunku. Nie mieszaj ceny energii elektrycznej z kosztem ciepła użytecznego. Szerszy kontekst pokazuje zestawienie <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">kosztów ogrzewania domu</a>.</p>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-hydraulics">
      <span class="rk-savings-eyebrow">Więcej rury zmienia również opory</span>
      <h2 class="rk-savings-section-title">Jak rozstaw wpływa na pętle, przepływy i pobór pompy obiegowej?</h2>
      <p>Gęstszy rozstaw zwiększa długość rury na tę samą powierzchnię. Odpowiedzią może być większa liczba krótszych pętli, inny podział powierzchni albo zmiana rozdzielacza. Każda decyzja wpływa na opory i punkt pracy pompy.</p>
      <div class="rk-savings-grid-3"><article class="rk-savings-card"><h3>Przepływ z mocy i ΔT</h3><p>Nie ustawia się go z samego rozstawu. Pętla powinna dostać przepływ odpowiadający przypisanej mocy.</p></article><article class="rk-savings-card"><h3>Opór drogi krytycznej</h3><p>Doboru pompy nie wykonuje się przez sumowanie oporów pętli, tylko analizę najbardziej wymagającej drogi.</p></article><article class="rk-savings-card"><h3>Najwyższy bieg nie pomaga</h3><p>Nadmierna wysokość podnoszenia zwiększa pobór, hałas i dławienie bez naprawy złej geometrii.</p></article></div>
      <p>Do weryfikacji użyj poradników o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompie obiegowej</a>, <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicach rur</a> i <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">nastawach rotametrów</a>.</p>
    </section>
<section class="rk-savings-section" id="rk-savings-control">
      <span class="rk-savings-eyebrow">Nie oszczędzaj przez przypadkowe dławienie</span>
      <h2 class="rk-savings-section-title">Sterowanie, przegrzewanie i bezwładność — gdzie jest realny zysk?</h2>
      <p class="rk-savings-lead">Regulacja pogodowa dostosowuje temperaturę wody do warunków zewnętrznych. Sterowanie strefowe może ograniczać temperaturę w pomieszczeniach, ale nie zastępuje równoważenia ani automatyki źródła.</p>
      <div class="rk-savings-compare-table" role="table" aria-label="Sterowanie i wpływ na koszt"><div class="rk-savings-table-row rk-savings-table-head" role="row"><div role="columnheader">Działanie</div><div role="columnheader">Potencjalna korzyść</div><div role="columnheader">Ryzyko</div></div><div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Działanie" role="cell">Obniżenie krzywej</div><div data-label="Korzyść" role="cell">Niższy parametr, jeśli każde pomieszczenie nadal zachowuje komfort.</div><div data-label="Ryzyko" role="cell">Ukryty deficyt pomieszczenia krytycznego.</div></div><div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Działanie" role="cell">Równoważenie</div><div data-label="Korzyść" role="cell">Właściwa dystrybucja mocy bez przegrzewania łatwych obiegów.</div><div data-label="Ryzyko" role="cell">Dławienie bez obliczonych przepływów.</div></div><div class="rk-savings-table-row" role="row"><div class="rk-savings-table-label" data-label="Działanie" role="cell">Siłowniki</div><div data-label="Korzyść" role="cell">Ograniczenie temperatury lub harmonogramu wybranych stref.</div><div data-label="Ryzyko" role="cell">Za mały przepływ źródła po zamknięciu obiegów.</div></div></div>
      <p>Podłoga reaguje wolniej niż lekki grzejnik. Więcej wyjaśniają poradniki o <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowaniu strefowym</a> i <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej</a>.</p>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-lifecycle">
      <span class="rk-savings-eyebrow">Dwadzieścia lat to scenariusz, nie jedna prawda</span>
      <h2 class="rk-savings-section-title">Jak policzyć koszt w cyklu życia bez fałszywej precyzji?</h2>
      <p>Proste pomnożenie pierwszorocznej oszczędności przez 20 jest punktem odniesienia, ale nie prognozą. Stałe zwiększanie cen o 3% tworzy pozornie dokładną sumę, choć taryfy, sprawność urządzeń i zachowania mieszkańców są niepewne.</p>
      <div class="rk-savings-grid-3"><article class="rk-savings-card"><h3>Scenariusz ostrożny</h3><p>Mniejsza różnica sprawności, brak oszczędności z przegrzewania i wyższy koszt wykonania.</p></article><article class="rk-savings-card"><h3>Scenariusz środkowy</h3><p>Dane z projektu i źródła, bieżące ceny zmienne oraz realistyczna energia pomocnicza.</p></article><article class="rk-savings-card"><h3>Scenariusz korzystny</h3><p>Potwierdzona poprawa sezonowa i regulacyjna przy niższych nakładach.</p></article></div>
      <div class="rk-savings-note"><strong>Test wrażliwości:</strong> jeśli wariant przestaje się opłacać po niewielkiej zmianie SCOP, ceny lub nakładu, decyzja ekonomiczna jest krucha. Większą wagę powinny mieć komfort, moc i niezawodność.</div>
    </section>
<section class="rk-savings-section" id="rk-savings-example">
      <span class="rk-savings-eyebrow">Przykład metody, nie obietnica rachunku</span>
      <h2 class="rk-savings-section-title">Dom 150 m²: jak przeprowadzić analizę krok po kroku?</h2>
      <p class="rk-savings-lead">Załóżmy 150 m² budynku, 125 m² podłogi czynnej i 6750 kWh rocznego ciepła. Wariant A ma 15 cm wszędzie, a B dzieli powierzchnię: 30% przy 10 cm, 50% przy 15 cm i 20% przy 20 cm.</p>
      <div class="rk-savings-steps"><article class="rk-savings-step"><h3>1. Potwierdź 125 m²</h3><p>Wyznacz je z rzutu po odjęciu trwałej zabudowy.</p></article><article class="rk-savings-step"><h3>2. Policz metry pola</h3><p>A: około 833 m. B: około 917 m, przed podejściami.</p></article><article class="rk-savings-step"><h3>3. Podziel pętle</h3><p>Wyznacz realne trasy, a nie tylko iloraz metrażu.</p></article><article class="rk-savings-step"><h3>4. Zweryfikuj parametr</h3><p>Każde pomieszczenie musi pokryć obciążenie.</p></article><article class="rk-savings-step"><h3>5. Wpisz SCOP lub η</h3><p>Użyj porównywalnych danych sezonowych.</p></article><article class="rk-savings-step"><h3>6. Użyj własnych cen</h3><p>Wprowadź zmienne składniki swojej umowy.</p></article><article class="rk-savings-step"><h3>7. Policz scenariusze</h3><p>Zmień sprawność, nakład i cenę nośnika.</p></article><article class="rk-savings-step"><h3>8. Wybierz wykonalny układ</h3><p>Najtańszy arkusz odpada, jeśli nie bilansuje mocy.</p></article></div>
      <p>Przykład nie przesądza, że wskazany podział jest właściwy dla konkretnego domu. Dobór powstaje dla pomieszczeń, podobnie jak w <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie podłogówki z pompą ciepła</a>.</p>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-myths">
      <span class="rk-savings-eyebrow">Precyzyjnie brzmiące skróty bywają najbardziej kosztowne</span>
      <h2 class="rk-savings-section-title">Najczęstsze błędy w analizie oszczędności rozstawu rur</h2>
      <div class="rk-savings-mistakes"><div class="rk-savings-mistake"><span class="rk-savings-mistake-icon">!</span><div><strong>Stała temperatura dla rozstawu</strong><p>10 cm nie oznacza 35°C, a 15 cm 40°C. Temperaturę wyznacza bilans.</p></div></div><div class="rk-savings-mistake"><span class="rk-savings-mistake-icon">!</span><div><strong>COP użyty jako wynik roczny</strong><p>Pojedynczy punkt nie zastępuje SCOP ani pomiaru sezonu.</p></div></div><div class="rk-savings-mistake"><span class="rk-savings-mistake-icon">!</span><div><strong>150 m² uznane za czynne</strong><p>Rury nie znajdują się pod każdą zabudową, ścianą i elementem technicznym.</p></div></div><div class="rk-savings-mistake"><span class="rk-savings-mistake-icon">!</span><div><strong>Zawyżony metraż rury</strong><p>Relacja A/s jest kontrolą przed dodaniem podejść i zapasu.</p></div></div><div class="rk-savings-mistake"><span class="rk-savings-mistake-icon">!</span><div><strong>Stałe 70% taniej taryfy</strong><p>Udział zależy od profilu pracy, bezwładności i regulacji.</p></div></div><div class="rk-savings-mistake"><span class="rk-savings-mistake-icon">!</span><div><strong>Ten sam procent dla źródeł</strong><p>Pompa, gaz, pellet i grzałka inaczej reagują na temperaturę.</p></div></div><div class="rk-savings-mistake"><span class="rk-savings-mistake-icon">!</span><div><strong>Więcej rury = większa masa</strong><p>Dodatkowe metry nie zwiększają masy jastrychu.</p></div></div><div class="rk-savings-mistake"><span class="rk-savings-mistake-icon">!</span><div><strong>Pomijanie pompy obiegowej</strong><p>Zmiana pętli może zmienić punkt pracy i zużycie pomocnicze.</p></div></div></div>
      <p>Przed realizacją sprawdź <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy montażu podłogówki</a>.</p>
    </section>
<section class="rk-savings-section" id="rk-savings-checklist">
      <span class="rk-savings-eyebrow">Przed wyborem rozstawu i podpisaniem kosztorysu</span>
      <h2 class="rk-savings-section-title">Lista kontrolna optymalizacji kosztów ogrzewania podłogowego</h2>
      <div class="rk-savings-checklist"><div class="rk-savings-checklist-item"><span>✓</span><div><strong>OZC</strong><br>Obciążenie każdego pomieszczenia w watach.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Powierzchnia czynna</strong><br>Wartość z rzutu i trwałej zabudowy.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Okładzina</strong><br>Opór i limity temperatury.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Moc dla parametrów</strong><br>W/m² z obliczenia lub tabeli.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Rozstaw</strong><br>10, 15 lub 20 cm z lokalnego bilansu.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Trasy</strong><br>Długości z rzutu razem z podejściami.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Średnice</strong><br>Dobór do przepływów i oporów.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Hydraulika</strong><br>Przepływy i droga krytyczna.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Źródło</strong><br>Sezonowa sprawność dla wariantów.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Ceny zmienne</strong><br>Stawki z własnej umowy.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Energia pomocnicza</strong><br>Pompy i automatyka.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Sterowanie</strong><br>Krzywa, strefy i minimum źródła.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Wrażliwość</strong><br>Co najmniej trzy scenariusze.</div></div><div class="rk-savings-checklist-item"><span>✓</span><div><strong>Dokumentacja</strong><br>Rozstawy, pętle, przepływy i nastawy.</div></div></div>
      <p>Sprawdź również, <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje projekt ogrzewania podłogowego</a>, i porównaj tę kwotę z ryzykiem zmian na budowie oraz wieloletniej pracy na zbyt wysokim parametrze.</p>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-conclusions">
      <span class="rk-savings-eyebrow">Wnioski projektanta</span>
      <h2 class="rk-savings-section-title">Jak zejść z kosztami podłogówki bez pogorszenia komfortu?</h2>
      <p class="rk-savings-lead">Najpierw ogranicz i policz straty. Następnie użyj powierzchni czynnej, konstrukcji i danych systemu do doboru rozstawu w pomieszczeniach. Potem zamknij hydraulikę, wyznacz najniższą skuteczną temperaturę i dopiero z sezonowej sprawności policz rachunek.</p>
      <div class="rk-savings-grid-3"><article class="rk-savings-card"><h3>Nie przewymiarowuj bez celu</h3><p>10 cm wszędzie jest droższe i nie musi poprawić rachunku.</p></article><article class="rk-savings-card"><h3>Nie oszczędzaj na mocy</h3><p>15 lub 20 cm odpada tam, gdzie nie pokryje obciążenia.</p></article><article class="rk-savings-card"><h3>Optymalizuj system</h3><p>Rachunek tworzą budynek, emiter, hydraulika, źródło, sterowanie i taryfa.</p></article></div>
      <div class="rk-savings-answer"><span class="rk-savings-answer-label">Reguła końcowa</span><p><strong>Najlepszy rozstaw to najrzadsza geometria, która w danym miejscu zapewnia wymaganą moc przy docelowej temperaturze, prawidłowej hydraulice i akceptowalnym koszcie całego cyklu życia.</strong></p></div>
      <div class="rk-savings-cta"><div class="rk-savings-cta-title">Zamień ogólny rozstaw na policzony układ dla każdego pomieszczenia</div><p>Projekt obejmuje obciążenia, powierzchnie czynne, temperatury, rozstawy, trasy pętli, przepływy, opory, rozdzielacze i dane do uruchomienia. Kosztorys można oprzeć na konkretnym rozwiązaniu zamiast na nadmiarowym „10 cm wszędzie”.</p><a class="rk-savings-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt podłogówki</a><small class="rk-savings-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small></div>
    </section>
<section class="rk-savings-section" id="rk-savings-references">
      <span class="rk-savings-eyebrow">Podstawa techniczna i granice obliczeń</span>
      <h2 class="rk-savings-section-title">Źródła i metodologia artykułu</h2>
      <p class="rk-savings-lead">Źródła oficjalne potwierdzają sposób wymiarowania ogrzewania płaszczyznowego, znaczenie projektu całego systemu i strukturę rachunku. Nie dostarczają jednej temperatury, ceny ani procentu oszczędności dla wszystkich domów.</p>
      <div class="rk-savings-source-grid"><article class="rk-savings-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 wraz z Amd 1:2023 — określanie mocy</a><p>Oficjalna karta części dotyczącej strumienia ciepła, temperatur powierzchni i charakterystyk systemów płaszczyznowych.</p></article><article class="rk-savings-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 wraz z Amd 1:2023 — projektowanie</a><p>Oficjalna karta części opisującej metodę projektowania i wymiarowania systemów.</p></article><article class="rk-savings-source-card"><a href="https://www.ure.gov.pl/pl/konsumenci/rachunki-pod-kontrola-konsumen/skladowe-rachunku-za-energie-e/12783,Skladowe-rachunku-za-energie-elektryczna.html" target="_blank" rel="nofollow noopener noreferrer">URE — składowe rachunku za energię</a><p>Oficjalne objaśnienie składników sprzedaży i dystrybucji, zmiennych oraz stałych.</p></article><article class="rk-savings-source-card"><a href="https://www.gov.uk/government/news/heat-pumps-explained-experts-answer-your-questions" target="_blank" rel="nofollow noopener noreferrer">DESNZ — Heat pumps explained</a><p>Oficjalny materiał o znaczeniu dobranych emiterów i optymalizacji systemu pompy ciepła.</p></article></div>
      <div class="rk-savings-responsibility"><p><strong>Stan źródeł:</strong> odnośniki sprawdzono 11 września 2026 r. Karty ISO dotyczą wydań z 2021 r. z poprawkami Amd 1:2023.</p><p><strong>Zakres kalkulatora:</strong> geometria korzysta z relacji A/s. Koszt dzieli ciepło przez wpisany SCOP albo sprawność i dodaje energię pomocniczą. Pellet przelicza cenę tony i wartość opałową.</p><p><strong>Ograniczenia:</strong> narzędzie nie symuluje pogody godzinowej, CWU, odszraniania, strat magazynowania, taryf dynamicznych, awarii ani wymiany urządzeń.</p><p><strong>Odpowiedzialność:</strong> artykuł jest edukacyjny. Nie stanowi projektu wykonawczego, audytu, oferty ani doboru źródła.</p></div>
    </section>
<section class="rk-savings-section rk-savings-section-soft" id="rk-savings-faq">
      <span class="rk-savings-eyebrow">Najczęstsze pytania inwestorów</span>
      <h2 class="rk-savings-section-title">FAQ — rozstaw rur, koszt i oszczędności podłogówki</h2>
      <div class="rk-savings-faq">
        <details><summary>Czy rozstaw rur co 10 cm zawsze obniża rachunki?</summary><div class="rk-savings-faq-answer"><p>Nie. Może pozwolić obniżyć temperaturę wody, ale efekt zależy od sezonowej sprawności źródła. Jeżeli 15 cm zapewnia wymaganą moc, dodatkowa rura może nie dać mierzalnej oszczędności.</p></div></details>
        <details><summary>Ile rury potrzeba przy rozstawie 10 i 15 cm?</summary><div class="rk-savings-faq-answer"><p>Dla 150 m² czynnej podłogi orientacyjnie około 1500 m przy 10 cm i 1000 m przy 15 cm, przed podejściami oraz rezerwą.</p></div></details>
        <details><summary>Czy dla domu 150 m² liczyć rurę z całych 150 m²?</summary><div class="rk-savings-faq-answer"><p>Nie zawsze. Najpierw wyznacza się powierzchnię objętą rurami. Zabudowa, ściany i strefy wyłączone mogą ją zmniejszyć.</p></div></details>
        <details><summary>Czy rozstaw 10 cm oznacza zasilanie 35°C?</summary><div class="rk-savings-faq-answer"><p>Nie. Temperatura zależy od obciążenia, powierzchni czynnej, konstrukcji, okładziny, temperatury wnętrza i hydrauliki.</p></div></details>
        <details><summary>Jak policzyć okres zwrotu gęstszego rozstawu?</summary><div class="rk-savings-faq-answer"><p>Podziel dodatkowy koszt przez roczną oszczędność, jeśli jest dodatnia. Potem sprawdź wrażliwość na sprawność, ceny i koszt wykonania.</p></div></details>
        <details><summary>Czy niższa temperatura pomaga kotłowi gazowemu?</summary><div class="rk-savings-faq-answer"><p>Może wspierać kondensację przez niższy powrót, lecz wynik zależy od sezonu, modulacji, regulacji i strat kotła.</p></div></details>
        <details><summary>Czy podłogówka zawsze jest tańsza od grzejników?</summary><div class="rk-savings-faq-answer"><p>Nie. Porównanie musi zachować ten sam budynek, komfort, źródło i zakres kosztów oraz uwzględnić parametry obu emiterów.</p></div></details>
        <details><summary>Czy przy pellecie gęstszy rozstaw zmniejszy zużycie?</summary><div class="rk-savings-faq-answer"><p>Nie automatycznie. Potrzebna jest analiza sprawności całego układu z ochroną powrotu, mieszaniem i buforem.</p></div></details>
        <details><summary>Dlaczego kalkulator nie dolicza opłat stałych?</summary><div class="rk-savings-faq-answer"><p>Opłata identyczna w A i B nie jest oszczędzana wraz z każdą kWh, więc nie powinna sztucznie zwiększać korzyści B.</p></div></details>
        <details><summary>Jaki rozstaw jest najbardziej opłacalny?</summary><div class="rk-savings-faq-answer"><p>Zwykle nie jedna wartość dla domu. Projekt stosuje rozstawy pomieszczeniowe, by pokryć straty przy wspólnym parametrze bez zbędnych metrów.</p></div></details>
      </div>
    </section>
<section class="rk-savings-author" id="rk-savings-author">
      <span class="rk-savings-eyebrow">Opracowanie eksperckie</span><h2 class="rk-savings-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-savings-author-layout"><aside class="rk-savings-author-side"><div class="rk-savings-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i specjalista HVAC" width="400" height="400" loading="lazy" decoding="async"></div><div class="rk-savings-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div><p class="rk-savings-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p><div class="rk-savings-author-social" aria-label="Profile autora"><a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn">in</a><a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook">f</a><a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="X">X</a></div></aside>
        <div class="rk-savings-author-main"><div class="rk-savings-author-quote">„Najtańszy metr rury to ten, którego nie trzeba układać. Najdroższy — ten, którego zabrakło w pomieszczeniu krytycznym i wymusza wyższy parametr całej instalacji.”</div><p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz dokumentację wykonawczą. Łączy obciążenie pomieszczeń, powierzchnie czynne, moc podłogi, temperatury, pętle, przepływy, opory i wymagania źródła.</p><p>W aktualizacji usunięto stałe temperatury przypisane rozstawom, punktowy COP jako wynik roczny, arbitralny udział taniej taryfy, zawyżony metraż rur, automatyczne zwiększanie bezwładności i obietnicę pewnego zwrotu.</p><p>Kalkulator rozdziela inwestycję od eksploatacji i pokazuje cztery źródła na tych samych danych o cieple. Interaktywna mapa wskazuje sześć realnych miejsc optymalizacji.</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</a>.</p><div class="rk-savings-author-facts"><div class="rk-savings-author-fact"><strong>Zakres</strong>podłogówka, źródła ciepła i hydraulika</div><div class="rk-savings-author-fact"><strong>Metoda</strong>OZC, emisja, pętle, opory i koszt</div><div class="rk-savings-author-fact"><strong>Aktualizacja</strong>11 września 2026 r.</div></div></div>
      </div>
    </section>
  </div>
</article>
<script>
(function () {
  "use strict";
  var root = document.getElementById("rk-savings-guide");
  if (!root) return;

  var state = { source: "hp", investmentEdited: false, geometry: {}, sources: {} };
  function el(id) { return document.getElementById(id); }
  function n(id, fallback) {
    var node = el(id);
    if (!node) return fallback;
    var value = Number(String(node.value).replace(",", "."));
    return Number.isFinite(value) ? value : fallback;
  }
  function clamp(value, minimum, maximum) { return Math.min(maximum, Math.max(minimum, value)); }
  function txt(id, value) { var node = el(id); if (node) node.textContent = value; }
  function integer(value) { return new Intl.NumberFormat("pl-PL", { maximumFractionDigits: 0 }).format(Math.round(value)); }
  function decimal(value, digits) { return new Intl.NumberFormat("pl-PL", { minimumFractionDigits: digits, maximumFractionDigits: digits }).format(value); }
  function money(value) { return new Intl.NumberFormat("pl-PL", { style: "currency", currency: "PLN", maximumFractionDigits: 0 }).format(value); }
  function signed(value) {
    if (Math.abs(value) < 0.5) return "0 zł/rok";
    return (value > 0 ? "+" : "−") + integer(Math.abs(value)) + " zł/rok";
  }

  function tab(name) {
    root.querySelectorAll("[data-rk-savings-tab]").forEach(function (button) {
      button.setAttribute("aria-selected", button.dataset.rkSavingsTab === name ? "true" : "false");
    });
    ["geometry", "operation", "chart"].forEach(function (key) {
      var panel = el("rk-savings-panel-" + key);
      if (!panel) return;
      var active = key === name;
      panel.hidden = !active;
      panel.classList.toggle("rk-savings-is-hidden", !active);
    });
  }

  function geometry() {
    var gross = Math.max(1, n("rk-savings-gross-area", 150));
    var area = Math.max(1, n("rk-savings-active-area", 125));
    var spacingA = Math.max(0.05, n("rk-savings-base-spacing", 0.15));
    var reserve = clamp(n("rk-savings-reserve", 8), 0, 30) / 100;
    var loopLength = Math.max(30, n("rk-savings-max-loop", 90));
    var price = Math.max(0, n("rk-savings-pipe-price", 5));
    var loopCost = Math.max(0, n("rk-savings-loop-cost", 250));
    var other = n("rk-savings-other-cost", 0);
    var s10 = clamp(n("rk-savings-share-10", 30), 0, 100);
    var s15 = clamp(n("rk-savings-share-15", 50), 0, 100);
    var s20 = clamp(n("rk-savings-share-20", 20), 0, 100);
    var sum = s10 + s15 + s20;
    var scale = sum > 0 ? 100 / sum : 0;
    var factor = 1 + reserve;
    var lengthA = area / spacingA * factor;
    var fieldB = sum > 0 ? area * (s10 * scale / 100) / 0.10 + area * (s15 * scale / 100) / 0.15 + area * (s20 * scale / 100) / 0.20 : 0;
    var lengthB = fieldB * factor;
    var all10 = area / 0.10 * factor;
    var loopsA = Math.max(1, Math.ceil(lengthA / loopLength - 0.000000001));
    var loopsB = Math.max(1, Math.ceil(lengthB / loopLength - 0.000000001));
    var deltaLength = lengthB - lengthA;
    var deltaLoops = loopsB - loopsA;
    var investment = deltaLength * price + deltaLoops * loopCost + other;
    state.geometry = { lengthA: lengthA, lengthB: lengthB, all10: all10, loopsA: loopsA, loopsB: loopsB, investment: investment };

    var status = el("rk-savings-share-status");
    if (status) {
      var exact = Math.abs(sum - 100) < 0.01;
      var areaWarning = area > gross;
      var message = exact ? "Suma: 100%" : "Suma: " + integer(sum) + "% — udziały są normalizowane";
      if (areaWarning) message += "; powierzchnia czynna przekracza powierzchnię domu";
      status.textContent = message;
      status.classList.toggle("is-warning", !exact || areaWarning);
    }
    txt("rk-savings-length-a", integer(lengthA) + " m rury");
    txt("rk-savings-loops-a", integer(loopsA) + " szac. pętli");
    txt("rk-savings-length-b", integer(lengthB) + " m rury");
    txt("rk-savings-loops-b", integer(loopsB) + " szac. pętli");
    txt("rk-savings-length-all10", integer(all10) + " m rury");
    txt("rk-savings-investment-delta", money(investment));
    txt("rk-savings-length-delta", (deltaLength >= 0 ? "+" : "−") + integer(Math.abs(deltaLength)) + " m; " + (deltaLoops >= 0 ? "+" : "−") + Math.abs(deltaLoops) + " pętli");
    var override = el("rk-savings-investment-override");
    if (override) if (!state.investmentEdited) override.value = String(Math.round(investment));
  }

  function result(name, effA, effB, carrierPrice, heatA, heatB, auxA, auxB, electricPrice) {
    var a = Math.max(0.01, effA);
    var b = Math.max(0.01, effB);
    var costA = heatA / a * carrierPrice + auxA * electricPrice;
    var costB = heatB / b * carrierPrice + auxB * electricPrice;
    var saving = costA - costB;
    return { name: name, costA: costA, costB: costB, saving: saving, percent: costA > 0 ? saving / costA * 100 : 0 };
  }

  function sources() {
    var heatA = Math.max(0, n("rk-savings-annual-heat", 6750));
    var heatB = heatA * (1 - clamp(n("rk-savings-overheat", 0), 0, 25) / 100);
    var auxA = Math.max(0, n("rk-savings-aux-a", 150));
    var auxB = Math.max(0, n("rk-savings-aux-b", 130));
    var electricity = Math.max(0.001, n("rk-savings-electricity-price", 1.05));
    var gas = Math.max(0.001, n("rk-savings-gas-price", 0.35));
    var pellet = Math.max(0.001, n("rk-savings-pellet-price", 1500));
    var calorific = Math.max(0.1, n("rk-savings-pellet-calorific", 4.8));
    state.sources = {
      hp: result("Pompa ciepła", n("rk-savings-hp-eff-a", 3.4), n("rk-savings-hp-eff-b", 3.8), electricity, heatA, heatB, auxA, auxB, electricity),
      gas: result("Kocioł gazowy", n("rk-savings-gas-eff-a", 0.90), n("rk-savings-gas-eff-b", 0.95), gas, heatA, heatB, auxA, auxB, electricity),
      pellet: result("Kocioł na pellet", n("rk-savings-pellet-eff-a", 0.82), n("rk-savings-pellet-eff-b", 0.82), pellet / (1000 * calorific), heatA, heatB, auxA, auxB, electricity),
      electric: result("Kocioł elektryczny", n("rk-savings-electric-eff-a", 0.99), n("rk-savings-electric-eff-b", 0.99), electricity, heatA, heatB, auxA, auxB, electricity)
    };
    [["hp", "rk-savings-hp-costs", "rk-savings-hp-saving"], ["gas", "rk-savings-gas-costs", "rk-savings-gas-saving"], ["pellet", "rk-savings-pellet-costs", "rk-savings-pellet-saving"], ["electric", "rk-savings-electric-costs", "rk-savings-electric-saving"]].forEach(function (row) {
      var item = state.sources[row[0]];
      txt(row[1], money(item.costA) + " / " + money(item.costB) + " rocznie");
      txt(row[2], signed(item.saving) + " (" + decimal(item.percent, 1) + "%)");
      var cell = el(row[2]);
      if (cell) {
        cell.classList.toggle("is-positive", item.saving > 0.5);
        cell.classList.toggle("is-negative", item.saving < -0.5);
      }
    });
  }

  function series(investment, annual, growth, years) {
    var values = [-investment];
    var total = -investment;
    var year;
    for (year = 1; year <= years; year += 1) {
      total += annual * Math.pow(1 + growth, year - 1);
      values.push(total);
    }
    return values;
  }
  function payback(investment, annual, growth) {
    if (investment <= 0) return annual >= 0 ? "od początku" : "przewaga startowa maleje";
    if (annual <= 0) return "brak zwrotu";
    var total = -investment;
    var year;
    for (year = 1; year <= 200; year += 1) {
      total += annual * Math.pow(1 + growth, year - 1);
      if (total >= 0) return year === 1 ? "do 1 roku" : "około " + year + " lat";
    }
    return "ponad 200 lat";
  }
  function svgText(x, y, value, className, anchor) {
    return '<text x="' + x + '" y="' + y + '" class="' + className + '" text-anchor="' + (anchor || "start") + '">' + value + "</text>";
  }

  function chart() {
    var item = state.sources[state.source];
    if (!item) return;
    var investment = n("rk-savings-investment-override", 0);
    var years = Math.round(clamp(n("rk-savings-horizon", 20), 1, 40));
    var growth = clamp(n("rk-savings-growth", 0), -10, 25) / 100;
    var values = series(investment, item.saving, growth, years);
    var finalValue = values[values.length - 1];
    txt("rk-savings-chart-source-name", item.name);
    txt("rk-savings-chart-saving", signed(item.saving));
    txt("rk-savings-chart-payback", payback(investment, item.saving, growth));
    txt("rk-savings-chart-total", money(finalValue));

    var svg = el("rk-savings-chart-svg");
    if (!svg) return;
    var top = 86, bottom = 330, maxCost = Math.max(1, item.costA, item.costB) * 1.12;
    var heightA = item.costA / maxCost * (bottom - top);
    var heightB = item.costB / maxCost * (bottom - top);
    var left = 344, right = 724;
    var minValue = Math.min.apply(null, values.concat([0]));
    var maxValue = Math.max.apply(null, values.concat([0]));
    if (Math.abs(maxValue - minValue) < 1) { maxValue += 1; minValue -= 1; }
    var padding = (maxValue - minValue) * 0.12;
    maxValue += padding; minValue -= padding;
    function y(value) { return bottom - (value - minValue) / (maxValue - minValue) * (bottom - top); }
    var points = values.map(function (value, index) { return (left + index / years * (right - left)).toFixed(1) + "," + y(value).toFixed(1); }).join(" ");
    var grid = "";
    var gridIndex;
    for (gridIndex = 0; gridIndex <= 4; gridIndex += 1) {
      var gy = top + gridIndex / 4 * (bottom - top);
      var gv = maxValue - gridIndex / 4 * (maxValue - minValue);
      grid += '<line x1="' + left + '" y1="' + gy + '" x2="' + right + '" y2="' + gy + '" class="rk-savings-svg-grid" />';
      grid += svgText(left - 8, gy + 4, integer(gv) + " zł", "rk-savings-svg-tick", "end");
    }
    var mid = Math.max(1, Math.round(years / 2));
    var markup = '<rect x="0" y="0" width="760" height="410" rx="18" class="rk-savings-svg-bg" />';
    markup += svgText(36, 42, "Koszt w 1. roku", "rk-savings-svg-title");
    markup += svgText(left, 42, "Bilans inwestycji po latach", "rk-savings-svg-title");
    markup += '<line x1="310" y1="60" x2="310" y2="354" class="rk-savings-svg-separator" />';
    markup += '<line x1="48" y1="330" x2="278" y2="330" class="rk-savings-svg-axis" />';
    markup += '<rect x="80" y="' + (bottom - heightA) + '" width="72" height="' + heightA + '" rx="9" class="rk-savings-svg-bar-a" />';
    markup += '<rect x="184" y="' + (bottom - heightB) + '" width="72" height="' + heightB + '" rx="9" class="rk-savings-svg-bar-b" />';
    markup += svgText(116, 357, "A", "rk-savings-svg-label", "middle") + svgText(220, 357, "B", "rk-savings-svg-label", "middle");
    markup += svgText(116, Math.max(top + 18, bottom - heightA - 10), integer(item.costA) + " zł", "rk-savings-svg-value", "middle");
    markup += svgText(220, Math.max(top + 18, bottom - heightB - 10), integer(item.costB) + " zł", "rk-savings-svg-value", "middle");
    markup += grid + '<line x1="' + left + '" y1="' + y(0) + '" x2="' + right + '" y2="' + y(0) + '" class="rk-savings-svg-zero" />';
    markup += '<polyline points="' + points + '" class="rk-savings-svg-line" /><circle cx="' + right + '" cy="' + y(finalValue) + '" r="6" class="rk-savings-svg-point" />';
    markup += svgText(left, 365, "0", "rk-savings-svg-label", "middle") + svgText(left + mid / years * (right - left), 365, String(mid), "rk-savings-svg-label", "middle") + svgText(right, 365, String(years) + " lat", "rk-savings-svg-label", "middle");
    markup += svgText(right, Math.max(73, Math.min(390, y(finalValue) - 12)), money(finalValue), "rk-savings-svg-value", "end");
    markup += svgText(36, 392, "Wynik zależy wyłącznie od wpisanych założeń.", "rk-savings-svg-note");
    svg.innerHTML = markup;

    var reading = "Różnica roczna jest bliska zeru; rozstrzygają moc, komfort i hydraulika.";
    if (item.saving > 0.5) reading = "Wariant B oszczędza około " + money(item.saving) + " w pierwszym roku. Przy różnicy inwestycji " + money(investment) + " prosty zwrot to " + payback(investment, item.saving, growth) + ".";
    if (item.saving < -0.5) reading = "Wariant B kosztuje około " + money(Math.abs(item.saving)) + " więcej rocznie i nie jest wariantem oszczędnościowym przy tych danych.";
    txt("rk-savings-chart-reading", reading);
    var description = el("rk-savings-chart-desc");
    if (description) description.textContent = item.name + ": A " + money(item.costA) + ", B " + money(item.costB) + ", bilans po " + years + " latach " + money(finalValue) + ".";
  }

  function update() { geometry(); sources(); chart(); }

  var levers = {
    ozc: ["Etap 1 z 6", "OZC i straty budynku", "Największa oszczędność może powstać przed instalacją: przez zmniejszenie strat, które system ma pokrywać przez cały sezon.", "Założenia przegród, mostków, wentylacji i temperatur pomieszczeń albo sam standard budynku.", "Mniejsze straty obniżają potrzebne ciepło, moc źródła i zwykle temperaturę wymaganą przez podłogę.", "OZC dla każdego pomieszczenia i zgodność danych z architekturą oraz wentylacją.", "Nie zmniejszaj strat tylko w arkuszu. Zaniżone OZC prowadzi do deficytu mocy."],
    area: ["Etap 2 z 6", "Powierzchnia czynna podłogi", "Ta sama moc rozłożona na mniejszej powierzchni wymaga większego strumienia W/m².", "Koordynujesz pętle z trwałą zabudową, wanną, szafami, wyspą i dylatacjami.", "Unikasz braku mocy i kupowania rury dla obszaru, którego nie da się wykorzystać.", "Rzut wykonawczy, aranżację i listę powierzchni wyłączonych.", "Nie odejmuj automatycznie wszystkich mebli ruchomych; kryterium musi być spójne z projektem."],
    spacing: ["Etap 3 z 6", "Rozstaw dobrany do pomieszczeń", "10, 15 lub 20 cm jest narzędziem do uzyskania wymaganej mocy przy wspólnym parametrze.", "Zagęszczasz strefy krytyczne, a rzadszy rozstaw zostawiasz tam, gdzie pozwala bilans.", "Ograniczasz zbędne metry i pętle bez podnoszenia temperatury całego systemu.", "Moc z obliczeń lub właściwych tabel dla dokładnej konstrukcji i okładziny.", "Rzadszy rozstaw nie może tworzyć deficytu, a gęstszy nie naprawi dowolnie małej powierzchni."],
    temperature: ["Etap 4 z 6", "Temperatura i krzywa grzewcza", "Parametr projektowy pokrywa straty w warunkach obliczeniowych, a krzywa obniża go przy cieplejszej pogodzie.", "Ustalasz punkt projektowy, nachylenie i przesunięcie krzywej.", "Niższa wymagana temperatura może poprawić SCOP pompy i warunki kondensacji kotła gazowego.", "Bilans pomieszczeń i dane źródła w porównywalnych warunkach.", "Nie obniżaj parametru poniżej wartości, przy której pomieszczenie krytyczne traci bilans."],
    hydraulics: ["Etap 5 z 6", "Hydraulika i pompa obiegowa", "Prawidłowa moc wymaga przepływu przez pętle przy oporze, który układ potrafi pokonać.", "Dobierasz średnice, długości, rozdzielacze, rotametry i punkt pracy pompy.", "Unikasz zbędnej wysokości podnoszenia, hałasu i poboru prądu.", "Przepływy z mocy i ΔT, opory elementów oraz charakterystykę pompy.", "Nie naprawiaj deficytu cieplnego najwyższym biegiem pompy ani maksymalnym otwarciem rotametrów."],
    control: ["Etap 6 z 6", "Sterowanie bez przegrzewania", "Oszczędność powstaje, gdy regulacja ogranicza zbędne ciepło i zostawia źródłu bezpieczne warunki.", "Dostrajasz krzywą, temperatury stref i logikę siłowników z uwzględnieniem bezwładności.", "Mniejsze przegrzewanie ogranicza ciepło użyteczne, a stabilna praca może zmniejszać cykle.", "Temperatury pomieszczeń, czas reakcji, minimalny przepływ i zachowanie źródła.", "Termostat nie dobiera wody, nie równoważy pętli i nie zastępuje automatyki źródła."]
  };
  function showLever(key) {
    var data = levers[key];
    if (!data) return;
    ["rk-savings-lever-step", "rk-savings-lever-title", "rk-savings-lever-intro", "rk-savings-lever-action", "rk-savings-lever-cost", "rk-savings-lever-check", "rk-savings-lever-limit"].forEach(function (id, index) { txt(id, data[index]); });
    root.querySelectorAll("[data-rk-savings-lever]").forEach(function (button) { button.setAttribute("aria-selected", button.dataset.rkSavingsLever === key ? "true" : "false"); });
  }

  root.addEventListener("click", function (event) {
    var target = event.target.closest("[data-rk-savings-tab], [data-rk-savings-source], [data-rk-savings-lever], #rk-savings-go-operation, #rk-savings-go-chart");
    if (!target) return;
    if (target.dataset.rkSavingsTab) { tab(target.dataset.rkSavingsTab); return; }
    if (target.dataset.rkSavingsSource) {
      state.source = target.dataset.rkSavingsSource;
      root.querySelectorAll("[data-rk-savings-source]").forEach(function (button) { button.setAttribute("aria-pressed", button === target ? "true" : "false"); });
      chart(); return;
    }
    if (target.dataset.rkSavingsLever) { showLever(target.dataset.rkSavingsLever); return; }
    if (target.id === "rk-savings-go-operation") { tab("operation"); el("rk-savings-panel-operation").scrollIntoView({ behavior: "smooth", block: "nearest" }); return; }
    if (target.id === "rk-savings-go-chart") { tab("chart"); chart(); el("rk-savings-panel-chart").scrollIntoView({ behavior: "smooth", block: "nearest" }); }
  });
  root.addEventListener("input", function (event) { if (event.target.id === "rk-savings-investment-override") state.investmentEdited = true; update(); });
  root.addEventListener("change", update);
  root.querySelectorAll(".rk-savings-faq details").forEach(function (detail) {
    detail.addEventListener("toggle", function () {
      if (!detail.open) return;
      root.querySelectorAll(".rk-savings-faq details").forEach(function (other) { if (other !== detail) other.open = false; });
    });
  });
  update(); showLever("ozc");
}());
</script>

<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",
      "description": "Profesjonalne projektowanie ogrzewania podłogowego i poradniki techniczne HVAC.",
      "inLanguage": "pl-PL",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://projekt-ogrzewania.pl/?s={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "logo": {
        "@id": "https://projekt-ogrzewania.pl/#logo"
      },
      "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": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#logo",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "width": 1024,
      "height": 1024,
      "caption": "Projekt Ogrzewania"
    },
    {
      "@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",
      "worksFor": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "affiliation": [
        {
          "@id": "https://remont.biz.pl/#organization"
        },
        {
          "@id": "https://sobir.pl/#organization"
        }
      ],
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "obliczenia OZC",
        "temperatura zasilania",
        "hydraulika instalacji",
        "krzywa grzewcza"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-–-analiza-rozstawu-rur-dla-domu-150-m².webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-–-analiza-rozstawu-rur-dla-domu-150-m².webp",
      "width": 945,
      "height": 945,
      "encodingFormat": "image/webp",
      "caption": "Rzeczywiste oszczędności na kosztach ogrzewania — analiza rozstawu rur dla domu 150 m²"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Ogrzewanie podłogowe",
          "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Rozstaw rur 10 czy 15 cm — koszty i oszczędności",
          "item": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#webpage",
      "url": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/",
      "name": "Rozstaw rur 10 czy 15 cm — rzeczywiste koszty ogrzewania domu 150 m²",
      "description": "Czy rozstaw rur co 10 cm naprawdę obniża rachunki? Policz koszt rur, energii i zwrot dla domu 150 m² z pompą ciepła, gazem, pelletem lub prądem.",
      "inLanguage": "pl-PL",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#breadcrumb"
      },
      "primaryImageOfPage": {
        "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#primaryimage"
      },
      "datePublished": "2026-01-31T11:58:03+00:00",
      "dateModified": "2026-09-11T00:00:00+00:00",
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "reviewedBy": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#article"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          "#rk-savings-answer",
          "#rk-savings-conclusions"
        ]
      }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#article",
      "headline": "Rozstaw rur 10 czy 15 cm — rzeczywiste koszty ogrzewania domu 150 m²",
      "alternativeHeadline": "Czy gęstszy rozstaw podłogówki się opłaca? Kalkulator pompy ciepła, gazu, pelletu i prądu",
      "description": "Techniczna analiza wpływu rozstawu rur na długość pętli, temperaturę wody, sprawność sezonową, koszt energii i zwrot.",
      "image": {
        "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#primaryimage"
      },
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#webpage"
      },
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "datePublished": "2026-01-31T11:58:03+00:00",
      "dateModified": "2026-09-11T00:00:00+00:00",
      "inLanguage": "pl-PL",
      "articleSection": [
        "Ogrzewanie podłogowe",
        "Koszty ogrzewania",
        "Rozstaw rur",
        "Hydraulika",
        "Pompy ciepła"
      ],
      "keywords": [
        "rozstaw rur 10 czy 15 cm",
        "czy rozstaw rur 10 cm się opłaca",
        "ile rury na 150 m² podłogówki",
        "koszt ogrzewania domu 150 m²",
        "podłogówka czy grzejniki koszty",
        "optymalizacja ogrzewania podłogowego"
      ],
      "about": [
        {
          "@type": "Thing",
          "name": "Ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Rozstaw rur"
        },
        {
          "@type": "Thing",
          "name": "Koszt cyklu życia"
        }
      ],
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#cost-calculator"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#optimization-map"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#checklist"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#faq-schema"
        }
      ],
      "citation": [
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html",
        "https://www.ure.gov.pl/pl/konsumenci/rachunki-pod-kontrola-konsumen/skladowe-rachunku-za-energie-e/12783,Skladowe-rachunku-za-energie-elektryczna.html",
        "https://www.gov.uk/government/news/heat-pumps-explained-experts-answer-your-questions"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#cost-calculator",
      "name": "Kalkulator optymalizacji kosztów ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#rk-savings-calculator",
      "description": "Oblicza długość rur, różnicę nakładów, koszty czterech źródeł i skumulowany zwrot.",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "featureList": [
        "długość rur i liczba pętli",
        "koszt różnicowy",
        "pompa ciepła, gaz, pellet i prąd",
        "wykres kosztów",
        "prosty zwrot"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#optimization-map",
      "name": "Interaktywna mapa optymalizacji podłogówki",
      "url": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#rk-savings-optimization-map",
      "description": "Sześć etapów optymalizacji: OZC, powierzchnia czynna, rozstaw, temperatura, hydraulika i sterowanie.",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "educationalUse": "analiza założeń projektu ogrzewania podłogowego"
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#howto",
      "name": "Jak przeprowadzić analizę kosztów rozstawu rur dla domu 150 m²",
      "description": "Osiem kroków od powierzchni czynnej i metrażu do analizy kosztów.",
      "totalTime": "PT45M",
      "supply": [
        {
          "@type": "HowToSupply",
          "name": "OZC pomieszczeń"
        },
        {
          "@type": "HowToSupply",
          "name": "Rzut z powierzchnią czynną"
        },
        {
          "@type": "HowToSupply",
          "name": "Dane źródła"
        },
        {
          "@type": "HowToSupply",
          "name": "Ceny nośników"
        }
      ],
      "tool": [
        {
          "@type": "HowToTool",
          "name": "Kalkulator w artykule"
        },
        {
          "@type": "HowToTool",
          "name": "Dokumentacja systemu podłogowego"
        }
      ],
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Potwierdź 125 m²",
          "text": "Wyznacz je z rzutu po odjęciu trwałej zabudowy."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Policz metry pola",
          "text": "A: około 833 m. B: około 917 m, przed podejściami."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Podziel pętle",
          "text": "Wyznacz realne trasy, a nie tylko iloraz metrażu."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Zweryfikuj parametr",
          "text": "Każde pomieszczenie musi pokryć obciążenie."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Wpisz SCOP lub η",
          "text": "Użyj porównywalnych danych sezonowych."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Użyj własnych cen",
          "text": "Wprowadź zmienne składniki swojej umowy."
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Policz scenariusze",
          "text": "Zmień sprawność, nakład i cenę nośnika."
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Wybierz wykonalny układ",
          "text": "Najtańszy arkusz odpada, jeśli nie bilansuje mocy."
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#checklist",
      "name": "Lista kontrolna optymalizacji kosztów podłogówki",
      "numberOfItems": 14,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "OZC"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Powierzchnia czynna"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Okładzina"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Moc dla parametrów"
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Rozstaw"
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Trasy"
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Średnice"
        },
        {
          "@type": "ListItem",
          "position": 8,
          "name": "Hydraulika"
        },
        {
          "@type": "ListItem",
          "position": 9,
          "name": "Źródło"
        },
        {
          "@type": "ListItem",
          "position": 10,
          "name": "Ceny zmienne"
        },
        {
          "@type": "ListItem",
          "position": 11,
          "name": "Energia pomocnicza"
        },
        {
          "@type": "ListItem",
          "position": 12,
          "name": "Sterowanie"
        },
        {
          "@type": "ListItem",
          "position": 13,
          "name": "Wrażliwość"
        },
        {
          "@type": "ListItem",
          "position": 14,
          "name": "Dokumentacja"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#faq-schema",
      "url": "https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m²/#rk-savings-faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy rozstaw rur co 10 cm zawsze obniża rachunki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Może pozwolić obniżyć temperaturę wody, ale efekt zależy od sezonowej sprawności źródła. Jeżeli 15 cm zapewnia wymaganą moc, dodatkowa rura może nie dać mierzalnej oszczędności."
          }
        },
        {
          "@type": "Question",
          "name": "Ile rury potrzeba przy rozstawie 10 i 15 cm?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Dla 150 m² czynnej podłogi orientacyjnie około 1500 m przy 10 cm i 1000 m przy 15 cm, przed podejściami oraz rezerwą."
          }
        },
        {
          "@type": "Question",
          "name": "Czy dla domu 150 m² liczyć rurę z całych 150 m²?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie zawsze. Najpierw wyznacza się powierzchnię objętą rurami. Zabudowa, ściany i strefy wyłączone mogą ją zmniejszyć."
          }
        },
        {
          "@type": "Question",
          "name": "Czy rozstaw 10 cm oznacza zasilanie 35°C?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Temperatura zależy od obciążenia, powierzchni czynnej, konstrukcji, okładziny, temperatury wnętrza i hydrauliki."
          }
        },
        {
          "@type": "Question",
          "name": "Jak policzyć okres zwrotu gęstszego rozstawu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Podziel dodatkowy koszt przez roczną oszczędność, jeśli jest dodatnia. Potem sprawdź wrażliwość na sprawność, ceny i koszt wykonania."
          }
        },
        {
          "@type": "Question",
          "name": "Czy niższa temperatura pomaga kotłowi gazowemu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Może wspierać kondensację przez niższy powrót, lecz wynik zależy od sezonu, modulacji, regulacji i strat kotła."
          }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka zawsze jest tańsza od grzejników?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Porównanie musi zachować ten sam budynek, komfort, źródło i zakres kosztów oraz uwzględnić parametry obu emiterów."
          }
        },
        {
          "@type": "Question",
          "name": "Czy przy pellecie gęstszy rozstaw zmniejszy zużycie?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie automatycznie. Potrzebna jest analiza sprawności całego układu z ochroną powrotu, mieszaniem i buforem."
          }
        },
        {
          "@type": "Question",
          "name": "Dlaczego kalkulator nie dolicza opłat stałych?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Opłata identyczna w A i B nie jest oszczędzana wraz z każdą kWh, więc nie powinna sztucznie zwiększać korzyści B."
          }
        },
        {
          "@type": "Question",
          "name": "Jaki rozstaw jest najbardziej opłacalny?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Zwykle nie jedna wartość dla domu. Projekt stosuje rozstawy pomieszczeniowe, by pokryć straty przy wspólnym parametrze bez zbędnych metrów."
          }
        }
      ]
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/">Rzeczywiste oszczędności na kosztach ogrzewania w skali roku – analiza rozstawu rur dla domu 150 m².</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</title>
		<link>https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 08 Feb 2025 11:55:32 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[domowe systemy grzewcze]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator wody]]></category>
		<category><![CDATA[obliczenia budowlane]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędności energii]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<category><![CDATA[remonty]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2128</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, ile wody potrzeba do wypełnienia instalacji podłogówki? Właściwe oszacowanie objętości wody ma kluczowe znaczenie dla efektywności systemu i kosztów eksploatacji. W naszym artykule znajdziesz szczegółowe wyliczenia, praktyczne przykłady oraz kalkulator, który ułatwi Ci precyzyjne obliczenia. Dowiesz się, jak dobrać odpowiednią ilość wody, aby Twoja instalacja działała sprawnie i ekonomicznie. Sprawdź już teraz!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/">Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-volume-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e5aa28;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
  }

  #rk-volume-guide,
  #rk-volume-guide * { box-sizing: border-box; }

  #rk-volume-guide img,
  #rk-volume-guide svg { max-width: 100%; }

  #rk-volume-guide button,
  #rk-volume-guide input,
  #rk-volume-guide select,
  #rk-volume-guide label,
  #rk-volume-guide summary,
  #rk-volume-guide a {
    font: inherit;
    -webkit-tap-highlight-color: transparent;
  }

  #rk-volume-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }

  #rk-volume-guide p,
  #rk-volume-guide ul,
  #rk-volume-guide ol { margin-top: 0; margin-bottom: 1.1em; }

  #rk-volume-guide h2,
  #rk-volume-guide h3,
  #rk-volume-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 950;
    letter-spacing: -0.035em;
  }

  #rk-volume-guide h2 {
    margin-bottom: 18px;
    font-size: clamp(1.8rem, 4vw, 2.75rem);
    line-height: 1.08;
  }

  #rk-volume-guide h3 {
    margin-bottom: 10px;
    font-size: clamp(1.08rem, 2.2vw, 1.34rem);
    line-height: 1.22;
  }

  #rk-volume-guide .rk-volume-shell {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 32px;
    background: var(--rk-white);
    box-shadow: 0 28px 70px rgba(16, 37, 54, 0.11);
  }

  #rk-volume-guide .rk-volume-progress-track {
    position: sticky;
    z-index: 60;
    top: 0;
    height: 5px;
    background: rgba(213, 228, 235, 0.88);
  }

  #rk-volume-guide .rk-volume-progress {
    width: 0;
    height: 100%;
    background: linear-gradient(90deg, var(--rk-orange), var(--rk-cyan));
  }

  #rk-volume-guide .rk-volume-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(40px, 7vw, 78px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 17%, rgba(255, 106, 61, 0.35), transparent 28%),
      radial-gradient(circle at 76% 96%, rgba(37, 199, 216, 0.25), transparent 35%),
      linear-gradient(126deg, #0f2233, #143d53 72%, #2e3944);
  }

  #rk-volume-guide .rk-volume-hero::after {
    content: "";
    position: absolute;
    right: -105px;
    bottom: -135px;
    width: 330px;
    height: 330px;
    border: 42px solid rgba(255, 255, 255, 0.055);
    border-radius: 50%;
  }

  #rk-volume-guide .rk-volume-hero-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(270px, .6fr);
    gap: clamp(28px, 5vw, 62px);
    align-items: center;
  }

  #rk-volume-guide .rk-volume-eyebrow,
  #rk-volume-guide .rk-volume-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: var(--rk-blue);
    font-size: .68rem;
    font-weight: 950;
    letter-spacing: .075em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-volume-guide .rk-volume-eyebrow { color: #8ff4ff; }

  #rk-volume-guide .rk-volume-eyebrow b {
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255, 106, 61, .14);
  }

  #rk-volume-guide .rk-volume-hero-title {
    max-width: 790px;
    margin-bottom: 19px;
    color: var(--rk-white);
    font-size: clamp(2.25rem, 6vw, 4.45rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: .98;
  }

  #rk-volume-guide .rk-volume-hero-lead {
    max-width: 760px;
    margin-bottom: 25px;
    color: #dceaf0;
    font-size: clamp(1.02rem, 2vw, 1.23rem);
    line-height: 1.68;
  }

  #rk-volume-guide .rk-volume-meta { display: flex; flex-wrap: wrap; gap: 10px; }

  #rk-volume-guide .rk-volume-meta span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 999px;
    color: #eaf7fa;
    background: rgba(255, 255, 255, .075);
    font-size: .75rem;
    font-weight: 800;
  }

  #rk-volume-guide .rk-volume-hero-card {
    position: relative;
    padding: 26px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 25px;
    background: rgba(5, 27, 42, .56);
    box-shadow: 0 20px 44px rgba(0, 0, 0, .19);
    backdrop-filter: blur(9px);
  }

  #rk-volume-guide .rk-volume-hero-card small {
    display: block;
    margin-bottom: 10px;
    color: #8eeef7;
    font-size: .67rem;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
  }

  #rk-volume-guide .rk-volume-hero-formula {
    margin-bottom: 17px;
    color: var(--rk-white);
    font-size: clamp(1.35rem, 3vw, 2rem);
    font-weight: 950;
    letter-spacing: -.035em;
    line-height: 1.25;
  }

  #rk-volume-guide .rk-volume-hero-values {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 9px;
  }

  #rk-volume-guide .rk-volume-hero-values div {
    padding: 12px;
    border-radius: 14px;
    color: #dcecf1;
    background: rgba(255, 255, 255, .075);
    font-size: .7rem;
  }

  #rk-volume-guide .rk-volume-hero-values strong {
    display: block;
    color: var(--rk-white);
    font-size: 1.12rem;
  }

  #rk-volume-guide .rk-volume-nav {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 15px clamp(18px, 5vw, 58px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
    scrollbar-width: thin;
  }

  #rk-volume-guide .rk-volume-nav a {
    flex: 0 0 auto;
    padding: 8px 12px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: .72rem;
    font-weight: 900;
    text-decoration: none;
  }

  #rk-volume-guide .rk-volume-nav a:hover,
  #rk-volume-guide .rk-volume-nav a:focus-visible { color: var(--rk-white); background: var(--rk-blue); }

  #rk-volume-guide .rk-volume-body { padding: 0 clamp(20px, 6vw, 76px) clamp(42px, 7vw, 76px); }

  #rk-volume-guide .rk-volume-section {
    padding: clamp(48px, 7vw, 82px) 0;
    border-bottom: 1px solid var(--rk-line);
    scroll-margin-top: 24px;
  }

  #rk-volume-guide .rk-volume-section:last-child { border-bottom: 0; }

  #rk-volume-guide .rk-volume-lead {
    max-width: 920px;
    color: var(--rk-text);
    font-size: clamp(1.02rem, 2vw, 1.16rem);
  }

  #rk-volume-guide .rk-volume-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr);
    gap: 20px;
    margin-top: 24px;
  }

  #rk-volume-guide .rk-volume-answer-main,
  #rk-volume-guide .rk-volume-answer-side,
  #rk-volume-guide .rk-volume-card,
  #rk-volume-guide .rk-volume-note,
  #rk-volume-guide .rk-volume-warning,
  #rk-volume-guide .rk-volume-step {
    padding: clamp(20px, 3vw, 28px);
    border: 1px solid var(--rk-line);
    border-radius: 21px;
    background: var(--rk-white);
  }

  #rk-volume-guide .rk-volume-answer-main { border-left: 7px solid var(--rk-cyan); background: var(--rk-cyan-soft); }
  #rk-volume-guide .rk-volume-answer-side { border-left: 7px solid var(--rk-orange); background: var(--rk-orange-soft); }

  #rk-volume-guide .rk-volume-grid-2,
  #rk-volume-guide .rk-volume-grid-3,
  #rk-volume-guide .rk-volume-grid-4 {
    display: grid;
    gap: 17px;
    margin-top: 23px;
  }

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

  #rk-volume-guide .rk-volume-card { position: relative; overflow: hidden; }

  #rk-volume-guide .rk-volume-card-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 42px;
    height: 42px;
    margin-bottom: 14px;
    padding: 0 10px;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-navy);
    font-weight: 950;
  }

  #rk-volume-guide .rk-volume-card p:last-child,
  #rk-volume-guide .rk-volume-note p:last-child,
  #rk-volume-guide .rk-volume-warning p:last-child,
  #rk-volume-guide .rk-volume-step p:last-child { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-formula-box {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(270px, .62fr);
    gap: 24px;
    align-items: center;
    margin: 28px 0;
    padding: clamp(24px, 5vw, 42px);
    border-radius: 25px;
    color: var(--rk-white);
    background: linear-gradient(130deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-volume-guide .rk-volume-formula-box h3 { color: var(--rk-white); }

  #rk-volume-guide .rk-volume-formula {
    padding: 22px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 18px;
    background: rgba(255, 255, 255, .08);
    color: #92f4ff;
    font-size: clamp(1.2rem, 3vw, 1.78rem);
    font-weight: 950;
    letter-spacing: -.025em;
    text-align: center;
  }

  #rk-volume-guide .rk-volume-table-wrap { margin-top: 23px; }

  #rk-volume-guide table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
  }

  #rk-volume-guide th,
  #rk-volume-guide td {
    padding: 14px 16px;
    border-right: 1px solid var(--rk-line);
    border-bottom: 1px solid var(--rk-line);
    text-align: left;
    vertical-align: top;
  }

  #rk-volume-guide th:last-child,
  #rk-volume-guide td:last-child { border-right: 0; }
  #rk-volume-guide tbody tr:last-child td { border-bottom: 0; }

  #rk-volume-guide th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: .76rem;
    font-weight: 900;
    letter-spacing: .025em;
  }

  #rk-volume-guide tbody tr:nth-child(even) td { background: var(--rk-soft); }

  #rk-volume-guide .rk-volume-tool {
    overflow: hidden;
    margin-top: 28px;
    border: 1px solid #315469;
    border-radius: 28px;
    background: #0f2636;
    box-shadow: 0 25px 54px rgba(16, 37, 54, .18);
  }

  #rk-volume-guide .rk-volume-tool-head {
    padding: clamp(27px, 5vw, 44px);
    color: #dcebf1;
    background:
      radial-gradient(circle at 92% 12%, rgba(255, 106, 61, .26), transparent 24%),
      linear-gradient(125deg, #102536, #17435a);
  }

  #rk-volume-guide .rk-volume-tool-head h2 { color: var(--rk-white); }
  #rk-volume-guide .rk-volume-tool-head p:last-child { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-tool-body { padding: clamp(20px, 4vw, 38px); }

  #rk-volume-guide .rk-volume-mode-switch {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-bottom: 22px;
  }

  #rk-volume-guide .rk-volume-mode-switch input { position: absolute; opacity: 0; pointer-events: none; }

  #rk-volume-guide .rk-volume-mode-switch label {
    display: block;
    min-height: 100%;
    padding: 17px 19px;
    border: 1px solid #456579;
    border-radius: 16px;
    color: #dcebf1;
    background: rgba(255, 255, 255, .045);
    cursor: pointer;
  }

  #rk-volume-guide .rk-volume-mode-switch label strong { display: block; color: var(--rk-white); }
  #rk-volume-guide .rk-volume-mode-switch label small { display: block; margin-top: 3px; color: #a9c0cc; }

  #rk-volume-guide #rk-volume-mode-length:checked + label,
  #rk-volume-guide #rk-volume-mode-area:checked + label {
    border-color: var(--rk-cyan);
    background: rgba(37, 199, 216, .14);
    box-shadow: inset 0 0 0 1px var(--rk-cyan);
  }

  #rk-volume-guide .rk-volume-mode-panel[hidden],
  #rk-volume-guide .rk-volume-custom-diameter[hidden],
  #rk-volume-guide .rk-volume-dtr-fields[hidden] { display: none !important; }

  #rk-volume-guide .rk-volume-calc-block {
    margin-top: 18px;
    padding: 21px;
    border: 1px solid #38586c;
    border-radius: 20px;
    background: rgba(255, 255, 255, .04);
  }

  #rk-volume-guide .rk-volume-calc-block h3 { color: var(--rk-white); }
  #rk-volume-guide .rk-volume-calc-block > p { color: #b8cbd4; }

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

  #rk-volume-guide .rk-volume-field { min-width: 0; }

  #rk-volume-guide .rk-volume-field label {
    display: block;
    margin-bottom: 7px;
    color: #dcebf1;
    font-size: .69rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-volume-guide .rk-volume-field input,
  #rk-volume-guide .rk-volume-field select {
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #557182;
    border-radius: 12px;
    outline: none;
    color: var(--rk-dark);
    background: var(--rk-white);
  }

  #rk-volume-guide .rk-volume-field input:focus,
  #rk-volume-guide .rk-volume-field select:focus { border-color: var(--rk-cyan); box-shadow: 0 0 0 3px rgba(37, 199, 216, .17); }

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

  #rk-volume-guide .rk-volume-pipe-row {
    display: grid;
    grid-template-columns: minmax(150px, 1.35fr) minmax(120px, .85fr) minmax(140px, .95fr) minmax(100px, .62fr) auto;
    gap: 11px;
    align-items: end;
    margin-top: 12px;
    padding: 15px;
    border: 1px solid #3d6073;
    border-radius: 15px;
    background: rgba(255, 255, 255, .04);
  }

  #rk-volume-guide .rk-volume-remove,
  #rk-volume-guide .rk-volume-add,
  #rk-volume-guide .rk-volume-calculate,
  #rk-volume-guide .rk-volume-reset {
    border: 0;
    border-radius: 12px;
    font-weight: 900;
    cursor: pointer;
    transition: transform .18s ease, background .18s ease, box-shadow .18s ease;
  }

  #rk-volume-guide .rk-volume-remove {
    width: 46px;
    height: 48px;
    color: #ffb4aa;
    background: rgba(217, 75, 61, .14);
    font-size: 1.25rem;
  }

  #rk-volume-guide .rk-volume-add {
    margin-top: 13px;
    padding: 11px 15px;
    color: #a9f7ff;
    background: rgba(37, 199, 216, .13);
  }

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

  #rk-volume-guide .rk-volume-calculate {
    padding: 14px 22px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-orange), #e9552c);
    box-shadow: 0 12px 24px rgba(255, 106, 61, .22);
  }

  #rk-volume-guide .rk-volume-reset { padding: 14px 19px; color: #dcebf1; background: #29485a; }

  #rk-volume-guide .rk-volume-remove:hover,
  #rk-volume-guide .rk-volume-add:hover,
  #rk-volume-guide .rk-volume-calculate:hover,
  #rk-volume-guide .rk-volume-reset:hover { transform: translateY(-2px); }

  #rk-volume-guide .rk-volume-results {
    padding: clamp(24px, 5vw, 42px);
    border-top: 1px solid #38586c;
    color: #dcebf1;
    background: #0b202e;
  }

  #rk-volume-guide .rk-volume-results h3,
  #rk-volume-guide .rk-volume-results h4 { color: var(--rk-white); }

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

  #rk-volume-guide .rk-volume-result-card {
    min-width: 0;
    padding: 17px;
    border: 1px solid #36566a;
    border-radius: 17px;
    background: rgba(255, 255, 255, .045);
  }

  #rk-volume-guide .rk-volume-result-card.is-main {
    border-color: var(--rk-cyan);
    background: linear-gradient(145deg, rgba(37, 199, 216, .2), rgba(37, 199, 216, .07));
  }

  #rk-volume-guide .rk-volume-result-card small {
    display: block;
    min-height: 2.8em;
    color: #9fb7c2;
    font-size: .65rem;
    font-weight: 800;
    line-height: 1.4;
  }

  #rk-volume-guide .rk-volume-result-number {
    margin-top: 7px;
    color: var(--rk-white);
    font-size: clamp(1.28rem, 3vw, 2rem);
    font-weight: 950;
    letter-spacing: -.04em;
    line-height: 1.1;
  }

  #rk-volume-guide .rk-volume-status {
    margin-top: 15px;
    padding: 15px 17px;
    border-left: 5px solid var(--rk-cyan);
    border-radius: 13px;
    color: #dcebf1;
    background: rgba(37, 199, 216, .1);
  }

  #rk-volume-guide .rk-volume-status.is-warning { border-color: var(--rk-yellow); background: rgba(229, 170, 40, .12); }
  #rk-volume-guide .rk-volume-status.is-danger { border-color: var(--rk-red); background: rgba(217, 75, 61, .13); }

  #rk-volume-guide .rk-volume-chart-wrap {
    margin-top: 23px;
    padding: 19px;
    border: 1px solid #36566a;
    border-radius: 18px;
    background: rgba(255, 255, 255, .035);
  }

  #rk-volume-guide .rk-volume-chart {
    display: flex;
    width: 100%;
    height: 52px;
    overflow: hidden;
    border-radius: 13px;
    background: #203d4e;
  }

  #rk-volume-guide .rk-volume-segment { min-width: 0; transition: width .25s ease; }
  #rk-volume-guide .rk-volume-segment.is-loops { background: var(--rk-cyan); }
  #rk-volume-guide .rk-volume-segment.is-mains { background: var(--rk-blue); }
  #rk-volume-guide .rk-volume-segment.is-source { background: var(--rk-orange); }
  #rk-volume-guide .rk-volume-segment.is-buffer { background: var(--rk-purple); }
  #rk-volume-guide .rk-volume-segment.is-other { background: var(--rk-yellow); }

  #rk-volume-guide .rk-volume-legend {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 8px;
    margin-top: 13px;
  }

  #rk-volume-guide .rk-volume-legend div { color: #a9c0cb; font-size: .63rem; line-height: 1.35; }
  #rk-volume-guide .rk-volume-legend b { display: block; color: var(--rk-white); font-size: .76rem; }
  #rk-volume-guide .rk-volume-dot { display: inline-block; width: 9px; height: 9px; margin-right: 5px; border-radius: 50%; }

  #rk-volume-guide .rk-volume-breakdown { margin-top: 22px; }
  #rk-volume-guide .rk-volume-breakdown table { border-color: #36566a; }
  #rk-volume-guide .rk-volume-breakdown th { background: #183649; }
  #rk-volume-guide .rk-volume-breakdown td { border-color: #36566a; color: #dcebf1; background: #102b3b; }
  #rk-volume-guide .rk-volume-breakdown tbody tr:nth-child(even) td { background: #143244; }

  #rk-volume-guide .rk-volume-inline-cta {
    position: relative;
    overflow: hidden;
    margin-top: 31px;
    padding: clamp(27px, 5vw, 42px);
    border-radius: 25px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 88% 15%, rgba(255, 106, 61, .26), transparent 25%),
      linear-gradient(126deg, #102536, #17465d);
  }

  #rk-volume-guide .rk-volume-inline-cta h3 { color: var(--rk-white); font-size: clamp(1.45rem, 3vw, 2.1rem); }
  #rk-volume-guide .rk-volume-inline-cta p { max-width: 850px; color: #d8e8ee; }

  #rk-volume-guide .rk-volume-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 13px 20px;
    border-radius: 14px;
    color: var(--rk-white) !important;
    background: linear-gradient(135deg, var(--rk-orange), #e9542d);
    box-shadow: 0 14px 26px rgba(255, 106, 61, .24);
    text-decoration: none !important;
  }

  #rk-volume-guide .rk-volume-cta-button:hover,
  #rk-volume-guide .rk-volume-cta-button:focus-visible { transform: translateY(-2px); box-shadow: 0 18px 30px rgba(255, 106, 61, .3); }

  #rk-volume-guide .rk-volume-disclosure { display: block; margin-top: 10px; color: #9eb6c2; font-size: .62rem; }

  #rk-volume-guide .rk-volume-callout {
    margin-top: 22px;
    padding: 20px 22px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 16px;
    background: var(--rk-cyan-soft);
  }

  #rk-volume-guide .rk-volume-callout.is-warm { border-color: var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-volume-guide .rk-volume-callout.is-yellow { border-color: var(--rk-yellow); background: var(--rk-yellow-soft); }
  #rk-volume-guide .rk-volume-callout p:last-child { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-compare {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
    margin-top: 23px;
  }

  #rk-volume-guide .rk-volume-compare > div {
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
  }

  #rk-volume-guide .rk-volume-compare .is-wrong { background: var(--rk-red-soft); border-top: 6px solid var(--rk-red); }
  #rk-volume-guide .rk-volume-compare .is-right { background: var(--rk-green-soft); border-top: 6px solid var(--rk-green); }

  #rk-volume-guide .rk-volume-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-top: 24px;
    counter-reset: rk-volume-step;
  }

  #rk-volume-guide .rk-volume-step { position: relative; padding-top: 62px; counter-increment: rk-volume-step; }

  #rk-volume-guide .rk-volume-step::before {
    content: counter(rk-volume-step, decimal-leading-zero);
    position: absolute;
    top: 18px;
    left: 22px;
    color: var(--rk-blue);
    font-size: 1.25rem;
    font-weight: 950;
  }

  #rk-volume-guide .rk-volume-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 11px;
    margin: 22px 0 0;
    padding: 0;
    list-style: none;
  }

  #rk-volume-guide .rk-volume-checklist li {
    position: relative;
    margin: 0;
    padding: 14px 15px 14px 48px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }

  #rk-volume-guide .rk-volume-checklist li::before {
    content: "✓";
    position: absolute;
    top: 13px;
    left: 16px;
    display: grid;
    width: 23px;
    height: 23px;
    place-items: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    font-size: .7rem;
    font-weight: 950;
  }

  #rk-volume-guide .rk-volume-faq { display: grid; gap: 10px; margin-top: 23px; }

  #rk-volume-guide .rk-volume-faq details {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: var(--rk-white);
  }

  #rk-volume-guide .rk-volume-faq summary {
    position: relative;
    padding: 17px 52px 17px 18px;
    color: var(--rk-dark);
    font-weight: 900;
    cursor: pointer;
    list-style: none;
  }

  #rk-volume-guide .rk-volume-faq summary::-webkit-details-marker { display: none; }
  #rk-volume-guide .rk-volume-faq summary::after { content: "+"; position: absolute; top: 13px; right: 17px; font-size: 1.35rem; }
  #rk-volume-guide .rk-volume-faq details[open] summary::after { content: "−"; }
  #rk-volume-guide .rk-volume-faq-answer { padding: 0 18px 18px; color: var(--rk-text); }
  #rk-volume-guide .rk-volume-faq-answer p:last-child { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-sources {
    padding: 23px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
    color: var(--rk-text);
    font-size: .83rem;
  }

  #rk-volume-guide .rk-volume-sources strong { display: block; margin-bottom: 8px; color: var(--rk-dark); }
  #rk-volume-guide .rk-volume-update { margin-top: 12px; color: var(--rk-muted); font-size: .7rem; font-weight: 800; }

  #rk-volume-guide .rk-volume-author {
    position: relative;
    overflow: hidden;
    margin-top: clamp(48px, 7vw, 82px);
    border: 1px solid var(--rk-line);
    border-radius: 27px;
    background: var(--rk-white);
  }

  #rk-volume-guide .rk-volume-author > input { position: absolute; opacity: 0; pointer-events: none; }

  #rk-volume-guide .rk-volume-author-head {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: center;
    padding: 27px clamp(22px, 5vw, 42px);
    color: #dcebf1;
    background: linear-gradient(126deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-volume-guide .rk-volume-author-head h2 { margin-bottom: 4px; color: var(--rk-white); }
  #rk-volume-guide .rk-volume-author-head p { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-author-mark {
    flex: 0 0 auto;
    padding: 9px 12px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 999px;
    color: #93f3fc;
    font-size: .65rem;
    font-weight: 950;
    letter-spacing: .06em;
  }

  #rk-volume-guide .rk-volume-author-layout { display: grid; grid-template-columns: 270px minmax(0, 1fr); }

  #rk-volume-guide .rk-volume-author-side {
    padding: 28px;
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
    text-align: center;
  }

  #rk-volume-guide .rk-volume-author-photo {
    width: 150px;
    height: 150px;
    margin: 0 auto 16px;
    overflow: hidden;
    border: 6px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 12px 28px rgba(16, 37, 54, .16);
  }

  #rk-volume-guide .rk-volume-author-photo img { width: 100%; height: 100%; object-fit: cover; }
  #rk-volume-guide .rk-volume-author-name { color: var(--rk-dark); font-size: 1.18rem; font-weight: 950; }
  #rk-volume-guide .rk-volume-author-role { margin-top: 5px; color: var(--rk-muted); font-size: .72rem; line-height: 1.55; }
  #rk-volume-guide .rk-volume-author-social-label { margin-top: 24px; color: var(--rk-muted); font-size: .63rem; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; }

  #rk-volume-guide .rk-volume-author-social { display: flex; justify-content: center; gap: 9px; margin-top: 9px; }

  #rk-volume-guide .rk-volume-author-social a {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    color: var(--rk-dark);
    background: var(--rk-white);
    transition: transform .18s ease, color .18s ease, border-color .18s ease;
  }

  #rk-volume-guide .rk-volume-author-social a:hover,
  #rk-volume-guide .rk-volume-author-social a:focus-visible { transform: translateY(-2px); color: var(--rk-blue); border-color: var(--rk-cyan); }
  #rk-volume-guide .rk-volume-author-social svg { width: 20px; height: 20px; fill: currentColor; }

  #rk-volume-guide .rk-volume-author-main { padding: clamp(24px, 5vw, 42px); }

  #rk-volume-guide .rk-volume-author-quote {
    position: relative;
    margin: 0;
    padding: 22px 22px 22px 28px;
    border-left: 6px solid var(--rk-orange);
    border-radius: 15px;
    background: var(--rk-orange-soft);
  }

  #rk-volume-guide .rk-volume-author-quote p { margin-bottom: 0; color: var(--rk-dark); font-weight: 760; }

  #rk-volume-guide .rk-volume-author-tabs {
    display: flex;
    margin-top: 24px;
    border-bottom: 1px solid var(--rk-line);
  }

  #rk-volume-guide .rk-volume-author-tab {
    padding: 11px 14px;
    border-bottom: 3px solid transparent;
    color: var(--rk-muted);
    font-size: .72rem;
    font-weight: 900;
    cursor: pointer;
  }

  #rk-volume-guide .rk-volume-author-panel { display: none; padding-top: 18px; color: var(--rk-text); }
  #rk-volume-guide .rk-volume-author-panel p:last-child { margin-bottom: 0; }

  #rk-volume-author-about:checked ~ .rk-volume-author-layout .rk-volume-author-panel-about,
  #rk-volume-author-exp:checked ~ .rk-volume-author-layout .rk-volume-author-panel-exp,
  #rk-volume-author-sites:checked ~ .rk-volume-author-layout .rk-volume-author-panel-sites { display: block; }

  #rk-volume-author-about:checked ~ .rk-volume-author-layout label[for="rk-volume-author-about"],
  #rk-volume-author-exp:checked ~ .rk-volume-author-layout label[for="rk-volume-author-exp"],
  #rk-volume-author-sites:checked ~ .rk-volume-author-layout label[for="rk-volume-author-sites"] { color: var(--rk-dark); border-bottom-color: var(--rk-cyan); }

  #rk-volume-guide .rk-volume-site-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
  #rk-volume-guide .rk-volume-site-links a { padding: 8px 11px; border-radius: 999px; background: var(--rk-soft); font-size: .7rem; text-decoration: none; }

  #rk-volume-guide .rk-volume-final-cta {
    margin-top: 28px;
    padding: clamp(32px, 6vw, 58px);
    border-radius: 27px;
    color: #dcebf1;
    background:
      radial-gradient(circle at 89% 16%, rgba(255, 106, 61, .29), transparent 25%),
      linear-gradient(126deg, #102536, #17465d);
    text-align: center;
  }

  #rk-volume-guide .rk-volume-final-cta h2 { max-width: 850px; margin-right: auto; margin-left: auto; color: var(--rk-white); }
  #rk-volume-guide .rk-volume-final-cta p { max-width: 850px; margin-right: auto; margin-left: auto; }

  @media (max-width: 980px) {
    #rk-volume-guide .rk-volume-hero-grid,
    #rk-volume-guide .rk-volume-answer,
    #rk-volume-guide .rk-volume-formula-box { grid-template-columns: 1fr; }
    #rk-volume-guide .rk-volume-grid-4,
    #rk-volume-guide .rk-volume-result-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-volume-guide .rk-volume-grid-3,
    #rk-volume-guide .rk-volume-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-volume-guide .rk-volume-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-volume-guide .rk-volume-pipe-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-volume-guide .rk-volume-remove { width: 100%; }
    #rk-volume-guide .rk-volume-legend { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  }

  @media (max-width: 760px) {
    #rk-volume-guide { margin: 16px auto 46px; font-size: 16px; }
    #rk-volume-guide .rk-volume-shell { border-radius: 20px; }
    #rk-volume-guide .rk-volume-hero { padding: 34px 22px; }
    #rk-volume-guide .rk-volume-body { padding-right: 17px; padding-left: 17px; }
    #rk-volume-guide .rk-volume-section { padding: 46px 0; }
    #rk-volume-guide .rk-volume-grid-2,
    #rk-volume-guide .rk-volume-grid-3,
    #rk-volume-guide .rk-volume-grid-4,
    #rk-volume-guide .rk-volume-steps,
    #rk-volume-guide .rk-volume-compare,
    #rk-volume-guide .rk-volume-checklist,
    #rk-volume-guide .rk-volume-mode-switch,
    #rk-volume-guide .rk-volume-result-grid,
    #rk-volume-guide .rk-volume-fields,
    #rk-volume-guide .rk-volume-author-layout { grid-template-columns: 1fr; }
    #rk-volume-guide .rk-volume-author-side { border-right: 0; border-bottom: 1px solid var(--rk-line); }
    #rk-volume-guide .rk-volume-author-head { align-items: flex-start; flex-direction: column; }
    #rk-volume-guide .rk-volume-legend { grid-template-columns: repeat(2, minmax(0, 1fr)); }

    #rk-volume-guide table,
    #rk-volume-guide thead,
    #rk-volume-guide tbody,
    #rk-volume-guide tr,
    #rk-volume-guide th,
    #rk-volume-guide td { display: block; width: 100%; }

    #rk-volume-guide table { overflow: visible; border: 0; background: transparent; }

    #rk-volume-guide thead {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
    }

    #rk-volume-guide tbody tr {
      display: block;
      margin-bottom: 14px;
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 15px;
      background: var(--rk-white);
    }

    #rk-volume-guide td,
    #rk-volume-guide tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(120px, .82fr) minmax(0, 1.18fr);
      gap: 11px;
      padding: 12px 14px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
    }

    #rk-volume-guide tbody tr td:last-child { border-bottom: 0; }

    #rk-volume-guide td::before {
      content: attr(data-label);
      color: var(--rk-dark);
      font-size: .7rem;
      font-weight: 900;
      line-height: 1.45;
    }

    #rk-volume-guide .rk-volume-breakdown tbody tr { border-color: #36566a; }
    #rk-volume-guide .rk-volume-breakdown td,
    #rk-volume-guide .rk-volume-breakdown tbody tr:nth-child(even) td { border-color: #36566a; color: #dcebf1; background: #102b3b; }
    #rk-volume-guide .rk-volume-breakdown td::before { color: #9fc0cf; }
  }

  @media (max-width: 510px) {
    #rk-volume-guide .rk-volume-pipe-row { grid-template-columns: 1fr; }
    #rk-volume-guide .rk-volume-hero-values,
    #rk-volume-guide .rk-volume-legend { grid-template-columns: 1fr 1fr; }
    #rk-volume-guide td,
    #rk-volume-guide tbody tr:nth-child(even) td { grid-template-columns: 1fr; gap: 4px; }
    #rk-volume-guide .rk-volume-author-tabs { display: grid; grid-template-columns: 1fr; }
    #rk-volume-guide .rk-volume-author-tab { border-bottom: 1px solid var(--rk-line); }
  }

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

<article id="rk-volume-guide" data-rk-volume-version="2026-08-29" aria-label="Ile wody potrzeba do wypełnienia podłogówki">
  <div class="rk-volume-shell">
    <div class="rk-volume-progress-track" aria-hidden="true"><div class="rk-volume-progress"></div></div>

    <header class="rk-volume-hero">
      <div class="rk-volume-hero-grid">
        <div>
          <span class="rk-volume-eyebrow"><b aria-hidden="true"></b> Zład instalacji • kalkulator techniczny</span>
          <div class="rk-volume-hero-title" role="heading" aria-level="2">Policz litry w rurach i całej instalacji</div>
          <p class="rk-volume-hero-lead">Wprowadź rzeczywiste długości rur albo oszacuj je z powierzchni. Dodaj magistrale, rozdzielacze, źródło ciepła i bufor, aby oddzielić pojemność samych pętli od całkowitego zładu instalacji.</p>
          <div class="rk-volume-meta">
            <span>Autor: Robert Kucharski</span>
            <span>Aktualizacja: 29 sierpnia 2026 r.</span>
            <span>Wynik w litrach</span>
          </div>
        </div>

        <aside class="rk-volume-hero-card" aria-label="Najważniejszy wzór">
          <small>Objętość przewodu</small>
          <div class="rk-volume-hero-formula">V = 0,0007854 × dᵢ² × L</div>
          <div class="rk-volume-hero-values">
            <div><strong>0,113 l/m</strong>rura 16 × 2 mm</div>
            <div><strong>0,201 l/m</strong>rura 20 × 2 mm</div>
            <div><strong>dᵢ</strong>średnica wewnętrzna</div>
            <div><strong>L</strong>długość rury</div>
          </div>
        </aside>
      </div>
    </header>

    <nav class="rk-volume-nav" aria-label="Spis treści artykułu">
      <a href="#rk-volume-answer">Szybka odpowiedź</a>
      <a href="#rk-volume-components">Co liczymy</a>
      <a href="#rk-volume-formula">Wzór</a>
      <a href="#rk-volume-calculator">Kalkulator</a>
      <a href="#rk-volume-heat-pump">Pompa ciepła</a>
      <a href="#rk-volume-fluid">Woda i glikol</a>
      <a href="#rk-volume-filling">Napełnianie</a>
      <a href="#rk-volume-faq">FAQ</a>
      <a href="#rk-volume-author">Autor</a>
    </nav>

    <main class="rk-volume-body">
      <section class="rk-volume-section" id="rk-volume-answer">
        <span class="rk-volume-kicker">Najkrótsza poprawna odpowiedź</span>
        <h2>Ile wody potrzeba do wypełnienia ogrzewania podłogowego?</h2>
        <p class="rk-volume-lead"><strong>Nie istnieje jedna liczba litrów przypisana do 100 m² domu.</strong> Ilość płynu zależy przede wszystkim od rzeczywistej długości rur i ich średnicy wewnętrznej. Do objętości pętli trzeba następnie dodać przewody wspólne, rozdzielacze, część wodną źródła, bufor oraz pozostałe elementy instalacji.</p>

        <div class="rk-volume-answer">
          <div class="rk-volume-answer-main">
            <h3>Najdokładniejsza metoda</h3>
            <p>Zsumuj długości rur z projektu, pomnóż każdy odcinek przez pojemność jednego metra wynikającą ze średnicy wewnętrznej, a następnie dodaj objętości urządzeń podane w ich dokumentacji.</p>
            <p>Przykładowo 1000 m rury 16 × 2 mm mieści geometrycznie około 113,1 l płynu. Nie jest to jeszcze całkowity zład domu.</p>
          </div>
          <aside class="rk-volume-answer-side">
            <h3>Gdy nie masz projektu</h3>
            <p>Długość można oszacować z czynnej powierzchni i rozstawu, ale trzeba oddzielnie dodać zasilanie oraz powrót każdej pętli.</p>
            <p>Taki wynik traktuj jako kosztorysowy, nie wykonawczy.</p>
          </aside>
        </div>

        <div class="rk-volume-grid-4">
          <article class="rk-volume-card"><span class="rk-volume-card-number">01</span><h3>Rury w polu</h3><p>Pętle znajdujące się w posadzce i wykonujące zasadniczą pracę grzewczą.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">02</span><h3>Dobiegi i magistrale</h3><p>Zasilanie oraz powrót między źródłem, rozdzielaczem i granicą pomieszczeń.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">03</span><h3>Urządzenia</h3><p>Rozdzielacze, wymiennik źródła, bufor, sprzęgło i inne odbiorniki.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">04</span><h3>Stan pracy</h3><p>Część zładu może być czasowo odcięta przez zawory strefowe lub siłowniki.</p></article>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-components">
        <span class="rk-volume-kicker">Cztery różne wartości</span>
        <h2>Objętość rur, zład całkowity i zład dostępny to nie to samo</h2>
        <p class="rk-volume-lead">Najczęstszy błąd polega na policzeniu samych pętli i nazwaniu wyniku pojemnością całej instalacji. W praktyce potrzebne są cztery wyraźnie rozdzielone liczby.</p>

        <div class="rk-volume-grid-2">
          <article class="rk-volume-card"><span class="rk-volume-card-number">V₁</span><h3>Objętość pętli</h3><p>Płyn znajdujący się w rurach ogrzewania podłogowego, obliczony z długości i średnicy wewnętrznej.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">V₂</span><h3>Objętość przewodów wspólnych</h3><p>Magistrale, piony i inne odcinki łączące źródło z rozdzielaczami.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">V₃</span><h3>Całkowity zład zimnej instalacji</h3><p>Suma rur i wszystkich napełnionych elementów. To baza do przygotowania płynu i obliczania dawki dodatku.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">V₄</span><h3>Zład hydraulicznie dostępny</h3><p>Objętość pozostająca w aktywnym obiegu w analizowanym stanie sterowania. Jest istotna przy kontroli wymagań DTR źródła.</p></article>
        </div>

        <div class="rk-volume-callout is-yellow">
          <p><strong>Nie dodajemy automatycznie 10 albo 15% „na kotłownię”.</strong> Bufor może mieć kilkadziesiąt lub kilkaset litrów, a mała instalacja bez bufora znacznie mniej. Jeżeli nie znasz pojemności urządzenia, pozostaw pole puste i oznacz wynik jako niepełny.</p>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-formula">
        <span class="rk-volume-kicker">Geometria zamiast zgadywania</span>
        <h2>Jak obliczyć pojemność jednego metra rury?</h2>
        <p class="rk-volume-lead">O wyniku decyduje średnica wewnętrzna, a nie sama nazwa materiału ani średnica zewnętrzna. Rury opisane jako PEX, PE-RT lub wielowarstwowe mogą mieć różne grubości ścianek.</p>

        <div class="rk-volume-formula-box">
          <div>
            <h3>Wzór praktyczny</h3>
            <p>Jeżeli średnicę wewnętrzną podajesz w milimetrach, a długość w metrach, wynik otrzymasz bezpośrednio w litrach.</p>
            <p><strong>dᵢ</strong> — średnica wewnętrzna w mm<br><strong>L</strong> — długość rury w m<br><strong>V</strong> — objętość w l</p>
          </div>
          <div class="rk-volume-formula">V [l] = 0,0007854 × dᵢ² × L</div>
        </div>

        <div class="rk-volume-table-wrap">
          <table aria-label="Orientacyjna pojemność rur na jeden metr">
            <thead><tr><th>Wymiar rury</th><th>Średnica wewnętrzna</th><th>Pojemność 1 m</th><th>Pojemność 100 m</th></tr></thead>
            <tbody>
              <tr><td data-label="Wymiar rury">16 × 2,0 mm</td><td data-label="Średnica wewnętrzna">12 mm</td><td data-label="Pojemność 1 m">0,113 l</td><td data-label="Pojemność 100 m">11,31 l</td></tr>
              <tr><td data-label="Wymiar rury">17 × 2,0 mm</td><td data-label="Średnica wewnętrzna">13 mm</td><td data-label="Pojemność 1 m">0,133 l</td><td data-label="Pojemność 100 m">13,27 l</td></tr>
              <tr><td data-label="Wymiar rury">20 × 2,0 mm</td><td data-label="Średnica wewnętrzna">16 mm</td><td data-label="Pojemność 1 m">0,201 l</td><td data-label="Pojemność 100 m">20,11 l</td></tr>
              <tr><td data-label="Wymiar rury">25 × 2,5 mm</td><td data-label="Średnica wewnętrzna">20 mm</td><td data-label="Pojemność 1 m">0,314 l</td><td data-label="Pojemność 100 m">31,42 l</td></tr>
              <tr><td data-label="Wymiar rury">32 × 3,0 mm</td><td data-label="Średnica wewnętrzna">26 mm</td><td data-label="Pojemność 1 m">0,531 l</td><td data-label="Pojemność 100 m">53,09 l</td></tr>
            </tbody>
          </table>
        </div>

        <p style="margin-top:20px">Szczegółowe wyprowadzenie znajdziesz w opracowaniu <a href="https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/">ile wody mieści się w jednym metrze rury 16 mm</a>. Jeżeli dopiero szacujesz długość przewodów, pomocny będzie również <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">kalkulator ilości rury do podłogówki</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-calculator">
        <span class="rk-volume-kicker">Jedno narzędzie zamiast kilku symulatorów</span>
        <h2>Kalkulator zładu instalacji podłogowej</h2>
        <p class="rk-volume-lead">Tryb długości jest dokładniejszy i powinien być używany, gdy masz tabelę pętli lub projekt. Tryb powierzchni daje wynik orientacyjny. Rozstaw i średnica rury pozostają niezależnymi danymi.</p>

        <div class="rk-volume-tool">
          <div class="rk-volume-tool-head">
            <span class="rk-volume-kicker" style="color:#84f3ff">Kalkulator interaktywny</span>
            <h2>Policz zład i ilość płynu do przygotowania</h2>
            <p>Uzupełnij rury oraz elementy instalacji. Kalkulator nie dopisuje ukrytych procentów za rozdzielacz, źródło ani bufor.</p>
          </div>

          <form id="rk-volume-form" class="rk-volume-tool-body" aria-label="Kalkulator zładu ogrzewania podłogowego">
            <div class="rk-volume-mode-switch" role="radiogroup" aria-label="Sposób obliczania długości rur">
              <input type="radio" name="rk-volume-mode" id="rk-volume-mode-length" value="length" checked>
              <label for="rk-volume-mode-length"><strong>Mam długości rur</strong><small>Rekomendowany tryb na podstawie projektu lub zestawienia pętli.</small></label>
              <input type="radio" name="rk-volume-mode" id="rk-volume-mode-area" value="area">
              <label for="rk-volume-mode-area"><strong>Znam tylko powierzchnię</strong><small>Szacunek długości z czynnego pola, rozstawu i dobiegów.</small></label>
            </div>

            <div class="rk-volume-mode-panel" id="rk-volume-panel-length">
              <div class="rk-volume-calc-block">
                <h3>Krok 1. Rzeczywiste odcinki rur</h3>
                <p>Jedna pozycja może oznaczać pojedynczą pętlę albo sumę odcinków wykonanych rurą o tym samym wymiarze.</p>
                <div id="rk-volume-length-rows">
                  <div class="rk-volume-pipe-row" data-row-kind="length">
                    <div class="rk-volume-field"><label>Nazwa odcinka</label><input class="rk-volume-row-name" type="text" value="Pętle podłogowe" maxlength="60"></div>
                    <div class="rk-volume-field"><label>Kategoria</label><select class="rk-volume-row-category"><option value="loops" selected>Pętle</option><option value="mains">Magistrale</option></select></div>
                    <div class="rk-volume-field"><label>Rura</label><select class="rk-volume-row-pipe"><option value="12" selected>16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="26">32 × 3,0 mm</option><option value="custom">Własna średnica</option></select><input class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="12" inputmode="decimal" hidden><small>Własna wartość oznacza średnicę wewnętrzną.</small></div>
                    <div class="rk-volume-field"><label>Łączna długość</label><input class="rk-volume-row-length" type="number" min="0" max="20000" step="0.1" value="720" inputmode="decimal"><small>m</small></div>
                    <button class="rk-volume-remove" type="button" aria-label="Usuń odcinek">×</button>
                  </div>
                  <div class="rk-volume-pipe-row" data-row-kind="length">
                    <div class="rk-volume-field"><label>Nazwa odcinka</label><input class="rk-volume-row-name" type="text" value="Zasilanie i powrót" maxlength="60"></div>
                    <div class="rk-volume-field"><label>Kategoria</label><select class="rk-volume-row-category"><option value="loops">Pętle</option><option value="mains" selected>Magistrale</option></select></div>
                    <div class="rk-volume-field"><label>Rura</label><select class="rk-volume-row-pipe"><option value="12">16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="26" selected>32 × 3,0 mm</option><option value="custom">Własna średnica</option></select><input class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="26" inputmode="decimal" hidden><small>Długość zasilania i powrotu łącznie.</small></div>
                    <div class="rk-volume-field"><label>Łączna długość</label><input class="rk-volume-row-length" type="number" min="0" max="20000" step="0.1" value="20" inputmode="decimal"><small>m</small></div>
                    <button class="rk-volume-remove" type="button" aria-label="Usuń odcinek">×</button>
                  </div>
                </div>
                <button class="rk-volume-add" id="rk-volume-add-length" type="button">+ Dodaj odcinek rury</button>
              </div>
            </div>

            <div class="rk-volume-mode-panel" id="rk-volume-panel-area" hidden>
              <div class="rk-volume-calc-block">
                <h3>Krok 1. Szacunek rur z powierzchni</h3>
                <p>Podaj powierzchnię rzeczywiście ogrzewaną. Długość dobiegów oznacza odległość w jedną stronę i jest mnożona przez dwa oraz liczbę pętli.</p>
                <div class="rk-volume-fields">
                  <div class="rk-volume-field"><label for="rk-volume-area">Powierzchnia czynna</label><input id="rk-volume-area" type="number" min="1" max="2000" step="0.1" value="100" inputmode="decimal"><small>m²</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-spacing">Rozstaw rur</label><select id="rk-volume-spacing"><option value="5">5 cm</option><option value="10">10 cm</option><option value="12.5">12,5 cm</option><option value="15" selected>15 cm</option><option value="20">20 cm</option></select><small>Niezależny od średnicy rury.</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-geometry">Korekta geometrii</label><input id="rk-volume-geometry" type="number" min="0" max="15" step="0.5" value="3" inputmode="decimal"><small>% na łuki i niedoskonałość podziału</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-loop-count">Liczba pętli</label><input id="rk-volume-loop-count" type="number" min="1" max="100" step="1" value="8" inputmode="numeric"><small>szt.</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-approach">Średni dobieg jednej pętli</label><input id="rk-volume-approach" type="number" min="0" max="100" step="0.5" value="7" inputmode="decimal"><small>m w jedną stronę</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-area-pipe">Rura pętli</label><select id="rk-volume-area-pipe"><option value="12" selected>16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="custom">Własna średnica</option></select><input id="rk-volume-area-custom" class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="12" inputmode="decimal" hidden><small>Liczy się światło przewodu.</small></div>
                </div>
              </div>

              <div class="rk-volume-calc-block">
                <h3>Krok 2. Przewody wspólne poza pętlami</h3>
                <p>Dodaj łączną długość zasilania i powrotu. Nie podwajaj odcinka, jeżeli wpisałeś już obie rury łącznie.</p>
                <div id="rk-volume-area-main-rows">
                  <div class="rk-volume-pipe-row" data-row-kind="area-main">
                    <div class="rk-volume-field"><label>Nazwa odcinka</label><input class="rk-volume-row-name" type="text" value="Zasilanie i powrót" maxlength="60"></div>
                    <div class="rk-volume-field"><label>Kategoria</label><select class="rk-volume-row-category" disabled><option value="mains" selected>Magistrale</option></select></div>
                    <div class="rk-volume-field"><label>Rura</label><select class="rk-volume-row-pipe"><option value="12">16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="26" selected>32 × 3,0 mm</option><option value="custom">Własna średnica</option></select><input class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="26" inputmode="decimal" hidden><small>Średnica wewnętrzna z dokumentacji rury.</small></div>
                    <div class="rk-volume-field"><label>Łączna długość</label><input class="rk-volume-row-length" type="number" min="0" max="20000" step="0.1" value="20" inputmode="decimal"><small>m</small></div>
                    <button class="rk-volume-remove" type="button" aria-label="Usuń odcinek">×</button>
                  </div>
                </div>
                <button class="rk-volume-add" id="rk-volume-add-area-main" type="button">+ Dodaj magistralę</button>
              </div>
            </div>

            <div class="rk-volume-calc-block">
              <h3>Kolejny krok. Pojemność urządzeń</h3>
              <p>Wpisz wartości odczytane z dokumentacji. Zero oznacza brak elementu albo brak jego uwzględnienia w obliczeniu.</p>
              <div class="rk-volume-fields">
                <div class="rk-volume-field"><label for="rk-volume-manifolds">Rozdzielacze</label><input id="rk-volume-manifolds" type="number" min="0" max="5000" step="0.1" value="2" inputmode="decimal"><small>l łącznie</small></div>
                <div class="rk-volume-field"><label for="rk-volume-source">Źródło lub wymiennik</label><input id="rk-volume-source" type="number" min="0" max="5000" step="0.1" value="6" inputmode="decimal"><small>l po stronie instalacji</small></div>
                <div class="rk-volume-field"><label for="rk-volume-buffer">Bufor</label><input id="rk-volume-buffer" type="number" min="0" max="10000" step="0.1" value="0" inputmode="decimal"><small>l</small></div>
                <div class="rk-volume-field"><label for="rk-volume-separator">Sprzęgło lub separator</label><input id="rk-volume-separator" type="number" min="0" max="5000" step="0.1" value="0" inputmode="decimal"><small>l</small></div>
                <div class="rk-volume-field"><label for="rk-volume-other">Inne elementy</label><input id="rk-volume-other" type="number" min="0" max="10000" step="0.1" value="0" inputmode="decimal"><small>l, np. dodatkowe odbiorniki</small></div>
                <div class="rk-volume-field"><label for="rk-volume-isolated">Objętość odcinana</label><input id="rk-volume-isolated" type="number" min="0" max="10000" step="0.1" value="0" inputmode="decimal"><small>l niedostępne w analizowanym stanie</small></div>
              </div>
            </div>

            <div class="rk-volume-calc-block">
              <h3>Kontrola DTR, rezerwa i dodatek</h3>
              <div class="rk-volume-fields">
                <div class="rk-volume-field"><label for="rk-volume-dtr-mode">Wymaganie DTR</label><select id="rk-volume-dtr-mode"><option value="none" selected>Nie porównuj</option><option value="fixed">Minimalna objętość w litrach</option><option value="factor">Wartość w l/kW</option></select><small>Wpisz wyłącznie wartość z dokumentacji urządzenia.</small></div>
                <div class="rk-volume-field rk-volume-dtr-fields" id="rk-volume-dtr-fixed-wrap" hidden><label for="rk-volume-dtr-fixed">Minimum z DTR</label><input id="rk-volume-dtr-fixed" type="number" min="0" max="10000" step="0.1" value="100" inputmode="decimal"><small>l dostępnego zładu</small></div>
                <div class="rk-volume-field rk-volume-dtr-fields" id="rk-volume-dtr-factor-wrap" hidden><label for="rk-volume-dtr-factor">Wartość z DTR</label><input id="rk-volume-dtr-factor" type="number" min="0" max="100" step="0.1" value="10" inputmode="decimal"><small>l/kW</small></div>
                <div class="rk-volume-field rk-volume-dtr-fields" id="rk-volume-dtr-power-wrap" hidden><label for="rk-volume-dtr-power">Moc urządzenia</label><input id="rk-volume-dtr-power" type="number" min="0" max="500" step="0.1" value="8" inputmode="decimal"><small>kW według właściwego punktu DTR</small></div>
                <div class="rk-volume-field"><label for="rk-volume-reserve">Rezerwa płynu</label><input id="rk-volume-reserve" type="number" min="0" max="30" step="0.5" value="3" inputmode="decimal"><small>% do przygotowania, nie część zładu</small></div>
                <div class="rk-volume-field"><label for="rk-volume-fluid">Rodzaj płynu</label><select id="rk-volume-fluid"><option value="water" selected>Woda instalacyjna</option><option value="glycol">Roztwór glikolu</option></select><small>Objętość geometryczna rur pozostaje taka sama.</small></div>
                <div class="rk-volume-field"><label for="rk-volume-dose-mode">Sposób dawkowania dodatku</label><select id="rk-volume-dose-mode"><option value="none" selected>Nie obliczaj</option><option value="ml100">ml na 100 l zładu</option><option value="percent">Procent objętości</option></select><small>Proporcja musi pochodzić z instrukcji używanego środka.</small></div>
                <div class="rk-volume-field" id="rk-volume-dose-value-wrap" hidden><label for="rk-volume-dose-value">Dawka z instrukcji</label><input id="rk-volume-dose-value" type="number" min="0" max="10000" step="0.1" value="500" inputmode="decimal"><small id="rk-volume-dose-unit">ml na 100 l</small></div>
              </div>
            </div>

            <div class="rk-volume-actions">
              <button class="rk-volume-calculate" type="submit">Przelicz zład instalacji</button>
              <button class="rk-volume-reset" id="rk-volume-reset" type="button">Przywróć przykład</button>
            </div>
          </form>

          <div class="rk-volume-results" id="rk-volume-results" aria-live="polite">
            <h3>Wynik obliczenia</h3>
            <div class="rk-volume-result-grid">
              <div class="rk-volume-result-card"><small>Objętość pętli</small><div class="rk-volume-result-number" id="rk-volume-result-loops">— l</div></div>
              <div class="rk-volume-result-card"><small>Przewody wspólne</small><div class="rk-volume-result-number" id="rk-volume-result-mains">— l</div></div>
              <div class="rk-volume-result-card is-main"><small>Całkowity zład zimnej instalacji</small><div class="rk-volume-result-number" id="rk-volume-result-total">— l</div></div>
              <div class="rk-volume-result-card"><small>Zład dostępny w analizowanym stanie</small><div class="rk-volume-result-number" id="rk-volume-result-accessible">— l</div></div>
              <div class="rk-volume-result-card"><small>Płyn do przygotowania z rezerwą</small><div class="rk-volume-result-number" id="rk-volume-result-prepare">— l</div></div>
              <div class="rk-volume-result-card"><small>Orientacyjna długość wszystkich rur</small><div class="rk-volume-result-number" id="rk-volume-result-length">— m</div></div>
              <div class="rk-volume-result-card"><small>Dawka według wpisanej instrukcji</small><div class="rk-volume-result-number" id="rk-volume-result-dose">—</div></div>
              <div class="rk-volume-result-card"><small>Porównanie z wymaganiem DTR</small><div class="rk-volume-result-number" id="rk-volume-result-dtr">—</div></div>
            </div>

            <div class="rk-volume-status" id="rk-volume-status">Uzupełnij dane i przelicz instalację.</div>

            <div class="rk-volume-chart-wrap" aria-label="Dynamiczny wykres składu zładu instalacji">
              <h4>Skład całkowitego zładu</h4>
              <div class="rk-volume-chart" role="img" aria-label="Udział pętli, magistral, źródła, bufora i pozostałych elementów">
                <div class="rk-volume-segment is-loops" id="rk-volume-segment-loops"></div>
                <div class="rk-volume-segment is-mains" id="rk-volume-segment-mains"></div>
                <div class="rk-volume-segment is-source" id="rk-volume-segment-source"></div>
                <div class="rk-volume-segment is-buffer" id="rk-volume-segment-buffer"></div>
                <div class="rk-volume-segment is-other" id="rk-volume-segment-other"></div>
              </div>
              <div class="rk-volume-legend">
                <div><span class="rk-volume-dot" style="background:var(--rk-cyan)"></span>Pętle<b id="rk-volume-legend-loops">—</b></div>
                <div><span class="rk-volume-dot" style="background:var(--rk-blue)"></span>Magistrale<b id="rk-volume-legend-mains">—</b></div>
                <div><span class="rk-volume-dot" style="background:var(--rk-orange)"></span>Źródło<b id="rk-volume-legend-source">—</b></div>
                <div><span class="rk-volume-dot" style="background:var(--rk-purple)"></span>Bufor<b id="rk-volume-legend-buffer">—</b></div>
                <div><span class="rk-volume-dot" style="background:var(--rk-yellow)"></span>Pozostałe<b id="rk-volume-legend-other">—</b></div>
              </div>
            </div>

            <div class="rk-volume-breakdown">
              <h4>Szczegółowe składniki obliczenia</h4>
              <table aria-label="Szczegółowa tabela składników zładu">
                <thead><tr><th>Element</th><th>Dane</th><th>Objętość</th><th>Udział</th></tr></thead>
                <tbody id="rk-volume-breakdown-body"><tr><td data-label="Element">Brak wyniku</td><td data-label="Dane">—</td><td data-label="Objętość">—</td><td data-label="Udział">—</td></tr></tbody>
              </table>
            </div>
          </div>
        </div>

        <div class="rk-volume-inline-cta">
          <span class="rk-volume-kicker" style="color:#82f3ff">Granica kalkulatora</span>
          <h3>Kalkulator policzy to, co wpiszesz — nie wykryje brakujących odcinków</h3>
          <p>Jeżeli długości pętli są szacowane z powierzchni albo nie masz danych o magistralach, rozdzielaczach, wymienniku źródła, buforze i obiegach zamykanych przez siłowniki, wynik może być matematycznie poprawny, ale technicznie niepełny. W projekcie każda pętla i wspólny odcinek są rozrysowane, a zład można zestawić z wymaganiami DTR źródła.</p>
          <a class="rk-volume-cta-button rk-volume-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z obliczonym zładem instalacji</a>
          <small class="rk-volume-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-estimate">
        <span class="rk-volume-kicker">Szacunek bez fałszywej precyzji</span>
        <h2>Ile wody mieści podłogówka na 100 m²?</h2>
        <p class="rk-volume-lead">Powierzchnia sama nie wystarcza. Ten sam dom może mieć inną powierzchnię czynną, rozstawy, liczbę pętli, dobiegi i średnice. Dlatego poprawny przykład musi ujawniać wszystkie założenia.</p>

        <div class="rk-volume-table-wrap">
          <table aria-label="Przykład pojemności rur na 100 metrów kwadratowych czynnej powierzchni">
            <thead><tr><th>Rozstaw</th><th>Długość w polu</th><th>Objętość w rurze 16 × 2</th><th>Czego nie obejmuje</th></tr></thead>
            <tbody>
              <tr><td data-label="Rozstaw">10 cm</td><td data-label="Długość w polu">około 1000 m</td><td data-label="Objętość w rurze 16 × 2">około 113,1 l</td><td data-label="Czego nie obejmuje">dobiegów i urządzeń</td></tr>
              <tr><td data-label="Rozstaw">12,5 cm</td><td data-label="Długość w polu">około 800 m</td><td data-label="Objętość w rurze 16 × 2">około 90,5 l</td><td data-label="Czego nie obejmuje">dobiegów i urządzeń</td></tr>
              <tr><td data-label="Rozstaw">15 cm</td><td data-label="Długość w polu">około 667 m</td><td data-label="Objętość w rurze 16 × 2">około 75,4 l</td><td data-label="Czego nie obejmuje">dobiegów i urządzeń</td></tr>
              <tr><td data-label="Rozstaw">20 cm</td><td data-label="Długość w polu">około 500 m</td><td data-label="Objętość w rurze 16 × 2">około 56,5 l</td><td data-label="Czego nie obejmuje">dobiegów i urządzeń</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-volume-callout">
          <p><strong>To zestawienie nie dobiera rozstawu.</strong> Pokazuje wyłącznie geometryczną zależność między rozstawem, długością i pojemnością przewodu. Rozstaw powinien wynikać z wymaganej mocy, temperatury wody, konstrukcji podłogi i oporu okładziny.</p>
        </div>

        <p style="margin-top:22px">Sposób dzielenia instalacji opisuje artykuł <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki może mieć jedna pętla</a>. Sama długość nadal nie przesądza poprawności hydraulicznej obwodu.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-heat-pump">
        <span class="rk-volume-kicker">Całkowita objętość nie zawsze jest dostępna</span>
        <h2>Pompa ciepła, minimalny zład i wymagania DTR</h2>
        <p class="rk-volume-lead">Nie będziemy stosować uniwersalnego przelicznika 10 albo 15 l/kW jako zasady wynikającej z PN-EN 14511. Zakres tej serii dotyczy oceny i parametrów urządzeń, a nie jednego obowiązkowego zładu każdej instalacji. Wartość kontrolną należy przepisać z dokumentacji konkretnego urządzenia.</p>

        <div class="rk-volume-compare">
          <div class="is-wrong">
            <h3>Zbyt proste rozumowanie</h3>
            <p>Pompa ma 8 kW, więc instalacja zawsze musi mieć 120 l. Jeżeli kalkulator pokaże mniej, konieczny jest bufor.</p>
          </div>
          <div class="is-right">
            <h3>Poprawna kolejność</h3>
            <p>Odczytaj wymaganie z DTR, policz zład dostępny w najtrudniejszym stanie pracy i dopiero wtedy przeanalizuj sposób uzupełnienia ewentualnego deficytu.</p>
          </div>
        </div>

        <div class="rk-volume-grid-3">
          <article class="rk-volume-card"><span class="rk-volume-card-number">01</span><h3>Siłowniki i strefy</h3><p>Zamknięte pętle mogą odciąć część wody od obiegu aktywnego podczas pracy źródła.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">02</span><h3>Konfiguracja bufora</h3><p>Bufor szeregowy, równoległy i sprzęgło realizują inne funkcje. Nie są zamiennymi nazwami tego samego układu.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">03</span><h3>Sterowanie przepływem</h3><p>Minimalny przepływ i minimalna objętość to dwa różne wymagania, które trzeba sprawdzić osobno.</p></article>
        </div>

        <p style="margin-top:22px">Większy istniejący zład dostępny zwykle zmniejsza, a nie zwiększa brak objętości do uzupełnienia. Funkcje i sposoby włączenia zbiornika opisuje poradnik o <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">buforze ciepła w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-hydraulics">
        <span class="rk-volume-kicker">Litry nie wyznaczają punktu pracy pompy</span>
        <h2>Zład instalacji a przepływ i strata ciśnienia</h2>
        <p class="rk-volume-lead">Całkowita ilość wody informuje o pojemności układu. Nie mówi, jaki przepływ ma zapewnić pompa ani jakie ciśnienie musi pokonać.</p>

        <div class="rk-volume-grid-3">
          <article class="rk-volume-card"><span class="rk-volume-card-number">V</span><h3>Zład w litrach</h3><p>Wynika z geometrii rur oraz objętości urządzeń. Służy m.in. do przygotowania płynu i obliczania jego rozszerzenia.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">V̇</span><h3>Przepływ</h3><p>Wynika z mocy przenoszonej przez instalację, właściwości płynu i projektowej różnicy temperatur.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">Δp</span><h3>Strata ciśnienia</h3><p>Zależy od przepływu, długości, średnicy wewnętrznej, armatury i właściwości medium na drodze krytycznej.</p></article>
        </div>

        <div class="rk-volume-callout is-warm">
          <p><strong>Większa średnica rury zwiększa pojemność, ale przy tym samym przepływie zazwyczaj zmniejsza opory liniowe.</strong> Nie oznacza automatycznie potrzeby mocniejszego źródła ani większej pompy. Bezwładność podłogówki zależy głównie od całej konstrukcji podłogi, zwłaszcza masy jastrychu, a nie tylko od kilku dodatkowych litrów wody.</p>
        </div>

        <p style="margin-top:22px">Zależności przepływu i wysokości podnoszenia rozwija artykuł <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w instalacji ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-fluid">
        <span class="rk-volume-kicker">Ta sama geometria, inne właściwości</span>
        <h2>Woda, glikol i dodatki do instalacji</h2>
        <p class="rk-volume-lead">Rura o objętości 10 l nadal mieści geometrycznie 10 l, niezależnie od tego, czy napełnia ją woda, czy roztwór glikolu. Zmieniają się natomiast gęstość, ciepło właściwe, lepkość i rozszerzalność medium.</p>

        <div class="rk-volume-grid-3">
          <article class="rk-volume-card"><span class="rk-volume-card-number">H₂O</span><h3>Woda instalacyjna</h3><p>Jej przydatność ocenia się na podstawie parametrów chemicznych, materiałów systemu i wymagań dokumentacji. Sama nazwa „kranówka” nie wystarcza do oceny.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">GL</span><h3>Roztwór glikolu</h3><p>Stężenie powinno odpowiadać wymaganej ochronie, a hydraulika i naczynie wymagają sprawdzenia z właściwościami konkretnego roztworu.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">%</span><h3>Inhibitor lub dodatek</h3><p>Nie istnieje jedna dawka 0,5% dla wszystkich produktów. Kalkulator liczy ją dopiero po wpisaniu proporcji z instrukcji środka.</p></article>
        </div>

        <div class="rk-volume-callout">
          <p><strong>Woda demineralizowana i inhibitor nie są automatycznym zestawem dla każdej instalacji.</strong> Należy sprawdzić wymagania źródła, materiały, jakość wody napełniającej oraz zgodność zastosowanego uzdatniania. VDI 2035 opisuje zapobieganie osadom i korozji wodnej w instalacjach grzewczych, ale nie zastępuje dokumentacji konkretnego układu.</p>
        </div>

        <p style="margin-top:22px">Rozwinięcie znajdziesz w poradnikach: <a href="https://projekt-ogrzewania.pl/czym-napelnic-instalacje-ogrzewania-podlogowego/">czym napełnić ogrzewanie podłogowe</a>, <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/">woda demineralizowana w podłogówce</a>, <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">woda z inhibitorem korozji</a> oraz <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikol w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-expansion">
        <span class="rk-volume-kicker">Zład jest dopiero pierwszą daną</span>
        <h2>Czy z kalkulatora można dobrać naczynie wzbiorcze?</h2>
        <p class="rk-volume-lead"><strong>Nie na podstawie samych litrów.</strong> Zład pozwala obliczyć przyrost objętości płynu po podgrzaniu, ale nominalna pojemność naczynia zależy również od ciśnień i warunków pracy instalacji.</p>

        <div class="rk-volume-grid-3">
          <article class="rk-volume-card"><span class="rk-volume-card-number">T</span><h3>Zakres temperatur</h3><p>Potrzebne są temperatura napełnienia, minimalna i maksymalna temperatura obliczeniowa płynu.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">p₀</span><h3>Ciśnienie wstępne</h3><p>Wynika m.in. z wysokości statycznej, lokalizacji naczynia i wymaganej rezerwy ciśnienia.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">pₘ</span><h3>Ciśnienie maksymalne</h3><p>Trzeba uwzględnić dopuszczalne ciśnienie instalacji oraz nastawę zaworu bezpieczeństwa.</p></article>
        </div>

        <p style="margin-top:22px">Dlatego nie zastosujemy uproszczenia „naczynie ma mieć dwa razy objętość rozszerzenia”. Pełną procedurę należy przeprowadzić osobno — zobacz opracowanie <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">jak dobrać naczynie wzbiorcze</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-filling">
        <span class="rk-volume-kicker">Od obliczenia do uruchomienia</span>
        <h2>Jak przygotować i wykorzystać wynik podczas napełniania?</h2>
        <div class="rk-volume-steps">
          <article class="rk-volume-step"><h3>Zbierz długości rur</h3><p>Najlepiej użyj zestawienia pętli i rzeczywistych długości przewodów wspólnych. Nie podwajaj odcinka już wpisanego jako zasilanie plus powrót.</p></article>
          <article class="rk-volume-step"><h3>Sprawdź średnice wewnętrzne</h3><p>Odczytaj wymiar i grubość ścianki albo bezpośrednio średnicę wewnętrzną z dokumentacji zastosowanych rur.</p></article>
          <article class="rk-volume-step"><h3>Dodaj objętości urządzeń</h3><p>Zsumuj rozdzielacze, źródło, bufor, sprzęgło i dodatkowe obiegi. Brak danych oznacz w zestawieniu zamiast zastępować go przypadkowym procentem.</p></article>
          <article class="rk-volume-step"><h3>Określ wymagania płynu</h3><p>Sprawdź jakość wody, wymagane uzdatnianie, stężenie ochronne glikolu lub dawkowanie dodatku dla konkretnego produktu.</p></article>
          <article class="rk-volume-step"><h3>Napełniaj i płucz obwody</h3><p>Postępuj zgodnie z procedurą instalacji i urządzeń. Pętle płucze się w kontrolowany sposób, usuwając powietrze bez przypadkowego mieszania obiegów.</p></article>
          <article class="rk-volume-step"><h3>Udokumentuj dolewki</h3><p>Powtarzające się uzupełnianie płynu nie powinno być uznawane za normalny stały proces. Może wprowadzać tlen i wskazywać problem ze szczelnością lub ciśnieniem.</p></article>
        </div>

        <div class="rk-volume-callout is-yellow">
          <p><strong>Nie wpiszemy uniwersalnej normy 2–5 l dolewki po uruchomieniu ani stałego ciśnienia 1,5–2 bar.</strong> Właściwe ciśnienie zależy m.in. od wysokości statycznej i nastawy naczynia. Każdą nietypową utratę ciśnienia trzeba wyjaśnić.</p>
        </div>

        <p style="margin-top:22px">Przed zakryciem rur wykonuje się <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbę szczelności ogrzewania podłogowego</a>. Jeżeli przepływy są niestabilne, sprawdź również <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawy zapowietrzenia instalacji</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-errors">
        <span class="rk-volume-kicker">Najczęstsze pomyłki</span>
        <h2>Co najczęściej zniekształca wynik?</h2>
        <div class="rk-volume-grid-3">
          <article class="rk-volume-warning"><span class="rk-volume-card-number">01</span><h3>Liczenie średnicy zewnętrznej</h3><p>Rura 16 × 2 mm nie ma 16 mm światła. Do obliczenia objętości przyjmujemy około 12 mm średnicy wewnętrznej.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">02</span><h3>Powierzchnia zamiast długości</h3><p>Dom 100 m² może mieć różne powierzchnie czynne, rozstawy i dobiegi. Metraż budynku nie jest objętością instalacji.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">03</span><h3>Pomijanie magistral</h3><p>Liczenie tylko rur w posadzce zaniża wynik, zwłaszcza przy kilku rozdzielaczach i znacznych odległościach od źródła.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">04</span><h3>Podwójne liczenie powrotu</h3><p>Jeżeli długość 20 m oznacza już zasilanie i powrót łącznie, nie wolno mnożyć jej ponownie przez dwa.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">05</span><h3>Stały procent na urządzenia</h3><p>Uniwersalny dodatek nie odróżnia małego wymiennika od dużego bufora. Wprowadzamy rzeczywiste dane.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">06</span><h3>Mylenie zładu z hydrauliką</h3><p>Litry nie wyznaczają przepływu, prędkości ani oporu pętli. Te parametry wymagają osobnych obliczeń.</p></article>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-checklist">
        <span class="rk-volume-kicker">Kontrola przed zamówieniem płynu</span>
        <h2>Checklista kompletnego obliczenia zładu</h2>
        <ul class="rk-volume-checklist">
          <li>Mam długość każdej pętli albo świadomie korzystam z trybu szacunkowego.</li>
          <li>Znam średnicę wewnętrzną każdej grupy przewodów.</li>
          <li>Dodałem zasilanie i powrót między źródłem a rozdzielaczami.</li>
          <li>Nie policzyłem tego samego odcinka dwukrotnie.</li>
          <li>Wpisałem pojemność rozdzielaczy i części wodnej źródła.</li>
          <li>Uwzględniłem bufor, sprzęgło i dodatkowe obiegi, jeśli występują.</li>
          <li>Oddzieliłem zład całkowity od objętości dostępnej przy zamkniętych strefach.</li>
          <li>Wymaganie minimalne przepisałem z właściwej DTR.</li>
          <li>Dawkę dodatku przepisałem z instrukcji używanego środka.</li>
          <li>Rezerwy płynu nie doliczyłem do nominalnego zładu instalacji.</li>
          <li>Dobór naczynia wykonuję z temperatur i ciśnień, a nie z jednego mnożnika.</li>
          <li>Po napełnieniu dokumentuję ilość płynu i każdą późniejszą dolewkę.</li>
        </ul>
      </section>

      <section class="rk-volume-section" id="rk-volume-faq">
        <span class="rk-volume-kicker">Najczęstsze pytania</span>
        <h2>Ile wody potrzeba do podłogówki — FAQ</h2>
        <div class="rk-volume-faq">
          <details><summary>Ile wody mieści się w rurze 16 × 2 mm?</summary><div class="rk-volume-faq-answer"><p>Przy średnicy wewnętrznej około 12 mm jest to około 0,113 l na metr, czyli około 11,31 l na 100 m przewodu. Ostatecznie należy użyć rzeczywistej średnicy wewnętrznej zastosowanej rury.</p></div></details>
          <details><summary>Ile wody mieści 100 m² ogrzewania podłogowego?</summary><div class="rk-volume-faq-answer"><p>Nie ma jednej wartości. Dla 100 m² czynnej powierzchni i rury 16 × 2 mm sama objętość przewodu w polu wynosi orientacyjnie około 113 l przy rozstawie 10 cm, 90,5 l przy 12,5 cm, 75,4 l przy 15 cm i 56,5 l przy 20 cm. Trzeba dodać dobiegi, magistrale i urządzenia.</p></div></details>
          <details><summary>Czy do objętości pętli można dodać 10 albo 15% na osprzęt?</summary><div class="rk-volume-faq-answer"><p>Taki procent może służyć wyłącznie jako bardzo luźny kosztorys, ale nie daje wiarygodnego zładu. Poprawniej jest dodać rzeczywiste pojemności rozdzielaczy, źródła, bufora, sprzęgła i pozostałych elementów.</p></div></details>
          <details><summary>Czy rozstaw rur zależy od ich średnicy?</summary><div class="rk-volume-faq-answer"><p>Nie bezpośrednio. Rozstaw dobiera się do wymaganej mocy podłogi, temperatury wody, konstrukcji posadzki i oporu okładziny. Średnica wpływa m.in. na pojemność oraz opory hydrauliczne, ale nie narzuca automatycznie rozstawu.</p></div></details>
          <details><summary>Czy większy zład wymaga większego bufora?</summary><div class="rk-volume-faq-answer"><p>Nie jako uniwersalna zasada. Jeżeli urządzenie wymaga minimalnej dostępnej objętości, większy istniejący zład może zmniejszyć ewentualny deficyt. Potrzebę, funkcję i sposób włączenia bufora analizuje się dla konkretnej instalacji oraz sterowania.</p></div></details>
          <details><summary>Czy PN-EN 14511 wymaga 10–15 l wody na każdy kW pompy ciepła?</summary><div class="rk-volume-faq-answer"><p>Nie należy przedstawiać tej wartości jako uniwersalnego wymagania normy. Minimalną objętość i minimalny przepływ trzeba sprawdzić w dokumentacji konkretnego urządzenia oraz dla rzeczywistej konfiguracji hydraulicznej.</p></div></details>
          <details><summary>Czy zład instalacji wyznacza przepływ pompy obiegowej?</summary><div class="rk-volume-faq-answer"><p>Nie. Przepływ wynika z przenoszonej mocy, różnicy temperatur i właściwości medium. Wymagane ciśnienie pompy zależy od strat na krytycznej drodze hydraulicznej.</p></div></details>
          <details><summary>Czy przy glikolu zmienia się objętość rur?</summary><div class="rk-volume-faq-answer"><p>Nie zmienia się geometryczna pojemność przewodów. Zmieniają się właściwości roztworu, w tym lepkość, gęstość, ciepło właściwe i rozszerzalność, dlatego hydraulikę oraz zabezpieczenia trzeba sprawdzić dla konkretnego rodzaju i stężenia.</p></div></details>
          <details><summary>Czy można automatycznie przyjąć inhibitor w stężeniu 0,5%?</summary><div class="rk-volume-faq-answer"><p>Nie. Dawkowanie zależy od konkretnego środka i celu jego zastosowania. Kalkulator oblicza ilość dopiero po wpisaniu proporcji z instrukcji, bez rekomendowania producenta lub produktu.</p></div></details>
          <details><summary>Czy kalkulator dobierze naczynie wzbiorcze?</summary><div class="rk-volume-faq-answer"><p>Nie. Zład jest potrzebny do określenia rozszerzenia płynu, ale dobór naczynia wymaga również zakresu temperatur, wysokości statycznej, ciśnienia wstępnego, ciśnienia napełnienia, maksymalnego ciśnienia instalacji i zaworu bezpieczeństwa.</p></div></details>
          <details><summary>Czy częste dolewanie wody po uruchomieniu jest normalne?</summary><div class="rk-volume-faq-answer"><p>Pojedyncza korekta po odpowietrzeniu może się zdarzyć, ale regularne uzupełnianie płynu powinno zostać wyjaśnione. Dolewki wprowadzają nową porcję tlenu i mogą wskazywać nieszczelność, problem z naczyniem albo niewłaściwe ciśnienie.</p></div></details>
          <details><summary>Czy kalkulator zastępuje projekt instalacji?</summary><div class="rk-volume-faq-answer"><p>Nie. Kalkulator liczy geometrię i sumuje wpisane składniki, ale nie zna rzeczywistego przebiegu pętli, brakujących odcinków, stanów zaworów, wymagań urządzeń ani kompletnej hydrauliki budynku.</p></div></details>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-sources">
        <span class="rk-volume-kicker">Neutralna podstawa techniczna</span>
        <h2>Źródła i zakres opracowania</h2>
        <div class="rk-volume-sources">
          <strong>Normy i wytyczne wykorzystane do uporządkowania zakresu artykułu</strong>
          <p>Projektowanie i wymiarowanie systemów ogrzewania płaszczyznowego: <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>. Kryteria projektowe wodnych instalacji ogrzewczych: <a href="https://knowledge.bsigroup.com/products/heating-systems-in-buildings-design-for-water-based-heating-systems" target="_blank" rel="noopener nofollow">BS EN 12828:2012+A1:2014</a>. Zakres serii dotyczącej parametrów i oceny pomp ciepła: <a href="https://knowledge.bsigroup.com/products/air-conditioners-liquid-chilling-packages-and-heat-pumps-for-space-heating-and-cooling-and-process-chillers-with-electrically-driven-compressors-terms-and-definitions-1" target="_blank" rel="noopener nofollow">BS EN 14511-1:2022</a>. Zapobieganie osadom i korozji wodnej: <a href="https://www.vdi.de/en/home/vdi-standards/details/vdi-2035-blatt-1-prevention-of-damage-in-water-heating-installations-scale-formation-and-waterside-corrosion" target="_blank" rel="noopener nofollow">VDI 2035 Blatt 1</a>.</p>
          <p>Wzór kalkulatora wynika z objętości walca. Presety rur są wartościami geometrycznymi dla podanych wymiarów, a pojemności urządzeń i wymagania minimalnego zładu użytkownik wpisuje samodzielnie. Narzędzie nie dobiera bufora, pompy obiegowej, naczynia wzbiorczego ani sposobu uzdatniania wody.</p>
        </div>
        <div class="rk-volume-update">Ostatnia aktualizacja merytoryczna: 29 sierpnia 2026 r.</div>
      </section>

      <section class="rk-volume-author" id="rk-volume-author" aria-label="Autor opracowania">
        <input type="radio" name="rk-volume-author-tabs" id="rk-volume-author-about" checked>
        <input type="radio" name="rk-volume-author-tabs" id="rk-volume-author-exp">
        <input type="radio" name="rk-volume-author-tabs" id="rk-volume-author-sites">

        <header class="rk-volume-author-head">
          <div><span class="rk-volume-kicker" style="color:#83f3ff">Autor opracowania</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div>
          <span class="rk-volume-author-mark">HYDRAULIKA • HVAC</span>
        </header>

        <div class="rk-volume-author-layout">
          <aside class="rk-volume-author-side">
            <div class="rk-volume-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-volume-author-name">Robert Kucharski</div>
            <div class="rk-volume-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-volume-author-social-label">Znajdziesz mnie również:</div>
            <div class="rk-volume-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt HVAC w serwisie X" title="X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"></path></svg></a>
            </div>
          </aside>

          <div class="rk-volume-author-main">
            <blockquote class="rk-volume-author-quote"><p>„Najpierw policzmy, co naprawdę mieści instalacja. Dopiero później można rozmawiać o przygotowaniu płynu, wymaganiach źródła i zabezpieczeniach — bez zastępowania brakujących danych przypadkowym procentem.”</p></blockquote>
            <div class="rk-volume-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-volume-author-tab" for="rk-volume-author-about">O autorze</label>
              <label class="rk-volume-author-tab" for="rk-volume-author-exp">Doświadczenie</label>
              <label class="rk-volume-author-tab" for="rk-volume-author-sites">Portale</label>
            </div>
            <div class="rk-volume-author-panel rk-volume-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia cieplne z rzeczywistym przebiegiem rur, długościami pętli, przepływami, stratami ciśnienia i nastawami rozdzielaczy. W publikacjach wyraźnie oddzielam szacunek od dokumentacji wykonawczej.</p><p><a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz profil i pozostałe opracowania autora</a>.</p></div>
            <div class="rk-volume-author-panel rk-volume-author-panel-exp"><p>Dokumentacja projektowa pozwala zsumować długości każdego obwodu i magistrali, a następnie powiązać zład z wymaganiami źródła, sposobem sterowania oraz wyposażeniem kotłowni. Dzięki temu ilość płynu nie jest zgadywana z samego metrażu domu.</p></div>
            <div class="rk-volume-author-panel rk-volume-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-volume-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>
          </div>
        </div>
      </section>

      <section class="rk-volume-final-cta" aria-label="Projekt ogrzewania podłogowego z obliczonym zładem">
        <span class="rk-volume-kicker" style="color:#83f3ff">Od litrów do kompletnej dokumentacji</span>
        <h2>Otrzymaj projekt z długościami, przepływami i zładem instalacji</h2>
        <p>Projekt określa przebieg każdej pętli, rzeczywiste długości, rozstawy, przepływy, straty ciśnienia, nastawy rozdzielacza oraz sposób współpracy ze źródłem ciepła. Na tej podstawie można policzyć objętość przewodów bez zgadywania z powierzchni budynku.</p>
        <a class="rk-volume-cta-button rk-volume-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
        <small class="rk-volume-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>
    </main>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#article",
      "url": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/",
      "headline": "Ile wody potrzeba do wypełnienia podłogówki? Kalkulator zładu instalacji",
      "description": "Techniczny poradnik i kalkulator objętości rur, magistral, rozdzielaczy, źródła ciepła, bufora oraz ilości płynu do napełnienia podłogówki.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "about": [
        {"@type": "Thing", "name": "Zład instalacji grzewczej"},
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"},
        {"@type": "Thing", "name": "Objętość wody w rurach"},
        {"@type": "Thing", "name": "Napełnianie instalacji"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#webpage",
      "url": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/",
      "name": "Ile wody potrzeba do wypełnienia podłogówki? Kalkulator zładu instalacji",
      "description": "Oblicz całkowity i dostępny zład ogrzewania podłogowego oraz ilość płynu potrzebną do napełnienia instalacji.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#application"},
        {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#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 wody potrzeba do wypełnienia podłogówki", "item": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#application",
      "name": "Kalkulator zładu instalacji podłogowej",
      "url": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#rk-volume-calculator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "description": "Kalkulator oblicza objętość rur z długości i średnicy wewnętrznej, dodaje pojemność urządzeń, pokazuje zład całkowity, dostępny oraz ilość płynu z rezerwą."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#howto",
      "name": "Jak obliczyć ilość płynu potrzebną do napełnienia podłogówki?",
      "description": "Procedura zsumowania objętości rur i urządzeń przed napełnieniem instalacji.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Zbierz długości rur", "text": "Użyj zestawienia pętli i rzeczywistych długości przewodów wspólnych albo świadomie wybierz tryb szacowania z powierzchni."},
        {"@type": "HowToStep", "position": 2, "name": "Sprawdź średnice wewnętrzne", "text": "Odczytaj średnicę wewnętrzną każdej grupy przewodów z wymiaru i grubości ścianki lub dokumentacji rury."},
        {"@type": "HowToStep", "position": 3, "name": "Oblicz objętość przewodów", "text": "Pomnóż długość każdego odcinka przez pojemność jednego metra wynikającą z jego średnicy wewnętrznej."},
        {"@type": "HowToStep", "position": 4, "name": "Dodaj objętości urządzeń", "text": "Dodaj rozdzielacze, część wodną źródła, bufor, sprzęgło i pozostałe napełniane elementy."},
        {"@type": "HowToStep", "position": 5, "name": "Oddziel zład całkowity od dostępnego", "text": "Odejmij objętość odcinaną w analizowanym stanie, jeżeli sprawdzasz wymaganie minimalnego zładu źródła."},
        {"@type": "HowToStep", "position": 6, "name": "Sprawdź płyn i dawkowanie", "text": "Wymagania jakości wody, stężenie glikolu i dawkę dodatku odczytaj z właściwej dokumentacji."},
        {"@type": "HowToStep", "position": 7, "name": "Dodaj rezerwę roboczą", "text": "Przygotuj niewielką edytowalną rezerwę płynu, ale nie wliczaj jej do nominalnego zładu instalacji."},
        {"@type": "HowToStep", "position": 8, "name": "Udokumentuj napełnienie", "text": "Zapisz ilość i rodzaj użytego płynu oraz każdą późniejszą dolewkę."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Ile wody mieści się w rurze 16 × 2 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Przy średnicy wewnętrznej około 12 mm jest to około 0,113 l na metr, czyli około 11,31 l na 100 m przewodu. Ostatecznie należy użyć rzeczywistej średnicy wewnętrznej zastosowanej rury."}},
        {"@type": "Question", "name": "Ile wody mieści 100 m² ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej wartości. Dla 100 m² czynnej powierzchni i rury 16 × 2 mm sama objętość przewodu w polu wynosi orientacyjnie około 113 l przy rozstawie 10 cm, 90,5 l przy 12,5 cm, 75,4 l przy 15 cm i 56,5 l przy 20 cm. Trzeba dodać dobiegi, magistrale i urządzenia."}},
        {"@type": "Question", "name": "Czy do objętości pętli można dodać 10 albo 15% na osprzęt?", "acceptedAnswer": {"@type": "Answer", "text": "Taki procent może służyć wyłącznie jako bardzo luźny kosztorys, ale nie daje wiarygodnego zładu. Poprawniej jest dodać rzeczywiste pojemności rozdzielaczy, źródła, bufora, sprzęgła i pozostałych elementów."}},
        {"@type": "Question", "name": "Czy rozstaw rur zależy od ich średnicy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie bezpośrednio. Rozstaw dobiera się do wymaganej mocy podłogi, temperatury wody, konstrukcji posadzki i oporu okładziny. Średnica wpływa między innymi na pojemność oraz opory hydrauliczne, ale nie narzuca automatycznie rozstawu."}},
        {"@type": "Question", "name": "Czy większy zład wymaga większego bufora?", "acceptedAnswer": {"@type": "Answer", "text": "Nie jako uniwersalna zasada. Jeżeli urządzenie wymaga minimalnej dostępnej objętości, większy istniejący zład może zmniejszyć ewentualny deficyt. Potrzebę, funkcję i sposób włączenia bufora analizuje się dla konkretnej instalacji oraz sterowania."}},
        {"@type": "Question", "name": "Czy PN-EN 14511 wymaga 10–15 l wody na każdy kW pompy ciepła?", "acceptedAnswer": {"@type": "Answer", "text": "Nie należy przedstawiać tej wartości jako uniwersalnego wymagania normy. Minimalną objętość i minimalny przepływ trzeba sprawdzić w dokumentacji konkretnego urządzenia oraz dla rzeczywistej konfiguracji hydraulicznej."}},
        {"@type": "Question", "name": "Czy zład instalacji wyznacza przepływ pompy obiegowej?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Przepływ wynika z przenoszonej mocy, różnicy temperatur i właściwości medium. Wymagane ciśnienie pompy zależy od strat na krytycznej drodze hydraulicznej."}},
        {"@type": "Question", "name": "Czy przy glikolu zmienia się objętość rur?", "acceptedAnswer": {"@type": "Answer", "text": "Nie zmienia się geometryczna pojemność przewodów. Zmieniają się właściwości roztworu, w tym lepkość, gęstość, ciepło właściwe i rozszerzalność, dlatego hydraulikę oraz zabezpieczenia trzeba sprawdzić dla konkretnego rodzaju i stężenia."}},
        {"@type": "Question", "name": "Czy można automatycznie przyjąć inhibitor w stężeniu 0,5%?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Dawkowanie zależy od konkretnego środka i celu jego zastosowania. Kalkulator oblicza ilość dopiero po wpisaniu proporcji z instrukcji, bez rekomendowania producenta lub produktu."}},
        {"@type": "Question", "name": "Czy kalkulator dobierze naczynie wzbiorcze?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Zład jest potrzebny do określenia rozszerzenia płynu, ale dobór naczynia wymaga również zakresu temperatur, wysokości statycznej, ciśnienia wstępnego, ciśnienia napełnienia, maksymalnego ciśnienia instalacji i zaworu bezpieczeństwa."}},
        {"@type": "Question", "name": "Czy częste dolewanie wody po uruchomieniu jest normalne?", "acceptedAnswer": {"@type": "Answer", "text": "Pojedyncza korekta po odpowietrzeniu może się zdarzyć, ale regularne uzupełnianie płynu powinno zostać wyjaśnione. Dolewki wprowadzają nową porcję tlenu i mogą wskazywać nieszczelność, problem z naczyniem albo niewłaściwe ciśnienie."}},
        {"@type": "Question", "name": "Czy kalkulator zastępuje projekt instalacji?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Kalkulator liczy geometrię i sumuje wpisane składniki, ale nie zna rzeczywistego przebiegu pętli, brakujących odcinków, stanów zaworów, wymagań urządzeń ani kompletnej hydrauliki budynku."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@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-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@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"}
    },
    {
      "@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.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

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

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

    var form = document.getElementById("rk-volume-form");
    var lengthPanel = document.getElementById("rk-volume-panel-length");
    var areaPanel = document.getElementById("rk-volume-panel-area");
    var lengthRows = document.getElementById("rk-volume-length-rows");
    var areaMainRows = document.getElementById("rk-volume-area-main-rows");
    var breakdownBody = document.getElementById("rk-volume-breakdown-body");

    function numberValue(id, fallback) {
      var element = document.getElementById(id);
      var value = element ? parseFloat(String(element.value).replace(",", ".")) : NaN;
      if (!isFinite(value)) { return fallback; }
      return value;
    }

    function clamp(value, minimum, maximum) {
      if (value < minimum) { return minimum; }
      if (value > maximum) { return maximum; }
      return value;
    }

    function format(value, digits) {
      if (!isFinite(value)) { return "—"; }
      return value.toLocaleString("pl-PL", { minimumFractionDigits: digits, maximumFractionDigits: digits });
    }

    function escapeHtml(value) {
      return String(value)
        .replace(/</g, "‹")
        .replace(/>/g, "›")
        .replace(/\"/g, "”")
        .replace(/'/g, "’");
    }

    function pipeCapacity(innerDiameter) {
      return 0.0007853981634 * innerDiameter * innerDiameter;
    }

    function selectedDiameter(row) {
      var select = row.querySelector(".rk-volume-row-pipe");
      var custom = row.querySelector(".rk-volume-custom-diameter");
      if (!select) { return 0; }
      if (select.value === "custom") {
        var customValue = custom ? parseFloat(String(custom.value).replace(",", ".")) : 0;
        return clamp(isFinite(customValue) ? customValue : 0, 0, 100);
      }
      return clamp(parseFloat(select.value) || 0, 0, 100);
    }

    function toggleCustom(select) {
      var row = select.closest(".rk-volume-pipe-row");
      if (!row) { return; }
      var custom = row.querySelector(".rk-volume-custom-diameter");
      if (!custom) { return; }
      custom.hidden = select.value !== "custom";
    }

    function pipeRowMarkup(kind, category) {
      var disabled = kind === "area-main" ? " disabled" : "";
      var loopsSelected = category === "loops" ? " selected" : "";
      var mainsSelected = category === "mains" ? " selected" : "";
      var defaultName = category === "mains" ? "Dodatkowa magistrala" : "Dodatkowy odcinek";
      return '<div class="rk-volume-pipe-row" data-row-kind="' + kind + '">' +
        '<div class="rk-volume-field"><label>Nazwa odcinka</label><input class="rk-volume-row-name" type="text" value="' + defaultName + '" maxlength="60"></div>' +
        '<div class="rk-volume-field"><label>Kategoria</label><select class="rk-volume-row-category"' + disabled + '><option value="loops"' + loopsSelected + '>Pętle</option><option value="mains"' + mainsSelected + '>Magistrale</option></select></div>' +
        '<div class="rk-volume-field"><label>Rura</label><select class="rk-volume-row-pipe"><option value="12" selected>16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="26">32 × 3,0 mm</option><option value="custom">Własna średnica</option></select><input class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="12" inputmode="decimal" hidden><small>Własna wartość oznacza średnicę wewnętrzną.</small></div>' +
        '<div class="rk-volume-field"><label>Łączna długość</label><input class="rk-volume-row-length" type="number" min="0" max="20000" step="0.1" value="0" inputmode="decimal"><small>m</small></div>' +
        '<button class="rk-volume-remove" type="button" aria-label="Usuń odcinek">×</button>' +
      '</div>';
    }

    function currentMode() {
      var checked = form.querySelector('input[name="rk-volume-mode"]:checked');
      return checked ? checked.value : "length";
    }

    function toggleMode() {
      var mode = currentMode();
      lengthPanel.hidden = mode !== "length";
      areaPanel.hidden = mode !== "area";
      calculate();
    }

    function toggleDtrFields() {
      var mode = document.getElementById("rk-volume-dtr-mode").value;
      document.getElementById("rk-volume-dtr-fixed-wrap").hidden = mode !== "fixed";
      document.getElementById("rk-volume-dtr-factor-wrap").hidden = mode !== "factor";
      document.getElementById("rk-volume-dtr-power-wrap").hidden = mode !== "factor";
    }

    function toggleDoseField() {
      var mode = document.getElementById("rk-volume-dose-mode").value;
      var wrap = document.getElementById("rk-volume-dose-value-wrap");
      var unit = document.getElementById("rk-volume-dose-unit");
      wrap.hidden = mode === "none";
      if (mode === "percent") { unit.textContent = "% objętości zładu"; }
      if (mode === "ml100") { unit.textContent = "ml na 100 l"; }
    }

    function collectRows(container, forcedCategory) {
      var rows = Array.prototype.slice.call(container.querySelectorAll(".rk-volume-pipe-row"));
      var items = [];
      rows.forEach(function (row) {
        var nameInput = row.querySelector(".rk-volume-row-name");
        var categorySelect = row.querySelector(".rk-volume-row-category");
        var lengthInput = row.querySelector(".rk-volume-row-length");
        var diameter = selectedDiameter(row);
        var length = lengthInput ? parseFloat(String(lengthInput.value).replace(",", ".")) : 0;
        var category = forcedCategory || (categorySelect ? categorySelect.value : "mains");
        length = clamp(isFinite(length) ? length : 0, 0, 20000);
        if (length > 0) {
          items.push({
            name: nameInput ? nameInput.value : "Odcinek rury",
            category: category,
            diameter: diameter,
            length: length,
            volume: pipeCapacity(diameter) * length
          });
        }
      });
      return items;
    }

    function addBreakdown(items, name, data, volume, category) {
      if (volume <= 0) { return; }
      items.push({ name: name, data: data, volume: volume, category: category });
    }

    function setSegment(id, value, total) {
      var element = document.getElementById(id);
      var percent = total > 0 ? value / total * 100 : 0;
      element.style.width = percent.toFixed(4) + "%";
    }

    function renderBreakdown(items, total) {
      if (!items.length) {
        breakdownBody.innerHTML = '<tr><td data-label="Element">Brak danych</td><td data-label="Dane">Uzupełnij kalkulator</td><td data-label="Objętość">0,0 l</td><td data-label="Udział">0,0%</td></tr>';
        return;
      }
      var html = "";
      items.forEach(function (item) {
        var share = total > 0 ? item.volume / total * 100 : 0;
        html += '<tr><td data-label="Element">' + escapeHtml(item.name) + '</td><td data-label="Dane">' + escapeHtml(item.data) + '</td><td data-label="Objętość">' + format(item.volume, 2) + ' l</td><td data-label="Udział">' + format(share, 1) + '%</td></tr>';
      });
      breakdownBody.innerHTML = html;
    }

    function calculate(event) {
      if (event) { event.preventDefault(); }

      var mode = currentMode();
      var pipeItems = [];
      var breakdown = [];
      var totalLength = 0;

      if (mode === "length") {
        pipeItems = collectRows(lengthRows, "");
      } else {
        var area = clamp(numberValue("rk-volume-area", 0), 0, 2000);
        var spacing = clamp(numberValue("rk-volume-spacing", 15), 1, 100) / 100;
        var geometry = clamp(numberValue("rk-volume-geometry", 0), 0, 15) / 100;
        var loopCount = Math.round(clamp(numberValue("rk-volume-loop-count", 1), 1, 100));
        var approach = clamp(numberValue("rk-volume-approach", 0), 0, 100);
        var areaPipeSelect = document.getElementById("rk-volume-area-pipe");
        var areaDiameter = 0;
        if (areaPipeSelect.value === "custom") {
          areaDiameter = clamp(numberValue("rk-volume-area-custom", 12), 0, 100);
        } else {
          areaDiameter = clamp(parseFloat(areaPipeSelect.value) || 0, 0, 100);
        }
        var fieldLength = spacing > 0 ? area / spacing * (1 + geometry) : 0;
        var approachLength = loopCount * approach * 2;
        var estimatedLength = fieldLength + approachLength;
        if (estimatedLength > 0) {
          pipeItems.push({
            name: "Szacowane pętle wraz z dobiegami",
            category: "loops",
            diameter: areaDiameter,
            length: estimatedLength,
            volume: pipeCapacity(areaDiameter) * estimatedLength,
            estimateData: format(area, 1) + " m², rozstaw " + format(spacing * 100, 1) + " cm, " + loopCount + " pętli"
          });
        }
        pipeItems = pipeItems.concat(collectRows(areaMainRows, "mains"));
      }

      var loopsVolume = 0;
      var mainsVolume = 0;

      pipeItems.forEach(function (item) {
        totalLength += item.length;
        if (item.category === "loops") { loopsVolume += item.volume; }
        if (item.category === "mains") { mainsVolume += item.volume; }
        var rowData = item.estimateData || (format(item.length, 1) + " m, dᵢ " + format(item.diameter, 1) + " mm");
        addBreakdown(breakdown, item.name, rowData, item.volume, item.category);
      });

      var manifolds = clamp(numberValue("rk-volume-manifolds", 0), 0, 5000);
      var source = clamp(numberValue("rk-volume-source", 0), 0, 5000);
      var buffer = clamp(numberValue("rk-volume-buffer", 0), 0, 10000);
      var separator = clamp(numberValue("rk-volume-separator", 0), 0, 5000);
      var other = clamp(numberValue("rk-volume-other", 0), 0, 10000);
      var isolated = clamp(numberValue("rk-volume-isolated", 0), 0, 10000);
      var otherVolume = manifolds + separator + other;

      addBreakdown(breakdown, "Rozdzielacze", "wartość wpisana", manifolds, "other");
      addBreakdown(breakdown, "Źródło lub wymiennik", "wartość wpisana", source, "source");
      addBreakdown(breakdown, "Bufor", "wartość wpisana", buffer, "buffer");
      addBreakdown(breakdown, "Sprzęgło lub separator", "wartość wpisana", separator, "other");
      addBreakdown(breakdown, "Inne elementy", "wartość wpisana", other, "other");

      var total = loopsVolume + mainsVolume + source + buffer + otherVolume;
      isolated = Math.min(isolated, total);
      var accessible = Math.max(0, total - isolated);
      var reserve = clamp(numberValue("rk-volume-reserve", 0), 0, 30);
      var prepare = total * (1 + reserve / 100);

      var doseMode = document.getElementById("rk-volume-dose-mode").value;
      var doseValue = clamp(numberValue("rk-volume-dose-value", 0), 0, 10000);
      var doseText = "Nie obliczano";
      if (doseMode === "ml100") {
        var doseMl = total / 100 * doseValue;
        doseText = doseMl >= 1000 ? format(doseMl / 1000, 2) + " l" : format(doseMl, 0) + " ml";
      }
      if (doseMode === "percent") {
        var doseLitres = total * doseValue / 100;
        doseText = format(doseLitres, 2) + " l";
      }

      var dtrMode = document.getElementById("rk-volume-dtr-mode").value;
      var required = 0;
      var dtrText = "Nie porównano";
      var statusText = "Zład obliczono z wpisanych elementów. Sprawdź, czy lista obejmuje wszystkie napełniane odcinki i urządzenia.";
      var statusClass = "rk-volume-status";

      if (dtrMode === "fixed") { required = clamp(numberValue("rk-volume-dtr-fixed", 0), 0, 10000); }
      if (dtrMode === "factor") {
        required = clamp(numberValue("rk-volume-dtr-factor", 0), 0, 100) * clamp(numberValue("rk-volume-dtr-power", 0), 0, 500);
      }

      if (dtrMode !== "none") {
        var difference = accessible - required;
        if (difference >= 0) {
          dtrText = "+" + format(difference, 1) + " l";
          statusText = "Wpisany zład dostępny jest większy od wartości kontrolnej z DTR o " + format(difference, 1) + " l. Nadal sprawdź minimalny przepływ i warunki, w których wymaganie obowiązuje.";
        } else {
          dtrText = format(difference, 1) + " l";
          statusText = "W analizowanym stanie brakuje " + format(Math.abs(difference), 1) + " l do wartości wpisanej z DTR. Wynik nie przesądza o obowiązkowym buforze — wymaga analizy hydrauliki i sterowania.";
          statusClass += " is-danger";
        }
      }

      if (total <= 0) {
        statusText = "Wprowadź co najmniej jeden odcinek rury albo objętość urządzenia.";
        statusClass += " is-warning";
      }

      if (mode === "area") {
        statusText += " Długość pętli została oszacowana z powierzchni i nie zastępuje rozrysowania rur.";
        if (statusClass.indexOf("is-danger") === -1) { statusClass += " is-warning"; }
      }

      var fluid = document.getElementById("rk-volume-fluid").value;
      if (fluid === "glycol") {
        statusText += " Wybrano roztwór glikolu: objętość geometryczna nie zmienia się, ale hydraulika i naczynie wymagają danych konkretnego roztworu.";
      }

      document.getElementById("rk-volume-result-loops").textContent = format(loopsVolume, 1) + " l";
      document.getElementById("rk-volume-result-mains").textContent = format(mainsVolume, 1) + " l";
      document.getElementById("rk-volume-result-total").textContent = format(total, 1) + " l";
      document.getElementById("rk-volume-result-accessible").textContent = format(accessible, 1) + " l";
      document.getElementById("rk-volume-result-prepare").textContent = format(prepare, 1) + " l";
      document.getElementById("rk-volume-result-length").textContent = format(totalLength, 1) + " m";
      document.getElementById("rk-volume-result-dose").textContent = doseText;
      document.getElementById("rk-volume-result-dtr").textContent = dtrText;

      var status = document.getElementById("rk-volume-status");
      status.className = statusClass;
      status.textContent = statusText;

      setSegment("rk-volume-segment-loops", loopsVolume, total);
      setSegment("rk-volume-segment-mains", mainsVolume, total);
      setSegment("rk-volume-segment-source", source, total);
      setSegment("rk-volume-segment-buffer", buffer, total);
      setSegment("rk-volume-segment-other", otherVolume, total);

      document.getElementById("rk-volume-legend-loops").textContent = format(loopsVolume, 1) + " l";
      document.getElementById("rk-volume-legend-mains").textContent = format(mainsVolume, 1) + " l";
      document.getElementById("rk-volume-legend-source").textContent = format(source, 1) + " l";
      document.getElementById("rk-volume-legend-buffer").textContent = format(buffer, 1) + " l";
      document.getElementById("rk-volume-legend-other").textContent = format(otherVolume, 1) + " l";

      renderBreakdown(breakdown, total);
    }

    function restoreExample() {
      var modeLength = document.getElementById("rk-volume-mode-length");
      modeLength.checked = true;
      lengthRows.innerHTML = '';
      lengthRows.insertAdjacentHTML("beforeend", pipeRowMarkup("length", "loops"));
      lengthRows.insertAdjacentHTML("beforeend", pipeRowMarkup("length", "mains"));
      var restoredRows = lengthRows.querySelectorAll(".rk-volume-pipe-row");
      restoredRows[0].querySelector(".rk-volume-row-name").value = "Pętle podłogowe";
      restoredRows[0].querySelector(".rk-volume-row-length").value = "720";
      restoredRows[1].querySelector(".rk-volume-row-name").value = "Zasilanie i powrót";
      restoredRows[1].querySelector(".rk-volume-row-pipe").value = "26";
      restoredRows[1].querySelector(".rk-volume-row-length").value = "20";
      document.getElementById("rk-volume-manifolds").value = "2";
      document.getElementById("rk-volume-source").value = "6";
      document.getElementById("rk-volume-buffer").value = "0";
      document.getElementById("rk-volume-separator").value = "0";
      document.getElementById("rk-volume-other").value = "0";
      document.getElementById("rk-volume-isolated").value = "0";
      document.getElementById("rk-volume-dtr-mode").value = "none";
      document.getElementById("rk-volume-reserve").value = "3";
      document.getElementById("rk-volume-fluid").value = "water";
      document.getElementById("rk-volume-dose-mode").value = "none";
      toggleDtrFields();
      toggleDoseField();
      toggleMode();
    }

    form.addEventListener("submit", calculate);
    form.addEventListener("input", function (event) {
      if (event.target.classList.contains("rk-volume-row-pipe")) { toggleCustom(event.target); }
      calculate();
    });
    form.addEventListener("change", function (event) {
      if (event.target.name === "rk-volume-mode") { toggleMode(); }
      if (event.target.id === "rk-volume-dtr-mode") { toggleDtrFields(); }
      if (event.target.id === "rk-volume-dose-mode") { toggleDoseField(); }
      if (event.target.id === "rk-volume-area-pipe") {
        document.getElementById("rk-volume-area-custom").hidden = event.target.value !== "custom";
      }
      if (event.target.classList.contains("rk-volume-row-pipe")) { toggleCustom(event.target); }
      calculate();
    });

    form.addEventListener("click", function (event) {
      var removeButton = event.target.closest(".rk-volume-remove");
      if (removeButton) {
        var row = removeButton.closest(".rk-volume-pipe-row");
        if (row) { row.remove(); }
        calculate();
      }
    });

    document.getElementById("rk-volume-add-length").addEventListener("click", function () {
      lengthRows.insertAdjacentHTML("beforeend", pipeRowMarkup("length", "loops"));
      calculate();
    });

    document.getElementById("rk-volume-add-area-main").addEventListener("click", function () {
      areaMainRows.insertAdjacentHTML("beforeend", pipeRowMarkup("area-main", "mains"));
      calculate();
    });

    document.getElementById("rk-volume-reset").addEventListener("click", restoreExample);

    var progress = root.querySelector(".rk-volume-progress");
    function updateProgress() {
      var rectangle = root.getBoundingClientRect();
      var viewport = window.innerHeight || document.documentElement.clientHeight;
      var distance = root.offsetHeight - viewport;
      var passed = -rectangle.top;
      var percent = distance > 0 ? clamp(passed / distance * 100, 0, 100) : 100;
      progress.style.width = percent.toFixed(2) + "%";
    }

    window.addEventListener("scroll", updateProgress, { passive: true });
    window.addEventListener("resize", updateProgress);

    toggleDtrFields();
    toggleDoseField();
    calculate();
    updateProgress();
  }());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/">Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania.</title>
		<link>https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 31 Dec 2024 17:31:46 +0000</pubDate>
				<category><![CDATA[Budownictwo energooszczędne]]></category>
		<category><![CDATA[Energooszczędność]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Remonty i modernizacje]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[Zdrowie i komfort]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[nowoczesne technologie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędności energii]]></category>
		<category><![CDATA[remonty]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<category><![CDATA[tradycyjne grzejniki]]></category>
		<category><![CDATA[zalety ogrzewania podłogowego]]></category>
		<category><![CDATA[zdrowe ogrzewanie]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1868</guid>

					<description><![CDATA[<p>Zalety ogrzewania podłogowego w porównaniu do tradycyjnych grzejników są niezaprzeczalne. Ten nowoczesny system zapewnia równomierne rozprowadzanie ciepła, oszczędność miejsca i wyższy komfort cieplny. W artykule omawiamy kluczowe korzyści, takie jak efektywność energetyczna, trwałość oraz zdrowsze warunki w pomieszczeniach. Poznaj szczegóły tego rozwiązania i sprawdź, dlaczego warto z niego skorzystać w swoim domu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/">Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-pipe-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b465b;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #078fb3;
    --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-pipe-guide,
  #rk-pipe-guide * {
    box-sizing: border-box;
    min-width: 0;
  }

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-hero {
    background:
      radial-gradient(circle at 89% 111%, rgba(41, 196, 215, 0.24) 0, rgba(41, 196, 215, 0.24) 17%, transparent 17.2%),
      linear-gradient(120deg, #0b2536 0%, #143e52 61%, #0d6576 100%);
    color: var(--rk-white);
    overflow: hidden;
    padding: 62px 58px 56px;
    position: relative;
  }

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-hero-title,
  #rk-pipe-guide .rk-pipe-section-title,
  #rk-pipe-guide .rk-pipe-cta-title,
  #rk-pipe-guide .rk-pipe-author-title {
    font-family: Arial, Helvetica, sans-serif;
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.06;
  }

  #rk-pipe-guide .rk-pipe-hero-title {
    font-size: clamp(2.4rem, 6vw, 5.35rem);
    margin: 0;
    max-width: 1180px;
  }

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

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

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

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-meta {
    color: #c5d9df;
    font-size: 0.83rem;
    font-weight: 700;
    gap: 12px 24px;
    margin-top: 34px;
  }

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

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

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

  #rk-pipe-guide .rk-pipe-shortcuts 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-pipe-guide .rk-pipe-shortcuts a:hover,
  #rk-pipe-guide .rk-pipe-shortcuts a:focus-visible {
    background: var(--rk-cyan-soft);
    border-color: #91dce5;
    color: #075f78;
  }

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

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

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

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-section-dark .rk-pipe-eyebrow {
    color: #68e6ef;
  }

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-copy strong,
  #rk-pipe-guide .rk-pipe-lead strong {
    color: var(--rk-ink);
  }

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-answer strong {
    color: var(--rk-ink);
    display: block;
    font-size: 1.24rem;
    line-height: 1.4;
  }

  #rk-pipe-guide .rk-pipe-answer p {
    color: var(--rk-copy);
    margin: 10px 0 0;
  }

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-card p {
    color: var(--rk-copy);
    margin: 0;
  }

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

  #rk-pipe-guide .rk-pipe-note p {
    margin: 0;
  }

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

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

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

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

  #rk-pipe-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-pipe-guide th:first-child {
    border-radius: 14px 0 0;
  }

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

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

  #rk-pipe-guide tbody tr td:first-child {
    border-left: 1px solid var(--rk-line);
  }

  #rk-pipe-guide tbody tr td:last-child {
    border-right: 1px solid var(--rk-line);
  }

  #rk-pipe-guide tbody tr:last-child td:first-child {
    border-radius: 0 0 0 14px;
  }

  #rk-pipe-guide tbody tr:last-child td:last-child {
    border-radius: 0 0 14px;
  }

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

  #rk-pipe-guide .rk-pipe-formula {
    background: #edf8fa;
    border: 1px solid #b4e1e7;
    border-radius: 13px;
    color: #086b82;
    font-family: Consolas, Monaco, monospace;
    font-size: 1rem;
    font-weight: 700;
    margin-top: 20px;
    padding: 15px 18px;
  }

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-stage-number {
    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-pipe-guide .rk-pipe-stage-head h4 {
    color: #ffffff;
    font-size: 1.15rem;
    line-height: 1.3;
    margin: 0;
  }

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-field small {
    color: #a9c4ce;
    display: block;
    font-size: 0.72rem;
    line-height: 1.45;
    margin-top: 6px;
  }

  #rk-pipe-guide .rk-pipe-field input,
  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-tool-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 11px;
    margin-top: 20px;
  }

  #rk-pipe-guide .rk-pipe-primary-button,
  #rk-pipe-guide .rk-pipe-secondary-button {
    border-radius: 11px;
    cursor: pointer;
    font-weight: 900;
    min-height: 48px;
    padding: 11px 18px;
  }

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

  #rk-pipe-guide .rk-pipe-primary-button:hover {
    background: var(--rk-orange-dark);
  }

  #rk-pipe-guide .rk-pipe-secondary-button {
    background: transparent;
    border: 1px solid #5d7c8d;
    color: #ffffff;
  }

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

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

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

  #rk-pipe-guide .rk-pipe-result-status {
    color: var(--rk-ink);
    font-size: clamp(1.35rem, 2.6vw, 2rem);
    font-weight: 900;
    line-height: 1.25;
    margin: 0;
  }

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

  #rk-pipe-guide .rk-pipe-metric-grid {
    display: grid;
    gap: 13px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-top: 20px;
  }

  #rk-pipe-guide .rk-pipe-metric {
    background: #f4f9fa;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 16px;
  }

  #rk-pipe-guide .rk-pipe-metric span {
    color: var(--rk-muted);
    display: block;
    font-size: 0.71rem;
    font-weight: 900;
    letter-spacing: 0.05em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-metric strong {
    color: var(--rk-ink);
    display: block;
    font-size: 1.34rem;
    line-height: 1.25;
    margin-top: 6px;
  }

  #rk-pipe-guide .rk-pipe-metric.is-floor strong {
    color: var(--rk-cyan-dark);
  }

  #rk-pipe-guide .rk-pipe-metric.is-radiator strong {
    color: var(--rk-orange-dark);
  }

  #rk-pipe-guide .rk-pipe-result-callout {
    background: #eef8fa;
    border-radius: 13px;
    color: var(--rk-copy);
    margin-top: 17px;
    padding: 16px 18px;
  }

  #rk-pipe-guide .rk-pipe-result-callout strong {
    color: var(--rk-ink);
  }

  #rk-pipe-guide .rk-pipe-chart-card {
    background: #ffffff;
    border: 1px solid #cfe0e7;
    border-radius: 17px;
    margin-top: 20px;
    padding: 20px;
  }

  #rk-pipe-guide .rk-pipe-chart-head {
    align-items: flex-start;
    display: flex;
    gap: 16px;
    justify-content: space-between;
  }

  #rk-pipe-guide .rk-pipe-chart-head h4 {
    color: var(--rk-ink);
    font-size: 1.08rem;
    margin: 0;
  }

  #rk-pipe-guide .rk-pipe-chart-head p {
    color: var(--rk-copy);
    font-size: 0.82rem;
    margin: 5px 0 0;
  }

  #rk-pipe-guide .rk-pipe-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 16px;
  }

  #rk-pipe-guide .rk-pipe-chart-legend span {
    align-items: center;
    color: var(--rk-copy);
    display: inline-flex;
    font-size: 0.76rem;
    font-weight: 800;
    gap: 7px;
  }

  #rk-pipe-guide .rk-pipe-chart-legend i {
    border-radius: 999px;
    display: inline-block;
    height: 4px;
    width: 24px;
  }

  #rk-pipe-guide .rk-pipe-chart-legend .is-floor {
    background: var(--rk-cyan-dark);
  }

  #rk-pipe-guide .rk-pipe-chart-legend .is-radiator {
    background: var(--rk-orange);
  }

  #rk-pipe-guide .rk-pipe-chart-svg {
    display: block;
    height: auto;
    margin-top: 12px;
    overflow: visible;
    width: 100%;
  }

  #rk-pipe-guide .rk-pipe-chart-table {
    margin-top: 16px;
  }

  #rk-pipe-guide .rk-pipe-chart-table table {
    min-width: 600px;
  }

  #rk-pipe-guide .rk-pipe-chart-table th,
  #rk-pipe-guide .rk-pipe-chart-table td {
    font-size: 0.78rem;
    padding: 11px 12px;
  }

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-cta-title {
    color: #ffffff;
    font-size: clamp(1.7rem, 3.3vw, 2.8rem);
    margin: 0;
    max-width: 970px;
  }

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-cta-button:hover,
  #rk-pipe-guide .rk-pipe-cta-button:focus-visible {
    background: #ffffff;
    color: var(--rk-orange-dark);
  }

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

  #rk-pipe-guide .rk-pipe-decision-grid {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-top: 19px;
  }

  #rk-pipe-guide .rk-pipe-decision-column {
    background: #f5f9fa;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 16px;
  }

  #rk-pipe-guide .rk-pipe-decision-column h4 {
    color: var(--rk-ink);
    font-size: 0.82rem;
    letter-spacing: 0.05em;
    margin: 0 0 10px;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-decision-column.is-floor h4 {
    color: var(--rk-cyan-dark);
  }

  #rk-pipe-guide .rk-pipe-decision-column.is-radiator h4 {
    color: var(--rk-orange-dark);
  }

  #rk-pipe-guide .rk-pipe-decision-column.is-mixed h4 {
    color: var(--rk-purple);
  }

  #rk-pipe-guide .rk-pipe-decision-column.is-missing h4 {
    color: #88600e;
  }

  #rk-pipe-guide .rk-pipe-decision-column ul {
    color: var(--rk-copy);
    font-size: 0.86rem;
    margin: 0;
    padding-left: 18px;
  }

  #rk-pipe-guide .rk-pipe-decision-column li + li {
    margin-top: 7px;
  }

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

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

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

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

  #rk-pipe-guide .rk-pipe-source-card p {
    color: var(--rk-copy);
    margin: 8px 0 0;
  }

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

  #rk-pipe-guide .rk-pipe-responsibility p {
    margin: 0;
  }

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-faq-answer p + p {
    margin-top: 11px;
  }

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-author-name a {
    color: #ffffff;
    text-decoration: none;
  }

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

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-author-social a:hover {
    background: var(--rk-cyan);
    color: var(--rk-navy);
  }

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

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-author-main > p {
    color: var(--rk-copy);
    margin: 18px 0 0;
  }

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

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

  #rk-pipe-guide .rk-pipe-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-pipe-guide .rk-pipe-visually-hidden {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }

  @media (max-width: 1050px) {
    #rk-pipe-guide .rk-pipe-grid-4,
    #rk-pipe-guide .rk-pipe-metric-grid,
    #rk-pipe-guide .rk-pipe-decision-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

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

  @media (max-width: 820px) {
    #rk-pipe-guide .rk-pipe-hero,
    #rk-pipe-guide .rk-pipe-section,
    #rk-pipe-guide .rk-pipe-author {
      padding-left: 28px;
      padding-right: 28px;
    }

    #rk-pipe-guide .rk-pipe-hero::before {
      left: 28px;
    }

    #rk-pipe-guide .rk-pipe-shortcuts {
      padding-left: 22px;
      padding-right: 22px;
    }

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

    #rk-pipe-guide .rk-pipe-author-layout {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-pipe-guide .rk-pipe-author-side {
      padding-bottom: 28px;
    }

    #rk-pipe-guide .rk-pipe-chart-head {
      display: block;
    }

    #rk-pipe-guide .rk-pipe-chart-legend {
      margin-top: 12px;
    }
  }

  @media (max-width: 660px) {
    #rk-pipe-guide .rk-pipe-hero {
      padding-bottom: 42px;
      padding-top: 52px;
    }

    #rk-pipe-guide .rk-pipe-section,
    #rk-pipe-guide .rk-pipe-author {
      padding-bottom: 46px;
      padding-top: 46px;
    }

    #rk-pipe-guide .rk-pipe-grid-2,
    #rk-pipe-guide .rk-pipe-grid-3,
    #rk-pipe-guide .rk-pipe-grid-4,
    #rk-pipe-guide .rk-pipe-fields,
    #rk-pipe-guide .rk-pipe-fields-3,
    #rk-pipe-guide .rk-pipe-source-grid,
    #rk-pipe-guide .rk-pipe-author-facts,
    #rk-pipe-guide .rk-pipe-metric-grid,
    #rk-pipe-guide .rk-pipe-decision-grid {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-pipe-guide .rk-pipe-calculator,
    #rk-pipe-guide .rk-pipe-analyzer,
    #rk-pipe-guide .rk-pipe-cta {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-pipe-guide .rk-pipe-tool-stage,
    #rk-pipe-guide .rk-pipe-result {
      padding: 18px;
    }

    #rk-pipe-guide .rk-pipe-tool-actions {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-pipe-guide .rk-pipe-primary-button,
    #rk-pipe-guide .rk-pipe-secondary-button,
    #rk-pipe-guide .rk-pipe-cta-button {
      text-align: center;
      width: 100%;
    }

    #rk-pipe-guide .rk-pipe-table-wrap {
      overflow: visible;
    }

    #rk-pipe-guide table,
    #rk-pipe-guide thead,
    #rk-pipe-guide tbody,
    #rk-pipe-guide tr,
    #rk-pipe-guide th,
    #rk-pipe-guide td {
      display: block;
      min-width: 0;
      width: 100%;
    }

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

    #rk-pipe-guide tbody {
      display: grid;
      gap: 14px;
    }

    #rk-pipe-guide tbody tr {
      background: #ffffff;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      overflow: hidden;
    }

    #rk-pipe-guide td,
    #rk-pipe-guide tbody tr td:first-child,
    #rk-pipe-guide tbody tr td:last-child {
      border: 0;
      border-bottom: 1px solid #e1ebef;
      border-radius: 0;
      padding: 13px 15px;
    }

    #rk-pipe-guide td:last-child {
      border-bottom: 0;
    }

    #rk-pipe-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-pipe-guide .rk-pipe-author-main {
      padding: 25px 20px;
    }

    #rk-pipe-guide .rk-pipe-chart-card {
      padding: 14px;
    }
  }

  @media (max-width: 430px) {
    #rk-pipe-guide .rk-pipe-hero,
    #rk-pipe-guide .rk-pipe-section,
    #rk-pipe-guide .rk-pipe-author {
      padding-left: 18px;
      padding-right: 18px;
    }

    #rk-pipe-guide .rk-pipe-hero::before {
      left: 18px;
    }

    #rk-pipe-guide .rk-pipe-shortcuts {
      padding-left: 14px;
      padding-right: 14px;
    }

    #rk-pipe-guide .rk-pipe-shortcuts a {
      flex: 1 1 calc(50% - 9px);
      text-align: center;
    }

    #rk-pipe-guide .rk-pipe-shortcuts-label {
      flex: 1 0 100%;
    }

    #rk-pipe-guide .rk-pipe-hero-title {
      font-size: 2.25rem;
    }

    #rk-pipe-guide .rk-pipe-section-title {
      font-size: 1.9rem;
    }
  }

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

<article id="rk-pipe-guide" aria-labelledby="rk-pipe-visual-title">
  <div class="rk-pipe-shell">
    <header class="rk-pipe-hero">
      <span class="rk-pipe-kicker">Podłogówka kontra grzejniki · aktualizacja techniczna 2026</span>
      <div class="rk-pipe-hero-title" id="rk-pipe-visual-title">Ogrzewanie podłogowe czy grzejniki? <span>Porównaj cały system, nie jedną temperaturę</span></div>
      <p class="rk-pipe-hero-lead">Podłogówka często ułatwia niskotemperaturową pracę źródła ciepła, lecz nie obniża automatycznie zapotrzebowania budynku. Ten poradnik oddziela moc, energię, sprawność źródła i koszt inwestycji, a kalkulator pokazuje wynik dla Twoich założeń.</p>
      <div class="rk-pipe-hero-tags" aria-label="Zakres poradnika">
        <span>35/30°C i 55/45°C</span>
        <span>koszt inwestycji</span>
        <span>energia i eksploatacja</span>
        <span>wykres 5–20 lat</span>
        <span>analizator decyzji</span>
      </div>
      <div class="rk-pipe-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 26 minut</strong></span>
        <span>Aktualizacja techniczna: <strong>14 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-pipe-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-pipe-shortcuts-label">Na skróty</span>
      <a href="#rk-pipe-answer">Szybka odpowiedź</a>
      <a href="#rk-pipe-basis">Co porównujemy</a>
      <a href="#rk-pipe-temperatures">35°C i 55°C</a>
      <a href="#rk-pipe-calculator-section">Kalkulator kosztów</a>
      <a href="#rk-pipe-comfort">Komfort</a>
      <a href="#rk-pipe-dynamics">Bezwładność</a>
      <a href="#rk-pipe-source">Źródło ciepła</a>
      <a href="#rk-pipe-building">Nowy dom i remont</a>
      <a href="#rk-pipe-surfaces">Posadzki i meble</a>
      <a href="#rk-pipe-hydraulics">Hydraulika</a>
      <a href="#rk-pipe-analyzer-section">Analizator decyzji</a>
      <a href="#rk-pipe-mixed">Układ mieszany</a>
      <a href="#rk-pipe-comparison-table">Tabela porównawcza</a>
      <a href="#rk-pipe-errors">Mity i błędy</a>
      <a href="#rk-pipe-data">Dane do projektu</a>
      <a href="#rk-pipe-final">Wniosek</a>
      <a href="#rk-pipe-sources">Źródła</a>
      <a href="#rk-pipe-faq">FAQ</a>
      <a href="#rk-pipe-author">Autor</a>
    </nav>

    <section class="rk-pipe-section" id="rk-pipe-answer">
      <span class="rk-pipe-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-pipe-section-title">Czy ogrzewanie podłogowe jest lepsze od grzejników?</h2>
      <p class="rk-pipe-lead"><strong>W nowym, dobrze izolowanym domu z pompą ciepła podłogówka często daje mocny zestaw korzyści:</strong> niską temperaturę zasilania, równomierne wykorzystanie dużej powierzchni, swobodę aranżacji ścian i stabilną pracę. Nie oznacza to jednak, że zawsze będzie tańsza ani że każdy grzejnik wymaga 55–70°C.</p>
      <div class="rk-pipe-answer">
        <strong>Uczciwa odpowiedź zależy od obciążenia cieplnego pomieszczeń, parametrów odbiorników, sprawności źródła oraz pełnego kosztu wykonania.</strong>
        <p>Grzejnik oddaje ciepło również przy 35–45°C, ale jego moc spada wraz ze zmniejszeniem różnicy między średnią temperaturą wody a temperaturą pomieszczenia. Może więc wymagać większej powierzchni. Podłogówka z kolei musi mieć wystarczającą powierzchnię czynną i właściwą konstrukcję podłogi.</p>
      </div>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-icon">1</span><h3>Ten sam budynek</h3><p>Oba warianty porównujemy przy tej samej temperaturze wewnętrznej i tej samej ilości ciepła potrzebnej do ogrzania domu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">2</span><h3>Różna dystrybucja</h3><p>Zmienia się powierzchnia emitera, temperatura wody, dynamika, hydraulika oraz sposób przekazywania ciepła do pomieszczenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">3</span><h3>Różny wynik finansowy</h3><p>Koszt zależy od inwestycji, sprawności sezonowej źródła, energii pomocniczej, serwisu i czasu analizy.</p></article>
      </div>
      <p class="rk-pipe-copy">Jeżeli najpierw chcesz poznać zasadę działania instalacji, zobacz <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak działa ogrzewanie podłogowe</a>. Osobno omawiam również <a href="https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/">wady wodnego ogrzewania podłogowego</a>, których nie należy pomijać przy porównaniu.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-basis">
      <span class="rk-pipe-eyebrow">Jedna podstawa porównania</span>
      <h2 class="rk-pipe-section-title">Moc, energia, sprawność i koszt to cztery różne wyniki</h2>
      <p class="rk-pipe-lead">Najczęstszy błąd polega na mieszaniu projektowej mocy w kW z roczną energią w kWh oraz z rachunkiem w złotych. Zmiana odbiornika nie zmienia automatycznie strat ciepła budynku.</p>
      <div class="rk-pipe-grid-4">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">kW</span><h3>Moc projektowa</h3><p>Ile ciepła trzeba dostarczyć w obliczeniowych warunkach zimowych. Służy do doboru źródła i odbiorników.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">kWh</span><h3>Energia użytkowa</h3><p>Ile ciepła budynek potrzebuje w całym roku. To wspólna baza kalkulatora dla obu wariantów.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">SCOP / η</span><h3>Sprawność sezonowa</h3><p>Określa, ile energii trzeba kupić, aby dostarczyć wymaganą energię użytkową.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">zł</span><h3>Koszt całkowity</h3><p>Obejmuje wykonanie, energię, serwis, energię pomocniczą oraz wybrany horyzont czasu.</p></article>
      </div>
      <div class="rk-pipe-formula">energia kupiona = energia użytkowa ÷ SCOP lub sprawność sezonowa</div>
      <div class="rk-pipe-formula">koszt całkowity = inwestycja + suma kosztów eksploatacji w analizowanym okresie</div>
      <p class="rk-pipe-copy">Projektowa moc wynika z obliczeń pomieszczenie po pomieszczeniu. Wyjaśniają to poradniki o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a> oraz o <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilansie cieplnym budynku</a>.</p>
      <div class="rk-pipe-note rk-pipe-note-bad"><p><strong>Nie licz rocznego kosztu przez pomnożenie mocy źródła przez liczbę godzin sezonu.</strong> Moc projektowa opisuje warunek obliczeniowy, a nie stałe obciążenie przez całą zimę.</p></div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-temperatures">
      <span class="rk-pipe-eyebrow">Przykład, nie uniwersalna reguła</span>
      <h2 class="rk-pipe-section-title">Podłogówka 35/30°C i grzejniki 55/45°C — co naprawdę pokazują te liczby?</h2>
      <p class="rk-pipe-lead">Takie parametry są użytecznym scenariuszem porównawczym, szczególnie przy pompie ciepła. Nie są jednak definicją obu instalacji. Temperatura potrzebna w konkretnym domu wynika z wymaganej mocy i wielkości odbiornika.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Scenariusz</th><th>Parametry startowe</th><th>Co trzeba potwierdzić</th><th>Najważniejsze zastrzeżenie</th></tr></thead>
          <tbody>
            <tr><td data-label="Scenariusz"><strong>Podłogówka niskotemperaturowa</strong></td><td data-label="Parametry startowe">35/30°C</td><td data-label="Co trzeba potwierdzić">Moc podłogi przy danym rozstawie, okładzinie i powierzchni czynnej.</td><td data-label="Zastrzeżenie">Nie każde pomieszczenie pokryje obciążenie przy 35°C.</td></tr>
            <tr><td data-label="Scenariusz"><strong>Grzejniki niskotemperaturowe</strong></td><td data-label="Parametry startowe">45/35°C</td><td data-label="Co trzeba potwierdzić">Moc konkretnego grzejnika po korekcie względem warunków katalogowych.</td><td data-label="Zastrzeżenie">Może być potrzebny większy grzejnik lub kilka odbiorników.</td></tr>
            <tr><td data-label="Scenariusz"><strong>Grzejniki o wyższym parametrze</strong></td><td data-label="Parametry startowe">55/45°C</td><td data-label="Co trzeba potwierdzić">Sprawność źródła przy tej temperaturze i moc odbiorników w mrozie.</td><td data-label="Zastrzeżenie">55°C nie jest temperaturą, od której grzejnik dopiero „zaczyna grzać”.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-pipe-note rk-pipe-note-good"><p><strong>Najważniejsza przewaga podłogówki:</strong> duża powierzchnia może przekazać wymaganą moc przy małej różnicy temperatur. To często pomaga pompie ciepła, ale wynik trzeba potwierdzić obliczeniami dla każdego pomieszczenia.</p></div>
      <p class="rk-pipe-copy">Zależność temperatury zasilania od konstrukcji podłogi opisuję szerzej w poradniku o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>. Przy pompie ciepła warto dodatkowo sprawdzić, co rzeczywiście oznacza <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niskotemperaturowa praca instalacji</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-dark" id="rk-pipe-calculator-section">
      <span class="rk-pipe-eyebrow">Główne narzędzie artykułu</span>
      <h2 class="rk-pipe-section-title">Kalkulator kosztów: podłogówka czy grzejniki?</h2>
      <p class="rk-pipe-lead">Porównaj dwa sposoby przekazania tej samej ilości ciepła do tego samego budynku. Kalkulator nie zakłada automatycznej oszczędności wynikającej z temperatury wody — używa podanego przez Ciebie SCOP albo sprawności sezonowej.</p>

      <div class="rk-pipe-calculator" id="rk-pipe-calculator">
        <div class="rk-pipe-tool-head">
          <h3>Pełny koszt inwestycji i eksploatacji</h3>
          <p>Wartości startowe są wyłącznie jawnym przykładem. Zastąp je danymi z OZC, ofert, dokumentacji źródła i własnych taryf.</p>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">1</span><div><h4>Wspólne dane budynku i energii</h4><p>Ta sama energia użytkowa jest dostarczana przez oba warianty.</p></div></div>
          <div class="rk-pipe-fields rk-pipe-fields-3">
            <label class="rk-pipe-field"><span>Roczna energia użytkowa na ogrzewanie [kWh/rok]</span><input id="rk-compare-useful" type="number" min="500" max="100000" step="100" value="12000" inputmode="decimal"><small>Nie wpisuj mocy źródła w kW ani całego zużycia prądu w domu.</small></label>
            <label class="rk-pipe-field"><span>Wspólne źródło ciepła</span><select id="rk-compare-source"><option value="heatpump" selected="">Pompa ciepła</option><option value="gas">Kocioł gazowy kondensacyjny</option><option value="electric">Ogrzewanie elektryczne oporowe</option></select><small>To samo źródło pozwala ocenić wpływ odbiorników. Zmiana źródła tworzy porównanie całych systemów.</small></label>
            <label class="rk-pipe-field"><span id="rk-compare-price-label">Cena energii elektrycznej [zł/kWh]</span><input id="rk-compare-price" type="number" min="0.01" max="10" step="0.01" value="1.10" inputmode="decimal"><small>Wpisz łączny koszt zmienny jednej kWh kupowanej energii.</small></label>
            <label class="rk-pipe-field"><span>Cena prądu dla pomp i automatyki [zł/kWh]</span><input id="rk-compare-aux-price" type="number" min="0.01" max="10" step="0.01" value="1.10" inputmode="decimal"><small>Osobne pole ma znaczenie przede wszystkim przy paliwie gazowym.</small></label>
            <label class="rk-pipe-field"><span>Horyzont porównania</span><select id="rk-compare-horizon"><option value="5">5 lat</option><option value="10">10 lat</option><option value="15" selected="">15 lat</option><option value="20">20 lat</option></select><small>Wynik nie uwzględnia wartości pieniądza w czasie ani finansowania.</small></label>
            <label class="rk-pipe-field"><span>Scenariusz ceny energii</span><select id="rk-compare-scenario"><option value="0.8">Cena niższa o 20%</option><option value="1" selected="">Cena bazowa</option><option value="1.2">Cena wyższa o 20%</option></select><small>Zmiana jest stała dla całego okresu i służy analizie wrażliwości.</small></label>
          </div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">2</span><div><h4>Temperatury oraz sprawność sezonowa</h4><p>Temperatura opisuje scenariusz. Koszt wynika z rzeczywistego SCOP albo sprawności, a nie z arbitralnego procentu za każdy stopień.</p></div></div>
          <div class="rk-pipe-fields rk-pipe-fields-3">
            <label class="rk-pipe-field"><span>Podłogówka — zasilanie [°C]</span><input id="rk-compare-floor-supply" type="number" min="20" max="70" step="1" value="35" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Podłogówka — powrót [°C]</span><input id="rk-compare-floor-return" type="number" min="15" max="65" step="1" value="30" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span id="rk-compare-floor-eff-label">Podłogówka — SCOP</span><input id="rk-compare-floor-eff" type="number" min="0.1" max="10" step="0.05" value="4.20" inputmode="decimal"><small>Wstaw wartość dla odpowiadającej temperatury pracy całego systemu.</small></label>
            <label class="rk-pipe-field"><span>Grzejniki — zasilanie [°C]</span><input id="rk-compare-rad-supply" type="number" min="20" max="90" step="1" value="55" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Grzejniki — powrót [°C]</span><input id="rk-compare-rad-return" type="number" min="15" max="80" step="1" value="45" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span id="rk-compare-rad-eff-label">Grzejniki — SCOP</span><input id="rk-compare-rad-eff" type="number" min="0.1" max="10" step="0.05" value="3.20" inputmode="decimal"><small>Nie przepisuj wartości dla 35°C do wariantu pracującego przy 55°C.</small></label>
          </div>
          <div class="rk-pipe-note" id="rk-compare-temperature-note"><p><strong>Kontrola założenia:</strong> kalkulator nie sprawdza mocy odbiorników. Przed przyjęciem SCOP potwierdź, że podłoga albo grzejniki rzeczywiście pokryją obciążenie pomieszczeń przy wpisanych parametrach.</p></div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">3</span><div><h4>Koszt wykonania obu wariantów</h4><p>Wpisuj tylko koszty różniące warianty albo stosuj tę samą wartość dla elementów wspólnych.</p></div></div>
          <div class="rk-pipe-table-wrap">
            <table>
              <thead><tr><th>Składnik inwestycji</th><th>Podłogówka [zł]</th><th>Grzejniki [zł]</th><th>Co uwzględnić</th></tr></thead>
              <tbody>
                <tr><td data-label="Składnik"><strong>Projekt i obliczenia</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Projekt podłogówki</span><input id="rk-compare-floor-design" type="number" min="0" max="500000" step="100" value="1800" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Projekt grzejników</span><input id="rk-compare-rad-design" type="number" min="0" max="500000" step="100" value="1200" inputmode="decimal"></label></td><td data-label="Zakres">OZC, dobór odbiorników, hydraulika i dokumentacja.</td></tr>
                <tr><td data-label="Składnik"><strong>Odbiorniki, rury i armatura</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Materiały podłogówki</span><input id="rk-compare-floor-material" type="number" min="0" max="500000" step="100" value="22000" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Materiały grzejnikowe</span><input id="rk-compare-rad-material" type="number" min="0" max="500000" step="100" value="16000" inputmode="decimal"></label></td><td data-label="Zakres">Pętle i rozdzielacze albo grzejniki, zawory i przewody.</td></tr>
                <tr><td data-label="Składnik"><strong>Robocizna i uruchomienie</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Robocizna podłogówki</span><input id="rk-compare-floor-labour" type="number" min="0" max="500000" step="100" value="11000" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Robocizna grzejników</span><input id="rk-compare-rad-labour" type="number" min="0" max="500000" step="100" value="9000" inputmode="decimal"></label></td><td data-label="Zakres">Montaż, próby, regulacja i dokumentacja odbiorowa.</td></tr>
                <tr><td data-label="Składnik"><strong>Prace budowlane i adaptacyjne</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Prace budowlane podłogówki</span><input id="rk-compare-floor-building" type="number" min="0" max="500000" step="100" value="5000" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Prace budowlane grzejników</span><input id="rk-compare-rad-building" type="number" min="0" max="500000" step="100" value="2500" inputmode="decimal"></label></td><td data-label="Zakres">Warstwy wynikające z instalacji, bruzdy, naprawy i przebudowy.</td></tr>
                <tr><td data-label="Składnik"><strong>Sterowanie i wyposażenie dodatkowe</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Sterowanie podłogówki</span><input id="rk-compare-floor-controls" type="number" min="0" max="500000" step="100" value="2500" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Sterowanie grzejników</span><input id="rk-compare-rad-controls" type="number" min="0" max="500000" step="100" value="2200" inputmode="decimal"></label></td><td data-label="Zakres">Siłowniki, głowice, regulatory i elementy wymagane przez źródło.</td></tr>
              </tbody>
            </table>
          </div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">4</span><div><h4>Koszty roczne poza energią źródła</h4><p>Oddziel serwis od energii pomocniczej pomp obiegowych i automatyki.</p></div></div>
          <div class="rk-pipe-fields">
            <label class="rk-pipe-field"><span>Podłogówka — serwis i koszty stałe [zł/rok]</span><input id="rk-compare-floor-service" type="number" min="0" max="50000" step="10" value="500" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Grzejniki — serwis i koszty stałe [zł/rok]</span><input id="rk-compare-rad-service" type="number" min="0" max="50000" step="10" value="450" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Podłogówka — energia pomocnicza [kWh/rok]</span><input id="rk-compare-floor-aux" type="number" min="0" max="10000" step="10" value="180" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Grzejniki — energia pomocnicza [kWh/rok]</span><input id="rk-compare-rad-aux" type="number" min="0" max="10000" step="10" value="120" inputmode="decimal"></label>
          </div>
        </div>

        <div class="rk-pipe-tool-actions">
          <button class="rk-pipe-primary-button" id="rk-compare-run" type="button">Przelicz porównanie</button>
          <button class="rk-pipe-secondary-button" id="rk-compare-reset" type="button">Przywróć przykład</button>
        </div>

        <div class="rk-pipe-result is-good" id="rk-compare-result" aria-live="polite">
          <p class="rk-pipe-result-status" id="rk-compare-status">Wynik dla 15 lat i ceny bazowej</p>
          <p class="rk-pipe-result-intro" id="rk-compare-intro">Oba warianty dostarczają do budynku 12 000 kWh ciepła użytkowego rocznie.</p>

          <div class="rk-pipe-metric-grid">
            <div class="rk-pipe-metric is-floor"><span>Podłogówka — energia kupiona</span><strong id="rk-result-floor-energy">2 857 kWh/rok</strong></div>
            <div class="rk-pipe-metric is-radiator"><span>Grzejniki — energia kupiona</span><strong id="rk-result-rad-energy">3 750 kWh/rok</strong></div>
            <div class="rk-pipe-metric is-floor"><span>Podłogówka — koszt roczny</span><strong id="rk-result-floor-annual">3 841 zł</strong></div>
            <div class="rk-pipe-metric is-radiator"><span>Grzejniki — koszt roczny</span><strong id="rk-result-rad-annual">4 707 zł</strong></div>
            <div class="rk-pipe-metric is-floor"><span>Podłogówka — inwestycja</span><strong id="rk-result-floor-invest">42 300 zł</strong></div>
            <div class="rk-pipe-metric is-radiator"><span>Grzejniki — inwestycja</span><strong id="rk-result-rad-invest">30 900 zł</strong></div>
            <div class="rk-pipe-metric is-floor"><span>Podłogówka — koszt całkowity</span><strong id="rk-result-floor-tco">99 913 zł</strong></div>
            <div class="rk-pipe-metric is-radiator"><span>Grzejniki — koszt całkowity</span><strong id="rk-result-rad-tco">101 505 zł</strong></div>
          </div>

          <div class="rk-pipe-result-callout"><strong id="rk-result-verdict">W przykładzie podłogówka jest po 15 latach tańsza łącznie o 1 592 zł.</strong> <span id="rk-result-payback">Wyższy koszt początkowy zwraca się po około 13,2 roku.</span></div>
          <p class="rk-pipe-disclaimer" id="rk-result-assumptions">Model przyjmuje stałą roczną energię użytkową, stałe ceny w obrębie wybranego scenariusza i nie uwzględnia finansowania, inflacji, dyskonta, wymiany urządzeń ani przygotowania ciepłej wody użytkowej.</p>

          <div class="rk-pipe-chart-card">
            <div class="rk-pipe-chart-head">
              <div><h4>Skumulowany koszt systemów</h4><p>Inwestycja w roku 0 oraz niezmienny koszt roczny według wybranego scenariusza.</p></div>
              <div class="rk-pipe-chart-legend" aria-label="Legenda wykresu"><span><i class="is-floor"></i>Podłogówka</span><span><i class="is-radiator"></i>Grzejniki</span></div>
            </div>
            <svg class="rk-pipe-chart-svg" id="rk-compare-chart" viewBox="0 0 800 360" role="img" aria-labelledby="rk-compare-chart-title rk-compare-chart-desc">
              <title id="rk-compare-chart-title">Porównanie skumulowanego kosztu podłogówki i grzejników</title>
              <desc id="rk-compare-chart-desc">Wykres jest aktualizowany na podstawie danych kalkulatora. Dokładne wartości pokazuje tabela pod wykresem.</desc>
              <g id="rk-compare-chart-grid"></g>
              <g id="rk-compare-chart-lines"></g>
              <g id="rk-compare-chart-labels"></g>
            </svg>
            <div class="rk-pipe-table-wrap rk-pipe-chart-table">
              <table>
                <thead><tr><th>Rok</th><th>Podłogówka — koszt skumulowany</th><th>Grzejniki — koszt skumulowany</th><th>Różnica</th></tr></thead>
                <tbody>
                  <tr><td data-label="Rok"><strong>0</strong></td><td data-label="Podłogówka" id="rk-chart-floor-0">42 300 zł</td><td data-label="Grzejniki" id="rk-chart-rad-0">30 900 zł</td><td data-label="Różnica" id="rk-chart-diff-0">+11 400 zł</td></tr>
                  <tr><td data-label="Rok"><strong>5</strong></td><td data-label="Podłogówka" id="rk-chart-floor-5">61 504 zł</td><td data-label="Grzejniki" id="rk-chart-rad-5">54 435 zł</td><td data-label="Różnica" id="rk-chart-diff-5">+7 069 zł</td></tr>
                  <tr><td data-label="Rok"><strong>10</strong></td><td data-label="Podłogówka" id="rk-chart-floor-10">80 709 zł</td><td data-label="Grzejniki" id="rk-chart-rad-10">77 970 zł</td><td data-label="Różnica" id="rk-chart-diff-10">+2 739 zł</td></tr>
                  <tr><td data-label="Rok"><strong>15</strong></td><td data-label="Podłogówka" id="rk-chart-floor-15">99 913 zł</td><td data-label="Grzejniki" id="rk-chart-rad-15">101 505 zł</td><td data-label="Różnica" id="rk-chart-diff-15">−1 592 zł</td></tr>
                  <tr><td data-label="Rok"><strong>20</strong></td><td data-label="Podłogówka" id="rk-chart-floor-20">119 117 zł</td><td data-label="Grzejniki" id="rk-chart-rad-20">125 040 zł</td><td data-label="Różnica" id="rk-chart-diff-20">−5 923 zł</td></tr>
                </tbody>
              </table>
            </div>
          </div>
        </div>
      </div>

      <p class="rk-pipe-copy"><strong>Jak użyć kalkulatora odpowiedzialnie?</strong> Dla pompy ciepła wpisz SCOP oszacowany dla konkretnego klimatu, temperatury zasilania i udziału ogrzewania pomieszczeń. Dla kotła wpisz sprawność sezonową, a nie sprawność maksymalną z pojedynczego punktu. Przy ogrzewaniu oporowym temperatura odbiornika sama nie poprawia współczynnika konwersji energii elektrycznej na ciepło.</p>

      <aside class="rk-pipe-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
        <div class="rk-pipe-cta-title">Kalkulator porównał koszt budynku. Nie sprawdził jeszcze mocy każdej podłogi</div>
        <p>Założenie 35/30°C ma sens tylko wtedy, gdy czynna powierzchnia, rozstaw rur, opór okładziny i dopuszczalna temperatura powierzchni pozwalają pokryć obciążenie każdego pomieszczenia. Projekt musi dodatkowo określić długości pętli, przepływy, opory i nastawy rozdzielacza.</p>
        <a class="rk-pipe-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres indywidualnego projektu podłogówki</a>
        <small class="rk-pipe-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-comfort">
      <span class="rk-pipe-eyebrow">Komfort bez marketingowych skrótów</span>
      <h2 class="rk-pipe-section-title">Promieniowanie, konwekcja i odczuwalna temperatura</h2>
      <p class="rk-pipe-lead">Podłoga i grzejnik przekazują ciepło przez promieniowanie oraz konwekcję, tylko w innych proporcjach i z innego miejsca. Duża, umiarkowanie ciepła powierzchnia podłogi może poprawić równomierność warunków, ale nie „wyłącza” ruchu powietrza ani nie gwarantuje identycznego komfortu każdej osobie.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">P</span><h3>Duża powierzchnia</h3><p>Podłogówka oddaje jednostkowo mniej ciepła z metra powierzchni niż mały, gorętszy odbiornik, lecz wykorzystuje znaczną część pomieszczenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">G</span><h3>Lokalny odbiornik</h3><p>Grzejnik tworzy bardziej skoncentrowane źródło ciepła. Ustawiony pod oknem może ograniczać odczucie chłodu związane z zimną powierzchnią przeszklenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">C</span><h3>Komfort jest wynikiem całości</h3><p>Liczą się temperatury powierzchni, prędkość powietrza, asymetria promieniowania, wilgotność, ubranie i aktywność użytkownika.</p></article>
      </div>
      <div class="rk-pipe-note"><p><strong>Nie używamy argumentu „podłogówka eliminuje kurz”.</strong> Rodzaj ogrzewania może wpływać na ruch powietrza i rozkład temperatur, ale stężenie pyłów zależy również od wentylacji, filtracji, sprzątania, szczelności budynku i źródeł zanieczyszczeń.</p></div>
      <p class="rk-pipe-copy">Osobny poradnik analizuje, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-zdrowe/">czy ogrzewanie podłogowe jest zdrowe</a>, bez sprowadzania zagadnienia do jednego hasła o konwekcji. Komfort nie zwalnia także z przestrzegania ograniczeń temperatury powierzchni wynikających z projektu systemu.</p>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-dynamics">
      <span class="rk-pipe-eyebrow">Stabilność kontra szybka reakcja</span>
      <h2 class="rk-pipe-section-title">Bezwładność podłogówki może być zaletą albo ograniczeniem</h2>
      <p class="rk-pipe-lead">Czas reakcji nie wynika wyłącznie z nazwy odbiornika. Wpływają na niego masa i grubość jastrychu, sposób zabudowy rury, opór wykończenia, moc chwilowa, sterowanie oraz charakter budynku.</p>
      <div class="rk-pipe-grid-2">
        <article class="rk-pipe-card">
          <span class="rk-pipe-card-number">PODŁOGA</span>
          <h3>Stabilna praca przy małych korektach</h3>
          <ul class="rk-pipe-bullets"><li>dobrze współpracuje z ciągłą regulacją pogodową,</li><li>wolniej reaguje na duże obniżenia i gwałtowne zyski słoneczne,</li><li>system suchy może reagować szybciej niż ciężki jastrych mokry,</li><li>agresywne sterowanie ON/OFF nie zawsze wykorzystuje jej charakter.</li></ul>
        </article>
        <article class="rk-pipe-card">
          <span class="rk-pipe-card-number">GRZEJNIK</span>
          <h3>Szybsza zmiana oddawanej mocy</h3>
          <ul class="rk-pipe-bullets"><li>łatwiej ogranicza moc po nagłym wzroście temperatury,</li><li>może lepiej pasować do pomieszczeń używanych okresowo,</li><li>szybka reakcja nie naprawia przewymiarowanego źródła,</li><li>sterowanie również wymaga prawidłowej krzywej i równoważenia.</li></ul>
        </article>
      </div>
      <p class="rk-pipe-copy">Więcej o mechanizmie magazynowania ciepła wyjaśnia artykuł <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">czym jest bezwładność cieplna podłogówki</a>. W praktyce sposób sterowania warto dobrać do konstrukcji, dlatego nie każde <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe ogrzewaniem</a> daje ten sam efekt.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-source">
      <span class="rk-pipe-eyebrow">Odbiornik pracuje ze źródłem</span>
      <h2 class="rk-pipe-section-title">Pompa ciepła, kocioł kondensacyjny i prąd — gdzie temperatura ma znaczenie?</h2>
      <p class="rk-pipe-lead">Niższa temperatura wody może poprawiać warunki pracy pompy ciepła oraz sprzyjać kondensacji w odpowiednio eksploatowanym kotle. Nie wolno jednak przypisywać każdemu obniżeniu temperatury jednego stałego procentu oszczędności.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Źródło</th><th>Znaczenie temperatury odbiorników</th><th>Co wpisać do kalkulatora</th><th>Na co uważać</th></tr></thead>
          <tbody>
            <tr><td data-label="Źródło"><strong>Pompa ciepła</strong></td><td data-label="Znaczenie">Niższa wymagana temperatura zasilania zwykle ułatwia osiągnięcie wyższej efektywności.</td><td data-label="Do kalkulatora">SCOP dla całego sezonu i danego scenariusza instalacji.</td><td data-label="Uwaga">Nie zastępuj SCOP pojedynczym COP z warunków katalogowych.</td></tr>
            <tr><td data-label="Źródło"><strong>Kocioł kondensacyjny</strong></td><td data-label="Znaczenie">Niższa temperatura powrotu może sprzyjać pracy kondensacyjnej.</td><td data-label="Do kalkulatora">Sprawność sezonową obu wariantów i cenę jednej kWh paliwa.</td><td data-label="Uwaga">Uwzględnij koszty stałe, kominowe i serwisowe.</td></tr>
            <tr><td data-label="Źródło"><strong>Energia elektryczna oporowa</strong></td><td data-label="Znaczenie">Temperatura odbiornika nie tworzy efektu podobnego do SCOP pompy ciepła.</td><td data-label="Do kalkulatora">Współczynnik około 1,00 oraz rzeczywistą cenę energii.</td><td data-label="Uwaga">Różnice mogą wynikać z regulacji i komfortu, nie z „COP podłogi”.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-pipe-copy">Wariant pompy ciepła z różnymi odbiornikami omawia poradnik <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">pompa ciepła, podłogówka i grzejniki</a>. Jeżeli system ma być od początku niskotemperaturowy, zobacz także <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>.</p>
      <div class="rk-pipe-note rk-pipe-note-bad"><p><strong>Wysoka temperatura zasilania nie powoduje sama w sobie taktowania pompy ciepła.</strong> Taktowanie wiąże się między innymi z relacją mocy minimalnej źródła do bieżącego obciążenia, pojemnością i przepływem instalacji, sterowaniem oraz strefami odcinającymi odbiór ciepła.</p></div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-building">
      <span class="rk-pipe-eyebrow">Inny wynik na budowie i podczas modernizacji</span>
      <h2 class="rk-pipe-section-title">Nowy dom czy remont? Koszt podłogówki trzeba liczyć inaczej</h2>
      <p class="rk-pipe-lead">W nowym budynku warstwy podłogi, wysokości i rozdzielacze można zaplanować przed wykonaniem instalacji. W remoncie o wyniku często decydują koszty demontażu, podniesienia posadzki, drzwi, schodów i odtworzenia wykończenia.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">NOWY</span><h3>Planowanie od zera</h3><p>Łatwiej skoordynować izolację, jastrych, dylatacje, rozdzielacze i poziomy gotowych podłóg. Porównuj koszty różnicowe, nie wszystkie warstwy budynku.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">REMONT</span><h3>Koszt prac towarzyszących</h3><p>Do instalacji mogą dojść rozbiórki i odtworzenie podłóg. Czasem rozsądniejszy jest system suchy, frezowanie albo grzejniki niskotemperaturowe.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">ISTNIEJĄCE</span><h3>Najpierw pomiar i OZC</h3><p>Przed wymianą sprawdź moc obecnych grzejników przy nowej temperaturze, rzeczywiste straty i stan przewodów. Sama powierzchnia domu nie wystarcza.</p></article>
      </div>
      <p class="rk-pipe-copy">Warunki modernizacji opisuje poradnik <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">ogrzewanie podłogowe w remontowanym budynku — czy warto</a>. Przy ograniczonej wysokości pomocne jest porównanie <a href="https://projekt-ogrzewania.pl/system-mokry-czy-suchy-w-wodnym-ogrzewaniu-podlogowym-ktory-wybrac/">systemu mokrego i suchego</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-surfaces">
      <span class="rk-pipe-eyebrow">Podłoga jest częścią grzejnika</span>
      <h2 class="rk-pipe-section-title">Okładzina, podkład, dywan i stała zabudowa zmieniają dostępną moc</h2>
      <p class="rk-pipe-lead">W podłogówce nie wystarczy znać powierzchni całego pokoju. Liczy się powierzchnia czynna oraz opór kompletu warstw znajdujących się nad systemem grzewczym.</p>
      <div class="rk-pipe-grid-4">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">R</span><h3>Opór wykończenia</h3><p>Dodaj opór okładziny i podkładu zgodnie z dokumentacją. Wysoki opór zmniejsza moc przy tych samych parametrach wody.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">A</span><h3>Powierzchnia czynna</h3><p>Stała zabudowa kuchenna, wanna czy duże elementy techniczne mogą ograniczać obszar, który realnie ogrzewa pomieszczenie.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">T</span><h3>Temperatura powierzchni</h3><p>Nie można bez końca kompensować małej powierzchni przez podnoszenie temperatury. Obowiązują kryteria komfortu i ograniczenia materiałów.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">VA</span><h3>Rozstaw rur</h3><p>Gęstszy rozstaw może poprawić równomierność i moc, ale musi zostać powiązany z długością pętli, przepływem oraz konstrukcją podłogi.</p></article>
      </div>
      <p class="rk-pipe-copy">Przed wyborem posadzki sprawdź <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny R podłogi</a> oraz wpływ <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">rodzaju okładziny na wydajność</a>. Osobny poradnik pokazuje, jak połączyć <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">wodną podłogówkę z układem mebli</a>.</p>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-hydraulics">
      <span class="rk-pipe-eyebrow">Przepływ nie jest rachunkiem za ogrzewanie</span>
      <h2 class="rk-pipe-section-title">Podłogówka i grzejniki mają inną hydraulikę, ale nie wolno jej upraszczać do jednej liczby</h2>
      <p class="rk-pipe-lead">Dla tej samej mocy mniejsza różnica temperatur między zasilaniem a powrotem wymaga większego przepływu. Nie oznacza to automatycznie wyższego zużycia prądu przez pompę — potrzebny jest jeszcze opór drogi krytycznej i punkt pracy pompy.</p>
      <div class="rk-pipe-formula">przepływ objętościowy ≈ moc ÷ (pojemność cieplna wody × różnica temperatur)</div>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">V̇</span><h3>Przepływ</h3><p>Wynika z mocy przenoszonej przez obieg i przyjętego spadku temperatury. Ustawia się go między innymi na rotametrach w l/min.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">Δp</span><h3>Spadek ciśnienia</h3><p>Zależy od długości, średnicy, przepływu, armatury i medium. Nie jest jednostką nastawy wskazywanej przez rotametr.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">P</span><h3>Praca pompy</h3><p>Pompa obsługuje sumę wymaganych przepływów oraz opór najbardziej niekorzystnej czynnej drogi, a nie sumę oporów wszystkich pętli.</p></article>
      </div>
      <p class="rk-pipe-copy">W praktyce potrzebne są prawidłowo dobrany <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz podłogówki</a>, właściwa <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> i regulacja przepływów. Zasady odczytu omawia artykuł o <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrze na rozdzielaczu</a>.</p>
      <div class="rk-pipe-note rk-pipe-note-bad"><p><strong>Brak grzejników nie gwarantuje mniejszego oporu instalacji.</strong> Kilkanaście długich pętli o małej średnicy może tworzyć wymagającą hydraulikę. Wynik zależy od projektu, nie od samej nazwy systemu.</p></div>
    </section>

    <section class="rk-pipe-section rk-pipe-section-dark" id="rk-pipe-analyzer-section">
      <span class="rk-pipe-eyebrow">Drugie narzędzie — decyzja, nie ranking</span>
      <h2 class="rk-pipe-section-title">Analizator: podłogówka, grzejniki czy układ mieszany?</h2>
      <p class="rk-pipe-lead">Koszt to tylko część decyzji. Odpowiedz na pytania o budynek, sposób użytkowania i dostępne dane. Analizator pokaże argumenty dla każdego wariantu oraz braki, które trzeba uzupełnić przed wyborem.</p>

      <div class="rk-pipe-analyzer" id="rk-pipe-analyzer">
        <div class="rk-pipe-tool-head">
          <h3>Sprawdź dopasowanie rozwiązania do budynku</h3>
          <p>Wynik nie jest projektem ani procentową oceną jakości. To uporządkowana lista przesłanek do dalszej weryfikacji.</p>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">1</span><div><h4>Budynek i możliwość montażu</h4><p>Najpierw oceń ograniczenia konstrukcyjne oraz dane cieplne.</p></div></div>
          <div class="rk-pipe-fields">
            <label class="rk-pipe-field"><span>Rodzaj inwestycji</span><select id="rk-decision-building"><option value="unknown">Nie ustalono</option><option value="new">Nowy budynek przed wykonaniem podłóg</option><option value="retrofit">Remont istniejącego domu</option><option value="partial">Remont częściowy</option></select></label>
            <label class="rk-pipe-field"><span>Dostępna wysokość i możliwość przebudowy podłogi</span><select id="rk-decision-height"><option value="unknown">Nie sprawdzono</option><option value="yes">Warstwy można zaprojektować od początku</option><option value="limited">Wysokość jest mocno ograniczona</option><option value="no">Nie można ingerować w podłogę</option></select></label>
            <label class="rk-pipe-field"><span>Obciążenie cieplne pomieszczeń</span><select id="rk-decision-ozc"><option value="unknown">Brak OZC pomieszczeń</option><option value="known">Jest policzone pomieszczenie po pomieszczeniu</option><option value="estimate">Jest tylko wskaźnik W/m² lub wynik całego domu</option></select></label>
            <label class="rk-pipe-field"><span>Czy podłoga pokrywa obciążenie przy planowanych parametrach?</span><select id="rk-decision-floor-power"><option value="unknown">Nie sprawdzono</option><option value="yes">Tak, potwierdzono obliczeniowo</option><option value="borderline">Tylko przy wartości granicznej / mały zapas</option><option value="no">Nie, brakuje mocy</option></select></label>
          </div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">2</span><div><h4>Źródło, wykończenie i sposób użytkowania</h4><p>Te odpowiedzi określają, gdzie dana cecha staje się zaletą, a gdzie ograniczeniem.</p></div></div>
          <div class="rk-pipe-fields">
            <label class="rk-pipe-field"><span>Planowane źródło ciepła</span><select id="rk-decision-source"><option value="unknown">Jeszcze nieustalone</option><option value="heatpump">Pompa ciepła</option><option value="condensing">Kocioł kondensacyjny</option><option value="other">Inne źródło</option></select></label>
            <label class="rk-pipe-field"><span>Opór okładziny i powierzchnia czynna</span><select id="rk-decision-surface"><option value="unknown">Nie sprawdzono</option><option value="favorable">Niski opór i wystarczająca powierzchnia</option><option value="limited">Wysoki opór lub dużo stałej zabudowy</option><option value="mixed">Warunki różnią się między pomieszczeniami</option></select></label>
            <label class="rk-pipe-field"><span>Charakter użytkowania</span><select id="rk-decision-use"><option value="unknown">Nie ustalono</option><option value="steady">Stała temperatura przez większość doby</option><option value="intermittent">Częste wyłączenia lub pomieszczenia okresowe</option><option value="mixed">Różny w poszczególnych pomieszczeniach</option></select></label>
            <label class="rk-pipe-field"><span>Znaczenie wolnych ścian i estetyki</span><select id="rk-decision-space"><option value="unknown">Bez wyraźnej preferencji</option><option value="important">Bardzo ważne</option><option value="neutral">Drugorzędne</option></select></label>
          </div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">3</span><div><h4>Możliwość zachowania lub powiększenia grzejników</h4><p>Przy modernizacji nie zakładaj od razu, że każdy istniejący grzejnik wymaga 55°C.</p></div></div>
          <div class="rk-pipe-fields">
            <label class="rk-pipe-field"><span>Moc grzejników przy obniżonych parametrach</span><select id="rk-decision-rad-power"><option value="unknown">Nie przeliczono</option><option value="yes">Pokrywają obciążenie przy niskiej temperaturze</option><option value="can-upsize">Można je rozsądnie powiększyć</option><option value="no">Nie pokrywają, a powiększenie jest trudne</option></select></label>
            <label class="rk-pipe-field"><span>Czy poszczególne pomieszczenia mają odmienne potrzeby?</span><select id="rk-decision-zones"><option value="unknown">Nie przeanalizowano</option><option value="same">Warunki są podobne</option><option value="different">Są łazienki, pokoje okresowe lub strefy o małej podłodze czynnej</option></select></label>
          </div>
        </div>

        <div class="rk-pipe-tool-actions">
          <button class="rk-pipe-primary-button" id="rk-decision-run" type="button">Przeanalizuj warianty</button>
          <button class="rk-pipe-secondary-button" id="rk-decision-reset" type="button">Wyczyść odpowiedzi</button>
        </div>

        <div class="rk-pipe-result" id="rk-decision-result" aria-live="polite">
          <p class="rk-pipe-result-status" id="rk-decision-status">Uzupełnij dane budynku</p>
          <p class="rk-pipe-result-intro" id="rk-decision-intro">Wynik rozdzieli argumenty za podłogówką, grzejnikami, układem mieszanym oraz dane wymagające sprawdzenia.</p>
          <div class="rk-pipe-decision-grid">
            <div class="rk-pipe-decision-column is-floor"><h4>Argumenty za podłogówką</h4><ul id="rk-decision-floor-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-pipe-decision-column is-radiator"><h4>Argumenty za grzejnikami</h4><ul id="rk-decision-rad-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-pipe-decision-column is-mixed"><h4>Argumenty za układem mieszanym</h4><ul id="rk-decision-mixed-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-pipe-decision-column is-missing"><h4>Dane do uzupełnienia</h4><ul id="rk-decision-missing-list"><li>Odpowiedz na pytania na podstawie projektu i warunków budynku.</li></ul></div>
          </div>
          <p class="rk-pipe-disclaimer">Analizator nie wyznacza mocy, temperatur, wielkości grzejników, rozstawu rur ani kosztu wykonania. Wynik jest listą przesłanek, a nie automatyczną rekomendacją zakupową.</p>
        </div>
      </div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-mixed">
      <span class="rk-pipe-eyebrow">Nie zawsze trzeba wybierać jeden odbiornik</span>
      <h2 class="rk-pipe-section-title">Kiedy warto połączyć podłogówkę z grzejnikami?</h2>
      <p class="rk-pipe-lead">Układ mieszany może być racjonalny, jeżeli różne pomieszczenia mają odmienne ograniczenia. Nie powinien jednak powstawać przez przypadkowe dołączenie dwóch obiegów o innych temperaturach i przepływach.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">01</span><h3>Łazienka lub suszenie</h3><p>Podłoga może zapewniać komfort, a dodatkowy odbiornik pokrywać chwilowe potrzeby albo umożliwiać suszenie ręczników.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">02</span><h3>Remont etapami</h3><p>Podłogówka może trafić do przebudowywanej części domu, podczas gdy sprawdzone grzejniki pozostają w pozostałych pomieszczeniach.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">03</span><h3>Ograniczona moc podłogi</h3><p>Przy dużych stratach, małej powierzchni czynnej albo wysokim oporze okładziny dodatkowy odbiornik może domknąć bilans.</p></article>
      </div>
      <div class="rk-pipe-note"><p><strong>Najprostszy układ to taki, w którym oba rodzaje odbiorników potrafią pracować na możliwie zbliżonym, niskim parametrze.</strong> Jeżeli wymagają różnych temperatur, projekt musi przewidzieć sposób ich wytworzenia, regulacji i równoważenia.</p></div>
      <p class="rk-pipe-copy">Możliwe konfiguracje oraz ich ograniczenia opisuje poradnik <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">czy ogrzewanie podłogowe można połączyć z grzejnikami</a>. Regulację temperatury wody porządkuje artykuł o <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-comparison-table">
      <span class="rk-pipe-eyebrow">Porównanie na wspólnej podstawie</span>
      <h2 class="rk-pipe-section-title">Podłogówka a grzejniki — zalety i ograniczenia</h2>
      <p class="rk-pipe-lead">Tabela nie wskazuje automatycznego zwycięzcy. Pokazuje, kiedy dana cecha może mieć znaczenie oraz czego potrzebujesz, aby ją potwierdzić w konkretnym budynku.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Obszar</th><th>Ogrzewanie podłogowe</th><th>Grzejniki</th><th>Warunek uczciwego porównania</th></tr></thead>
          <tbody>
            <tr><td data-label="Obszar"><strong>Temperatura wody</strong></td><td data-label="Podłogówka">Często niższa dzięki dużej powierzchni.</td><td data-label="Grzejniki">Zależy od wielkości odbiorników i strat pomieszczenia.</td><td data-label="Warunek">Sprawdź moc obu wariantów przy konkretnych parametrach.</td></tr>
            <tr><td data-label="Obszar"><strong>Pompa ciepła</strong></td><td data-label="Podłogówka">Zwykle sprzyja niskotemperaturowej pracy.</td><td data-label="Grzejniki">Także mogą pracować niskotemperaturowo, jeżeli są odpowiednio dobrane.</td><td data-label="Warunek">Porównaj sezonowy SCOP, nie pojedynczy COP.</td></tr>
            <tr><td data-label="Obszar"><strong>Koszt wykonania</strong></td><td data-label="Podłogówka">Często wyższy zakres instalacji i koordynacji.</td><td data-label="Grzejniki">W prostym remoncie mogą mieć niższy próg wejścia.</td><td data-label="Warunek">Uwzględnij prace budowlane, automatykę i elementy wspólne.</td></tr>
            <tr><td data-label="Obszar"><strong>Komfort</strong></td><td data-label="Podłogówka">Duża powierzchnia i potencjalnie równomierne warunki.</td><td data-label="Grzejniki">Bardziej lokalne oddawanie ciepła i silniejsza konwekcja w pobliżu.</td><td data-label="Warunek">Nie przypisuj obu systemom jednego stałego profilu temperatur.</td></tr>
            <tr><td data-label="Obszar"><strong>Reakcja</strong></td><td data-label="Podłogówka">Mokra konstrukcja zwykle reaguje wolniej.</td><td data-label="Grzejniki">Zwykle szybciej zmieniają oddawaną moc.</td><td data-label="Warunek">Porównaj rzeczywistą masę konstrukcji i sposób sterowania.</td></tr>
            <tr><td data-label="Obszar"><strong>Aranżacja</strong></td><td data-label="Podłogówka">Nie zajmuje ścian, lecz zależy od zabudowy podłogi.</td><td data-label="Grzejniki">Zajmują miejsce na ścianie, ale nie ograniczają wyboru posadzki.</td><td data-label="Warunek">Uwzględnij finalny układ mebli i osłon.</td></tr>
            <tr><td data-label="Obszar"><strong>Serwis</strong></td><td data-label="Podłogówka">Pętle są ukryte, ale rozdzielacze pozostają dostępne.</td><td data-label="Grzejniki">Odbiorniki i zawory są łatwo dostępne.</td><td data-label="Warunek">Projektuj pętle bez ukrytych połączeń i dokumentuj trasy.</td></tr>
            <tr><td data-label="Obszar"><strong>Modernizacja</strong></td><td data-label="Podłogówka">Może wymagać ingerencji w warstwy podłogi.</td><td data-label="Grzejniki">Często łatwiejsza wymiana lub powiększenie odbiornika.</td><td data-label="Warunek">Policz pełny zakres od demontażu do odtworzenia wykończenia.</td></tr>
          </tbody>
        </table>
      </div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-errors">
      <span class="rk-pipe-eyebrow">Najczęstsze mity i błędy</span>
      <h2 class="rk-pipe-section-title">Czego nie wolno zakładać przy porównaniu?</h2>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 1</span><h3>„Grzejnik grzeje dopiero od 55°C”</h3><p>Oddaje ciepło przy każdej dodatniej różnicy temperatur względem pomieszczenia. Przy niższej temperaturze ma po prostu mniejszą moc.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 2</span><h3>„Podłogówka zawsze oszczędza 20%”</h3><p>Wynik zależy od źródła, sprawności sezonowej, regulacji, budynku i zachowania użytkowników. Nie ma jednego procentu dla wszystkich domów.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 3</span><h3>„Każda podłoga zadziała przy 35°C”</h3><p>Najpierw trzeba sprawdzić obciążenie, powierzchnię czynną, rozstaw, konstrukcję i opór wykończenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 4</span><h3>„Niższa temperatura daje stały procent COP”</h3><p>Wpływ zależy od urządzenia, temperatury dolnego źródła, modulacji, odszraniania, CWU i warunków sezonu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 5</span><h3>„Podłogówka eliminuje kurz”</h3><p>Może zmieniać udział konwekcji, ale jakość powietrza zależy od znacznie większej liczby czynników.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 6</span><h3>„Zwrot zawsze nastąpi po 3–5 latach”</h3><p>Przy małym zapotrzebowaniu albo podobnej sprawności obu wariantów wyższa inwestycja może zwracać się długo lub nie zwrócić się w badanym okresie.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 7</span><h3>Porównanie różnych budynków</h3><p>Rachunek sąsiada nie jest podstawą. Porównuj ten sam dom, temperaturę wewnętrzną i energię użytkową.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 8</span><h3>SCOP z materiału reklamowego</h3><p>Wartość bez powiązania z klimatem i temperaturą systemu nie opisuje automatycznie Twojej instalacji.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 9</span><h3>Układanie jednego rozstawu wszędzie</h3><p>Pomieszczenia mają różne obciążenia, powierzchnie czynne i posadzki. Projekt musi je rozdzielić.</p></article>
      </div>
      <p class="rk-pipe-copy">Skutki uproszczeń opisuje szerzej porównanie <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projektu podłogówki „z głowy” i projektu z obliczeniami</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-data">
      <span class="rk-pipe-eyebrow">Lista danych przed ostateczną decyzją</span>
      <h2 class="rk-pipe-section-title">Co powinien sprawdzić projektant obu wariantów?</h2>
      <p class="rk-pipe-lead">Porównanie jest wiarygodne dopiero wtedy, gdy oba rozwiązania pokrywają tę samą moc pomieszczeń i współpracują z rzeczywiście wybranym źródłem.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BUDYNEK</span><h3>Obciążenia i geometria</h3><ul class="rk-pipe-bullets"><li>OZC każdego pomieszczenia,</li><li>temperatury projektowe,</li><li>powierzchnie i wysokości,</li><li>przeszklenia oraz strefy brzegowe,</li><li>planowana temperatura wewnętrzna.</li></ul></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">ODBIORNIKI</span><h3>Moc i ograniczenia</h3><ul class="rk-pipe-bullets"><li>powierzchnia czynna podłogi,</li><li>opór okładziny i podkładu,</li><li>rozstaw i konstrukcja systemu,</li><li>moc grzejników przy nowych parametrach,</li><li>granice temperatur powierzchni.</li></ul></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">SYSTEM</span><h3>Hydraulika i źródło</h3><ul class="rk-pipe-bullets"><li>temperatury zasilania i powrotu,</li><li>przepływy oraz spadki ciśnienia,</li><li>punkt pracy pompy obiegowej,</li><li>krzywa grzewcza i regulacja,</li><li>sezonowa efektywność źródła.</li></ul></article>
      </div>
      <p class="rk-pipe-copy">Zakres dokumentacji pokazuje 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>. Jeżeli dopiero rozważasz wykonanie obliczeń, sprawdź również, <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">czy do ogrzewania podłogowego potrzebny jest projekt</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-final" id="rk-pipe-final">
      <span class="rk-pipe-eyebrow">Końcowy wniosek</span>
      <h2 class="rk-pipe-section-title">Największą zaletą podłogówki jest możliwość pracy na niskim parametrze — jeżeli wynika z obliczeń</h2>
      <p class="rk-pipe-lead">Ogrzewanie podłogowe jest szczególnie mocnym rozwiązaniem w nowym domu z dużą powierzchnią czynną i źródłem, którego sprawność korzysta z niskiej temperatury wody. Grzejniki pozostają racjonalnym wyborem w wielu modernizacjach, pomieszczeniach okresowych oraz tam, gdzie można dobrać je do niższych parametrów bez kosztownej przebudowy podłóg.</p>
      <div class="rk-pipe-answer">
        <strong>Nie wybieraj między hasłami „35°C” i „55°C”. Porównaj dwie kompletne instalacje, które rzeczywiście pokrywają straty tego samego budynku.</strong>
        <p>Dopiero wtedy kalkulacja kosztów, efektywności i komfortu ma wspólną podstawę. Jeżeli żaden wariant samodzielnie nie pasuje do wszystkich pomieszczeń, projekt może uzasadnić układ mieszany.</p>
      </div>
      <div class="rk-pipe-cta">
        <div class="rk-pipe-cta-title">Zamień temperaturę z założenia na policzony układ pomieszczeń i pętli</div>
        <p>Projekt obejmuje obciążenia cieplne, sprawdzenie mocy podłogi, rozstaw i przebieg rur, podział pętli, przepływy, opory, nastawy rozdzielacza oraz parametry współpracy ze źródłem ciepła.</p>
        <a class="rk-pipe-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-pipe-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-sources">
      <span class="rk-pipe-eyebrow">Podstawa techniczna</span>
      <h2 class="rk-pipe-section-title">Oficjalne źródła i zakres obliczeń</h2>
      <p class="rk-pipe-lead">Linki zewnętrzne zostały zebrane wyłącznie w tej sekcji. Prowadzą do oficjalnych kart norm, prawa Unii Europejskiej i dokumentacji instytucji publicznej — bez odnośników do konkurencji, sprzedawców i producentów urządzeń.</p>
      <div class="rk-pipe-source-grid">
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74682.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-1:2021 — definicje i kryteria komfortu</a><p>Oficjalna karta normy dotyczącej podstawowych definicji, symboli i kryteriów komfortu dla wbudowanych systemów ogrzewania i chłodzenia płaszczyznowego.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — projektowa moc ogrzewania i chłodzenia</a><p>Oficjalny opis metod określania strumienia ciepła, temperatury i równomierności powierzchni oraz zależności od zmiennych projektowych.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a><p>Oficjalna karta metody projektowania i wymiarowania systemów tak, aby zapewnić wymaganą moc grzewczą lub chłodniczą.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/65696.html" target="_blank" rel="nofollow noopener noreferrer">ISO 52016-1:2017 — potrzeby energetyczne budynku</a><p>Oficjalna karta metod obliczania potrzeb energetycznych ogrzewania i chłodzenia, temperatur wewnętrznych oraz obciążeń cieplnych.</p></article>
        <article class="rk-pipe-source-card"><a href="https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX%3A32013R0813" target="_blank" rel="nofollow noopener noreferrer">Rozporządzenie Komisji (UE) nr 813/2013</a><p>Oficjalny tekst EUR-Lex. Warunki znamionowe rozróżniają zastosowanie niskotemperaturowe 35°C i zastosowanie o średniej temperaturze 55°C przy ocenie pomp ciepła.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.gov.uk/government/publications/detailed-analysis-of-data-from-heat-pumps-installed-via-the-renewable-heat-premium-payment-scheme-rhpp" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — analiza danych rzeczywistych instalacji pomp ciepła</a><p>Oficjalna publikacja opisująca wpływ projektu, emiterów, temperatury zasilania i zachowania użytkowników na rzeczywisty wynik sezonowy instalacji.</p></article>
      </div>
      <div class="rk-pipe-responsibility"><p><strong>Zakres poradnika i kalkulatora:</strong> narzędzia pokazują zależności ekonomiczne i porządkują decyzję na podstawie danych użytkownika. Nie wyznaczają projektowego obciążenia cieplnego, mocy podłogi, wielkości grzejników, charakterystyki konkretnej pompy ciepła, przepływów, spadków ciśnienia ani nastaw. Koszty startowe są przykładem, nie cennikiem na 2026 rok.</p></div>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-faq">
      <span class="rk-pipe-eyebrow">Pytania inwestorów i wykonawców</span>
      <h2 class="rk-pipe-section-title">FAQ — ogrzewanie podłogowe czy grzejniki?</h2>
      <div class="rk-pipe-faq">
        <details><summary>Czy ogrzewanie podłogowe zawsze zużywa mniej energii niż grzejniki?</summary><div class="rk-pipe-faq-answer"><p>Nie. Dla tej samej temperatury pomieszczeń budynek potrzebuje podobnej ilości ciepła użytkowego niezależnie od odbiornika. Różnice w energii kupionej wynikają przede wszystkim ze sprawności źródła przy wymaganej temperaturze wody, regulacji, strat dystrybucji i sposobu eksploatacji. Dlatego nie należy przyjmować jednego procentu oszczędności dla wszystkich domów.</p></div></details>

        <details><summary>Czy grzejnik zaczyna efektywnie grzać dopiero przy 55°C?</summary><div class="rk-pipe-faq-answer"><p>Nie. Grzejnik oddaje ciepło, gdy jego średnia temperatura jest wyższa od temperatury pomieszczenia. Przy niższych parametrach jego moc maleje, dlatego trzeba sprawdzić korektę mocy danego modelu. Odpowiednio większy grzejnik może pokryć obciążenie również przy 45/35°C, a czasem przy jeszcze niższych parametrach.</p></div></details>

        <details><summary>Czy każda podłogówka pracuje przy 35/30°C?</summary><div class="rk-pipe-faq-answer"><p>Nie. To popularny scenariusz projektowy, ale wymagana temperatura zależy od strat pomieszczenia, powierzchni czynnej, rozstawu rur, konstrukcji systemu, oporu okładziny i granicznej temperatury powierzchni. Dobrze izolowany dom może potrzebować mniej, a trudne pomieszczenie więcej.</p></div></details>

        <details><summary>Czy podłogówka jest zawsze lepsza do pompy ciepła?</summary><div class="rk-pipe-faq-answer"><p>Często ułatwia pracę na niskiej temperaturze, co zwykle sprzyja efektywności pompy ciepła. Nie jest jednak jedynym możliwym rozwiązaniem. Prawidłowo dobrane grzejniki niskotemperaturowe również mogą współpracować z pompą, jeżeli pokrywają obciążenie przy założonych parametrach.</p></div></details>

        <details><summary>Czy można porównać koszty tylko na podstawie temperatury 35°C i 55°C?</summary><div class="rk-pipe-faq-answer"><p>Nie. Temperatura nie jest taryfą energii. Do obliczenia kosztu potrzebujesz rocznej energii użytkowej, SCOP albo sprawności sezonowej obu wariantów, cen energii, energii pomocniczej, serwisu oraz kosztu wykonania. W kalkulatorze temperatura opisuje scenariusz, a koszt wynika z wprowadzonej efektywności.</p></div></details>

        <details><summary>Ile droższe jest ogrzewanie podłogowe od grzejników?</summary><div class="rk-pipe-faq-answer"><p>Nie ma jednego wiarygodnego procentu. W nowym domu część warstw podłogi jest wspólna dla obu wariantów, natomiast w remoncie podłogówka może wymagać kosztownych prac dodatkowych. Porównaj projekt, odbiorniki, przewody, rozdzielacze, automatykę, robociznę, prace budowlane i uruchomienie na podstawie rzeczywistych ofert.</p></div></details>

        <details><summary>Po ilu latach zwraca się wyższy koszt podłogówki?</summary><div class="rk-pipe-faq-answer"><p>Okres zwrotu zależy od różnicy kosztu początkowego i rocznych kosztów eksploatacji. Przy małym zapotrzebowaniu lub podobnej sprawności źródła może być długi albo nie wystąpić w analizowanym okresie. Kalkulator pokazuje zwrot tylko wtedy, gdy wynika on z wpisanych danych.</p></div></details>

        <details><summary>Co jest lepsze w remontowanym domu?</summary><div class="rk-pipe-faq-answer"><p>Zależy od wysokości podłogi, zakresu rozbiórki, stanu obecnej instalacji i mocy grzejników przy niższej temperaturze. Czasem właściwa będzie cienka podłogówka lub system suchy, czasem powiększenie grzejników, a czasem układ mieszany. Decyzję trzeba poprzedzić OZC i inwentaryzacją.</p></div></details>

        <details><summary>Czy podłogówka reaguje zbyt wolno?</summary><div class="rk-pipe-faq-answer"><p>Ciężka konstrukcja mokra zwykle reaguje wolniej niż grzejnik, ale zapewnia stabilność temperatury przy ciągłym ogrzewaniu. System suchy może być znacznie szybszy. Ocena zależy od masy podłogi, oporu okładziny, mocy, izolacji i strategii sterowania.</p></div></details>

        <details><summary>Czy podłogówka eliminuje kurz i jest zawsze zdrowsza?</summary><div class="rk-pipe-faq-answer"><p>Nie należy formułować takiego bezwarunkowego wniosku. Podłogówka może ograniczać lokalne, intensywne strugi konwekcyjne przy gorącym grzejniku, ale kurz i jakość powietrza zależą także od wentylacji, filtracji, sprzątania, źródeł cząstek i wilgotności.</p></div></details>

        <details><summary>Czy na podłogówce można stosować drewno, panele i dywany?</summary><div class="rk-pipe-faq-answer"><p>Tak, jeżeli kompletne wykończenie jest dopuszczone do takiego zastosowania, a projekt uwzględnia opór okładziny i podkładu. Grubsze lub bardziej izolacyjne warstwy zmniejszają dostępną moc przy tej samej temperaturze wody, dlatego nie wolno zmieniać posadzki bez sprawdzenia obliczeń.</p></div></details>

        <details><summary>Czy pod stałą zabudową trzeba układać ogrzewanie podłogowe?</summary><div class="rk-pipe-faq-answer"><p>Rozmieszczenie rur powinno wynikać z planu wyposażenia, typu zabudowy i projektu systemu. Najważniejsze jest prawidłowe określenie powierzchni czynnej. Jeżeli po jej odjęciu podłoga nie pokrywa obciążenia pomieszczenia, potrzebna jest zmiana parametrów albo dodatkowy odbiornik.</p></div></details>

        <details><summary>Czy można połączyć podłogówkę i grzejniki w jednym domu?</summary><div class="rk-pipe-faq-answer"><p>Tak. Najłatwiej, gdy oba systemy pokrywają obciążenie przy podobnej temperaturze. Jeżeli grzejniki wymagają wyższego parametru, projekt musi przewidzieć odpowiedni układ hydrauliczny, regulację temperatury, przepływy i sterowanie. Nie wystarczy podłączyć dwóch przypadkowych obiegów.</p></div></details>

        <details><summary>Czy podłogówka potrzebuje większego przepływu niż grzejniki?</summary><div class="rk-pipe-faq-answer"><p>Dla tej samej mocy i mniejszej różnicy temperatur zasilania oraz powrotu wymagany przepływ jest większy. Nie oznacza to automatycznie większego kosztu pracy pompy. Zużycie energii zależy także od spadku ciśnienia, sprawności pompy, średnic i sposobu regulacji.</p></div></details>

        <details><summary>Co wpisać do kalkulatora: zapotrzebowanie w kW czy kWh?</summary><div class="rk-pipe-faq-answer"><p>Wpisz roczną energię użytkową na ogrzewanie w kWh/rok. Moc w kW służy do doboru źródła i odbiorników, ale nie może zostać bezpośrednio pomnożona przez wszystkie godziny sezonu. Nie wpisuj także wskaźnika EP ani całego rachunku obejmującego urządzenia domowe.</p></div></details>

        <details><summary>Jakie dane są potrzebne przed ostatecznym wyborem?</summary><div class="rk-pipe-faq-answer"><p>Potrzebujesz OZC pomieszczeń, planu podłóg i stałej zabudowy, parametrów źródła, oporu okładzin, dostępnej powierzchni czynnej oraz mocy grzejników przy planowanej temperaturze. Następnie porównuje się hydraulikę, automatykę, pełne koszty wykonania i sezonową efektywność.</p></div></details>
      </div>
    </section>

    <section class="rk-pipe-author" id="rk-pipe-author">
      <span class="rk-pipe-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
      <h2 class="rk-pipe-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-pipe-author-layout">
        <aside class="rk-pipe-author-side">
          <div class="rk-pipe-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-pipe-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-pipe-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-pipe-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" 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-pipe-author-main">
          <div class="rk-pipe-author-quote">„Moim zdaniem… największą zaletą podłogówki nie jest magiczne 35°C, lecz możliwość pokrycia obciążenia pomieszczeń przy niskiej temperaturze wody. Jeżeli tę samą pracę wykonają prawidłowo dobrane grzejniki, różnica kosztów może być znacznie mniejsza, niż sugerują proste porównania.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W analizach oddziela projektową moc w kW od energii rocznej w kWh, kosztu inwestycji i sezonowej efektywności źródła.</p>
          <p>Artykuł został zweryfikowany pod kątem zgodności jednostek, neutralnego porównania odbiorników, jawności założeń kalkulatora oraz rozdzielenia temperatury zasilania od kosztu energii. Narzędzia celowo nie przypisują stałej oszczędności do każdego stopnia obniżenia temperatury.</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-pipe-author-facts">
            <div class="rk-pipe-author-fact"><strong>Praktyka projektowa</strong>OZC pomieszczeń, moc podłogi, dobór pętli, przepływy i opory hydrauliczne</div>
            <div class="rk-pipe-author-fact"><strong>Metoda porównania</strong>Ten sam budynek, ta sama energia użytkowa, jawne koszty i sprawność obu wariantów</div>
            <div class="rk-pipe-author-fact"><strong>Zakres aktualizacji</strong>Treść, kalkulator, analizator i źródła sprawdzone 14 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", "instalacje grzejnikowe", "projektowe obciążenie cieplne", "pompy ciepła", "hydraulika instalacji grzewczych", "koszty systemów ogrzewania"],
      "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-38069b48/", "https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/12/Zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/12/Zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow.webp",
      "width": 1200,
      "height": 1200,
      "caption": "Ogrzewanie podłogowe czy grzejniki — porównanie"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Ogrzewanie podłogowe", "item": { "@id": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/#webpage" } },
        { "@type": "ListItem", "position": 3, "name": "Ogrzewanie podłogowe czy grzejniki?", "item": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/" }
      ]
    },
    {
      "@type": "CollectionPage",
      "@id": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/#webpage",
      "url": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/",
      "name": "Ogrzewanie podłogowe",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#webpage",
      "url": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/",
      "name": "Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania",
      "description": "Porównanie ogrzewania podłogowego i grzejników: temperatura zasilania, koszt inwestycji i eksploatacji, komfort, sterowanie oraz opłacalność po 5–20 latach.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#primaryimage" },
      "datePublished": "2024-12-31T17:31:46+00:00",
      "dateModified": "2026-09-14T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#webpage" },
      "headline": "Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania",
      "description": "Techniczne i ekonomiczne porównanie wodnego ogrzewania podłogowego z grzejnikami, z kalkulatorem pełnego kosztu, wykresem oraz analizatorem decyzji.",
      "image": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2024-12-31T17:31:46+00:00",
      "dateModified": "2026-09-14T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": ["ogrzewanie podłogowe czy grzejniki", "temperatura zasilania", "koszt ogrzewania", "grzejniki niskotemperaturowe", "pompa ciepła", "koszt całkowity systemu grzewczego"],
      "keywords": "ogrzewanie podłogowe czy grzejniki, podłogówka vs grzejniki koszty, podłogówka przy pompie ciepła, grzejniki niskotemperaturowe, kalkulator kosztów ogrzewania",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#calculator" },
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#analyzer" },
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#comparison-list" },
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#calculator",
      "name": "Kalkulator kosztów ogrzewania podłogowego i grzejników",
      "url": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#rk-pipe-calculator-section",
      "applicationCategory": "FinanceApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Kalkulator porównujący energię kupioną, roczne koszty, koszt inwestycji i koszt całkowity podłogówki oraz grzejników w okresie od 5 do 20 lat."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#analyzer",
      "name": "Analizator wyboru: podłogówka, grzejniki czy układ mieszany",
      "url": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#rk-pipe-analyzer-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie edukacyjne porządkujące argumenty za podłogówką, grzejnikami i systemem mieszanym na podstawie warunków budynku."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#howto",
      "name": "Jak uczciwie porównać ogrzewanie podłogowe z grzejnikami",
      "description": "Procedura porównania mocy, temperatur, sezonowej sprawności źródła, kosztu inwestycji i kosztów eksploatacji obu systemów.",
      "totalTime": "PT25M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Ustal wspólne warunki", "text": "Przyjmij ten sam budynek, temperaturę wewnętrzną i obciążenie cieplne pomieszczeń." },
        { "@type": "HowToStep", "position": 2, "name": "Sprawdź moc odbiorników", "text": "Potwierdź moc podłogi i grzejników przy planowanej temperaturze zasilania i powrotu." },
        { "@type": "HowToStep", "position": 3, "name": "Ustal energię roczną", "text": "Wprowadź roczne zapotrzebowanie na energię użytkową do ogrzewania, a nie projektową moc źródła." },
        { "@type": "HowToStep", "position": 4, "name": "Porównaj sezonową efektywność", "text": "Wpisz SCOP albo sprawność sezonową odpowiednią dla obu scenariuszy temperaturowych." },
        { "@type": "HowToStep", "position": 5, "name": "Zsumuj inwestycję", "text": "Uwzględnij projekt, odbiorniki, instalację, robociznę, prace budowlane, automatykę i uruchomienie." },
        { "@type": "HowToStep", "position": 6, "name": "Dodaj koszty roczne", "text": "Dodaj energię kupioną, energię pomocniczą, serwis oraz koszty stałe." },
        { "@type": "HowToStep", "position": 7, "name": "Sprawdź horyzont i wrażliwość", "text": "Porównaj koszt całkowity po 5, 10, 15 i 20 latach oraz scenariusze zmian ceny energii." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#comparison-list",
      "name": "Obszary porównania ogrzewania podłogowego i grzejników",
      "numberOfItems": 8,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Temperatura wody" },
        { "@type": "ListItem", "position": 2, "name": "Współpraca z pompą ciepła" },
        { "@type": "ListItem", "position": 3, "name": "Koszt wykonania" },
        { "@type": "ListItem", "position": 4, "name": "Komfort cieplny" },
        { "@type": "ListItem", "position": 5, "name": "Szybkość reakcji" },
        { "@type": "ListItem", "position": 6, "name": "Aranżacja pomieszczeń" },
        { "@type": "ListItem", "position": 7, "name": "Serwis i dostępność" },
        { "@type": "ListItem", "position": 8, "name": "Zakres modernizacji" }
      ]
    },
    {
      "@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"
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#faq-schema",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy ogrzewanie podłogowe zawsze zużywa mniej energii niż grzejniki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Dla tej samej temperatury pomieszczeń budynek potrzebuje podobnej ilości ciepła użytkowego niezależnie od odbiornika. Różnice w energii kupionej wynikają przede wszystkim ze sprawności źródła przy wymaganej temperaturze wody, regulacji, strat dystrybucji i sposobu eksploatacji." }
        },
        {
          "@type": "Question",
          "name": "Czy grzejnik zaczyna efektywnie grzać dopiero przy 55°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Grzejnik oddaje ciepło, gdy jego średnia temperatura jest wyższa od temperatury pomieszczenia. Przy niższych parametrach jego moc maleje, dlatego trzeba sprawdzić korektę mocy konkretnego modelu." }
        },
        {
          "@type": "Question",
          "name": "Czy każda podłogówka pracuje przy 35/30°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Wymagana temperatura zależy od strat pomieszczenia, powierzchni czynnej, rozstawu rur, konstrukcji systemu, oporu okładziny i granicznej temperatury powierzchni." }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka jest zawsze lepsza do pompy ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Często ułatwia pracę na niskiej temperaturze, co zwykle sprzyja efektywności pompy ciepła. Prawidłowo dobrane grzejniki niskotemperaturowe również mogą współpracować z pompą, jeżeli pokrywają obciążenie przy założonych parametrach." }
        },
        {
          "@type": "Question",
          "name": "Czy można porównać koszty tylko na podstawie temperatury 35°C i 55°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Do obliczenia kosztu potrzebujesz rocznej energii użytkowej, SCOP albo sprawności sezonowej obu wariantów, cen energii, energii pomocniczej, serwisu oraz kosztu wykonania." }
        },
        {
          "@type": "Question",
          "name": "Ile droższe jest ogrzewanie podłogowe od grzejników?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednego wiarygodnego procentu. Wynik zależy od tego, czy jest to nowy dom czy remont, zakresu materiałów, automatyki, robocizny i prac budowlanych." }
        },
        {
          "@type": "Question",
          "name": "Po ilu latach zwraca się wyższy koszt podłogówki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Okres zwrotu zależy od różnicy kosztu początkowego i rocznych kosztów eksploatacji. Może być długi albo nie wystąpić w analizowanym okresie." }
        },
        {
          "@type": "Question",
          "name": "Co jest lepsze w remontowanym domu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Zależy od wysokości podłogi, zakresu rozbiórki, stanu obecnej instalacji i mocy grzejników przy niższej temperaturze. Możliwa jest podłogówka, powiększenie grzejników albo układ mieszany." }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka reaguje zbyt wolno?",
          "acceptedAnswer": { "@type": "Answer", "text": "Ciężka konstrukcja mokra zwykle reaguje wolniej niż grzejnik, ale zapewnia stabilność temperatury. System suchy może być szybszy. Ocena zależy od konstrukcji, mocy i sterowania." }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka eliminuje kurz i jest zawsze zdrowsza?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie należy formułować takiego bezwarunkowego wniosku. Jakość powietrza zależy także od wentylacji, filtracji, sprzątania, źródeł cząstek i wilgotności." }
        },
        {
          "@type": "Question",
          "name": "Czy na podłogówce można stosować drewno, panele i dywany?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak, jeżeli kompletne wykończenie jest dopuszczone do takiego zastosowania, a projekt uwzględnia opór okładziny i podkładu." }
        },
        {
          "@type": "Question",
          "name": "Czy pod stałą zabudową trzeba układać ogrzewanie podłogowe?",
          "acceptedAnswer": { "@type": "Answer", "text": "Rozmieszczenie rur powinno wynikać z planu wyposażenia, typu zabudowy i projektu. Najważniejsze jest prawidłowe określenie powierzchni czynnej." }
        },
        {
          "@type": "Question",
          "name": "Czy można połączyć podłogówkę i grzejniki w jednym domu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak. Jeżeli systemy wymagają różnych temperatur, projekt musi przewidzieć odpowiedni układ hydrauliczny, regulację temperatury, przepływy i sterowanie." }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka potrzebuje większego przepływu niż grzejniki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Dla tej samej mocy i mniejszej różnicy temperatur zasilania oraz powrotu wymagany przepływ jest większy. Zużycie energii pompy zależy jednak także od spadku ciśnienia, sprawności pompy i regulacji." }
        },
        {
          "@type": "Question",
          "name": "Co wpisać do kalkulatora: zapotrzebowanie w kW czy kWh?",
          "acceptedAnswer": { "@type": "Answer", "text": "Wpisz roczną energię użytkową na ogrzewanie w kWh na rok. Moc w kW służy do doboru źródła i odbiorników, ale nie jest rocznym zużyciem energii." }
        },
        {
          "@type": "Question",
          "name": "Jakie dane są potrzebne przed ostatecznym wyborem?",
          "acceptedAnswer": { "@type": "Answer", "text": "Potrzebujesz OZC pomieszczeń, planu podłóg i zabudowy, parametrów źródła, oporu okładzin, powierzchni czynnej, mocy grzejników przy planowanej temperaturze oraz porównania hydrauliki i kosztów." }
        }
      ]
    }
  ]
}
</script>

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

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

  function element(id) {
    return document.getElementById(id);
  }

  function fieldNumber(id) {
    var field = element(id);
    var raw;
    var parsed;
    if (!field) {
      return 0;
    }
    raw = String(field.value).replace(",", ".");
    parsed = parseFloat(raw);
    if (!isFinite(parsed)) {
      return 0;
    }
    return parsed;
  }

  function fieldValue(id) {
    var field = element(id);
    if (!field) {
      return "unknown";
    }
    return field.value;
  }

  function setText(id, value) {
    var target = element(id);
    if (target) {
      target.textContent = value;
    }
  }

  function formatNumber(value, digits) {
    return value.toLocaleString("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    });
  }

  function formatCurrency(value) {
    return formatNumber(Math.round(value), 0) + " zł";
  }

  function formatEnergy(value) {
    return formatNumber(Math.round(value), 0) + " kWh/rok";
  }

  function sumFields(ids) {
    var sum = 0;
    ids.forEach(function (id) {
      sum += fieldNumber(id);
    });
    return sum;
  }

  function sourceName(source) {
    if (source === "gas") {
      return "kotła gazowego";
    }
    if (source === "electric") {
      return "ogrzewania elektrycznego";
    }
    return "pompy ciepła";
  }

  function updateSourceLabels(applyPreset) {
    var source = fieldValue("rk-compare-source");
    var floorLabel = "Podłogówka — SCOP";
    var radLabel = "Grzejniki — SCOP";
    var priceLabel = "Cena energii elektrycznej [zł/kWh]";

    if (source === "gas") {
      floorLabel = "Podłogówka — sprawność sezonowa η";
      radLabel = "Grzejniki — sprawność sezonowa η";
      priceLabel = "Cena energii w paliwie gazowym [zł/kWh]";
      if (applyPreset) {
        element("rk-compare-floor-eff").value = "0.96";
        element("rk-compare-rad-eff").value = "0.93";
        element("rk-compare-price").value = "0.35";
      }
    } else {
      if (source === "electric") {
        floorLabel = "Podłogówka — współczynnik konwersji";
        radLabel = "Grzejniki — współczynnik konwersji";
        if (applyPreset) {
          element("rk-compare-floor-eff").value = "1.00";
          element("rk-compare-rad-eff").value = "1.00";
          element("rk-compare-price").value = "1.10";
        }
      } else {
        if (applyPreset) {
          element("rk-compare-floor-eff").value = "4.20";
          element("rk-compare-rad-eff").value = "3.20";
          element("rk-compare-price").value = "1.10";
        }
      }
    }

    setText("rk-compare-floor-eff-label", floorLabel);
    setText("rk-compare-rad-eff-label", radLabel);
    setText("rk-compare-price-label", priceLabel);
  }

  var floorInvestmentIds = [
    "rk-compare-floor-design",
    "rk-compare-floor-material",
    "rk-compare-floor-labour",
    "rk-compare-floor-building",
    "rk-compare-floor-controls"
  ];

  var radInvestmentIds = [
    "rk-compare-rad-design",
    "rk-compare-rad-material",
    "rk-compare-rad-labour",
    "rk-compare-rad-building",
    "rk-compare-rad-controls"
  ];

  function createSvgElement(name, attributes, textValue) {
    var node = document.createElementNS("http://www.w3.org/2000/svg", name);
    Object.keys(attributes).forEach(function (key) {
      node.setAttribute(key, attributes[key]);
    });
    if (typeof textValue === "string") {
      node.textContent = textValue;
    }
    return node;
  }

  function signedCurrency(value) {
    if (Math.abs(value) < 0.5) {
      return "0 zł";
    }
    if (value > 0) {
      return "+" + formatCurrency(value);
    }
    return "−" + formatCurrency(Math.abs(value));
  }

  function renderCostChart(floorInvestment, radInvestment, floorAnnual, radAnnual) {
    var grid = element("rk-compare-chart-grid");
    var lines = element("rk-compare-chart-lines");
    var labels = element("rk-compare-chart-labels");
    var years = [0, 5, 10, 15, 20];
    var width = 800;
    var height = 360;
    var left = 78;
    var right = 28;
    var top = 22;
    var bottom = 58;
    var chartWidth = width - left - right;
    var chartHeight = height - top - bottom;
    var maxValue = 0;
    var maxY;
    var floorPoints = [];
    var radPoints = [];
    var tick;

    years.forEach(function (year) {
      var floorValue = floorInvestment + floorAnnual * year;
      var radValue = radInvestment + radAnnual * year;
      if (floorValue > maxValue) {
        maxValue = floorValue;
      }
      if (radValue > maxValue) {
        maxValue = radValue;
      }
    });

    maxY = Math.ceil(maxValue / 20000) * 20000;
    if (maxY < 20000) {
      maxY = 20000;
    }

    grid.textContent = "";
    lines.textContent = "";
    labels.textContent = "";

    for (tick = 0; tick <= 4; tick += 1) {
      var y = top + chartHeight - chartHeight * tick / 4;
      var tickValue = maxY * tick / 4;
      grid.appendChild(createSvgElement("line", { x1: left, y1: y, x2: width - right, y2: y, stroke: "#d9e6eb", "stroke-width": "1" }));
      labels.appendChild(createSvgElement("text", { x: left - 10, y: y + 4, "text-anchor": "end", fill: "#627b8b", "font-size": "12", "font-family": "Arial" }, formatNumber(tickValue / 1000, 0) + " tys."));
    }

    years.forEach(function (year, index) {
      var x = left + chartWidth * year / 20;
      var floorValue = floorInvestment + floorAnnual * year;
      var radValue = radInvestment + radAnnual * year;
      var floorY = top + chartHeight - floorValue / maxY * chartHeight;
      var radY = top + chartHeight - radValue / maxY * chartHeight;
      floorPoints.push(x + "," + floorY);
      radPoints.push(x + "," + radY);
      grid.appendChild(createSvgElement("line", { x1: x, y1: top, x2: x, y2: top + chartHeight, stroke: "#edf3f5", "stroke-width": "1" }));
      labels.appendChild(createSvgElement("text", { x: x, y: height - 28, "text-anchor": "middle", fill: "#627b8b", "font-size": "12", "font-family": "Arial" }, String(year)));
      lines.appendChild(createSvgElement("circle", { cx: x, cy: floorY, r: "4", fill: "#078fb3", stroke: "#ffffff", "stroke-width": "2" }));
      lines.appendChild(createSvgElement("circle", { cx: x, cy: radY, r: "4", fill: "#ff6846", stroke: "#ffffff", "stroke-width": "2" }));
      setText("rk-chart-floor-" + year, formatCurrency(floorValue));
      setText("rk-chart-rad-" + year, formatCurrency(radValue));
      setText("rk-chart-diff-" + year, signedCurrency(floorValue - radValue));
    });

    lines.insertBefore(createSvgElement("polyline", { points: floorPoints.join(" "), fill: "none", stroke: "#078fb3", "stroke-width": "5", "stroke-linecap": "round", "stroke-linejoin": "round" }), lines.firstChild);
    lines.insertBefore(createSvgElement("polyline", { points: radPoints.join(" "), fill: "none", stroke: "#ff6846", "stroke-width": "5", "stroke-linecap": "round", "stroke-linejoin": "round" }), lines.firstChild);
    labels.appendChild(createSvgElement("text", { x: width / 2, y: height - 4, "text-anchor": "middle", fill: "#3c5668", "font-size": "12", "font-weight": "700", "font-family": "Arial" }, "lata od wykonania instalacji"));
    labels.appendChild(createSvgElement("text", { x: "18", y: height / 2, transform: "rotate(-90 18 " + height / 2 + ")", "text-anchor": "middle", fill: "#3c5668", "font-size": "12", "font-weight": "700", "font-family": "Arial" }, "koszt skumulowany [zł]"));
  }

  function calculateComparison() {
    var useful = fieldNumber("rk-compare-useful");
    var source = fieldValue("rk-compare-source");
    var price = fieldNumber("rk-compare-price");
    var auxPrice = fieldNumber("rk-compare-aux-price");
    var scenario = fieldNumber("rk-compare-scenario");
    var horizon = fieldNumber("rk-compare-horizon");
    var floorEff = fieldNumber("rk-compare-floor-eff");
    var radEff = fieldNumber("rk-compare-rad-eff");
    var floorSupply = fieldNumber("rk-compare-floor-supply");
    var floorReturn = fieldNumber("rk-compare-floor-return");
    var radSupply = fieldNumber("rk-compare-rad-supply");
    var radReturn = fieldNumber("rk-compare-rad-return");
    var result = element("rk-compare-result");
    var temperatureNote = element("rk-compare-temperature-note");
    var floorEnergy;
    var radEnergy;
    var floorAnnual;
    var radAnnual;
    var floorInvestment;
    var radInvestment;
    var floorTco;
    var radTco;
    var difference;
    var investmentDifference;
    var annualSaving;
    var payback;
    var scenarioName = "ceny bazowej";

    result.classList.remove("is-stop");
    result.classList.remove("is-good");

    if (useful <= 0) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Sprawdź roczną energię użytkową");
      setText("rk-compare-intro", "Wartość energii musi być większa od zera i dotyczyć ogrzewania pomieszczeń.");
      return;
    }
    if (floorEff <= 0) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Sprawdź sprawność wariantu podłogowego");
      setText("rk-compare-intro", "SCOP albo sprawność sezonowa musi być większa od zera.");
      return;
    }
    if (radEff <= 0) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Sprawdź sprawność wariantu grzejnikowego");
      setText("rk-compare-intro", "SCOP albo sprawność sezonowa musi być większa od zera.");
      return;
    }
    if (floorSupply <= floorReturn) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Popraw temperatury podłogówki");
      setText("rk-compare-intro", "W scenariuszu grzewczym temperatura zasilania powinna być wyższa od temperatury powrotu.");
      return;
    }
    if (radSupply <= radReturn) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Popraw temperatury grzejników");
      setText("rk-compare-intro", "W scenariuszu grzewczym temperatura zasilania powinna być wyższa od temperatury powrotu.");
      return;
    }

    if (scenario < 1) {
      scenarioName = "ceny niższej o 20%";
    } else {
      if (scenario > 1) {
        scenarioName = "ceny wyższej o 20%";
      }
    }

    price = price * scenario;
    auxPrice = auxPrice * scenario;
    floorEnergy = useful / floorEff;
    radEnergy = useful / radEff;
    floorAnnual = floorEnergy * price + fieldNumber("rk-compare-floor-service") + fieldNumber("rk-compare-floor-aux") * auxPrice;
    radAnnual = radEnergy * price + fieldNumber("rk-compare-rad-service") + fieldNumber("rk-compare-rad-aux") * auxPrice;
    floorInvestment = sumFields(floorInvestmentIds);
    radInvestment = sumFields(radInvestmentIds);
    floorTco = floorInvestment + floorAnnual * horizon;
    radTco = radInvestment + radAnnual * horizon;
    difference = floorTco - radTco;
    investmentDifference = floorInvestment - radInvestment;
    annualSaving = radAnnual - floorAnnual;

    result.classList.add("is-good");
    setText("rk-compare-status", "Wynik dla " + formatNumber(horizon, 0) + " lat i " + scenarioName);
    setText("rk-compare-intro", "Oba warianty dostarczają do budynku " + formatNumber(useful, 0) + " kWh ciepła użytkowego rocznie przy wspólnym źródle: " + sourceName(source) + ".");
    setText("rk-result-floor-energy", formatEnergy(floorEnergy));
    setText("rk-result-rad-energy", formatEnergy(radEnergy));
    setText("rk-result-floor-annual", formatCurrency(floorAnnual));
    setText("rk-result-rad-annual", formatCurrency(radAnnual));
    setText("rk-result-floor-invest", formatCurrency(floorInvestment));
    setText("rk-result-rad-invest", formatCurrency(radInvestment));
    setText("rk-result-floor-tco", formatCurrency(floorTco));
    setText("rk-result-rad-tco", formatCurrency(radTco));

    if (Math.abs(difference) < 1) {
      setText("rk-result-verdict", "W podanym okresie koszty całkowite obu wariantów są praktycznie równe.");
    } else {
      if (difference < 0) {
        setText("rk-result-verdict", "W podanym okresie podłogówka jest tańsza łącznie o " + formatCurrency(Math.abs(difference)) + ".");
      } else {
        setText("rk-result-verdict", "W podanym okresie grzejniki są tańsze łącznie o " + formatCurrency(difference) + ".");
      }
    }

    if (investmentDifference > 0) {
      if (annualSaving > 0) {
        payback = investmentDifference / annualSaving;
        if (payback <= 100) {
          setText("rk-result-payback", "Wyższy koszt początkowy podłogówki zwraca się po około " + formatNumber(payback, 1) + " roku.");
        } else {
          setText("rk-result-payback", "Matematyczny zwrot wyższej inwestycji przekracza 100 lat przy podanych założeniach.");
        }
      } else {
        setText("rk-result-payback", "Wyższa inwestycja w podłogówkę nie zwraca się, ponieważ jej koszt roczny nie jest niższy.");
      }
    } else {
      if (annualSaving >= 0) {
        setText("rk-result-payback", "Podłogówka nie ma wyższego kosztu początkowego i jednocześnie nie ma wyższego kosztu rocznego w tym scenariuszu.");
      } else {
        setText("rk-result-payback", "Podłogówka jest tańsza na początku, ale ma wyższy koszt roczny; wykres pokazuje możliwy moment utraty tej przewagi.");
      }
    }

    if (source === "electric") {
      temperatureNote.classList.add("rk-pipe-note-good");
      temperatureNote.classList.remove("rk-pipe-note-bad");
      temperatureNote.firstElementChild.innerHTML = "<strong>Wynik dla ogrzewania oporowego:</strong> przy jednakowym współczynniku konwersji sama zmiana temperatury zasilania nie tworzy oszczędności podobnej do efektu SCOP pompy ciepła.";
    } else {
      temperatureNote.classList.remove("rk-pipe-note-good");
      temperatureNote.classList.remove("rk-pipe-note-bad");
      temperatureNote.firstElementChild.innerHTML = "<strong>Kontrola założenia:</strong> wpisane " + formatNumber(floorSupply, 0) + "/" + formatNumber(floorReturn, 0) + "°C oraz " + formatNumber(radSupply, 0) + "/" + formatNumber(radReturn, 0) + "°C opisują scenariusze. Kalkulator nie sprawdza mocy odbiorników przy tych temperaturach.";
    }

    setText("rk-result-assumptions", "Model przyjmuje stałą roczną energię użytkową i stałe ceny w obrębie scenariusza. Nie uwzględnia finansowania, inflacji, dyskonta, wymiany urządzeń ani przygotowania ciepłej wody użytkowej. SCOP lub sprawność zostały podane przez użytkownika.");
    renderCostChart(floorInvestment, radInvestment, floorAnnual, radAnnual);
  }

  var comparisonDefaults = {
    "rk-compare-useful": "12000",
    "rk-compare-source": "heatpump",
    "rk-compare-price": "1.10",
    "rk-compare-aux-price": "1.10",
    "rk-compare-horizon": "15",
    "rk-compare-scenario": "1",
    "rk-compare-floor-supply": "35",
    "rk-compare-floor-return": "30",
    "rk-compare-floor-eff": "4.20",
    "rk-compare-rad-supply": "55",
    "rk-compare-rad-return": "45",
    "rk-compare-rad-eff": "3.20",
    "rk-compare-floor-design": "1800",
    "rk-compare-rad-design": "1200",
    "rk-compare-floor-material": "22000",
    "rk-compare-rad-material": "16000",
    "rk-compare-floor-labour": "11000",
    "rk-compare-rad-labour": "9000",
    "rk-compare-floor-building": "5000",
    "rk-compare-rad-building": "2500",
    "rk-compare-floor-controls": "2500",
    "rk-compare-rad-controls": "2200",
    "rk-compare-floor-service": "500",
    "rk-compare-rad-service": "450",
    "rk-compare-floor-aux": "180",
    "rk-compare-rad-aux": "120"
  };

  function resetComparison() {
    Object.keys(comparisonDefaults).forEach(function (id) {
      var target = element(id);
      if (target) {
        target.value = comparisonDefaults[id];
      }
    });
    updateSourceLabels(false);
    calculateComparison();
  }

  element("rk-compare-source").addEventListener("change", function () {
    updateSourceLabels(true);
    calculateComparison();
  });
  element("rk-compare-run").addEventListener("click", calculateComparison);
  element("rk-compare-reset").addEventListener("click", resetComparison);

  Array.prototype.forEach.call(guide.querySelectorAll("#rk-pipe-calculator input, #rk-pipe-calculator select"), function (field) {
    if (field.id !== "rk-compare-source") {
      field.addEventListener("change", calculateComparison);
    }
  });

  function renderDecisionList(id, items, emptyText) {
    var list = element(id);
    list.textContent = "";
    if (items.length === 0) {
      var emptyItem = document.createElement("li");
      emptyItem.textContent = emptyText;
      list.appendChild(emptyItem);
      return;
    }
    items.forEach(function (itemText) {
      var item = document.createElement("li");
      item.textContent = itemText;
      list.appendChild(item);
    });
  }

  function analyzeDecision() {
    var floor = [];
    var radiator = [];
    var mixed = [];
    var missing = [];
    var building = fieldValue("rk-decision-building");
    var height = fieldValue("rk-decision-height");
    var ozc = fieldValue("rk-decision-ozc");
    var floorPower = fieldValue("rk-decision-floor-power");
    var source = fieldValue("rk-decision-source");
    var surface = fieldValue("rk-decision-surface");
    var use = fieldValue("rk-decision-use");
    var space = fieldValue("rk-decision-space");
    var radPower = fieldValue("rk-decision-rad-power");
    var zones = fieldValue("rk-decision-zones");
    var result = element("rk-decision-result");

    if (building === "new") {
      floor.push("Nowy budynek pozwala skoordynować wysokości, izolację, dylatacje i rozdzielacze przed wykonaniem podłóg.");
    } else {
      if (building === "retrofit") {
        radiator.push("Remont całego istniejącego domu może przemawiać za wykorzystaniem lub wymianą dostępnych odbiorników bez przebudowy podłogi.");
      } else {
        if (building === "partial") {
          mixed.push("Remont częściowy tworzy naturalny powód do rozważenia różnych odbiorników w starej i nowej części.");
        } else {
          missing.push("Ustal, czy decyzja dotyczy nowego domu, pełnego remontu czy jedynie części budynku.");
        }
      }
    }

    if (height === "yes") {
      floor.push("Warstwy podłogi można zaprojektować bez kolizji z drzwiami, schodami i poziomami pomieszczeń.");
    } else {
      if (height === "limited") {
        mixed.push("Ograniczona wysokość wymaga porównania systemu suchego, rozwiązania cienkowarstwowego i grzejników.");
      } else {
        if (height === "no") {
          radiator.push("Brak możliwości ingerencji w podłogę wyraźnie wzmacnia wariant grzejnikowy.");
        } else {
          missing.push("Sprawdź dostępną wysokość oraz zakres dopuszczalnej przebudowy podłogi.");
        }
      }
    }

    if (ozc === "known") {
      floor.push("Dostępne OZC pozwala sprawdzić moc podłogi pomieszczenie po pomieszczeniu.");
      radiator.push("Dostępne OZC pozwala dobrać grzejniki przy obniżonych parametrach bez zgadywania.");
    } else {
      if (ozc === "estimate") {
        missing.push("Wskaźnik W/m² lub wynik całego domu nie zastępuje obciążenia poszczególnych pomieszczeń.");
      } else {
        missing.push("Wykonaj OZC pomieszczenie po pomieszczeniu przed wyborem wielkości odbiorników.");
      }
    }

    if (floorPower === "yes") {
      floor.push("Moc podłogi przy planowanych parametrach została potwierdzona obliczeniowo.");
    } else {
      if (floorPower === "borderline") {
        mixed.push("Graniczna moc podłogi przemawia za dodatkowym odbiornikiem w najtrudniejszych pomieszczeniach albo zmianą założeń.");
      } else {
        if (floorPower === "no") {
          radiator.push("Podłoga nie pokrywa obciążenia przy przyjętych warunkach, więc potrzebny jest inny lub dodatkowy odbiornik.");
          mixed.push("Brakująca moc może uzasadnić lokalne uzupełnienie systemu.");
        } else {
          missing.push("Sprawdź moc podłogi przy rzeczywistym rozstawie, okładzinie i temperaturze powierzchni.");
        }
      }
    }

    if (source === "heatpump") {
      floor.push("Pompa ciepła premiuje odbiornik zdolny pokryć obciążenie przy niskiej temperaturze wody.");
      radiator.push("Grzejniki pozostają możliwe, jeżeli ich niskotemperaturowa moc zostanie potwierdzona.");
    } else {
      if (source === "condensing") {
        floor.push("Niska temperatura powrotu może sprzyjać pracy kondensacyjnej kotła.");
        radiator.push("Prawidłowo dobrane grzejniki mogą również pracować z parametrami wspierającymi kondensację.");
      } else {
        if (source === "unknown") {
          missing.push("Ustal źródło ciepła i zakres jego efektywnej pracy temperaturowej.");
        }
      }
    }

    if (surface === "favorable") {
      floor.push("Niski opór wykończenia i wystarczająca powierzchnia czynna wspierają wydajność podłogi.");
    } else {
      if (surface === "limited") {
        radiator.push("Wysoki opór podłogi albo mała powierzchnia czynna ogranicza moc systemu płaszczyznowego.");
      } else {
        if (surface === "mixed") {
          mixed.push("Różne okładziny i powierzchnie czynne przemawiają za analizą pomieszczeń, a nie jedną decyzją dla całego domu.");
        } else {
          missing.push("Ustal opór kompletu okładziny i podkładu oraz powierzchnię wyłączoną przez stałą zabudowę.");
        }
      }
    }

    if (use === "steady") {
      floor.push("Stała temperatura przez większość doby dobrze wykorzystuje stabilny charakter ogrzewanej podłogi.");
    } else {
      if (use === "intermittent") {
        radiator.push("Częste wyłączenia i pomieszczenia okresowe mogą korzystać z szybszej reakcji grzejników.");
      } else {
        if (use === "mixed") {
          mixed.push("Różny harmonogram pomieszczeń przemawia za zróżnicowaniem odbiorników albo strategii regulacji.");
        } else {
          missing.push("Określ, czy budynek ma być ogrzewany stabilnie, czy okresowo.");
        }
      }
    }

    if (space === "important") {
      floor.push("Wolne ściany i brak widocznych odbiorników mają dla użytkownika dużą wartość.");
    }

    if (radPower === "yes") {
      radiator.push("Grzejniki pokrywają obciążenie przy niskiej temperaturze, więc mogą współpracować z efektywnym źródłem bez przebudowy podłóg.");
    } else {
      if (radPower === "can-upsize") {
        radiator.push("Możliwe jest rozsądne powiększenie grzejników do wymaganej mocy niskotemperaturowej.");
      } else {
        if (radPower === "no") {
          floor.push("Grzejniki nie pokrywają obciążenia przy niskim parametrze, a ich powiększenie jest utrudnione.");
          mixed.push("W trudnych strefach warto sprawdzić podłogę oraz lokalny dodatkowy odbiornik.");
        } else {
          missing.push("Przelicz moc obecnych lub planowanych grzejników przy docelowej temperaturze wody.");
        }
      }
    }

    if (zones === "different") {
      mixed.push("Odmienne potrzeby łazienek, pokoi okresowych i stref z małą powierzchnią czynną uzasadniają analizę układu mieszanego.");
    } else {
      if (zones === "unknown") {
        missing.push("Sprawdź, czy wszystkie pomieszczenia rzeczywiście mają podobne warunki użytkowania i dostępne powierzchnie.");
      }
    }

    result.classList.remove("is-good");
    result.classList.remove("is-stop");

    if (missing.length >= 4) {
      result.classList.add("is-stop");
      setText("rk-decision-status", "Najpierw uzupełnij dane krytyczne");
      setText("rk-decision-intro", "Za dużo kluczowych warunków pozostaje nieznanych, aby odpowiedzialnie wskazać kierunek.");
    } else {
      result.classList.add("is-good");
      if (mixed.length >= 3) {
        setText("rk-decision-status", "Układ mieszany wymaga poważnego sprawdzenia");
        setText("rk-decision-intro", "Odpowiedzi pokazują wyraźnie różne potrzeby pomieszczeń albo ograniczenia jednego systemu.");
      } else {
        if (floor.length >= radiator.length + 2) {
          setText("rk-decision-status", "Więcej przesłanek za ogrzewaniem podłogowym");
          setText("rk-decision-intro", "To nie jest automatyczna rekomendacja. Potwierdź moc podłogi, hydraulikę i pełny koszt w projekcie.");
        } else {
          if (radiator.length >= floor.length + 2) {
            setText("rk-decision-status", "Więcej przesłanek za instalacją grzejnikową");
            setText("rk-decision-intro", "Przed decyzją potwierdź moc grzejników przy docelowej temperaturze oraz sprawność źródła.");
          } else {
            setText("rk-decision-status", "Brak jednoznacznego zwycięzcy");
            setText("rk-decision-intro", "Oba warianty mają uzasadnione argumenty. Porównaj ich moc, temperatury i koszt całkowity na wspólnych danych.");
          }
        }
      }
    }

    renderDecisionList("rk-decision-floor-list", floor, "Brak wyraźnej przesłanki na podstawie odpowiedzi.");
    renderDecisionList("rk-decision-rad-list", radiator, "Brak wyraźnej przesłanki na podstawie odpowiedzi.");
    renderDecisionList("rk-decision-mixed-list", mixed, "Brak wyraźnej przesłanki na podstawie odpowiedzi.");
    renderDecisionList("rk-decision-missing-list", missing, "Nie wskazano istotnego braku w formularzu.");
  }

  function resetDecision() {
    Array.prototype.forEach.call(guide.querySelectorAll("#rk-pipe-analyzer select"), function (field) {
      field.selectedIndex = 0;
    });
    var result = element("rk-decision-result");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");
    setText("rk-decision-status", "Uzupełnij dane budynku");
    setText("rk-decision-intro", "Wynik rozdzieli argumenty za podłogówką, grzejnikami, układem mieszanym oraz dane wymagające sprawdzenia.");
    renderDecisionList("rk-decision-floor-list", [], "Jeszcze brak ocenionych danych.");
    renderDecisionList("rk-decision-rad-list", [], "Jeszcze brak ocenionych danych.");
    renderDecisionList("rk-decision-mixed-list", [], "Jeszcze brak ocenionych danych.");
    renderDecisionList("rk-decision-missing-list", [], "Odpowiedz na pytania na podstawie projektu i warunków budynku.");
  }

  element("rk-decision-run").addEventListener("click", analyzeDecision);
  element("rk-decision-reset").addEventListener("click", resetDecision);

  updateSourceLabels(false);
  calculateComparison();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/">Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
