<?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 cop pompy ciepła - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/cop-pompy-ciepla/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/cop-pompy-ciepla/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Fri, 11 Sep 2026 18:47:28 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa cop pompy ciepła - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/cop-pompy-ciepla/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Projekt ogrzewania podłogowego a dotacje Czyste Powietrze i Moje Ciepło 2026.</title>
		<link>https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 06 Apr 2026 16:16:48 +0000</pubDate>
				<category><![CDATA[Audyt energetyczny]]></category>
		<category><![CDATA[Dofinansowania i dotacje]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Program Czyste Powietrze]]></category>
		<category><![CDATA[Program Moje Ciepło]]></category>
		<category><![CDATA[Termomodernizacja]]></category>
		<category><![CDATA[audyt energetyczny]]></category>
		<category><![CDATA[cop pompy ciepła]]></category>
		<category><![CDATA[czyste powietrze 2026]]></category>
		<category><![CDATA[dokumentacja powykonawcza]]></category>
		<category><![CDATA[dotacja na pompę ciepła]]></category>
		<category><![CDATA[dotacje na ogrzewanie]]></category>
		<category><![CDATA[instalacja niskotemperaturowa]]></category>
		<category><![CDATA[moje ciepło 2026]]></category>
		<category><![CDATA[nfośigw]]></category>
		<category><![CDATA[obliczenia strat ciepła]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opór cieplny podłogi]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[projekt podłogówki]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[wskaźnik ep]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4137</guid>

					<description><![CDATA[<p>Planujesz termomodernizację starszego budynku lub budowę zupełnie nowego, energooszczędnego domu? W dobie rosnących wymagań urzędowych i dążenia do budownictwa bezemisyjnego, samo położenie rurek na styropianie to zdecydowanie za mało, aby otrzymać państwowe dofinansowanie. Kluczowym zagadnieniem, z którym mierzą się dzisiaj świadomi inwestorzy, jest właściwy Projekt ogrzewania podłogowego a dotacje Czyste Powietrze i Moje Ciepło 2026. Urzędnicy NFOŚiGW skrupulatnie weryfikują dokumentację techniczną pod kątem rygorystycznych wskaźników efektywności, a każdy, nawet najdrobniejszy błąd instalatora pracującego "na oko", może kosztować Cię bezpowrotną utratę dziesiątek tysięcy złotych. W tym poradniku pokażę Ci krok po kroku, jakie twarde wymogi musi spełniać instalacja, jak uniknąć najczęstszych pułapek przy wyborze wykończenia posadzki oraz dlaczego inżynieryjne obliczenia OZC to absolutny fundament bezpiecznego wniosku.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/">Projekt ogrzewania podłogowego a dotacje Czyste Powietrze i Moje Ciepło 2026.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-grant-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #28c9da;
    --rk-cyan-soft: #eafcff;
    --rk-orange: #ff6238;
    --rk-red: #d83c2f;
    --rk-green: #178265;
    --rk-green-soft: #ebf8f3;
    --rk-yellow: #f2b441;
    --rk-ink: #1d2c3a;
    --rk-text: #465a6b;
    --rk-muted: #687b89;
    --rk-line: #d9e7ed;
    --rk-soft: #f5f9fb;
    --rk-warm: #fff4ef;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1480px;
    margin: 32px auto 70px;
    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.78;
  }

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

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

  #rk-grant-guide button,
  #rk-grant-guide input,
  #rk-grant-guide a,
  #rk-grant-guide summary {
    -webkit-tap-highlight-color: transparent;
  }

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

  #rk-grant-guide a:hover {
    color: var(--rk-red);
  }

  #rk-grant-guide h2,
  #rk-grant-guide h3,
  #rk-grant-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.16;
  }

  #rk-grant-guide h2 {
    margin-bottom: 18px;
    font-size: clamp(1.65rem, 3.6vw, 2.65rem);
  }

  #rk-grant-guide h3 {
    margin-bottom: 12px;
    font-size: clamp(1.18rem, 2.5vw, 1.58rem);
  }

  #rk-grant-guide h4 {
    margin-bottom: 8px;
    font-size: 1.02rem;
    letter-spacing: -0.015em;
  }

  #rk-grant-guide h2::before,
  #rk-grant-guide h2::after,
  #rk-grant-guide h3::before,
  #rk-grant-guide h3::after,
  #rk-grant-guide h4::before,
  #rk-grant-guide h4::after {
    content: none !important;
    display: none !important;
  }

  #rk-grant-guide p {
    margin: 0 0 1.22em;
    color: var(--rk-text);
  }

  #rk-grant-guide strong {
    color: var(--rk-dark);
  }

  #rk-grant-guide section[id] {
    scroll-margin-top: 28px;
  }

  #rk-grant-guide .rk-grant-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 30px;
    background: var(--rk-white);
    box-shadow: 0 25px 70px rgba(16, 37, 54, 0.12);
  }

  #rk-grant-guide .rk-grant-progress-track {
    position: sticky;
    z-index: 40;
    top: 0;
    width: 100%;
    height: 5px;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.88);
  }

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

  #rk-grant-guide .rk-grant-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(38px, 6.5vw, 78px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 88% 13%, rgba(255, 98, 56, 0.31), transparent 28%),
      radial-gradient(circle at 78% 78%, rgba(40, 201, 218, 0.22), transparent 33%),
      linear-gradient(135deg, #0d2230 0%, #143b50 58%, #09647e 100%);
  }

  #rk-grant-guide .rk-grant-hero::before,
  #rk-grant-guide .rk-grant-hero::after {
    content: "";
    position: absolute;
    z-index: -1;
    border-radius: 50%;
    pointer-events: none;
  }

  #rk-grant-guide .rk-grant-hero::before {
    right: -120px;
    bottom: -175px;
    width: 400px;
    height: 400px;
    border: 58px solid rgba(255, 255, 255, 0.055);
  }

  #rk-grant-guide .rk-grant-hero::after {
    right: 145px;
    bottom: -125px;
    width: 235px;
    height: 235px;
    border: 34px solid rgba(255, 98, 56, 0.12);
  }

  #rk-grant-guide .rk-grant-badge {
    display: inline-flex;
    gap: 10px;
    align-items: center;
    margin: 0 0 24px;
    padding: 8px 15px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 999px;
    color: var(--rk-white);
    background: rgba(255, 255, 255, 0.08);
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-grant-guide .rk-grant-badge::before {
    content: "";
    width: 10px;
    height: 10px;
    flex: 0 0 10px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 98, 56, 0.18);
  }

  #rk-grant-guide .rk-grant-hero h2 {
    max-width: 1040px;
    margin-bottom: 24px;
    color: var(--rk-white);
    font-size: clamp(2rem, 5.05vw, 3.85rem);
    letter-spacing: -0.055em;
  }

  #rk-grant-guide .rk-grant-hero h2 span {
    color: #83edf5;
  }

  #rk-grant-guide .rk-grant-hook {
    max-width: 930px;
    margin: 0 0 21px;
    padding: 19px 21px;
    border-left: 5px solid var(--rk-orange);
    border-radius: 0 15px 15px 0;
    background: rgba(255, 255, 255, 0.09);
  }

  #rk-grant-guide .rk-grant-hook p,
  #rk-grant-guide .rk-grant-hook strong,
  #rk-grant-guide .rk-grant-hero-lead {
    color: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-hook p {
    margin: 0;
    font-size: clamp(1rem, 2vw, 1.16rem);
    line-height: 1.67;
  }

  #rk-grant-guide .rk-grant-hero-lead {
    max-width: 930px;
    font-size: 1.03rem;
  }

  #rk-grant-guide .rk-grant-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    margin-top: 24px;
    color: #cde0e7;
    font-size: 0.72rem;
    font-weight: 770;
  }

  #rk-grant-guide .rk-grant-hero-meta span::before {
    content: "•";
    margin-right: 8px;
    color: var(--rk-orange);
  }

  #rk-grant-guide .rk-grant-author-strip {
    display: flex;
    gap: 13px;
    align-items: center;
    margin-top: 26px;
  }

  #rk-grant-guide .rk-grant-author-strip img {
    width: 54px;
    height: 54px;
    flex: 0 0 54px;
    border: 3px solid rgba(255, 255, 255, 0.85);
    border-radius: 50%;
    object-fit: cover;
  }

  #rk-grant-guide .rk-grant-author-strip b,
  #rk-grant-guide .rk-grant-author-strip small {
    display: block;
  }

  #rk-grant-guide .rk-grant-author-strip b {
    color: var(--rk-white);
    font-size: 0.88rem;
  }

  #rk-grant-guide .rk-grant-author-strip small {
    color: #cde0e7;
    font-size: 0.7rem;
    line-height: 1.45;
  }

  #rk-grant-guide .rk-grant-content {
    padding: clamp(30px, 5.7vw, 72px);
  }

  #rk-grant-guide .rk-grant-learn {
    margin-bottom: 36px;
  }

  #rk-grant-guide .rk-grant-learn > strong {
    display: block;
    margin-bottom: 16px;
    font-size: 1.12rem;
  }

  #rk-grant-guide .rk-grant-learn-grid,
  #rk-grant-guide .rk-grant-card-grid,
  #rk-grant-guide .rk-grant-error-grid,
  #rk-grant-guide .rk-grant-check-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
  }

  #rk-grant-guide .rk-grant-learn-card,
  #rk-grant-guide .rk-grant-card,
  #rk-grant-guide .rk-grant-error,
  #rk-grant-guide .rk-grant-check {
    min-width: 0;
    padding: 21px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-soft);
  }

  #rk-grant-guide .rk-grant-learn-card {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 14px;
    align-items: start;
  }

  #rk-grant-guide .rk-grant-no,
  #rk-grant-guide .rk-grant-card-icon,
  #rk-grant-guide .rk-grant-error-no,
  #rk-grant-guide .rk-grant-check-no {
    display: grid;
    width: 46px;
    height: 46px;
    place-items: center;
    border-radius: 14px;
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.72rem;
    font-weight: 900;
  }

  #rk-grant-guide .rk-grant-learn-card h4,
  #rk-grant-guide .rk-grant-learn-card p,
  #rk-grant-guide .rk-grant-card h4,
  #rk-grant-guide .rk-grant-card p,
  #rk-grant-guide .rk-grant-error h4,
  #rk-grant-guide .rk-grant-error p,
  #rk-grant-guide .rk-grant-check h4,
  #rk-grant-guide .rk-grant-check p {
    margin: 0;
  }

  #rk-grant-guide .rk-grant-learn-card p,
  #rk-grant-guide .rk-grant-card p,
  #rk-grant-guide .rk-grant-error p,
  #rk-grant-guide .rk-grant-check p {
    margin-top: 6px;
    font-size: 0.84rem;
    line-height: 1.58;
  }

  #rk-grant-guide .rk-grant-nav {
    margin-bottom: 46px;
    padding: 22px;
    border: 1px solid #cce4ec;
    border-radius: 19px;
    background: var(--rk-cyan-soft);
  }

  #rk-grant-guide .rk-grant-nav > strong {
    display: block;
    margin-bottom: 12px;
  }

  #rk-grant-guide .rk-grant-nav-links {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }

  #rk-grant-guide .rk-grant-nav a {
    padding: 7px 11px;
    border: 1px solid #bfdbe5;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.72rem;
    text-decoration: none;
  }

  #rk-grant-guide .rk-grant-nav a:hover {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-grant-guide .rk-grant-section {
    margin-top: 64px;
  }

  #rk-grant-guide .rk-grant-section-head {
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr);
    gap: 17px;
    align-items: start;
    margin-bottom: 25px;
  }

  #rk-grant-guide .rk-grant-section-head h2,
  #rk-grant-guide .rk-grant-section-head p {
    margin: 0;
  }

  #rk-grant-guide .rk-grant-section-head p {
    margin-top: 8px;
    font-size: 0.88rem;
  }

  #rk-grant-guide .rk-grant-section-no {
    display: grid;
    width: 52px;
    height: 52px;
    place-items: center;
    border-radius: 16px;
    color: var(--rk-white);
    background: linear-gradient(145deg, var(--rk-orange), var(--rk-red));
    font-size: 0.78rem;
    font-weight: 900;
    box-shadow: 0 11px 23px rgba(216, 60, 47, 0.2);
  }

  #rk-grant-guide .rk-grant-answer,
  #rk-grant-guide .rk-grant-truth,
  #rk-grant-guide .rk-grant-warning,
  #rk-grant-guide .rk-grant-note,
  #rk-grant-guide .rk-grant-formula {
    margin: 24px 0;
    padding: 24px;
    border-radius: 20px;
  }

  #rk-grant-guide .rk-grant-answer {
    border: 1px solid #bde3eb;
    border-left: 6px solid var(--rk-cyan);
    background: var(--rk-cyan-soft);
  }

  #rk-grant-guide .rk-grant-truth {
    border: 1px solid #f2c5b6;
    border-left: 6px solid var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-grant-guide .rk-grant-warning {
    border: 1px solid #f0cfd0;
    border-left: 6px solid var(--rk-red);
    background: #fff5f5;
  }

  #rk-grant-guide .rk-grant-note {
    border: 1px solid #cbe6da;
    border-left: 6px solid var(--rk-green);
    background: var(--rk-green-soft);
  }

  #rk-grant-guide .rk-grant-answer p,
  #rk-grant-guide .rk-grant-truth p,
  #rk-grant-guide .rk-grant-warning p,
  #rk-grant-guide .rk-grant-note p,
  #rk-grant-guide .rk-grant-formula p {
    margin: 0;
  }

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

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

  #rk-grant-guide .rk-grant-card {
    background: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-card-icon {
    margin-bottom: 15px;
    background: linear-gradient(145deg, var(--rk-blue), var(--rk-cyan));
  }

  #rk-grant-guide .rk-grant-list {
    margin: 18px 0 24px;
    padding: 0;
    list-style: none;
  }

  #rk-grant-guide .rk-grant-list li {
    position: relative;
    margin: 9px 0;
    padding-left: 31px;
    color: var(--rk-text);
  }

  #rk-grant-guide .rk-grant-list li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 0.08em;
    display: grid;
    width: 20px;
    height: 20px;
    place-items: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    font-size: 0.66rem;
    font-weight: 900;
  }

  #rk-grant-guide .rk-grant-table-wrap {
    margin: 24px 0;
  }

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

  #rk-grant-guide .rk-grant-table th,
  #rk-grant-guide .rk-grant-table td {
    overflow-wrap: anywhere;
    padding: 15px 16px;
    border-right: 1px solid var(--rk-line);
    border-bottom: 1px solid var(--rk-line);
    text-align: left;
    vertical-align: top;
  }

  #rk-grant-guide .rk-grant-table th:last-child,
  #rk-grant-guide .rk-grant-table td:last-child {
    border-right: 0;
  }

  #rk-grant-guide .rk-grant-table tr:last-child td {
    border-bottom: 0;
  }

  #rk-grant-guide .rk-grant-table th {
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.76rem;
    line-height: 1.4;
  }

  #rk-grant-guide .rk-grant-table td {
    color: var(--rk-text);
    font-size: 0.8rem;
    line-height: 1.55;
  }

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

  #rk-grant-guide .rk-grant-flow {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 9px;
    margin: 25px 0 18px;
  }

  #rk-grant-guide .rk-grant-flow-step {
    min-width: 0;
    padding: 16px 12px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font: inherit;
    font-size: 0.74rem;
    font-weight: 850;
    line-height: 1.4;
    cursor: pointer;
  }

  #rk-grant-guide .rk-grant-flow-step:hover,
  #rk-grant-guide .rk-grant-flow-step.is-active {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-grant-guide .rk-grant-flow-detail {
    min-height: 150px;
    padding: 23px;
    border: 1px solid #cde5ec;
    border-radius: 19px;
    background: var(--rk-cyan-soft);
  }

  #rk-grant-guide .rk-grant-flow-detail h3,
  #rk-grant-guide .rk-grant-flow-detail p {
    margin: 0;
  }

  #rk-grant-guide .rk-grant-flow-detail p {
    margin-top: 9px;
  }

  #rk-grant-guide .rk-grant-formula {
    border: 1px solid #c6dce5;
    background: var(--rk-dark);
  }

  #rk-grant-guide .rk-grant-formula strong,
  #rk-grant-guide .rk-grant-formula p,
  #rk-grant-guide .rk-grant-formula code {
    color: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-formula code {
    display: block;
    margin: 13px 0;
    padding: 15px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.07);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.82rem;
    line-height: 1.65;
    white-space: normal;
  }

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

  #rk-grant-guide .rk-grant-architecture {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-soft);
  }

  #rk-grant-guide .rk-grant-architecture > span {
    display: inline-flex;
    margin-bottom: 12px;
    padding: 6px 10px;
    border-radius: 999px;
    color: var(--rk-white);
    background: var(--rk-orange);
    font-size: 0.68rem;
    font-weight: 900;
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }

  #rk-grant-guide .rk-grant-nodes {
    display: grid;
    gap: 8px;
    margin: 17px 0;
  }

  #rk-grant-guide .rk-grant-node {
    position: relative;
    padding: 12px;
    border: 1px solid #cbdde5;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.76rem;
    font-weight: 820;
    text-align: center;
  }

  #rk-grant-guide .rk-grant-node + .rk-grant-node::before {
    content: "↓";
    position: absolute;
    top: -16px;
    left: 50%;
    color: var(--rk-orange);
    font-size: 1rem;
    transform: translateX(-50%);
  }

  #rk-grant-guide .rk-grant-architecture p {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.58;
  }

  #rk-grant-guide .rk-grant-lab {
    overflow: hidden;
    margin: 28px 0;
    border: 1px solid #c9e1e9;
    border-radius: 25px;
    background: var(--rk-white);
    box-shadow: 0 18px 45px rgba(16, 37, 54, 0.1);
  }

  #rk-grant-guide .rk-grant-lab-head {
    padding: 25px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-grant-guide .rk-grant-lab-head h3,
  #rk-grant-guide .rk-grant-lab-head p {
    margin: 0;
    color: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-lab-head p {
    margin-top: 8px;
    color: #cfe2e8;
    font-size: 0.87rem;
  }

  #rk-grant-guide .rk-grant-presets {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 17px;
  }

  #rk-grant-guide .rk-grant-preset {
    padding: 8px 12px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 999px;
    color: var(--rk-white);
    background: rgba(255, 255, 255, 0.08);
    font: inherit;
    font-size: 0.7rem;
    font-weight: 850;
    cursor: pointer;
  }

  #rk-grant-guide .rk-grant-preset:hover,
  #rk-grant-guide .rk-grant-preset.is-active {
    color: var(--rk-dark);
    border-color: var(--rk-cyan);
    background: var(--rk-cyan);
  }

  #rk-grant-guide .rk-grant-lab-grid {
    display: grid;
    grid-template-columns: minmax(280px, 0.92fr) minmax(0, 1.35fr);
    gap: 0;
  }

  #rk-grant-guide .rk-grant-controls {
    padding: 25px;
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
  }

  #rk-grant-guide .rk-grant-control {
    margin-bottom: 19px;
  }

  #rk-grant-guide .rk-grant-control:last-child {
    margin-bottom: 0;
  }

  #rk-grant-guide .rk-grant-control label {
    display: flex;
    gap: 10px;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
    color: var(--rk-dark);
    font-size: 0.76rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-grant-guide .rk-grant-control output {
    flex: 0 0 auto;
    padding: 4px 8px;
    border-radius: 8px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.7rem;
  }

  #rk-grant-guide .rk-grant-control input[type="range"] {
    width: 100%;
    margin: 0;
    accent-color: var(--rk-orange);
    cursor: pointer;
  }

  #rk-grant-guide .rk-grant-visual {
    min-width: 0;
    padding: 25px;
  }

  #rk-grant-guide .rk-grant-results {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 16px;
  }

  #rk-grant-guide .rk-grant-result {
    min-width: 0;
    padding: 15px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }

  #rk-grant-guide .rk-grant-result span,
  #rk-grant-guide .rk-grant-result strong {
    display: block;
  }

  #rk-grant-guide .rk-grant-result span {
    color: var(--rk-muted);
    font-size: 0.66rem;
    font-weight: 760;
    line-height: 1.35;
  }

  #rk-grant-guide .rk-grant-result strong {
    margin-top: 5px;
    color: var(--rk-dark);
    font-size: 1.28rem;
    line-height: 1.15;
    overflow-wrap: anywhere;
  }

  #rk-grant-guide .rk-grant-chart {
    width: 100%;
    min-height: 330px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: linear-gradient(180deg, #fbfeff, #f3f8fa);
  }

  #rk-grant-guide .rk-grant-chart .rk-grid-line {
    stroke: #d9e6ec;
    stroke-width: 1;
  }

  #rk-grant-guide .rk-grant-chart .rk-axis {
    stroke: #8194a1;
    stroke-width: 1.4;
  }

  #rk-grant-guide .rk-grant-chart .rk-axis-label,
  #rk-grant-guide .rk-grant-chart .rk-tick {
    fill: #5f7381;
    font-family: Inter, ui-sans-serif, system-ui, sans-serif;
    font-size: 11px;
  }

  #rk-grant-guide .rk-grant-chart .rk-curve {
    fill: none;
    stroke: var(--rk-blue);
    stroke-width: 5;
    stroke-linecap: round;
  }

  #rk-grant-guide .rk-grant-chart .rk-dot {
    fill: var(--rk-orange);
    stroke: var(--rk-white);
    stroke-width: 4;
  }

  #rk-grant-guide .rk-grant-chart .rk-guide {
    stroke: var(--rk-orange);
    stroke-width: 1.5;
    stroke-dasharray: 5 5;
  }

  #rk-grant-guide .rk-grant-status {
    margin-top: 14px;
    padding: 15px;
    border-radius: 13px;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    font-size: 0.78rem;
    font-weight: 760;
    line-height: 1.55;
  }

  #rk-grant-guide .rk-grant-disclaimer {
    padding: 0 25px 24px;
    color: var(--rk-muted);
    font-size: 0.72rem;
    line-height: 1.55;
  }

  #rk-grant-guide .rk-grant-number-input {
    width: 100%;
    min-height: 46px;
    padding: 10px 12px;
    border: 1px solid #bfd3dc;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font: inherit;
    font-size: 0.82rem;
    font-weight: 760;
  }

  #rk-grant-guide .rk-grant-number-input:focus-visible,
  #rk-grant-guide button:focus-visible,
  #rk-grant-guide a:focus-visible,
  #rk-grant-guide summary:focus-visible {
    outline: 3px solid rgba(40, 201, 218, 0.42);
    outline-offset: 3px;
  }

  #rk-grant-guide .rk-grant-plan-wrap {
    padding: 14px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: linear-gradient(180deg, #fbfeff, #f1f7fa);
  }

  #rk-grant-guide .rk-grant-plan {
    display: block;
    width: 100%;
    min-height: 330px;
    border-radius: 12px;
    background: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-plan .rk-grant-room {
    fill: #f7fbfd;
    stroke: var(--rk-dark);
    stroke-width: 3;
  }

  #rk-grant-guide .rk-grant-plan .rk-grant-zone {
    fill: rgba(255, 98, 56, 0.19);
    stroke: var(--rk-orange);
    stroke-width: 2;
    stroke-dasharray: 7 5;
  }

  #rk-grant-guide .rk-grant-plan .rk-grant-glazing {
    stroke: var(--rk-blue);
    stroke-width: 9;
    stroke-linecap: round;
  }

  #rk-grant-guide .rk-grant-plan .rk-grant-pipe-zone {
    fill: none;
    stroke: var(--rk-orange);
    stroke-width: 3;
    stroke-linecap: round;
    stroke-linejoin: round;
  }

  #rk-grant-guide .rk-grant-plan .rk-grant-pipe-main {
    fill: none;
    stroke: var(--rk-cyan);
    stroke-width: 3;
    stroke-linecap: round;
    stroke-linejoin: round;
  }

  #rk-grant-guide .rk-grant-plan text {
    fill: var(--rk-dark);
    font-family: Inter, ui-sans-serif, system-ui, sans-serif;
    font-size: 13px;
    font-weight: 800;
  }

  #rk-grant-guide .rk-grant-plan-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 13px;
    margin-top: 12px;
    color: var(--rk-muted);
    font-size: 0.7rem;
    font-weight: 780;
  }

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

  #rk-grant-guide .rk-grant-plan-legend i {
    display: inline-block;
    width: 23px;
    height: 5px;
    border-radius: 999px;
    background: var(--rk-cyan);
  }

  #rk-grant-guide .rk-grant-plan-legend .zone i {
    background: var(--rk-orange);
  }

  #rk-grant-guide .rk-grant-plan-legend .glass i {
    background: var(--rk-blue);
  }

  #rk-grant-guide .rk-grant-metrics {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 16px;
  }

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

  #rk-grant-guide .rk-grant-metric span,
  #rk-grant-guide .rk-grant-metric strong {
    display: block;
  }

  #rk-grant-guide .rk-grant-metric span {
    color: var(--rk-muted);
    font-size: 0.63rem;
    font-weight: 780;
    line-height: 1.35;
  }

  #rk-grant-guide .rk-grant-metric strong {
    margin-top: 5px;
    color: var(--rk-dark);
    font-size: 1.05rem;
    line-height: 1.2;
  }

  #rk-grant-guide .rk-grant-status.is-warning {
    color: #7c321d;
    background: var(--rk-warm);
  }

  #rk-grant-guide .rk-grant-small {
    color: var(--rk-muted);
    font-size: 0.78rem;
    line-height: 1.62;
  }

  #rk-grant-guide .rk-grant-howto {
    display: grid;
    gap: 12px;
    margin: 25px 0;
    padding: 0;
    list-style: none;
  }

  #rk-grant-guide .rk-grant-howto-step {
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-howto-step > span {
    display: grid;
    width: 52px;
    height: 52px;
    place-items: center;
    border-radius: 16px;
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.8rem;
    font-weight: 900;
  }

  #rk-grant-guide .rk-grant-howto-step h3,
  #rk-grant-guide .rk-grant-howto-step p {
    margin: 0;
  }

  #rk-grant-guide .rk-grant-howto-step p {
    margin-top: 7px;
    font-size: 0.87rem;
  }

  #rk-grant-guide .rk-grant-faq-list {
    display: grid;
    gap: 10px;
  }

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

  #rk-grant-guide .rk-grant-faq summary {
    position: relative;
    padding: 19px 52px 19px 20px;
    color: var(--rk-dark);
    font-weight: 850;
    line-height: 1.45;
    cursor: pointer;
    list-style: none;
  }

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

  #rk-grant-guide .rk-grant-faq summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 18px;
    display: grid;
    width: 28px;
    height: 28px;
    place-items: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    transform: translateY(-50%);
  }

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

  #rk-grant-guide .rk-grant-faq-answer {
    padding: 0 20px 19px;
  }

  #rk-grant-guide .rk-grant-faq-answer p {
    margin: 0;
    font-size: 0.88rem;
  }

  #rk-grant-guide .rk-grant-sources {
    margin-top: 28px;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    color: var(--rk-muted);
    background: var(--rk-soft);
    font-size: 0.76rem;
    line-height: 1.7;
  }

  #rk-grant-guide .rk-grant-sources > strong {
    display: block;
    margin-bottom: 8px;
  }

  #rk-grant-guide .rk-grant-cta {
    margin-top: 58px;
    padding: clamp(28px, 5vw, 48px);
    border-radius: 26px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 92% 12%, rgba(255, 98, 56, 0.3), transparent 33%),
      linear-gradient(135deg, #102536, #174155);
    box-shadow: 0 20px 45px rgba(16, 37, 54, 0.16);
  }

  #rk-grant-guide .rk-grant-cta h3,
  #rk-grant-guide .rk-grant-cta p,
  #rk-grant-guide .rk-grant-cta strong {
    color: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-cta p {
    max-width: 880px;
  }

  #rk-grant-guide .rk-grant-cta-link {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 56px;
    margin-top: 7px;
    padding: 15px 24px;
    border-radius: 14px;
    color: var(--rk-white) !important;
    background: linear-gradient(90deg, var(--rk-orange), #f04432);
    box-shadow: 0 14px 28px rgba(216, 60, 47, 0.24);
    font-size: 0.88rem;
    font-weight: 900;
    text-align: center;
    text-decoration: none !important;
  }

  #rk-grant-guide .rk-grant-cta-link:hover {
    color: var(--rk-white) !important;
    filter: brightness(1.06);
    transform: translateY(-1px);
  }

  #rk-grant-guide .rk-grant-cta small {
    display: block;
    margin-top: 14px;
    color: #bdd1da;
    font-size: 0.7rem;
    line-height: 1.5;
  }

  #rk-grant-guide .rk-grant-author-box {
    overflow: hidden;
    margin-top: 30px;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-author-head {
    display: flex;
    gap: 20px;
    justify-content: space-between;
    align-items: center;
    padding: 28px;
    color: var(--rk-white);
    border-bottom: 5px solid var(--rk-cyan);
    background: var(--rk-dark);
  }

  #rk-grant-guide .rk-grant-author-head h3,
  #rk-grant-guide .rk-grant-author-head p {
    margin: 0;
    color: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-author-head p {
    margin-top: 6px;
    color: #cde0e7;
    font-size: 0.82rem;
  }

  #rk-grant-guide .rk-grant-author-mark {
    flex: 0 0 auto;
    padding: 10px 15px;
    border: 1px solid rgba(40, 201, 218, 0.35);
    border-radius: 13px;
    color: #84edf5;
    background: rgba(40, 201, 218, 0.08);
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
  }

  #rk-grant-guide .rk-grant-author-main {
    display: grid;
    grid-template-columns: 310px minmax(0, 1fr);
  }

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

  #rk-grant-guide .rk-grant-author-profile img {
    width: 174px;
    height: 174px;
    border: 8px solid var(--rk-white);
    border-radius: 50%;
    object-fit: cover;
    box-shadow: 0 16px 34px rgba(16, 37, 54, 0.14);
  }

  #rk-grant-guide .rk-grant-author-profile h4 {
    margin: 18px 0 7px;
    font-size: 1.36rem;
  }

  #rk-grant-guide .rk-grant-author-role {
    display: block;
    color: var(--rk-blue);
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.06em;
    line-height: 1.6;
    text-transform: uppercase;
  }

  #rk-grant-guide .rk-grant-author-content {
    min-width: 0;
    padding: 32px;
  }

  #rk-grant-guide .rk-grant-quote {
    position: relative;
    margin-bottom: 22px;
    padding: 23px 23px 23px 61px;
    border-radius: 18px;
    background: var(--rk-cyan-soft);
  }

  #rk-grant-guide .rk-grant-quote::before {
    content: "“";
    position: absolute;
    top: 3px;
    left: 18px;
    color: var(--rk-cyan);
    font-family: Georgia, serif;
    font-size: 4rem;
    line-height: 1;
  }

  #rk-grant-guide .rk-grant-quote blockquote {
    margin: 0;
    color: var(--rk-dark);
    font-size: 1.03rem;
    font-style: italic;
    font-weight: 790;
    line-height: 1.7;
  }

  #rk-grant-guide .rk-grant-tab-buttons {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border: 1px solid var(--rk-line);
    border-radius: 14px 14px 0 0;
    overflow: hidden;
  }

  #rk-grant-guide .rk-grant-tab-button {
    min-width: 0;
    padding: 13px 10px;
    border: 0;
    border-right: 1px solid var(--rk-line);
    color: var(--rk-muted);
    background: var(--rk-soft);
    font: inherit;
    font-size: 0.72rem;
    font-weight: 900;
    text-transform: uppercase;
    cursor: pointer;
  }

  #rk-grant-guide .rk-grant-tab-button:last-child {
    border-right: 0;
  }

  #rk-grant-guide .rk-grant-tab-button.is-active {
    color: var(--rk-blue);
    background: var(--rk-white);
    box-shadow: inset 0 -4px 0 var(--rk-blue);
  }

  #rk-grant-guide .rk-grant-tab-panel {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 14px 14px;
  }

  #rk-grant-guide .rk-grant-tab-panel[hidden] {
    display: none !important;
  }

  #rk-grant-guide .rk-grant-tab-panel p {
    margin: 0;
    font-size: 0.86rem;
  }

  #rk-grant-guide .rk-grant-portals {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-top: 14px;
  }

  #rk-grant-guide .rk-grant-portals a {
    padding: 8px 12px;
    border: 1px solid #c8dbe4;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.75rem;
    text-decoration: none;
  }

  #rk-grant-guide .rk-grant-portals a:hover {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  @media (max-width: 1120px) {
    #rk-grant-guide .rk-grant-card-grid.four {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #rk-grant-guide .rk-grant-architectures,
    #rk-grant-guide .rk-grant-card-grid.three {
      grid-template-columns: 1fr;
    }

    #rk-grant-guide .rk-grant-author-main {
      grid-template-columns: 260px minmax(0, 1fr);
    }
  }

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

    #rk-grant-guide .rk-grant-lab-grid,
    #rk-grant-guide .rk-grant-author-main {
      grid-template-columns: 1fr;
    }

    #rk-grant-guide .rk-grant-controls,
    #rk-grant-guide .rk-grant-author-profile {
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }

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

    #rk-grant-guide .rk-grant-flow-step:last-child {
      grid-column: 1 / -1;
    }

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

  @media (max-width: 720px) {
    #rk-grant-guide {
      margin: 18px auto 50px;
      font-size: 16px;
    }

    #rk-grant-guide .rk-grant-shell {
      border-radius: 20px;
    }

    #rk-grant-guide .rk-grant-hero,
    #rk-grant-guide .rk-grant-content {
      padding: 25px 18px;
    }

    #rk-grant-guide .rk-grant-learn-grid,
    #rk-grant-guide .rk-grant-card-grid,
    #rk-grant-guide .rk-grant-card-grid.four,
    #rk-grant-guide .rk-grant-error-grid,
    #rk-grant-guide .rk-grant-check-grid,
    #rk-grant-guide .rk-grant-results {
      grid-template-columns: 1fr;
    }

    #rk-grant-guide .rk-grant-section {
      margin-top: 48px;
    }

    #rk-grant-guide .rk-grant-section-head {
      grid-template-columns: 44px minmax(0, 1fr);
      gap: 12px;
    }

    #rk-grant-guide .rk-grant-section-no {
      width: 42px;
      height: 42px;
      border-radius: 13px;
    }

    #rk-grant-guide .rk-grant-table,
    #rk-grant-guide .rk-grant-table tbody,
    #rk-grant-guide .rk-grant-table tr,
    #rk-grant-guide .rk-grant-table td {
      display: block;
      width: 100%;
    }

    #rk-grant-guide .rk-grant-table {
      border: 0;
      background: transparent;
    }

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

    #rk-grant-guide .rk-grant-table tr {
      margin-bottom: 13px;
      border: 1px solid var(--rk-line);
      border-radius: 16px;
      overflow: hidden;
      background: var(--rk-white);
    }

    #rk-grant-guide .rk-grant-table td,
    #rk-grant-guide .rk-grant-table tr:last-child td {
      display: grid;
      grid-template-columns: minmax(105px, 0.42fr) minmax(0, 0.58fr);
      gap: 10px;
      padding: 13px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white) !important;
    }

    #rk-grant-guide .rk-grant-table td:last-child {
      border-bottom: 0;
    }

    #rk-grant-guide .rk-grant-table td::before {
      content: attr(data-label);
      color: var(--rk-dark);
      font-weight: 900;
    }

    #rk-grant-guide .rk-grant-chart {
      min-height: 265px;
    }

    #rk-grant-guide .rk-grant-plan {
      min-height: 265px;
    }

    #rk-grant-guide .rk-grant-metrics {
      grid-template-columns: 1fr;
    }

    #rk-grant-guide .rk-grant-howto-step {
      grid-template-columns: 44px minmax(0, 1fr);
      gap: 12px;
      padding: 16px;
    }

    #rk-grant-guide .rk-grant-howto-step > span {
      width: 42px;
      height: 42px;
      border-radius: 13px;
    }

    #rk-grant-guide .rk-grant-author-head {
      align-items: flex-start;
      flex-direction: column;
      padding: 22px;
    }

    #rk-grant-guide .rk-grant-author-content,
    #rk-grant-guide .rk-grant-author-profile {
      padding: 22px;
    }

    #rk-grant-guide .rk-grant-tab-buttons {
      grid-template-columns: 1fr;
    }

    #rk-grant-guide .rk-grant-tab-button {
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }

    #rk-grant-guide .rk-grant-tab-button:last-child {
      border-bottom: 0;
    }

    #rk-grant-guide .rk-grant-cta-link {
      width: 100%;
    }
  }

  #rk-grant-guide .rk-grant-program-switch {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-top: 18px;
  }

  #rk-grant-guide .rk-grant-program-button {
    min-height: 52px;
    padding: 12px 15px;
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: 13px;
    color: var(--rk-white);
    background: rgba(255, 255, 255, 0.08);
    font: inherit;
    font-size: 0.76rem;
    font-weight: 900;
    line-height: 1.35;
    cursor: pointer;
  }

  #rk-grant-guide .rk-grant-program-button:hover,
  #rk-grant-guide .rk-grant-program-button.is-active {
    color: var(--rk-dark);
    border-color: var(--rk-cyan);
    background: var(--rk-cyan);
  }

  #rk-grant-guide .rk-grant-program-panel[hidden] {
    display: none !important;
  }

  #rk-grant-guide .rk-grant-program-title {
    margin: 0 0 18px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--rk-line);
    color: var(--rk-dark);
    font-size: 0.88rem;
    font-weight: 900;
  }

  #rk-grant-guide .rk-grant-select {
    width: 100%;
    min-height: 46px;
    padding: 10px 38px 10px 12px;
    border: 1px solid #bfd3dc;
    border-radius: 11px;
    color: var(--rk-dark);
    background-color: var(--rk-white);
    font: inherit;
    font-size: 0.8rem;
    font-weight: 760;
    cursor: pointer;
  }

  #rk-grant-guide .rk-grant-control-note {
    display: block;
    margin-top: 6px;
    color: var(--rk-muted);
    font-size: 0.66rem;
    line-height: 1.5;
  }

  #rk-grant-guide .rk-grant-estimate {
    position: relative;
    overflow: hidden;
    margin-bottom: 16px;
    padding: 25px;
    border-radius: 19px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 95% 0%, rgba(255, 98, 56, 0.31), transparent 36%),
      linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-grant-guide .rk-grant-estimate span,
  #rk-grant-guide .rk-grant-estimate strong,
  #rk-grant-guide .rk-grant-estimate small {
    display: block;
    color: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-estimate span {
    font-size: 0.7rem;
    font-weight: 850;
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }

  #rk-grant-guide .rk-grant-estimate strong {
    margin-top: 7px;
    font-size: clamp(2rem, 5vw, 3.45rem);
    line-height: 1;
  }

  #rk-grant-guide .rk-grant-estimate small {
    max-width: 620px;
    margin-top: 12px;
    color: #cde0e7;
    font-size: 0.72rem;
    line-height: 1.55;
  }

  #rk-grant-guide .rk-grant-limit-bar {
    height: 12px;
    margin: 18px 0 8px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
  }

  #rk-grant-guide .rk-grant-limit-fill {
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-cyan), var(--rk-orange));
    transition: width 220ms ease;
  }

  #rk-grant-guide .rk-grant-result-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 14px;
  }

  #rk-grant-guide .rk-grant-result-card {
    min-width: 0;
    padding: 15px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }

  #rk-grant-guide .rk-grant-result-card span,
  #rk-grant-guide .rk-grant-result-card strong {
    display: block;
  }

  #rk-grant-guide .rk-grant-result-card span {
    color: var(--rk-muted);
    font-size: 0.65rem;
    font-weight: 760;
    line-height: 1.4;
  }

  #rk-grant-guide .rk-grant-result-card strong {
    margin-top: 5px;
    color: var(--rk-dark);
    font-size: 1.05rem;
    line-height: 1.3;
  }

  #rk-grant-guide .rk-grant-status-list {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  #rk-grant-guide .rk-grant-status-list li {
    position: relative;
    margin: 7px 0;
    padding-left: 24px;
    color: var(--rk-text);
    font-size: 0.76rem;
    line-height: 1.55;
  }

  #rk-grant-guide .rk-grant-status-list li::before {
    content: "i";
    position: absolute;
    left: 0;
    top: 0.2em;
    display: grid;
    width: 16px;
    height: 16px;
    place-items: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.58rem;
    font-weight: 900;
  }

  #rk-grant-guide .rk-grant-status-list li.is-alert::before {
    content: "!";
    background: var(--rk-orange);
  }

  #rk-grant-guide .rk-grant-chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 16px 0;
  }

  #rk-grant-guide .rk-grant-chip {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 6px 10px;
    border: 1px solid #c6dce5;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.68rem;
    font-weight: 850;
    line-height: 1.35;
  }

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

  #rk-grant-guide .rk-grant-example {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-top: 5px solid var(--rk-cyan);
    border-radius: 18px;
    background: var(--rk-white);
  }

  #rk-grant-guide .rk-grant-example:nth-child(2) {
    border-top-color: var(--rk-orange);
  }

  #rk-grant-guide .rk-grant-example:nth-child(3) {
    border-top-color: var(--rk-blue);
  }

  #rk-grant-guide .rk-grant-example h3,
  #rk-grant-guide .rk-grant-example p {
    margin: 0;
  }

  #rk-grant-guide .rk-grant-example p {
    margin-top: 8px;
    font-size: 0.8rem;
    line-height: 1.6;
  }

  #rk-grant-guide .rk-grant-example code {
    display: block;
    margin-top: 14px;
    padding: 13px;
    border-radius: 11px;
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.75rem;
    line-height: 1.6;
    white-space: normal;
  }

  #rk-grant-guide .rk-grant-verdict {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(220px, 0.75fr);
    gap: 22px;
    align-items: center;
    margin: 26px 0;
    padding: 26px;
    border: 1px solid #f0c7b8;
    border-radius: 22px;
    background: var(--rk-warm);
  }

  #rk-grant-guide .rk-grant-verdict h3,
  #rk-grant-guide .rk-grant-verdict p {
    margin: 0;
  }

  #rk-grant-guide .rk-grant-verdict p {
    margin-top: 8px;
  }

  #rk-grant-guide .rk-grant-verdict-mark {
    padding: 22px;
    border-radius: 17px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-orange), var(--rk-red));
    font-size: 1.25rem;
    font-weight: 900;
    line-height: 1.2;
    text-align: center;
  }

  @media (max-width: 980px) {
    #rk-grant-guide .rk-grant-example-grid,
    #rk-grant-guide .rk-grant-verdict {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 720px) {
    #rk-grant-guide .rk-grant-program-switch,
    #rk-grant-guide .rk-grant-result-grid {
      grid-template-columns: 1fr;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-grant-guide *,
    #rk-grant-guide *::before,
    #rk-grant-guide *::after {
      scroll-behavior: auto !important;
      transition: none !important;
      animation: none !important;
    }
  }
</style>

<article id="rk-grant-guide" itemscope="" itemtype="https://schema.org/TechArticle">
  <div class="rk-grant-shell">
    <div class="rk-grant-progress-track" aria-hidden="true"><div class="rk-grant-progress"></div></div>

    <header class="rk-grant-hero">
      <div class="rk-grant-badge">Dotacje 2026 • stan zasad: 24 sierpnia 2026 r.</div>
      <h2 itemprop="headline">Projekt ogrzewania podłogowego a dotacje 2026 – <span>co naprawdę można sfinansować?</span></h2>
      <div class="rk-grant-hook">
        <p><strong>Czyste Powietrze może obejmować modernizację lub wykonanie instalacji c.o., natomiast Moje Ciepło finansuje zakup i montaż pompy ciepła w nowym domu.</strong> Samodzielny projekt ogrzewania podłogowego nie jest automatycznie osobną pozycją dotacji. To ważne rozróżnienie, bo dokumentacja techniczna może przesądzić o poprawnym działaniu instalacji, ale nie zastępuje audytu, DPAE, świadectwa ani warunków programu.</p>
      </div>
      <p class="rk-grant-hero-lead" itemprop="description">Ten przewodnik porównuje program Czyste Powietrze po zmianach z 20 lipca 2026 r. z programem Moje Ciepło. Pokazuje limity dla instalacji c.o., zasady wsparcia pomp ciepła, wymagane dokumenty, modelowe obliczenia oraz miejsce projektu podłogówki w całym procesie inwestycyjnym.</p>
      <div class="rk-grant-hero-meta">
        <span>Aktualizacja merytoryczna: 24 sierpnia 2026 r.</span>
        <span>Wyłącznie oficjalne źródła programów</span>
        <span>Bez obietnic uzyskania dotacji</span>
      </div>
      <div class="rk-grant-author-strip" itemprop="author" itemscope="" itemtype="https://schema.org/Person">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych" width="54" height="54" loading="eager" itemprop="image">
        <div>
          <b itemprop="name">Robert Kucharski</b>
          <small itemprop="jobTitle">Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</small>
        </div>
      </div>
    </header>

    <div class="rk-grant-content">
      <div class="rk-grant-warning">
        <p><strong>Stan zasad: 24 sierpnia 2026 r.</strong> Programy, listy kosztów kwalifikowanych, dokumenty i terminy mogą się zmieniać. Przed podpisaniem umowy albo poniesieniem wydatku sprawdź aktualne dokumenty programu oraz potwierdź swój przypadek u operatora lub we właściwym WFOŚiGW.</p>
      </div>

      <div class="rk-grant-learn" aria-label="Zakres artykułu">
        <strong>Po lekturze będziesz wiedzieć:</strong>
        <div class="rk-grant-learn-grid">
          <div class="rk-grant-learn-card"><div class="rk-grant-no">01</div><div><h4>Co finansuje Czyste Powietrze</h4><p>Jak czytać kategorię instalacji c.o./c.w.u., limity 8 200, 14 350 i 20 500 zł oraz poziomy 40%, 70% i 100%.</p></div></div>
          <div class="rk-grant-learn-card"><div class="rk-grant-no">02</div><div><h4>Czego nie finansuje Moje Ciepło</h4><p>Dlaczego wsparcie dotyczy pompy ciepła, a nie całej podłogówki ani samodzielnej usługi projektowej.</p></div></div>
          <div class="rk-grant-learn-card"><div class="rk-grant-no">03</div><div><h4>Jakie dokumenty są różne</h4><p>Audyt, DPAE, świadectwo, charakterystyka energetyczna, OZC i projekt instalacji mają inne cele i nie są zamienne.</p></div></div>
          <div class="rk-grant-learn-card"><div class="rk-grant-no">04</div><div><h4>Jak wstępnie policzyć wsparcie</h4><p>Interaktywny kalkulator pokazuje działanie procentu i limitu, a jednocześnie sygnalizuje podstawowe warunki formalne.</p></div></div>
        </div>
      </div>

      <nav class="rk-grant-nav" aria-label="Nawigacja po artykule">
        <strong>Przejdź do sekcji</strong>
        <div class="rk-grant-nav-links">
          <a href="#rk-grant-odpowiedz">Szybka odpowiedź</a>
          <a href="#rk-grant-porownanie">Porównanie programów</a>
          <a href="#rk-grant-czyste">Czyste Powietrze</a>
          <a href="#rk-grant-instalacja">Instalacja c.o.</a>
          <a href="#rk-grant-moje">Moje Ciepło</a>
          <a href="#rk-grant-dokumenty">Dokumenty</a>
          <a href="#rk-grant-kalkulator">Kalkulator</a>
          <a href="#rk-grant-przyklady">Przykłady</a>
          <a href="#rk-grant-projekt">Rola projektu</a>
          <a href="#rk-grant-kroki">Kolejność działań</a>
          <a href="#rk-grant-checklista">Checklista</a>
          <a href="#rk-grant-bledy">Błędy i mity</a>
          <a href="#rk-grant-faq">FAQ</a>
        </div>
      </nav>

      <section class="rk-grant-section" id="rk-grant-odpowiedz" aria-labelledby="rk-grant-h2-1">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">01</div>
          <div>
            <h2 id="rk-grant-h2-1">Projekt ogrzewania podłogowego a dotacje – najkrótsza odpowiedź</h2>
            <p>Najpierw oddzielmy koszt instalacji od kosztu dokumentacji.</p>
          </div>
        </div>

        <div class="rk-grant-answer">
          <p><strong>W programie Czyste Powietrze modernizacja lub wykonanie instalacji grzewczej może być elementem przedsięwzięcia, a aktualny limit dla kategorii instalacji c.o./c.w.u. zależy od poziomu wsparcia.</strong> Z kolei Moje Ciepło współfinansuje zakup i montaż nowej pompy ciepła w nowym domu jednorodzinnym. Nie jest programem dopłat do rur, rozdzielaczy, jastrychu ani projektu podłogówki.</p>
        </div>

        <p>Projekt ogrzewania podłogowego pełni inną funkcję niż dokumenty programu. Odpowiada na pytania: ile ciepła potrzebuje każde pomieszczenie, jaki ma być rozstaw rur, ile pętli trzeba wykonać, jakie będą przepływy, opory i temperatura zasilania. Audyt energetyczny oraz DPAE opisują plan poprawy energetycznej budynku, a świadectwo potwierdza jego stan po zakończeniu. Te opracowania mogą korzystać z podobnych danych, lecz nie można ich traktować jako jednego dokumentu.</p>

        <div class="rk-grant-verdict">
          <div>
            <h3>Najważniejszy wniosek dla inwestora</h3>
            <p>Nie kupuj projektu z założeniem, że jego koszt na pewno zostanie zwrócony. Kupuj go wtedy, gdy chcesz otrzymać instalację policzoną dla konkretnego budynku. Kwalifikowalność osobnej faktury za dokumentację należy potwierdzić przed wydatkiem w aktualnych dokumentach i u operatora lub WFOŚiGW.</p>
          </div>
          <div class="rk-grant-verdict-mark">Projekt techniczny ≠ decyzja o dotacji</div>
        </div>

        <div class="rk-grant-card-grid three">
          <div class="rk-grant-card"><div class="rk-grant-card-icon">CP</div><h4>Czyste Powietrze</h4><p>Istniejący budynek, modernizacja energetyczna, audyt i DPAE przed inwestycją oraz świadectwo po zakończeniu.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">MC</div><h4>Moje Ciepło</h4><p>Nowy dom i wsparcie dla zakupu oraz montażu pompy ciepła spełniającej wymagania programu.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">PRO</div><h4>Projekt podłogówki</h4><p>Dokument wykonawczy dobierający system cieplnie i hydraulicznie; nie jest zamiennikiem dokumentacji dotacyjnej.</p></div>
        </div>
      </section>

      <section class="rk-grant-section" id="rk-grant-porownanie" aria-labelledby="rk-grant-h2-2">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">02</div>
          <div>
            <h2 id="rk-grant-h2-2">Czyste Powietrze czy Moje Ciepło – które zasady dotyczą Twojego domu?</h2>
            <p>Dwa programy rozwiązują inne problemy i nie powinny być opisywane jednym skrótem.</p>
          </div>
        </div>

        <div class="rk-grant-table-wrap">
          <table class="rk-grant-table">
            <thead><tr><th>Kryterium</th><th>Czyste Powietrze</th><th>Moje Ciepło</th><th>Znaczenie dla podłogówki</th></tr></thead>
            <tbody>
              <tr><td data-label="Kryterium"><strong>Rodzaj budynku</strong></td><td data-label="Czyste Powietrze">Istniejący dom albo wydzielony lokal w budynku jednorodzinnym; zasadniczo pozwolenie na budowę do 31.12.2020 r.</td><td data-label="Moje Ciepło">Nowy budynek mieszkalny jednorodzinny według definicji programu.</td><td data-label="Znaczenie">Najpierw wybiera się właściwy program, dopiero potem analizuje zakres kosztów.</td></tr>
              <tr><td data-label="Kryterium"><strong>Główny cel</strong></td><td data-label="Czyste Powietrze">Wymiana nieefektywnego źródła, termomodernizacja oraz poprawa efektywności istniejącego budynku.</td><td data-label="Moje Ciepło">Zakup i montaż nowej pompy ciepła w nowym domu.</td><td data-label="Znaczenie">Podłogówka może należeć do modernizowanej instalacji c.o. w Czystym Powietrzu; w Moim Cieple nie jest osobnym przedmiotem wsparcia.</td></tr>
              <tr><td data-label="Kryterium"><strong>Kluczowy wskaźnik</strong></td><td data-label="Czyste Powietrze">EU do ogrzewania: poniżej 80, 80–140 albo powyżej 140 kWh/(m²·rok).</td><td data-label="Moje Ciepło">EP<sub>H+W</sub> nie większe niż 55 kWh/(m²·rok).</td><td data-label="Znaczenie">EU i EP to różne wskaźniki. Nie wolno ich podstawiać zamiennie.</td></tr>
              <tr><td data-label="Kryterium"><strong>Poziom wsparcia</strong></td><td data-label="Czyste Powietrze">Do 40%, 70% albo 100% kosztów kwalifikowanych, z limitami dla kategorii.</td><td data-label="Moje Ciepło">Do 30%, a dla posiadaczy Karty Dużej Rodziny do 45%, z limitem zależnym od typu pompy.</td><td data-label="Znaczenie">Rzeczywista dotacja to niższa wartość: procent kosztu albo limit programu.</td></tr>
              <tr><td data-label="Kryterium"><strong>Dokument energetyczny</strong></td><td data-label="Czyste Powietrze">Audyt i DPAE przed realizacją, świadectwo charakterystyki energetycznej po zakończeniu.</td><td data-label="Moje Ciepło">Dokumentacja potwierdzająca standard energetyczny i EP<sub>H+W</sub> zgodnie z aktualną listą załączników.</td><td data-label="Znaczenie">Projekt instalacji nie zastępuje żadnego z tych dokumentów.</td></tr>
              <tr><td data-label="Kryterium"><strong>Zakres związany z podłogówką</strong></td><td data-label="Czyste Powietrze">Może mieścić się w kwalifikowanej modernizacji lub wykonaniu instalacji c.o., jeśli spełnia opis kosztu i warunki przedsięwzięcia.</td><td data-label="Moje Ciepło">Program obejmuje pompę ciepła, nie kompletną instalację ogrzewania podłogowego.</td><td data-label="Znaczenie">Nie zakładaj automatycznie refundacji osobnej faktury za projekt.</td></tr>
              <tr><td data-label="Kryterium"><strong>Termin</strong></td><td data-label="Czyste Powietrze">Program wieloletni; stosuje się zasady właściwe dla daty złożenia wniosku.</td><td data-label="Moje Ciepło">Nabór do 31.12.2026 r. albo do wyczerpania środków.</td><td data-label="Znaczenie">Data publikacji poradnika nie zastępuje sprawdzenia bieżącego naboru.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-grant-truth"><p><strong>EU to nie EP.</strong> Energia użytkowa do ogrzewania opisuje potrzeby cieplne budynku, natomiast energia pierwotna uwzględnia także sposób dostarczenia energii i współczynniki nakładu. Ten sam dom może mieć różne wartości obu wskaźników.</p></div>
      </section>

      <section class="rk-grant-section" id="rk-grant-czyste" aria-labelledby="rk-grant-h2-3">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">03</div>
          <div>
            <h2 id="rk-grant-h2-3">Czyste Powietrze po 20 lipca 2026 r. – co trzeba sprawdzić?</h2>
            <p>Aktualizacja zasad nie zniosła podstawowych zabezpieczeń programu.</p>
          </div>
        </div>

        <p>Zmiany obowiązujące dla wniosków składanych od 20 lipca 2026 r. ułatwiły między innymi dostęp osobom, które nie spełniały standardowego trzyletniego okresu własności. Nie zmieniły jednak fundamentu programu: nadal funkcjonują audyt i DPAE, świadectwo po realizacji, limity kosztów, poziomy dochodowe, system operatorów oraz zasada jednego beneficjenta i jednego budynku.</p>

        <div class="rk-grant-card-grid four">
          <div class="rk-grant-card"><div class="rk-grant-card-icon">40%</div><h4>Poziom podstawowy</h4><p>Do 40% kosztów kwalifikowanych, z zachowaniem limitu właściwego dla każdej kategorii kosztu.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">70%</div><h4>Poziom podwyższony</h4><p>Do 70% kosztów kwalifikowanych, również ograniczone maksymalnymi kwotami dla pozycji.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">100%</div><h4>Poziom najwyższy</h4><p>Do 100% kosztów kwalifikowanych, ale w aktualnym modelu dotyczy budynków z EU do ogrzewania powyżej 140 kWh/(m²·rok).</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">EU</div><h4>Zakres przedsięwzięcia</h4><p>Próg poniżej 80, 80–140 lub powyżej 140 wpływa na dopuszczalny zakres i wymagany efekt energetyczny.</p></div>
        </div>

        <h3>Własność i wiek budynku</h3>
        <ul class="rk-grant-list">
          <li>standardowo obowiązuje minimalny okres własności określony w programie;</li>
          <li>po zmianach istnieją wyjątki dla spadku i zasiedzenia;</li>
          <li>przy zakupie, darowiźnie albo umowie dożywocia może wystarczyć rok, jeżeli spełnione są warunki dotyczące co najmniej 50% udziału, a przy darowiźnie i dożywociu także relacji ze wstępnymi;</li>
          <li>budynek objęty standardową ścieżką programu powinien mieć pozwolenie na budowę wydane do 31 grudnia 2020 r.</li>
        </ul>

        <h3>Wskaźnik EU a dopuszczalny zakres prac</h3>
        <div class="rk-grant-table-wrap">
          <table class="rk-grant-table">
            <thead><tr><th>EU do ogrzewania przed inwestycją</th><th>Co może wynikać z programu?</th><th>Efekt, który trzeba analizować</th></tr></thead>
            <tbody>
              <tr><td data-label="EU przed"><strong>Poniżej 80 kWh/(m²·rok)</strong></td><td data-label="Zakres">W typowej ścieżce programowej przede wszystkim wymiana źródła ciepła, jeśli jest potrzebna i kwalifikowana.</td><td data-label="Efekt">Po realizacji wskaźnik powinien pozostać poniżej 80.</td></tr>
              <tr><td data-label="EU przed"><strong>80–140 kWh/(m²·rok)</strong></td><td data-label="Zakres">Możliwa ścieżka źródła, termomodernizacji albo połączenia obu elementów, zależnie od stanu budynku.</td><td data-label="Efekt">Przy termomodernizacji cel obejmuje zejście do nie więcej niż 80 i redukcję co najmniej 40%.</td></tr>
              <tr><td data-label="EU przed"><strong>Powyżej 140 kWh/(m²·rok)</strong></td><td data-label="Zakres">Termomodernizacja z ewentualną wymianą źródła, zależnie od istniejącego systemu.</td><td data-label="Efekt">Nie więcej niż 140 po realizacji oraz redukcja wartości co najmniej o 40%.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-grant-note"><p><strong>Nie wybieraj wariantu inwestycji przed audytem.</strong> Audytor ma wskazać stan budynku i racjonalny zakres poprawy, a DPAE porządkuje parametry planowanego przedsięwzięcia. Dopiero na tej podstawie można oceniać rolę źródła ciepła, instalacji i termomodernizacji.</p></div>
      </section>

      <section class="rk-grant-section" id="rk-grant-instalacja" aria-labelledby="rk-grant-h2-4">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">04</div>
          <div>
            <h2 id="rk-grant-h2-4">Czy ogrzewanie podłogowe może być kosztem w Czystym Powietrzu?</h2>
            <p>Taką możliwość analizuje się w kategorii instalacji c.o./c.w.u., a nie jako ogólną obietnicę zwrotu.</p>
          </div>
        </div>

        <p>Oficjalny zakres programu obejmuje modernizację lub wykonanie instalacji grzewczej. W tabeli kosztów kwalifikowanych znajduje się kategoria instalacji c.o./c.w.u. oraz niezbędne prace towarzyszące, takie jak płukanie czy równoważenie hydrauliczne. Oznacza to, że elementy wodnej podłogówki mogą być rozpatrywane jako część kwalifikowanej instalacji, jeżeli wynikają z zatwierdzonego zakresu przedsięwzięcia, spełniają wymagania i są prawidłowo udokumentowane.</p>

        <div class="rk-grant-table-wrap">
          <table class="rk-grant-table">
            <thead><tr><th>Poziom Czystego Powietrza</th><th>Intensywność</th><th>Maksymalna dotacja dla instalacji c.o./c.w.u.</th><th>Jak liczyć?</th></tr></thead>
            <tbody>
              <tr><td data-label="Poziom"><strong>Podstawowy</strong></td><td data-label="Intensywność">do 40% KK</td><td data-label="Limit">8 200 zł</td><td data-label="Obliczenie">Niższa z wartości: 40% kosztu kwalifikowanego albo 8 200 zł.</td></tr>
              <tr><td data-label="Poziom"><strong>Podwyższony</strong></td><td data-label="Intensywność">do 70% KK</td><td data-label="Limit">14 350 zł</td><td data-label="Obliczenie">Niższa z wartości: 70% kosztu kwalifikowanego albo 14 350 zł.</td></tr>
              <tr><td data-label="Poziom"><strong>Najwyższy</strong></td><td data-label="Intensywność">do 100% KK</td><td data-label="Limit">20 500 zł</td><td data-label="Obliczenie">Niższa z wartości: 100% kosztu kwalifikowanego albo 20 500 zł; poziom najwyższy wymaga spełnienia warunków programu, w tym właściwego EU.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-grant-formula">
          <p><strong>Uproszczona zasada liczenia jednej kategorii kosztu:</strong></p>
          <code>Szacunek dotacji = min(koszt kwalifikowany × intensywność, limit kategorii)</code>
          <p>To nie jest kalkulacja całej inwestycji. WFOŚiGW ocenia dokumenty, kwalifikowalność, poziom wsparcia, zgodność realizacji i poprawność rozliczenia.</p>
        </div>

        <h3>Co może tworzyć zakres instalacji podłogowej?</h3>
        <div class="rk-grant-chip-row" aria-label="Przykładowe elementy instalacji">
          <span class="rk-grant-chip">rury grzewcze</span>
          <span class="rk-grant-chip">rozdzielacze</span>
          <span class="rk-grant-chip">szafki i armatura</span>
          <span class="rk-grant-chip">izolacja systemowa</span>
          <span class="rk-grant-chip">regulacja i sterowanie</span>
          <span class="rk-grant-chip">montaż instalacji</span>
          <span class="rk-grant-chip">równoważenie hydrauliczne</span>
          <span class="rk-grant-chip">niezbędne prace towarzyszące</span>
        </div>

        <p>Nie każda warstwa podłogi i nie każda usługa zostanie automatycznie uznana. Przykładowo jastrych może pełnić jednocześnie funkcję konstrukcyjną i instalacyjną, a zakres prac remontowych może wykraczać poza niezbędne wykonanie c.o. Dlatego przed zamówieniem warto uzyskać jednoznaczne potwierdzenie, jak opisać i rozliczyć dany koszt.</p>

        <div class="rk-grant-warning"><p><strong>Osobna faktura za projekt ogrzewania podłogowego nie jest na oficjalnej liście automatycznie wskazana jako odrębna pozycja dotacji.</strong> Jeżeli chcesz ją ująć w kosztach, poproś operatora lub właściwy WFOŚiGW o pisemne potwierdzenie przed zleceniem i wystawieniem faktury.</p></div>
      </section>

      <section class="rk-grant-section" id="rk-grant-moje" aria-labelledby="rk-grant-h2-5">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">05</div>
          <div>
            <h2 id="rk-grant-h2-5">Moje Ciepło 2026 – dotacja na pompę, nie na całą podłogówkę</h2>
            <p>Program wspiera źródło ciepła w nowym budynku o podwyższonym standardzie energetycznym.</p>
          </div>
        </div>

        <div class="rk-grant-answer">
          <p><strong>Moje Ciepło współfinansuje zakup i montaż nowej pompy ciepła wykorzystywanej do ogrzewania albo do ogrzewania i przygotowania c.w.u.</strong> Zakres programu nie oznacza automatycznej dopłaty do ogrzewania podłogowego, rur, rozdzielaczy, wylewki ani osobnego projektu instalacji.</p>
        </div>

        <div class="rk-grant-table-wrap">
          <table class="rk-grant-table">
            <thead><tr><th>Rodzaj pompy</th><th>Standardowa intensywność</th><th>Z Kartą Dużej Rodziny</th><th>Maksymalna dotacja</th></tr></thead>
            <tbody>
              <tr><td data-label="Pompa"><strong>Powietrze/woda</strong></td><td data-label="Standard">do 30% KK</td><td data-label="KDR">do 45% KK</td><td data-label="Limit">7 000 zł</td></tr>
              <tr><td data-label="Pompa"><strong>Powietrze/powietrze w systemie centralnym</strong></td><td data-label="Standard">do 30% KK</td><td data-label="KDR">do 45% KK</td><td data-label="Limit">7 000 zł</td></tr>
              <tr><td data-label="Pompa"><strong>Gruntowa</strong></td><td data-label="Standard">do 30% KK</td><td data-label="KDR">do 45% KK</td><td data-label="Limit">21 000 zł</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-grant-card-grid three">
          <div class="rk-grant-card"><div class="rk-grant-card-icon">55</div><h4>EP<sub>H+W</sub> ≤ 55</h4><p>Nowy budynek musi spełnić limit rocznego zapotrzebowania na nieodnawialną energię pierwotną dla ogrzewania, wentylacji i c.w.u.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">NEW</div><h4>Definicja nowego domu</h4><p>W dniu wniosku budynek nie ma jeszcze zakończenia budowy lub pozwolenia na użytkowanie albo dokument ten złożono nie wcześniej niż 1.01.2021 r.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">0</div><h4>Bez źródła na paliwo stałe</h4><p>W budynku nie może funkcjonować źródło ciepła na paliwo stałe w okresie trwałości inwestycji, zgodnie z zasadami programu.</p></div>
        </div>

        <p>Nabór jest prowadzony do 31 grudnia 2026 r. albo do wyczerpania puli środków. Sam fakt, że pompa współpracuje z podłogówką, nie rozszerza kosztów kwalifikowanych na instalację odbiorczą. Podłogówka ma jednak ogromne znaczenie techniczne: dobrze policzony system niskotemperaturowy może pozwolić pompie pracować z niższą temperaturą zasilania. Zależność tę rozwijamy w poradniku o <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie ogrzewania podłogowego z pompą ciepła</a>.</p>

        <div class="rk-grant-note"><p><strong>Dotacja na pompę nie potwierdza poprawności całej instalacji.</strong> Program weryfikuje warunki wsparcia, natomiast dobór mocy źródła, rozstawów, przepływów i temperatur pozostaje zadaniem projektowym.</p></div>
      </section>

      <section class="rk-grant-section" id="rk-grant-dokumenty" aria-labelledby="rk-grant-h2-6">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">06</div>
          <div>
            <h2 id="rk-grant-h2-6">Audyt, DPAE, świadectwo, OZC i projekt podłogówki – czym się różnią?</h2>
            <p>Najczęstszy błąd polega na nadawaniu jednemu dokumentowi funkcji wszystkich pozostałych.</p>
          </div>
        </div>

        <div class="rk-grant-table-wrap">
          <table class="rk-grant-table">
            <thead><tr><th>Dokument / obliczenie</th><th>Główne pytanie</th><th>Rola w dotacji</th><th>Rola techniczna</th></tr></thead>
            <tbody>
              <tr><td data-label="Dokument"><strong>Audyt energetyczny</strong></td><td data-label="Pytanie">Jaki jest stan energetyczny budynku i jaki wariant modernizacji ma sens?</td><td data-label="Dotacja">Obowiązkowy w aktualnym Czystym Powietrzu.</td><td data-label="Technika">Wyznacza kierunek modernizacji całego budynku, nie rysuje pętli podłogówki.</td></tr>
              <tr><td data-label="Dokument"><strong>DPAE</strong></td><td data-label="Pytanie">Jakie parametry ma wybrany wariant przedsięwzięcia?</td><td data-label="Dotacja">Dokument podsumowujący audyt, używany w ścieżce programu.</td><td data-label="Technika">Porządkuje efekt energetyczny, lecz nie zastępuje projektu wykonawczego c.o.</td></tr>
              <tr><td data-label="Dokument"><strong>Świadectwo charakterystyki energetycznej</strong></td><td data-label="Pytanie">Jaką charakterystykę ma budynek po zakończeniu?</td><td data-label="Dotacja">Obowiązkowe przy zakończeniu przedsięwzięcia w Czystym Powietrzu.</td><td data-label="Technika">Potwierdza parametry budynku; nie dobiera rozdzielacza ani przepływów.</td></tr>
              <tr><td data-label="Dokument"><strong>Charakterystyka energetyczna nowego domu</strong></td><td data-label="Pytanie">Czy budynek spełnia wymagany EP<sub>H+W</sub>?</td><td data-label="Dotacja">Istotna dla programu Moje Ciepło.</td><td data-label="Technika">Opisuje efektywność budynku i systemów, ale nie jest rysunkiem wykonawczym podłogówki.</td></tr>
              <tr><td data-label="Dokument"><strong>OZC / obciążenie cieplne</strong></td><td data-label="Pytanie">Ile mocy potrzebuje budynek oraz każde pomieszczenie w warunkach obliczeniowych?</td><td data-label="Dotacja">Nie jest automatycznie tym samym dokumentem co audyt.</td><td data-label="Technika">Stanowi podstawę doboru mocy źródła i powierzchni grzewczych.</td></tr>
              <tr><td data-label="Dokument"><strong>Projekt ogrzewania podłogowego</strong></td><td data-label="Pytanie">Jak wykonać i wyregulować konkretną instalację?</td><td data-label="Dotacja">Samodzielny koszt wymaga potwierdzenia kwalifikowalności.</td><td data-label="Technika">Określa rozstawy, pętle, przepływy, temperatury, opory i nastawy rozdzielacza.</td></tr>
            </tbody>
          </table>
        </div>

        <p>Obliczenie <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego OZC</a> jest pomostem między analizą budynku a doborem instalacji. Z kolei <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalny projekt ogrzewania podłogowego</a> przekłada wyniki na instrukcję wykonania i regulacji. Brak tej warstwy nie zawsze blokuje wniosek, ale zwiększa ryzyko, że instalacja będzie działała na wyższej temperaturze, nierówno albo z nieprawidłowymi przepływami.</p>
      </section>

      <section class="rk-grant-section" id="rk-grant-kalkulator" aria-labelledby="rk-grant-h2-7">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">07</div>
          <div>
            <h2 id="rk-grant-h2-7">Kalkulator dotacji 2026 – instalacja c.o. albo pompa ciepła</h2>
            <p>Wybierz program i zobacz, jak procent wsparcia zderza się z limitem kategorii.</p>
          </div>
        </div>

        <div class="rk-grant-lab" id="rk-grant-calculator" aria-label="Interaktywny kalkulator dotacji">
          <div class="rk-grant-lab-head">
            <h3>Sprawdź właściwą ścieżkę wsparcia</h3>
            <p>Narzędzie nie sprawdza dochodów, kompletności dokumentów ani wszystkich warunków programu. Pokazuje wyłącznie orientacyjną matematykę dla jednej kategorii kosztu.</p>
            <div class="rk-grant-program-switch" role="tablist" aria-label="Wybór programu">
              <button class="rk-grant-program-button is-active" type="button" role="tab" aria-selected="true" aria-controls="rk-grant-cp-panel" id="rk-grant-cp-tab" data-grant-program="cp">Czyste Powietrze – instalacja c.o./c.w.u.</button>
              <button class="rk-grant-program-button" type="button" role="tab" aria-selected="false" aria-controls="rk-grant-mc-panel" id="rk-grant-mc-tab" data-grant-program="mc">Moje Ciepło – pompa ciepła</button>
            </div>
          </div>

          <div class="rk-grant-lab-grid">
            <div class="rk-grant-controls">
              <div class="rk-grant-program-panel" id="rk-grant-cp-panel" role="tabpanel" aria-labelledby="rk-grant-cp-tab" data-grant-panel="cp">
                <div class="rk-grant-program-title">Czyste Powietrze: jedna kategoria instalacji c.o./c.w.u.</div>
                <div class="rk-grant-control"><label for="rk-grant-cp-level">Poziom dofinansowania</label><select class="rk-grant-select" id="rk-grant-cp-level"><option value="basic">Podstawowy – do 40%</option><option value="raised">Podwyższony – do 70%</option><option value="highest">Najwyższy – do 100%</option></select></div>
                <div class="rk-grant-control"><label for="rk-grant-cp-cost">Koszt kwalifikowany instalacji netto [zł]</label><input class="rk-grant-number-input" id="rk-grant-cp-cost" type="number" min="0" max="300000" step="500" value="30000"><small class="rk-grant-control-note">Wprowadź wyłącznie część kosztu, która spełnia aktualny opis kategorii.</small></div>
                <div class="rk-grant-control"><label for="rk-grant-cp-eu">EU do ogrzewania przed inwestycją [kWh/(m²·rok)]</label><input class="rk-grant-number-input" id="rk-grant-cp-eu" type="number" min="0" max="500" step="1" value="160"></div>
                <div class="rk-grant-control"><label for="rk-grant-cp-permit">Pozwolenie na budowę do 31.12.2020 r.?</label><select class="rk-grant-select" id="rk-grant-cp-permit"><option value="yes">Tak</option><option value="no">Nie / nie wiem</option></select></div>
                <div class="rk-grant-control"><label for="rk-grant-cp-audit">Audyt i DPAE przed realizacją?</label><select class="rk-grant-select" id="rk-grant-cp-audit"><option value="yes">Tak / będą przygotowane</option><option value="no">Nie / nie wiem</option></select></div>
              </div>

              <div class="rk-grant-program-panel" id="rk-grant-mc-panel" role="tabpanel" aria-labelledby="rk-grant-mc-tab" data-grant-panel="mc" hidden="">
                <div class="rk-grant-program-title">Moje Ciepło: zakup i montaż pompy ciepła</div>
                <div class="rk-grant-control"><label for="rk-grant-mc-type">Rodzaj pompy</label><select class="rk-grant-select" id="rk-grant-mc-type"><option value="airwater">Powietrze/woda</option><option value="airair">Powietrze/powietrze – system centralny</option><option value="ground">Gruntowa</option></select></div>
                <div class="rk-grant-control"><label for="rk-grant-mc-cost">Koszt kwalifikowany pompy z montażem [zł]</label><input class="rk-grant-number-input" id="rk-grant-mc-cost" type="number" min="0" max="300000" step="500" value="30000"></div>
                <div class="rk-grant-control"><label for="rk-grant-mc-kdr">Karta Dużej Rodziny</label><select class="rk-grant-select" id="rk-grant-mc-kdr"><option value="no">Nie</option><option value="yes">Tak</option></select></div>
                <div class="rk-grant-control"><label for="rk-grant-mc-ep">EP<sub>H+W</sub> [kWh/(m²·rok)]</label><input class="rk-grant-number-input" id="rk-grant-mc-ep" type="number" min="0" max="250" step="1" value="45"></div>
                <div class="rk-grant-control"><label for="rk-grant-mc-new">Nowy budynek według programu?</label><select class="rk-grant-select" id="rk-grant-mc-new"><option value="yes">Tak</option><option value="no">Nie / nie wiem</option></select></div>
                <div class="rk-grant-control"><label for="rk-grant-mc-solid">Źródło ciepła na paliwo stałe?</label><select class="rk-grant-select" id="rk-grant-mc-solid"><option value="no">Nie</option><option value="yes">Tak / planowane</option></select></div>
              </div>
            </div>

            <div class="rk-grant-visual">
              <div class="rk-grant-estimate" aria-live="polite">
                <span id="rk-grant-estimate-label">Orientacyjna dotacja dla instalacji c.o./c.w.u.</span>
                <strong id="rk-grant-estimate-amount">8 200 zł</strong>
                <div class="rk-grant-limit-bar" aria-hidden="true"><div class="rk-grant-limit-fill" id="rk-grant-limit-fill"></div></div>
                <small id="rk-grant-estimate-note">Wynik dla jednej kategorii kosztu, przed oceną dokumentów przez WFOŚiGW.</small>
              </div>

              <div class="rk-grant-result-grid">
                <div class="rk-grant-result-card"><span>Przyjęta intensywność</span><strong id="rk-grant-rate-result">40%</strong></div>
                <div class="rk-grant-result-card"><span>Limit kategorii</span><strong id="rk-grant-cap-result">8 200 zł</strong></div>
                <div class="rk-grant-result-card"><span>Kwota z procentu</span><strong id="rk-grant-percent-result">12 000 zł</strong></div>
              </div>

              <div class="rk-grant-status" id="rk-grant-calculator-status" aria-live="polite">
                <strong>Co sprawdzić przed decyzją:</strong>
                <ul class="rk-grant-status-list" id="rk-grant-status-list">
                  <li>Wynik ogranicza limit kategorii instalacji c.o./c.w.u.</li>
                  <li>Ostateczną kwalifikowalność potwierdza WFOŚiGW.</li>
                </ul>
              </div>
            </div>
          </div>

          <div class="rk-grant-disclaimer"><strong>Ważne:</strong> kalkulator ma charakter edukacyjny. Nie jest oficjalnym kalkulatorem NFOŚiGW, nie stanowi decyzji o dofinansowaniu i nie uwzględnia wszystkich kryteriów dochodowych, formalnych, technicznych ani dokumentacyjnych. W Moim Cieple wynik dotyczy wyłącznie pompy ciepła, a nie projektu lub instalacji ogrzewania podłogowego.</div>
        </div>
      </section>

      <section class="rk-grant-section" id="rk-grant-przyklady" aria-labelledby="rk-grant-h2-8">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">08</div>
          <div>
            <h2 id="rk-grant-h2-8">Przykładowe obliczenia dotacji – trzy modele, nie historie klientów</h2>
            <p>Każdy przykład pokazuje wyłącznie mechanizm procentu i limitu.</p>
          </div>
        </div>

        <div class="rk-grant-example-grid">
          <div class="rk-grant-example">
            <h3>Czyste Powietrze: instalacja 30 000 zł netto</h3>
            <p>Podstawowy: 40% daje 12 000 zł, ale limit wynosi 8 200 zł. Podwyższony: 70% daje 21 000 zł, ale limit wynosi 14 350 zł. Najwyższy: 100% daje 30 000 zł, lecz limit wynosi 20 500 zł i trzeba spełnić warunki najwyższego poziomu.</p>
            <code>min(30 000 × 40%, 8 200) = 8 200 zł</code>
          </div>
          <div class="rk-grant-example">
            <h3>Moje Ciepło: pompa powietrze/woda za 30 000 zł</h3>
            <p>Bez KDR 30% kosztu to 9 000 zł. Z KDR 45% to 13 500 zł. W obu przypadkach zastosowanie ma jednak limit 7 000 zł dla tego rodzaju pompy.</p>
            <code>min(30 000 × 30%, 7 000) = 7 000 zł</code>
          </div>
          <div class="rk-grant-example">
            <h3>Moje Ciepło: pompa gruntowa za 60 000 zł</h3>
            <p>Bez KDR 30% daje 18 000 zł. Z KDR 45% daje 27 000 zł, ale wynik zatrzymuje się na limicie 21 000 zł.</p>
            <code>min(60 000 × 45%, 21 000) = 21 000 zł</code>
          </div>
        </div>

        <div class="rk-grant-warning"><p><strong>To nie są kwoty „należne”.</strong> Przykłady nie potwierdzają prawa do konkretnego poziomu, kwalifikowalności kosztów, zgodności urządzenia, spełnienia wymagań energetycznych ani kompletności wniosku.</p></div>
      </section>

      <section class="rk-grant-section" id="rk-grant-projekt" aria-labelledby="rk-grant-h2-9">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">09</div>
          <div>
            <h2 id="rk-grant-h2-9">Po co projekt podłogówki, skoro program go nie wymienia jako osobnej dotacji?</h2>
            <p>Bo rozliczenie finansowe i poprawność techniczna to dwa różne poziomy inwestycji.</p>
          </div>
        </div>

        <p>Dotacja odpowiada na pytanie, jaka część kwalifikowanego wydatku może zostać sfinansowana. Projekt odpowiada na pytanie, jak zbudować instalację, aby pokryła straty pomieszczeń, współpracowała ze źródłem ciepła i dała się wyregulować. Bez obliczeń łatwo kupić dobre urządzenie, a następnie zmusić je do pracy w złych warunkach.</p>

        <div class="rk-grant-card-grid four">
          <div class="rk-grant-card"><div class="rk-grant-card-icon">Q</div><h4>Obciążenie pomieszczeń</h4><p>Rozstaw rur powinien odpowiadać stratom każdego pomieszczenia, a nie jednej średniej dla całego domu.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">T</div><h4>Temperatura zasilania</h4><p>Projekt sprawdza wymaganą temperaturę wody z uwzględnieniem konstrukcji podłogi i oporu okładziny.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">V</div><h4>Przepływy</h4><p>Moc każdej pętli przekłada się na przepływ, który trzeba ustawić na rozdzielaczu.</p></div>
          <div class="rk-grant-card"><div class="rk-grant-card-icon">Δp</div><h4>Hydraulika</h4><p>Długości, średnica i opory decydują, czy pompa obiegowa obsłuży najbardziej wymagający obwód.</p></div>
        </div>

        <p>Nie istnieje jedna obowiązkowa temperatura 35°C dla każdej instalacji. Niska temperatura jest korzystna zwłaszcza dla pompy ciepła, ale wynik musi uwzględniać obciążenie i podłogę. Warto poznać zarówno znaczenie <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperatury zasilania podłogówki</a>, jak i wpływ <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">oporu cieplnego okładziny</a>. Samo zagęszczenie rur nie naprawi podłogi o bardzo wysokim oporze ani niedoszacowanego obciążenia.</p>

        <div class="rk-grant-formula">
          <p><strong>Podstawowa zależność przepływu:</strong></p>
          <code>V̇ = Q / (1,163 × ΔT)</code>
          <p>gdzie: <strong>V̇</strong> – przepływ w l/h, <strong>Q</strong> – moc pętli w W, <strong>ΔT</strong> – przyjęty spadek temperatury w K. Dotacja nie wyznacza tych wartości; robi to projektant instalacji.</p>
        </div>

        <p>W remontowanym domu dochodzą ograniczenia wysokości podłogi, nośności, wilgotności i strat przez istniejące przegrody. Omawiamy je szerzej w analizie <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">ogrzewania podłogowego w remontowanym budynku</a>. Z kolei twierdzenie, że podłogówka zawsze gwarantuje określony procent oszczędności, jest zbyt daleko idące; rzeczywisty efekt zależy od budynku, źródła, regulacji i sposobu użytkowania, co wyjaśnia materiał <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-energooszczedne/">czy ogrzewanie podłogowe jest energooszczędne</a>.</p>
      </section>

      <section class="rk-grant-section" id="rk-grant-kroki" aria-labelledby="rk-grant-h2-10">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">10</div>
          <div>
            <h2 id="rk-grant-h2-10">Jak połączyć dotację z projektem ogrzewania podłogowego – kolejność działań</h2>
            <p>Najbezpieczniejsza ścieżka ogranicza ryzyko niekwalifikowanego wydatku i błędnego zakresu prac.</p>
          </div>
        </div>

        <ol class="rk-grant-howto">
          <li class="rk-grant-howto-step" id="rk-grant-step-1"><span>01</span><div><h3>Ustal właściwy program i nabór</h3><p>Sprawdź, czy modernizujesz istniejący dom, czy wyposażasz nowy budynek. Zweryfikuj datę naboru, własność, wiek obiektu i wymagany wskaźnik energetyczny.</p></div></li>
          <li class="rk-grant-howto-step" id="rk-grant-step-2"><span>02</span><div><h3>Przygotuj obowiązkową dokumentację energetyczną</h3><p>W Czystym Powietrzu zacznij od audytu i DPAE. W Moim Cieple przygotuj dokumenty potwierdzające nowy budynek i wymagany EP<sub>H+W</sub>.</p></div></li>
          <li class="rk-grant-howto-step" id="rk-grant-step-3"><span>03</span><div><h3>Potwierdź kwalifikowalność konkretnego kosztu</h3><p>Przed zamówieniem poproś operatora lub WFOŚiGW o ocenę, czy dana usługa, materiał i sposób fakturowania mieszczą się w aktualnym zakresie.</p></div></li>
          <li class="rk-grant-howto-step" id="rk-grant-step-4"><span>04</span><div><h3>Oblicz budynek i instalację</h3><p>Wykonaj obciążenie cieplne, dobierz moc źródła oraz zaprojektuj rozstawy, pętle, przepływy i temperaturę zasilania dla rzeczywistych warstw podłogi.</p></div></li>
          <li class="rk-grant-howto-step" id="rk-grant-step-5"><span>05</span><div><h3>Zrealizuj zakres zgodnie z umową i projektem</h3><p>Zachowuj faktury, protokoły, karty produktów, dokumentację zdjęciową i potwierdzenia regulacji. Nie zmieniaj zakresu bez sprawdzenia wpływu na dotację oraz parametry instalacji.</p></div></li>
          <li class="rk-grant-howto-step" id="rk-grant-step-6"><span>06</span><div><h3>Uruchom, wyreguluj i rozlicz</h3><p>Wykonaj próbę szczelności, płukanie, równoważenie hydrauliczne i nastawy. W Czystym Powietrzu przygotuj wymagane dokumenty końcowe, w tym świadectwo.</p></div></li>
        </ol>

        <div class="rk-grant-note"><p><strong>Kolejność ma znaczenie.</strong> Data pierwszego kosztu kwalifikowanego, zakres zatwierdzony we wniosku i terminy realizacji są elementami oceny programu. Nie należy traktować późniejszego opisania faktury jako sposobu naprawienia źle zaplanowanego wydatku.</p></div>
      </section>

      <section class="rk-grant-section" id="rk-grant-checklista" aria-labelledby="rk-grant-h2-11">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">11</div>
          <div>
            <h2 id="rk-grant-h2-11">Dokumenty do dotacji i dokumenty dobrej praktyki – checklista</h2>
            <p>Nie wszystkie pozycje są obowiązkowe w obu programach, ale każda może chronić inwestora.</p>
          </div>
        </div>

        <div class="rk-grant-check-grid">
          <div class="rk-grant-check"><div class="rk-grant-check-no">01</div><h4>Dokumenty własności i budynku</h4><p>Księga wieczysta lub dokument tytułu, pozwolenie lub zgłoszenie, dokumenty zakończenia budowy i dane identyfikujące nieruchomość.</p></div>
          <div class="rk-grant-check"><div class="rk-grant-check-no">02</div><h4>Dokumentacja energetyczna</h4><p>Audyt, DPAE, świadectwo albo dokument potwierdzający EP – dokładnie według wybranego programu i aktualnej listy załączników.</p></div>
          <div class="rk-grant-check"><div class="rk-grant-check-no">03</div><h4>Projekt i obliczenia instalacji</h4><p>Obciążenie cieplne, rzuty pętli, zestawienie długości, przepływy, temperatury, opory, nastawy i wymagania dla podłogi.</p></div>
          <div class="rk-grant-check"><div class="rk-grant-check-no">04</div><h4>Oferta i umowa z wykonawcą</h4><p>Jednoznaczny zakres, ilości, ceny, odpowiedzialność, parametry materiałów, terminy oraz zgodność z dokumentacją.</p></div>
          <div class="rk-grant-check"><div class="rk-grant-check-no">05</div><h4>Dokumenty urządzeń i materiałów</h4><p>Karty produktu, etykiety, deklaracje, wpisy na wymagane listy, instrukcje i potwierdzenia zgodności obowiązujące w dniu zakupu.</p></div>
          <div class="rk-grant-check"><div class="rk-grant-check-no">06</div><h4>Dokumenty odbiorowe</h4><p>Faktury, potwierdzenia zapłaty, protokół próby, uruchomienia i regulacji, dokumentacja zdjęciowa oraz dokumenty końcowe programu.</p></div>
        </div>

        <p>W instalacji warto zachować także wyniki przepływów i nastaw rozdzielacza. Sama obecność termostatów nie dowodzi poprawnej regulacji; ich dobór zależy od bezwładności systemu, hydrauliki i strategii sterowania. Szerzej opisujemy to w poradniku o <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatach w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-grant-section" id="rk-grant-bledy" aria-labelledby="rk-grant-h2-12">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">12</div>
          <div>
            <h2 id="rk-grant-h2-12">Najczęstsze błędy i mity przy dotacji na ogrzewanie</h2>
            <p>Wiele kosztownych pomyłek zaczyna się od zbyt pewnego zdania sprzedawcy albo uproszczonego artykułu.</p>
          </div>
        </div>

        <div class="rk-grant-error-grid">
          <div class="rk-grant-error"><div class="rk-grant-error-no">01</div><h4>„Projekt jest zawsze refundowany”</h4><p>Nie. Samodzielna usługa projektowa wymaga sprawdzenia w aktualnym katalogu i potwierdzenia dla konkretnego sposobu rozliczenia.</p></div>
          <div class="rk-grant-error"><div class="rk-grant-error-no">02</div><h4>„Moje Ciepło płaci za podłogówkę”</h4><p>Program wspiera zakup i montaż pompy ciepła. Instalacja odbiorcza i jej projekt nie stają się przez to automatycznie kosztami programu.</p></div>
          <div class="rk-grant-error"><div class="rk-grant-error-no">03</div><h4>„Najwyższy poziom jest dla każdego”</h4><p>Poziom 100% ma dodatkowe warunki. W aktualnych zasadach najwyższe wsparcie dotyczy budynków z EU do ogrzewania powyżej 140 kWh/(m²·rok).</p></div>
          <div class="rk-grant-error"><div class="rk-grant-error-no">04</div><h4>„Limit oznacza gwarantowaną kwotę”</h4><p>Limit to maksimum. Jeśli procent kosztu kwalifikowanego daje mniej, dotacja zatrzymuje się na niższej wartości.</p></div>
          <div class="rk-grant-error"><div class="rk-grant-error-no">05</div><h4>„Audyt to projekt instalacji”</h4><p>Audyt analizuje energetykę budynku i wariant modernizacji. Nie wyznacza pełnego przebiegu pętli ani nastaw hydraulicznych.</p></div>
          <div class="rk-grant-error"><div class="rk-grant-error-no">06</div><h4>„35°C zawsze wystarczy”</h4><p>Wymagana temperatura zależy od strat, rozstawu, konstrukcji podłogi, okładziny i przepływów. Nie można obiecać jej bez obliczeń.</p></div>
          <div class="rk-grant-error"><div class="rk-grant-error-no">07</div><h4>„Im więcej automatyki, tym lepiej”</h4><p>Automatyka nie naprawi niedowymiarowanej powierzchni, za długich pętli ani niewyregulowanego rozdzielacza.</p></div>
          <div class="rk-grant-error"><div class="rk-grant-error-no">08</div><h4>„Wystarczy faktura po wykonaniu”</h4><p>Znaczenie mają kolejność, data rozpoczęcia, zatwierdzony zakres, dokumenty techniczne, zgodność urządzeń i protokoły.</p></div>
        </div>

        <div class="rk-grant-truth"><p><strong>Brutalnie uczciwe podsumowanie:</strong> dotacja może zmniejszyć koszt kwalifikowanej inwestycji, ale nie zwalnia z zaprojektowania systemu. Najtańsza instalacja wykonana bez obliczeń może później wymagać wyższej temperatury wody, większego zużycia energii albo kosztownej poprawki, której program już nie sfinansuje.</p></div>
      </section>

      <section class="rk-grant-section" id="rk-grant-faq" aria-labelledby="rk-grant-h2-13">
        <div class="rk-grant-section-head">
          <div class="rk-grant-section-no">13</div>
          <div>
            <h2 id="rk-grant-h2-13">FAQ – projekt ogrzewania podłogowego, Czyste Powietrze i Moje Ciepło 2026</h2>
            <p>Odpowiedzi na pytania, które najczęściej decydują o zakresie inwestycji.</p>
          </div>
        </div>

        <div class="rk-grant-faq-list">
          <details class="rk-grant-faq"><summary>Czy projekt ogrzewania podłogowego jest obowiązkowy w Czystym Powietrzu?</summary><div class="rk-grant-faq-answer"><p>Program wymaga dokumentów określonych w aktualnych zasadach, między innymi audytu z DPAE przed realizacją i świadectwa po zakończeniu. Osobny projekt wykonawczy podłogówki nie jest tym samym dokumentem. Może być bardzo ważny technicznie, ale jego formalną rolę i kwalifikowalność kosztu trzeba sprawdzić dla konkretnego wniosku.</p></div></details>
          <details class="rk-grant-faq"><summary>Czy Czyste Powietrze dofinansuje wykonanie ogrzewania podłogowego?</summary><div class="rk-grant-faq-answer"><p>Modernizacja lub wykonanie instalacji grzewczej znajduje się w zakresie programu, a aktualna tabela zawiera kategorię instalacji c.o./c.w.u. Elementy podłogówki mogą się w niej mieścić, jeśli wynikają z kwalifikowanego przedsięwzięcia, spełniają opis kosztu i są prawidłowo udokumentowane. Ostatecznie ocenia to WFOŚiGW.</p></div></details>
          <details class="rk-grant-faq"><summary>Ile wynosi dotacja na instalację c.o./c.w.u. w 2026 roku?</summary><div class="rk-grant-faq-answer"><p>Dla wniosków według zasad od 20 lipca 2026 r. maksymalne kwoty dla tej kategorii wynoszą 8 200 zł w poziomie podstawowym, 14 350 zł w podwyższonym oraz 20 500 zł w najwyższym. Kwotę ogranicza również intensywność wsparcia: odpowiednio do 40%, 70% i 100% kosztów kwalifikowanych.</p></div></details>
          <details class="rk-grant-faq"><summary>Czy najwyższy poziom Czystego Powietrza przysługuje przy EU poniżej 140?</summary><div class="rk-grant-faq-answer"><p>Nie według aktualnego podziału programu. Najwyższy poziom wsparcia dotyczy budynku lub lokalu, w którym zapotrzebowanie na energię użytkową do ogrzewania przed przedsięwzięciem przekracza 140 kWh/(m²·rok), przy spełnieniu pozostałych kryteriów.</p></div></details>
          <details class="rk-grant-faq"><summary>Czy Moje Ciepło finansuje ogrzewanie podłogowe?</summary><div class="rk-grant-faq-answer"><p>Nie jako osobny zakres. Program finansuje zakup i montaż nowej pompy ciepła w nowym domu. Rury, rozdzielacze, jastrych i projekt podłogówki nie są przez sam fakt współpracy z pompą automatycznie objęte tą dotacją.</p></div></details>
          <details class="rk-grant-faq"><summary>Ile można otrzymać z programu Moje Ciepło?</summary><div class="rk-grant-faq-answer"><p>Dotacja wynosi do 30% kosztów kwalifikowanych albo do 45% dla posiadaczy Karty Dużej Rodziny. Maksimum to 7 000 zł dla pomp powietrznych oraz 21 000 zł dla pomp gruntowych, przy spełnieniu wszystkich warunków programu.</p></div></details>
          <details class="rk-grant-faq"><summary>Jakie EP musi mieć dom w programie Moje Ciepło?</summary><div class="rk-grant-faq-answer"><p>Wskaźnik rocznego zapotrzebowania na nieodnawialną energię pierwotną na potrzeby ogrzewania, wentylacji i przygotowania c.w.u., czyli EP<sub>H+W</sub>, może wynosić maksymalnie 55 kWh/(m²·rok).</p></div></details>
          <details class="rk-grant-faq"><summary>Czy audyt energetyczny zastępuje OZC?</summary><div class="rk-grant-faq-answer"><p>Nie. Audyt służy ocenie energetycznej budynku i wariantów modernizacji. Projektowe obciążenie cieplne wyznacza moc potrzebną w warunkach obliczeniowych, najlepiej dla poszczególnych pomieszczeń, i stanowi podstawę doboru instalacji.</p></div></details>
          <details class="rk-grant-faq"><summary>Czy świadectwo energetyczne zastępuje projekt podłogówki?</summary><div class="rk-grant-faq-answer"><p>Nie. Świadectwo opisuje charakterystykę energetyczną budynku. Nie zawiera kompletnego rozkładu pętli, długości obwodów, przepływów, oporów hydraulicznych i nastaw rozdzielacza.</p></div></details>
          <details class="rk-grant-faq"><summary>Czy osobna faktura za projekt zostanie rozliczona?</summary><div class="rk-grant-faq-answer"><p>Nie należy tego zakładać. Aktualna lista wskazuje kategorie kosztów, ale samodzielny projekt podłogówki nie jest automatycznie wymieniony jako odrębna pozycja. Przed wydatkiem poproś operatora lub właściwy WFOŚiGW o pisemne stanowisko.</p></div></details>
          <details class="rk-grant-faq"><summary>Czy kalkulator w artykule gwarantuje wysokość dotacji?</summary><div class="rk-grant-faq-answer"><p>Nie. Narzędzie pokazuje jedynie matematyczne minimum z procentu kosztu i limitu kategorii oraz podstawowe ostrzeżenia. Nie sprawdza dochodów, własności, kompletności dokumentów, kwalifikowalności faktury ani decyzji WFOŚiGW lub NFOŚiGW.</p></div></details>
          <details class="rk-grant-faq"><summary>Czy można najpierw wykonać instalację, a potem dobrać dokumenty?</summary><div class="rk-grant-faq-answer"><p>To ryzykowne. Program określa kolejność, datę rozpoczęcia, zakres i dokumenty właściwe dla naboru. Technicznie równie niebezpieczne jest wykonanie rur przed obliczeniem obciążenia, rozstawów, długości pętli i przepływów.</p></div></details>
        </div>

        <div class="rk-grant-sources">
          <strong>Oficjalne źródła i data weryfikacji</strong>
          Stan informacji sprawdzono 24 sierpnia 2026 r. na stronach instytucji prowadzących programy:
          <a href="https://czystepowietrze.gov.pl/wez-dofinansowanie/na-co-i-ile" target="_blank" rel="noopener noreferrer">Czyste Powietrze – zakres i maksymalne kwoty</a>,
          <a href="https://czystepowietrze.gov.pl/wez-dofinansowanie/dokumenty-programowe" target="_blank" rel="noopener noreferrer">aktualne dokumenty programowe</a>,
          <a href="https://czystepowietrze.gov.pl/wez-dofinansowanie/pytania-i-odpowiedzi/nowy-program-czyste-powietrze-nabor-od-20-lipca-2026-r" target="_blank" rel="noopener noreferrer">pytania i odpowiedzi dla zasad od 20 lipca 2026 r.</a> oraz
          <a href="https://mojecieplo.gov.pl/o-programie/" target="_blank" rel="noopener noreferrer">Moje Ciepło – oficjalny opis programu</a>.
        </div>
      </section>

      <section class="rk-grant-cta" aria-label="Zamówienie projektu ogrzewania podłogowego">
        <h3>Chcesz policzyć instalację, a nie tylko koszt dotacji?</h3>
        <p>Projekt określa obciążenie pomieszczeń, rozstaw i przebieg pętli, temperaturę zasilania, przepływy, opory hydrauliczne oraz nastawy rozdzielacza. To dokument wykonawczy dla konkretnego budynku i wybranych warstw podłogi.</p>
        <a class="rk-grant-cta-link" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji ogrzewania podłogowego</a>
        <small>Projekt-Ogrzewania.pl jest serwisem należącym do autora publikacji.</small>
      </section>

      <aside class="rk-grant-author-box" aria-label="Informacje o autorze" itemprop="author" itemscope="" itemtype="https://schema.org/Person">
        <div class="rk-grant-author-head">
          <div><h3>Autor opracowania</h3><p>Praktyka projektowa, wiedza techniczna i transparentne wyjaśnienie zasad programu.</p></div>
          <div class="rk-grant-author-mark">E-E-A-T • HVAC</div>
        </div>
        <div class="rk-grant-author-main">
          <div class="rk-grant-author-profile">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – autor opracowania" width="174" height="174" loading="lazy" itemprop="image">
            <h4 itemprop="name">Robert Kucharski</h4>
            <span class="rk-grant-author-role" itemprop="jobTitle">CEO • specjalista systemów HVAC i ogrzewania podłogowego</span>
          </div>
          <div class="rk-grant-author-content">
            <div class="rk-grant-quote"><blockquote>„Dotacja nie projektuje instalacji. Program określa, za co może zwrócić część kosztów, a projekt określa, czy ogrzewanie rzeczywiście pokryje straty budynku i będzie pracowało z właściwymi przepływami oraz temperaturą.”</blockquote></div>
            <div class="rk-grant-tab-buttons" role="tablist" aria-label="Informacje o autorze">
              <button class="rk-grant-tab-button is-active" type="button" role="tab" aria-selected="true" aria-controls="rk-grant-author-about" id="rk-grant-author-about-tab" data-grant-author-tab="about">O autorze</button>
              <button class="rk-grant-tab-button" type="button" role="tab" aria-selected="false" aria-controls="rk-grant-author-experience" id="rk-grant-author-experience-tab" data-grant-author-tab="experience">Doświadczenie</button>
              <button class="rk-grant-tab-button" type="button" role="tab" aria-selected="false" aria-controls="rk-grant-author-portals" id="rk-grant-author-portals-tab" data-grant-author-tab="portals">Portale</button>
            </div>
            <div class="rk-grant-tab-panel" id="rk-grant-author-about" role="tabpanel" aria-labelledby="rk-grant-author-about-tab" data-grant-author-panel="about">
              <p itemprop="description">Specjalizuję się w projektowaniu wodnego ogrzewania podłogowego, obliczeniach obciążenia cieplnego i hydraulice instalacji. W opracowaniach łączę wymagania źródła ciepła, charakterystykę podłogi, przepływy i automatykę w jeden możliwy do wykonania układ.</p>
            </div>
            <div class="rk-grant-tab-panel" id="rk-grant-author-experience" role="tabpanel" aria-labelledby="rk-grant-author-experience-tab" data-grant-author-panel="experience" hidden="">
              <p>Praktykę projektową uzupełniam wieloletnim tworzeniem technicznych publikacji dla inwestorów. Analizuję zależności między stratami budynku, temperaturą zasilania, mocą powierzchniową, długością pętli, przepływem i oporem hydraulicznym. Treści dotyczące programów wsparcia opieram na dokumentach instytucji prowadzących, a nie na materiałach sprzedażowych.</p>
            </div>
            <div class="rk-grant-tab-panel" id="rk-grant-author-portals" role="tabpanel" aria-labelledby="rk-grant-author-portals-tab" data-grant-author-panel="portals" hidden="">
              <p>Jestem właścicielem trzech serwisów branżowych. Powiązanie podaję jawnie, aby czytelnik znał autorstwo oraz kontekst linkowania.</p>
              <div class="rk-grant-portals">
                <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
                <a href="https://remont.biz.pl/" target="_blank" rel="noopener noreferrer">Remont.biz.pl</a>
                <a href="https://sobir.pl/" target="_blank" rel="noopener noreferrer">Sobir.pl</a>
              </div>
            </div>
          </div>
        </div>
      </aside>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#webpage",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/",
      "name": "Projekt ogrzewania podłogowego a dotacje Czyste Powietrze i Moje Ciepło 2026 – co naprawdę można sfinansować?",
      "description": "Projekt ogrzewania podłogowego a dotacje 2026: sprawdź, co finansuje Czyste Powietrze, czego nie obejmuje Moje Ciepło i jakie dokumenty są potrzebne.",
      "inLanguage": "pl-PL",
      "datePublished": "2026-08-24",
      "dateModified": "2026-08-24",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "about": [
        { "@id": "https://projekt-ogrzewania.pl/#service-czyste-powietrze" },
        { "@id": "https://projekt-ogrzewania.pl/#service-moje-cieplo" }
      ],
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#article" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#article",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/",
      "headline": "Projekt ogrzewania podłogowego a dotacje Czyste Powietrze i Moje Ciepło 2026 – co naprawdę można sfinansować?",
      "alternativeHeadline": "Projekt podłogówki a dotacje 2026 – Czyste Powietrze i Moje Ciepło bez mitów",
      "description": "Techniczna analiza kosztów kwalifikowanych instalacji c.o., wsparcia pomp ciepła, dokumentów energetycznych i roli projektu ogrzewania podłogowego.",
      "inLanguage": "pl-PL",
      "datePublished": "2026-08-24",
      "dateModified": "2026-08-24",
      "wordCount": 4017,
      "articleSection": [
        "Czyste Powietrze 2026",
        "Moje Ciepło 2026",
        "Ogrzewanie podłogowe",
        "Pompy ciepła",
        "Dokumentacja energetyczna",
        "Projektowanie instalacji HVAC"
      ],
      "keywords": [
        "projekt ogrzewania podłogowego a dotacje",
        "Czyste Powietrze ogrzewanie podłogowe 2026",
        "Moje Ciepło ogrzewanie podłogowe",
        "dotacja na instalację c.o.",
        "dofinansowanie pompy ciepła 2026",
        "audyt energetyczny a projekt podłogówki",
        "koszt kwalifikowany instalacji c.o.",
        "projekt podłogówki do pompy ciepła"
      ],
      "author": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#webpage" },
      "citation": [
        "https://czystepowietrze.gov.pl/wez-dofinansowanie/na-co-i-ile",
        "https://czystepowietrze.gov.pl/wez-dofinansowanie/dokumenty-programowe",
        "https://czystepowietrze.gov.pl/wez-dofinansowanie/pytania-i-odpowiedzi/nowy-program-czyste-powietrze-nabor-od-20-lipca-2026-r",
        "https://mojecieplo.gov.pl/o-programie/"
      ],
      "mentions": [
        { "@id": "https://projekt-ogrzewania.pl/#service-czyste-powietrze" },
        { "@id": "https://projekt-ogrzewania.pl/#service-moje-cieplo" },
        { "@type": "Thing", "name": "Ogrzewanie podłogowe" },
        { "@type": "Thing", "name": "Pompa ciepła" },
        { "@type": "Thing", "name": "Audyt energetyczny" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#calculator",
      "name": "Kalkulator dotacji 2026 dla instalacji c.o. i pompy ciepła",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#rk-grant-kalkulator",
      "applicationCategory": "FinanceApplication",
      "operatingSystem": "Web",
      "browserRequirements": "Włączona obsługa JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Edukacyjny kalkulator pokazujący relację między procentem kosztów kwalifikowanych a limitem kategorii Czyste Powietrze lub Moje Ciepło.",
      "creator": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" },
      "offers": { "@type": "Offer", "price": "0", "priceCurrency": "PLN" }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#howto",
      "name": "Jak połączyć dotację z projektem ogrzewania podłogowego",
      "description": "Sześć kroków od wyboru programu do wykonania, regulacji i rozliczenia instalacji.",
      "inLanguage": "pl-PL",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Ustal właściwy program i nabór", "text": "Sprawdź rodzaj budynku, datę naboru, własność, wiek obiektu i wymagany wskaźnik energetyczny.", "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#rk-grant-step-1" },
        { "@type": "HowToStep", "position": 2, "name": "Przygotuj dokumentację energetyczną", "text": "Wykonaj audyt i DPAE albo przygotuj dokumenty potwierdzające standard energetyczny nowego budynku.", "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#rk-grant-step-2" },
        { "@type": "HowToStep", "position": 3, "name": "Potwierdź kwalifikowalność kosztu", "text": "Przed zakupem potwierdź u operatora lub WFOŚiGW zgodność usługi, materiału i sposobu fakturowania z aktualnymi zasadami.", "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#rk-grant-step-3" },
        { "@type": "HowToStep", "position": 4, "name": "Oblicz budynek i instalację", "text": "Wyznacz obciążenie cieplne, moc źródła, rozstawy, pętle, przepływy i temperaturę zasilania.", "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#rk-grant-step-4" },
        { "@type": "HowToStep", "position": 5, "name": "Zrealizuj zakres zgodnie z umową", "text": "Wykonaj prace zgodnie z zatwierdzonym zakresem i dokumentacją, zachowując faktury oraz protokoły.", "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#rk-grant-step-5" },
        { "@type": "HowToStep", "position": 6, "name": "Uruchom, wyreguluj i rozlicz", "text": "Przeprowadź próbę, równoważenie i odbiór, a następnie złóż wymagane dokumenty końcowe.", "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#rk-grant-step-6" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#faq",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/#rk-grant-faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        { "@type": "Question", "name": "Czy projekt ogrzewania podłogowego jest obowiązkowy w Czystym Powietrzu?", "acceptedAnswer": { "@type": "Answer", "text": "Program wymaga dokumentów wskazanych w aktualnych zasadach, między innymi audytu z DPAE przed realizacją i świadectwa po zakończeniu. Osobny projekt wykonawczy podłogówki nie jest tym samym dokumentem, a jego formalną rolę i kwalifikowalność kosztu trzeba sprawdzić dla konkretnego wniosku." } },
        { "@type": "Question", "name": "Czy Czyste Powietrze dofinansuje wykonanie ogrzewania podłogowego?", "acceptedAnswer": { "@type": "Answer", "text": "Modernizacja lub wykonanie instalacji grzewczej znajduje się w zakresie programu, a aktualna tabela zawiera kategorię instalacji c.o./c.w.u. Elementy podłogówki mogą się w niej mieścić, jeśli wynikają z kwalifikowanego przedsięwzięcia, spełniają opis kosztu i są prawidłowo udokumentowane. Ostatecznie ocenia to WFOŚiGW." } },
        { "@type": "Question", "name": "Ile wynosi dotacja na instalację c.o./c.w.u. w 2026 roku?", "acceptedAnswer": { "@type": "Answer", "text": "Dla zasad od 20 lipca 2026 r. maksymalne kwoty wynoszą 8 200 zł w poziomie podstawowym, 14 350 zł w podwyższonym oraz 20 500 zł w najwyższym. Kwotę ogranicza także intensywność wsparcia: odpowiednio do 40%, 70% i 100% kosztów kwalifikowanych." } },
        { "@type": "Question", "name": "Czy najwyższy poziom Czystego Powietrza przysługuje przy EU poniżej 140?", "acceptedAnswer": { "@type": "Answer", "text": "Nie według aktualnego podziału programu. Najwyższy poziom wsparcia dotyczy budynku lub lokalu, w którym zapotrzebowanie na energię użytkową do ogrzewania przed przedsięwzięciem przekracza 140 kWh/(m²·rok), przy spełnieniu pozostałych kryteriów." } },
        { "@type": "Question", "name": "Czy Moje Ciepło finansuje ogrzewanie podłogowe?", "acceptedAnswer": { "@type": "Answer", "text": "Nie jako osobny zakres. Program finansuje zakup i montaż nowej pompy ciepła w nowym domu. Rury, rozdzielacze, jastrych i projekt podłogówki nie są przez sam fakt współpracy z pompą automatycznie objęte tą dotacją." } },
        { "@type": "Question", "name": "Ile można otrzymać z programu Moje Ciepło?", "acceptedAnswer": { "@type": "Answer", "text": "Dotacja wynosi do 30% kosztów kwalifikowanych albo do 45% dla posiadaczy Karty Dużej Rodziny. Maksimum to 7 000 zł dla pomp powietrznych oraz 21 000 zł dla pomp gruntowych, przy spełnieniu wszystkich warunków programu." } },
        { "@type": "Question", "name": "Jakie EP musi mieć dom w programie Moje Ciepło?", "acceptedAnswer": { "@type": "Answer", "text": "Wskaźnik rocznego zapotrzebowania na nieodnawialną energię pierwotną na potrzeby ogrzewania, wentylacji i przygotowania ciepłej wody użytkowej, czyli EP H+W, może wynosić maksymalnie 55 kWh/(m²·rok)." } },
        { "@type": "Question", "name": "Czy audyt energetyczny zastępuje OZC?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Audyt służy ocenie energetycznej budynku i wariantów modernizacji. Projektowe obciążenie cieplne wyznacza moc potrzebną w warunkach obliczeniowych, najlepiej dla poszczególnych pomieszczeń, i stanowi podstawę doboru instalacji." } },
        { "@type": "Question", "name": "Czy świadectwo energetyczne zastępuje projekt podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Świadectwo opisuje charakterystykę energetyczną budynku. Nie zawiera kompletnego rozkładu pętli, długości obwodów, przepływów, oporów hydraulicznych i nastaw rozdzielacza." } },
        { "@type": "Question", "name": "Czy osobna faktura za projekt zostanie rozliczona?", "acceptedAnswer": { "@type": "Answer", "text": "Nie należy tego zakładać. Samodzielny projekt podłogówki nie jest automatycznie wskazany jako odrębna pozycja. Przed wydatkiem należy poprosić operatora lub właściwy WFOŚiGW o pisemne stanowisko." } },
        { "@type": "Question", "name": "Czy kalkulator w artykule gwarantuje wysokość dotacji?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Narzędzie pokazuje jedynie matematyczne minimum z procentu kosztu i limitu kategorii oraz podstawowe ostrzeżenia. Nie sprawdza dochodów, własności, kompletności dokumentów, kwalifikowalności faktury ani decyzji instytucji." } },
        { "@type": "Question", "name": "Czy można najpierw wykonać instalację, a potem dobrać dokumenty?", "acceptedAnswer": { "@type": "Answer", "text": "To ryzykowne. Program określa kolejność, datę rozpoczęcia, zakres i dokumenty właściwe dla naboru. Technicznie równie niebezpieczne jest wykonanie rur przed obliczeniem obciążenia, rozstawów, długości pętli i przepływów." } }
      ]
    },
    {
      "@type": "GovernmentService",
      "@id": "https://projekt-ogrzewania.pl/#service-czyste-powietrze",
      "name": "Program Czyste Powietrze",
      "url": "https://czystepowietrze.gov.pl/",
      "serviceType": "Dofinansowanie termomodernizacji i wymiany źródeł ciepła",
      "areaServed": { "@type": "Country", "name": "Polska" },
      "provider": { "@type": "GovernmentOrganization", "name": "Narodowy Fundusz Ochrony Środowiska i Gospodarki Wodnej", "url": "https://www.gov.pl/web/nfosigw" },
      "audience": { "@type": "Audience", "audienceType": "Właściciele i współwłaściciele istniejących domów jednorodzinnych lub wydzielonych lokali" }
    },
    {
      "@type": "GovernmentService",
      "@id": "https://projekt-ogrzewania.pl/#service-moje-cieplo",
      "name": "Program Moje Ciepło",
      "url": "https://mojecieplo.gov.pl/",
      "serviceType": "Dofinansowanie zakupu i montażu pompy ciepła w nowym domu",
      "areaServed": { "@type": "Country", "name": "Polska" },
      "provider": { "@type": "GovernmentOrganization", "name": "Narodowy Fundusz Ochrony Środowiska i Gospodarki Wodnej", "url": "https://www.gov.pl/web/nfosigw" },
      "audience": { "@type": "Audience", "audienceType": "Właściciele i współwłaściciele nowych domów jednorodzinnych" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "description": "Projektant wodnego ogrzewania podłogowego, autor technicznych opracowań i właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl oraz Sobir.pl.",
      "knowsAbout": [
        "Ogrzewanie podłogowe",
        "Projektowanie instalacji sanitarnych",
        "Hydraulika instalacji grzewczych",
        "Obciążenie cieplne budynków",
        "Pompy ciepła",
        "Efektywność energetyczna budynków",
        "Program Czyste Powietrze",
        "Program Moje Ciepło"
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/",
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy"
      ],
      "affiliation": { "@id": "https://projekt-ogrzewania.pl/#organization" }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" }
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "inLanguage": "pl-PL",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "creator": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" },
      "copyrightHolder": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" }
    },
    {
      "@type": "WebSite",
      "@id": "https://remont.biz.pl/#website",
      "url": "https://remont.biz.pl/",
      "name": "Remont.biz.pl",
      "inLanguage": "pl-PL",
      "creator": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" },
      "copyrightHolder": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" }
    },
    {
      "@type": "WebSite",
      "@id": "https://sobir.pl/#website",
      "url": "https://sobir.pl/",
      "name": "Sobir.pl",
      "inLanguage": "pl-PL",
      "creator": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" },
      "copyrightHolder": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" }
    }
  ]
}
</script>

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

  function initGrantGuide() {
    var root = document.getElementById("rk-grant-guide");
    if (!root) {
      return;
    }
    if (root.getAttribute("data-rk-grant-ready") === "1") {
      return;
    }
    root.setAttribute("data-rk-grant-ready", "1");

    function one(selector) {
      return root.querySelector(selector);
    }

    function many(selector) {
      return Array.prototype.slice.call(root.querySelectorAll(selector));
    }

    function numberValue(element, fallback) {
      if (!element) {
        return fallback;
      }
      var value = Number.parseFloat(element.value);
      if (Number.isFinite(value)) {
        return value;
      }
      return fallback;
    }

    function money(value) {
      return Math.max(Math.round(value), 0).toLocaleString("pl-PL") + " zł";
    }

    function setText(selector, value) {
      var element = one(selector);
      if (element) {
        element.textContent = value;
      }
    }

    function addStatus(list, text, alert) {
      var item = document.createElement("li");
      item.textContent = text;
      if (alert) {
        item.classList.add("is-alert");
      }
      list.appendChild(item);
    }

    var program = "cp";
    var cp = {
      level: one("#rk-grant-cp-level"),
      cost: one("#rk-grant-cp-cost"),
      eu: one("#rk-grant-cp-eu"),
      permit: one("#rk-grant-cp-permit"),
      audit: one("#rk-grant-cp-audit")
    };
    var mc = {
      type: one("#rk-grant-mc-type"),
      cost: one("#rk-grant-mc-cost"),
      kdr: one("#rk-grant-mc-kdr"),
      ep: one("#rk-grant-mc-ep"),
      fresh: one("#rk-grant-mc-new"),
      solid: one("#rk-grant-mc-solid")
    };

    function activateProgram(key) {
      program = key === "mc" ? "mc" : "cp";
      many("[data-grant-program]").forEach(function (button) {
        var active = button.getAttribute("data-grant-program") === program;
        button.classList.toggle("is-active", active);
        button.setAttribute("aria-selected", active ? "true" : "false");
        button.tabIndex = active ? 0 : -1;
      });
      many("[data-grant-panel]").forEach(function (panel) {
        var active = panel.getAttribute("data-grant-panel") === program;
        panel.hidden = !active;
      });
      renderCalculator();
    }

    function renderCalculator() {
      var rate = 0;
      var cap = 0;
      var cost = 0;
      var fromPercent = 0;
      var estimate = 0;
      var label = "";
      var note = "";
      var statusList = one("#rk-grant-status-list");

      if (statusList) {
        statusList.textContent = "";
      }

      if (program === "cp") {
        var level = cp.level ? cp.level.value : "basic";
        var eu = numberValue(cp.eu, 160);
        cost = Math.max(numberValue(cp.cost, 30000), 0);

        if (level === "raised") {
          rate = 0.7;
          cap = 14350;
        } else if (level === "highest") {
          rate = 1;
          cap = 20500;
        } else {
          rate = 0.4;
          cap = 8200;
        }

        fromPercent = cost * rate;
        estimate = Math.min(fromPercent, cap);
        label = "Orientacyjna dotacja dla instalacji c.o./c.w.u.";
        note = "Wynik dla jednej kategorii kosztu, przed oceną dokumentów przez WFOŚiGW.";

        if (statusList) {
          if (fromPercent > cap) {
            addStatus(statusList, "Wynik ogranicza maksymalny limit kategorii instalacji c.o./c.w.u.", false);
          } else {
            addStatus(statusList, "Wynik ogranicza procent kosztu kwalifikowanego, a nie limit kategorii.", false);
          }
          if (level === "highest") {
            if (eu <= 140) {
              estimate = 0;
              addStatus(statusList, "Przy podanym EU najwyższy poziom nie ma zastosowania. Sprawdź poziom podstawowy lub podwyższony i pozostałe warunki.", true);
            } else {
              addStatus(statusList, "EU przekracza 140, ale nadal trzeba spełnić kryteria dochodowe i wszystkie pozostałe warunki najwyższego poziomu.", false);
            }
          }
          if (cp.permit) {
            if (cp.permit.value !== "yes") {
              addStatus(statusList, "Brak potwierdzenia pozwolenia do 31.12.2020 r. może wykluczać standardową ścieżkę programu.", true);
            }
          }
          if (cp.audit) {
            if (cp.audit.value !== "yes") {
              addStatus(statusList, "Audyt i DPAE są wymagane przed realizacją w aktualnym Czystym Powietrzu.", true);
            }
          }
          addStatus(statusList, "Kalkulator nie sprawdza dochodu, własności, zakresu audytu, faktur ani kwalifikowalności konkretnej instalacji.", false);
        }
      } else {
        var type = mc.type ? mc.type.value : "airwater";
        var ep = numberValue(mc.ep, 45);
        var hasKdr = mc.kdr ? mc.kdr.value === "yes" : false;
        cost = Math.max(numberValue(mc.cost, 30000), 0);
        rate = hasKdr ? 0.45 : 0.3;
        cap = type === "ground" ? 21000 : 7000;
        fromPercent = cost * rate;
        estimate = Math.min(fromPercent, cap);
        label = "Orientacyjna dotacja na zakup i montaż pompy ciepła";
        note = "Wynik nie obejmuje podłogówki ani projektu instalacji.";

        if (statusList) {
          if (fromPercent > cap) {
            addStatus(statusList, "Wynik ogranicza limit przewidziany dla wybranego rodzaju pompy.", false);
          } else {
            addStatus(statusList, "Wynik ogranicza procent kosztu kwalifikowanego, a nie limit urządzenia.", false);
          }
          if (ep > 55) {
            addStatus(statusList, "Podane EP H+W przekracza limit 55 kWh/(m²·rok).", true);
          }
          if (mc.fresh) {
            if (mc.fresh.value !== "yes") {
              addStatus(statusList, "Nie potwierdzono definicji nowego budynku wymaganej w programie.", true);
            }
          }
          if (mc.solid) {
            if (mc.solid.value === "yes") {
              addStatus(statusList, "Źródło na paliwo stałe jest sprzeczne z warunkiem programu dotyczącym okresu trwałości.", true);
            }
          }
          addStatus(statusList, "Wynik dotyczy wyłącznie pompy ciepła i nie obejmuje rur, rozdzielacza, wylewki ani projektu podłogówki.", false);
        }
      }

      setText("#rk-grant-estimate-label", label);
      setText("#rk-grant-estimate-amount", money(estimate));
      setText("#rk-grant-estimate-note", note);
      setText("#rk-grant-rate-result", Math.round(rate * 100).toLocaleString("pl-PL") + "%");
      setText("#rk-grant-cap-result", money(cap));
      setText("#rk-grant-percent-result", money(fromPercent));

      var fill = one("#rk-grant-limit-fill");
      if (fill) {
        var ratio = cap > 0 ? estimate / cap * 100 : 0;
        fill.style.width = Math.min(Math.max(ratio, 0), 100).toFixed(1) + "%";
      }
    }

    many("[data-grant-program]").forEach(function (button, index) {
      button.addEventListener("click", function () {
        activateProgram(button.getAttribute("data-grant-program"));
      });
      button.addEventListener("keydown", function (event) {
        if (event.key !== "ArrowRight") {
          if (event.key !== "ArrowLeft") {
            return;
          }
        }
        event.preventDefault();
        var buttons = many("[data-grant-program]");
        var movement = event.key === "ArrowRight" ? 1 : -1;
        var nextIndex = (index + movement + buttons.length) % buttons.length;
        var nextButton = buttons[nextIndex];
        activateProgram(nextButton.getAttribute("data-grant-program"));
        nextButton.focus();
      });
    });

    [cp.level, cp.cost, cp.eu, cp.permit, cp.audit, mc.type, mc.cost, mc.kdr, mc.ep, mc.fresh, mc.solid].forEach(function (field) {
      if (!field) {
        return;
      }
      field.addEventListener("input", renderCalculator);
      field.addEventListener("change", renderCalculator);
    });

    many(".rk-grant-nav a").forEach(function (link) {
      link.addEventListener("click", function (event) {
        var selector = link.getAttribute("href");
        if (!selector) {
          return;
        }
        var target = root.querySelector(selector);
        if (target) {
          event.preventDefault();
          target.scrollIntoView({ behavior: "smooth", block: "start" });
        }
      });
    });

    var tabButtons = many("[data-grant-author-tab]");
    var tabPanels = many("[data-grant-author-panel]");

    function activateAuthorTab(key) {
      tabButtons.forEach(function (button) {
        var active = button.getAttribute("data-grant-author-tab") === key;
        button.classList.toggle("is-active", active);
        button.setAttribute("aria-selected", active ? "true" : "false");
        button.tabIndex = active ? 0 : -1;
      });
      tabPanels.forEach(function (panel) {
        var active = panel.getAttribute("data-grant-author-panel") === key;
        panel.hidden = !active;
      });
    }

    tabButtons.forEach(function (button, index) {
      button.addEventListener("click", function () {
        activateAuthorTab(button.getAttribute("data-grant-author-tab"));
      });
      button.addEventListener("keydown", function (event) {
        if (event.key !== "ArrowRight") {
          if (event.key !== "ArrowLeft") {
            return;
          }
        }
        event.preventDefault();
        var movement = event.key === "ArrowRight" ? 1 : -1;
        var nextIndex = (index + movement + tabButtons.length) % tabButtons.length;
        var nextButton = tabButtons[nextIndex];
        activateAuthorTab(nextButton.getAttribute("data-grant-author-tab"));
        nextButton.focus();
      });
    });

    var progress = one(".rk-grant-progress");
    function updateProgress() {
      if (!progress) {
        return;
      }
      var articleTop = root.getBoundingClientRect().top + window.scrollY;
      var articleHeight = root.offsetHeight - window.innerHeight;
      var travelled = window.scrollY - articleTop;
      var percentage = articleHeight > 0 ? travelled / articleHeight * 100 : 0;
      percentage = Math.min(Math.max(percentage, 0), 100);
      progress.style.width = percentage.toFixed(2) + "%";
    }

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

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", initGrantGuide);
  } else {
    initGrantGuide();
  }
  window.setTimeout(initGrantGuide, 500);
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/">Projekt ogrzewania podłogowego a dotacje Czyste Powietrze i Moje Ciepło 2026.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rekuperacja i ogrzewanie podłogowe – czy to się opłaca?</title>
		<link>https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 14 Feb 2026 11:29:11 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Dom energooszczędny]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Energooszczędny dom]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Rekuperacja]]></category>
		<category><![CDATA[Wentylacja mechaniczna]]></category>
		<category><![CDATA[cop pompy ciepła]]></category>
		<category><![CDATA[dom energooszczędny]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[ogrzewanie domu]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[podłogówka i rekuperacja]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[rekuperacja]]></category>
		<category><![CDATA[wentylacja mechaniczna]]></category>
		<category><![CDATA[wentylacja z odzyskiem ciepła]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3448</guid>

					<description><![CDATA[<p>Czy połączenie, jakim jest rekuperacja i ogrzewanie podłogowe – czy to się opłaca, faktycznie przynosi realne korzyści, czy to tylko marketingowy slogan? Coraz więcej inwestorów wybiera ten duet, ponieważ zapewnia nie tylko niższe rachunki, ale przede wszystkim stabilną temperaturę, wyższy komfort życia i maksymalną efektywność pompy ciepła. Dzięki odzyskowi ciepła z wentylacji i pracy systemu niskotemperaturowego budynek zużywa mniej energii, a instalacja działa bardziej przewidywalnie. W artykule pokazujemy konkretne wyliczenia, fakty techniczne i realne oszczędności, które mają znaczenie przez kolejne dekady użytkowania domu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">Rekuperacja i ogrzewanie podłogowe – czy to się opłaca?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-reku-guide {
    --rk-dark: #102536;
    --rk-navy: #15384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbfe;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #d69a16;
    --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-reku-guide,
  #rk-reku-guide * { box-sizing: border-box; }
  #rk-reku-guide img,
  #rk-reku-guide svg { max-width: 100%; }
  #rk-reku-guide button,
  #rk-reku-guide input,
  #rk-reku-guide select,
  #rk-reku-guide label,
  #rk-reku-guide summary,
  #rk-reku-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-reku-guide button,
  #rk-reku-guide input,
  #rk-reku-guide select { max-width: 100%; }
  #rk-reku-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-reku-guide a:hover,
  #rk-reku-guide a:focus-visible { color: var(--rk-red); }
  #rk-reku-guide p,
  #rk-reku-guide ul,
  #rk-reku-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-reku-guide h2,
  #rk-reku-guide h3,
  #rk-reku-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
    overflow-wrap: anywhere;
  }
  #rk-reku-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-reku-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-reku-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-reku-guide strong { color: var(--rk-dark); }
  #rk-reku-guide [hidden] { display: none !important; }

  #rk-reku-guide .rk-rv-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
    box-shadow: 0 24px 70px rgba(16, 37, 54, .11);
  }
  #rk-reku-guide .rk-rv-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .31), transparent 28%),
      radial-gradient(circle at 8% 100%, rgba(255, 106, 61, .24), transparent 30%),
      linear-gradient(135deg, #0d2332 0%, #143e53 55%, #175b62 100%);
  }
  #rk-reku-guide .rk-rv-hero::after {
    position: absolute;
    right: -55px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 46px solid rgba(255, 255, 255, .05);
    border-radius: 50%;
    content: "";
  }
  #rk-reku-guide .rk-rv-kicker {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-reku-guide .rk-rv-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-reku-guide .rk-rv-hero-title {
    position: relative;
    z-index: 1;
    max-width: 1030px;
    margin: 0 0 21px;
    color: var(--rk-white);
    font-size: clamp(2.25rem, 7.5vw, 5.15rem);
    font-weight: 950;
    letter-spacing: -.065em;
    line-height: .98;
  }
  #rk-reku-guide .rk-rv-hero-title span { color: #67e7f5; }
  #rk-reku-guide .rk-rv-lead {
    position: relative;
    z-index: 1;
    max-width: 960px;
    margin-bottom: 24px;
    color: #e2f2f5;
    font-size: clamp(1rem, 2.2vw, 1.3rem);
    line-height: 1.55;
  }
  #rk-reku-guide .rk-rv-hero-tags,
  #rk-reku-guide .rk-rv-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px 12px;
  }
  #rk-reku-guide .rk-rv-hero-tag {
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;
    color: var(--rk-white);
    background: rgba(255, 255, 255, .07);
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.2;
  }
  #rk-reku-guide .rk-rv-byline {
    margin-top: 27px;
    color: #cae0e6;
    font-size: .68rem;
    font-weight: 720;
  }
  #rk-reku-guide .rk-rv-byline strong { color: var(--rk-white); }
  #rk-reku-guide .rk-rv-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 28px;
  }
  #rk-reku-guide .rk-rv-hero-metric {
    min-width: 0;
    padding: 17px;
    border: 1px solid rgba(255, 255, 255, .17);
    border-radius: 14px;
    background: rgba(255, 255, 255, .065);
  }
  #rk-reku-guide .rk-rv-hero-metric b {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-white);
    font-size: .73rem;
  }
  #rk-reku-guide .rk-rv-hero-metric span {
    display: block;
    color: #c8e0e6;
    font-size: .64rem;
    line-height: 1.48;
  }

  #rk-reku-guide .rk-rv-nav {
    display: block;
    padding: 18px clamp(20px, 4vw, 46px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }
  #rk-reku-guide .rk-rv-nav-label {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-dark);
    font-size: .67rem;
    font-weight: 950;
    letter-spacing: .075em;
    text-transform: uppercase;
  }
  #rk-reku-guide .rk-rv-nav-links {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    width: 100%;
  }
  #rk-reku-guide .rk-rv-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 39px;
    padding: 8px 13px;
    border: 1px solid transparent;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: .67rem;
    font-weight: 880;
    line-height: 1.15;
    text-decoration: none;
    white-space: normal;
  }
  #rk-reku-guide .rk-rv-nav a:hover,
  #rk-reku-guide .rk-rv-nav a:focus-visible {
    border-color: var(--rk-cyan);
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
  }

  #rk-reku-guide .rk-rv-content { padding: 0 clamp(22px, 5vw, 70px) 58px; }
  #rk-reku-guide .rk-rv-section {
    scroll-margin-top: 24px;
    padding: clamp(46px, 7vw, 78px) 0;
    border-bottom: 1px solid var(--rk-line);
  }
  #rk-reku-guide .rk-rv-section:last-child { border-bottom: 0; }
  #rk-reku-guide .rk-rv-section > :last-child { margin-bottom: 0; }
  #rk-reku-guide .rk-rv-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 9px;
    color: var(--rk-blue);
    font-size: .66rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-reku-guide .rk-rv-eyebrow::before {
    width: 24px;
    height: 3px;
    border-radius: 99px;
    background: var(--rk-cyan);
    content: "";
  }
  #rk-reku-guide .rk-rv-intro { max-width: 900px; color: var(--rk-text); font-size: 1.03rem; }
  #rk-reku-guide .rk-rv-small { color: var(--rk-muted); font-size: .76rem; line-height: 1.58; }
  #rk-reku-guide .rk-rv-grid-2,
  #rk-reku-guide .rk-rv-grid-3,
  #rk-reku-guide .rk-rv-grid-4 {
    display: grid;
    gap: 18px;
    margin-top: 24px;
  }
  #rk-reku-guide .rk-rv-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-reku-guide .rk-rv-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-reku-guide .rk-rv-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-reku-guide .rk-rv-card {
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, .055);
  }
  #rk-reku-guide .rk-rv-card > :last-child { margin-bottom: 0; }
  #rk-reku-guide .rk-rv-card-accent { border-top: 5px solid var(--rk-cyan); }
  #rk-reku-guide .rk-rv-card-warm { border-top: 5px solid var(--rk-orange); }
  #rk-reku-guide .rk-rv-card-green { border-top: 5px solid #3ecf9f; }
  #rk-reku-guide .rk-rv-card-number {
    display: inline-grid;
    place-items: center;
    width: 38px;
    height: 38px;
    margin-bottom: 14px;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    font-size: .82rem;
    font-weight: 950;
  }
  #rk-reku-guide .rk-rv-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(260px, .7fr);
    gap: 18px;
    margin-top: 25px;
  }
  #rk-reku-guide .rk-rv-answer-main {
    padding: clamp(25px, 4vw, 38px);
    border-radius: 20px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), #155269);
  }
  #rk-reku-guide .rk-rv-answer-main h3,
  #rk-reku-guide .rk-rv-answer-main strong { color: var(--rk-white); }
  #rk-reku-guide .rk-rv-answer-main p { color: #dbeef2; }
  #rk-reku-guide .rk-rv-answer-side {
    padding: 25px;
    border: 1px solid #f1c8b9;
    border-radius: 20px;
    background: var(--rk-orange-soft);
  }

  #rk-reku-guide .rk-rv-callout {
    margin: 24px 0;
    padding: 20px 22px;
    border-left: 5px solid var(--rk-cyan);
    border-radius: 12px;
    color: #263b48;
    background: var(--rk-cyan-soft);
  }
  #rk-reku-guide .rk-rv-callout > :last-child { margin-bottom: 0; }
  #rk-reku-guide .rk-rv-callout strong { color: var(--rk-dark); }
  #rk-reku-guide .rk-rv-callout-warn {
    border-left-color: var(--rk-yellow);
    color: #3f3825;
    background: var(--rk-yellow-soft);
  }
  #rk-reku-guide .rk-rv-callout-danger {
    border-left-color: var(--rk-orange);
    color: #442e29;
    background: var(--rk-orange-soft);
  }
  #rk-reku-guide .rk-rv-formula {
    overflow-wrap: anywhere;
    margin: 22px 0;
    padding: 20px;
    border: 1px solid #b9dde7;
    border-radius: 14px;
    color: var(--rk-dark);
    background: #eefbfe;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(.8rem, 2vw, 1rem);
    font-weight: 800;
    text-align: center;
  }
  #rk-reku-guide .rk-rv-list-check,
  #rk-reku-guide .rk-rv-list-cross { padding-left: 0; list-style: none; }
  #rk-reku-guide .rk-rv-list-check li,
  #rk-reku-guide .rk-rv-list-cross li {
    position: relative;
    padding-left: 31px;
    margin-bottom: 10px;
  }
  #rk-reku-guide .rk-rv-list-check li::before,
  #rk-reku-guide .rk-rv-list-cross li::before {
    position: absolute;
    left: 0;
    top: .16em;
    display: grid;
    place-items: center;
    width: 21px;
    height: 21px;
    border-radius: 50%;
    font-size: .62rem;
    font-weight: 950;
  }
  #rk-reku-guide .rk-rv-list-check li::before { color: #0b604f; background: #d6f4e9; content: "✓"; }
  #rk-reku-guide .rk-rv-list-cross li::before { color: #8f2d22; background: #ffe1dc; content: "×"; }

  #rk-reku-guide .rk-rv-table-wrap { margin: 25px 0; }
  #rk-reku-guide .rk-rv-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    overflow: hidden;
    font-size: .82rem;
  }
  #rk-reku-guide .rk-rv-table th,
  #rk-reku-guide .rk-rv-table td {
    padding: 14px 15px;
    border-right: 1px solid var(--rk-line);
    border-bottom: 1px solid var(--rk-line);
    text-align: left;
    vertical-align: top;
  }
  #rk-reku-guide .rk-rv-table th:last-child,
  #rk-reku-guide .rk-rv-table td:last-child { border-right: 0; }
  #rk-reku-guide .rk-rv-table tr:last-child td { border-bottom: 0; }
  #rk-reku-guide .rk-rv-table thead th {
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: .71rem;
    font-weight: 900;
  }
  #rk-reku-guide .rk-rv-table tbody tr:nth-child(even) { background: var(--rk-soft); }
  #rk-reku-guide .rk-rv-table td strong { display: block; }

  #rk-reku-guide .rk-rv-system-map {
    margin: 28px 0;
    padding: clamp(22px, 4vw, 34px);
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: linear-gradient(145deg, #f7fbfc, #edf7fa);
  }
  #rk-reku-guide .rk-rv-system-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 40px minmax(0, 1fr) 40px minmax(0, 1fr);
    align-items: stretch;
    gap: 9px;
    margin-top: 13px;
  }
  #rk-reku-guide .rk-rv-system-node {
    display: flex;
    min-height: 92px;
    flex-direction: column;
    justify-content: center;
    padding: 16px;
    border: 1px solid #bdd8e1;
    border-radius: 14px;
    color: var(--rk-dark);
    background: var(--rk-white);
    text-align: center;
  }
  #rk-reku-guide .rk-rv-system-node b { font-size: .82rem; }
  #rk-reku-guide .rk-rv-system-node span { margin-top: 4px; color: var(--rk-muted); font-size: .65rem; line-height: 1.42; }
  #rk-reku-guide .rk-rv-system-node-end { border-color: var(--rk-cyan); background: var(--rk-cyan-soft); }
  #rk-reku-guide .rk-rv-system-arrow {
    display: grid;
    place-items: center;
    color: var(--rk-blue);
    font-size: 1.5rem;
    font-weight: 950;
  }
  #rk-reku-guide .rk-rv-system-note { margin: 18px 0 0; color: var(--rk-text); font-size: .78rem; text-align: center; }

  #rk-reku-guide .rk-rv-analyzer {
    overflow: hidden;
    margin-top: 28px;
    border-radius: 24px;
    color: #e9f5f7;
    background: #102a3b;
    box-shadow: 0 22px 55px rgba(16, 37, 54, .2);
  }
  #rk-reku-guide .rk-rv-analyzer-head {
    padding: clamp(26px, 5vw, 42px);
    background:
      radial-gradient(circle at 92% 0%, rgba(37, 199, 216, .2), transparent 31%),
      linear-gradient(130deg, #123044, #15556a);
  }
  #rk-reku-guide .rk-rv-analyzer-head h3 { margin-bottom: 10px; color: var(--rk-white); font-size: clamp(1.45rem, 3.5vw, 2.15rem); }
  #rk-reku-guide .rk-rv-analyzer-head p { max-width: 900px; margin-bottom: 0; color: #d7edf1; }
  #rk-reku-guide .rk-rv-analyzer-body { padding: clamp(20px, 4vw, 36px); }
  #rk-reku-guide .rk-rv-tool-panel {
    min-width: 0;
    margin-bottom: 20px;
    padding: clamp(20px, 3vw, 28px);
    border: 1px solid #33566a;
    border-radius: 18px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-reku-guide .rk-rv-tool-panel:last-child { margin-bottom: 0; }
  #rk-reku-guide .rk-rv-tool-panel h3,
  #rk-reku-guide .rk-rv-tool-panel h4,
  #rk-reku-guide .rk-rv-tool-panel strong { color: var(--rk-white); }
  #rk-reku-guide .rk-rv-tool-panel p { color: #bfd4db; }
  #rk-reku-guide .rk-rv-input-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
  }
  #rk-reku-guide .rk-rv-field { min-width: 0; }
  #rk-reku-guide .rk-rv-field label {
    display: block;
    margin-bottom: 7px;
    color: #ecf7f9;
    font-size: .68rem;
    font-weight: 860;
    line-height: 1.35;
  }
  #rk-reku-guide .rk-rv-field input,
  #rk-reku-guide .rk-rv-field select {
    display: block;
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #9eb7c1;
    border-radius: 10px;
    color: #132735;
    background: var(--rk-white);
    font-size: .8rem;
    font-weight: 720;
    line-height: 1.2;
  }
  #rk-reku-guide .rk-rv-field input:focus,
  #rk-reku-guide .rk-rv-field select:focus {
    border-color: var(--rk-cyan);
    outline: 3px solid rgba(37, 199, 216, .2);
  }
  #rk-reku-guide .rk-rv-field small {
    display: block;
    margin-top: 6px;
    color: #91aeb8;
    font-size: .59rem;
    line-height: 1.45;
  }
  #rk-reku-guide .rk-rv-tool-note {
    margin: 20px 0 0;
    padding: 14px 16px;
    border-left: 4px solid var(--rk-yellow);
    border-radius: 9px;
    color: #fff2bd;
    background: rgba(214, 154, 22, .13);
    font-size: .7rem;
  }
  #rk-reku-guide .rk-rv-run {
    width: 100%;
    min-height: 54px;
    margin-top: 22px;
    padding: 13px 20px;
    border: 0;
    border-radius: 12px;
    color: var(--rk-dark);
    background: linear-gradient(135deg, #63ebf6, var(--rk-cyan));
    box-shadow: 0 9px 24px rgba(37, 199, 216, .2);
    cursor: pointer;
    font-size: .81rem;
    font-weight: 950;
  }
  #rk-reku-guide .rk-rv-run:hover,
  #rk-reku-guide .rk-rv-run:focus-visible { transform: translateY(-1px); filter: brightness(1.05); }
  #rk-reku-guide .rk-rv-result-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 18px;
  }
  #rk-reku-guide .rk-rv-result {
    min-width: 0;
    padding: 18px;
    border: 1px solid #33566a;
    border-radius: 14px;
    background: #153548;
  }
  #rk-reku-guide .rk-rv-result span {
    display: block;
    margin-bottom: 6px;
    color: #9fc0ca;
    font-size: .59rem;
    font-weight: 850;
    letter-spacing: .045em;
    line-height: 1.35;
    text-transform: uppercase;
  }
  #rk-reku-guide .rk-rv-result strong {
    display: block;
    color: var(--rk-white);
    font-size: clamp(1.12rem, 3vw, 1.55rem);
    line-height: 1.15;
  }
  #rk-reku-guide .rk-rv-result small { display: block; margin-top: 6px; color: #8fb0ba; font-size: .57rem; line-height: 1.4; }
  #rk-reku-guide .rk-rv-result-highlight { border-color: var(--rk-cyan); background: #154255; }
  #rk-reku-guide .rk-rv-verdict {
    margin-top: 18px;
    padding: 20px;
    border: 1px solid #3b7e75;
    border-radius: 14px;
    background: rgba(62, 207, 159, .1);
  }
  #rk-reku-guide .rk-rv-verdict b { display: block; margin-bottom: 5px; color: #7ff0cc; font-size: .78rem; }
  #rk-reku-guide .rk-rv-verdict p { margin-bottom: 0; color: #d9f1eb; font-size: .75rem; }
  #rk-reku-guide .rk-rv-diagnostics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 18px; }
  #rk-reku-guide .rk-rv-diagnostic {
    min-width: 0;
    padding: 15px 16px;
    border-radius: 11px;
    color: #e9f5f7;
    background: rgba(37, 199, 216, .09);
    font-size: .68rem;
    line-height: 1.55;
  }
  #rk-reku-guide .rk-rv-diagnostic-warn { color: #fff0c0; background: rgba(214, 154, 22, .13); }
  #rk-reku-guide .rk-rv-chart-wrap {
    margin-top: 18px;
    padding: 16px;
    border: 1px solid #33566a;
    border-radius: 14px;
    background: #f7fbfc;
  }
  #rk-reku-guide .rk-rv-chart-wrap svg { display: block; width: 100%; height: auto; overflow: visible; }
  #rk-reku-guide .rk-rv-chart-legend { display: flex; flex-wrap: wrap; gap: 10px 18px; margin-top: 11px; color: #304b5b; font-size: .62rem; font-weight: 800; }
  #rk-reku-guide .rk-rv-legend-item { display: inline-flex; align-items: center; gap: 7px; }
  #rk-reku-guide .rk-rv-legend-line { width: 28px; height: 4px; border-radius: 999px; background: var(--rk-orange); }
  #rk-reku-guide .rk-rv-legend-line-cyan { background: var(--rk-cyan); }
  #rk-reku-guide .rk-rv-chart-caption { margin: 10px 0 0; color: #607582 !important; font-size: .63rem; line-height: 1.55; }

  #rk-reku-guide .rk-rv-cta {
    position: relative;
    overflow: hidden;
    margin: 34px 0;
    padding: clamp(28px, 5vw, 44px);
    border-radius: 22px;
    color: var(--rk-white);
    background: linear-gradient(135deg, #102536, #174c61);
    box-shadow: 0 18px 45px rgba(16, 37, 54, .16);
  }
  #rk-reku-guide .rk-rv-cta::after {
    position: absolute;
    right: -70px;
    bottom: -95px;
    width: 240px;
    height: 240px;
    border: 34px solid rgba(255, 255, 255, .05);
    border-radius: 50%;
    content: "";
  }
  #rk-reku-guide .rk-rv-cta h3,
  #rk-reku-guide .rk-rv-cta strong { position: relative; z-index: 1; color: var(--rk-white); }
  #rk-reku-guide .rk-rv-cta p { position: relative; z-index: 1; max-width: 900px; color: #dceef2; }
  #rk-reku-guide .rk-rv-cta-button {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 53px;
    margin-top: 8px;
    padding: 13px 22px;
    border-radius: 11px;
    color: var(--rk-white) !important;
    background: var(--rk-orange);
    box-shadow: 0 10px 25px rgba(255, 106, 61, .25);
    font-size: .79rem;
    font-weight: 950;
    text-align: center;
    text-decoration: none !important;
  }
  #rk-reku-guide .rk-rv-cta-button:hover,
  #rk-reku-guide .rk-rv-cta-button:focus-visible { color: var(--rk-white) !important; background: #ef5530; }

  #rk-reku-guide .rk-rv-steps { counter-reset: rk-rv-step; padding: 0; list-style: none; }
  #rk-reku-guide .rk-rv-steps li {
    position: relative;
    min-height: 55px;
    margin-bottom: 15px;
    padding: 13px 15px 13px 63px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-white);
  }
  #rk-reku-guide .rk-rv-steps li::before {
    position: absolute;
    left: 13px;
    top: 12px;
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    content: counter(rk-rv-step);
    counter-increment: rk-rv-step;
    font-size: .72rem;
    font-weight: 950;
  }
  #rk-reku-guide .rk-rv-faq { display: grid; gap: 12px; }
  #rk-reku-guide .rk-rv-faq details {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-white);
  }
  #rk-reku-guide .rk-rv-faq summary {
    position: relative;
    padding: 18px 54px 18px 20px;
    color: var(--rk-dark);
    cursor: pointer;
    font-size: .82rem;
    font-weight: 900;
    line-height: 1.4;
    list-style: none;
  }
  #rk-reku-guide .rk-rv-faq summary::-webkit-details-marker { display: none; }
  #rk-reku-guide .rk-rv-faq summary::after {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-blue);
    content: "+";
    font-size: 1.3rem;
    font-weight: 700;
  }
  #rk-reku-guide .rk-rv-faq details[open] summary::after { content: "−"; }
  #rk-reku-guide .rk-rv-faq-answer { padding: 0 20px 19px; color: var(--rk-text); font-size: .82rem; }
  #rk-reku-guide .rk-rv-faq-answer p:last-child { margin-bottom: 0; }
  #rk-reku-guide .rk-rv-source-list { padding-left: 22px; }
  #rk-reku-guide .rk-rv-source-list li { margin-bottom: 12px; color: var(--rk-text); }

  #rk-reku-guide .rk-rv-author {
    display: grid;
    grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    background: var(--rk-soft);
  }
  #rk-reku-guide .rk-rv-author-side {
    padding: 31px 24px;
    color: var(--rk-white);
    background: var(--rk-dark);
    text-align: center;
  }
  #rk-reku-guide .rk-rv-author-photo {
    display: block;
    width: 150px;
    height: 150px;
    margin: 0 auto 18px;
    border: 6px solid rgba(255, 255, 255, .14);
    border-radius: 50%;
    object-fit: cover;
  }
  #rk-reku-guide .rk-rv-author-side h3 { margin-bottom: 7px; color: var(--rk-white); }
  #rk-reku-guide .rk-rv-author-side p { color: #c3dae1; font-size: .71rem; line-height: 1.55; }
  #rk-reku-guide .rk-rv-social-label { display: block; margin: 20px 0 10px; color: #89a8b3; font-size: .58rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
  #rk-reku-guide .rk-rv-socials { display: flex; justify-content: center; gap: 10px; }
  #rk-reku-guide .rk-rv-socials a {
    display: grid;
    place-items: center;
    width: 45px;
    height: 45px;
    border: 1px solid #476779;
    border-radius: 50%;
    color: #d8e9ed;
    background: transparent;
    font-size: .72rem;
    font-weight: 950;
    text-decoration: none;
  }
  #rk-reku-guide .rk-rv-socials a:hover,
  #rk-reku-guide .rk-rv-socials a:focus-visible { border-color: var(--rk-cyan); color: var(--rk-dark); background: var(--rk-cyan); }
  #rk-reku-guide .rk-rv-author-main { min-width: 0; padding: clamp(27px, 5vw, 45px); }
  #rk-reku-guide .rk-rv-author-quote {
    position: relative;
    margin-bottom: 24px;
    padding: 19px 21px 19px 50px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .82rem;
    font-weight: 760;
  }
  #rk-reku-guide .rk-rv-author-quote::before {
    position: absolute;
    left: 17px;
    top: 7px;
    color: var(--rk-cyan);
    content: "“";
    font-size: 2.7rem;
    font-weight: 950;
    line-height: 1;
  }
  #rk-reku-guide .rk-rv-author-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
  #rk-reku-guide .rk-rv-author-tabs span {
    padding: 7px 12px;
    border-radius: 999px;
    color: #58707e;
    background: #e7f0f4;
    font-size: .61rem;
    font-weight: 900;
  }
  #rk-reku-guide .rk-rv-author-tabs span:first-child { color: var(--rk-white); background: var(--rk-blue); }
  #rk-reku-guide .rk-rv-author-main p { color: var(--rk-text); font-size: .82rem; }
  #rk-reku-guide .rk-rv-author-portals {
    margin-top: 17px;
    padding-top: 16px;
    border-top: 1px solid var(--rk-line);
    color: var(--rk-muted);
    font-size: .68rem;
  }

  @media (max-width: 940px) {
    #rk-reku-guide .rk-rv-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-reku-guide .rk-rv-grid-3,
    #rk-reku-guide .rk-rv-input-grid,
    #rk-reku-guide .rk-rv-result-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-reku-guide .rk-rv-answer { grid-template-columns: 1fr; }
  }
  @media (max-width: 720px) {
    #rk-reku-guide { margin: 15px auto 45px; font-size: 16px; }
    #rk-reku-guide .rk-rv-shell { border-radius: 18px; }
    #rk-reku-guide .rk-rv-hero { padding: 35px 21px 31px; }
    #rk-reku-guide .rk-rv-hero-title { font-size: clamp(2rem, 12vw, 3.2rem); }
    #rk-reku-guide .rk-rv-hero-metrics,
    #rk-reku-guide .rk-rv-grid-2,
    #rk-reku-guide .rk-rv-grid-3,
    #rk-reku-guide .rk-rv-grid-4,
    #rk-reku-guide .rk-rv-input-grid,
    #rk-reku-guide .rk-rv-result-grid,
    #rk-reku-guide .rk-rv-diagnostics { grid-template-columns: minmax(0, 1fr); }
    #rk-reku-guide .rk-rv-nav { padding: 16px; }
    #rk-reku-guide .rk-rv-nav-links { gap: 7px; }
    #rk-reku-guide .rk-rv-nav a { flex: 1 1 145px; justify-content: center; min-width: 0; text-align: center; }
    #rk-reku-guide .rk-rv-content { padding: 0 18px 38px; }
    #rk-reku-guide .rk-rv-section { padding: 43px 0; }
    #rk-reku-guide .rk-rv-card { padding: 20px; }
    #rk-reku-guide .rk-rv-system-row { grid-template-columns: minmax(0, 1fr); }
    #rk-reku-guide .rk-rv-system-arrow { min-height: 27px; transform: rotate(90deg); }
    #rk-reku-guide .rk-rv-analyzer { border-radius: 17px; }
    #rk-reku-guide .rk-rv-tool-panel { padding: 18px; }
    #rk-reku-guide .rk-rv-chart-wrap { padding: 8px; }
    #rk-reku-guide .rk-rv-chart-wrap svg { min-height: 270px; }
    #rk-reku-guide .rk-rv-author { grid-template-columns: minmax(0, 1fr); }
    #rk-reku-guide .rk-rv-table,
    #rk-reku-guide .rk-rv-table tbody,
    #rk-reku-guide .rk-rv-table tr,
    #rk-reku-guide .rk-rv-table td { display: block; width: 100%; }
    #rk-reku-guide .rk-rv-table thead { display: none; }
    #rk-reku-guide .rk-rv-table { border: 0; overflow: visible; background: transparent; }
    #rk-reku-guide .rk-rv-table tbody { display: grid; gap: 14px; }
    #rk-reku-guide .rk-rv-table tr {
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      background: var(--rk-white) !important;
      box-shadow: 0 8px 20px rgba(16, 37, 54, .055);
    }
    #rk-reku-guide .rk-rv-table td {
      min-width: 0;
      padding: 12px 14px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      overflow-wrap: anywhere;
    }
    #rk-reku-guide .rk-rv-table td:last-child { border-bottom: 0; }
    #rk-reku-guide .rk-rv-table td::before {
      display: block;
      margin-bottom: 4px;
      color: var(--rk-blue);
      content: attr(data-label);
      font-size: .61rem;
      font-weight: 900;
      letter-spacing: .045em;
      text-transform: uppercase;
    }
  }
  @media (max-width: 430px) {
    #rk-reku-guide .rk-rv-nav a { flex-basis: 100%; }
    #rk-reku-guide .rk-rv-byline { flex-direction: column; gap: 5px; }
    #rk-reku-guide .rk-rv-hero-tag { width: 100%; text-align: center; }
    #rk-reku-guide .rk-rv-cta-button { width: 100%; }
    #rk-reku-guide .rk-rv-author-quote { padding-left: 44px; }
  }
</style>

<article id="rk-reku-guide" itemscope="" itemtype="https://schema.org/TechArticle">
  <div class="rk-rv-shell">
    <header class="rk-rv-hero">
      <div class="rk-rv-kicker">Bilans cieplny domu · aktualizacja 2026</div>
      <div class="rk-rv-hero-title">Rekuperacja i podłogówka — <span>co naprawdę się opłaca?</span></div>
      <p class="rk-rv-lead">Rekuperator nie ogrzewa podłogi i nie dobiera rozstawu rur. Ogranicza natomiast wentylacyjną część strat ciepła, dlatego może zmienić obciążenie budynku, moc źródła oraz ilość ciepła, którą musi oddać instalacja podłogowa.</p>
      <div class="rk-rv-hero-tags" aria-label="Najważniejsze zagadnienia artykułu">
        <span class="rk-rv-hero-tag">odzysk ciepła</span>
        <span class="rk-rv-hero-tag">OZC i moc projektowa</span>
        <span class="rk-rv-hero-tag">podłogówka i pompa ciepła</span>
        <span class="rk-rv-hero-tag">koszty eksploatacji</span>
        <span class="rk-rv-hero-tag">analizator bilansu</span>
      </div>
      <div class="rk-rv-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 25 minut</span>
        <span>Aktualizacja techniczna: 7 września 2026 r.</span>
      </div>
      <div class="rk-rv-hero-metrics" aria-label="Trzy zasady oceny układu">
        <div class="rk-rv-hero-metric"><b>Dwa niezależne systemy</b><span>Wentylacja transportuje powietrze, a podłogówka ciepło przez wodę i powierzchnię podłogi.</span></div>
        <div class="rk-rv-hero-metric"><b>Jeden wspólny bilans</b><span>Łączą się przez zapotrzebowanie cieplne budynku i poszczególnych pomieszczeń.</span></div>
        <div class="rk-rv-hero-metric"><b>Bez uniwersalnego procentu</b><span>Oszczędność zależy od przepływów, odzysku, szczelności, klimatu i sposobu użytkowania.</span></div>
      </div>
    </header>

    <nav class="rk-rv-nav" aria-label="Nawigacja po artykule">
      <span class="rk-rv-nav-label">Na skróty</span>
      <div class="rk-rv-nav-links">
        <a href="#rk-rv-szybka">Szybka odpowiedź</a>
        <a href="#rk-rv-czy-ogrzewa">Czy rekuperacja ogrzewa?</a>
        <a href="#rk-rv-wspolpraca">Gdzie systemy się łączą?</a>
        <a href="#rk-rv-moc-energia">Moc a energia</a>
        <a href="#rk-rv-odzysk">Jak działa odzysk?</a>
        <a href="#rk-rv-analizator">Analizator bilansu</a>
        <a href="#rk-rv-wykres">Jak czytać wykres?</a>
        <a href="#rk-rv-porownanie">Uczciwe porównanie</a>
        <a href="#rk-rv-ozc">Rekuperacja a OZC</a>
        <a href="#rk-rv-sprawnosc">Sprawność rzeczywista</a>
        <a href="#rk-rv-bilans">Nawiew, wywiew i infiltracja</a>
        <a href="#rk-rv-podlogowka">Wpływ na podłogówkę</a>
        <a href="#rk-rv-rozstaw">Rozstaw rur</a>
        <a href="#rk-rv-zasilanie">Temperatura zasilania</a>
        <a href="#rk-rv-pompa-ciepla">Pompa ciepła</a>
        <a href="#rk-rv-koszty">Koszty pracy</a>
        <a href="#rk-rv-zwrot">Okres zwrotu</a>
        <a href="#rk-rv-wilgotnosc">Wilgotność i powietrze</a>
        <a href="#rk-rv-wymiennik">Wymiennik entalpiczny</a>
        <a href="#rk-rv-okna">Okna, okap i kominek</a>
        <a href="#rk-rv-zima">Mróz, kondensat i bypass</a>
        <a href="#rk-rv-uruchomienie">Uruchomienie i pomiary</a>
        <a href="#rk-rv-bledy">Najczęstsze błędy</a>
        <a href="#rk-rv-checklista">Checklista inwestora</a>
        <a href="#rk-rv-faq">FAQ</a>
        <a href="#rk-rv-zrodla">Źródła</a>
        <a href="#rk-rv-author">O autorze</a>
      </div>
    </nav>

    <div class="rk-rv-content">
      <section id="rk-rv-szybka" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Odpowiedź w 30 sekund</div>
        <h2>Rekuperacja i ogrzewanie podłogowe — czy to się opłaca?</h2>
        <p class="rk-rv-intro"><strong>Najczęściej jest to technicznie sensowne połączenie, ale nie dlatego, że rekuperator „napędza” podłogówkę.</strong> Wentylacja mechaniczna z odzyskiem ciepła ogranicza część strat wynikającą z wymiany powietrza. Podłogówka pokrywa obciążenie, które pozostaje po uwzględnieniu przegród, mostków, infiltracji, wentylacji oraz zysków ciepła.</p>
        <div class="rk-rv-answer">
          <div class="rk-rv-answer-main">
            <h3>Kiedy zestaw ma najwięcej sensu?</h3>
            <p>W szczelnym, dobrze zaizolowanym budynku, dla którego wykonano bilans powietrza i obliczenia strat pomieszczeń. Wtedy niższe obciążenie może pomóc utrzymać niską temperaturę wody i stabilną pracę źródła ciepła.</p>
            <p>Punktem wyjścia powinno być <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">prawidłowe obliczenie strat cieplnych budynku</a>, a nie procent oszczędności przepisany z innego domu.</p>
          </div>
          <aside class="rk-rv-answer-side">
            <h3>Czego nie wolno założyć?</h3>
            <ul class="rk-rv-list-cross">
              <li>stałej oszczędności 30–45%,</li>
              <li>automatycznego rozstawu rur 10 cm,</li>
              <li>stałej sprawności odzysku przez cały rok,</li>
              <li>krótszego okresu zwrotu bez danych o kosztach.</li>
            </ul>
          </aside>
        </div>
      </section>

      <section id="rk-rv-czy-ogrzewa" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Najważniejsze rozróżnienie</div>
        <h2>Czy rekuperacja ogrzewa dom?</h2>
        <p><strong>Rekuperacja odzyskuje część ciepła z powietrza usuwanego, ale nie zastępuje systemu grzewczego.</strong> Wymiennik przekazuje energię między strumieniami powietrza bez ich mieszania w prawidłowo działającej centrali. Temperatura nawiewu jest dzięki temu wyższa niż temperatura powietrza zewnętrznego, lecz zazwyczaj niższa niż temperatura w pomieszczeniu.</p>
        <div class="rk-rv-grid-3">
          <div class="rk-rv-card rk-rv-card-accent"><h3>Rekuperator</h3><p>Zmniejsza moc potrzebną do ogrzania świeżego powietrza i zapewnia kontrolowaną wymianę powietrza.</p></div>
          <div class="rk-rv-card rk-rv-card-warm"><h3>Źródło ciepła</h3><p>Wytwarza ciepło potrzebne do pokrycia bieżących strat budynku.</p></div>
          <div class="rk-rv-card rk-rv-card-green"><h3>Podłogówka</h3><p>Przekazuje ciepło do pomieszczeń przez powierzchnię podłogi.</p></div>
        </div>
        <p>To, czy podłogówka może być jedynym odbiornikiem ciepła, rozstrzyga bilans każdego pomieszczenia. Osobno wyjaśniam, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/">kiedy ogrzewanie podłogowe może samodzielnie ogrzać dom</a>.</p>
      </section>

      <section id="rk-rv-wspolpraca" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Dwa obiegi, jeden budynek</div>
        <h2>Gdzie rekuperacja i podłogówka naprawdę się łączą?</h2>
        <p>Nie łączy ich rura, rozdzielacz ani wspólny regulator hydrauliczny. Ich zależność przebiega przez bilans cieplny: im mniej energii ucieka z powietrzem wentylacyjnym, tym mniejszą moc musi w danej chwili dostarczyć ogrzewanie.</p>
        <div class="rk-rv-system-map" role="img" aria-label="Schemat dwóch niezależnych dróg: wentylacyjnej i grzewczej, które spotykają się w bilansie cieplnym pomieszczeń">
          <h3>Droga powietrza</h3>
          <div class="rk-rv-system-row">
            <div class="rk-rv-system-node"><b>Powietrze zewnętrzne</b><span>temperatura i wilgotność zależne od pogody</span></div>
            <div class="rk-rv-system-arrow" aria-hidden="true">→</div>
            <div class="rk-rv-system-node"><b>Wymiennik odzysku</b><span>część ciepła z wywiewu trafia do nawiewu</span></div>
            <div class="rk-rv-system-arrow" aria-hidden="true">→</div>
            <div class="rk-rv-system-node rk-rv-system-node-end"><b>Pomieszczenia</b><span>kontrolowany nawiew i wywiew</span></div>
          </div>
          <h3 style="margin-top:24px">Droga ciepła</h3>
          <div class="rk-rv-system-row">
            <div class="rk-rv-system-node"><b>Źródło ciepła</b><span>pompa ciepła, kocioł lub inne urządzenie</span></div>
            <div class="rk-rv-system-arrow" aria-hidden="true">→</div>
            <div class="rk-rv-system-node"><b>Woda i podłoga</b><span>rury, jastrych i okładzina przekazują energię</span></div>
            <div class="rk-rv-system-arrow" aria-hidden="true">→</div>
            <div class="rk-rv-system-node rk-rv-system-node-end"><b>Pomieszczenia</b><span>pokrycie obciążenia cieplnego</span></div>
          </div>
          <p class="rk-rv-system-note"><strong>Punkt wspólny:</strong> temperatura pomieszczeń i ich obciążenie cieplne. Zobacz też, <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak działa wodne ogrzewanie podłogowe</a>.</p>
        </div>
      </section>

      <section id="rk-rv-moc-energia" class="rk-rv-section">
        <div class="rk-rv-eyebrow">kW, kWh i zł to nie to samo</div>
        <h2>Strata wentylacyjna: moc projektowa a energia w sezonie</h2>
        <p>Bardzo częsty błąd polega na policzeniu mocy przy temperaturze obliczeniowej, a następnie pomnożeniu jej przez wszystkie godziny sezonu. Temperatura projektowa występuje rzadko, przepływy mogą się zmieniać, a odzysk i praca wentylatorów zależą od punktu pracy.</p>
        <div class="rk-rv-table-wrap">
          <table class="rk-rv-table">
            <thead><tr><th>Wielkość</th><th>Jednostka</th><th>Co opisuje?</th><th>Do czego służy?</th></tr></thead>
            <tbody>
              <tr><td data-label="Wielkość"><strong>Moc cieplna</strong></td><td data-label="Jednostka">W lub kW</td><td data-label="Co opisuje?">Chwilowe obciążenie przy konkretnych warunkach.</td><td data-label="Zastosowanie">Dobór źródła i powierzchni grzewczych.</td></tr>
              <tr><td data-label="Wielkość"><strong>Energia</strong></td><td data-label="Jednostka">kWh</td><td data-label="Co opisuje?">Sumę energii w godzinie, miesiącu lub sezonie.</td><td data-label="Zastosowanie">Analiza zużycia i kosztów eksploatacji.</td></tr>
              <tr><td data-label="Wielkość"><strong>Koszt</strong></td><td data-label="Jednostka">zł</td><td data-label="Co opisuje?">Energię pomnożoną przez rzeczywistą cenę oraz koszty stałe.</td><td data-label="Zastosowanie">Budżet i analiza opłacalności.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Pełny <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilans cieplny budynku</a> obejmuje więcej niż samą wentylację: przegrody, mostki, grunt, infiltrację oraz zyski wewnętrzne i słoneczne.</p>
      </section>

      <section id="rk-rv-odzysk" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Model referencyjny</div>
        <h2>Jak obliczyć wpływ odzysku ciepła z wentylacji?</h2>
        <p>Do szybkiego porównania można użyć przybliżenia opartego na strumieniu powietrza, różnicy temperatur oraz temperaturowej sprawności odzysku w wybranym punkcie pracy.</p>
        <div class="rk-rv-formula">Q̇<sub>v,0</sub> = 0,34 × V̇ × (t<sub>i</sub> − t<sub>e</sub>)</div>
        <div class="rk-rv-formula">Q̇<sub>v,HR</sub> ≈ 0,34 × V̇ × (t<sub>i</sub> − t<sub>e</sub>) × (1 − η<sub>t</sub>)</div>
        <p>Wynik jest w watach, gdy strumień <em>V̇</em> podamy w m³/h. Współczynnik 0,34 jest przybliżoną objętościową pojemnością cieplną powietrza. Model trzeba rozszerzyć o niezbilansowanie nawiewu i wywiewu oraz niekontrolowaną infiltrację.</p>
        <div class="rk-rv-callout rk-rv-callout-warn"><strong>To nie jest obliczenie rocznego zużycia.</strong> Model opisuje chwilowy punkt temperaturowy. Nie uwzględnia pogody godzina po godzinie, odszraniania, zmiennego biegu centrali, bypassu, przerw pracy ani ciepła wentylatorów.</div>
      </section>

      <section id="rk-rv-analizator" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Interaktywne narzędzie techniczne</div>
        <h2>Analizator współpracy rekuperacji z podłogówką</h2>
        <p class="rk-rv-intro">Wpisz dane jednego budynku. Narzędzie porówna wentylacyjną część obciążenia bez odzysku i z odzyskiem przy tych samych temperaturach oraz przepływach. Osobno pokaże infiltrację i moc elektryczną wentylatorów.</p>

        <div id="rk-rv-analyzer-tool" class="rk-rv-analyzer">
          <div class="rk-rv-analyzer-head">
            <h3>Porównaj wariant bez odzysku i z rekuperacją</h3>
            <p>Obliczenie dotyczy straty związanej z wymianą powietrza. Nie wyznacza pełnej mocy budynku ani wymaganej mocy podłogi w poszczególnych pomieszczeniach.</p>
          </div>
          <div class="rk-rv-analyzer-body">
            <div class="rk-rv-tool-panel">
              <h3>1. Dane budynku i wentylacji</h3>
              <div class="rk-rv-input-grid">
                <div class="rk-rv-field"><label for="rk-rv-volume">Kubatura ogrzewana [m³]</label><input id="rk-rv-volume" type="number" min="20" max="3000" step="1" value="405"><small>Informacja kontrolna; główne obliczenie wykorzystuje podane strumienie.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-supply">Projektowy nawiew [m³/h]</label><input id="rk-rv-supply" type="number" min="10" max="2000" step="1" value="200"><small>Najlepiej wartość z projektu lub protokołu pomiarowego.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-extract">Projektowy wywiew [m³/h]</label><input id="rk-rv-extract" type="number" min="10" max="2000" step="1" value="200"><small>Nie zakładaj automatycznie, że jest identyczny z nawiewem.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-indoor">Temperatura wewnętrzna [°C]</label><input id="rk-rv-indoor" type="number" min="10" max="28" step="0.5" value="20"></div>
                <div class="rk-rv-field"><label for="rk-rv-outdoor">Temperatura zewnętrzna [°C]</label><input id="rk-rv-outdoor" type="number" min="-40" max="10" step="0.5" value="-20"><small>Dla doboru mocy użyj właściwej temperatury projektowej lokalizacji.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-efficiency">Sprawność temperaturowa w tym punkcie [%]</label><input id="rk-rv-efficiency" type="number" min="0" max="95" step="1" value="80"><small>Nie musi być równa maksymalnej wartości katalogowej.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-infiltration">Dodatkowa infiltracja [m³/h]</label><input id="rk-rv-infiltration" type="number" min="0" max="1000" step="1" value="25"><small>Niekontrolowany przepływ poza odzyskiem; nie obejmuje tu niezbilansowania centrali.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-fan-power">Łączna moc wentylatorów [W]</label><input id="rk-rv-fan-power" type="number" min="0" max="2500" step="1" value="90"><small>Pokazujemy ją oddzielnie — to pobór elektryczny, nie automatyczna korekta OZC.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-active-area">Czynna powierzchnia podłogi [m²]</label><input id="rk-rv-active-area" type="number" min="1" max="1000" step="0.5" value="120"><small>Do orientacyjnego przeliczenia odzyskanej mocy na W/m².</small></div>
                <div class="rk-rv-field"><label for="rk-rv-source">Źródło ciepła</label><select id="rk-rv-source"><option value="heatpump">Pompa ciepła</option><option value="gas">Kocioł kondensacyjny</option><option value="electric">Ogrzewanie elektryczne</option><option value="other">Inne źródło</option></select><small>Nie zmienia fizycznej straty; wpływa na interpretację kosztu energii.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-commissioned">Jakość danych o przepływach</label><select id="rk-rv-commissioned"><option value="measured">Pomiary po uruchomieniu</option><option value="design" selected="">Dane projektowe</option><option value="unknown">Wartości szacunkowe</option></select><small>Zmienia poziom zaufania do wniosku, nie sam wzór.</small></div>
                <div class="rk-rv-field"><label for="rk-rv-mode">Cel sprawdzenia</label><select id="rk-rv-mode"><option value="design">Punkt projektowy mocy</option><option value="comparison">Porównanie wariantów</option></select><small>Narzędzie nie oblicza rocznych kWh ani okresu zwrotu.</small></div>
              </div>
              <div class="rk-rv-tool-note">Dla niezbilansowanego układu obliczenie konserwatywnie przyjmuje większy z podanych strumieni jako przepływ wymagający ogrzania, a odzysk liczy wyłącznie dla części zbilansowanej. Dodatkową infiltrację dodaje osobno.</div>
              <button id="rk-rv-run" class="rk-rv-run" type="button">Przelicz bilans wentylacji</button>
            </div>

            <div class="rk-rv-tool-panel" aria-live="polite">
              <h3>2. Wynik dla wpisanych danych</h3>
              <div class="rk-rv-result-grid">
                <div class="rk-rv-result"><span>Bez odzysku</span><strong id="rk-rv-q-no">2,72 kW</strong><small>mechaniczna wymiana powietrza</small></div>
                <div class="rk-rv-result"><span>Odzyskana moc</span><strong id="rk-rv-q-recovered">2,18 kW</strong><small>w rozpatrywanym punkcie</small></div>
                <div class="rk-rv-result"><span>Po wymienniku</span><strong id="rk-rv-q-remain">0,54 kW</strong><small>pozostała część mechaniczna</small></div>
                <div class="rk-rv-result"><span>Infiltracja</span><strong id="rk-rv-q-infiltration">0,34 kW</strong><small>poza odzyskiem ciepła</small></div>
                <div class="rk-rv-result rk-rv-result-highlight"><span>Razem z rekuperacją</span><strong id="rk-rv-q-total">0,88 kW</strong><small>wentylacja i podana infiltracja</small></div>
                <div class="rk-rv-result"><span>Różnica na powierzchnię</span><strong id="rk-rv-q-area">18,1 W/m²</strong><small>średnio dla podanej czynnej podłogi</small></div>
              </div>
              <div class="rk-rv-grid-2">
                <div class="rk-rv-result"><span>Moc elektryczna wentylatorów</span><strong id="rk-rv-fan-output">90 W</strong><small>pokazana osobno od obciążenia cieplnego</small></div>
                <div class="rk-rv-result"><span>Różnica nawiew / wywiew</span><strong id="rk-rv-balance-output">0,0%</strong><small>udział względem większego strumienia</small></div>
              </div>
              <div id="rk-rv-verdict" class="rk-rv-verdict">
                <b id="rk-rv-verdict-title">Wynik warunkowy — dane nadają się do porównania</b>
                <p id="rk-rv-verdict-text">Dane projektowe pozwalają ocenić kierunek zmiany. Przed regulacją podłogówki warto potwierdzić rzeczywiste strumienie po uruchomieniu centrali.</p>
              </div>
              <div id="rk-rv-diagnostics" class="rk-rv-diagnostics">
                <div class="rk-rv-diagnostic">Odzysk ciepła zmniejsza wentylacyjną część obciążenia, ale nie usuwa strat przez ściany, okna, dach, podłogę i mostki.</div>
                <div class="rk-rv-diagnostic rk-rv-diagnostic-warn">Podana sprawność jest założeniem dla wybranego punktu. Nie traktuj jej jako stałej wartości całorocznej.</div>
              </div>
            </div>

            <div class="rk-rv-tool-panel">
              <h3>3. Dynamiczny wykres obciążenia wentylacyjnego</h3>
              <p>Linie pokazują ten sam budynek i te same przepływy. Zmienia się jedynie temperatura zewnętrzna oraz obecność odzysku ciepła.</p>
              <div class="rk-rv-chart-wrap">
                <svg id="rk-rv-chart" viewBox="0 0 820 360" role="img" aria-labelledby="rk-rv-chart-title rk-rv-chart-desc">
                  <title id="rk-rv-chart-title">Porównanie wentylacyjnej straty ciepła bez odzysku i z rekuperacją</title>
                  <desc id="rk-rv-chart-desc">Wykres liniowy zależności obciążenia w kilowatach od temperatury zewnętrznej.</desc>
                  <rect x="0" y="0" width="820" height="360" rx="14" fill="#f7fbfc"></rect>
                  <g stroke="#d7e5ea" stroke-width="1">
                    <line x1="70" y1="30" x2="780" y2="30"></line>
                    <line x1="70" y1="97.5" x2="780" y2="97.5"></line>
                    <line x1="70" y1="165" x2="780" y2="165"></line>
                    <line x1="70" y1="232.5" x2="780" y2="232.5"></line>
                    <line x1="70" y1="300" x2="780" y2="300"></line>
                    <line x1="70" y1="30" x2="70" y2="300"></line>
                    <line x1="247.5" y1="30" x2="247.5" y2="300"></line>
                    <line x1="425" y1="30" x2="425" y2="300"></line>
                    <line x1="602.5" y1="30" x2="602.5" y2="300"></line>
                    <line x1="780" y1="30" x2="780" y2="300"></line>
                  </g>
                  <g fill="#597180" font-size="13" font-family="Inter, sans-serif">
                    <text id="rk-rv-y4" x="61" y="35" text-anchor="end">3,4</text>
                    <text id="rk-rv-y3" x="61" y="102" text-anchor="end">2,6</text>
                    <text id="rk-rv-y2" x="61" y="170" text-anchor="end">1,7</text>
                    <text id="rk-rv-y1" x="61" y="237" text-anchor="end">0,9</text>
                    <text x="61" y="305" text-anchor="end">0</text>
                    <text id="rk-rv-x0" x="70" y="324" text-anchor="middle">−25°C</text>
                    <text id="rk-rv-x1" x="425" y="324" text-anchor="middle">−7,5°C</text>
                    <text id="rk-rv-x2" x="780" y="324" text-anchor="middle">10°C</text>
                    <text x="425" y="348" text-anchor="middle" font-weight="700">temperatura zewnętrzna</text>
                    <text transform="translate(19 170) rotate(-90)" text-anchor="middle" font-weight="700">obciążenie [kW]</text>
                  </g>
                  <line id="rk-rv-design-marker" x1="171" y1="30" x2="171" y2="300" stroke="#102536" stroke-width="2" stroke-dasharray="6 6"></line>
                  <text id="rk-rv-design-label" x="178" y="48" fill="#102536" font-size="12" font-weight="800">punkt −20°C</text>
                  <polyline id="rk-rv-line-no" fill="none" stroke="#ff6a3d" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" points=""></polyline>
                  <polyline id="rk-rv-line-hr" fill="none" stroke="#25c7d8" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" points=""></polyline>
                </svg>
                <div class="rk-rv-chart-legend">
                  <span class="rk-rv-legend-item"><span class="rk-rv-legend-line"></span>bez odzysku i z podaną infiltracją</span>
                  <span class="rk-rv-legend-item"><span class="rk-rv-legend-line rk-rv-legend-line-cyan"></span>z odzyskiem i podaną infiltracją</span>
                  <span class="rk-rv-legend-item">linia przerywana: wybrana temperatura</span>
                </div>
                <p class="rk-rv-chart-caption">Wykres nie przedstawia rocznego zużycia energii. Wartości wynikają z uproszczonego modelu 0,34 × przepływ × różnica temperatur.</p>
              </div>
            </div>
          </div>
        </div>
        <p class="rk-rv-small">Chcesz niezależnie sprawdzić pozostałe składniki? Użyj także <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulatora strat ciepła budynku</a>, pamiętając, że narzędzie internetowe nadal nie zastępuje kompletnego projektu.</p>
      </section>

      <aside class="rk-rv-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
        <h3>Analizator pokazuje bilans budynku, ale podłogówkę dobiera się pomieszczenie po pomieszczeniu</h3>
        <p>Analizator pokazuje, jak odzysk ciepła może zmienić wentylacyjną część obciążenia całego budynku, ale nie wie, ile tej mocy przypada na salon, łazienkę, sypialnie i pomieszczenia z dużymi przeszkleniami.</p>
        <p>To właśnie obciążenie każdego pomieszczenia oraz jego powierzchnia czynna decydują o rozstawie rur, liczbie pętli, przepływach i temperaturze zasilania. Jeżeli rekuperacja ma zostać prawidłowo uwzględniona w podłogówce, potrzebny jest indywidualny projekt.</p>
        <a class="rk-rv-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki uwzględniający rekuperację</a>
      </aside>

      <section id="rk-rv-wykres" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Interpretacja bez skrótów</div>
        <h2>Jak czytać dynamiczny wykres rekuperacji?</h2>
        <p>Im niższa temperatura zewnętrzna, tym większa różnica temperatur i chwilowa strata wentylacyjna. Pomarańczowa linia pokazuje wariant bez odzysku. Linia turkusowa uwzględnia odzysk dla zbilansowanej części przepływu oraz wpisaną infiltrację.</p>
        <div class="rk-rv-grid-3">
          <div class="rk-rv-card"><span class="rk-rv-card-number">1</span><h3>Odległość między liniami</h3><p>To orientacyjna odzyskana moc w danym punkcie, a nie gwarantowana oszczędność na rachunku.</p></div>
          <div class="rk-rv-card"><span class="rk-rv-card-number">2</span><h3>Nachylenie linii</h3><p>Wynika z przepływu powietrza i różnicy temperatur. Większy przepływ daje większe obciążenie.</p></div>
          <div class="rk-rv-card"><span class="rk-rv-card-number">3</span><h3>Linia projektowa</h3><p>Pomaga odczytać chwilową moc przy wybranej temperaturze, nie energię całego sezonu.</p></div>
        </div>
        <p>W rzeczywistym sezonie wpływ mają także zmienne <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">pasywne zyski ciepła</a>, harmonogram wentylacji, wiatr, nasłonecznienie i zachowanie mieszkańców.</p>
      </section>

      <section id="rk-rv-porownanie" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Ta sama baza danych</div>
        <h2>Jak uczciwie porównać dom z rekuperacją i bez niej?</h2>
        <p>Porównanie ma sens tylko wtedy, gdy oba warianty dotyczą tego samego budynku i tych samych warunków. Zmieniamy sposób wentylacji, a pozostałe parametry pozostawiamy wspólne.</p>
        <div class="rk-rv-table-wrap">
          <table class="rk-rv-table">
            <thead><tr><th>Parametr</th><th>W obu wariantach</th><th>Co może się zmienić?</th></tr></thead>
            <tbody>
              <tr><td data-label="Parametr"><strong>Przegrody i mostki</strong></td><td data-label="W obu wariantach">Te same współczynniki U, powierzchnie i geometria.</td><td data-label="Zmiana">Nic — rekuperacja nie poprawia izolacyjności ścian.</td></tr>
              <tr><td data-label="Parametr"><strong>Temperatura wewnętrzna i klimat</strong></td><td data-label="W obu wariantach">Te same temperatury projektowe i ten sam przebieg pogody.</td><td data-label="Zmiana">Sposób przygotowania powietrza wentylacyjnego.</td></tr>
              <tr><td data-label="Parametr"><strong>Wymagana wymiana powietrza</strong></td><td data-label="W obu wariantach">Porównywalny poziom wentylacji i sposób użytkowania.</td><td data-label="Zmiana">Kontrola przepływu oraz odzysk części ciepła.</td></tr>
              <tr><td data-label="Parametr"><strong>Źródło ciepła</strong></td><td data-label="W obu wariantach">Ta sama technologia, taryfa i sprawność przy porównaniu kosztów.</td><td data-label="Zmiana">Może zmienić się wymagana moc projektowa, jeśli OZC to potwierdzi.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-rv-callout"><strong>Nie porównuj wentylacji grawitacyjnej, która faktycznie działa słabo, z rekuperacją przy pełnym strumieniu i nie nazywaj różnicy czystą oszczędnością.</strong> Najpierw trzeba zapewnić porównywalną jakość powietrza.</div>
      </section>

      <section id="rk-rv-ozc" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Obliczenia projektowe</div>
        <h2>Rekuperacja a OZC — gdzie wpisuje się odzysk ciepła?</h2>
        <p>W obliczeniach trzeba rozdzielić przenikanie przez przegrody od strat związanych z powietrzem. Projektowy strumień wentylacji, odzysk i infiltracja wpływają na część wentylacyjną, ale nie kasują strat przez ściany, dach, podłogę, okna i mostki.</p>
        <div class="rk-rv-grid-2">
          <div class="rk-rv-card rk-rv-card-accent"><h3>Obciążenie całego budynku</h3><p>Pomaga dobrać źródło ciepła, lecz nie wystarcza do zaprojektowania pętli w pokojach.</p></div>
          <div class="rk-rv-card rk-rv-card-warm"><h3>Obciążenie pomieszczenia</h3><p>Decyduje, czy czynna powierzchnia podłogi odda potrzebną moc i przy jakich parametrach.</p></div>
        </div>
        <p>Więcej o różnicy między mocą domu i mocą poszczególnych pokoi znajdziesz w poradniku o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a>.</p>
      </section>

      <section id="rk-rv-sprawnosc" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Katalog to nie cały sezon</div>
        <h2>Sprawność rekuperatora zimą: wartość deklarowana i rzeczywista</h2>
        <p>Temperaturowa sprawność odzysku jest cechą konkretnego punktu pracy, a nie jedną stałą przypisaną do urządzenia na cały rok. Wpływają na nią między innymi strumienie, ich zbilansowanie, temperatury, przecieki, stan filtrów, oszronienie oraz algorytm ochrony wymiennika.</p>
        <div class="rk-rv-grid-4">
          <div class="rk-rv-card"><h3>Przepływ</h3><p>Inny bieg wentylatorów oznacza inny punkt pracy wymiennika.</p></div>
          <div class="rk-rv-card"><h3>Bilans</h3><p>Niezgodność nawiewu i wywiewu ogranicza część strumienia objętą odzyskiem.</p></div>
          <div class="rk-rv-card"><h3>Szronienie</h3><p>Strategia ochrony może okresowo zmieniać strumień lub zużycie energii.</p></div>
          <div class="rk-rv-card"><h3>Filtry</h3><p>Rosnący opór zmienia warunki pracy i może zwiększyć pobór wentylatorów.</p></div>
        </div>
        <p>Unijne zasady ekoprojektu definiują między innymi temperaturową sprawność odzysku i warunki jej pomiaru. Dlatego do obliczeń używaj danych dla konkretnego punktu, a nie samego hasła „do 95%”.</p>
      </section>

      <section id="rk-rv-bilans" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Powietrze musi się zgadzać</div>
        <h2>Nawiew, wywiew, szczelność i infiltracja</h2>
        <p>W idealnym modelu strumień nawiewany i usuwany są zbliżone. W budynku występują jednak nieszczelności, okresowe podciśnienie lub nadciśnienie, otwieranie drzwi oraz urządzenia wyrzucające powietrze poza centralą. Powietrze brakujące do bilansu napływa przez obudowę albo inne otwory — bez odzysku w wymienniku.</p>
        <div class="rk-rv-callout rk-rv-callout-danger"><strong>Szczelność budynku nie oznacza braku wentylacji.</strong> Oznacza, że wymiana odbywa się kontrolowaną drogą, a nie przez przypadkowe szczeliny. Dopiero wtedy łatwiej utrzymać projektowe przepływy i wykorzystać odzysk ciepła.</div>
        <p>Kubatura i umowna liczba wymian mogą pomóc w kontroli wyniku, ale projekt powinien wynikać z potrzeb pomieszczeń i wymagań higienicznych. Uniwersalne „0,5 wymiany na godzinę” nie zastępuje bilansu nawiewu i wywiewu.</p>
      </section>

      <section id="rk-rv-podlogowka" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Wpływ pośredni</div>
        <h2>Jak rekuperacja wpływa na wymaganą moc podłogówki?</h2>
        <p>Jeżeli OZC wykaże mniejszą stratę wentylacyjną, maleje suma mocy do dostarczenia. Nie oznacza to jednak, że odzyskaną moc można równo podzielić przez metry kwadratowe całego domu i z takiej średniej dobrać każde pomieszczenie.</p>
        <div class="rk-rv-grid-3">
          <div class="rk-rv-card"><h3>Salon</h3><p>Duże przeszklenia i mała powierzchnia czynna mogą nadal tworzyć wymagający przypadek.</p></div>
          <div class="rk-rv-card"><h3>Łazienka</h3><p>Wyższa temperatura obliczeniowa i zabudowa ograniczająca podłogę zmieniają wynik.</p></div>
          <div class="rk-rv-card"><h3>Sypialnia</h3><p>Inna temperatura zadana, nawiew i udział przegród dają inne obciążenie niż średnia domu.</p></div>
        </div>
        <p>To jeden z powodów, dla których warto sprawdzić, <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">czy do ogrzewania podłogowego potrzebny jest projekt</a>, zamiast dobierać pętle z powierzchni całkowitej.</p>
      </section>

      <section id="rk-rv-rozstaw" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Brak automatycznej reguły</div>
        <h2>Jaki rozstaw rur podłogówki przy rekuperacji?</h2>
        <p><strong>Rekuperacja nie narzuca rozstawu 10, 15 ani 20 cm.</strong> Rozstaw dobiera się do wymaganej mocy jednostkowej pomieszczenia, czynnej powierzchni, temperatury wody, konstrukcji podłogi, oporu okładziny i ograniczeń temperatury powierzchni.</p>
        <div class="rk-rv-formula">q<sub>wym</sub> = Q̇<sub>pomieszczenia</sub> ÷ A<sub>czynna</sub></div>
        <p>Dopiero po obliczeniu <em>q<sub>wym</sub></em> można porównać <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur 10 i 15 cm</a>. Gdy źródłem jest pompa ciepła, pomocne jest osobne opracowanie o <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstawie podłogówki przy pompie ciepła</a>.</p>
      </section>

      <section id="rk-rv-zasilanie" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Wynik, nie założenie</div>
        <h2>Temperatura zasilania podłogówki przy rekuperacji</h2>
        <p>Mniejsze obciążenie może pozwolić uzyskać wymaganą moc przy niższej średniej temperaturze wody, ale trzeba to sprawdzić na charakterystyce konkretnej konstrukcji podłogi. Nie ma jednej temperatury „dla domu z rekuperacją”.</p>
        <ul class="rk-rv-list-check">
          <li>Najpierw oblicz moc każdego pomieszczenia po uwzględnieniu wentylacji.</li>
          <li>Określ czynną powierzchnię, rozstaw, jastrych i opór okładziny.</li>
          <li>Sprawdź temperaturę powierzchni oraz wymagany przepływ.</li>
          <li>Dopiero potem ustal wspólną temperaturę zasilania i krzywą grzewczą.</li>
        </ul>
        <p>Granice i zależności wyjaśnia artykuł o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>. Późniejszą pracę źródła porządkuje prawidłowo ustawiona <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza</a>.</p>
      </section>

      <section id="rk-rv-pompa-ciepla" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Popularny zestaw trzech instalacji</div>
        <h2>Rekuperacja, pompa ciepła i podłogówka</h2>
        <p>To logiczne połączenie w budynku o niewielkich stratach: rekuperacja ogranicza część obciążenia wentylacyjnego, pompa ciepła wytwarza energię, a podłogówka może pracować z niską temperaturą wody. Każdy element trzeba jednak dobrać osobno do wspólnych danych budynku.</p>
        <div class="rk-rv-grid-3">
          <div class="rk-rv-card rk-rv-card-accent"><h3>Rekuperacja</h3><p>Bilans powietrza, spręż dyspozycyjny, odzysk, akustyka i pobór wentylatorów.</p></div>
          <div class="rk-rv-card rk-rv-card-warm"><h3>Pompa ciepła</h3><p>Moc i modulacja przy temperaturze obliczeniowej, defrost, punkt biwalentny i parametry wody.</p></div>
          <div class="rk-rv-card rk-rv-card-green"><h3>Podłogówka</h3><p>Moc pomieszczeń, powierzchnie czynne, pętle, przepływy i opory hydrauliczne.</p></div>
        </div>
        <p>Zacznij od poznania zasad działania <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>, następnie sprawdź, <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">czy pompa ciepła ogrzeje konkretny dom z podłogówką</a>. Cały proces projektowy opisuje poradnik <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>.</p>
      </section>

      <section id="rk-rv-koszty" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Pełny koszt użytkowania</div>
        <h2>Ile kosztuje praca rekuperacji z ogrzewaniem podłogowym?</h2>
        <p>Rachunek nie sprowadza się do odzyskanej energii. Trzeba zestawić wartość unikniętego zużycia ciepła z energią elektryczną wentylatorów, filtrami, czyszczeniem, przeglądami oraz ewentualnymi naprawami. W nowym domu osobno porównuje się także koszt inwestycyjny różnych sposobów wentylacji.</p>
        <div class="rk-rv-grid-4">
          <div class="rk-rv-card rk-rv-card-green"><h3>Energia odzyskana</h3><p>Jej wartość zależy od źródła ciepła, jego sprawności lub COP oraz ceny energii.</p></div>
          <div class="rk-rv-card rk-rv-card-accent"><h3>Wentylatory</h3><p>Pobór zależy od przepływu, oporów instalacji, zabrudzenia filtrów i sprawności napędów.</p></div>
          <div class="rk-rv-card rk-rv-card-warm"><h3>Materiały eksploatacyjne</h3><p>Częstotliwość wymiany filtrów zależy między innymi od otoczenia i intensywności pracy.</p></div>
          <div class="rk-rv-card"><h3>Serwis</h3><p>Dostęp do centrali, czyszczenie, odpływ kondensatu i kontrola przepływów mają realny koszt.</p></div>
        </div>
        <div class="rk-rv-callout"><strong>Moc wentylatorów nie jest prostym „ujemnym obciążeniem cieplnym”.</strong> Część energii może ostatecznie trafić do strumienia powietrza, ale sposób jej uwzględnienia zależy od położenia wentylatorów i metody obliczeń. W analizatorze pokazujemy ją osobno.</div>
        <p>Na całkowity rachunek wpływa również to, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-energooszczedne/">czy ogrzewanie podłogowe jest energooszczędne w konkretnym budynku</a>, a nie sama nazwa zastosowanych instalacji.</p>
      </section>

      <section id="rk-rv-zwrot" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Bez obiecywania jednej liczby</div>
        <h2>Jak policzyć okres zwrotu rekuperacji?</h2>
        <p>Prosty okres zwrotu można policzyć dopiero po ustaleniu porównywalnych wariantów kosztowych. Dla modernizacji będzie to zwykle koszt wykonania rekuperacji pomniejszony o koszty elementów wentylacji, których dzięki niej nie trzeba wykonać. W nowym budynku baza porównawcza może wyglądać inaczej.</p>
        <ol class="rk-rv-steps">
          <li><strong>Zdefiniuj wariant bazowy.</strong> Opisz sposób wentylacji, jakość powietrza i wymagane prace budowlane bez rekuperacji.</li>
          <li><strong>Policz energię w obu wariantach.</strong> Użyj danych pogodowych i zmiennego obciążenia, a nie jednego mroźnego punktu.</li>
          <li><strong>Przelicz energię na koszt.</strong> Uwzględnij źródło ciepła, sprawność, taryfę oraz ceny w przyjętym scenariuszu.</li>
          <li><strong>Dodaj koszty własne rekuperacji.</strong> Energia wentylatorów, filtry, przeglądy i odtworzenie elementów.</li>
          <li><strong>Wykonaj analizę wrażliwości.</strong> Sprawdź kilka cen energii, sprawności, przepływów i kosztów serwisu.</li>
        </ol>
        <div class="rk-rv-formula">prosty okres zwrotu = dodatkowy nakład inwestycyjny ÷ roczna korzyść netto</div>
        <p>To dopiero metoda uproszczona — nie uwzględnia wartości pieniądza w czasie ani wymiany urządzeń. Podobne pułapki opisuje analiza <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">zwrotu z inwestycji w ogrzewanie podłogowe</a>.</p>
      </section>

      <section id="rk-rv-wilgotnosc" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Komfort nie wynika z jednego urządzenia</div>
        <h2>Rekuperacja, podłogówka i wilgotność powietrza</h2>
        <p>Zimą powietrze zewnętrzne po ogrzaniu ma niską wilgotność względną. Wentylacja usuwa wilgoć produkowaną w domu, więc zbyt duży strumień w stosunku do emisji wilgoci może sprzyjać przesuszeniu. Podłogówka nie usuwa pary wodnej z budynku — podnosi temperaturę powietrza i powierzchni, co zmienia wilgotność względną.</p>
        <div class="rk-rv-grid-3">
          <div class="rk-rv-card"><h3>Źródła wilgoci</h3><p>Liczba mieszkańców, kąpiele, gotowanie, pranie, rośliny i wilgoć technologiczna.</p></div>
          <div class="rk-rv-card"><h3>Strumień wentylacji</h3><p>Powinien zapewniać jakość powietrza, ale nie być bez potrzeby utrzymywany na najwyższym biegu.</p></div>
          <div class="rk-rv-card"><h3>Temperatura</h3><p>Ta sama zawartość wilgoci daje inną wilgotność względną przy innej temperaturze powietrza.</p></div>
        </div>
        <p>Osobno omawiam <a href="https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/">wpływ podłogówki na wilgotność</a> oraz pytanie, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-wysusza-powietrze-w-pomieszczeniach/">czy ogrzewanie podłogowe wysusza powietrze</a>.</p>
        <div class="rk-rv-callout rk-rv-callout-warn"><strong>Nie obiecuj stałych 40–50% wilgotności.</strong> Wynik zależy od pogody, emisji wilgoci, strumienia powietrza, szczelności i ewentualnego odzysku wilgoci.</div>
      </section>

      <section id="rk-rv-wymiennik" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Ciepło jawne i część wilgoci</div>
        <h2>Wymiennik standardowy czy entalpiczny?</h2>
        <p>Standardowy wymiennik odzyskuje przede wszystkim ciepło jawne. Wymiennik entalpiczny może w określonych warunkach przekazywać także część wilgoci między strumieniami. Nie oznacza to automatycznego utrzymania zadanej wilgotności ani braku potrzeby kontroli wentylacji.</p>
        <div class="rk-rv-table-wrap">
          <table class="rk-rv-table">
            <thead><tr><th>Cecha</th><th>Wymiennik standardowy</th><th>Wymiennik entalpiczny</th></tr></thead>
            <tbody>
              <tr><td data-label="Cecha"><strong>Odzysk temperatury</strong></td><td data-label="Standardowy">Tak, zależnie od konstrukcji i punktu pracy.</td><td data-label="Entalpiczny">Tak, również zależnie od warunków i punktu pracy.</td></tr>
              <tr><td data-label="Cecha"><strong>Transfer wilgoci</strong></td><td data-label="Standardowy">Zwykle nie jest jego podstawową funkcją.</td><td data-label="Entalpiczny">Możliwy częściowy transfer pary wodnej.</td></tr>
              <tr><td data-label="Cecha"><strong>Dobór</strong></td><td data-label="Standardowy">Klimat, przepływy, odszranianie, kondensat i serwis.</td><td data-label="Entalpiczny">Dodatkowo oczekiwany bilans wilgoci i wymagania producenta urządzenia.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Jeżeli instalacja ma również chłodzić przez podłogę, wilgotność trzeba analizować razem z <a href="https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/">punktem rosy i ryzykiem kondensacji</a>.</p>
      </section>

      <section id="rk-rv-okna" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Przepływy poza centralą</div>
        <h2>Czy przy rekuperacji można otwierać okna? Co z okapem i kominkiem?</h2>
        <h3>Co okresowo zmienia bilans przepływów?</h3>
        <h4>Otwieranie okien</h4>
        <p>Można otwierać okna. W tym czasie część wymiany powietrza odbywa się poza wymiennikiem, dlatego odzysk ciepła spada, a centrala nie kontroluje całego przepływu. Krótkie otwarcie okna nie „psuje” instalacji, lecz długotrwałe rozszczelnienie zwiększa straty.</p>
        <h4>Okap kuchenny</h4>
        <p>Okap wyrzucający powietrze bezpośrednio na zewnątrz może wytworzyć znaczne podciśnienie. Trzeba przewidzieć drogę powietrza kompensacyjnego i nie włączać jego dużego przepływu do standardowego bilansu centrali bez sprawdzenia.</p>
        <h4>Kominek i urządzenia spalające paliwo</h4>
        <p>Wymagają doprowadzenia powietrza do spalania oraz weryfikacji bezpieczeństwa i warunków ciągu. Nie wolno zakładać, że sama regulacja rekuperatora rozwiąże każdy przypadek podciśnienia.</p>
        <p>Pomieszczenia z dużymi oknami nadal trzeba obliczać lokalnie. Rekuperacja nie usuwa potrzeby analizy <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 id="rk-rv-zima" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Tryby poza punktem katalogowym</div>
        <h2>Mróz, kondensat, odszranianie i bypass</h2>
        <p>W niskiej temperaturze w wymienniku może wykraplać się wilgoć, a w określonych warunkach powstawać szron. Centrala musi chronić wymiennik, na przykład zmieniając przepływy, uruchamiając nagrzewnicę lub realizując sekwencję odszraniania. Każda strategia może zmienić chwilowy odzysk i pobór energii.</p>
        <div class="rk-rv-grid-2">
          <div class="rk-rv-card rk-rv-card-warm"><h3>Zimą</h3><ul class="rk-rv-list-check"><li>sprawdź drożność odpływu kondensatu,</li><li>poznaj logikę ochrony przeciwzamrożeniowej,</li><li>kontroluj opory filtrów i bilans przepływów.</li></ul></div>
          <div class="rk-rv-card rk-rv-card-accent"><h3>Latem i w okresach przejściowych</h3><ul class="rk-rv-list-check"><li>bypass może omijać odzysk temperatury,</li><li>nocne chłodzenie zależy od temperatur i przepływu,</li><li>rekuperator nie zastępuje aktywnej klimatyzacji.</li></ul></div>
        </div>
        <div class="rk-rv-callout"><strong>Wartość odzysku z etykiety nie opisuje wszystkich trybów centrali.</strong> Do analizy sezonowej potrzebny jest przebieg pracy, dane klimatyczne i sposób sterowania.</div>
      </section>

      <section id="rk-rv-uruchomienie" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Projekt trzeba potwierdzić pomiarem</div>
        <h2>Uruchomienie rekuperacji i regulacja podłogówki</h2>
        <p>Dobrze zaprojektowane instalacje mogą działać słabo, jeśli nie zostaną uruchomione i zrównoważone. Po stronie wentylacji potrzebny jest pomiar nawiewów i wywiewów. Po stronie ogrzewania — odpowietrzenie, ustawienie przepływów i sprawdzenie pracy źródła przy rzeczywistym obciążeniu.</p>
        <div class="rk-rv-table-wrap">
          <table class="rk-rv-table">
            <thead><tr><th>Instalacja</th><th>Co mierzyć lub sprawdzać?</th><th>Dokument końcowy</th></tr></thead>
            <tbody>
              <tr><td data-label="Instalacja"><strong>Rekuperacja</strong></td><td data-label="Kontrola">Strumienie na nawiewnikach i wywiewnikach, spręż, hałas, sterowanie, kondensat.</td><td data-label="Dokument">Protokół uruchomienia i regulacji przepływów.</td></tr>
              <tr><td data-label="Instalacja"><strong>Podłogówka</strong></td><td data-label="Kontrola">Przepływy pętli, ciśnienie, odpowietrzenie, temperatury zasilania i powrotu, działanie automatyki.</td><td data-label="Dokument">Nastawy rozdzielaczy i parametry uruchomienia.</td></tr>
              <tr><td data-label="Instalacja"><strong>Cały budynek</strong></td><td data-label="Kontrola">Temperatury pomieszczeń, reakcja na pogodę, rzeczywiste harmonogramy i zużycie energii.</td><td data-label="Dokument">Korekty eksploatacyjne bez zmiany założeń bezpieczeństwa.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Po stronie wodnej przepływy odczytuje się na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach rozdzielacza</a>, a wymagany spręż zapewnia prawidłowo dobrana <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a>.</p>
      </section>

      <section id="rk-rv-bledy" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Mity, które zmieniają decyzje</div>
        <h2>Najczęstsze błędy przy łączeniu rekuperacji i podłogówki</h2>
        <div class="rk-rv-grid-2">
          <div class="rk-rv-card rk-rv-card-warm"><h3>Błędy obliczeniowe</h3><ul class="rk-rv-list-cross"><li>pomnożenie mocy projektowej przez cały sezon,</li><li>pominięcie infiltracji i niezbilansowania,</li><li>użycie maksymalnej sprawności jako stałej,</li><li>przypisanie jednej oszczędności każdemu domowi.</li></ul></div>
          <div class="rk-rv-card rk-rv-card-accent"><h3>Błędy projektowe</h3><ul class="rk-rv-list-cross"><li>dobór rozstawu rur wyłącznie z faktu posiadania rekuperacji,</li><li>podział mocy domu proporcjonalnie do powierzchni pokoi,</li><li>brak koordynacji tras kanałów, rozdzielaczy i sufitów,</li><li>brak dostępu do filtrów, syfonu i elementów regulacyjnych.</li></ul></div>
        </div>
        <div class="rk-rv-callout rk-rv-callout-danger"><strong>Nie myl mocy z efektywnością.</strong> Urządzenie może dostarczyć wymaganą moc dzięki grzałce lub źródłu szczytowemu, ale nie oznacza to, że cała energia została wytworzona z wysoką sprawnością sezonową.</div>
      </section>

      <section id="rk-rv-checklista" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Przed zamówieniem i przed odbiorem</div>
        <h2>Checklista inwestora: nowy dom i modernizacja</h2>
        <div class="rk-rv-grid-2">
          <div class="rk-rv-card rk-rv-card-green">
            <h3>Nowy budynek</h3>
            <ul class="rk-rv-list-check">
              <li>ustal układ funkcjonalny i temperatury pomieszczeń,</li>
              <li>wykonaj OZC ze spójnym modelem wentylacji,</li>
              <li>zaprojektuj nawiew, wywiew i drogi transferu,</li>
              <li>oblicz podłogówkę dla każdego pomieszczenia,</li>
              <li>skoordynuj kanały, stropy, sufity i szafki rozdzielaczy,</li>
              <li>zapewnij dostęp serwisowy i odpływ kondensatu.</li>
            </ul>
          </div>
          <div class="rk-rv-card rk-rv-card-accent">
            <h3>Modernizacja</h3>
            <ul class="rk-rv-list-check">
              <li>oceń szczelność i istniejące drogi napływu powietrza,</li>
              <li>sprawdź miejsce na centralę, kanały i tłumiki,</li>
              <li>zweryfikuj kominy, okap i urządzenia spalające paliwo,</li>
              <li>przelicz nowe obciążenie oraz moc istniejącego źródła,</li>
              <li>sprawdź, czy hydraulika podłogówki pozwala na regulację,</li>
              <li>porównaj pełne koszty obu wariantów.</li>
            </ul>
          </div>
        </div>
        <p>Zakres rysunków, obliczeń i zestawień opisuję w poradniku <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt ogrzewania podłogowego</a>.</p>
      </section>

      <section id="rk-rv-faq" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Pytania inwestorów</div>
        <h2>Rekuperacja i ogrzewanie podłogowe — FAQ</h2>
        <div class="rk-rv-faq">
          <details><summary>Czy rekuperacja ogrzewa dom?</summary><div class="rk-rv-faq-answer"><p>Nie zastępuje źródła ciepła. Odzyskuje część energii z powietrza usuwanego i dzięki temu ogranicza wentylacyjną część strat. Pozostałe straty musi pokryć instalacja grzewcza.</p></div></details>
          <details><summary>Czy rekuperacja obniża koszty ogrzewania?</summary><div class="rk-rv-faq-answer"><p>Może je obniżyć, ale wielkość korzyści zależy od przepływów, rzeczywistego odzysku, szczelności, klimatu, źródła ciepła i ceny energii. Od korzyści trzeba odjąć energię wentylatorów, filtry i serwis.</p></div></details>
          <details><summary>Czy rekuperacja wymaga ogrzewania podłogowego?</summary><div class="rk-rv-faq-answer"><p>Nie. Rekuperacja może współpracować z podłogówką, grzejnikami lub innym systemem ogrzewania. Łączy je bilans cieplny budynku, a nie bezpośrednie połączenie instalacyjne.</p></div></details>
          <details><summary>Czy ogrzewanie podłogowe wymaga rekuperacji?</summary><div class="rk-rv-faq-answer"><p>Nie. Podłogówka może pracować także w budynku z innym prawidłowo zaprojektowanym sposobem wentylacji. Rekuperacja może jednak zmniejszyć część obciążenia cieplnego.</p></div></details>
          <details><summary>Czy przy rekuperacji można otwierać okna?</summary><div class="rk-rv-faq-answer"><p>Tak. W czasie otwarcia okna wymiana powietrza częściowo omija wymiennik, więc odzysk spada i rosną straty. Krótkie wietrzenie nie uszkadza systemu.</p></div></details>
          <details><summary>Jaki rozstaw rur podłogówki stosuje się przy rekuperacji?</summary><div class="rk-rv-faq-answer"><p>Nie istnieje rozstaw przypisany do rekuperacji. Dobiera się go z mocy pomieszczenia, powierzchni czynnej, temperatury wody, konstrukcji podłogi i oporu okładziny.</p></div></details>
          <details><summary>Czy rekuperacja automatycznie obniża temperaturę zasilania podłogówki?</summary><div class="rk-rv-faq-answer"><p>Nie automatycznie. Mniejsze obciążenie może umożliwić niższą temperaturę, lecz trzeba to potwierdzić obliczeniem wydajności podłogi w każdym pomieszczeniu.</p></div></details>
          <details><summary>Czy sprawność rekuperatora 85% jest stała przez całą zimę?</summary><div class="rk-rv-faq-answer"><p>Nie. To wartość odnosząca się do określonych warunków. Rzeczywisty odzysk zmieniają przepływy, bilans, temperatury, filtry, przecieki, szronienie i strategia odszraniania.</p></div></details>
          <details><summary>Ile prądu zużywa rekuperator?</summary><div class="rk-rv-faq-answer"><p>Zużycie wynika z mocy wentylatorów i czasu pracy na poszczególnych biegach. Należy korzystać z danych konkretnej centrali dla projektowego sprężu i mierzyć zużycie w rzeczywistej instalacji.</p></div></details>
          <details><summary>Czy wymiennik entalpiczny rozwiązuje problem suchego powietrza?</summary><div class="rk-rv-faq-answer"><p>Może odzyskiwać część wilgoci, ale nie gwarantuje stałej wilgotności. Bilans nadal zależy od pogody, emisji wilgoci w domu, przepływu wentylacji i szczelności.</p></div></details>
          <details><summary>Czy dzięki rekuperacji można kupić mniejszą pompę ciepła?</summary><div class="rk-rv-faq-answer"><p>Tylko wtedy, gdy kompletne OZC wykaże niższe projektowe obciążenie. Nie odejmuje się z góry uniwersalnych 2–3 kW i nie dobiera urządzenia wyłącznie z deklarowanej sprawności centrali.</p></div></details>
          <details><summary>Czy analizator oblicza roczne oszczędności i okres zwrotu?</summary><div class="rk-rv-faq-answer"><p>Nie. Pokazuje chwilową wentylacyjną część obciążenia dla wpisanych temperatur i przepływów. Analiza roczna wymaga danych pogodowych, profilu pracy, cen energii i kosztów eksploatacyjnych.</p></div></details>
        </div>
      </section>

      <section id="rk-rv-zrodla" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Podstawa techniczna</div>
        <h2>Źródła i dokumenty wykorzystane przy aktualizacji</h2>
        <p>Linki prowadzą wyłącznie do instytucji publicznych i organizacji normalizacyjnej. Dokumenty trzeba zawsze stosować w aktualnym wydaniu i w zakresie właściwym dla danego projektu.</p>
        <ol class="rk-rv-source-list">
          <li><a href="https://eur-lex.europa.eu/legal-content/PL/TXT/HTML/?uri=CELEX%3A32014R1253" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — rozporządzenie (UE) nr 1253/2014 dotyczące urządzeń wentylacyjnych</a>: definicje odzysku ciepła, sprawności temperaturowej, przecieków i poboru mocy.</li>
          <li><a href="https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-ventilation_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — ekoprojekt i etykietowanie energetyczne urządzeń wentylacyjnych</a>.</li>
          <li><a href="https://www.gov.uk/government/publications/ventilation-approved-document-f" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Approved Document F: Ventilation</a>: wymagania dotyczące wentylacji, uruchomienia, pomiarów i przekazania informacji użytkownikowi.</li>
          <li><a href="https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20220001225" target="_blank" rel="nofollow noopener noreferrer">ISAP — Warunki techniczne, jakim powinny odpowiadać budynki i ich usytuowanie</a>.</li>
          <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — systemy ogrzewania i chłodzenia płaszczyznowego</a>: metody wyznaczania wydajności powierzchni grzewczych.</li>
        </ol>
        <div class="rk-rv-callout"><strong>Zakres odpowiedzialności:</strong> wzory i analizator służą do edukacyjnego porównania wariantów. Nie zastępują obliczeń wykonanych według właściwych norm, projektu wentylacji, charakterystyk urządzeń ani sprawdzenia wymagań krajowych.</div>
      </section>

      <section id="rk-rv-author" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Autor i odpowiedzialność merytoryczna</div>
        <h2>O autorze opracowania</h2>
        <div class="rk-rv-author">
          <aside class="rk-rv-author-side">
            <img decoding="async" class="rk-rv-author-photo" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="300" height="300" loading="lazy">
            <h3>Robert Kucharski</h3>
            <p>Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
            <span class="rk-rv-social-label">Profile autora</span>
            <div class="rk-rv-socials" aria-label="Profile społecznościowe Roberta Kucharskiego">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="Robert Kucharski na LinkedIn">in</a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer" aria-label="Projekt Ogrzewania na Facebooku">f</a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer" aria-label="Projekt HVAC w serwisie X">X</a>
            </div>
          </aside>
          <div class="rk-rv-author-main">
            <div class="rk-rv-author-quote">Rekuperacja może zmniejszyć obciążenie cieplne budynku, ale nie zwalnia projektanta z obliczenia każdego pomieszczenia, czynnej podłogi i hydrauliki pętli.</div>
            <div class="rk-rv-author-tabs" aria-label="Zakres kompetencji autora"><span>O autorze</span><span>Obliczenia cieplne</span><span>Hydraulika</span><span>Materiały edukacyjne</span></div>
            <p><strong>Robert Kucharski</strong> opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W publikacjach rozdziela dane wejściowe, model obliczeniowy, wynik i ograniczenia — tak, aby czytelnik wiedział, co można ocenić orientacyjnie, a czego nie wolno rozstrzygać bez projektu.</p>
            <p>Artykuł został zaktualizowany pod kątem współpracy rekuperacji z instalacją grzewczą, interpretacji mocy i energii, bilansu przepływów oraz wpływu odzysku ciepła na projektowe obciążenie pomieszczeń. Autor nie przypisuje uniwersalnych oszczędności konkretnemu urządzeniu i opiera wnioski na jawnych założeniach, dokumentach technicznych oraz aktualnych wymaganiach.</p>
            <p>Wszystkie wpisy autora znajdziesz na stronie <a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski — publikacje</a>.</p>
            <div class="rk-rv-author-portals">Autor publikuje również w serwisach <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>.</div>
          </div>
        </div>
      </section>

      <aside class="rk-rv-cta" aria-label="Końcowe zaproszenie do zamówienia projektu">
        <h3>Zaprojektuj podłogówkę na podstawie rzeczywistych strat po uwzględnieniu rekuperacji</h3>
        <p>Projekt łączy obciążenie cieplne pomieszczeń z ich powierzchnią czynną, konstrukcją podłogi, rozstawem rur, długościami pętli, przepływami i nastawami rozdzielaczy. Dzięki temu instalacja nie opiera się na średniej mocy całego domu ani na założeniu, że sama rekuperacja rozwiązuje dobór ogrzewania.</p>
        <a class="rk-rv-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#article",
      "url": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/",
      "headline": "Rekuperacja i ogrzewanie podłogowe – czy to się opłaca? Koszty i obliczenia",
      "description": "Techniczne porównanie wpływu rekuperacji na straty ciepła budynku, moc ogrzewania podłogowego i koszty eksploatacji wraz z interaktywnym analizatorem bilansu.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-07",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#webpage" },
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "about": [
        "rekuperacja i ogrzewanie podłogowe",
        "odzysk ciepła z wentylacji",
        "projektowe obciążenie cieplne",
        "temperatura zasilania podłogówki",
        "koszty eksploatacji rekuperacji"
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#webpage",
      "url": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/",
      "name": "Rekuperacja i ogrzewanie podłogowe – czy to się opłaca? Koszty i obliczenia",
      "description": "Sprawdź, jak rekuperacja wpływa na straty ciepła budynku, moc podłogówki i koszty ogrzewania.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-07",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#breadcrumb" },
      "mainEntity": [
        { "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#article" },
        { "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#analyzer" },
        { "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#faq" }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt Ogrzewania",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Rekuperacja i ogrzewanie podłogowe",
          "item": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#analyzer",
      "name": "Interaktywny analizator współpracy rekuperacji z podłogówką",
      "url": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#rk-rv-analizator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Web",
      "inLanguage": "pl-PL",
      "description": "Narzędzie porównuje wentylacyjną część obciążenia budynku bez odzysku i z odzyskiem ciepła dla wpisanych przepływów, temperatur, sprawności i infiltracji.",
      "isAccessibleForFree": true,
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#howto",
      "name": "Jak ocenić współpracę rekuperacji z ogrzewaniem podłogowym",
      "description": "Sześć kroków do technicznej oceny wpływu odzysku ciepła na bilans i projekt podłogówki.",
      "inLanguage": "pl-PL",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Ustal warunki projektowe", "text": "Określ temperatury wewnętrzne, temperaturę zewnętrzną właściwą dla lokalizacji i geometrię budynku." },
        { "@type": "HowToStep", "position": 2, "name": "Zbilansuj wentylację", "text": "Ustal projektowe strumienie nawiewu i wywiewu dla poszczególnych pomieszczeń." },
        { "@type": "HowToStep", "position": 3, "name": "Przyjmij odzysk i infiltrację", "text": "Użyj sprawności dla właściwego punktu pracy oraz osobno uwzględnij niekontrolowany przepływ powietrza." },
        { "@type": "HowToStep", "position": 4, "name": "Wykonaj OZC pomieszczeń", "text": "Policz przenikanie, mostki, wentylację, infiltrację i właściwe zyski dla każdego pomieszczenia." },
        { "@type": "HowToStep", "position": 5, "name": "Dobierz podłogówkę", "text": "Do obciążenia pomieszczeń dobierz czynną powierzchnię, rozstaw rur, temperaturę wody, pętle i przepływy." },
        { "@type": "HowToStep", "position": 6, "name": "Uruchom i zmierz", "text": "Zmierz strumienie wentylacji, ustaw przepływy pętli i skoryguj sterowanie na podstawie rzeczywistej pracy instalacji." }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy rekuperacja ogrzewa dom?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie zastępuje źródła ciepła. Odzyskuje część energii z powietrza usuwanego i dzięki temu ogranicza wentylacyjną część strat. Pozostałe straty musi pokryć instalacja grzewcza." }
        },
        {
          "@type": "Question",
          "name": "Czy rekuperacja obniża koszty ogrzewania?",
          "acceptedAnswer": { "@type": "Answer", "text": "Może je obniżyć, ale wielkość korzyści zależy od przepływów, rzeczywistego odzysku, szczelności, klimatu, źródła ciepła i ceny energii. Od korzyści trzeba odjąć energię wentylatorów, filtry i serwis." }
        },
        {
          "@type": "Question",
          "name": "Czy rekuperacja wymaga ogrzewania podłogowego?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Rekuperacja może współpracować z podłogówką, grzejnikami lub innym systemem ogrzewania. Łączy je bilans cieplny budynku, a nie bezpośrednie połączenie instalacyjne." }
        },
        {
          "@type": "Question",
          "name": "Czy ogrzewanie podłogowe wymaga rekuperacji?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Podłogówka może pracować także w budynku z innym prawidłowo zaprojektowanym sposobem wentylacji. Rekuperacja może jednak zmniejszyć część obciążenia cieplnego." }
        },
        {
          "@type": "Question",
          "name": "Czy przy rekuperacji można otwierać okna?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak. W czasie otwarcia okna wymiana powietrza częściowo omija wymiennik, więc odzysk spada i rosną straty. Krótkie wietrzenie nie uszkadza systemu." }
        },
        {
          "@type": "Question",
          "name": "Jaki rozstaw rur podłogówki stosuje się przy rekuperacji?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie istnieje rozstaw przypisany do rekuperacji. Dobiera się go z mocy pomieszczenia, powierzchni czynnej, temperatury wody, konstrukcji podłogi i oporu okładziny." }
        },
        {
          "@type": "Question",
          "name": "Czy rekuperacja automatycznie obniża temperaturę zasilania podłogówki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie automatycznie. Mniejsze obciążenie może umożliwić niższą temperaturę, lecz trzeba to potwierdzić obliczeniem wydajności podłogi w każdym pomieszczeniu." }
        },
        {
          "@type": "Question",
          "name": "Czy sprawność rekuperatora 85% jest stała przez całą zimę?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. To wartość odnosząca się do określonych warunków. Rzeczywisty odzysk zmieniają przepływy, bilans, temperatury, filtry, przecieki, szronienie i strategia odszraniania." }
        },
        {
          "@type": "Question",
          "name": "Ile prądu zużywa rekuperator?",
          "acceptedAnswer": { "@type": "Answer", "text": "Zużycie wynika z mocy wentylatorów i czasu pracy na poszczególnych biegach. Należy korzystać z danych konkretnej centrali dla projektowego sprężu i mierzyć zużycie w rzeczywistej instalacji." }
        },
        {
          "@type": "Question",
          "name": "Czy wymiennik entalpiczny rozwiązuje problem suchego powietrza?",
          "acceptedAnswer": { "@type": "Answer", "text": "Może odzyskiwać część wilgoci, ale nie gwarantuje stałej wilgotności. Bilans nadal zależy od pogody, emisji wilgoci w domu, przepływu wentylacji i szczelności." }
        },
        {
          "@type": "Question",
          "name": "Czy dzięki rekuperacji można kupić mniejszą pompę ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tylko wtedy, gdy kompletne OZC wykaże niższe projektowe obciążenie. Nie odejmuje się z góry uniwersalnych 2–3 kW i nie dobiera urządzenia wyłącznie z deklarowanej sprawności centrali." }
        },
        {
          "@type": "Question",
          "name": "Czy analizator oblicza roczne oszczędności i okres zwrotu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Pokazuje chwilową wentylacyjną część obciążenia dla wpisanych temperatur i przepływów. Analiza roczna wymaga danych pogodowych, profilu pracy, cen energii i kosztów eksploatacyjnych." }
        }
      ]
    },
    {
      "@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" },
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "obliczenia cieplne",
        "hydraulika instalacji grzewczych",
        "wentylacja mechaniczna z odzyskiem ciepła",
        "dobór pomp ciepła"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.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" }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/"
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/"
    },
    {
      "@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";

    function startRekuAnalyzer() {
      var root = document.getElementById("rk-rv-analyzer-tool");
      if (!root) { return; }

      function element(id) {
        return document.getElementById(id);
      }

      function numberValue(id, fallback) {
        var field = element(id);
        if (!field) { return fallback; }
        var parsed = parseFloat(String(field.value).replace(",", "."));
        if (!Number.isFinite(parsed)) { return fallback; }
        return parsed;
      }

      function clamp(value, minimum, maximum) {
        return Math.min(maximum, Math.max(minimum, 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 formatKw(value) {
        return formatNumber(value, 2) + " kW";
      }

      function clearDiagnostics(container) {
        while (container.firstChild) {
          container.removeChild(container.firstChild);
        }
      }

      function addDiagnostic(container, message, warning) {
        var box = document.createElement("div");
        box.className = "rk-rv-diagnostic";
        if (warning) { box.className += " rk-rv-diagnostic-warn"; }
        box.textContent = message;
        container.appendChild(box);
      }

      function drawChart(data) {
        var left = 70;
        var right = 780;
        var top = 30;
        var bottom = 300;
        var xMin = Math.min(-25, data.outdoor - 3);
        var xMax = 10;
        var deltaRange = xMax - xMin;
        if (deltaRange <= 0) { deltaRange = 1; }

        var maxDelta = Math.max(0, data.indoor - xMin);
        var maximumNoRecovery = 0.34 * (data.baseFlow + data.infiltration) * maxDelta / 1000;
        var remainingFlow = data.baseFlow - data.balancedFlow * data.efficiency;
        var maximumWithRecovery = 0.34 * (remainingFlow + data.infiltration) * maxDelta / 1000;
        var rawMaximum = Math.max(maximumNoRecovery, maximumWithRecovery, 0.5) * 1.12;
        var yMaximum = Math.ceil(rawMaximum * 2) / 2;

        function xPosition(temperature) {
          return left + (temperature - xMin) / deltaRange * (right - left);
        }

        function yPosition(load) {
          return bottom - load / yMaximum * (bottom - top);
        }

        function coordinate(value) {
          return value.toFixed(1);
        }

        var noRecoveryPoints = [];
        var recoveryPoints = [];
        var pointCount = 30;
        var index;
        for (index = 0; index <= pointCount; index += 1) {
          var temperature = xMin + deltaRange * index / pointCount;
          var deltaTemperature = Math.max(0, data.indoor - temperature);
          var noRecovery = 0.34 * (data.baseFlow + data.infiltration) * deltaTemperature / 1000;
          var withRecovery = 0.34 * (remainingFlow + data.infiltration) * deltaTemperature / 1000;
          noRecoveryPoints.push(coordinate(xPosition(temperature)) + "," + coordinate(yPosition(noRecovery)));
          recoveryPoints.push(coordinate(xPosition(temperature)) + "," + coordinate(yPosition(withRecovery)));
        }

        var noLine = element("rk-rv-line-no");
        var recoveryLine = element("rk-rv-line-hr");
        if (noLine) { noLine.setAttribute("points", noRecoveryPoints.join(" ")); }
        if (recoveryLine) { recoveryLine.setAttribute("points", recoveryPoints.join(" ")); }

        var markerX = clamp(xPosition(data.outdoor), left, right);
        var marker = element("rk-rv-design-marker");
        if (marker) {
          marker.setAttribute("x1", coordinate(markerX));
          marker.setAttribute("x2", coordinate(markerX));
        }

        var markerLabel = element("rk-rv-design-label");
        if (markerLabel) {
          markerLabel.textContent = "punkt " + formatNumber(data.outdoor, 1) + "°C";
          if (markerX > 650) {
            markerLabel.setAttribute("x", coordinate(markerX - 7));
            markerLabel.setAttribute("text-anchor", "end");
          } else {
            markerLabel.setAttribute("x", coordinate(markerX + 7));
            markerLabel.setAttribute("text-anchor", "start");
          }
        }

        setText("rk-rv-x0", formatNumber(xMin, 1) + "°C");
        setText("rk-rv-x1", formatNumber((xMin + xMax) / 2, 1) + "°C");
        setText("rk-rv-x2", formatNumber(xMax, 0) + "°C");
        setText("rk-rv-y1", formatNumber(yMaximum * 0.25, 1));
        setText("rk-rv-y2", formatNumber(yMaximum * 0.5, 1));
        setText("rk-rv-y3", formatNumber(yMaximum * 0.75, 1));
        setText("rk-rv-y4", formatNumber(yMaximum, 1));

        var description = element("rk-rv-chart-desc");
        if (description) {
          var noRecoveryTotal = data.qNo + 0.34 * data.infiltration * (data.indoor - data.outdoor) / 1000;
          description.textContent = "Przy temperaturze " + formatNumber(data.outdoor, 1) + " stopnia Celsjusza obciążenie bez odzysku wraz z podaną infiltracją wynosi " + formatNumber(noRecoveryTotal, 2) + " kilowata, a po uwzględnieniu odzysku " + formatNumber(data.qTotal, 2) + " kilowata.";
        }
      }

      function calculate() {
        var volume = numberValue("rk-rv-volume", 405);
        var supply = numberValue("rk-rv-supply", 200);
        var extract = numberValue("rk-rv-extract", 200);
        var indoor = numberValue("rk-rv-indoor", 20);
        var outdoor = numberValue("rk-rv-outdoor", -20);
        var efficiencyPercent = numberValue("rk-rv-efficiency", 80);
        var infiltration = numberValue("rk-rv-infiltration", 25);
        var fanPower = numberValue("rk-rv-fan-power", 90);
        var activeArea = numberValue("rk-rv-active-area", 120);
        var sourceField = element("rk-rv-source");
        var qualityField = element("rk-rv-commissioned");
        var modeField = element("rk-rv-mode");
        var source = sourceField ? sourceField.value : "heatpump";
        var quality = qualityField ? qualityField.value : "design";
        var mode = modeField ? modeField.value : "design";

        var invalid = false;
        if (volume <= 0) { invalid = true; }
        if (supply <= 0) { invalid = true; }
        if (extract <= 0) { invalid = true; }
        if (activeArea <= 0) { invalid = true; }
        if (indoor <= outdoor) { invalid = true; }

        var diagnostics = element("rk-rv-diagnostics");
        if (!diagnostics) { return; }
        clearDiagnostics(diagnostics);

        if (invalid) {
          setText("rk-rv-q-no", "—");
          setText("rk-rv-q-recovered", "—");
          setText("rk-rv-q-remain", "—");
          setText("rk-rv-q-infiltration", "—");
          setText("rk-rv-q-total", "—");
          setText("rk-rv-q-area", "—");
          setText("rk-rv-balance-output", "—");
          setText("rk-rv-fan-output", "—");
          setText("rk-rv-verdict-title", "Uzupełnij prawidłowe dane wejściowe");
          setText("rk-rv-verdict-text", "Przepływy, kubatura i powierzchnia muszą być większe od zera, a temperatura wewnętrzna wyższa od zewnętrznej.");
          addDiagnostic(diagnostics, "Obliczenie zostało zatrzymane, aby nie pokazywać pozornie precyzyjnego wyniku z błędnych danych.", true);
          return;
        }

        var efficiency = clamp(efficiencyPercent, 0, 95) / 100;
        var cleanInfiltration = Math.max(0, infiltration);
        var cleanFanPower = Math.max(0, fanPower);
        var deltaTemperature = indoor - outdoor;
        var baseFlow = Math.max(supply, extract);
        var balancedFlow = Math.min(supply, extract);
        var imbalancePercent = Math.abs(supply - extract) / baseFlow * 100;
        var qNo = 0.34 * baseFlow * deltaTemperature / 1000;
        var qRecovered = 0.34 * balancedFlow * deltaTemperature * efficiency / 1000;
        var qRemain = Math.max(0, qNo - qRecovered);
        var qInfiltration = 0.34 * cleanInfiltration * deltaTemperature / 1000;
        var qTotal = qRemain + qInfiltration;
        var qArea = qRecovered * 1000 / activeArea;
        var airChange = baseFlow / volume;

        setText("rk-rv-q-no", formatKw(qNo));
        setText("rk-rv-q-recovered", formatKw(qRecovered));
        setText("rk-rv-q-remain", formatKw(qRemain));
        setText("rk-rv-q-infiltration", formatKw(qInfiltration));
        setText("rk-rv-q-total", formatKw(qTotal));
        setText("rk-rv-q-area", formatNumber(qArea, 1) + " W/m²");
        setText("rk-rv-fan-output", formatNumber(cleanFanPower, 0) + " W");
        setText("rk-rv-balance-output", formatNumber(imbalancePercent, 1) + "%");

        if (quality === "measured") {
          setText("rk-rv-verdict-title", "Dane wystarczające do modelu orientacyjnego");
          setText("rk-rv-verdict-text", "Przepływy pochodzą z pomiarów, więc porównanie ma lepszą podstawę. Nadal nie jest to pełne OZC ani analiza rocznych kosztów.");
        } else if (quality === "unknown") {
          setText("rk-rv-verdict-title", "Najpierw potwierdź przepływy wentylacji");
          setText("rk-rv-verdict-text", "Wartości szacunkowe pokazują jedynie skalę zjawiska. Pomiar nawiewu i wywiewu może istotnie zmienić wynik.");
        } else {
          setText("rk-rv-verdict-title", "Wynik warunkowy — dane nadają się do porównania");
          setText("rk-rv-verdict-text", "Dane projektowe pozwalają ocenić kierunek zmiany. Przed regulacją podłogówki warto potwierdzić rzeczywiste strumienie po uruchomieniu centrali.");
        }

        if (imbalancePercent > 10) {
          setText("rk-rv-verdict-title", "Wynik wymaga sprawdzenia bilansu nawiewu i wywiewu");
          setText("rk-rv-verdict-text", "Różnica przepływów przekracza 10%. Część powietrza może przemieszczać się przez nieszczelności lub inne drogi poza wymiennikiem.");
          addDiagnostic(diagnostics, "Nawiew i wywiew różnią się o " + formatNumber(imbalancePercent, 1) + "%. Sprawdź projekt, nastawy i protokół pomiarowy.", true);
        } else {
          addDiagnostic(diagnostics, "Bilans nawiewu i wywiewu jest zbliżony: różnica wynosi " + formatNumber(imbalancePercent, 1) + "%.", false);
        }

        addDiagnostic(diagnostics, "Większy strumień odpowiada orientacyjnie " + formatNumber(airChange, 2) + " wymiany kubatury na godzinę. To kontrola, nie kryterium projektowe.", false);

        if (efficiencyPercent > 85) {
          addDiagnostic(diagnostics, "Wpisano wysoką sprawność " + formatNumber(efficiencyPercent, 0) + "%. Potwierdź ją dla konkretnego przepływu, temperatury i trybu odszraniania.", true);
        } else {
          addDiagnostic(diagnostics, "Sprawność " + formatNumber(efficiencyPercent, 0) + "% jest założeniem dla wybranego punktu, a nie gwarancją całoroczną.", true);
        }

        if (cleanInfiltration > 0) {
          addDiagnostic(diagnostics, "Dodatkowa infiltracja zwiększa wynik o " + formatNumber(qInfiltration, 2) + " kW i nie korzysta z odzysku w wymienniku.", true);
        }

        if (source === "heatpump") {
          addDiagnostic(diagnostics, "Dla pompy ciepła mniejsze obciążenie może zmienić dobór mocy, ale nie wolno odejmować odzyskanej mocy od urządzenia bez pełnego OZC i sprawdzenia punktu biwalentnego.", false);
        } else if (source === "gas") {
          addDiagnostic(diagnostics, "Dla kotła koszt unikniętej energii zależy od jego sprawności sezonowej, ceny paliwa i opłat — sama moc w kW nie jest oszczędnością w złotych.", false);
        } else if (source === "electric") {
          addDiagnostic(diagnostics, "Dla ogrzewania elektrycznego koszt zależy od taryfy i godzin pracy. Do wyniku trzeba doliczyć energię wentylatorów.", false);
        } else {
          addDiagnostic(diagnostics, "Wartość odzyskanej energii trzeba przeliczyć z użyciem sprawności i ceny właściwych dla konkretnego źródła ciepła.", false);
        }

        if (mode === "comparison") {
          addDiagnostic(diagnostics, "Tryb porównawczy pokazuje różnicę wariantów w tym samym punkcie. Nie przelicza jej na sezonowe kWh.", false);
        }

        drawChart({
          outdoor: outdoor,
          indoor: indoor,
          baseFlow: baseFlow,
          balancedFlow: balancedFlow,
          efficiency: efficiency,
          infiltration: cleanInfiltration,
          qNo: qNo,
          qTotal: qTotal
        });
      }

      var runButton = element("rk-rv-run");
      if (runButton) { runButton.addEventListener("click", calculate); }

      var fields = root.querySelectorAll("input, select");
      Array.prototype.forEach.call(fields, function (field) {
        field.addEventListener("change", calculate);
        field.addEventListener("input", calculate);
      });

      calculate();
    }

    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", startRekuAnalyzer);
    } else {
      startRekuAnalyzer();
    }
  }());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">Rekuperacja i ogrzewanie podłogowe – czy to się opłaca?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<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>Czy pompa ciepła ogrzeje dom z podłogówką?</title>
		<link>https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 18 Jan 2026 10:24:46 +0000</pubDate>
				<category><![CDATA[Analizy techniczne]]></category>
		<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Dom energooszczędny]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Energooszczędne ogrzewanie]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[cop pompy ciepła]]></category>
		<category><![CDATA[dom energooszczędny]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie domu]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3201</guid>

					<description><![CDATA[<p>Czy pompa ciepła ogrzeje dom z podłogówką skutecznie, ekonomicznie i bez kompromisów? To pytanie coraz częściej pojawia się u inwestorów, którzy chcą budować lub modernizować dom w sposób świadomy i przyszłościowy. W praktyce okazuje się, że połączenie pompy ciepła z wodnym ogrzewaniem podłogowym to jedno z najbardziej logicznych rozwiązań we współczesnym budownictwie. Niska temperatura zasilania, wysoka sprawność COP, stabilna praca systemu i realne oszczędności sprawiają, że ten duet wygrywa zarówno pod względem technicznym, jak i ekonomicznym. W artykule pokazujemy liczby, przykłady i konkretne mechanizmy stojące za tą technologią.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">Czy pompa ciepła ogrzeje dom z podłogówką?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-heat-guide {
    --rk-dark: #102536;
    --rk-navy: #15384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbfe;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #d69a16;
    --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-heat-guide,
  #rk-heat-guide * { box-sizing: border-box; }
  #rk-heat-guide img,
  #rk-heat-guide svg { max-width: 100%; }
  #rk-heat-guide button,
  #rk-heat-guide input,
  #rk-heat-guide select,
  #rk-heat-guide label,
  #rk-heat-guide summary,
  #rk-heat-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-heat-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-heat-guide a:hover,
  #rk-heat-guide a:focus-visible { color: var(--rk-red); }
  #rk-heat-guide p,
  #rk-heat-guide ul,
  #rk-heat-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-heat-guide h2,
  #rk-heat-guide h3,
  #rk-heat-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
  }
  #rk-heat-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-heat-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-heat-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-heat-guide strong { color: var(--rk-dark); }
  #rk-heat-guide [hidden] { display: none !important; }

  #rk-heat-guide .rk-heat-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
    box-shadow: 0 24px 70px rgba(16, 37, 54, .11);
  }
  #rk-heat-guide .rk-heat-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .31), transparent 28%),
      radial-gradient(circle at 8% 100%, rgba(255, 106, 61, .24), transparent 30%),
      linear-gradient(135deg, #0d2332 0%, #143e53 55%, #175b62 100%);
  }
  #rk-heat-guide .rk-heat-hero::after {
    position: absolute;
    right: -55px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 46px solid rgba(255, 255, 255, .05);
    border-radius: 50%;
    content: "";
  }
  #rk-heat-guide .rk-heat-kicker {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-heat-guide .rk-heat-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-heat-guide .rk-heat-hero-title {
    position: relative;
    z-index: 1;
    max-width: 980px;
    margin: 0 0 19px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5.4vw, 4.35rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: 1.01;
  }
  #rk-heat-guide .rk-heat-hero-title span { color: #78efff; }
  #rk-heat-guide .rk-heat-lead {
    position: relative;
    z-index: 1;
    max-width: 920px;
    margin-bottom: 25px;
    color: #d5e9f1;
    font-size: clamp(1rem, 2.15vw, 1.24rem);
    line-height: 1.65;
  }
  #rk-heat-guide .rk-heat-hero-tags,
  #rk-heat-guide .rk-heat-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
  }
  #rk-heat-guide .rk-heat-hero-tags { margin-bottom: 22px; }
  #rk-heat-guide .rk-heat-hero-tag {
    padding: 8px 12px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    color: #e8f7fb;
    background: rgba(255, 255, 255, .07);
    font-size: .68rem;
    font-weight: 850;
  }
  #rk-heat-guide .rk-heat-byline {
    padding-top: 18px;
    border-top: 1px solid rgba(255, 255, 255, .15);
    color: #bdd6df;
    font-size: .68rem;
  }
  #rk-heat-guide .rk-heat-byline strong { color: var(--rk-white); }
  #rk-heat-guide .rk-heat-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 27px;
  }
  #rk-heat-guide .rk-heat-hero-metric {
    padding: 16px 17px;
    border: 1px solid rgba(255, 255, 255, .15);
    border-radius: 15px;
    background: rgba(7, 27, 40, .34);
  }
  #rk-heat-guide .rk-heat-hero-metric b {
    display: block;
    margin-bottom: 4px;
    color: #78efff;
    font-size: .78rem;
  }
  #rk-heat-guide .rk-heat-hero-metric span {
    display: block;
    color: #d5e9f1;
    font-size: .68rem;
    line-height: 1.5;
  }

  #rk-heat-guide .rk-heat-nav {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    padding: 18px clamp(20px, 4vw, 46px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }
  #rk-heat-guide .rk-heat-nav-label {
    padding-top: 8px;
    color: var(--rk-dark);
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
    white-space: nowrap;
  }
  #rk-heat-guide .rk-heat-nav-track {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    min-width: 0;
  }
  #rk-heat-guide .rk-heat-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 8px 12px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: #f0f6f8;
    font-size: .64rem;
    font-weight: 900;
    line-height: 1.2;
    text-decoration: none;
  }
  #rk-heat-guide .rk-heat-nav a:hover,
  #rk-heat-guide .rk-heat-nav a:focus-visible {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

  #rk-heat-guide .rk-heat-content { padding: 0 clamp(20px, 5.4vw, 64px) 64px; }
  #rk-heat-guide .rk-heat-section {
    padding: clamp(42px, 7vw, 76px) 0;
    border-bottom: 1px solid var(--rk-line);
    scroll-margin-top: 18px;
  }
  #rk-heat-guide .rk-heat-section:last-of-type { border-bottom: 0; }
  #rk-heat-guide .rk-heat-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: .68rem;
    font-weight: 950;
    letter-spacing: .075em;
    text-transform: uppercase;
  }
  #rk-heat-guide .rk-heat-intro {
    max-width: 940px;
    color: var(--rk-text);
    font-size: 1.08rem;
  }
  #rk-heat-guide .rk-heat-answer,
  #rk-heat-guide .rk-heat-note,
  #rk-heat-guide .rk-heat-warning,
  #rk-heat-guide .rk-heat-success {
    margin: 25px 0;
    padding: 22px 23px;
    border-radius: 16px;
  }
  #rk-heat-guide .rk-heat-answer {
    border-left: 5px solid var(--rk-cyan);
    background: var(--rk-cyan-soft);
  }
  #rk-heat-guide .rk-heat-note {
    border-left: 5px solid var(--rk-blue);
    background: var(--rk-soft);
  }
  #rk-heat-guide .rk-heat-warning {
    border-left: 5px solid var(--rk-orange);
    background: var(--rk-orange-soft);
  }
  #rk-heat-guide .rk-heat-success {
    border-left: 5px solid var(--rk-green);
    background: var(--rk-green-soft);
  }
  #rk-heat-guide .rk-heat-answer p:last-child,
  #rk-heat-guide .rk-heat-note p:last-child,
  #rk-heat-guide .rk-heat-warning p:last-child,
  #rk-heat-guide .rk-heat-success p:last-child { margin-bottom: 0; }
  #rk-heat-guide .rk-heat-grid-2,
  #rk-heat-guide .rk-heat-grid-3,
  #rk-heat-guide .rk-heat-grid-4 {
    display: grid;
    gap: 15px;
    margin: 25px 0;
  }
  #rk-heat-guide .rk-heat-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-heat-guide .rk-heat-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-heat-guide .rk-heat-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-heat-guide .rk-heat-card {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-white);
    box-shadow: 0 10px 30px rgba(16, 37, 54, .055);
  }
  #rk-heat-guide .rk-heat-card p:last-child { margin-bottom: 0; }
  #rk-heat-guide .rk-heat-card-icon,
  #rk-heat-guide .rk-heat-number {
    display: inline-grid;
    place-items: center;
    width: 38px;
    height: 38px;
    margin-bottom: 14px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: .82rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-heat-card.is-orange .rk-heat-card-icon { background: var(--rk-orange); }
  #rk-heat-guide .rk-heat-card.is-green .rk-heat-card-icon { background: var(--rk-green); }
  #rk-heat-guide .rk-heat-card.is-purple .rk-heat-card-icon { background: var(--rk-purple); }
  #rk-heat-guide .rk-heat-formula {
    margin: 25px 0;
    padding: 24px;
    border: 1px solid #b9e4ec;
    border-radius: 17px;
    text-align: center;
    background: linear-gradient(135deg, #f7fdff, #ecfafc);
  }
  #rk-heat-guide .rk-heat-formula strong {
    display: block;
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.25rem, 3vw, 1.8rem);
  }
  #rk-heat-guide .rk-heat-formula span { color: var(--rk-muted); font-size: .78rem; }
  #rk-heat-guide .rk-heat-list {
    display: grid;
    gap: 10px;
    padding: 0;
    list-style: none;
  }
  #rk-heat-guide .rk-heat-list li {
    position: relative;
    margin: 0;
    padding: 12px 14px 12px 43px;
    border: 1px solid var(--rk-line);
    border-radius: 12px;
    background: var(--rk-white);
  }
  #rk-heat-guide .rk-heat-list li::before {
    position: absolute;
    top: 13px;
    left: 14px;
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    content: "✓";
    font-size: .62rem;
    font-weight: 950;
  }

  #rk-heat-guide .rk-heat-table-wrap {
    overflow: hidden;
    margin: 24px 0;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
  }
  #rk-heat-guide table {
    width: 100%;
    border-collapse: collapse;
    color: var(--rk-text);
    font-size: .82rem;
  }
  #rk-heat-guide th,
  #rk-heat-guide td {
    padding: 15px 16px;
    border-right: 1px solid var(--rk-line);
    border-bottom: 1px solid var(--rk-line);
    vertical-align: top;
    text-align: left;
  }
  #rk-heat-guide th:last-child,
  #rk-heat-guide td:last-child { border-right: 0; }
  #rk-heat-guide tr:last-child td { border-bottom: 0; }
  #rk-heat-guide th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: .68rem;
    font-weight: 900;
    letter-spacing: .025em;
  }

  #rk-heat-guide .rk-heat-tool {
    overflow: hidden;
    margin: 29px 0;
    border-radius: 22px;
    color: #e7f4f8;
    background: var(--rk-dark);
    box-shadow: 0 20px 55px rgba(16, 37, 54, .2);
  }
  #rk-heat-guide .rk-heat-tool-head {
    padding: clamp(25px, 5vw, 42px);
    background:
      radial-gradient(circle at 90% 0, rgba(37, 199, 216, .2), transparent 32%),
      linear-gradient(135deg, #15384d, #173344);
  }
  #rk-heat-guide .rk-heat-tool-head h3 {
    margin-bottom: 8px;
    color: var(--rk-white);
    font-size: clamp(1.45rem, 3.8vw, 2.45rem);
  }
  #rk-heat-guide .rk-heat-tool-head p { margin-bottom: 0; color: #c9e0e8; }
  #rk-heat-guide .rk-heat-tool-body { padding: clamp(20px, 4vw, 34px); }
  #rk-heat-guide .rk-heat-step {
    margin-bottom: 23px;
    padding: 22px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 17px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-heat-step:last-child { margin-bottom: 0; }
  #rk-heat-guide .rk-heat-step-title {
    display: flex;
    gap: 12px;
    align-items: center;
    margin-bottom: 18px;
  }
  #rk-heat-guide .rk-heat-step-title b {
    display: grid;
    flex: 0 0 36px;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
  }
  #rk-heat-guide .rk-heat-step-title h4 { margin: 0; color: var(--rk-white); font-size: 1.16rem; }
  #rk-heat-guide .rk-heat-fields {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
  }
  #rk-heat-guide .rk-heat-candidates {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
  }
  #rk-heat-guide .rk-heat-candidate {
    min-width: 0;
    padding: 20px;
    border: 1px solid rgba(37, 199, 216, .32);
    border-radius: 16px;
    background: rgba(10, 34, 48, .56);
  }
  #rk-heat-guide .rk-heat-candidate.is-b { border-color: rgba(255, 106, 61, .38); }
  #rk-heat-guide .rk-heat-candidate h4 {
    display: flex;
    align-items: center;
    gap: 9px;
    color: var(--rk-white);
  }
  #rk-heat-guide .rk-heat-candidate-legend {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 0 7px;
    color: var(--rk-white);
    font-size: 1.02rem;
    font-weight: 920;
  }
  #rk-heat-guide .rk-heat-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--rk-cyan);
    box-shadow: 0 0 0 5px rgba(37, 199, 216, .12);
  }
  #rk-heat-guide .rk-heat-candidate.is-b .rk-heat-dot {
    background: var(--rk-orange);
    box-shadow: 0 0 0 5px rgba(255, 106, 61, .12);
  }
  #rk-heat-guide .rk-heat-candidate-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  #rk-heat-guide .rk-heat-field { min-width: 0; }
  #rk-heat-guide .rk-heat-field.is-wide { grid-column: 1 / -1; }
  #rk-heat-guide .rk-heat-field label {
    display: block;
    margin-bottom: 5px;
    color: #dff3f8;
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.35;
  }
  #rk-heat-guide .rk-heat-field input,
  #rk-heat-guide .rk-heat-field select {
    width: 100%;
    min-height: 45px;
    padding: 10px 12px;
    border: 1px solid #b8cbd3;
    border-radius: 10px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .77rem;
    font-weight: 700;
  }
  #rk-heat-guide .rk-heat-field small {
    display: block;
    margin-top: 5px;
    color: #8fb6c5;
    font-size: .59rem;
    line-height: 1.42;
  }
  #rk-heat-guide .rk-heat-field input:focus,
  #rk-heat-guide .rk-heat-field select:focus {
    outline: 3px solid rgba(37, 199, 216, .25);
    border-color: var(--rk-cyan);
  }
  #rk-heat-guide .rk-heat-tool-button {
    width: 100%;
    margin-top: 18px;
    padding: 14px 18px;
    border: 0;
    border-radius: 12px;
    color: var(--rk-dark);
    background: linear-gradient(135deg, #61e7f3, #25c7d8);
    cursor: pointer;
    font-size: .84rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-heat-tool-button:hover,
  #rk-heat-guide .rk-heat-tool-button:focus-visible { filter: brightness(1.06); }
  #rk-heat-guide .rk-heat-result-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 16px;
    align-items: start;
    margin-bottom: 18px;
  }
  #rk-heat-guide .rk-heat-result-head h4 { margin-bottom: 5px; color: var(--rk-white); }
  #rk-heat-guide .rk-heat-result-head p { margin-bottom: 0; color: #bcd7e1; font-size: .74rem; }
  #rk-heat-guide .rk-heat-result-badge {
    display: inline-flex;
    padding: 8px 11px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    font-size: .62rem;
    font-weight: 950;
    white-space: nowrap;
  }
  #rk-heat-guide .rk-heat-result-badge.is-warning { color: #4f3300; background: #ffd568; }
  #rk-heat-guide .rk-heat-result-badge.is-bad { color: #59150f; background: #ff9f91; }
  #rk-heat-guide .rk-heat-result-badge.is-neutral { color: #29205d; background: #c8c1ff; }
  #rk-heat-guide .rk-heat-result-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 15px;
  }
  #rk-heat-guide .rk-heat-result-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 15px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-heat-result-card h4 { color: var(--rk-white); }
  #rk-heat-guide .rk-heat-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 9px;
    margin: 15px 0;
  }
  #rk-heat-guide .rk-heat-metric {
    padding: 12px;
    border-radius: 11px;
    background: rgba(255, 255, 255, .06);
  }
  #rk-heat-guide .rk-heat-metric span {
    display: block;
    color: #93bac7;
    font-size: .56rem;
    font-weight: 850;
    letter-spacing: .035em;
    text-transform: uppercase;
  }
  #rk-heat-guide .rk-heat-metric strong {
    display: block;
    margin-top: 3px;
    color: var(--rk-white);
    font-size: .96rem;
  }
  #rk-heat-guide .rk-heat-bar {
    position: relative;
    overflow: hidden;
    height: 15px;
    margin: 10px 0 7px;
    border-radius: 999px;
    background: #264b5e;
  }
  #rk-heat-guide .rk-heat-bar span {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-cyan), #66e5ef);
    transition: width .3s ease;
  }
  #rk-heat-guide .rk-heat-result-card.is-b .rk-heat-bar span {
    background: linear-gradient(90deg, var(--rk-orange), #ff9b78);
  }
  #rk-heat-guide .rk-heat-layer-stack {
    display: grid;
    gap: 6px;
    margin-top: 15px;
  }
  #rk-heat-guide .rk-heat-layer {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 9px;
    color: var(--rk-dark);
    background: #dff8fb;
    font-size: .65rem;
    font-weight: 850;
  }
  #rk-heat-guide .rk-heat-layer.is-install { background: #ffe0d4; }
  #rk-heat-guide .rk-heat-layer.is-screed { color: #eef8fb; background: #466575; }
  #rk-heat-guide .rk-heat-diagnostics {
    display: grid;
    gap: 8px;
    margin-top: 14px;
  }
  #rk-heat-guide .rk-heat-diagnostic {
    padding: 10px 12px;
    border-left: 4px solid var(--rk-yellow);
    border-radius: 8px;
    color: #f5e9c5;
    background: rgba(214, 154, 22, .12);
    font-size: .67rem;
    line-height: 1.48;
  }
  #rk-heat-guide .rk-heat-diagnostic.is-good {
    border-color: #4cd7ac;
    color: #d8fff1;
    background: rgba(22, 131, 107, .16);
  }
  #rk-heat-guide .rk-heat-diagnostic.is-bad {
    border-color: #ff786b;
    color: #ffe1dc;
    background: rgba(217, 75, 61, .15);
  }
  #rk-heat-guide .rk-heat-questions {
    margin: 14px 0 0;
    padding-left: 19px;
    color: #d9eaf0;
    font-size: .68rem;
  }
  #rk-heat-guide .rk-heat-questions li { margin-bottom: 6px; }

  #rk-heat-guide .rk-heat-chart-card {
    margin-top: 16px;
    padding: 20px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 16px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-heat-chart-head {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: start;
    margin-bottom: 13px;
  }
  #rk-heat-guide .rk-heat-chart-head h4 { margin-bottom: 5px; color: var(--rk-white); }
  #rk-heat-guide .rk-heat-chart-head p { margin: 0; color: #bcd7e1; font-size: .68rem; }
  #rk-heat-guide .rk-heat-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 11px;
    justify-content: flex-end;
    color: #d9eaf0;
    font-size: .62rem;
    font-weight: 800;
  }
  #rk-heat-guide .rk-heat-chart-key {
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }
  #rk-heat-guide .rk-heat-chart-key::before {
    width: 18px;
    height: 4px;
    border-radius: 999px;
    background: var(--rk-cyan);
    content: "";
  }
  #rk-heat-guide .rk-heat-chart-key.is-b::before { background: var(--rk-orange); }
  #rk-heat-guide .rk-heat-chart-key.is-demand::before {
    height: 2px;
    background: #ffd568;
  }
  #rk-heat-guide .rk-heat-chart-wrap {
    overflow: hidden;
    width: 100%;
    min-height: 350px;
    border-radius: 13px;
    background: #f8fcfd;
  }
  #rk-heat-guide .rk-heat-chart-wrap canvas {
    display: block;
    width: 100%;
    height: 350px;
  }
  #rk-heat-guide .rk-heat-chart-summary {
    margin: 11px 0 0;
    color: #a9c8d3;
    font-size: .63rem;
    line-height: 1.55;
  }
  #rk-heat-guide .rk-heat-result-status {
    display: inline-flex;
    margin-top: 8px;
    padding: 7px 10px;
    border-radius: 999px;
    color: #d8fff1;
    background: rgba(22, 131, 107, .22);
    font-size: .61rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-heat-result-status.is-warning {
    color: #fff2c9;
    background: rgba(214, 154, 22, .22);
  }
  #rk-heat-guide .rk-heat-result-status.is-bad {
    color: #ffe1dc;
    background: rgba(217, 75, 61, .22);
  }
  #rk-heat-guide .rk-heat-stack-scale {
    display: grid;
    gap: 6px;
    margin-top: 15px;
  }
  #rk-heat-guide .rk-heat-stack-segment {
    position: relative;
    overflow: hidden;
    min-height: 34px;
    padding: 8px 11px;
    border-radius: 9px;
    color: var(--rk-dark);
    background: #dff8fb;
    font-size: .63rem;
    font-weight: 850;
  }
  #rk-heat-guide .rk-heat-stack-segment.is-install { background: #ffe0d4; }
  #rk-heat-guide .rk-heat-stack-segment.is-extra { background: #e9e5ff; }
  #rk-heat-guide .rk-heat-stack-segment span { float: right; }
  #rk-heat-guide .rk-heat-data-note {
    margin-top: 12px;
    padding: 11px 13px;
    border-left: 4px solid var(--rk-cyan);
    border-radius: 9px;
    color: #d8eef4;
    background: rgba(37, 199, 216, .08);
    font-size: .64rem;
  }

  #rk-heat-guide .rk-heat-question-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  #rk-heat-guide .rk-heat-question {
    min-width: 0;
    padding: 16px;
    border: 1px solid rgba(136, 202, 220, .24);
    border-radius: 13px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-heat-question.is-critical {
    border-left: 4px solid var(--rk-orange);
  }
  #rk-heat-guide .rk-heat-question label {
    display: block;
    min-height: 45px;
    margin-bottom: 8px;
    color: #dff3f8;
    font-size: .68rem;
    font-weight: 850;
    line-height: 1.45;
  }
  #rk-heat-guide .rk-heat-question select {
    width: 100%;
    min-height: 45px;
    padding: 10px 12px;
    border: 1px solid #b8cbd3;
    border-radius: 10px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .76rem;
    font-weight: 700;
  }
  #rk-heat-guide .rk-heat-question select:focus {
    outline: 3px solid rgba(37, 199, 216, .25);
    border-color: var(--rk-cyan);
  }
  #rk-heat-guide .rk-heat-critical-note {
    margin: 0 0 16px;
    padding: 12px 14px;
    border-left: 4px solid var(--rk-orange);
    border-radius: 10px;
    color: var(--rk-text);
    background: rgba(255, 106, 61, .1);
    font-size: .65rem;
  }
  #rk-heat-guide .rk-heat-stage-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 11px;
    margin-top: 15px;
  }
  #rk-heat-guide .rk-heat-stage-card {
    min-width: 0;
    padding: 15px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 13px;
    background: rgba(255, 255, 255, .04);
  }
  #rk-heat-guide .rk-heat-stage-card.is-ready { border-color: rgba(76, 215, 172, .46); }
  #rk-heat-guide .rk-heat-stage-card.is-warning { border-color: rgba(255, 213, 104, .55); }
  #rk-heat-guide .rk-heat-stage-card.is-blocked { border-color: rgba(255, 120, 107, .58); }
  #rk-heat-guide .rk-heat-stage-number {
    display: inline-grid;
    place-items: center;
    width: 31px;
    height: 31px;
    margin-bottom: 10px;
    border-radius: 9px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    font-size: .67rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-heat-stage-card.is-warning .rk-heat-stage-number { background: #ffd568; }
  #rk-heat-guide .rk-heat-stage-card.is-blocked .rk-heat-stage-number { background: #ff9f91; }
  #rk-heat-guide .rk-heat-stage-card h4 { margin-bottom: 6px; color: var(--rk-white); font-size: .84rem; }
  #rk-heat-guide .rk-heat-stage-card p { margin-bottom: 10px; color: #bcd7e1; font-size: .64rem; line-height: 1.5; }
  #rk-heat-guide .rk-heat-stage-status {
    display: inline-flex;
    padding: 6px 9px;
    border-radius: 999px;
    color: #d8fff1;
    background: rgba(22, 131, 107, .24);
    font-size: .57rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-heat-stage-card.is-warning .rk-heat-stage-status {
    color: #fff2c9;
    background: rgba(214, 154, 22, .22);
  }
  #rk-heat-guide .rk-heat-stage-card.is-blocked .rk-heat-stage-status {
    color: #ffe1dc;
    background: rgba(217, 75, 61, .24);
  }
  #rk-heat-guide .rk-heat-output-stack {
    display: grid;
    gap: 12px;
    margin-top: 16px;
  }
  #rk-heat-guide .rk-heat-output-card {
    padding: 17px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 14px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-heat-output-card h4 { margin-bottom: 10px; color: var(--rk-white); }
  #rk-heat-guide .rk-heat-output-card.is-warning { border-left: 4px solid #ffd568; }
  #rk-heat-guide .rk-heat-output-card.is-blocked { border-left: 4px solid #ff786b; }
  #rk-heat-guide .rk-heat-output-card.is-ready { border-left: 4px solid #4cd7ac; }
  #rk-heat-guide .rk-heat-output-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
  }
  #rk-heat-guide .rk-heat-output-list li {
    position: relative;
    margin: 0;
    padding: 10px 11px 10px 34px;
    border-radius: 9px;
    color: #d9eaf0;
    background: rgba(255, 255, 255, .045);
    font-size: .65rem;
    line-height: 1.45;
  }
  #rk-heat-guide .rk-heat-output-list li::before {
    position: absolute;
    top: 10px;
    left: 11px;
    color: var(--rk-cyan);
    content: "✓";
    font-weight: 950;
  }
  #rk-heat-guide .rk-heat-output-card.is-warning .rk-heat-output-list li::before { color: #ffd568; content: "!"; }
  #rk-heat-guide .rk-heat-output-card.is-blocked .rk-heat-output-list li::before { color: #ff8b7f; content: "×"; }
  #rk-heat-guide .rk-heat-empty-result {
    margin: 0;
    color: #a9c8d3;
    font-size: .66rem;
  }

  #rk-heat-guide .rk-heat-sales-cta {
    margin: 36px 0;
    padding: clamp(25px, 5vw, 42px);
    border-radius: 20px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 0, rgba(37, 199, 216, .22), transparent 30%),
      linear-gradient(135deg, #102536, #17445a);
  }
  #rk-heat-guide .rk-heat-sales-cta h3 { color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2rem); }
  #rk-heat-guide .rk-heat-sales-cta p { max-width: 920px; color: #d0e4eb; }
  #rk-heat-guide .rk-heat-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 13px 20px;
    border-radius: 12px;
    color: var(--rk-dark) !important;
    background: linear-gradient(135deg, #63e6f1, #28c9d9);
    font-size: .79rem;
    font-weight: 950 !important;
    text-decoration: none !important;
  }
  #rk-heat-guide .rk-heat-cta-button:hover,
  #rk-heat-guide .rk-heat-cta-button:focus-visible { filter: brightness(1.07); }

  #rk-heat-guide .rk-heat-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin: 24px 0;
    padding: 0;
    list-style: none;
  }
  #rk-heat-guide .rk-heat-checklist li {
    position: relative;
    margin: 0;
    padding: 14px 14px 14px 45px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-soft);
  }
  #rk-heat-guide .rk-heat-checklist li::before {
    position: absolute;
    top: 14px;
    left: 14px;
    display: grid;
    place-items: center;
    width: 22px;
    height: 22px;
    border: 2px solid var(--rk-cyan);
    border-radius: 7px;
    color: var(--rk-blue);
    content: "✓";
    font-size: .65rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-heat-faq {
    display: grid;
    gap: 11px;
    margin-top: 24px;
  }
  #rk-heat-guide .rk-heat-faq details {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-white);
  }
  #rk-heat-guide .rk-heat-faq summary {
    position: relative;
    padding: 17px 48px 17px 18px;
    color: var(--rk-dark);
    cursor: pointer;
    font-weight: 880;
    list-style: none;
  }
  #rk-heat-guide .rk-heat-faq summary::-webkit-details-marker { display: none; }
  #rk-heat-guide .rk-heat-faq summary::after {
    position: absolute;
    top: 15px;
    right: 16px;
    display: grid;
    place-items: center;
    width: 27px;
    height: 27px;
    border-radius: 8px;
    color: var(--rk-white);
    background: var(--rk-blue);
    content: "+";
  }
  #rk-heat-guide .rk-heat-faq details[open] summary::after { content: "−"; }
  #rk-heat-guide .rk-heat-faq-answer {
    padding: 0 18px 17px;
    color: var(--rk-text);
  }
  #rk-heat-guide .rk-heat-faq-answer p:last-child { margin-bottom: 0; }
  #rk-heat-guide .rk-heat-sources {
    display: grid;
    gap: 11px;
    margin-top: 24px;
  }
  #rk-heat-guide .rk-heat-source {
    padding: 18px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }
  #rk-heat-guide .rk-heat-source p { margin: 6px 0 0; color: var(--rk-muted); font-size: .77rem; }

  #rk-heat-guide .rk-heat-author {
    overflow: hidden;
    margin-top: 48px;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    background: var(--rk-soft);
    scroll-margin-top: 18px;
  }
  #rk-heat-guide .rk-heat-author > input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
  }
  #rk-heat-guide .rk-heat-author-head {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: end;
    padding: 28px 32px 22px;
    border-bottom: 1px solid var(--rk-line);
  }
  #rk-heat-guide .rk-heat-author-head h2 { margin-bottom: 6px; font-size: clamp(1.55rem, 3vw, 2.2rem); }
  #rk-heat-guide .rk-heat-author-head p { margin: 0; color: var(--rk-muted); }
  #rk-heat-guide .rk-heat-author-mark {
    max-width: 380px;
    color: var(--rk-blue);
    font-size: .61rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-align: right;
  }
  #rk-heat-guide .rk-heat-author-layout {
    display: grid;
    grid-template-columns: 255px minmax(0, 1fr);
  }
  #rk-heat-guide .rk-heat-author-side {
    padding: 30px 24px;
    color: var(--rk-white);
    text-align: center;
    background: var(--rk-dark);
  }
  #rk-heat-guide .rk-heat-author-photo {
    overflow: hidden;
    width: 145px;
    height: 145px;
    margin: 0 auto 18px;
    border: 6px solid rgba(255, 255, 255, .16);
    border-radius: 50%;
    background: var(--rk-white);
  }
  #rk-heat-guide .rk-heat-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  #rk-heat-guide .rk-heat-author-name { margin-bottom: 5px; font-size: 1.08rem; font-weight: 950; }
  #rk-heat-guide .rk-heat-author-role { color: #bdd4de; font-size: .68rem; line-height: 1.55; }
  #rk-heat-guide .rk-heat-author-social-label {
    margin-top: 24px;
    color: #8ca8b5;
    font-size: .58rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
  }
  #rk-heat-guide .rk-heat-author-social {
    display: flex;
    justify-content: center;
    gap: 9px;
    margin-top: 10px;
  }
  #rk-heat-guide .rk-heat-author-social a {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border: 1px solid #507080;
    border-radius: 50%;
    color: var(--rk-white);
  }
  #rk-heat-guide .rk-heat-author-social a:hover { border-color: var(--rk-cyan); color: var(--rk-cyan); }
  #rk-heat-guide .rk-heat-author-social svg { width: 18px; height: 18px; fill: currentColor; }
  #rk-heat-guide .rk-heat-author-main { padding: 30px 34px; }
  #rk-heat-guide .rk-heat-author-quote {
    position: relative;
    margin: 0 0 23px;
    padding: 22px 22px 22px 64px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: var(--rk-white);
  }
  #rk-heat-guide .rk-heat-author-quote::before {
    position: absolute;
    top: 12px;
    left: 23px;
    color: var(--rk-cyan);
    content: "“";
    font-family: Georgia, serif;
    font-size: 3.7rem;
    font-weight: 900;
    line-height: 1;
  }
  #rk-heat-guide .rk-heat-author-quote p { margin: 0; color: var(--rk-dark); font-weight: 780; }
  #rk-heat-guide .rk-heat-author-tabs { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 20px; }
  #rk-heat-guide .rk-heat-author-tab {
    padding: 8px 13px;
    border-radius: 999px;
    color: var(--rk-muted);
    background: #e2edf1;
    cursor: pointer;
    font-size: .67rem;
    font-weight: 900;
  }
  #rk-heat-guide .rk-heat-author-panel { display: none; color: var(--rk-text); }
  #rk-heat-guide #rk-heat-author-about:checked ~ .rk-heat-author-layout .rk-heat-author-panel-about,
  #rk-heat-guide #rk-heat-author-exp:checked ~ .rk-heat-author-layout .rk-heat-author-panel-exp,
  #rk-heat-guide #rk-heat-author-method:checked ~ .rk-heat-author-layout .rk-heat-author-panel-method { display: block; }
  #rk-heat-guide #rk-heat-author-about:checked ~ .rk-heat-author-layout label[for="rk-heat-author-about"],
  #rk-heat-guide #rk-heat-author-exp:checked ~ .rk-heat-author-layout label[for="rk-heat-author-exp"],
  #rk-heat-guide #rk-heat-author-method:checked ~ .rk-heat-author-layout label[for="rk-heat-author-method"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }
  #rk-heat-guide .rk-heat-mini-label {
    margin: 21px 0 8px;
    color: var(--rk-muted);
    font-size: .58rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
  }
  #rk-heat-guide .rk-heat-portals { display: flex; flex-wrap: wrap; gap: 8px; }
  #rk-heat-guide .rk-heat-portals a {
    padding: 7px 11px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    background: var(--rk-white);
    font-size: .65rem;
    text-decoration: none;
  }

  @media (max-width: 900px) {
    #rk-heat-guide .rk-heat-hero-metrics,
    #rk-heat-guide .rk-heat-grid-3,
    #rk-heat-guide .rk-heat-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-heat-guide .rk-heat-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-heat-guide .rk-heat-author-layout { grid-template-columns: 225px minmax(0, 1fr); }
    #rk-heat-guide .rk-heat-stage-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 720px) {
    #rk-heat-guide { margin-top: 18px; font-size: 16px; }
    #rk-heat-guide .rk-heat-shell { border-radius: 18px; }
    #rk-heat-guide .rk-heat-nav { grid-template-columns: 1fr; gap: 5px; }
    #rk-heat-guide .rk-heat-nav-label { padding: 0 0 4px 2px; }
    #rk-heat-guide .rk-heat-nav-track { width: 100%; }
    #rk-heat-guide .rk-heat-candidates,
    #rk-heat-guide .rk-heat-result-grid,
    #rk-heat-guide .rk-heat-grid-2,
    #rk-heat-guide .rk-heat-checklist { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-heat-result-head { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-heat-chart-head { display: block; }
    #rk-heat-guide .rk-heat-chart-legend { justify-content: flex-start; margin-top: 10px; }
    #rk-heat-guide .rk-heat-author-head { display: block; }
    #rk-heat-guide .rk-heat-author-mark { margin-top: 12px; text-align: left; }
    #rk-heat-guide .rk-heat-author-layout { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-heat-question-grid,
    #rk-heat-guide .rk-heat-stage-grid,
    #rk-heat-guide .rk-heat-output-list { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-heat-table-wrap { overflow: visible; border: 0; }
    #rk-heat-guide table,
    #rk-heat-guide thead,
    #rk-heat-guide tbody,
    #rk-heat-guide tr,
    #rk-heat-guide th,
    #rk-heat-guide td { display: block; width: 100%; }
    #rk-heat-guide thead {
      position: absolute;
      overflow: hidden;
      width: 1px;
      height: 1px;
      clip: rect(0 0 0 0);
      white-space: nowrap;
    }
    #rk-heat-guide tr {
      overflow: hidden;
      margin-bottom: 13px;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      background: var(--rk-white);
    }
    #rk-heat-guide td {
      position: relative;
      padding: 39px 15px 14px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }
    #rk-heat-guide td::before {
      position: absolute;
      top: 11px;
      left: 15px;
      color: var(--rk-blue);
      content: attr(data-label);
      font-size: .58rem;
      font-weight: 950;
      letter-spacing: .045em;
      text-transform: uppercase;
    }
  }
  @media (max-width: 500px) {
    #rk-heat-guide .rk-heat-hero { padding-left: 21px; padding-right: 21px; }
    #rk-heat-guide .rk-heat-hero-metrics,
    #rk-heat-guide .rk-heat-grid-3,
    #rk-heat-guide .rk-heat-grid-4,
    #rk-heat-guide .rk-heat-fields,
    #rk-heat-guide .rk-heat-candidate-fields,
    #rk-heat-guide .rk-heat-metrics { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-heat-content { padding-left: 16px; padding-right: 16px; }
    #rk-heat-guide .rk-heat-nav { padding-left: 15px; padding-right: 15px; }
    #rk-heat-guide .rk-heat-nav a { font-size: .61rem; }
    #rk-heat-guide .rk-heat-author-main { padding: 24px 18px; }
    #rk-heat-guide .rk-heat-author-quote { padding-left: 58px; }
    #rk-heat-guide .rk-heat-chart-wrap,
    #rk-heat-guide .rk-heat-chart-wrap canvas { min-height: 300px; height: 300px; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-heat-guide *,
    #rk-heat-guide *::before,
    #rk-heat-guide *::after {
      scroll-behavior: auto !important;
      transition: none !important;
      animation: none !important;
    }
  }

  /* Laboratorium jednego pomieszczenia: pełna szerokość i układ sekwencyjny. */
  #rk-heat-guide .rk-heat-lab-group {
    margin-bottom: 17px;
    padding: 19px;
    border: 1px solid rgba(136, 202, 220, .24);
    border-radius: 15px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-heat-lab-group:last-child { margin-bottom: 0; }
  #rk-heat-guide .rk-heat-lab-group h4 { color: var(--rk-white); }
  #rk-heat-guide .rk-heat-lab-group > p { color: #bcd7e1; font-size: .7rem; }
  #rk-heat-guide .rk-heat-lab-fields {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
  }
  #rk-heat-guide .rk-heat-result-strip {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 18px;
  }
  #rk-heat-guide .rk-heat-result-tile {
    min-width: 0;
    padding: 14px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 12px;
    background: rgba(255, 255, 255, .055);
  }
  #rk-heat-guide .rk-heat-result-tile span {
    display: block;
    color: #96bdca;
    font-size: .56rem;
    font-weight: 900;
    letter-spacing: .035em;
    text-transform: uppercase;
  }
  #rk-heat-guide .rk-heat-result-tile strong {
    display: block;
    margin-top: 4px;
    color: var(--rk-white);
    font-size: 1.12rem;
    line-height: 1.22;
  }
  #rk-heat-guide .rk-heat-chart-list {
    display: grid;
    gap: 11px;
    margin: 18px 0 0;
  }
  #rk-heat-guide .rk-heat-chart-row {
    display: grid;
    grid-template-columns: minmax(110px, 1.05fr) minmax(170px, 3fr) minmax(92px, .85fr);
    gap: 11px;
    align-items: center;
  }
  #rk-heat-guide .rk-heat-chart-label { color: #d8edf3; font-size: .66rem; font-weight: 850; }
  #rk-heat-guide .rk-heat-chart-track {
    overflow: hidden;
    height: 16px;
    border-radius: 999px;
    background: #27495a;
  }
  #rk-heat-guide .rk-heat-chart-fill {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-cyan), #64e4ef);
    transition: width .28s ease;
  }
  #rk-heat-guide .rk-heat-chart-row:nth-child(2) .rk-heat-chart-fill { background: linear-gradient(90deg, #ff6a3d, #ff9b76); }
  #rk-heat-guide .rk-heat-chart-row:nth-child(3) .rk-heat-chart-fill { background: linear-gradient(90deg, #16836b, #43c69f); }
  #rk-heat-guide .rk-heat-chart-row:nth-child(4) .rk-heat-chart-fill { background: linear-gradient(90deg, #695ac9, #9c8ff3); }
  #rk-heat-guide .rk-heat-chart-row:nth-child(5) .rk-heat-chart-fill { background: linear-gradient(90deg, #d69a16, #ffd062); }
  #rk-heat-guide .rk-heat-chart-row:nth-child(6) .rk-heat-chart-fill { background: linear-gradient(90deg, #078fbe, #43caef); }
  #rk-heat-guide .rk-heat-chart-value { color: var(--rk-white); font-size: .66rem; font-weight: 900; text-align: right; }
  #rk-heat-guide .rk-heat-formula-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 19px 0 13px;
  }
  #rk-heat-guide .rk-heat-formula-tab {
    padding: 8px 11px;
    border: 1px solid rgba(136, 202, 220, .31);
    border-radius: 999px;
    color: #d9edf3;
    background: rgba(255, 255, 255, .045);
    cursor: pointer;
    font-size: .63rem;
    font-weight: 900;
  }
  #rk-heat-guide .rk-heat-formula-tab[aria-pressed="true"] {
    border-color: var(--rk-cyan);
    color: var(--rk-dark);
    background: var(--rk-cyan);
  }
  #rk-heat-guide .rk-heat-live-formula {
    padding: 18px;
    border: 1px solid rgba(37, 199, 216, .28);
    border-radius: 13px;
    background: rgba(7, 143, 190, .1);
  }
  #rk-heat-guide .rk-heat-live-formula strong { display: block; color: var(--rk-white); font-size: 1rem; }
  #rk-heat-guide .rk-heat-live-formula code {
    display: block;
    overflow-wrap: anywhere;
    margin: 8px 0;
    padding: 11px 13px;
    border: 1px solid rgba(126, 239, 255, .38);
    border-left: 4px solid var(--rk-cyan);
    border-radius: 9px;
    color: #f2fdff !important;
    background: #0b2d3f !important;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .73rem;
    font-weight: 800;
    line-height: 1.55;
    white-space: normal;
  }
  #rk-heat-guide .rk-heat-live-formula span { color: #bcd7e1; font-size: .68rem; }
  #rk-heat-guide .rk-heat-example-flow {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin: 24px 0;
  }
  #rk-heat-guide .rk-heat-example-step {
    padding: 17px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }
  #rk-heat-guide .rk-heat-example-step b { display: block; margin-bottom: 5px; color: var(--rk-blue); }
  #rk-heat-guide .rk-heat-example-step p { margin: 0; font-size: .78rem; }
  #rk-heat-guide .rk-heat-inline-code {
    padding: .12em .35em;
    border-radius: 5px;
    color: var(--rk-dark);
    background: #e9f1f4;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .88em;
  }
  #rk-heat-guide .rk-heat-source a { overflow-wrap: anywhere; }

  @media (max-width: 900px) {
    #rk-heat-guide .rk-heat-lab-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-heat-guide .rk-heat-result-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  }
  @media (max-width: 620px) {
    #rk-heat-guide .rk-heat-lab-fields,
    #rk-heat-guide .rk-heat-result-strip,
    #rk-heat-guide .rk-heat-example-flow { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-heat-chart-row { grid-template-columns: 1fr; gap: 5px; }
    #rk-heat-guide .rk-heat-chart-value { text-align: left; }
  }

  /* Analizator źródło–odbiornik: sekwencyjnie, bez wysokich niezależnych kolumn. */
  #rk-heat-guide .rk-hp-equation {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin: 22px 0;
  }
  #rk-heat-guide .rk-hp-equation > div {
    padding: 17px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }
  #rk-heat-guide .rk-hp-equation code {
    display: block;
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-size: .88rem;
    font-weight: 900;
    white-space: normal;
  }
  #rk-heat-guide .rk-hp-equation span { color: var(--rk-muted); font-size: .72rem; }
  #rk-heat-guide .rk-hp-status-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin-bottom: 18px;
  }
  #rk-heat-guide .rk-hp-status-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 15px;
    background: rgba(255, 255, 255, .04);
  }
  #rk-heat-guide .rk-hp-status-card h4 { color: var(--rk-white); }
  #rk-heat-guide .rk-hp-status-card p { margin: 7px 0 0; color: #bcd7e1; font-size: .69rem; }
  #rk-heat-guide .rk-hp-meter {
    overflow: hidden;
    height: 14px;
    margin: 12px 0 7px;
    border-radius: 999px;
    background: #27495a;
  }
  #rk-heat-guide .rk-hp-meter span {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-cyan), #64e4ef);
    transition: width .28s ease;
  }
  #rk-heat-guide .rk-hp-meter.is-floor span { background: linear-gradient(90deg, var(--rk-orange), #ff9b76); }
  #rk-heat-guide .rk-hp-coverage {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    color: #d8edf3;
    font-size: .66rem;
    font-weight: 850;
  }
  #rk-heat-guide .rk-hp-chart-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 14px;
  }
  #rk-heat-guide .rk-hp-chart-tab {
    padding: 8px 12px;
    border: 1px solid rgba(136, 202, 220, .35);
    border-radius: 999px;
    color: #d9edf3;
    background: rgba(255, 255, 255, .045);
    cursor: pointer;
    font-size: .65rem;
    font-weight: 900;
  }
  #rk-heat-guide .rk-hp-chart-tab[aria-pressed="true"] {
    border-color: var(--rk-cyan);
    color: var(--rk-dark);
    background: var(--rk-cyan);
  }
  #rk-heat-guide .rk-hp-method-note {
    margin-top: 15px;
    padding: 13px 15px;
    border-left: 4px solid var(--rk-yellow);
    border-radius: 10px;
    color: #fff0c4;
    background: rgba(214, 154, 22, .13);
    font-size: .67rem;
    line-height: 1.5;
  }
  #rk-heat-guide .rk-hp-result-message {
    margin: 16px 0 0;
    padding: 15px 17px;
    border-left: 5px solid #4cd7ac;
    border-radius: 11px;
    color: #dcfff3;
    background: rgba(22, 131, 107, .17);
    font-size: .75rem;
    font-weight: 780;
  }
  #rk-heat-guide .rk-hp-result-message.is-warning {
    border-color: #ffd568;
    color: #fff1c3;
    background: rgba(214, 154, 22, .14);
  }
  #rk-heat-guide .rk-hp-result-message.is-bad {
    border-color: #ff8b7f;
    color: #ffe1dc;
    background: rgba(217, 75, 61, .15);
  }
  #rk-heat-guide .rk-hp-small { color: var(--rk-muted); font-size: .72rem; }
  #rk-heat-guide .rk-hp-cta-limits {
    margin-bottom: 20px;
    padding: 15px 17px;
    border: 1px solid rgba(255, 255, 255, .15);
    border-radius: 13px;
    color: #e8f6fa;
    background: rgba(255, 255, 255, .055);
  }
  #rk-heat-guide .rk-hp-cta-limits strong { color: var(--rk-white); }

  @media (max-width: 720px) {
    #rk-heat-guide .rk-hp-equation,
    #rk-heat-guide .rk-hp-status-grid { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-hp-coverage { display: block; }
    #rk-heat-guide .rk-hp-coverage span { display: block; margin-top: 3px; }
  }
</style>

<div id="rk-heat-guide">
  <article class="rk-heat-shell">
    <header class="rk-heat-hero">
      <span class="rk-heat-kicker">Pompa ciepła i podłogówka • punkt projektowy • aktualizacja 2026</span>
      <p class="rk-heat-hero-title">Czy pompa ciepła ogrzeje dom z podłogówką? <span>Sprawdź źródło i podłogę osobno</span></p>
      <p class="rk-heat-lead">Samo połączenie pompy ciepła z ogrzewaniem podłogowym nie gwarantuje komfortu. W mroźny dzień moc urządzenia musi pokryć obciążenie budynku, a powierzchnia grzewcza musi przekazać tę moc bez przegrzewania posadzki i przeciążania hydrauliki.</p>
      <div class="rk-heat-hero-tags" aria-label="Zakres artykułu">
        <span class="rk-heat-hero-tag">moc przy A<sub>proj</sub>/W<sub>proj</sub></span>
        <span class="rk-heat-hero-tag">OZC budynku</span>
        <span class="rk-heat-hero-tag">wydajność W/m²</span>
        <span class="rk-heat-hero-tag">temperatura zasilania</span>
        <span class="rk-heat-hero-tag">punkt biwalentny</span>
      </div>
      <div class="rk-heat-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 24 minuty</span>
        <span>Aktualizacja techniczna: 7 września 2026 r.</span>
      </div>
      <div class="rk-heat-hero-metrics" aria-label="Trzy warunki poprawnej oceny">
        <div class="rk-heat-hero-metric"><b>Nie patrz tylko na moc nominalną</b><span>Potrzebna jest moc pompy w temperaturze projektowej i przy wymaganej temperaturze wody.</span></div>
        <div class="rk-heat-hero-metric"><b>Sprawdź każde pomieszczenie</b><span>Bilans całego domu nie wykryje pokoju, w którym powierzchnia czynna jest zbyt mała.</span></div>
        <div class="rk-heat-hero-metric"><b>Oddziel źródło od odbiornika</b><span>Pompa może mieć wystarczającą moc, a podłoga nadal może nie przekazać jej do wnętrza.</span></div>
      </div>
    </header>

    <nav class="rk-heat-nav" aria-label="Nawigacja po wszystkich rozdziałach artykułu">
      <span class="rk-heat-nav-label">Na skróty</span>
      <div class="rk-heat-nav-track">
        <a href="#rk-hp-szybka">Szybka odpowiedź</a>
        <a href="#rk-hp-warunki">Dwa warunki</a>
        <a href="#rk-hp-ozc">OZC domu</a>
        <a href="#rk-hp-moc-pompy">Moc pompy</a>
        <a href="#rk-hp-moc-podlogi">Moc podłogi</a>
        <a href="#rk-hp-analizator">Analizator</a>
        <a href="#rk-hp-temperatura">Temperatura wody</a>
        <a href="#rk-hp-rozstaw">Rozstaw i okładzina</a>
        <a href="#rk-hp-hydraulika">Hydraulika</a>
        <a href="#rk-hp-bufor">Bufor i taktowanie</a>
        <a href="#rk-hp-mroz">Praca przy mrozie</a>
        <a href="#rk-hp-budynki">Nowy i stary dom</a>
        <a href="#rk-hp-koszty">Zużycie prądu</a>
        <a href="#rk-hp-bledy">Najczęstsze błędy</a>
        <a href="#rk-hp-checklista">Checklista</a>
        <a href="#rk-hp-faq">FAQ</a>
        <a href="#rk-hp-zrodla">Źródła</a>
        <a href="#rk-heat-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-heat-content">
      <section class="rk-heat-section" id="rk-hp-szybka">
        <span class="rk-heat-eyebrow">Odpowiedź w 30 sekund</span>
        <h2>Czy pompa ciepła ogrzeje dom z podłogówką?</h2>
        <div class="rk-heat-answer">
          <p><strong>Tak — jeżeli moc pompy przy projektowej temperaturze zewnętrznej pokrywa obciążenie cieplne budynku, a ogrzewanie podłogowe jest w stanie oddać wymaganą moc w każdym pomieszczeniu.</strong> Nie można tego potwierdzić na podstawie samej powierzchni domu, napisu „9 kW” w nazwie urządzenia ani założenia, że każda podłogówka pracuje przy 35°C.</p>
        </div>
        <div class="rk-hp-equation">
          <div><code>P<sub>PC</sub>(A<sub>proj</sub>/W<sub>proj</sub>) + P<sub>szczyt</sub> ≥ Φ<sub>HL</sub></code><span>Źródło ciepła musi pokryć projektowe obciążenie budynku.</span></div>
          <div><code>q<sub>dostępne</sub> ≥ Q<sub>pomieszczenia</sub> / A<sub>czynna</sub></code><span>Podłoga musi oddać wymaganą moc z rzeczywiście ogrzewanej powierzchni.</span></div>
        </div>
        <p>Jeżeli oba warunki są spełnione przy dopuszczalnej temperaturze powierzchni i poprawnych przepływach, podłogówka może być <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/">jedynym systemem ogrzewania domu</a>. Jeżeli nie jest spełniony choć jeden z nich, podniesienie temperatury zasilania może nie rozwiązać problemu albo wyraźnie obniży efektywność pompy.</p>
        <div class="rk-heat-note"><p><strong>Najważniejsze rozróżnienie:</strong> pompa ciepła wytwarza ciepło, a podłoga przekazuje je do pomieszczeń. Te dwa elementy trzeba zweryfikować oddzielnie, a dopiero później ocenić je jako jeden układ.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-hp-warunki">
        <span class="rk-heat-eyebrow">Jedno pytanie, dwie odpowiedzi</span>
        <h2>Najpierw sprawdzamy moc pompy, później moc podłogi</h2>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">1</span><h3>Czy źródło ma odpowiednią moc?</h3><p>Porównujemy projektowe obciążenie cieplne z mocą grzewczą konkretnej pompy przy temperaturze zewnętrznej właściwej dla lokalizacji oraz wymaganej temperaturze wody.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">2</span><h3>Czy odbiornik przekaże tę moc?</h3><p>Sprawdzamy wymaganą moc jednostkową podłogi, temperatury zasilania i powrotu, powierzchnię czynną, konstrukcję, okładzinę oraz ograniczenia temperatury powierzchni.</p></div>
        </div>
        <p>Możliwe są cztery sytuacje. Pompa i podłoga mogą mieć zapas; pompa może być wystarczająca przy zbyt małej powierzchni czynnej; podłoga może mieć odpowiednią wydajność przy zbyt małej mocy urządzenia; albo oba elementy mogą wymagać korekty. Z tego powodu odpowiedź „pompa ciepła zawsze idealnie współpracuje z podłogówką” jest kierunkowo prawdziwa, ale projektowo niewystarczająca.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Źródło</th><th>Podłoga</th><th>Wniosek projektowy</th></tr></thead>
            <tbody>
              <tr><td data-label="Źródło">Wystarczające</td><td data-label="Podłoga">Wystarczająca</td><td data-label="Wniosek">Układ może pokryć obciążenie po potwierdzeniu hydrauliki i sterowania.</td></tr>
              <tr><td data-label="Źródło">Wystarczające</td><td data-label="Podłoga">Niewystarczająca</td><td data-label="Wniosek">Trzeba zwiększyć wydajność powierzchni, zmniejszyć straty lub dodać odbiornik.</td></tr>
              <tr><td data-label="Źródło">Niewystarczające</td><td data-label="Podłoga">Wystarczająca</td><td data-label="Wniosek">Potrzebna jest inna moc pompy albo świadomie dobrane źródło szczytowe.</td></tr>
              <tr><td data-label="Źródło">Niewystarczające</td><td data-label="Podłoga">Niewystarczająca</td><td data-label="Wniosek">Zmiany wymagają zarówno źródło, jak i instalacja odbiorcza.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-hp-ozc">
        <span class="rk-heat-eyebrow">Punkt wyjścia: zapotrzebowanie przy mrozie</span>
        <h2>OZC mówi, ile ciepła dom potrzebuje w warunkach projektowych</h2>
        <p class="rk-heat-intro">Projektowe obciążenie cieplne nie jest rocznym zużyciem energii. Jest mocą potrzebną do utrzymania zadanych temperatur wewnętrznych przy określonych warunkach zewnętrznych.</p>
        <p>Pełne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a> powinno pokazywać wynik całego domu oraz wyniki poszczególnych pomieszczeń. Zawiera straty przez przegrody, mostki cieplne, wentylację i infiltrację. Sam wskaźnik 40, 60 albo 100 W/m² nie odtwarza geometrii ani rzeczywistej izolacyjności budynku.</p>
        <p>Jeżeli inwestor chce zrozumieć składniki wyniku, powinien najpierw zobaczyć, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne w budynku</a>. Do bardzo wstępnej kontroli może wykorzystać również <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulator strat ciepła budynku</a>, ale wynik uproszczony nie zastępuje obliczeń pomieszczeń.</p>
        <h3>Temperatura projektowa zależy od lokalizacji</h3>
        <p>Moc pompy trzeba sprawdzić przy temperaturze odpowiadającej lokalizacji inwestycji, a nie zawsze przy umownych −20°C. W Polsce występują różne warunki obliczeniowe, dlatego znaczenie mają <a href="https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/">strefy klimatyczne i właściwa temperatura zewnętrzna</a>.</p>
        <div class="rk-heat-warning"><p><strong>Nie dobieramy pompy do powierzchni domu.</strong> Dwa budynki o powierzchni 150 m² mogą mieć zupełnie inne obciążenie z powodu bryły, przegród, okien, wentylacji, temperatur wewnętrznych i lokalizacji.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-hp-moc-pompy">
        <span class="rk-heat-eyebrow">Odczyt charakterystyki urządzenia</span>
        <h2>Liczy się moc pompy przy A<sub>proj</sub>/W<sub>proj</sub>, a nie liczba w nazwie modelu</h2>
        <p>Oznaczenie `A−20/W35` opisuje warunki badania: temperaturę powietrza zewnętrznego −20°C i temperaturę wody po stronie instalacji 35°C. Jeżeli projekt wymaga 40°C, trzeba odczytać moc oraz COP dla innego punktu. Wartości z `A7/W35` nie można bezpośrednio porównywać z obciążeniem domu podczas mrozu.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">A</span><h3>Temperatura dolnego źródła</h3><p>Dla pompy powietrze–woda wraz ze spadkiem temperatury powietrza zmieniają się moc, COP i warunki odszraniania.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">W</span><h3>Temperatura wody</h3><p>Wyższa wymagana temperatura skraplania zwykle pogarsza efektywność i może zmniejszać dostępną moc urządzenia.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">P</span><h3>Rzeczywista moc grzewcza</h3><p>Porównujemy ją z OZC przy tym samym punkcie pracy, uwzględniając sposób pracy grzałki lub drugiego źródła.</p></div>
        </div>
        <p><a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">Niska temperatura zasilania pompy ciepła</a> jest korzystna, ale nie może być celem oderwanym od wymaganej mocy podłogi. Projekt nie powinien obiecywać 35°C, zanim nie sprawdzi odbiorników.</p>
        <h3>Punkt biwalentny i źródło szczytowe</h3>
        <p>Jeżeli moc samej pompy spada poniżej obciążenia budynku przy określonej temperaturze, pojawia się punkt biwalentny. Brakująca moc może zostać pokryta grzałką lub innym źródłem, ale powinno to wynikać ze świadomej strategii, a nie z przypadkowego niedowymiarowania.</p>
      </section>

      <section class="rk-heat-section" id="rk-hp-moc-podlogi">
        <span class="rk-heat-eyebrow">Druga połowa równania</span>
        <h2>Czy podłoga odda wymaganą moc bez przegrzewania powierzchni?</h2>
        <p class="rk-heat-intro">Pomieszczenie o stracie 1200 W i powierzchni czynnej 20 m² wymaga średnio 60 W/m². Jeżeli rury można ułożyć tylko na 12 m², wymagana moc rośnie do 100 W/m². Właśnie dlatego całkowita powierzchnia pokoju nie wystarcza do oceny.</p>
        <div class="rk-heat-formula"><strong>q<sub>wym</sub> = Q<sub>pomieszczenia</sub> / A<sub>czynna</sub></strong><span>moc pomieszczenia [W] podzielona przez rzeczywiście ogrzewaną powierzchnię [m²]</span></div>
        <p>Na wydajność wpływają temperatura wody, konstrukcja systemu, grubość warstw, rozstaw rur oraz <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">rodzaj okładziny podłogowej</a>. Zamiast wybierać z samej nazwy „panele” albo „drewno”, należy posługiwać się deklarowanym <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">oporem cieplnym R całego wykończenia</a>.</p>
        <h3>Powierzchnia czynna jest ważniejsza niż metraż z rzutu</h3>
        <p>Zabudowa kuchenna, stałe szafy, brodzik, wanna oraz fragmenty wyłączone z układania rur zmniejszają powierzchnię emisji. Przed projektem trzeba zatem ustalić, <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">gdzie nie układać ogrzewania podłogowego</a>. W pomieszczeniach z dużymi przeszkleniami ważny jest także lokalny rozkład obciążenia i prawidłowo zaprojektowana <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">strefa przy oknach</a>.</p>
        <div class="rk-heat-critical-note"><p><strong>Rozstaw 10 cm nie uratuje każdej podłogi.</strong> Jeżeli wymagana moc jednostkowa jest zbyt wysoka, rozwiązaniem może być ograniczenie strat, zwiększenie czynnej powierzchni, zastosowanie dodatkowego odbiornika albo zmiana konstrukcji i parametrów instalacji.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-hp-analizator">
        <span class="rk-heat-eyebrow">Narzędzie edukacyjne</span>
        <h2>Interaktywny analizator pokrycia mocy pompy ciepła i podłogówki</h2>
        <p class="rk-heat-intro">Wprowadź dane dla jednego wspólnego punktu projektowego. Narzędzie oceni osobno źródło ciepła i powierzchnię grzewczą, pokaże wymagany przepływ oraz narysuje dwa przełączane wykresy.</p>

        <div class="rk-heat-tool" id="rk-hp-tool">
          <div class="rk-heat-tool-head">
            <h3>Czy cały układ pokryje obciążenie przy mrozie?</h3>
            <p>Wartości startowe są przykładem demonstracyjnym. Moc pompy przepisz z jej danych technicznych dla właściwej temperatury powietrza i wody.</p>
          </div>
          <div class="rk-heat-tool-body">
            <div class="rk-heat-lab-group">
              <h4>1. Budynek i punkt projektowy</h4>
              <p>Podaj wynik OZC i temperaturę zewnętrzną właściwą dla lokalizacji.</p>
              <div class="rk-heat-lab-fields">
                <div class="rk-heat-field"><label for="rk-hp-load">Projektowe obciążenie domu [kW]</label><input id="rk-hp-load" type="number" min="0.5" max="80" step="0.1" value="7.0"><small>Moc potrzebna do ogrzewania, bez mylenia z rocznymi kWh.</small></div>
                <div class="rk-heat-field"><label for="rk-hp-design-out">Temperatura projektowa [°C]</label><input id="rk-hp-design-out" type="number" min="-35" max="5" step="1" value="-20"><small>Temperatura zewnętrzna użyta w OZC.</small></div>
                <div class="rk-heat-field"><label for="rk-hp-room">Temperatura wewnętrzna [°C]</label><input id="rk-hp-room" type="number" min="15" max="26" step="0.5" value="20"><small>W analizie całego domu jest wartością reprezentatywną.</small></div>
                <div class="rk-heat-field"><label for="rk-hp-active-area">Czynna powierzchnia podłogi [m²]</label><input id="rk-hp-active-area" type="number" min="5" max="1000" step="1" value="110"><small>Bez stałej zabudowy i fragmentów wyłączonych.</small></div>
              </div>
            </div>

            <div class="rk-heat-lab-group">
              <h4>2. Dane pompy ciepła</h4>
              <p>Nie wpisuj mocy z nazwy modelu. Potrzebne są dwa jawne punkty charakterystyki przy tej samej temperaturze wody.</p>
              <div class="rk-heat-lab-fields">
                <div class="rk-heat-field"><label for="rk-hp-cap-design">Moc przy temperaturze projektowej [kW]</label><input id="rk-hp-cap-design" type="number" min="0" max="100" step="0.1" value="6.8"><small>Przykład: moc przy A−20/W35.</small></div>
                <div class="rk-heat-field"><label for="rk-hp-cap-seven">Moc przy A7/W<sub>proj</sub> [kW]</label><input id="rk-hp-cap-seven" type="number" min="0" max="100" step="0.1" value="9.0"><small>Drugi punkt służy wyłącznie do orientacyjnego wykresu.</small></div>
                <div class="rk-heat-field"><label for="rk-hp-backup">Dostępna moc szczytowa [kW]</label><input id="rk-hp-backup" type="number" min="0" max="100" step="0.1" value="3.0"><small>Grzałka lub drugie źródło, jeżeli przewidziano je w strategii.</small></div>
                <div class="rk-heat-field"><label for="rk-hp-min-output">Minimalna moc modulowana [kW]</label><input id="rk-hp-min-output" type="number" min="0" max="50" step="0.1" value="2.0"><small>Służy do wstępnego ostrzeżenia o ryzyku taktowania.</small></div>
              </div>
            </div>

            <div class="rk-heat-lab-group">
              <h4>3. Parametry podłogi</h4>
              <p>Model porównuje wymaganą moc jednostkową z orientacyjną charakterystyką referencyjnej podłogi.</p>
              <div class="rk-heat-lab-fields">
                <div class="rk-heat-field"><label for="rk-hp-supply">Temperatura zasilania [°C]</label><input id="rk-hp-supply" type="number" min="22" max="55" step="0.5" value="35"></div>
                <div class="rk-heat-field"><label for="rk-hp-return">Temperatura powrotu [°C]</label><input id="rk-hp-return" type="number" min="18" max="50" step="0.5" value="30"></div>
                <div class="rk-heat-field"><label for="rk-hp-spacing">Rozstaw rur</label><select id="rk-hp-spacing"><option value="10">10 cm</option><option value="15" selected="">15 cm</option><option value="20">20 cm</option></select></div>
                <div class="rk-heat-field"><label for="rk-hp-cover-r">Opór okładziny R [m²K/W]</label><input id="rk-hp-cover-r" type="number" min="0" max="0.25" step="0.01" value="0.05"></div>
                <div class="rk-heat-field"><label for="rk-hp-construction">Konstrukcja referencyjna</label><select id="rk-hp-construction"><option value="wet" selected="">System mokry z jastrychem</option><option value="dry">System suchy</option></select><small>To wybór modelu edukacyjnego, nie kompletna definicja systemu.</small></div>
                <div class="rk-heat-field"><label for="rk-hp-surface-limit">Limit temperatury powierzchni [°C]</label><input id="rk-hp-surface-limit" type="number" min="24" max="35" step="0.5" value="29"><small>Sprawdź także ograniczenie producenta okładziny.</small></div>
              </div>
              <button class="rk-heat-tool-button" id="rk-hp-calculate" type="button">Przelicz punkt projektowy</button>
            </div>

            <div class="rk-heat-lab-group" aria-live="polite">
              <div class="rk-heat-result-head">
                <div><h4>4. Wynik wspólny i wyniki cząstkowe</h4><p>Najpierw zobacz źródło i odbiornik osobno. Dopiero ich wspólny wynik odpowiada na pytanie z tytułu.</p></div>
                <span class="rk-heat-result-badge" id="rk-hp-badge">Analiza gotowa</span>
              </div>
              <div class="rk-heat-result-strip">
                <div class="rk-heat-result-tile"><span>Obciążenie domu</span><strong id="rk-hp-out-load">—</strong></div>
                <div class="rk-heat-result-tile"><span>Moc pompy przy mrozie</span><strong id="rk-hp-out-capacity">—</strong></div>
                <div class="rk-heat-result-tile"><span>Pokrycie przez pompę</span><strong id="rk-hp-out-source-cover">—</strong></div>
                <div class="rk-heat-result-tile"><span>Wymagane z podłogi</span><strong id="rk-hp-out-qreq">—</strong></div>
                <div class="rk-heat-result-tile"><span>Dostępne z podłogi</span><strong id="rk-hp-out-qfloor">—</strong></div>
                <div class="rk-heat-result-tile"><span>Moc czynnej podłogi</span><strong id="rk-hp-out-floor-kw">—</strong></div>
                <div class="rk-heat-result-tile"><span>Przepływ dla ΔT</span><strong id="rk-hp-out-flow">—</strong></div>
                <div class="rk-heat-result-tile"><span>Temperatura powierzchni</span><strong id="rk-hp-out-surface">—</strong></div>
              </div>

              <div class="rk-hp-status-grid">
                <div class="rk-hp-status-card">
                  <h4>Źródło ciepła</h4>
                  <div class="rk-hp-meter"><span id="rk-hp-source-meter"></span></div>
                  <div class="rk-hp-coverage"><strong id="rk-hp-source-title">—</strong><span id="rk-hp-source-detail">—</span></div>
                  <p id="rk-hp-source-copy">—</p>
                </div>
                <div class="rk-hp-status-card">
                  <h4>Powierzchnia grzewcza</h4>
                  <div class="rk-hp-meter is-floor"><span id="rk-hp-floor-meter"></span></div>
                  <div class="rk-hp-coverage"><strong id="rk-hp-floor-title">—</strong><span id="rk-hp-floor-detail">—</span></div>
                  <p id="rk-hp-floor-copy">—</p>
                </div>
              </div>

              <div class="rk-heat-chart-card">
                <div class="rk-heat-chart-head">
                  <div><h4 id="rk-hp-chart-heading">Wykres punktu projektowego</h4><p id="rk-hp-chart-description">Przełącz widok źródła i powierzchni grzewczej.</p></div>
                  <div class="rk-hp-chart-tabs" role="group" aria-label="Wybór wykresu">
                    <button class="rk-hp-chart-tab" id="rk-hp-chart-source" type="button" aria-pressed="true">Źródło i temperatura zewnętrzna</button>
                    <button class="rk-hp-chart-tab" id="rk-hp-chart-floor" type="button" aria-pressed="false">Podłoga i temperatura wody</button>
                  </div>
                </div>
                <div class="rk-heat-chart-legend" id="rk-hp-chart-legend" aria-hidden="true">
                  <span class="rk-heat-chart-key">obciążenie domu</span>
                  <span class="rk-heat-chart-key is-b">moc pompy</span>
                  <span class="rk-heat-chart-key is-demand">punkt projektowy</span>
                </div>
                <div class="rk-heat-chart-wrap"><canvas id="rk-hp-chart" width="1000" height="420" role="img" aria-label="Dynamiczny wykres obciążenia budynku i mocy pompy ciepła"></canvas></div>
                <p class="rk-heat-chart-summary" id="rk-hp-chart-summary">—</p>
              </div>

              <div class="rk-hp-result-message" id="rk-hp-result-message">—</div>
              <div class="rk-heat-diagnostics" id="rk-hp-diagnostics"></div>
              <div class="rk-hp-method-note"><strong>Zakres modelu:</strong> charakterystyka pompy jest interpolowana wyłącznie pomiędzy dwoma punktami wpisanymi przez użytkownika. Model podłogi służy do porównania wariantów i nie odtwarza kompletnej procedury PN-EN 1264 ani ISO 11855. Wynik nie jest doborem urządzenia ani projektem wykonawczym.</div>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-heat-sales-cta" aria-label="Projekt podłogówki z pompą ciepła">
        <h3>Wynik analizatora to dopiero pierwszy filtr</h3>
        <div class="rk-hp-cta-limits"><strong>Analizator porównuje wpisaną moc pompy z obciążeniem budynku i sprawdza orientacyjną wydajność powierzchni grzewczej.</strong> Nie zna jednak rzeczywistego podziału strat na pomieszczenia, stref bez rur, dużych przeszkleń, długości pętli, spadków ciśnienia ani zachowania konkretnej pompy podczas odszraniania.</div>
        <p>Jeżeli chcesz sprawdzić cały układ na rzucie budynku oraz dobrać rozstawy, przepływy i parametry pracy, potrzebna jest dokumentacja uwzględniająca każdy obwód.</p>
        <a class="rk-heat-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź projekt podłogówki z pompą ciepła</a>
      </aside>

      <section class="rk-heat-section" id="rk-hp-temperatura">
        <span class="rk-heat-eyebrow">Nie jedna magiczna liczba</span>
        <h2>Temperatura zasilania, powrotu i krzywa grzewcza</h2>
        <p class="rk-heat-intro">Wartość 35°C jest dobrym punktem odniesienia dla wielu nowych domów, ale nie jest automatycznym ustawieniem dla każdej instalacji. Projekt powinien określić temperaturę potrzebną w warunkach obliczeniowych, a automatyka pogodowa ma ją obniżać, gdy na zewnątrz robi się cieplej.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">Tz</span><h3>Zasilanie</h3><p>Temperatura wody wypływającej do pętli. Jej podniesienie zwiększa potencjał emisji, lecz zwykle pogarsza warunki pracy pompy.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">Tp</span><h3>Powrót</h3><p>Temperatura wody wracającej z instalacji. Wraz z zasilaniem określa średnią temperaturę medium i różnicę ΔT.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">Tm</span><h3>Średnia woda</h3><p>W uproszczeniu `(Tz + Tp) / 2`. To jej relacja do temperatury pomieszczenia pomaga opisać zdolność podłogi do emisji.</p></div>
        </div>
        <p>Nie istnieje jedna <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalna temperatura zasilania podłogówki</a> wynikająca wyłącznie z nazwy systemu. Ograniczenia mogą pochodzić z projektu, konstrukcji jastrychu, temperatury powierzchni i instrukcji okładziny. Osobno trzeba określić <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">optymalną temperaturę pracy podłogi</a> oraz nastawę źródła.</p>
        <h3>Dlaczego sterowanie pogodowe ma znaczenie?</h3>
        <p>Przy temperaturze zewnętrznej +7°C budynek potrzebuje znacznie mniej mocy niż przy −20°C. Utrzymywanie przez cały sezon maksymalnego parametru projektowego jest niepotrzebne. Prawidłowo ustawiona <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza podłogówki</a> dopasowuje temperaturę wody do zmieniającego się obciążenia.</p>
        <div class="rk-heat-note"><p><strong>Najniższa temperatura nie zawsze jest najlepsza.</strong> Musi być wystarczająca do pokrycia strat w najtrudniejszym pomieszczeniu. Celem jest najniższy parametr, który zapewnia wymaganą moc i komfort — nie najniższa liczba za wszelką cenę.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-hp-rozstaw">
        <span class="rk-heat-eyebrow">Parametry jednej charakterystyki</span>
        <h2>Rozstaw rur, powierzchnia czynna i opór okładziny trzeba oceniać razem</h2>
        <p>Pompa ciepła nie narzuca automatycznie rozstawu 10 cm. Właściwy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstaw rur przy pompie ciepła</a> wynika z wymaganej mocy jednostkowej, temperatur wody, konstrukcji podłogi, oporu wykończenia i lokalnego układu strat.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Zmiana</th><th>Co może poprawić?</th><th>Czego nie rozwiązuje samodzielnie?</th></tr></thead>
            <tbody>
              <tr><td data-label="Zmiana">Zmniejszenie rozstawu</td><td data-label="Może poprawić">Równomierność temperatury i wydajność przy tym samym parametrze wody.</td><td data-label="Nie rozwiązuje">Za małej powierzchni czynnej, złej okładziny ani braku mocy pompy.</td></tr>
              <tr><td data-label="Zmiana">Obniżenie oporu okładziny</td><td data-label="Może poprawić">Przekazywanie ciepła z konstrukcji do pomieszczenia.</td><td data-label="Nie rozwiązuje">Niedowymiarowanego źródła i nieprawidłowej hydrauliki.</td></tr>
              <tr><td data-label="Zmiana">Podniesienie temperatury wody</td><td data-label="Może poprawić">Dostępną moc powierzchni grzewczej.</td><td data-label="Nie rozwiązuje">Ograniczenia temperatury powierzchni i może pogorszyć efektywność pompy.</td></tr>
              <tr><td data-label="Zmiana">Zwiększenie powierzchni czynnej</td><td data-label="Może poprawić">Pokrycie obciążenia bez nadmiernej mocy jednostkowej.</td><td data-label="Nie rozwiązuje">Braku dostępnej przestrzeni pod stałą zabudową.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Porównanie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu rur 10 i 15 cm</a> ma sens wyłącznie przy identycznych temperaturach, średnicy rury, warstwach podłogi, okładzinie i powierzchni czynnej. Zestawianie 10 cm przy 35°C z 15 cm przy 45°C nie pokazuje wpływu samego rozstawu.</p>
        <h3>Łazienka i salon z dużym przeszkleniem</h3>
        <p>Łazienka może wymagać wyższej temperatury wewnętrznej, a jednocześnie mieć małą powierzchnię dostępną pod rury. Salon może mieć dużą powierzchnię, lecz straty skoncentrowane przy przeszkleniach. Dlatego jedna średnia wartość W/m² dla całego domu nie wystarcza do doboru rozstawów.</p>
      </section>

      <section class="rk-heat-section" id="rk-hp-hydraulika">
        <span class="rk-heat-eyebrow">Moc musi zostać przeniesiona przez wodę</span>
        <h2>Przepływ, długość pętli i opory hydrauliczne</h2>
        <p class="rk-heat-intro">Nawet poprawna moc źródła i wydajność powierzchni nie pomogą, jeżeli przez pętle nie przepłynie wymagana ilość wody. Przepływy wynikają z obciążeń oraz przyjętej różnicy temperatur zasilania i powrotu.</p>
        <div class="rk-heat-formula"><strong>V̇ ≈ Q / (1,163 · ΔT)</strong><span>dla wody: przepływ [m³/h], moc [kW], różnica temperatur [K]</span></div>
        <p>Rozmieszczenie obwodów powinno być poprzedzone <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">planowaniem pętli grzewczych</a>. Długość nie jest wybierana wyłącznie na podstawie powierzchni — dochodzą dobiegi od rozdzielacza, geometria pomieszczenia i przyjęty rozstaw.</p>
        <h3>Czy 100 m rury zawsze jest bezpieczne?</h3>
        <p>Nie ma jednej granicy działającej niezależnie od przepływu i średnicy wewnętrznej. Poradnik o <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli podłogówki</a> pokazuje, dlaczego trzeba sprawdzić spadek ciśnienia konkretnego obwodu, a nie tylko liczbę metrów.</p>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">Q</span><h3>Przepływ projektowy</h3><p>Każdy obwód otrzymuje przepływ odpowiadający mocy pomieszczenia i przyjętej ΔT. Najdłuższa pętla nie musi mieć największego przepływu.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">Δp</span><h3>Strata ciśnienia</h3><p>Wynika z przepływu, średnicy, długości, medium, kształtek, rozdzielacza oraz pozostałej armatury.</p></div>
        </div>
        <p>Cała instalacja wymaga sprawdzenia punktu pracy i właściwego <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">doboru pompy obiegowej</a>. Po uruchomieniu przepływy ustawia się na rozdzielaczu; osobne opracowanie wyjaśnia, jak działa <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametr i regulacja pętli</a>.</p>
        <div class="rk-heat-warning"><p><strong>Wbudowana pompa obiegowa nie „staje w miejscu” tylko dlatego, że pętla ma określoną długość.</strong> Jeżeli dostępna wysokość podnoszenia jest zbyt mała dla wymaganych przepływów, rzeczywisty punkt pracy przesuwa się i instalacja może nie osiągnąć założonej mocy.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-hp-bufor">
        <span class="rk-heat-eyebrow">Stabilna praca sprężarki</span>
        <h2>Bufor, minimalny przepływ i taktowanie pompy ciepła</h2>
        <p>Bufor nie jest automatycznie potrzebny w każdym domu i nie powinien być dobierany jedną uniwersalną liczbą litrów na kilowat. Trzeba sprawdzić minimalną objętość wody, wymagany przepływ, sposób odszraniania, liczbę zamykanych stref, pojemność instalacji oraz zalecenia techniczne konkretnego urządzenia. Szerzej omawia to poradnik o <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">buforze ciepła w instalacji podłogowej</a>.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">V</span><h3>Minimalny przepływ</h3><p>Pompa musi mieć zapewnioną wymaganą ilość wody również wtedy, gdy część stref zostanie zamknięta.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">Pmin</span><h3>Minimalna modulacja</h3><p>Jeżeli bieżące obciążenie spada poniżej minimalnej mocy urządzenia, rośnie ryzyko krótkich cykli.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">C</span><h3>Pojemność cieplna</h3><p>Woda, jastrych i elementy instalacji magazynują energię, ale nie zastępują prawidłowej regulacji.</p></div>
        </div>
        <p>Ograniczanie taktowania zaczyna się od właściwego doboru mocy, szerokiej modulacji i prawidłowej <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">regulacji pogodowej</a>. W domach podzielonych na wiele stref trzeba także rozumieć, jak <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">sterowniki ogrzewania podłogowego</a> wpływają na dostępny przepływ i minimalne obciążenie źródła.</p>
        <div class="rk-heat-note"><p><strong>Gęstszy rozstaw sam nie zapobiega taktowaniu.</strong> Może pozwolić pracować z niższą temperaturą wody, ale częstotliwość uruchomień zależy także od minimalnej mocy sprężarki, pojemności układu, histerezy, sterowania i liczby otwartych obiegów.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-hp-mroz">
        <span class="rk-heat-eyebrow">Najtrudniejszy punkt sezonu</span>
        <h2>Czy pompa ciepła ogrzeje dom przy −20°C?</h2>
        <p class="rk-heat-intro">Może ogrzać — pod warunkiem że konkretne urządzenie ma wystarczającą moc przy tej temperaturze, a instalacja odbiorcza pokrywa obciążenie przy wymaganej temperaturze wody.</p>
        <div class="rk-heat-stage-grid">
          <div class="rk-heat-stage-card"><span class="rk-heat-stage-number">1</span><h3>Sprawdź temperaturę projektową</h3><p>Nie każda lokalizacja wymaga obliczenia przy −20°C. Punkt musi odpowiadać OZC.</p></div>
          <div class="rk-heat-stage-card"><span class="rk-heat-stage-number">2</span><h3>Odczytaj moc przy właściwym W</h3><p>Moc przy W35 nie potwierdza wyniku dla instalacji wymagającej W40 albo W45.</p></div>
          <div class="rk-heat-stage-card"><span class="rk-heat-stage-number">3</span><h3>Uwzględnij odszranianie</h3><p>Dla pompy powietrznej wilgotność, szronienie i cykle defrost wpływają na pracę w zimowych warunkach.</p></div>
          <div class="rk-heat-stage-card"><span class="rk-heat-stage-number">4</span><h3>Określ rolę grzałki</h3><p>Grzałka może być elementem świadomego układu biwalentnego, ale jej udział wpływa na pobór energii.</p></div>
        </div>
        <h3>Układ monowalentny czy biwalentny?</h3>
        <p>W układzie monowalentnym pompa samodzielnie pokrywa projektowe obciążenie. W układzie biwalentnym część szczytowej mocy przejmuje inne źródło. Żaden z wariantów nie jest z definicji błędny; ważne, aby punkt przełączenia, moc szczytowa i przewidywany udział energii pomocniczej były jawne.</p>
        <div class="rk-heat-critical-note"><p><strong>Nie myl mocy z efektywnością.</strong> Urządzenie może dostarczyć wymaganą moc dzięki grzałce, ale nie oznacza to, że cała energia cieplna została wytworzona z wysokim COP sprężarki.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-hp-budynki">
        <span class="rk-heat-eyebrow">Różne budynki, ta sama metoda oceny</span>
        <h2>Nowy dom, stary dom i instalacja mieszana z grzejnikami</h2>
        <p>Nowy, dobrze izolowany budynek zwykle ma niższą moc jednostkową, dlatego łatwiej pokryć jego obciążenie przy niskiej temperaturze wody. Nie oznacza to jednak, że w każdym nowym domu można bez obliczeń ułożyć rury co 15 cm i ustawić 35°C.</p>
        <h3>Pompa ciepła w modernizowanym budynku</h3>
        <p>Stary dom nie musi być automatycznie wykluczony. Trzeba policzyć obciążenie po planowanych pracach, sprawdzić powierzchnie grzewcze, dostępną moc przy mrozie i możliwości hydrauliczne. Artykuł o <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">podłogówce w remontowanym budynku</a> pokazuje dodatkowe ograniczenia: wysokość warstw, nośność stropu i ingerencję w istniejące posadzki.</p>
        <h3>Podłogówka na dole, grzejniki na górze</h3>
        <p>Układ mieszany może działać, ale odbiorniki powinny zostać dobrane do możliwie zbliżonych parametrów. Jeżeli grzejniki wymagają 55°C, a podłoga 35°C, instalacja potrzebuje świadomej architektury hydraulicznej i regulacji. Więcej zależności opisuje poradnik <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">pompa ciepła, podłogówka i grzejniki</a>.</p>
        <div class="rk-heat-success"><p><strong>Termomodernizacja nie jest formalnym warunkiem działania pompy.</strong> Może jednak obniżyć obciążenie, potrzebną moc urządzenia i temperaturę odbiorników, a przez to poprawić koszty oraz komfort pracy systemu.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-hp-koszty">
        <span class="rk-heat-eyebrow">Bez obiecywania stałego COP</span>
        <h2>Ile prądu zużyje pompa ciepła z podłogówką?</h2>
        <p class="rk-heat-intro">Nie da się tego rzetelnie obliczyć z samej powierzchni domu, mocy pompy ani temperatury 35°C. Potrzebne są roczne potrzeby cieplne, sezonowa efektywność całego systemu oraz energia pomocnicza.</p>
        <div class="rk-heat-formula"><strong>E<sub>el</sub> ≈ Q<sub>ogrzewanie</sub> / SCOP + E<sub>pomocnicza</sub></strong><span>uproszczona relacja energii cieplnej, sezonowej efektywności i energii pomp, grzałek oraz automatyki</span></div>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Parametr</th><th>Dlaczego zmienia rachunek?</th><th>Czego nie wolno zakładać?</th></tr></thead>
            <tbody>
              <tr><td data-label="Parametr">Roczne potrzeby cieplne</td><td data-label="Wpływ">Określają energię potrzebną na ogrzewanie w całym sezonie.</td><td data-label="Nie zakładaj">Że są równe projektowej mocy pomnożonej przez cały sezon.</td></tr>
              <tr><td data-label="Parametr">SCOP</td><td data-label="Wpływ">Łączy zmienne warunki temperatury i obciążenia w sezonie.</td><td data-label="Nie zakładaj">Jednej wartości na podstawie samej temperatury zasilania.</td></tr>
              <tr><td data-label="Parametr">Grzałka</td><td data-label="Wpływ">Pokrywa deficyt mocy lub wspiera inne funkcje urządzenia.</td><td data-label="Nie zakładaj">Że każda kWh ciepła z grzałki ma COP sprężarki.</td></tr>
              <tr><td data-label="Parametr">CWU i pompy obiegowe</td><td data-label="Wpływ">Są dodatkowymi składnikami zużycia energii.</td><td data-label="Nie zakładaj">Że rachunek za cały system dotyczy tylko ogrzewania pomieszczeń.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Niższy parametr wody zwykle sprzyja wyższej efektywności, ale źle ustawiona krzywa, nadmierne zamykanie stref, błędne przepływy albo duży udział grzałki mogą zepsuć wynik nawet w domu z podłogówką.</p>
      </section>

      <section class="rk-heat-section" id="rk-hp-bledy">
        <span class="rk-heat-eyebrow">Pułapki, które zniekształcają wynik</span>
        <h2>Najczęstsze błędy przy łączeniu pompy ciepła z podłogówką</h2>
        <div class="rk-heat-question-grid">
          <div class="rk-heat-question"><span>01</span><h3>Dobór mocy do metrażu</h3><p>Powierzchnia nie zastępuje obliczeń przegród, wentylacji, temperatur i lokalizacji.</p></div>
          <div class="rk-heat-question"><span>02</span><h3>Porównanie z mocą przy A7/W35</h3><p>Punkt dodatniej temperatury nie odpowiada obciążeniu domu podczas mrozu.</p></div>
          <div class="rk-heat-question"><span>03</span><h3>Jedna wartość W/m² dla całego domu</h3><p>Ukrywa łazienki, narożne pokoje, duże przeszklenia i małą powierzchnię czynną.</p></div>
          <div class="rk-heat-question"><span>04</span><h3>Stały rozstaw w każdym pomieszczeniu</h3><p>Nie uwzględnia lokalnego obciążenia, okładziny ani geometrii pola grzewczego.</p></div>
          <div class="rk-heat-question"><span>05</span><h3>Stałe COP przypisane do temperatury</h3><p>Efektywność zależy od urządzenia, temperatur, obciążenia, defrostu i pracy pomocniczej.</p></div>
          <div class="rk-heat-question"><span>06</span><h3>Ignorowanie hydrauliki</h3><p>Moc nie dotrze do pomieszczeń bez właściwych przepływów i dostępnej wysokości podnoszenia.</p></div>
          <div class="rk-heat-question"><span>07</span><h3>Bufor dobierany „na kilowat”</h3><p>Objętość i układ połączeń muszą wynikać z funkcji bufora oraz wymagań systemu.</p></div>
          <div class="rk-heat-question"><span>08</span><h3>Zamykanie większości pętli</h3><p>Może ograniczyć przepływ i obciążenie poniżej warunków stabilnej pracy sprężarki.</p></div>
          <div class="rk-heat-question"><span>09</span><h3>Brak planu pracy grzałki</h3><p>Urządzenie dogrzeje dom, ale udział bezpośredniego ogrzewania elektrycznego może zaskoczyć.</p></div>
          <div class="rk-heat-question"><span>10</span><h3>Obietnica 35°C przed obliczeniami</h3><p>Temperatura projektowa jest wynikiem charakterystyki odbiorników, a nie hasłem sprzedażowym.</p></div>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-hp-checklista">
        <span class="rk-heat-eyebrow">Dane przed zakupem urządzenia</span>
        <h2>Checklista: co sprawdzić, zanim uznasz, że układ ogrzeje dom?</h2>
        <ul class="rk-heat-checklist">
          <li>Projektowe obciążenie cieplne całego budynku w kW.</li>
          <li>Obciążenia poszczególnych pomieszczeń w W.</li>
          <li>Temperaturę zewnętrzną zastosowaną w obliczeniach.</li>
          <li>Moc pompy przy A<sub>proj</sub>/W<sub>proj</sub>, a nie tylko przy A7/W35.</li>
          <li>Przewidzianą moc i sposób sterowania źródłem szczytowym.</li>
          <li>Czynną powierzchnię grzewczą w każdym pomieszczeniu.</li>
          <li>Wymaganą moc jednostkową podłogi w W/m².</li>
          <li>Temperaturę zasilania i powrotu w punkcie projektowym.</li>
          <li>Opór cieplny kompletnego wykończenia podłogi.</li>
          <li>Dopuszczalną temperaturę powierzchni i ograniczenia okładziny.</li>
          <li>Rozstawy rur, średnice, długości pętli oraz dobiegi.</li>
          <li>Przepływy każdej pętli i straty ciśnienia obwodów krytycznych.</li>
          <li>Dostępną wysokość podnoszenia pompy obiegowej.</li>
          <li>Minimalny przepływ i minimalną objętość wymaganą przez źródło.</li>
          <li>Minimalną moc modulowaną sprężarki.</li>
          <li>Sposób regulacji pogodowej i zachowanie zamykanych stref.</li>
        </ul>
        <div class="rk-heat-success"><p><strong>Jeżeli dokumentacja odpowiada na wszystkie te punkty, można ocenić układ technicznie.</strong> Jeżeli zawiera jedynie powierzchnię domu, moc nominalną pompy i plan rur co 15 cm, nadal brakuje danych do odpowiedzialnej odpowiedzi.</p></div>
      </section>
      <section class="rk-heat-section" id="rk-hp-faq">
        <span class="rk-heat-eyebrow">Pytania inwestorów</span>
        <h2>FAQ: pompa ciepła i ogrzewanie podłogowe</h2>
        <p class="rk-heat-intro">Najkrótsze odpowiedzi zachowują najważniejsze warunki projektowe — bez obiecywania wyniku na podstawie samej nazwy systemu.</p>
        <div class="rk-heat-faq">
          <details><summary>Czy pompa ciepła ogrzeje dom z podłogówką przy −20°C?</summary><div class="rk-heat-faq-answer"><p>Tak, jeżeli moc grzewcza konkretnego urządzenia przy −20°C i wymaganej temperaturze wody, powiększona o świadomie przewidziane źródło szczytowe, pokrywa projektowe obciążenie domu. Jednocześnie podłoga musi oddać wymaganą moc w każdym pomieszczeniu.</p></div></details>
          <details><summary>Czy każda podłogówka z pompą ciepła powinna pracować przy 35°C?</summary><div class="rk-heat-faq-answer"><p>Nie. Wartość 35°C jest częstym punktem odniesienia, ale właściwa temperatura wynika z obciążenia pomieszczeń, powierzchni czynnej, rozstawu, konstrukcji podłogi, oporu okładziny oraz temperatury wewnętrznej.</p></div></details>
          <details><summary>Czy moc 9 kW w nazwie pompy oznacza 9 kW podczas mrozu?</summary><div class="rk-heat-faq-answer"><p>Nie musi. Moc zmienia się wraz z temperaturą dolnego źródła i temperaturą wody. Należy sprawdzić tabelę lub krzywą mocy dla punktu odpowiadającego projektowi, na przykład A−20/W35 albo A−20/W40.</p></div></details>
          <details><summary>Czy pompa może mieć odpowiednią moc, a dom nadal być niedogrzany?</summary><div class="rk-heat-faq-answer"><p>Tak. Przyczyną może być niewystarczająca moc podłogi w konkretnym pomieszczeniu, mała powierzchnia czynna, wysoki opór okładziny, nieprawidłowe przepływy, zapowietrzenie, błędna krzywa grzewcza lub źle wyregulowane pętle.</p></div></details>
          <details><summary>Czy pompa ciepła z podłogówką nadaje się do starego domu?</summary><div class="rk-heat-faq-answer"><p>Może się nadawać. Trzeba jednak policzyć obciążenie budynku po planowanej modernizacji, sprawdzić dostępną powierzchnię grzewczą, konstrukcję stropów, wymaganą temperaturę wody i moc pompy w warunkach zimowych.</p></div></details>
          <details><summary>Czy można połączyć pompę ciepła, podłogówkę i grzejniki?</summary><div class="rk-heat-faq-answer"><p>Tak, ale grzejniki powinny pokrywać obciążenie przy możliwie niskiej temperaturze. Duża różnica wymaganych parametrów między obiegami komplikuje hydraulikę, sterowanie i może pogarszać sezonową efektywność źródła.</p></div></details>
          <details><summary>Czy grzałka w pompie ciepła oznacza błąd projektu?</summary><div class="rk-heat-faq-answer"><p>Nie zawsze. Może być świadomie dobranym źródłem szczytowym dla najzimniejszych godzin roku lub zabezpieczeniem. Błędem jest brak informacji o punkcie jej uruchomienia, dostępnej mocy i przewidywanym udziale w zużyciu energii.</p></div></details>
          <details><summary>Czy pompa ciepła z podłogówką zawsze potrzebuje bufora?</summary><div class="rk-heat-faq-answer"><p>Nie. Potrzeba bufora zależy od minimalnego przepływu i objętości, sposobu odszraniania, pojemności instalacji, modulacji, liczby zamykanych stref oraz architektury hydraulicznej. Funkcja bufora musi być określona przed jego doborem.</p></div></details>
          <details><summary>Czy można dobrać pompę ciepła na podstawie wskaźnika W/m²?</summary><div class="rk-heat-faq-answer"><p>Wskaźnik może służyć do bardzo wstępnej kontroli, ale nie zastępuje OZC. Nie uwzględnia dokładnej geometrii, przegród, mostków, wentylacji, temperatur pomieszczeń ani lokalnych różnic obciążenia.</p></div></details>
          <details><summary>Czy wynik analizatora jest doborem pompy ciepła?</summary><div class="rk-heat-faq-answer"><p>Nie. Narzędzie porządkuje zależności i porównuje wpisane dane w uproszczonym modelu. Nie weryfikuje kompletnej charakterystyki urządzenia, odszraniania, instalacji elektrycznej, akustyki, CWU, hydrauliki wszystkich obwodów ani zgodności z dokumentacją konkretnego modelu.</p></div></details>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-hp-zrodla">
        <span class="rk-heat-eyebrow">Dokumenty i źródła instytucjonalne</span>
        <h2>Źródła wykorzystane do aktualizacji technicznej</h2>
        <p>Odnośniki zewnętrzne prowadzą wyłącznie do instytucji publicznych i organizacji normalizacyjnej. Dane konkretnej pompy należy dodatkowo sprawdzić w jej aktualnej dokumentacji, lecz artykuł nie kieruje do producentów ani sklepów.</p>
        <div class="rk-heat-sources">
          <div class="rk-heat-source"><strong><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wyznaczanie projektowej mocy powierzchni grzewczych i chłodzących</a></strong><p>Zakres obejmuje zależność strumienia ciepła od temperatury medium, konstrukcji systemu, temperatury powierzchni i charakterystyk obliczeniowych.</p></div>
          <div class="rk-heat-source"><strong><a href="https://www.gov.uk/government/news/heat-pumps-explained-experts-answer-your-questions" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Heat pumps explained: experts answer your questions</a></strong><p>Rządowe omówienie pracy pomp w chłodzie, starszych budynkach oraz znaczenia strat ciepła, wielkości odbiorników i optymalizacji całego systemu.</p></div>
          <div class="rk-heat-source"><strong><a href="https://assets.publishing.service.gov.uk/media/606c39c38fa8f515b4067b08/beis-dhds-final-report__1_.pdf" target="_blank" rel="nofollow noopener noreferrer">BEIS — Heat distribution systems evidence gathering</a></strong><p>Raport dotyczący możliwości pokrycia szczytowego obciążenia przy określonych temperaturach zasilania oraz wpływu instalacji odbiorczej na pracę niskotemperaturowego źródła.</p></div>
          <div class="rk-heat-source"><strong><a href="https://czystepowietrze.gov.pl/do-pobrania/ulotki-i-broszury/broszura-pompa-ciepla-a4-drukarnia.pdf?v=03082026151111" target="_blank" rel="nofollow noopener noreferrer">Program Czyste Powietrze — broszura dotycząca pompy ciepła</a></strong><p>Materiał instytucjonalny zwracający uwagę między innymi na dobór mocy, stan energetyczny budynku i warunki techniczne inwestycji.</p></div>
        </div>
      </section>

      <section class="rk-heat-author" id="rk-heat-autor" aria-label="Autor opracowania">
        <input type="radio" name="rk-heat-author-tabs" id="rk-heat-author-about" checked="">
        <input type="radio" name="rk-heat-author-tabs" id="rk-heat-author-exp">
        <input type="radio" name="rk-heat-author-tabs" id="rk-heat-author-method">
        <header class="rk-heat-author-head">
          <div><span class="rk-heat-eyebrow">Autor i odpowiedzialność merytoryczna</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego.</p></div>
          <span class="rk-heat-author-mark">OZC • OGRZEWANIE PŁASZCZYZNOWE • HYDRAULIKA • ŹRÓDŁA NISKOTEMPERATUROWE</span>
        </header>
        <div class="rk-heat-author-layout">
          <aside class="rk-heat-author-side">
            <div class="rk-heat-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-heat-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/" style="color:#fff;text-decoration:none">Robert Kucharski</a></div>
            <div class="rk-heat-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-heat-author-social-label">Profile autora</div>
            <div class="rk-heat-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="nofollow noopener noreferrer" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.98 3.5C4.98 4.88 3.87 6 2.5 6S.02 4.88.02 3.5 1.13 1 2.5 1s2.48 1.12 2.48 2.5zM.34 8h4.32v14H.34V8zm7.02 0h4.14v1.91h.06c.58-1.1 1.99-2.26 4.1-2.26 4.38 0 5.19 2.9 5.19 6.66V22h-4.31v-6.82c0-1.63-.03-3.72-2.26-3.72-2.27 0-2.62 1.78-2.62 3.6V22H7.36V8z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer" aria-label="Facebook Projekt Ogrzewania"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.05V9.41c0-3.03 1.79-4.7 4.53-4.7 1.31 0 2.68.24 2.68.24v2.96h-1.51c-1.49 0-1.96.93-1.96 1.89v2.27h3.33l-.53 3.49h-2.8V24C19.61 23.1 24 18.1 24 12.07z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer" aria-label="Profil Projekt HVAC w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.24 2H21.9l-8 9.14L23.31 22h-7.37l-5.77-7.55L3.56 22H-.11l8.39-9.59L-.75 2h7.56l5.22 6.9L18.24 2zm-1.28 18.09h2.03L5.7 3.81H3.52l13.44 16.28z"></path></svg></a>
            </div>
          </aside>
          <div class="rk-heat-author-main">
            <blockquote class="rk-heat-author-quote"><p>„Pompa ciepła ogrzeje dom nie dlatego, że współpracuje z podłogówką, lecz dlatego, że jej moc i moc powierzchni grzewczej zostały sprawdzone w tym samym punkcie projektowym.”</p></blockquote>
            <div class="rk-heat-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-heat-author-tab" for="rk-heat-author-about">O autorze</label>
              <label class="rk-heat-author-tab" for="rk-heat-author-exp">Doświadczenie</label>
              <label class="rk-heat-author-tab" for="rk-heat-author-method">Metodyka pracy</label>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-about">
              <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia strat ciepła i analizy hydrauliczne dla budynków nowych oraz modernizowanych. W materiałach edukacyjnych łączy zagadnienia źródła ciepła, powierzchni grzewczej, przegród budynku i przepływów, aby inwestor otrzymywał odpowiedź dotyczącą całego systemu, a nie pojedynczego urządzenia.</p>
              <p>Specjalizuje się w niskotemperaturowych instalacjach wodnych, podziale obciążeń na pomieszczenia, doborze rozstawów i długości pętli oraz przygotowaniu nastaw rozdzielacza. Szczególną uwagę poświęca miejscom, w których pozornie poprawny układ traci wydajność: małej powierzchni czynnej, okładzinom o wysokim oporze, dużym przeszkleniom i źle dobranym przepływom.</p>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-exp">
              <p>Praktyka projektowa pokazuje, że najdroższe problemy nie wynikają z jednej „złej” temperatury, lecz z niespójnych założeń. Moc pompy bywa odczytywana dla innych warunków niż OZC, powierzchnia pokoju jest mylona z powierzchnią czynną, a rozstaw rur dobierany z przyzwyczajenia. Takie rozbieżności ujawniają się dopiero podczas mrozu lub po zmianie okładziny.</p>
              <p>Dlatego każda ocena zaczyna się od bilansu pomieszczeń, później przechodzi przez charakterystykę podłogi i hydraulikę pętli, a dopiero na końcu jest zestawiana z mocą źródła, punktem biwalentnym, minimalną modulacją i sposobem sterowania.</p>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-method">
              <p>Metodyka opiera się na jawnych danych: warunkach projektowych, obciążeniu cieplnym, aktywnej powierzchni, oporze wykończenia, parametrach wody, długościach i przepływach. Wynik powinien dać się prześledzić od pomieszczenia aż do źródła ciepła oraz wskazywać, które wartości są obliczone, które pochodzą z dokumentacji, a które są wyłącznie założeniem.</p>
              <p>Narzędzia na portalu są modelami edukacyjnymi. Pokazują zależności i pomagają wykrywać braki w danych, ale nie zastępują dokumentacji wykonawczej ani weryfikacji konkretnego urządzenia w warunkach danej inwestycji.</p>
            </div>
            <div class="rk-heat-mini-label">Portale autora</div>
            <div class="rk-heat-portals">
              <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
              <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a>
              <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-heat-sales-cta" aria-label="Końcowe zaproszenie do zamówienia projektu">
        <h3>Połącz OZC, moc pompy i każdą pętlę w jednym projekcie</h3>
        <p>Jeżeli masz rzut budynku i planowaną pompę ciepła, przygotujemy rozstawy rur, długości obwodów, przepływy, nastawy rozdzielacza oraz temperatury pracy wynikające z obciążeń poszczególnych pomieszczeń.</p>
        <a class="rk-heat-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </article>
</div>

<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",
      "inLanguage": "pl-PL",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "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",
      "description": "Projektant ogrzewania podłogowego, autor opracowań dotyczących obliczeń cieplnych, hydrauliki instalacji oraz współpracy ogrzewania płaszczyznowego z niskotemperaturowymi źródłami ciepła.",
      "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "projektowe obciążenie cieplne",
        "pompy ciepła",
        "hydraulika instalacji grzewczych",
        "równoważenie hydrauliczne",
        "dobór rozstawu i długości pętli"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt Ogrzewania",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Czy pompa ciepła ogrzeje dom z podłogówką?",
          "item": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#webpage",
      "url": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/",
      "name": "Czy pompa ciepła ogrzeje dom z podłogówką? Moc, OZC i temperatura zasilania",
      "description": "Techniczna analiza tego, czy pompa ciepła i ogrzewanie podłogowe pokryją obciążenie domu w punkcie projektowym.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#breadcrumb" },
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#article" },
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-07"
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#article",
      "headline": "Czy pompa ciepła ogrzeje dom z podłogówką? Moc, OZC i temperatura zasilania",
      "description": "Sprawdź, czy pompa ciepła ogrzeje dom z podłogówką przy mrozie. Porównaj OZC, moc urządzenia, temperaturę zasilania i wydajność podłogi bez zgadywania.",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#webpage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-07",
      "inLanguage": "pl-PL",
      "articleSection": [
        "Pompa ciepła",
        "Ogrzewanie podłogowe",
        "OZC",
        "Temperatura zasilania",
        "Hydraulika instalacji"
      ],
      "keywords": [
        "czy pompa ciepła ogrzeje dom z podłogówką",
        "pompa ciepła i ogrzewanie podłogowe",
        "pompa ciepła przy minus 20 stopniach",
        "moc pompy ciepła a OZC",
        "temperatura zasilania podłogówki z pompą ciepła",
        "punkt biwalentny pompy ciepła",
        "wydajność ogrzewania podłogowego W/m²"
      ],
      "about": [
        { "@type": "Thing", "name": "Pompa ciepła" },
        { "@type": "Thing", "name": "Ogrzewanie podłogowe" },
        { "@type": "Thing", "name": "Projektowe obciążenie cieplne" }
      ],
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#analizator" },
        { "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#faq" }
      ],
      "citation": [
        "https://www.iso.org/standard/74683.html",
        "https://www.gov.uk/government/news/heat-pumps-explained-experts-answer-your-questions",
        "https://assets.publishing.service.gov.uk/media/606c39c38fa8f515b4067b08/beis-dhds-final-report__1_.pdf",
        "https://czystepowietrze.gov.pl/do-pobrania/ulotki-i-broszury/broszura-pompa-ciepla-a4-drukarnia.pdf?v=03082026151111"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#analizator",
      "name": "Interaktywny analizator pokrycia mocy pompy ciepła i podłogówki",
      "url": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#rk-hp-analizator",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "featureList": [
        "porównanie OZC z mocą pompy w temperaturze projektowej",
        "kontrola pokrycia mocy przez czynną powierzchnię podłogi",
        "orientacyjne obliczenie przepływu dla przyjętej różnicy temperatur",
        "dynamiczny wykres obciążenia domu i mocy źródła",
        "dynamiczny wykres mocy podłogi względem temperatury wody",
        "diagnostyka brakujących i granicznych parametrów"
      ]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#howto",
      "name": "Jak sprawdzić, czy pompa ciepła i podłogówka ogrzeją dom?",
      "description": "Pięć etapów kontroli źródła ciepła i powierzchni grzewczej w tym samym punkcie projektowym.",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "inLanguage": "pl-PL",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Ustal OZC i temperaturę projektową",
          "text": "Wpisz projektowe obciążenie cieplne budynku oraz temperaturę zewnętrzną zastosowaną w obliczeniach."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Odczytaj moc pompy w odpowiednim punkcie",
          "text": "Sprawdź moc grzewczą konkretnego urządzenia przy temperaturze projektowej i wymaganej temperaturze wody."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Określ wydajność czynnej podłogi",
          "text": "Podaj powierzchnię czynną, temperaturę zasilania i powrotu, rozstaw rur, konstrukcję oraz opór okładziny."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Porównaj dwa ograniczenia",
          "text": "Sprawdź osobno pokrycie obciążenia przez pompę i przez powierzchnię grzewczą oraz wymagany przepływ."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Zweryfikuj wynik w projekcie",
          "text": "Rozdziel obciążenie na pomieszczenia, sprawdź każdą pętlę, hydraulikę, sterowanie i pełną dokumentację urządzenia."
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy pompa ciepła ogrzeje dom z podłogówką przy −20°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak, jeżeli moc grzewcza konkretnego urządzenia przy −20°C i wymaganej temperaturze wody, powiększona o świadomie przewidziane źródło szczytowe, pokrywa projektowe obciążenie domu. Jednocześnie podłoga musi oddać wymaganą moc w każdym pomieszczeniu." }
        },
        {
          "@type": "Question",
          "name": "Czy każda podłogówka z pompą ciepła powinna pracować przy 35°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Wartość 35°C jest częstym punktem odniesienia, ale właściwa temperatura wynika z obciążenia pomieszczeń, powierzchni czynnej, rozstawu, konstrukcji podłogi, oporu okładziny oraz temperatury wewnętrznej." }
        },
        {
          "@type": "Question",
          "name": "Czy moc 9 kW w nazwie pompy oznacza 9 kW podczas mrozu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie musi. Moc zmienia się wraz z temperaturą dolnego źródła i temperaturą wody. Należy sprawdzić tabelę lub krzywą mocy dla punktu odpowiadającego projektowi, na przykład A−20/W35 albo A−20/W40." }
        },
        {
          "@type": "Question",
          "name": "Czy pompa może mieć odpowiednią moc, a dom nadal być niedogrzany?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak. Przyczyną może być niewystarczająca moc podłogi w konkretnym pomieszczeniu, mała powierzchnia czynna, wysoki opór okładziny, nieprawidłowe przepływy, zapowietrzenie, błędna krzywa grzewcza lub źle wyregulowane pętle." }
        },
        {
          "@type": "Question",
          "name": "Czy pompa ciepła z podłogówką nadaje się do starego domu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Może się nadawać. Trzeba jednak policzyć obciążenie budynku po planowanej modernizacji, sprawdzić dostępną powierzchnię grzewczą, konstrukcję stropów, wymaganą temperaturę wody i moc pompy w warunkach zimowych." }
        },
        {
          "@type": "Question",
          "name": "Czy można połączyć pompę ciepła, podłogówkę i grzejniki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak, ale grzejniki powinny pokrywać obciążenie przy możliwie niskiej temperaturze. Duża różnica wymaganych parametrów między obiegami komplikuje hydraulikę, sterowanie i może pogarszać sezonową efektywność źródła." }
        },
        {
          "@type": "Question",
          "name": "Czy grzałka w pompie ciepła oznacza błąd projektu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie zawsze. Może być świadomie dobranym źródłem szczytowym dla najzimniejszych godzin roku lub zabezpieczeniem. Błędem jest brak informacji o punkcie jej uruchomienia, dostępnej mocy i przewidywanym udziale w zużyciu energii." }
        },
        {
          "@type": "Question",
          "name": "Czy pompa ciepła z podłogówką zawsze potrzebuje bufora?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Potrzeba bufora zależy od minimalnego przepływu i objętości, sposobu odszraniania, pojemności instalacji, modulacji, liczby zamykanych stref oraz architektury hydraulicznej. Funkcja bufora musi być określona przed jego doborem." }
        },
        {
          "@type": "Question",
          "name": "Czy można dobrać pompę ciepła na podstawie wskaźnika W/m²?",
          "acceptedAnswer": { "@type": "Answer", "text": "Wskaźnik może służyć do bardzo wstępnej kontroli, ale nie zastępuje OZC. Nie uwzględnia dokładnej geometrii, przegród, mostków, wentylacji, temperatur pomieszczeń ani lokalnych różnic obciążenia." }
        },
        {
          "@type": "Question",
          "name": "Czy wynik analizatora jest doborem pompy ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Narzędzie porządkuje zależności i porównuje wpisane dane w uproszczonym modelu. Nie weryfikuje kompletnej charakterystyki urządzenia, odszraniania, instalacji elektrycznej, akustyki, CWU, hydrauliki wszystkich obwodów ani zgodności z dokumentacją konkretnego modelu." }
        }
      ]
    }
  ]
}
</script>

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

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

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

  function byId(id) {
    return document.getElementById(id);
  }

  function numberFrom(id) {
    var field = byId(id);
    if (!field) { return NaN; }
    return Number(String(field.value).replace(",", "."));
  }

  function selectedValue(id) {
    var field = byId(id);
    if (!field) { return ""; }
    return String(field.value);
  }

  function clamp(value, minimum, maximum) {
    return Math.min(maximum, Math.max(minimum, value));
  }

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

  function setText(id, value) {
    var node = byId(id);
    if (node) { node.textContent = value; }
  }

  function setMeter(id, percent) {
    var node = byId(id);
    if (node) { node.style.width = clamp(percent, 0, 100) + "%"; }
  }

  function structuralResistance(construction, spacing) {
    var wet = { "10": 0.115, "15": 0.135, "20": 0.160 };
    var dry = { "10": 0.140, "15": 0.165, "20": 0.195 };
    if (construction === "dry") { return dry[spacing]; }
    return wet[spacing];
  }

  function floorOutputAtMean(meanWater, data) {
    var temperatureLift = meanWater - data.room;
    var outputByLayers = 0;
    if (temperatureLift > 0) {
      outputByLayers = temperatureLift / data.totalResistance;
    }
    return Math.max(0, Math.min(outputByLayers, data.surfaceOutputLimit));
  }

  function addDiagnostic(container, textValue, state) {
    var item = document.createElement("div");
    item.className = "rk-heat-diagnostic";
    if (state === "good") { item.className += " is-good"; }
    if (state === "bad") { item.className += " is-bad"; }
    item.textContent = textValue;
    container.appendChild(item);
  }

  function validate(values) {
    var problems = [];
    if (!(values.load > 0)) { problems.push("Podaj projektowe obciążenie domu większe od 0 kW."); }
    if (!(values.designOut < 5)) { problems.push("Temperatura projektowa musi być niższa niż 5°C."); }
    if (!(values.room >= 15) || !(values.room <= 26)) { problems.push("Podaj temperaturę wewnętrzną od 15 do 26°C."); }
    if (!(values.activeArea > 0)) { problems.push("Podaj czynną powierzchnię ogrzewanej podłogi."); }
    if (!(values.capDesign >= 0)) { problems.push("Podaj moc pompy w temperaturze projektowej."); }
    if (!(values.capSeven >= 0)) { problems.push("Podaj moc pompy przy A7 i tym samym parametrze wody."); }
    if (!(values.backup >= 0)) { problems.push("Moc źródła szczytowego nie może być ujemna."); }
    if (!(values.minOutput >= 0)) { problems.push("Minimalna moc modulowana nie może być ujemna."); }
    if (!(values.supply > values.returnTemp)) { problems.push("Temperatura zasilania musi być wyższa od temperatury powrotu."); }
    if (!(values.returnTemp > values.room)) { problems.push("Temperatura powrotu musi być wyższa od temperatury pomieszczenia."); }
    if (!(values.coverResistance >= 0)) { problems.push("Opór cieplny okładziny nie może być ujemny."); }
    if (!(values.surfaceLimit > values.room)) { problems.push("Limit temperatury powierzchni musi być wyższy od temperatury pomieszczenia."); }
    return problems;
  }

  function readValues() {
    return {
      load: numberFrom("rk-hp-load"),
      designOut: numberFrom("rk-hp-design-out"),
      room: numberFrom("rk-hp-room"),
      activeArea: numberFrom("rk-hp-active-area"),
      capDesign: numberFrom("rk-hp-cap-design"),
      capSeven: numberFrom("rk-hp-cap-seven"),
      backup: numberFrom("rk-hp-backup"),
      minOutput: numberFrom("rk-hp-min-output"),
      supply: numberFrom("rk-hp-supply"),
      returnTemp: numberFrom("rk-hp-return"),
      spacing: selectedValue("rk-hp-spacing"),
      coverResistance: numberFrom("rk-hp-cover-r"),
      construction: selectedValue("rk-hp-construction"),
      surfaceLimit: numberFrom("rk-hp-surface-limit")
    };
  }

  function showValidation(problems) {
    var badge = byId("rk-hp-badge");
    var message = byId("rk-hp-result-message");
    var diagnostics = byId("rk-hp-diagnostics");
    badge.className = "rk-heat-result-badge is-bad";
    badge.textContent = "Sprawdź dane";
    message.className = "rk-hp-result-message is-bad";
    message.textContent = "Nie można policzyć wyniku. Popraw zaznaczone zależności wejściowe.";
    diagnostics.innerHTML = "";
    for (var index = 0; index < problems.length; index += 1) {
      addDiagnostic(diagnostics, problems[index], "bad");
    }
  }

  var currentMode = "source";
  var lastData = null;

  function calculate() {
    var values = readValues();
    var problems = validate(values);
    if (problems.length > 0) {
      showValidation(problems);
      return;
    }

    var deltaWater = values.supply - values.returnTemp;
    var meanWater = (values.supply + values.returnTemp) / 2;
    var structureResistance = structuralResistance(values.construction, values.spacing);
    var totalResistance = structureResistance + values.coverResistance;
    var qRequired = values.load * 1000 / values.activeArea;
    var surfaceOutputLimit = 8.92 * Math.pow(values.surfaceLimit - values.room, 1.1);
    var qFloor = Math.max(0, Math.min((meanWater - values.room) / totalResistance, surfaceOutputLimit));
    var floorPower = qFloor * values.activeArea / 1000;
    var surfaceTemperature = values.room + Math.pow(qFloor / 8.92, 1 / 1.1);
    var sourceCoverage = values.capDesign / values.load * 100;
    var sourceWithBackupCoverage = (values.capDesign + values.backup) / values.load * 100;
    var floorCoverage = floorPower / values.load * 100;
    var flow = values.load / (1.163 * deltaWater);

    values.deltaWater = deltaWater;
    values.meanWater = meanWater;
    values.structureResistance = structureResistance;
    values.totalResistance = totalResistance;
    values.qRequired = qRequired;
    values.surfaceOutputLimit = surfaceOutputLimit;
    values.qFloor = qFloor;
    values.floorPower = floorPower;
    values.surfaceTemperature = surfaceTemperature;
    values.sourceCoverage = sourceCoverage;
    values.sourceWithBackupCoverage = sourceWithBackupCoverage;
    values.floorCoverage = floorCoverage;
    values.flow = flow;
    lastData = values;

    setText("rk-hp-out-load", formatNumber(values.load, 1) + " kW");
    setText("rk-hp-out-capacity", formatNumber(values.capDesign, 1) + " kW");
    setText("rk-hp-out-source-cover", formatNumber(sourceCoverage, 0) + "%");
    setText("rk-hp-out-qreq", formatNumber(qRequired, 1) + " W/m²");
    setText("rk-hp-out-qfloor", formatNumber(qFloor, 1) + " W/m²");
    setText("rk-hp-out-floor-kw", formatNumber(floorPower, 1) + " kW");
    setText("rk-hp-out-flow", formatNumber(flow, 2) + " m³/h");
    setText("rk-hp-out-surface", formatNumber(surfaceTemperature, 1) + "°C");
    setMeter("rk-hp-source-meter", sourceCoverage);
    setMeter("rk-hp-floor-meter", floorCoverage);

    renderSourceStatus(values);
    renderFloorStatus(values);
    renderOverallStatus(values);
    renderDiagnostics(values);
    drawChart();
  }

  function renderSourceStatus(data) {
    if (data.sourceCoverage >= 100) {
      setText("rk-hp-source-title", "Pompa pokrywa OZC samodzielnie");
      setText("rk-hp-source-detail", formatNumber(data.sourceCoverage, 0) + "% obciążenia");
      setText("rk-hp-source-copy", "Wpisana moc pompy w punkcie projektowym nie jest niższa od obciążenia budynku. Nadal trzeba potwierdzić pełną charakterystykę urządzenia i warunki odszraniania.");
      return;
    }
    if (data.sourceWithBackupCoverage >= 100) {
      setText("rk-hp-source-title", "Potrzebne źródło szczytowe");
      setText("rk-hp-source-detail", formatNumber(data.sourceCoverage, 0) + "% z samej pompy");
      setText("rk-hp-source-copy", "Sama sprężarka nie pokrywa wpisanego OZC w punkcie projektowym, ale łączna moc pompy i źródła szczytowego jest wystarczająca w tym modelu.");
      return;
    }
    setText("rk-hp-source-title", "Deficyt mocy źródła");
    setText("rk-hp-source-detail", formatNumber(data.sourceWithBackupCoverage, 0) + "% razem");
    setText("rk-hp-source-copy", "Nawet po dodaniu wpisanej mocy szczytowej źródło nie pokrywa projektowego obciążenia budynku.");
  }

  function renderFloorStatus(data) {
    if (data.floorCoverage >= 100) {
      setText("rk-hp-floor-title", "Podłoga pokrywa modelowe obciążenie");
      setText("rk-hp-floor-detail", formatNumber(data.floorCoverage, 0) + "% obciążenia");
      setText("rk-hp-floor-copy", "Orientacyjna moc czynnej powierzchni nie jest niższa od średniej wymaganej mocy domu. Pomieszczenia trzeba jeszcze sprawdzić oddzielnie.");
      return;
    }
    if (data.floorCoverage >= 90) {
      setText("rk-hp-floor-title", "Wynik podłogi jest graniczny");
      setText("rk-hp-floor-detail", formatNumber(data.floorCoverage, 0) + "% obciążenia");
      setText("rk-hp-floor-copy", "Niewielka zmiana powierzchni czynnej, okładziny lub temperatury może przesunąć wynik. Nie traktuj średniej dla domu jako potwierdzenia każdego pokoju.");
      return;
    }
    setText("rk-hp-floor-title", "Za mała moc czynnej podłogi");
    setText("rk-hp-floor-detail", formatNumber(data.floorCoverage, 0) + "% obciążenia");
    setText("rk-hp-floor-copy", "Przy wpisanych warstwach, powierzchni i temperaturach modelowa moc podłogi jest niższa od obciążenia domu.");
  }

  function renderOverallStatus(data) {
    var badge = byId("rk-hp-badge");
    var message = byId("rk-hp-result-message");
    badge.className = "rk-heat-result-badge";
    message.className = "rk-hp-result-message";

    if (data.floorCoverage >= 100) {
      if (data.sourceCoverage >= 100) {
        badge.textContent = "Układ pokrywa modelowe obciążenie";
        message.textContent = "W tym uproszczonym punkcie pompa samodzielnie pokrywa OZC, a czynna podłoga może przekazać wymaganą moc. Wynik domu nie zastępuje kontroli każdego pomieszczenia i pełnej charakterystyki urządzenia.";
        return;
      }
      if (data.sourceWithBackupCoverage >= 100) {
        badge.className += " is-warning";
        message.className += " is-warning";
        badge.textContent = "Układ wymaga mocy szczytowej";
        message.textContent = "Podłoga pokrywa modelowe obciążenie, ale sama pompa nie pokrywa OZC przy temperaturze projektowej. Łączny wynik staje się dodatni dopiero po uruchomieniu wpisanego źródła szczytowego.";
        return;
      }
    }

    badge.className += " is-bad";
    message.className += " is-bad";
    badge.textContent = "Układ nie pokrywa modelowego obciążenia";
    if (data.floorCoverage < 100) {
      if (data.sourceWithBackupCoverage < 100) {
        message.textContent = "Wpisane źródło ma deficyt mocy, a powierzchnia grzewcza również nie przekazuje wymaganej mocy. Obie strony układu wymagają ponownej weryfikacji.";
        return;
      }
      message.textContent = "Źródło może pokryć obciążenie, ale modelowa wydajność czynnej podłogi jest za mała przy wpisanych warunkach. Sama większa pompa nie naprawi ograniczenia odbiornika.";
      return;
    }
    message.textContent = "Podłoga może przekazać wymaganą moc, lecz wpisane źródło nie pokrywa OZC nawet z zadeklarowaną mocą szczytową.";
  }

  function renderDiagnostics(data) {
    var container = byId("rk-hp-diagnostics");
    container.innerHTML = "";

    if (data.sourceCoverage >= 100) {
      addDiagnostic(container, "Moc samej pompy przy temperaturze projektowej pokrywa wpisane OZC z zapasem " + formatNumber(data.capDesign - data.load, 1) + " kW.", "good");
    } else {
      addDiagnostic(container, "Sama pompa ma w punkcie projektowym deficyt " + formatNumber(data.load - data.capDesign, 1) + " kW. Sprawdź punkt biwalentny i sposób uruchamiania źródła szczytowego.", "bad");
    }

    if (data.sourceCoverage < 100) {
      if (data.sourceWithBackupCoverage >= 100) {
        addDiagnostic(container, "Wpisana moc szczytowa pokrywa deficyt. Łączna rezerwa wynosi " + formatNumber(data.capDesign + data.backup - data.load, 1) + " kW, lecz jej udział zwiększa pobór energii pomocniczej.", "good");
      } else {
        addDiagnostic(container, "Pompa i źródło szczytowe mają łącznie za małą moc o " + formatNumber(data.load - data.capDesign - data.backup, 1) + " kW.", "bad");
      }
    }

    if (data.floorCoverage >= 100) {
      addDiagnostic(container, "Modelowa czynna powierzchnia podłogi pokrywa średnie obciążenie domu z zapasem " + formatNumber(data.floorPower - data.load, 1) + " kW.", "good");
    } else {
      addDiagnostic(container, "Modelowa czynna podłoga ma deficyt " + formatNumber(data.load - data.floorPower, 1) + " kW. Sprawdź pomieszczenia, powierzchnie bez rur, opór okładziny i parametr wody.", "bad");
    }

    var uncappedFloor = Math.max(0, (data.meanWater - data.room) / data.totalResistance);
    if (uncappedFloor > data.surfaceOutputLimit) {
      addDiagnostic(container, "Wynik ogranicza wpisana temperatura powierzchni " + formatNumber(data.surfaceLimit, 1) + "°C. Dalsze podnoszenie temperatury wody nie zostało zaliczone jako dostępna moc.", "warning");
    } else {
      addDiagnostic(container, "Przy wpisanym parametrze model nie dochodzi do limitu temperatury powierzchni.", "good");
    }

    if (data.qRequired > 100) {
      addDiagnostic(container, "Wymagane " + formatNumber(data.qRequired, 1) + " W/m² to wysoka średnia dla całej czynnej powierzchni. Najtrudniejsze pomieszczenia mogą wymagać jeszcze większej wartości.", "warning");
    }

    if (data.coverResistance > 0.15) {
      addDiagnostic(container, "Opór okładziny przekracza 0,15 m²K/W i silnie ogranicza modelową emisję. Sprawdź pełny zestaw: wykończenie, podkład i warstwy pośrednie.", "warning");
    }

    if (data.deltaWater < 3) {
      addDiagnostic(container, "Różnica temperatur wody jest mniejsza niż 3 K, dlatego wymagany przepływ rośnie do " + formatNumber(data.flow, 2) + " m³/h. Zweryfikuj hydraulikę całej instalacji.", "warning");
    }
    if (data.deltaWater > 10) {
      addDiagnostic(container, "Różnica temperatur wody przekracza 10 K. Modelowy przepływ spada, ale temperatura powierzchni i charakterystyka pętli mogą być mniej równomierne.", "warning");
    }

    if (data.minOutput > data.load * 0.35) {
      addDiagnostic(container, "Minimalna moc modulowana stanowi ponad 35% projektowego OZC. W okresach przejściowych sprawdź ryzyko taktowania, minimalny przepływ i pojemność układu.", "warning");
    }

    addDiagnostic(container, "Orientacyjny przepływ całej instalacji dla mocy " + formatNumber(data.load, 1) + " kW i ΔT " + formatNumber(data.deltaWater, 1) + " K wynosi " + formatNumber(data.flow, 2) + " m³/h. To nie jest nastawa pojedynczej pętli.", "good");
  }

  function configureCanvas(canvas) {
    var measuredWidth = canvas.parentNode.clientWidth;
    var width = Math.max(300, Math.floor(measuredWidth));
    var height = 350;
    var ratio = Math.min(2, window.devicePixelRatio || 1);
    canvas.width = Math.round(width * ratio);
    canvas.height = Math.round(height * ratio);
    canvas.style.width = width + "px";
    canvas.style.height = height + "px";
    var context = canvas.getContext("2d");
    context.setTransform(ratio, 0, 0, ratio, 0, 0);
    return { context: context, width: width, height: height };
  }

  function drawBase(context, width, height, xMin, xMax, yMin, yMax, xLabel, yLabel) {
    var frame = { left: 60, right: 20, top: 22, bottom: 52 };
    frame.plotWidth = width - frame.left - frame.right;
    frame.plotHeight = height - frame.top - frame.bottom;
    frame.mapX = function (value) {
      return frame.left + (value - xMin) / (xMax - xMin) * frame.plotWidth;
    };
    frame.mapY = function (value) {
      return frame.top + frame.plotHeight - (value - yMin) / (yMax - yMin) * frame.plotHeight;
    };

    context.clearRect(0, 0, width, height);
    context.fillStyle = "#f8fcfd";
    context.fillRect(0, 0, width, height);
    context.font = "11px Arial, sans-serif";
    context.lineWidth = 1;

    var divisions = width < 470 ? 4 : 6;
    for (var step = 0; step <= divisions; step += 1) {
      var xValue = xMin + (xMax - xMin) * step / divisions;
      var yValue = yMin + (yMax - yMin) * step / divisions;
      var x = frame.mapX(xValue);
      var y = frame.mapY(yValue);
      context.strokeStyle = "#d7e5e9";
      context.setLineDash([]);
      context.beginPath();
      context.moveTo(x, frame.top);
      context.lineTo(x, frame.top + frame.plotHeight);
      context.stroke();
      context.beginPath();
      context.moveTo(frame.left, y);
      context.lineTo(frame.left + frame.plotWidth, y);
      context.stroke();
      context.fillStyle = "#526a76";
      context.textAlign = "center";
      context.fillText(formatNumber(xValue, 0), x, frame.top + frame.plotHeight + 20);
      context.textAlign = "right";
      context.fillText(formatNumber(yValue, 0), frame.left - 8, y + 4);
    }

    context.strokeStyle = "#7e98a2";
    context.lineWidth = 1.2;
    context.beginPath();
    context.moveTo(frame.left, frame.top);
    context.lineTo(frame.left, frame.top + frame.plotHeight);
    context.lineTo(frame.left + frame.plotWidth, frame.top + frame.plotHeight);
    context.stroke();
    context.fillStyle = "#304954";
    context.textAlign = "center";
    context.font = "600 11px Arial, sans-serif";
    context.fillText(xLabel, frame.left + frame.plotWidth / 2, height - 10);
    context.save();
    context.translate(14, frame.top + frame.plotHeight / 2);
    context.rotate(-Math.PI / 2);
    context.fillText(yLabel, 0, 0);
    context.restore();
    return frame;
  }

  function drawLine(context, frame, points, color, width, dash) {
    if (points.length < 2) { return; }
    context.beginPath();
    context.strokeStyle = color;
    context.lineWidth = width;
    context.lineJoin = "round";
    context.lineCap = "round";
    context.setLineDash(dash || []);
    for (var index = 0; index < points.length; index += 1) {
      var x = frame.mapX(points[index][0]);
      var y = frame.mapY(points[index][1]);
      if (index === 0) { context.moveTo(x, y); }
      else { context.lineTo(x, y); }
    }
    context.stroke();
    context.setLineDash([]);
  }

  function drawMarker(context, frame, xValue, yValue, color, label) {
    var x = frame.mapX(xValue);
    var y = frame.mapY(yValue);
    context.fillStyle = color;
    context.strokeStyle = "#ffffff";
    context.lineWidth = 2;
    context.beginPath();
    context.arc(x, y, 5, 0, Math.PI * 2);
    context.fill();
    context.stroke();
    if (label) {
      context.fillStyle = "#17313d";
      context.font = "700 10px Arial, sans-serif";
      context.textAlign = x > frame.left + frame.plotWidth * 0.7 ? "right" : "left";
      context.fillText(label, x + (context.textAlign === "right" ? -8 : 8), Math.max(frame.top + 11, y - 9));
    }
  }

  function loadAtTemperature(temperature, data) {
    var denominator = 15 - data.designOut;
    var value = data.load * (15 - temperature) / denominator;
    return Math.max(0, value);
  }

  function capacityAtTemperature(temperature, data) {
    var denominator = 7 - data.designOut;
    if (denominator === 0) { return data.capDesign; }
    return data.capDesign + (data.capSeven - data.capDesign) * (temperature - data.designOut) / denominator;
  }

  function findBivalentPoint(data) {
    var previousDifference = capacityAtTemperature(data.designOut, data) - loadAtTemperature(data.designOut, data);
    if (previousDifference >= 0) { return data.designOut; }
    var steps = 180;
    for (var index = 1; index <= steps; index += 1) {
      var temperature = data.designOut + (7 - data.designOut) * index / steps;
      var difference = capacityAtTemperature(temperature, data) - loadAtTemperature(temperature, data);
      if (difference >= 0) { return temperature; }
      previousDifference = difference;
    }
    return null;
  }

  function drawSourceChart(context, width, height, data) {
    var xMin = data.designOut;
    var xMax = 15;
    var yMax = Math.max(data.load, data.capDesign, data.capSeven, 1) * 1.25;
    var frame = drawBase(context, width, height, xMin, xMax, 0, yMax, "temperatura zewnętrzna [°C]", "moc [kW]");
    var loadPoints = [];
    var sourcePoints = [];
    var samples = 100;
    for (var index = 0; index <= samples; index += 1) {
      var temperature = xMin + (xMax - xMin) * index / samples;
      loadPoints.push([temperature, loadAtTemperature(temperature, data)]);
      if (temperature <= 7) {
        sourcePoints.push([temperature, capacityAtTemperature(temperature, data)]);
      }
    }
    if (sourcePoints[sourcePoints.length - 1][0] < 7) {
      sourcePoints.push([7, data.capSeven]);
    }
    drawLine(context, frame, loadPoints, "#20bfd2", 3, []);
    drawLine(context, frame, sourcePoints, "#ff6a48", 3, []);
    drawLine(context, frame, [[data.designOut, 0], [data.designOut, yMax]], "#d69a16", 1.5, [6, 5]);
    drawMarker(context, frame, data.designOut, data.load, "#20bfd2", "OZC " + formatNumber(data.load, 1) + " kW");
    drawMarker(context, frame, data.designOut, data.capDesign, "#ff6a48", "pompa " + formatNumber(data.capDesign, 1) + " kW");
    var bivalent = findBivalentPoint(data);
    if (bivalent !== null) {
      var bivalentPower = loadAtTemperature(bivalent, data);
      drawMarker(context, frame, bivalent, bivalentPower, "#d69a16", "punkt ≈ " + formatNumber(bivalent, 1) + "°C");
    }

    setText("rk-hp-chart-heading", "Obciążenie domu i orientacyjna krzywa mocy pompy");
    setText("rk-hp-chart-description", "Krzywa pompy jest liniową interpolacją dwóch wpisanych punktów i kończy się przy +7°C.");
    byId("rk-hp-chart-legend").innerHTML = '<span class="rk-heat-chart-key">obciążenie domu</span><span class="rk-heat-chart-key is-b">moc pompy</span><span class="rk-heat-chart-key is-demand">punkt projektowy</span>';
    if (bivalent !== null) {
      setText("rk-hp-chart-summary", "Orientacyjny punkt przecięcia wpisanych krzywych wypada przy około " + formatNumber(bivalent, 1) + "°C. To wynik liniowego modelu, a nie punkt odczytany z pełnej mapy konkretnego urządzenia.");
    } else {
      setText("rk-hp-chart-summary", "W zakresie od temperatury projektowej do +7°C wpisana krzywa mocy pompy nie przecina modelowej linii obciążenia. Sprawdź pełne dane techniczne urządzenia.");
    }
  }

  function drawFloorChart(context, width, height, data) {
    var xMin = Math.max(22, data.room + 2);
    var xMax = Math.max(45, data.meanWater + 3);
    var yMax = Math.max(data.qRequired, data.surfaceOutputLimit, data.qFloor, 20) * 1.2;
    var frame = drawBase(context, width, height, xMin, xMax, 0, yMax, "średnia temperatura wody [°C]", "moc podłogi [W/m²]");
    var floorPoints = [];
    var samples = 100;
    for (var index = 0; index <= samples; index += 1) {
      var meanWater = xMin + (xMax - xMin) * index / samples;
      floorPoints.push([meanWater, floorOutputAtMean(meanWater, data)]);
    }
    drawLine(context, frame, floorPoints, "#20bfd2", 3, []);
    drawLine(context, frame, [[xMin, data.qRequired], [xMax, data.qRequired]], "#ff6a48", 2.5, [7, 5]);
    drawLine(context, frame, [[data.meanWater, 0], [data.meanWater, yMax]], "#d69a16", 1.5, [6, 5]);
    drawMarker(context, frame, data.meanWater, data.qFloor, "#20bfd2", formatNumber(data.qFloor, 1) + " W/m²");

    setText("rk-hp-chart-heading", "Moc referencyjnej podłogi a średnia temperatura wody");
    setText("rk-hp-chart-description", "Linia dostępnej mocy uwzględnia wpisany opór warstw i zatrzymuje się na limicie temperatury powierzchni.");
    byId("rk-hp-chart-legend").innerHTML = '<span class="rk-heat-chart-key">dostępna moc podłogi</span><span class="rk-heat-chart-key is-b">wymagana moc</span><span class="rk-heat-chart-key is-demand">obecna średnia woda</span>';
    setText("rk-hp-chart-summary", "Dla średniej temperatury wody " + formatNumber(data.meanWater, 1) + "°C model pokazuje " + formatNumber(data.qFloor, 1) + " W/m² wobec wymaganych " + formatNumber(data.qRequired, 1) + " W/m². Charakterystykę konkretnego systemu trzeba potwierdzić obliczeniowo.");
  }

  function drawChart() {
    if (!lastData) { return; }
    var canvas = byId("rk-hp-chart");
    if (!canvas) { return; }
    var prepared = configureCanvas(canvas);
    if (currentMode === "floor") {
      drawFloorChart(prepared.context, prepared.width, prepared.height, lastData);
    } else {
      drawSourceChart(prepared.context, prepared.width, prepared.height, lastData);
    }
  }

  function selectChart(mode) {
    currentMode = mode;
    var sourceButton = byId("rk-hp-chart-source");
    var floorButton = byId("rk-hp-chart-floor");
    sourceButton.setAttribute("aria-pressed", mode === "source" ? "true" : "false");
    floorButton.setAttribute("aria-pressed", mode === "floor" ? "true" : "false");
    drawChart();
  }

  byId("rk-hp-calculate").addEventListener("click", calculate);
  byId("rk-hp-chart-source").addEventListener("click", function () { selectChart("source"); });
  byId("rk-hp-chart-floor").addEventListener("click", function () { selectChart("floor"); });

  var fields = tool.querySelectorAll("input, select");
  for (var fieldIndex = 0; fieldIndex < fields.length; fieldIndex += 1) {
    fields[fieldIndex].addEventListener("input", calculate);
    fields[fieldIndex].addEventListener("change", calculate);
  }

  var resizeFrame = null;
  window.addEventListener("resize", function () {
    if (resizeFrame !== null) { window.cancelAnimationFrame(resizeFrame); }
    resizeFrame = window.requestAnimationFrame(function () {
      drawChart();
      resizeFrame = null;
    });
  });

  calculate();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">Czy pompa ciepła ogrzeje dom z podłogówką?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
