<?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 Energooszczędne budownictwo - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/energooszczedne-budownictwo/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/energooszczedne-budownictwo/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Fri, 16 Oct 2026 03:53:30 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Energooszczędne budownictwo - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/energooszczedne-budownictwo/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Zwrot z inwestycji w ogrzewanie podłogowe – po ilu latach?</title>
		<link>https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 07 Mar 2026 14:43:41 +0000</pubDate>
				<category><![CDATA[Domy energooszczędne]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Koszty energii]]></category>
		<category><![CDATA[Koszty instalacji grzewczych]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Koszty ogrzewania podłogowego]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[efektywność ogrzewania]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[koszty ogrzewania domu]]></category>
		<category><![CDATA[ogrzewanie domu 2026]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka czy grzejniki]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<category><![CDATA[zwrot z inwestycji ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3718</guid>

					<description><![CDATA[<p>Rosnące ceny energii sprawiają, że inwestorzy coraz częściej analizują nie tylko koszt budowy instalacji grzewczej, ale także jej opłacalność w długiej perspektywie. Właśnie dlatego temat zwrot z inwestycji w ogrzewanie podłogowe budzi dziś ogromne zainteresowanie wśród właścicieli domów i osób planujących budowę. Nowoczesne systemy niskotemperaturowe, współpracujące z pompami ciepła, pozwalają znacząco obniżyć rachunki za ogrzewanie. Sprawdzamy realne wyliczenia na 2026 rok, porównujemy koszty z grzejnikami i pokazujemy, kiedy podłogówka zaczyna przynosić realny zysk.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">Zwrot z inwestycji w ogrzewanie podłogowe – po ilu latach?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-roi-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: #a86a00;
    --rk-yellow-soft: #fff7dd;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #687b88;
    --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-roi-guide,
  #rk-roi-guide * { box-sizing: border-box; }
  #rk-roi-guide img,
  #rk-roi-guide svg { display: block; max-width: 100%; }
  #rk-roi-guide button,
  #rk-roi-guide input,
  #rk-roi-guide select,
  #rk-roi-guide label,
  #rk-roi-guide summary,
  #rk-roi-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-roi-guide button { cursor: pointer; }
  #rk-roi-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-roi-guide a:hover,
  #rk-roi-guide a:focus-visible { color: var(--rk-red); }
  #rk-roi-guide button:focus-visible,
  #rk-roi-guide summary:focus-visible,
  #rk-roi-guide a:focus-visible,
  #rk-roi-guide input:focus-visible,
  #rk-roi-guide select:focus-visible { outline: 3px solid rgba(7, 143, 190, .27); outline-offset: 3px; }
  #rk-roi-guide p,
  #rk-roi-guide ul,
  #rk-roi-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-roi-guide h2,
  #rk-roi-guide h3,
  #rk-roi-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 900;
    letter-spacing: -.035em;
    line-height: 1.15;
    overflow-wrap: anywhere;
  }
  #rk-roi-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-roi-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-roi-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-roi-guide strong { color: var(--rk-dark); }
  #rk-roi-guide [hidden] { display: none !important; }

  #rk-roi-guide .rk-pg-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-roi-guide .rk-pg-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: #ffffff !important;
    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-roi-guide .rk-pg-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-roi-guide .rk-pg-kicker {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff !important;
    font-size: .69rem;
    font-weight: 900;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-roi-guide .rk-pg-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-roi-guide .rk-pg-hero-title {
    position: relative;
    z-index: 1;
    max-width: 1040px;
    margin: 0 0 21px;
    color: #ffffff !important;
    font-size: clamp(2.2rem, 7vw, 5rem);
    font-weight: 900;
    letter-spacing: -.065em;
    line-height: .98;
  }
  #rk-roi-guide .rk-pg-hero-title span { color: #67e7f5 !important; }
  #rk-roi-guide .rk-pg-lead {
    position: relative;
    z-index: 1;
    max-width: 970px;
    margin-bottom: 24px;
    color: #e7f6f8 !important;
    font-size: clamp(1rem, 2.2vw, 1.3rem);
    line-height: 1.55;
  }
  #rk-roi-guide .rk-pg-hero-tags,
  #rk-roi-guide .rk-pg-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px 12px;
  }
  #rk-roi-guide .rk-pg-hero-tag {
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;
    color: #ffffff !important;
    background: rgba(255, 255, 255, .07);
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.2;
  }
  #rk-roi-guide .rk-pg-byline {
    margin-top: 27px;
    color: #d7ebef !important;
    font-size: .68rem;
    font-weight: 720;
  }
  #rk-roi-guide .rk-pg-byline span { color: #d7ebef !important; }
  #rk-roi-guide .rk-pg-byline strong { color: #ffffff !important; }
  #rk-roi-guide .rk-pg-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 28px;
  }
  #rk-roi-guide .rk-pg-hero-metric {
    min-width: 0;
    padding: 18px;
    border: 1px solid rgba(255, 255, 255, .19);
    border-radius: 15px;
    background: rgba(255, 255, 255, .075);
  }
  #rk-roi-guide .rk-pg-hero-metric b {
    display: block;
    margin-bottom: 5px;
    color: #ffffff !important;
    font-size: .75rem;
    line-height: 1.35;
  }
  #rk-roi-guide .rk-pg-hero-metric span {
    display: block;
    color: #e5f4f7 !important;
    font-size: .65rem;
    line-height: 1.5;
  }

  #rk-roi-guide .rk-pg-nav {
    display: block;
    padding: 18px clamp(20px, 4vw, 46px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }
  #rk-roi-guide .rk-pg-nav-label {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-dark);
    font-size: .62rem;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-roi-guide .rk-pg-nav-track {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    width: 100%;
    min-width: 0;
    white-space: normal;
  }
  #rk-roi-guide .rk-pg-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    max-width: 100%;
    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;
    white-space: normal;
  }
  #rk-roi-guide .rk-pg-nav a:hover,
  #rk-roi-guide .rk-pg-nav a:focus-visible { color: #ffffff; background: var(--rk-blue); }

  #rk-roi-guide .rk-pg-content { padding: 0 clamp(20px, 5.4vw, 64px) 64px; }
  #rk-roi-guide .rk-pg-section {
    padding: clamp(42px, 7vw, 76px) 0;
    border-bottom: 1px solid var(--rk-line);
    scroll-margin-top: 18px;
  }
  #rk-roi-guide .rk-pg-section:last-of-type { border-bottom: 0; }
  #rk-roi-guide .rk-pg-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: .68rem;
    font-weight: 900;
    letter-spacing: .075em;
    text-transform: uppercase;
  }
  #rk-roi-guide .rk-pg-intro { max-width: 950px; color: var(--rk-text); font-size: 1.08rem; }
  #rk-roi-guide .rk-pg-answer,
  #rk-roi-guide .rk-pg-note,
  #rk-roi-guide .rk-pg-warning,
  #rk-roi-guide .rk-pg-myth {
    margin: 24px 0;
    padding: 21px 23px;
    border-radius: 17px;
  }
  #rk-roi-guide .rk-pg-answer { border-left: 5px solid var(--rk-cyan); background: var(--rk-cyan-soft); }
  #rk-roi-guide .rk-pg-note { border: 1px solid #bfe6ed; background: #f0fbfd; }
  #rk-roi-guide .rk-pg-warning { border-left: 5px solid var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-roi-guide .rk-pg-myth { border: 1px solid #e0dafa; background: var(--rk-purple-soft); }
  #rk-roi-guide .rk-pg-answer p:last-child,
  #rk-roi-guide .rk-pg-note p:last-child,
  #rk-roi-guide .rk-pg-warning p:last-child,
  #rk-roi-guide .rk-pg-myth p:last-child { margin-bottom: 0; }

  #rk-roi-guide .rk-pg-grid-2,
  #rk-roi-guide .rk-pg-grid-3,
  #rk-roi-guide .rk-pg-grid-4 {
    display: grid;
    gap: 16px;
    margin: 25px 0;
  }
  #rk-roi-guide .rk-pg-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-roi-guide .rk-pg-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-roi-guide .rk-pg-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-roi-guide .rk-pg-card {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    color: var(--rk-text) !important;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, .055);
  }
  #rk-roi-guide .rk-pg-card.is-cyan { border-top: 4px solid var(--rk-cyan); }
  #rk-roi-guide .rk-pg-card.is-orange { border-top: 4px solid var(--rk-orange); }
  #rk-roi-guide .rk-pg-card.is-green { border-top: 4px solid var(--rk-green); }
  #rk-roi-guide .rk-pg-card.is-purple { border-top: 4px solid var(--rk-purple); }
  #rk-roi-guide .rk-pg-card p,
  #rk-roi-guide .rk-pg-card li { color: var(--rk-text) !important; }
  #rk-roi-guide .rk-pg-card p:last-child { margin-bottom: 0; }
  #rk-roi-guide .rk-pg-card-icon {
    display: grid !important;
    place-items: center !important;
    width: 46px !important;
    min-width: 46px !important;
    max-width: 46px !important;
    height: 46px !important;
    min-height: 46px !important;
    max-height: 46px !important;
    margin: 0 0 15px !important;
    padding: 0 !important;
    border-radius: 50% !important;
    color: var(--rk-dark) !important;
    background: var(--rk-cyan-soft) !important;
    font-size: .75rem !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    text-align: center !important;
    position: static !important;
    transform: none !important;
  }
  #rk-roi-guide .rk-pg-card.is-orange .rk-pg-card-icon { background: var(--rk-orange-soft) !important; }
  #rk-roi-guide .rk-pg-card.is-green .rk-pg-card-icon { background: var(--rk-green-soft) !important; }
  #rk-roi-guide .rk-pg-card.is-purple .rk-pg-card-icon { background: var(--rk-purple-soft) !important; }

  #rk-roi-guide .rk-pg-factor-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin: 28px 0;
    padding: 0;
    list-style: none;
  }
  #rk-roi-guide .rk-pg-factor {
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    align-items: start;
    gap: 18px;
    min-width: 0;
    padding: 26px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }
  #rk-roi-guide .rk-pg-step-badge {
    display: grid !important;
    place-items: center !important;
    align-items: center !important;
    justify-items: center !important;
    width: 52px !important;
    min-width: 52px !important;
    max-width: 52px !important;
    height: 52px !important;
    min-height: 52px !important;
    max-height: 52px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 50% !important;
    color: var(--rk-dark) !important;
    background: #d9f5f8 !important;
    font-size: 1rem !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    text-align: center !important;
    flex: 0 0 52px !important;
    position: static !important;
    transform: none !important;
  }
  #rk-roi-guide .rk-pg-step-badge > span {
    display: block !important;
    position: static !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1 !important;
    transform: none !important;
  }
  #rk-roi-guide .rk-pg-factor:nth-child(4n+2) .rk-pg-step-badge { background: #ffdfd4 !important; }
  #rk-roi-guide .rk-pg-factor:nth-child(4n+3) .rk-pg-step-badge { background: #dff5ed !important; }
  #rk-roi-guide .rk-pg-factor:nth-child(4n+4) .rk-pg-step-badge { background: #e5e1ff !important; }
  #rk-roi-guide .rk-pg-factor-copy { min-width: 0; }
  #rk-roi-guide .rk-pg-factor h3 { margin-bottom: 7px; }
  #rk-roi-guide .rk-pg-factor p { margin-bottom: 0; color: var(--rk-text); }

  #rk-roi-guide .rk-pg-table-wrap {
    overflow-x: auto;
    margin: 26px 0;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
  }
  #rk-roi-guide table { width: 100%; border-collapse: collapse; border-spacing: 0; }
  #rk-roi-guide th,
  #rk-roi-guide td { padding: 15px 17px; border-bottom: 1px solid var(--rk-line); text-align: left; vertical-align: top; }
  #rk-roi-guide th { color: #ffffff; background: var(--rk-navy); font-size: .69rem; font-weight: 900; line-height: 1.35; }
  #rk-roi-guide td { color: var(--rk-text); font-size: .84rem; line-height: 1.55; }
  #rk-roi-guide tr:last-child td { border-bottom: 0; }
  #rk-roi-guide tbody tr:nth-child(even) td { background: #f8fbfc; }

  #rk-roi-guide .rk-pg-formula {
    margin: 28px 0;
    padding: clamp(23px, 5vw, 38px);
    border-radius: 22px;
    color: #ffffff;
    background: linear-gradient(135deg, #112c3f, #17616d);
  }
  #rk-roi-guide .rk-pg-formula-main { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 20px; }
  #rk-roi-guide .rk-pg-formula-equation {
    color: #7cecf7;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(1.02rem, 3.1vw, 1.65rem);
    font-weight: 900;
    letter-spacing: -.04em;
    overflow-wrap: anywhere;
  }
  #rk-roi-guide .rk-pg-formula-result {
    flex: 0 0 auto;
    padding: 11px 15px;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 999px;
    color: #ffffff;
    background: rgba(255, 255, 255, .08);
    font-size: .74rem;
    font-weight: 900;
  }
  #rk-roi-guide .rk-pg-formula p,
  #rk-roi-guide .rk-pg-formula li,
  #rk-roi-guide .rk-pg-formula strong { color: #eaf7f9 !important; }

  #rk-roi-guide .rk-pg-tool {
    margin: 30px 0;
    overflow: hidden;
    border: 1px solid #bcdde5;
    border-radius: 24px;
    background: var(--rk-white);
    box-shadow: 0 18px 48px rgba(16, 37, 54, .09);
  }
  #rk-roi-guide .rk-pg-tool-head { padding: clamp(23px, 5vw, 36px); color: #ffffff; background: linear-gradient(135deg, #102d40 0%, #126879 100%); }
  #rk-roi-guide .rk-pg-tool-kicker { display: block; margin-bottom: 8px; color: #81edf6; font-size: .65rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
  #rk-roi-guide .rk-pg-tool-head h3 { margin-bottom: 9px; color: #ffffff; }
  #rk-roi-guide .rk-pg-tool-head p { max-width: 900px; margin-bottom: 0; color: #e5f5f7; }
  #rk-roi-guide .rk-pg-tool-body { padding: clamp(20px, 5vw, 36px); }
  #rk-roi-guide .rk-pg-tool-disclaimer { margin-top: 20px; padding: 14px 16px; border-radius: 13px; color: #526570; background: var(--rk-soft); font-size: .73rem; line-height: 1.55; }

  #rk-roi-guide .rk-roi-tabs { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 22px; }
  #rk-roi-guide .rk-roi-tab {
    min-height: 44px;
    padding: 10px 16px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .72rem;
    font-weight: 900;
    line-height: 1.2;
  }
  #rk-roi-guide .rk-roi-tab:hover,
  #rk-roi-guide .rk-roi-tab:focus-visible { border-color: var(--rk-blue); background: var(--rk-cyan-soft); }
  #rk-roi-guide .rk-roi-tab.is-active,
  #rk-roi-guide .rk-roi-tab[aria-pressed="true"] { color: #ffffff; border-color: var(--rk-blue); background: var(--rk-blue); }

  #rk-roi-guide .rk-roi-calculator-layout { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(300px, .85fr); gap: 24px; align-items: start; }
  #rk-roi-guide .rk-roi-controls { min-width: 0; }
  #rk-roi-guide .rk-roi-block { margin-bottom: 19px; padding: 20px; border: 1px solid var(--rk-line); border-radius: 17px; background: #fbfdfe; }
  #rk-roi-guide .rk-roi-block:last-child { margin-bottom: 0; }
  #rk-roi-guide .rk-roi-block-title { display: block; margin-bottom: 14px; color: var(--rk-dark); font-size: .8rem; font-weight: 900; }
  #rk-roi-guide .rk-roi-input-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  #rk-roi-guide .rk-roi-input-grid .is-wide { grid-column: 1 / -1; }
  #rk-roi-guide .rk-roi-field { min-width: 0; }
  #rk-roi-guide .rk-roi-field label { display: block; margin-bottom: 6px; color: var(--rk-dark); font-size: .67rem; font-weight: 900; line-height: 1.35; }
  #rk-roi-guide .rk-roi-field input,
  #rk-roi-guide .rk-roi-field select {
    display: block;
    width: 100%;
    min-width: 0;
    height: 48px;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid #b9cfd7;
    border-radius: 12px;
    color: var(--rk-dark);
    background: #ffffff;
    font-size: .78rem;
    font-weight: 760;
    line-height: 1.2;
  }
  #rk-roi-guide .rk-roi-help { display: block; margin-top: 5px; color: var(--rk-muted); font-size: .57rem; line-height: 1.42; }
  #rk-roi-guide .rk-roi-variant-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  #rk-roi-guide .rk-roi-variant { min-width: 0; padding: 18px; border: 1px solid var(--rk-line); border-radius: 16px; background: #ffffff; }
  #rk-roi-guide .rk-roi-variant.is-a { border-top: 4px solid var(--rk-blue); }
  #rk-roi-guide .rk-roi-variant.is-b { border-top: 4px solid var(--rk-orange); }
  #rk-roi-guide .rk-roi-variant h4 { margin-bottom: 14px; }
  #rk-roi-guide .rk-roi-variant .rk-roi-field { margin-bottom: 12px; }
  #rk-roi-guide .rk-roi-variant .rk-roi-field:last-child { margin-bottom: 0; }

  #rk-roi-guide .rk-roi-advanced { margin-top: 18px; overflow: hidden; border: 1px solid var(--rk-line); border-radius: 15px; background: #ffffff; }
  #rk-roi-guide .rk-roi-advanced summary { position: relative; padding: 15px 48px 15px 17px; color: var(--rk-dark); font-size: .7rem; font-weight: 900; cursor: pointer; list-style: none; }
  #rk-roi-guide .rk-roi-advanced summary::-webkit-details-marker { display: none; }
  #rk-roi-guide .rk-roi-advanced summary::after { position: absolute; top: 50%; right: 16px; width: 25px; height: 25px; border-radius: 50%; color: var(--rk-blue); background: var(--rk-cyan-soft); content: "+"; font-size: 1rem; font-weight: 900; line-height: 25px; text-align: center; transform: translateY(-50%); }
  #rk-roi-guide .rk-roi-advanced[open] summary::after { content: "−"; }
  #rk-roi-guide .rk-roi-advanced-body { padding: 0 17px 18px; }
  #rk-roi-guide .rk-roi-switch { display: flex; align-items: flex-start; gap: 10px; margin: 4px 0 16px; }
  #rk-roi-guide .rk-roi-switch input { flex: 0 0 auto; width: 20px; height: 20px; margin-top: 3px; accent-color: var(--rk-blue); }
  #rk-roi-guide .rk-roi-switch label { color: var(--rk-dark); font-size: .7rem; font-weight: 850; line-height: 1.45; }

  #rk-roi-guide .rk-roi-results {
    min-width: 0;
    padding: clamp(20px, 4vw, 29px);
    border-radius: 20px;
    color: #ffffff;
    background: linear-gradient(145deg, #112b3d, #155767);
  }
  #rk-roi-guide .rk-roi-results h4 { color: #ffffff; }
  #rk-roi-guide .rk-roi-result-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }
  #rk-roi-guide .rk-roi-result-card { min-width: 0; padding: 15px; border-radius: 14px; background: rgba(255, 255, 255, .09); }
  #rk-roi-guide .rk-roi-result-card.is-wide { grid-column: 1 / -1; }
  #rk-roi-guide .rk-roi-result-card span { display: block; color: #cfe5e9; font-size: .61rem; line-height: 1.35; }
  #rk-roi-guide .rk-roi-result-card strong { display: block; margin: 5px 0 3px; color: #7cecf7 !important; font-size: clamp(1.15rem, 3vw, 1.72rem); line-height: 1.1; overflow-wrap: anywhere; }
  #rk-roi-guide .rk-roi-result-card small { display: block; color: #dcecef; font-size: .6rem; line-height: 1.42; }
  #rk-roi-guide .rk-roi-result-summary { width: 100%; margin-top: 14px; padding: 15px 17px; border-radius: 13px; color: #ffffff; background: rgba(255, 106, 61, .2); font-size: .68rem; line-height: 1.55; }
  #rk-roi-guide .rk-roi-result-summary strong { color: #ffffff !important; }

  #rk-roi-guide .rk-roi-chart-panel { margin-top: 24px; padding: clamp(18px, 4vw, 28px); border: 1px solid var(--rk-line); border-radius: 19px; background: #fbfdfe; }
  #rk-roi-guide .rk-roi-chart-top { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 14px; }
  #rk-roi-guide .rk-roi-chart-top h4 { margin-bottom: 4px; }
  #rk-roi-guide .rk-roi-chart-top p { margin-bottom: 0; color: var(--rk-text); font-size: .7rem; }
  #rk-roi-guide .rk-roi-chart-top .rk-roi-tabs { flex: 0 0 auto; margin-bottom: 0; }
  #rk-roi-guide .rk-roi-chart-wrap { overflow: hidden; padding: 10px 7px 0; border: 1px solid var(--rk-line); border-radius: 16px; background: #ffffff; }
  #rk-roi-guide .rk-roi-chart { width: 100%; min-height: 340px; }
  #rk-roi-guide .rk-roi-chart .rk-grid { stroke: #dbe7eb; stroke-width: 1; }
  #rk-roi-guide .rk-roi-chart .rk-zero { stroke: #7a8d97; stroke-width: 2; stroke-dasharray: 6 5; }
  #rk-roi-guide .rk-roi-chart .rk-axis-label { fill: #60747f; font-size: 12px; }
  #rk-roi-guide .rk-roi-chart .rk-axis-title { fill: #304652; font-size: 12px; font-weight: 800; }
  #rk-roi-guide .rk-roi-chart .rk-area { fill: rgba(7, 143, 190, .12); }
  #rk-roi-guide .rk-roi-chart .rk-line { fill: none; stroke: var(--rk-blue); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
  #rk-roi-guide .rk-roi-chart .rk-cross { fill: var(--rk-orange); stroke: #ffffff; stroke-width: 3; }
  #rk-roi-guide .rk-roi-chart .rk-focus { fill: var(--rk-dark); stroke: #ffffff; stroke-width: 3; }
  #rk-roi-guide .rk-roi-year-control { margin-top: 15px; padding: 15px; border-radius: 14px; background: var(--rk-soft); }
  #rk-roi-guide .rk-roi-year-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
  #rk-roi-guide .rk-roi-year-row label { color: var(--rk-dark); font-size: .67rem; font-weight: 900; }
  #rk-roi-guide .rk-roi-year-row output { color: var(--rk-blue); font-size: .72rem; font-weight: 900; }
  #rk-roi-guide input[type="range"] { width: 100%; height: 7px; margin: 0; border-radius: 99px; background: #d9e8ed; accent-color: var(--rk-blue); cursor: pointer; }
  #rk-roi-guide .rk-roi-milestones { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
  #rk-roi-guide .rk-roi-milestone { min-width: 0; padding: 13px; border: 1px solid var(--rk-line); border-radius: 13px; background: #ffffff; }
  #rk-roi-guide .rk-roi-milestone span { display: block; color: var(--rk-muted); font-size: .57rem; }
  #rk-roi-guide .rk-roi-milestone strong { display: block; margin-top: 4px; color: var(--rk-dark); font-size: .8rem; line-height: 1.3; }

  #rk-roi-guide .rk-roi-stage-layout { display: grid; grid-template-columns: minmax(340px, .82fr) minmax(0, 1.18fr); gap: 22px; align-items: stretch; }
  #rk-roi-guide .rk-roi-stage-grid { display: grid; grid-template-columns: 1fr; gap: 10px; }
  #rk-roi-guide .rk-roi-stage {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    align-items: center;
    gap: 14px;
    min-width: 0;
    min-height: 78px;
    padding: 13px 16px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    color: var(--rk-dark);
    background: #ffffff;
    text-align: left;
    transition: transform .18s ease, border-color .18s ease, background .18s ease;
  }
  #rk-roi-guide .rk-roi-stage:hover,
  #rk-roi-guide .rk-roi-stage:focus-visible { transform: translateX(3px); border-color: var(--rk-blue); }
  #rk-roi-guide .rk-roi-stage.is-active { border-color: var(--rk-blue); background: var(--rk-cyan-soft); box-shadow: 0 10px 24px rgba(7, 143, 190, .11); }
  #rk-roi-guide .rk-roi-stage-number {
    display: grid !important;
    place-items: center !important;
    width: 46px !important;
    min-width: 46px !important;
    max-width: 46px !important;
    height: 46px !important;
    min-height: 46px !important;
    max-height: 46px !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 50% !important;
    color: var(--rk-dark) !important;
    background: #d9f5f8 !important;
    font-size: .8rem !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    text-align: center !important;
    position: static !important;
    transform: none !important;
  }
  #rk-roi-guide .rk-roi-stage:nth-child(2) .rk-roi-stage-number { background: #ffdfd4 !important; }
  #rk-roi-guide .rk-roi-stage:nth-child(3) .rk-roi-stage-number { background: #dff5ed !important; }
  #rk-roi-guide .rk-roi-stage:nth-child(4) .rk-roi-stage-number { background: #e5e1ff !important; }
  #rk-roi-guide .rk-roi-stage:nth-child(5) .rk-roi-stage-number { background: #fff0bd !important; }
  #rk-roi-guide .rk-roi-stage-copy { display: block; min-width: 0; }
  #rk-roi-guide .rk-roi-stage-copy b { display: block; margin-bottom: 3px; color: var(--rk-dark); font-size: .73rem; line-height: 1.3; }
  #rk-roi-guide .rk-roi-stage-copy small { display: block; color: var(--rk-muted); font-size: .57rem; line-height: 1.38; }
  #rk-roi-guide .rk-roi-stage-detail { display: flex; flex-direction: column; justify-content: center; min-width: 0; padding: clamp(25px, 4vw, 38px); border-radius: 20px; color: #ffffff; background: linear-gradient(145deg, #112b3d, #155767); }
  #rk-roi-guide .rk-roi-stage-detail h3 { color: #ffffff; }
  #rk-roi-guide .rk-roi-stage-detail p { color: #e3f1f3; }
  #rk-roi-guide .rk-roi-stage-detail p:last-child { margin-bottom: 0; }
  #rk-roi-guide .rk-roi-stage-detail strong { color: #ffffff !important; }
  #rk-roi-guide .rk-roi-stage-tag { display: inline-flex; align-self: flex-start; margin-bottom: 11px; padding: 6px 10px; border-radius: 999px; color: #7cecf7; background: rgba(255, 255, 255, .09); font-size: .59rem; font-weight: 900; text-transform: uppercase; }
  #rk-roi-guide .rk-roi-stage-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; margin-top: 13px; }
  #rk-roi-guide .rk-roi-stage-detail-card { min-width: 0; padding: 16px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 14px; background: rgba(255, 255, 255, .075); }
  #rk-roi-guide .rk-roi-stage-detail-label { display: block; margin-bottom: 6px; color: #7cecf7; font-size: .58rem; font-weight: 900; letter-spacing: .055em; line-height: 1.3; text-transform: uppercase; }
  #rk-roi-guide .rk-roi-stage-detail-card p { margin: 0; color: #ffffff; font-size: .67rem; font-weight: 700; line-height: 1.5; }
  #rk-roi-guide .rk-roi-stage-detail-card { min-width: 0; padding: 16px; border: 1px solid rgba(255, 255, 255, .11); border-radius: 14px; background: rgba(255, 255, 255, .075); }
  #rk-roi-guide .rk-roi-stage-detail-label { display: block; margin-bottom: 6px; color: #7cecf7; font-size: .57rem; font-weight: 900; letter-spacing: .055em; line-height: 1.3; text-transform: uppercase; }
  #rk-roi-guide .rk-roi-stage-detail-card p { margin: 0; color: #edf7f8; font-size: .66rem; line-height: 1.52; }

  #rk-roi-guide .rk-pg-checklist,
  #rk-roi-guide .rk-pg-crosslist { margin: 22px 0; padding: 0; list-style: none; }
  #rk-roi-guide .rk-pg-checklist li,
  #rk-roi-guide .rk-pg-crosslist li { position: relative; margin-bottom: 10px; padding: 12px 14px 12px 45px; border-radius: 12px; background: var(--rk-soft); }
  #rk-roi-guide .rk-pg-checklist li::before,
  #rk-roi-guide .rk-pg-crosslist li::before {
    position: absolute;
    top: 12px;
    left: 13px;
    display: grid;
    place-items: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    color: #ffffff;
    background: var(--rk-green);
    content: "✓";
    font-size: .68rem;
    font-weight: 900;
    line-height: 1;
  }
  #rk-roi-guide .rk-pg-crosslist li::before { background: var(--rk-red); content: "×"; }

  #rk-roi-guide .rk-roi-cta {
    position: relative;
    overflow: hidden;
    margin: 34px 0;
    padding: clamp(27px, 6vw, 44px);
    border-radius: 24px;
    color: #ffffff;
    background: linear-gradient(135deg, #102c40 0%, #176777 68%, #157c78 100%);
  }
  #rk-roi-guide .rk-roi-cta::after {
    position: absolute;
    right: -70px;
    bottom: -115px;
    width: 270px;
    height: 270px;
    border: 35px solid rgba(255, 255, 255, .06);
    border-radius: 50%;
    content: "";
  }
  #rk-roi-guide .rk-roi-cta > * { position: relative; z-index: 1; }
  #rk-roi-guide .rk-roi-cta-kicker { display: block; margin-bottom: 7px; color: #7cecf7; font-size: .65rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
  #rk-roi-guide .rk-roi-cta h3 { max-width: 850px; color: #ffffff; font-size: clamp(1.4rem, 3.5vw, 2.15rem); }
  #rk-roi-guide .rk-roi-cta p { max-width: 870px; color: #e5f3f6; }
  #rk-roi-guide .rk-roi-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 13px 20px;
    border-radius: 999px;
    color: #ffffff !important;
    background: var(--rk-orange);
    box-shadow: 0 10px 25px rgba(255, 106, 61, .26);
    font-size: .75rem;
    font-weight: 900;
    line-height: 1.25;
    text-decoration: none;
  }
  #rk-roi-guide .rk-roi-cta-button:hover,
  #rk-roi-guide .rk-roi-cta-button:focus-visible { color: #ffffff !important; background: #e9552d; }

  #rk-roi-guide .rk-pg-sources { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 24px; }
  #rk-roi-guide .rk-pg-source { min-width: 0; padding: 20px; border: 1px solid var(--rk-line); border-radius: 16px; background: var(--rk-soft); }
  #rk-roi-guide .rk-pg-source p { margin: 7px 0 0; color: var(--rk-text); font-size: .78rem; line-height: 1.55; }
  #rk-roi-guide .rk-pg-faq { display: grid; gap: 10px; margin-top: 24px; }
  #rk-roi-guide .rk-pg-faq details { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
  #rk-roi-guide .rk-pg-faq summary { position: relative; padding: 18px 52px 18px 19px; color: var(--rk-dark); font-weight: 900; line-height: 1.35; cursor: pointer; list-style: none; }
  #rk-roi-guide .rk-pg-faq summary::-webkit-details-marker { display: none; }
  #rk-roi-guide .rk-pg-faq summary::after { position: absolute; top: 50%; right: 18px; width: 25px; height: 25px; border-radius: 50%; color: var(--rk-blue); background: var(--rk-cyan-soft); content: "+"; font-size: 1.05rem; font-weight: 900; line-height: 25px; text-align: center; transform: translateY(-50%); }
  #rk-roi-guide .rk-pg-faq details[open] summary::after { content: "−"; }
  #rk-roi-guide .rk-pg-faq-answer { padding: 0 19px 18px; color: var(--rk-text); }
  #rk-roi-guide .rk-pg-faq-answer p:last-child { margin-bottom: 0; }

  #rk-roi-guide .rk-pg-author { margin-top: 56px; overflow: hidden; border-radius: 24px; color: #ffffff; background: linear-gradient(135deg, #102536, #174b5b); }
  #rk-roi-guide .rk-pg-author-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 22px; padding: 29px clamp(22px, 5vw, 42px); border-bottom: 1px solid rgba(255, 255, 255, .12); }
  #rk-roi-guide .rk-pg-author-head h2 { margin-bottom: 6px; color: #ffffff; }
  #rk-roi-guide .rk-pg-author-head p { margin-bottom: 0; color: #dcecf0; }
  #rk-roi-guide .rk-pg-author-head .rk-pg-eyebrow { color: #7cecf7; }
  #rk-roi-guide .rk-pg-author-mark { flex: 0 0 auto; padding: 8px 11px; border: 1px solid rgba(255, 255, 255, .18); border-radius: 999px; color: #ffffff; font-size: .62rem; font-weight: 900; }
  #rk-roi-guide .rk-pg-author-layout { display: grid; grid-template-columns: 245px minmax(0, 1fr); }
  #rk-roi-guide .rk-pg-author-side { padding: 30px 25px; border-right: 1px solid rgba(255, 255, 255, .12); text-align: center; }
  #rk-roi-guide .rk-pg-author-photo { width: 132px; height: 132px; margin: 0 auto 16px; overflow: hidden; border: 5px solid rgba(255, 255, 255, .15); border-radius: 50%; }
  #rk-roi-guide .rk-pg-author-photo img { width: 100%; height: 100%; object-fit: cover; }
  #rk-roi-guide .rk-pg-author-name { margin-bottom: 5px; font-size: 1.12rem; font-weight: 900; }
  #rk-roi-guide .rk-pg-author-name a { color: #ffffff; text-decoration: none; }
  #rk-roi-guide .rk-pg-author-role { color: #cfe4e9; font-size: .7rem; line-height: 1.55; }
  #rk-roi-guide .rk-pg-author-social-label { margin-top: 20px; color: #8beff7; font-size: .58rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
  #rk-roi-guide .rk-pg-author-social { display: flex; justify-content: center; gap: 9px; margin-top: 9px; }
  #rk-roi-guide .rk-pg-author-social a { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; color: #ffffff; background: rgba(255, 255, 255, .1); }
  #rk-roi-guide .rk-pg-author-social svg { width: 18px; height: 18px; fill: currentColor; }
  #rk-roi-guide .rk-pg-author-main { min-width: 0; padding: 32px clamp(23px, 5vw, 42px); }
  #rk-roi-guide .rk-pg-author-quote { position: relative; margin: 0 0 24px; padding: 4px 0 4px 58px; border: 0; }
  #rk-roi-guide .rk-pg-author-quote::before { position: absolute; top: -11px; left: 0; color: #6ee9f5; content: "“"; font-family: Georgia, serif; font-size: 4.4rem; line-height: 1; }
  #rk-roi-guide .rk-pg-author-quote p { margin-bottom: 0; color: #ffffff; font-size: 1.02rem; font-weight: 740; }
  #rk-roi-guide .rk-pg-author-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
  #rk-roi-guide .rk-pg-author-card { min-width: 0; padding: 16px; border-radius: 14px; background: rgba(255, 255, 255, .075); }
  #rk-roi-guide .rk-pg-author-card b { display: block; margin-bottom: 5px; color: #8beff7 !important; font-size: .69rem; }
  #rk-roi-guide .rk-pg-author-card p { margin-bottom: 0; color: #d8e9ed; font-size: .68rem; line-height: 1.55; }
  #rk-roi-guide .rk-pg-mini-label { margin-top: 22px; color: #8beff7; font-size: .58rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
  #rk-roi-guide .rk-pg-portals { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
  #rk-roi-guide .rk-pg-portals a { padding: 7px 10px; border: 1px solid rgba(255, 255, 255, .15); border-radius: 999px; color: #ffffff; font-size: .62rem; text-decoration: none; }

  @media (max-width: 1020px) {
    #rk-roi-guide .rk-roi-calculator-layout,
    #rk-roi-guide .rk-roi-stage-layout { grid-template-columns: 1fr; }
    #rk-roi-guide .rk-roi-stage-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-roi-guide .rk-roi-stage:last-child { grid-column: 1 / -1; }
  }
  @media (max-width: 900px) {
    #rk-roi-guide .rk-pg-grid-3,
    #rk-roi-guide .rk-pg-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-roi-guide .rk-pg-author-layout { grid-template-columns: 1fr; }
    #rk-roi-guide .rk-pg-author-side { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .12); }
    #rk-roi-guide .rk-roi-milestones { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 720px) {
    #rk-roi-guide { margin-top: 20px; font-size: 16px; }
    #rk-roi-guide .rk-pg-shell { border-radius: 19px; }
    #rk-roi-guide .rk-pg-hero-metrics,
    #rk-roi-guide .rk-pg-grid-2,
    #rk-roi-guide .rk-pg-grid-3,
    #rk-roi-guide .rk-pg-grid-4,
    #rk-roi-guide .rk-pg-factor-grid,
    #rk-roi-guide .rk-pg-sources,
    #rk-roi-guide .rk-pg-author-cards,
    #rk-roi-guide .rk-roi-input-grid,
    #rk-roi-guide .rk-roi-variant-grid { grid-template-columns: 1fr; }
    #rk-roi-guide .rk-roi-input-grid .is-wide { grid-column: auto; }
    #rk-roi-guide .rk-pg-formula-main,
    #rk-roi-guide .rk-pg-author-head,
    #rk-roi-guide .rk-roi-chart-top { display: block; }
    #rk-roi-guide .rk-pg-formula-result { display: inline-block; margin-top: 14px; }
    #rk-roi-guide .rk-pg-author-mark { display: inline-block; margin-top: 14px; }
    #rk-roi-guide .rk-roi-chart-top .rk-roi-tabs { margin-top: 13px; }
    #rk-roi-guide .rk-roi-stage-grid,
    #rk-roi-guide .rk-roi-stage-detail-grid { grid-template-columns: 1fr; }
    #rk-roi-guide .rk-roi-stage:last-child { grid-column: auto; }
    #rk-roi-guide .rk-roi-stage { min-height: 74px; }
    #rk-roi-guide .rk-pg-table-wrap { overflow: visible; border: 0; background: transparent; }
    #rk-roi-guide table,
    #rk-roi-guide thead,
    #rk-roi-guide tbody,
    #rk-roi-guide tr,
    #rk-roi-guide th,
    #rk-roi-guide td { display: block; width: 100%; }
    #rk-roi-guide thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
    #rk-roi-guide tbody { display: grid; gap: 13px; }
    #rk-roi-guide tr { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 16px; background: var(--rk-white); }
    #rk-roi-guide td { position: relative; min-height: 54px; padding: 31px 15px 12px; border-bottom: 1px solid var(--rk-line); background: #ffffff !important; }
    #rk-roi-guide td:last-child { border-bottom: 0; }
    #rk-roi-guide td::before { position: absolute; top: 9px; left: 15px; color: var(--rk-blue); content: attr(data-label); font-size: .56rem; font-weight: 900; letter-spacing: .045em; text-transform: uppercase; }
  }
  @media (max-width: 500px) {
    #rk-roi-guide .rk-pg-hero { padding-left: 21px; padding-right: 21px; }
    #rk-roi-guide .rk-pg-content { padding-left: 16px; padding-right: 16px; }
    #rk-roi-guide .rk-pg-nav { padding-left: 15px; padding-right: 15px; }
    #rk-roi-guide .rk-pg-nav a { font-size: .61rem; }
    #rk-roi-guide .rk-pg-tool-body { padding-left: 13px; padding-right: 13px; }
    #rk-roi-guide .rk-pg-factor { grid-template-columns: 52px minmax(0, 1fr); gap: 13px; padding: 18px 15px; }
    #rk-roi-guide .rk-roi-tabs { display: grid; grid-template-columns: 1fr; }
    #rk-roi-guide .rk-roi-tab { width: 100%; }
    #rk-roi-guide .rk-roi-result-grid,
    #rk-roi-guide .rk-roi-milestones { grid-template-columns: 1fr; }
    #rk-roi-guide .rk-roi-result-card.is-wide { grid-column: auto; }
    #rk-roi-guide .rk-roi-chart { min-height: 310px; }
    #rk-roi-guide .rk-pg-author-main { padding-left: 18px; padding-right: 18px; }
    #rk-roi-guide .rk-roi-cta-button { width: 100%; text-align: center; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-roi-guide *,
    #rk-roi-guide *::before,
    #rk-roi-guide *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
  }
</style>

<article id="rk-roi-guide" aria-labelledby="rk-roi-visual-title">
  <div class="rk-pg-shell">
    <header class="rk-pg-hero">
      <span class="rk-pg-kicker">Najpierw porównanie, później liczba lat</span>
      <div class="rk-pg-hero-title" id="rk-roi-visual-title">Zwrot z podłogówki <span>nie jest jedną stałą wartością</span></div>
      <p class="rk-pg-lead">Okres zwrotu zależy od tego, czy liczymy dopłatę w nowym domu, pełną modernizację, dwa emitery z tym samym źródłem czy jednoczesną zmianę całej instalacji. Poniżej oddzielamy koszt inwestycji od zużycia energii i sprawdzamy prosty zwrot, zwrot zdyskontowany, NPV oraz całkowity koszt w wybranym okresie.</p>

      <div class="rk-pg-hero-tags" aria-label="Zakres poradnika">
        <span class="rk-pg-hero-tag">podłogówka a grzejniki</span>
        <span class="rk-pg-hero-tag">ROI i okres zwrotu</span>
        <span class="rk-pg-hero-tag">TCO i NPV</span>
        <span class="rk-pg-hero-tag">SCOP i sprawność sezonowa</span>
        <span class="rk-pg-hero-tag">nowy dom i modernizacja</span>
      </div>

      <div class="rk-pg-byline" aria-label="Informacje o publikacji">
        <span><strong>Autor:</strong> Robert Kucharski</span>
        <span><strong>Czas czytania:</strong> około 28 minut</span>
        <span><strong>Aktualizacja techniczna:</strong> 13 września 2026 r.</span>
      </div>

      <div class="rk-pg-hero-metrics" aria-label="Trzy najważniejsze odpowiedzi">
        <div class="rk-pg-hero-metric"><b>Podstawa porównania</b><span>W nowym domu liczymy przede wszystkim różnicę nakładów, a w modernizacji pełny koszt przebudowy.</span></div>
        <div class="rk-pg-hero-metric"><b>Źródło oszczędności</b><span>Podłoga nie zmniejsza strat budynku; może za to umożliwić pracę źródła przy korzystniejszych parametrach.</span></div>
        <div class="rk-pg-hero-metric"><b>Wynik finansowy</b><span>Prosty okres zwrotu to dopiero początek. Pełniejszy obraz dają TCO, NPV i bilans skumulowany.</span></div>
      </div>
    </header>

    <nav class="rk-pg-nav" aria-label="Na skróty — wszystkie główne sekcje artykułu">
      <span class="rk-pg-nav-label">Na skróty</span>
      <div class="rk-pg-nav-track">
        <a href="#rk-roi-odpowiedz">Krótka odpowiedź</a>
        <a href="#rk-roi-porownanie">Co porównujemy</a>
        <a href="#rk-roi-miary">ROI, TCO i NPV</a>
        <a href="#rk-roi-dane">Potrzebne dane</a>
        <a href="#rk-roi-lancuch">Skąd oszczędność</a>
        <a href="#rk-roi-kalkulator">Kalkulator i wykres</a>
        <a href="#rk-roi-interpretacja">Interpretacja</a>
        <a href="#rk-roi-pompa">Pompa ciepła</a>
        <a href="#rk-roi-zrodla">Inne źródła</a>
        <a href="#rk-roi-taryfy">Taryfy dynamiczne</a>
        <a href="#rk-roi-budynek">Nowy dom czy remont</a>
        <a href="#rk-roi-projekt">Wpływ projektu</a>
        <a href="#rk-roi-wnioski">Wnioski</a>
        <a href="#rk-roi-bibliografia">Źródła</a>
        <a href="#rk-roi-faq">FAQ</a>
        <a href="#rk-roi-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-pg-content">
      <section class="rk-pg-section" id="rk-roi-odpowiedz">
        <span class="rk-pg-eyebrow">Odpowiedź w 60 sekund</span>
        <h2>Po ilu latach zwraca się ogrzewanie podłogowe?</h2>
        <div class="rk-pg-answer">
          <p><strong>Nie ma jednego wiarygodnego okresu zwrotu ogrzewania podłogowego.</strong> Wynik może wynosić kilka, kilkanaście albo więcej lat, a w niektórych wariantach inwestycja nie zwróci się w przyjętym horyzoncie wyłącznie z oszczędności eksploatacyjnych. Najpierw trzeba ustalić różnicę kosztów początkowych, roczne zapotrzebowanie na ciepło, sprawność sezonową źródła, ceny energii, koszty serwisu i przewidywane wymiany urządzeń.</p>
        </div>
        <p>Podłogówka jest emiterem ciepła. Sama nie sprawia, że budynek traci mniej energii przez ściany, dach, okna czy wentylację. Jej przewaga ekonomiczna może pojawić się wtedy, gdy większa powierzchnia grzejna pozwala obniżyć temperaturę zasilania, poprawić sezonowe warunki pracy źródła albo lepiej dopasować pracę układu do budynku. Dlatego pytanie o <strong>zwrot z inwestycji w ogrzewanie podłogowe</strong> powinno brzmieć: „względem jakiego realnego wariantu i przy jakich danych?”.</p>
        <p>Jeżeli porównujesz kompletne systemy wodny i elektryczny, użyj również osobnego <a href="https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/">kalkulatora kosztów podłogówki elektrycznej i wodnej</a>. Ten poradnik ma inną rolę: pokazuje zwrot, TCO i NPV przede wszystkim dla podłogi oraz wariantu odniesienia, którym mogą być grzejniki albo własna alternatywa.</p>
        <div class="rk-pg-warning"><p><strong>Nie wpisuj do kalkulatora mocy projektowej w kW jako rocznego zużycia.</strong> Projektowe obciążenie cieplne opisuje moc potrzebną w określonych warunkach, a energia użytkowa do ogrzewania jest liczona w kWh/rok. Zobacz, czym jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-roi-porownanie">
        <span class="rk-pg-eyebrow">Granice analizy</span>
        <h2>Co właściwie porównujemy: nowy dom, modernizację czy dwa źródła ciepła?</h2>
        <p class="rk-pg-intro">Największy błąd powstaje jeszcze przed pierwszym działaniem matematycznym: do jednego zestawienia trafiają koszty, które dotyczą różnych zakresów prac. Rzetelne porównanie musi mieć wspólny punkt odniesienia.</p>

        <div class="rk-pg-table-wrap">
          <table>
            <thead>
              <tr><th>Sytuacja</th><th>Co wpisujemy jako nakład?</th><th>Co pokazuje wynik?</th><th>Najważniejsze ryzyko błędu</th></tr>
            </thead>
            <tbody>
              <tr><td data-label="Sytuacja"><strong>Nowy dom</strong></td><td data-label="Nakład">Różnicę pomiędzy kompletną podłogówką a kompletnym wariantem odniesienia.</td><td data-label="Wynik">Czy dopłata do wybranego emitera może zostać odzyskana w eksploatacji.</td><td data-label="Ryzyko">Wpisanie całej ceny podłogówki, choć drugi wariant również wymaga instalacji.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Modernizacja istniejącego domu</strong></td><td data-label="Nakład">Demontaż, przygotowanie podłoża, instalację, warstwy podłogi, automatykę i prace odtworzeniowe.</td><td data-label="Wynik">Czy pełna przebudowa broni się finansowo względem pozostawienia lub odnowienia instalacji istniejącej.</td><td data-label="Ryzyko">Pominięcie wysokości zabudowy, drzwi, schodów, posadzek i robocizny odtworzeniowej.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Podłogówka i grzejniki z tym samym źródłem</strong></td><td data-label="Nakład">Koszt obu instalacji przy identycznym źródle oraz tej samej granicy systemu.</td><td data-label="Wynik">Wpływ temperatury zasilania, sprawności sezonowej i hydrauliki bez mieszania efektu wymiany źródła.</td><td data-label="Ryzyko">Przypisanie podłogówce całej oszczędności wynikającej z nowej pompy ciepła.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Dwa różne kompletne systemy</strong></td><td data-label="Nakład">Emitery, źródła, osprzęt, przyłącza, komin, magazyn paliwa, serwis i wymiany.</td><td data-label="Wynik">Całkowitą różnicę ekonomiczną dwóch rozwiązań.</td><td data-label="Ryzyko">Wniosek o opłacalności samej podłogi na podstawie zmiany wielu elementów naraz.</td></tr>
            </tbody>
          </table>
        </div>

        <p>W nowym budynku warto porównywać nakład różnicowy. Jeśli podłogówka kosztuje 48 000 zł, a realny system grzejnikowy 36 000 zł, punktem startowym dla zwrotu jest dopłata 12 000 zł, nie całe 48 000 zł. W modernizacji sytuacja bywa odwrotna: pozostawienie grzejników może wymagać niewielkiej korekty, a wykonanie ogrzewania podłogowego bez wylewki lub w systemie mokrym uruchamia szeroki zakres prac. Pomocne będzie wcześniejsze zestawienie, <a href="https://projekt-ogrzewania.pl/jakie-ogrzewanie-podlogowe-wybrac-wodne-czy-elektryczne/">jakie ogrzewanie podłogowe wybrać — wodne czy elektryczne</a>, oraz analiza <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-wodne-bez-wylewki/">wodnej podłogówki bez wylewki</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-roi-miary">
        <span class="rk-pg-eyebrow">Trzy odpowiedzi na trzy różne pytania</span>
        <h2>Prosty okres zwrotu, TCO i NPV — czym się różnią?</h2>
        <div class="rk-pg-grid-3">
          <article class="rk-pg-card is-cyan">
            <div class="rk-pg-card-icon">1</div>
            <h3>Prosty okres zwrotu</h3>
            <p>Pokazuje moment, w którym nominalne skumulowane oszczędności pokrywają dodatkowy koszt początkowy. Jest czytelny, lecz nie uwzględnia wartości pieniądza w czasie.</p>
          </article>
          <article class="rk-pg-card is-orange">
            <div class="rk-pg-card-icon">2</div>
            <h3>TCO</h3>
            <p>Całkowity koszt posiadania obejmuje inwestycję, energię, serwis oraz wpisane wymiany w całym horyzoncie. Pozwala porównać warianty także wtedy, gdy klasyczny zwrot nie występuje.</p>
          </article>
          <article class="rk-pg-card is-green">
            <div class="rk-pg-card-icon">3</div>
            <h3>NPV</h3>
            <p>Wartość bieżąca netto dyskontuje przyszłe różnice kosztów. Dodatnie NPV wariantu A oznacza, że po uwzględnieniu stopy dyskontowej bilans względem wariantu B jest korzystny.</p>
          </article>
        </div>

        <div class="rk-pg-formula" aria-label="Podstawowe zależności kalkulatora">
          <div class="rk-pg-formula-main">
            <div class="rk-pg-formula-equation">energia kupiona = ciepło użytkowe / sprawność sezonowa</div>
            <span class="rk-pg-formula-result">najpierw energia, później koszt</span>
          </div>
          <p><strong>Koszt roczny</strong> to energia kupiona pomnożona przez efektywną cenę jednostkową oraz powiększona o serwis. <strong>Bilans wariantu A</strong> zaczyna się od różnicy nakładów, a w kolejnych latach zmienia się o różnicę kosztów eksploatacji i wpisanych wymian.</p>
        </div>

        <p>Prosty zwrot jest dobrym skrótem komunikacyjnym, ale nie powinien sam decydować o inwestycji liczonej na 20–30 lat. Dwa warianty mogą mieć podobny okres zwrotu, a zupełnie inny koszt całkowity. Mogą też nie osiągnąć progu zwrotu w wybranym okresie, a mimo to jeden z nich będzie racjonalny ze względu na komfort, chłodzenie, estetykę, trwałość albo planowaną zmianę źródła. Kalkulator celowo pokazuje kilka miar równocześnie.</p>
      </section>

      <section class="rk-pg-section" id="rk-roi-dane">
        <span class="rk-pg-eyebrow">Jakość wyniku zaczyna się przed kalkulatorem</span>
        <h2>Jakie dane są potrzebne do obliczenia opłacalności podłogówki?</h2>
        <p class="rk-pg-intro">Najlepszy kalkulator nie naprawi przypadkowych założeń. Zanim porównasz systemy, zbierz osiem grup danych i zaznacz, które są pomiarem, ofertą, wynikiem obliczeń, a które tylko scenariuszem.</p>

        <div class="rk-pg-factor-grid">
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>1</span></div><div class="rk-pg-factor-copy"><h3>Roczna energia użytkowa</h3><p>Najlepiej przyjąć wynik analizy energetycznej budynku w kWh/rok. Skrót powierzchnia razy wskaźnik jest wyłącznie szacunkiem, nie pełnym OZC ani audytem.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>2</span></div><div class="rk-pg-factor-copy"><h3>Porównywalny zakres inwestycji</h3><p>Oba warianty muszą obejmować te same granice: źródło albo bez źródła, automatykę, rozdział, posadzki, prace budowlane i uruchomienie.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>3</span></div><div class="rk-pg-factor-copy"><h3>Sprawność sezonowa</h3><p>Dla pompy ciepła wpisujemy SPF lub wiarygodny SCOP skorygowany do konkretnego systemu. Dla kotła używamy sezonowej sprawności odniesionej do tej samej podstawy paliwa.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>4</span></div><div class="rk-pg-factor-copy"><h3>Efektywna cena energii</h3><p>Powinna odpowiadać kosztowi zmiennemu właściwemu dla analizowanego paliwa lub energii. Opłaty stałe ujmujemy tylko wtedy, gdy rzeczywiście różnią warianty.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>5</span></div><div class="rk-pg-factor-copy"><h3>Serwis i energia pomocnicza</h3><p>Uwzględnij przeglądy, czyszczenie, energię pomp, grzałek i automatyki, jeżeli są istotne i nie zostały już zawarte w sprawności sezonowej.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>6</span></div><div class="rk-pg-factor-copy"><h3>Wymiany w cyklu życia</h3><p>Jeżeli zakładasz wymianę sprężarki, kotła, grzałki, pomp lub automatyki, wpisz rok i koszt w obu wariantach — albo pozostaw oba pola zerowe.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>7</span></div><div class="rk-pg-factor-copy"><h3>Wzrost cen i stopa dyskontowa</h3><p>To scenariusze, nie fakty. Warto policzyć wariant ostrożny, bazowy i niekorzystny zamiast traktować jedną prognozę jako pewność.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>8</span></div><div class="rk-pg-factor-copy"><h3>Realne parametry instalacji</h3><p>Zakładana niska temperatura zasilania musi być osiągalna przy obciążeniu pomieszczeń, aktywnej powierzchni, okładzinie, rozstawie rur i przepływach.</p></div></article>
        </div>

        <p>Jeśli nie masz jeszcze danych projektowych, sprawdź <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje projekt ogrzewania podłogowego</a> oraz <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">czy do podłogówki potrzebny jest projekt</a>. Koszt obliczeń warto potraktować jako element inwestycji, a nie jako niezależny dodatek ukrywany poza analizą.</p>
      </section>

      <section class="rk-pg-section" id="rk-roi-lancuch">
        <span class="rk-pg-eyebrow">Interaktywna grafika edukacyjna</span>
        <h2>Skąd może brać się oszczędność na ogrzewaniu podłogowym?</h2>
        <p class="rk-pg-intro">Kliknij etap. Grafika rozdziela zapotrzebowanie budynku, parametry emitera, sprawność źródła i wynik finansowy. Dzięki temu nie przypisujemy podłodze oszczędności, która faktycznie powstała w innym miejscu systemu.</p>

        <div class="rk-pg-tool" id="rk-roi-stage-tool">
          <div class="rk-pg-tool-head">
            <span class="rk-pg-tool-kicker">Od bilansu budynku do bilansu pieniędzy</span>
            <h3>Sprawdź, który parametr naprawdę zmienia okres zwrotu</h3>
            <p>Wybierz jeden z pięciu etapów. Po prawej zobaczysz jego wpływ na wynik oraz dane, które trzeba zweryfikować przed użyciem kalkulatora.</p>
          </div>
          <div class="rk-pg-tool-body">
            <div class="rk-roi-stage-layout">
              <div class="rk-roi-stage-grid" role="group" aria-label="Etapy powstawania wyniku ekonomicznego">
                <button class="rk-roi-stage is-active" type="button" data-rk-roi-stage="demand" aria-pressed="true"><span class="rk-roi-stage-number">1</span><span class="rk-roi-stage-copy"><b>Roczna energia użytkowa</b><small>Wspólny punkt wyjścia obu wariantów</small></span></button>
                <button class="rk-roi-stage" type="button" data-rk-roi-stage="emitter" aria-pressed="false"><span class="rk-roi-stage-number">2</span><span class="rk-roi-stage-copy"><b>Temperatura wymagana przez emiter</b><small>Łączy obciążenie pomieszczenia z parametrami wody</small></span></button>
                <button class="rk-roi-stage" type="button" data-rk-roi-stage="source" aria-pressed="false"><span class="rk-roi-stage-number">3</span><span class="rk-roi-stage-copy"><b>Sprawność sezonowa źródła</b><small>Zamienia potrzebne ciepło na energię kupowaną</small></span></button>
                <button class="rk-roi-stage" type="button" data-rk-roi-stage="cost" aria-pressed="false"><span class="rk-roi-stage-number">4</span><span class="rk-roi-stage-copy"><b>Cena energii i serwis</b><small>Zamienia zużycie na rzeczywisty koszt roczny</small></span></button>
                <button class="rk-roi-stage" type="button" data-rk-roi-stage="balance" aria-pressed="false"><span class="rk-roi-stage-number">5</span><span class="rk-roi-stage-copy"><b>Dopłata, czas i dyskonto</b><small>Tworzą prosty zwrot, TCO oraz NPV</small></span></button>
              </div>
              <div class="rk-roi-stage-detail" aria-live="polite">
                <span class="rk-roi-stage-tag" id="rk-roi-stage-tag">Punkt wyjścia</span>
                <h3 id="rk-roi-stage-title">Podłogówka nie zmienia strat budynku</h3>
                <p id="rk-roi-stage-copy">Dla tej samej temperatury wewnętrznej i tych samych warunków zewnętrznych budynek potrzebuje zbliżonej ilości ciepła niezależnie od nazwy emitera. Różnice użytkowe mogą wynikać z nastaw i sposobu eksploatacji, ale nie należy wpisywać ich z góry jako stałego procentu.</p>
                <div class="rk-roi-stage-detail-grid">
                  <div class="rk-roi-stage-detail-card"><span class="rk-roi-stage-detail-label">Wpływ na wynik</span><p id="rk-roi-stage-impact">Im większe roczne zapotrzebowanie, tym większa kwotowa różnica między wariantami o różnej sprawności.</p></div>
                  <div class="rk-roi-stage-detail-card"><span class="rk-roi-stage-detail-label">Co zweryfikować</span><p id="rk-roi-stage-check">Roczną energię użytkową w kWh/rok — nie projektową moc w kW.</p></div>
                </div>
              </div>
            </div>
            <div class="rk-pg-tool-disclaimer"><strong>Praktyczna kolejność:</strong> potwierdź energię użytkową i wymagania emitera, następnie wpisz sprawność oraz koszty, a dopiero na końcu oceniaj zwrot. Pominięcie wcześniejszego etapu może skrócić okres zwrotu wyłącznie na papierze.</div>
          </div>
        </div>
      </section>

      <section class="rk-pg-section" id="rk-roi-kalkulator">
        <span class="rk-pg-eyebrow">Narzędzie główne · kalkulator plus wykres</span>
        <h2>Kalkulator zwrotu z inwestycji w ogrzewanie podłogowe</h2>
        <p class="rk-pg-intro">Porównaj wariant A — domyślnie podłogówkę — z wariantem B, na przykład instalacją grzejnikową. Możesz wczytać dane przykładowe, ale wynik nabiera wartości dopiero po zastąpieniu ich własnymi ofertami, cenami i parametrami sezonowymi.</p>

        <div class="rk-pg-tool" id="rk-roi-calculator-tool">
          <div class="rk-pg-tool-head">
            <span class="rk-pg-tool-kicker">ROI, TCO, NPV i bilans do 30 lat</span>
            <h3>Porównaj dwa kompletne warianty na tej samej granicy systemu</h3>
            <p>Najpierw wybierz kontekst, później sprawdź energię, sprawność, ceny, serwis i nakłady. Wykres oraz wszystkie wyniki aktualizują się po każdej zmianie.</p>
          </div>
          <div class="rk-pg-tool-body">
            <div class="rk-roi-tabs" role="group" aria-label="Wczytaj przykładowy kontekst analizy">
              <button class="rk-roi-tab is-active" type="button" data-rk-roi-preset="new" aria-pressed="true">Przykład: nowy dom</button>
              <button class="rk-roi-tab" type="button" data-rk-roi-preset="retrofit" aria-pressed="false">Przykład: modernizacja</button>
              <button class="rk-roi-tab" type="button" data-rk-roi-preset="own" aria-pressed="false">Zostaw własne dane</button>
            </div>

            <div class="rk-roi-calculator-layout">
              <div class="rk-roi-controls">
                <div class="rk-roi-block">
                  <span class="rk-roi-block-title">1. Roczne ciepło potrzebne do ogrzewania</span>
                  <div class="rk-roi-input-grid">
                    <div class="rk-roi-field is-wide">
                      <label for="rk-roi-demand-mode">Sposób podania energii użytkowej</label>
                      <select id="rk-roi-demand-mode">
                        <option value="direct" selected>Wpisuję roczną energię użytkową</option>
                        <option value="estimate">Szacuję z powierzchni i wskaźnika</option>
                      </select>
                    </div>
                    <div class="rk-roi-field is-wide" id="rk-roi-demand-direct-wrap">
                      <label for="rk-roi-demand">Roczna energia użytkowa do ogrzewania [kWh/rok]</label>
                      <input id="rk-roi-demand" type="number" min="500" max="100000" step="100" value="9000" inputmode="decimal">
                      <small class="rk-roi-help">Nie jest to moc w kW ani energia elektryczna pobrana przez pompę ciepła.</small>
                    </div>
                    <div class="rk-roi-field" id="rk-roi-area-wrap" hidden>
                      <label for="rk-roi-area">Ogrzewana powierzchnia [m²]</label>
                      <input id="rk-roi-area" type="number" min="20" max="1000" step="1" value="150" inputmode="decimal">
                    </div>
                    <div class="rk-roi-field" id="rk-roi-index-wrap" hidden>
                      <label for="rk-roi-index">Wskaźnik energii użytkowej [kWh/(m²·rok)]</label>
                      <input id="rk-roi-index" type="number" min="5" max="400" step="1" value="60" inputmode="decimal">
                      <small class="rk-roi-help">Tryb orientacyjny. Nie zastępuje analizy energetycznej budynku.</small>
                    </div>
                  </div>
                </div>

                <div class="rk-roi-block">
                  <span class="rk-roi-block-title">2. Warianty porównania</span>
                  <div class="rk-roi-variant-grid">
                    <div class="rk-roi-variant is-a">
                      <h4>Wariant A · podłogówka</h4>
                      <div class="rk-roi-field">
                        <label for="rk-roi-name-a">Nazwa wariantu</label>
                        <input id="rk-roi-name-a" type="text" value="Podłogówka">
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-source-a">Źródło energii</label>
                        <select id="rk-roi-source-a">
                          <option value="heatpump" selected>Pompa ciepła</option>
                          <option value="gas">Kocioł gazowy</option>
                          <option value="pellet">Kocioł na pellet</option>
                          <option value="electric">Energia elektryczna bezpośrednia</option>
                          <option value="custom">Własny wariant</option>
                        </select>
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-factor-a"><span id="rk-roi-factor-label-a">SPF / sezonowy współczynnik</span></label>
                        <input id="rk-roi-factor-a" type="number" min="0.1" max="10" step="0.01" value="4.10" inputmode="decimal">
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-price-a">Cena kupowanej energii [zł/kWh]</label>
                        <input id="rk-roi-price-a" type="number" min="0.01" max="10" step="0.01" value="1.15" inputmode="decimal">
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-capex-a">Pełny koszt inwestycji [zł]</label>
                        <input id="rk-roi-capex-a" type="number" min="0" max="1000000" step="500" value="48000" inputmode="decimal">
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-service-a">Serwis roczny [zł/rok]</label>
                        <input id="rk-roi-service-a" type="number" min="0" max="50000" step="50" value="650" inputmode="decimal">
                      </div>
                    </div>

                    <div class="rk-roi-variant is-b">
                      <h4>Wariant B · odniesienie</h4>
                      <div class="rk-roi-field">
                        <label for="rk-roi-name-b">Nazwa wariantu</label>
                        <input id="rk-roi-name-b" type="text" value="Grzejniki">
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-source-b">Źródło energii</label>
                        <select id="rk-roi-source-b">
                          <option value="heatpump" selected>Pompa ciepła</option>
                          <option value="gas">Kocioł gazowy</option>
                          <option value="pellet">Kocioł na pellet</option>
                          <option value="electric">Energia elektryczna bezpośrednia</option>
                          <option value="custom">Własny wariant</option>
                        </select>
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-factor-b"><span id="rk-roi-factor-label-b">SPF / sezonowy współczynnik</span></label>
                        <input id="rk-roi-factor-b" type="number" min="0.1" max="10" step="0.01" value="3.20" inputmode="decimal">
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-price-b">Cena kupowanej energii [zł/kWh]</label>
                        <input id="rk-roi-price-b" type="number" min="0.01" max="10" step="0.01" value="1.15" inputmode="decimal">
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-capex-b">Pełny koszt inwestycji [zł]</label>
                        <input id="rk-roi-capex-b" type="number" min="0" max="1000000" step="500" value="36000" inputmode="decimal">
                      </div>
                      <div class="rk-roi-field">
                        <label for="rk-roi-service-b">Serwis roczny [zł/rok]</label>
                        <input id="rk-roi-service-b" type="number" min="0" max="50000" step="50" value="650" inputmode="decimal">
                      </div>
                    </div>
                  </div>
                  <small class="rk-roi-help">Wartości po wybraniu źródła są wyłącznie startowym przykładem. Wprowadź sezonowe dane dla konkretnej instalacji i tej samej granicy bilansu.</small>
                </div>

                <div class="rk-roi-block">
                  <span class="rk-roi-block-title">3. Horyzont i założenia finansowe</span>
                  <div class="rk-roi-input-grid">
                    <div class="rk-roi-field">
                      <label for="rk-roi-years">Horyzont analizy [lata]</label>
                      <input id="rk-roi-years" type="number" min="5" max="30" step="1" value="25" inputmode="numeric">
                    </div>
                    <div class="rk-roi-field">
                      <label for="rk-roi-growth">Roczna zmiana cen energii [%]</label>
                      <input id="rk-roi-growth" type="number" min="-10" max="30" step="0.1" value="2.5" inputmode="decimal">
                    </div>
                    <div class="rk-roi-field">
                      <label for="rk-roi-service-growth">Roczna zmiana kosztu serwisu [%]</label>
                      <input id="rk-roi-service-growth" type="number" min="-10" max="30" step="0.1" value="2.5" inputmode="decimal">
                    </div>
                    <div class="rk-roi-field">
                      <label for="rk-roi-discount">Stopa dyskontowa [%]</label>
                      <input id="rk-roi-discount" type="number" min="0" max="30" step="0.1" value="4.0" inputmode="decimal">
                    </div>
                  </div>

                  <details class="rk-roi-advanced">
                    <summary>Wymiany urządzeń w cyklu życia</summary>
                    <div class="rk-roi-advanced-body">
                      <div class="rk-roi-input-grid">
                        <div class="rk-roi-field"><label for="rk-roi-replace-year-a">Rok wymiany A</label><input id="rk-roi-replace-year-a" type="number" min="0" max="30" step="1" value="15" inputmode="numeric"></div>
                        <div class="rk-roi-field"><label for="rk-roi-replace-cost-a">Koszt wymiany A [zł]</label><input id="rk-roi-replace-cost-a" type="number" min="0" max="1000000" step="500" value="0" inputmode="decimal"></div>
                        <div class="rk-roi-field"><label for="rk-roi-replace-year-b">Rok wymiany B</label><input id="rk-roi-replace-year-b" type="number" min="0" max="30" step="1" value="15" inputmode="numeric"></div>
                        <div class="rk-roi-field"><label for="rk-roi-replace-cost-b">Koszt wymiany B [zł]</label><input id="rk-roi-replace-cost-b" type="number" min="0" max="1000000" step="500" value="0" inputmode="decimal"></div>
                      </div>
                      <small class="rk-roi-help">Kwoty traktowane są jako nominalny wydatek w podanym roku. Zero oznacza brak przyjętej wymiany.</small>
                    </div>
                  </details>

                  <details class="rk-roi-advanced">
                    <summary>Opcjonalny scenariusz taryfy dynamicznej</summary>
                    <div class="rk-roi-advanced-body">
                      <div class="rk-roi-switch">
                        <input id="rk-roi-tariff-on" type="checkbox">
                        <label for="rk-roi-tariff-on">Oblicz efektywną cenę dla źródeł elektrycznych z udziału energii przeniesionej do tańszych godzin.</label>
                      </div>
                      <div id="rk-roi-tariff-fields" hidden>
                        <div class="rk-roi-input-grid">
                          <div class="rk-roi-field"><label for="rk-roi-low-price">Cena w tańszych godzinach [zł/kWh]</label><input id="rk-roi-low-price" type="number" min="-2" max="10" step="0.01" value="0.75" inputmode="decimal"></div>
                          <div class="rk-roi-field"><label for="rk-roi-high-price">Cena w pozostałych godzinach [zł/kWh]</label><input id="rk-roi-high-price" type="number" min="0" max="10" step="0.01" value="1.35" inputmode="decimal"></div>
                          <div class="rk-roi-field"><label for="rk-roi-cheap-share-a">Udział tańszych godzin A [%]</label><input id="rk-roi-cheap-share-a" type="number" min="0" max="100" step="1" value="55" inputmode="decimal"></div>
                          <div class="rk-roi-field"><label for="rk-roi-cheap-share-b">Udział tańszych godzin B [%]</label><input id="rk-roi-cheap-share-b" type="number" min="0" max="100" step="1" value="35" inputmode="decimal"></div>
                        </div>
                        <small class="rk-roi-help">Model dotyczy wyłącznie pompy ciepła i ogrzewania elektrycznego. Nie przewiduje przyszłych cen godzinowych ani wszystkich składników rachunku.</small>
                      </div>
                    </div>
                  </details>
                </div>
              </div>

              <aside class="rk-roi-results" aria-live="polite">
                <h4>Wynik dla podanych założeń</h4>
                <div class="rk-roi-result-grid">
                  <div class="rk-roi-result-card"><span>Energia użytkowa</span><strong id="rk-roi-out-demand">—</strong><small>ciepło potrzebne budynkowi</small></div>
                  <div class="rk-roi-result-card"><span>Dopłata do wariantu A</span><strong id="rk-roi-out-extra">—</strong><small>koszt A minus koszt B</small></div>
                  <div class="rk-roi-result-card"><span>Energia kupiona A</span><strong id="rk-roi-out-energy-a">—</strong><small id="rk-roi-out-factor-a">po sprawności sezonowej</small></div>
                  <div class="rk-roi-result-card"><span>Energia kupiona B</span><strong id="rk-roi-out-energy-b">—</strong><small id="rk-roi-out-factor-b">po sprawności sezonowej</small></div>
                  <div class="rk-roi-result-card"><span>Koszt A w 1. roku</span><strong id="rk-roi-out-year-a">—</strong><small>energia plus serwis</small></div>
                  <div class="rk-roi-result-card"><span>Koszt B w 1. roku</span><strong id="rk-roi-out-year-b">—</strong><small>energia plus serwis</small></div>
                  <div class="rk-roi-result-card"><span>Prosty okres zwrotu</span><strong id="rk-roi-out-payback">—</strong><small>bez dyskontowania</small></div>
                  <div class="rk-roi-result-card"><span>Zwrot zdyskontowany</span><strong id="rk-roi-out-discounted-payback">—</strong><small>z podaną stopą dyskontową</small></div>
                  <div class="rk-roi-result-card"><span>NPV wariantu A</span><strong id="rk-roi-out-npv">—</strong><small id="rk-roi-out-npv-note">względem wariantu B</small></div>
                  <div class="rk-roi-result-card"><span>Różnica TCO</span><strong id="rk-roi-out-tco-diff">—</strong><small>dodatnia oznacza niższe TCO wariantu A</small></div>
                  <div class="rk-roi-result-card is-wide"><span>Całkowity koszt w horyzoncie</span><strong id="rk-roi-out-tco">—</strong><small>nominalna suma inwestycji, energii, serwisu i wpisanych wymian</small></div>
                </div>
                <div class="rk-roi-result-summary" id="rk-roi-out-summary"><strong>Uzupełnij dane.</strong> Tutaj pojawi się opis wyniku bez automatycznego wskazywania „zwycięzcy” dla każdego domu.</div>
              </aside>
            </div>

            <div class="rk-roi-chart-panel">
              <div class="rk-roi-chart-top">
                <div>
                  <h4>Skumulowany bilans wariantu A względem wariantu B</h4>
                  <p>Wartość ujemna oznacza nieodzyskaną dopłatę lub wyższy koszt A. Wartość dodatnia oznacza przewagę A w danym roku.</p>
                </div>
                <div class="rk-roi-tabs" role="group" aria-label="Rodzaj bilansu na wykresie">
                  <button class="rk-roi-tab is-active" type="button" data-rk-roi-chart-mode="nominal" aria-pressed="true">Nominalny</button>
                  <button class="rk-roi-tab" type="button" data-rk-roi-chart-mode="discounted" aria-pressed="false">Zdyskontowany</button>
                </div>
              </div>
              <div class="rk-roi-chart-wrap">
                <svg class="rk-roi-chart" id="rk-roi-chart" viewBox="0 0 820 380" role="img" aria-labelledby="rk-roi-chart-title rk-roi-chart-desc">
                  <title id="rk-roi-chart-title">Wykres skumulowanego bilansu ekonomicznego</title>
                  <desc id="rk-roi-chart-desc">Linia pokazuje bilans wariantu A względem wariantu B od roku zerowego do końca wybranego horyzontu.</desc>
                  <g id="rk-roi-chart-grid"></g>
                  <line class="rk-zero" id="rk-roi-chart-zero" x1="70" y1="190" x2="792" y2="190"></line>
                  <polygon class="rk-area" id="rk-roi-chart-area" points=""></polygon>
                  <polyline class="rk-line" id="rk-roi-chart-line" points=""></polyline>
                  <circle class="rk-cross" id="rk-roi-chart-cross" cx="0" cy="0" r="7" hidden></circle>
                  <circle class="rk-focus" id="rk-roi-chart-focus" cx="62" cy="190" r="6"></circle>
                  <g id="rk-roi-chart-labels"></g>
                  <text class="rk-axis-title" x="427" y="370" text-anchor="middle">rok analizy</text>
                  <text class="rk-axis-title" x="17" y="190" text-anchor="middle" transform="rotate(-90 17 190)">bilans A względem B [zł]</text>
                </svg>
              </div>
              <div class="rk-roi-year-control">
                <div class="rk-roi-year-row"><label for="rk-roi-chart-year">Sprawdź wybrany rok</label><output id="rk-roi-chart-year-output" for="rk-roi-chart-year">rok 0: —</output></div>
                <input id="rk-roi-chart-year" type="range" min="0" max="25" step="1" value="0">
              </div>
              <div class="rk-roi-milestones" id="rk-roi-milestones" aria-label="Bilans w latach kontrolnych"></div>
            </div>

            <div class="rk-pg-tool-disclaimer"><strong>Ważne:</strong> kalkulator jest narzędziem porównawczym, nie ofertą, audytem ani prognozą cen. Nie uwzględnia finansowania, podatków, dotacji, wartości rezydualnej, zmian zachowania użytkowników ani godzinowej symulacji pompy ciepła. Wartości przykładowe nie są zaleceniami projektowymi.</div>
          </div>
        </div>
      </section>

      <aside class="rk-roi-cta" aria-label="Projekt ogrzewania podłogowego">
        <span class="rk-roi-cta-kicker">Kalkulator policzył skutek założeń. Projekt musi potwierdzić, czy są osiągalne</span>
        <h3>Sprawdźmy, czy podłogówka pokryje straty przy parametrach, które pozwolą źródłu pracować efektywnie</h3>
        <p>Zakładanego SPF nie tworzy sama nazwa „ogrzewanie podłogowe”. Trzeba zweryfikować obciążenie każdego pomieszczenia, powierzchnię czynną, okładzinę, rozstaw i długości pętli, przepływy oraz wymagane temperatury zasilania.</p>
        <a class="rk-roi-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź projekt ogrzewania podłogowego</a>
      </aside>

      <section class="rk-pg-section" id="rk-roi-interpretacja">
        <span class="rk-pg-eyebrow">Wynik bez skrótów myślowych</span>
        <h2>Jak interpretować okres zwrotu, NPV i wykres?</h2>
        <p>W roku zerowym wykres pokazuje różnicę kosztów inwestycyjnych. Jeżeli wariant A jest droższy, linia startuje poniżej zera. Każdy kolejny rok dodaje różnicę kosztów eksploatacji. W roku wpisanej wymiany pojawia się jednorazowa zmiana odpowiadająca różnicy wydatków obu wariantów.</p>

        <div class="rk-pg-grid-3">
          <article class="rk-pg-card is-cyan"><div class="rk-pg-card-icon">A</div><h3>Linia przecina zero</h3><p>W danym scenariuszu skumulowane korzyści A pokryły wcześniejszą dopłatę. Nie oznacza to gwarancji — tylko wynik dla podanych cen, sprawności i kosztów.</p></article>
          <article class="rk-pg-card is-orange"><div class="rk-pg-card-icon">B</div><h3>Linia nie dochodzi do zera</h3><p>Wariant A nie odzyskuje dopłaty w wybranym horyzoncie. Nadal porównaj TCO oraz korzyści pozafinansowe, ale nie nazywaj ich oszczędnością na rachunku.</p></article>
          <article class="rk-pg-card is-green"><div class="rk-pg-card-icon">C</div><h3>Wynik zmienia znak drugi raz</h3><p>Może się tak stać po kosztownej wymianie lub zmianie relacji kosztów. Sam pierwszy rok zwrotu nie opisuje wtedy końcowego bilansu.</p></article>
        </div>

        <p>Dodatnie NPV oznacza, że wariant A daje korzystniejszy zdyskontowany bilans od B w wybranym czasie. Ujemne NPV mówi, ile wynosi przewaga wariantu B po przeliczeniu przyszłych różnic na wartość bieżącą. TCO jest sumą nominalną, dlatego może prowadzić do innej liczby niż NPV. To nie sprzeczność, tylko inna miara.</p>
        <div class="rk-pg-note"><p><strong>Wykonaj analizę wrażliwości.</strong> Zmień kolejno energię użytkową, sprawność sezonową, cenę energii, nakłady i stopę dyskontową. Jeżeli drobna korekta jednego założenia zmienia decyzję, wynik jest wrażliwy i wymaga lepszych danych, a nie mocniejszego nagłówka.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-roi-pompa">
        <span class="rk-pg-eyebrow">Najczęstszy mechanizm korzyści</span>
        <h2>Podłogówka i pompa ciepła — jak temperatura zasilania wpływa na SPF?</h2>
        <p class="rk-pg-intro">W pompie ciepła niższa wymagana temperatura po stronie instalacji może poprawić warunki pracy sprężarki. Nie należy jednak zamieniać tej zależności w stałą obietnicę jednego COP dla podłogi i drugiego dla grzejników.</p>
        <p>COP jest wynikiem w określonym punkcie pomiarowym. SCOP opisuje sezon według określonej metody, a SPF może obejmować rzeczywisty bilans szerszego systemu. Do kalkulatora najlepiej wpisać sezonowy współczynnik odpowiadający tej samej granicy energii w obu wariantach. Jeżeli jeden wynik obejmuje grzałkę, pompy obiegowe i przygotowanie ciepłej wody, a drugi nie, porównanie jest niespójne.</p>

        <div class="rk-pg-grid-2">
          <article class="rk-pg-card is-cyan"><h3>Co może poprawić wynik?</h3><ul class="rk-pg-checklist"><li>Niższa wymagana temperatura zasilania przy projektowych warunkach.</li><li>Stabilna praca pogodowa i ograniczenie zbędnego taktowania.</li><li>Przepływy zgodne z zapotrzebowaniem oraz wymaganiami źródła.</li><li>Rozstaw i powierzchnia czynna dobrane do obciążenia pomieszczeń.</li></ul></article>
          <article class="rk-pg-card is-orange"><h3>Co może zniszczyć założenie?</h3><ul class="rk-pg-crosslist"><li>Zbyt mała powierzchnia grzejna lub duży opór okładziny.</li><li>Podnoszenie krzywej grzewczej zamiast usunięcia problemu hydraulicznego.</li><li>Masowe zamykanie pętli i brak minimalnego przepływu przez pompę.</li><li>Przyjęcie katalogowego punktu COP jako rocznego SPF instalacji.</li></ul></article>
        </div>

        <p>Więcej o tej zależności wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niskiej temperaturze zasilania pompy ciepła</a>. Liczby trzeba jednak potwierdzić na podstawie charakterystyk konkretnego urządzenia oraz projektu. Istotne są również <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza podłogówki</a>, <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">dobór pompy obiegowej</a> i prawidłowy <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-roi-zrodla">
        <span class="rk-pg-eyebrow">Nie tylko pompa ciepła</span>
        <h2>Kocioł gazowy, pellet i ogrzewanie elektryczne — jak liczyć różne źródła?</h2>
        <p>Ten sam wzór energii można zastosować do różnych źródeł, ale znaczenie pola „sprawność sezonowa” się zmienia. Dla ogrzewania elektrycznego bezpośredniego wartość jest bliska jedności w granicy urządzenia, natomiast koszt zależy przede wszystkim od ceny energii i sterowania. Dla kotłów sprawność trzeba odnieść do tej samej wartości opałowej paliwa i całego sezonu, a nie do maksymalnej sprawności z folderu.</p>

        <div class="rk-pg-table-wrap">
          <table>
            <thead><tr><th>Źródło</th><th>Co wpisujemy w polu sprawności?</th><th>Co dopisać do kosztu?</th><th>Powiązanie z podłogówką</th></tr></thead>
            <tbody>
              <tr><td data-label="Źródło"><strong>Pompa ciepła</strong></td><td data-label="Sprawność">Sezonowy SPF lub uzasadniony SCOP dla przyjętej granicy.</td><td data-label="Koszt">Energię pomocniczą i grzałkę, jeżeli nie są już objęte współczynnikiem.</td><td data-label="Powiązanie">Niższa temperatura może poprawić warunki pracy, ale wymaga odpowiedniej powierzchni emitera.</td></tr>
              <tr><td data-label="Źródło"><strong>Kocioł gazowy</strong></td><td data-label="Sprawność">Sprawność sezonową na spójnej podstawie wartości opałowej.</td><td data-label="Koszt">Serwis, energię pomocniczą, komin lub przyłącze, jeśli różnicują warianty.</td><td data-label="Powiązanie">Niższy powrót może sprzyjać kondensacji, lecz efekt zależy od konkretnego układu.</td></tr>
              <tr><td data-label="Źródło"><strong>Kocioł na pellet lub paliwo stałe</strong></td><td data-label="Sprawność">Sezonową sprawność całego cyklu, nie tylko punkt nominalny.</td><td data-label="Koszt">Obsługę, czyszczenie, prąd, magazynowanie oraz osprzęt hydrauliczny.</td><td data-label="Powiązanie">Wymaga kontroli temperatury, ochrony źródła i często bufora lub mieszania.</td></tr>
              <tr><td data-label="Źródło"><strong>Ogrzewanie elektryczne</strong></td><td data-label="Sprawność">Sprawność w przyjętej granicy, zwykle bliską 1 dla zamiany prądu na ciepło.</td><td data-label="Koszt">Efektywną cenę kWh, moc zamówioną i elementy stałe tylko wtedy, gdy się różnią.</td><td data-label="Powiązanie">Mniejszy nakład może konkurować z wyższym kosztem energii w długim okresie.</td></tr>
            </tbody>
          </table>
        </div>

        <p>Przy źródle wysokotemperaturowym sama podłogówka nie zwalnia z zaprojektowania zabezpieczeń i regulacji. Zobacz <a href="https://projekt-ogrzewania.pl/kotly-na-paliwa-stale-w-ogrzewaniu-podlogowym/">kotły na paliwa stałe w ogrzewaniu podłogowym</a>, rolę <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworu mieszającego</a> oraz porównanie <a href="https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/">bufora z grzałkami i pompy ciepła</a>. Każdy dodatkowy element powinien znaleźć się po właściwej stronie TCO.</p>
      </section>

      <section class="rk-pg-section" id="rk-roi-taryfy">
        <span class="rk-pg-eyebrow">Elastyczność ma wartość tylko wtedy, gdy jest wykorzystywana</span>
        <h2>Taryfa dynamiczna a ogrzewanie podłogowe — możliwość, nie gwarancja oszczędności</h2>
        <p class="rk-pg-intro">Bezwładność podłogi może ułatwiać przesuwanie części poboru na korzystniejsze godziny, ale nie oznacza automatycznie określonego udziału taniej energii. Efekt zależy od cen godzinowych, pogody, mocy źródła, strat budynku, komfortu i sterowania.</p>
        <p>Opcjonalny moduł kalkulatora wyznacza prostą średnią ważoną z dwóch cen i udziału energii w tańszych godzinach. To scenariusz edukacyjny. Rzeczywista umowa z ceną dynamiczną korzysta z danych godzinowych, a rachunek może zawierać również inne składniki. Aktualne zasady i oferty trzeba weryfikować w materiałach <a href="https://maszwybor.ure.gov.pl/" target="_blank" rel="nofollow noopener noreferrer">Urzędu Regulacji Energetyki</a>.</p>
        <div class="rk-pg-warning"><p><strong>Nie wpisuj z góry, że podłogówka przeniesie 70% energii do tanich godzin.</strong> W dzień projektowy budynek może potrzebować ciągłej pracy, a agresywne ładowanie posadzki może podnieść temperaturę zasilania, pogorszyć sprawność pompy lub powodować przegrzewanie. Zależność trzeba sprawdzić dla konkretnego domu i taryfy.</p></div>
        <p>Przy planowaniu sterowania uwzględnij <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplną podłogi</a>, rolę <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatu</a> i ograniczenia <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowania strefowego</a>. Automatyka nie zastępuje właściwej temperatury zasilania ani równoważenia hydraulicznego.</p>
      </section>

      <section class="rk-pg-section" id="rk-roi-budynek">
        <span class="rk-pg-eyebrow">Ten sam emiter, inny rachunek ekonomiczny</span>
        <h2>Zwrot podłogówki w nowym domu i starym budynku</h2>
        <div class="rk-pg-grid-2">
          <article class="rk-pg-card is-green">
            <h3>Nowy dom: porównuj dopłatę</h3>
            <p>Warstwy podłogi, instalacje i posadzki powstają od zera, więc część kosztów występuje w obu wariantach. Analiza powinna obejmować różnicę pełnych ofert, a nie przypisywać podłogówce wszystkich prac budowlanych.</p>
            <p>Niski poziom zapotrzebowania rocznego ogranicza wartość możliwych oszczędności. W dobrze izolowanym domu nawet duża procentowa poprawa sprawności może oznaczać niewielką kwotę rocznie.</p>
          </article>
          <article class="rk-pg-card is-orange">
            <h3>Modernizacja: policz pełną przebudowę</h3>
            <p>Demontaż posadzki, korekty poziomów, drzwi, schodów, izolacji i wykończenia mogą dominować nad ceną rur. Z kolei system suchy zmienia nakład, masę i możliwą moc, więc nie powinien być liczony jak tradycyjna wylewka.</p>
            <p>W pierwszej kolejności warto ograniczyć zapotrzebowanie budynku. Wtedy można ponownie dobrać źródło i emitery, zamiast projektować je do strat sprzed termomodernizacji.</p>
          </article>
        </div>
        <p>W obu sytuacjach komfort, brak grzejników na ścianach i możliwość swobodnej aranżacji mają wartość, ale nie należy automatycznie zamieniać ich na procent wzrostu ceny nieruchomości. Jeżeli taka wartość ma wejść do analizy, powinna pochodzić z konkretnej wyceny lub scenariusza, a nie z uniwersalnej obietnicy.</p>
      </section>

      <section class="rk-pg-section" id="rk-roi-projekt">
        <span class="rk-pg-eyebrow">Optymalizacja kosztów zaczyna się od obliczeń</span>
        <h2>Jak projekt podłogówki wpływa na późniejsze rachunki?</h2>
        <p class="rk-pg-intro">Projekt nie gwarantuje ceny energii, ale może ograniczyć ryzyko, że instalacja będzie wymagała wyższej temperatury, nadmiernej pracy pomp albo kosztownych poprawek. To właśnie parametry osiągalne w budynku powinny trafić do kalkulatora finansowego.</p>

        <div class="rk-pg-factor-grid">
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>1</span></div><div class="rk-pg-factor-copy"><h3>Obciążenie każdego pomieszczenia</h3><p>Średnia dla całego domu nie pokaże łazienki, dużego przeszklenia ani pomieszczenia z małą powierzchnią czynną.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>2</span></div><div class="rk-pg-factor-copy"><h3>Rzeczywista powierzchnia czynna</h3><p>Moc na metr kwadratowy trzeba odnieść do fragmentu podłogi oddającego ciepło, a nie automatycznie do całej powierzchni użytkowej.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>3</span></div><div class="rk-pg-factor-copy"><h3>Rozstaw, okładzina i temperatura</h3><p><a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">Rozstaw rur 10 czy 15 cm</a> wynika z obliczeń wraz z oporem posadzki i temperaturami, a nie z jednej reguły dla domu.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>4</span></div><div class="rk-pg-factor-copy"><h3>Pętle i hydraulika</h3><p><a href="https://projekt-ogrzewania.pl/petla-grzewcza/">Długość pętli grzewczej</a>, <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur</a>, przepływy i opory muszą umożliwić przekazanie wymaganej mocy.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>5</span></div><div class="rk-pg-factor-copy"><h3>Okładzina podłogowa</h3><p>Opór drewna, paneli, podkładu i kleju może podnieść wymaganą temperaturę. Sprawdź <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">drewno na ogrzewanie podłogowe</a>.</p></div></article>
          <article class="rk-pg-factor"><div class="rk-pg-step-badge"><span>6</span></div><div class="rk-pg-factor-copy"><h3>Granice temperatury</h3><p><a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">Maksymalna temperatura zasilania</a> nie jest domyślną nastawą eksploatacyjną ani rozwiązaniem zbyt małej powierzchni.</p></div></article>
        </div>

        <p>Optymalizacja nie polega na mechanicznym zagęszczeniu rur wszędzie. Krótsze pętle i mniejszy rozstaw zwiększają ilość materiału oraz mogą zmienić hydraulikę, lecz nie zawsze dają proporcjonalny spadek kosztu energii. Warto oddzielić wpływ geometrii instalacji od wpływu temperatury i źródła, tak jak pokazuje analiza <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%C2%B2/">rzeczywistych oszczędności i rozstawu rur</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-roi-wnioski">
        <span class="rk-pg-eyebrow">Decyzja oparta na scenariuszach</span>
        <h2>Czy ogrzewanie podłogowe się opłaca?</h2>
        <p><strong>Może się opłacać, ale nie dlatego, że każda podłogówka ma przypisany stały procent oszczędności.</strong> Ekonomiczna przewaga powstaje z konkretnej różnicy nakładów i późniejszych kosztów. Najbardziej przejrzyste porównanie dotyczy dwóch emiterów z tym samym źródłem. Dopiero osobno warto policzyć zmianę źródła, taryfy lub sposobu sterowania.</p>
        <ul class="rk-pg-checklist">
          <li>W nowym domu licz dopłatę względem pełnego wariantu alternatywnego.</li>
          <li>W modernizacji uwzględnij całość prac budowlanych i odtworzeniowych.</li>
          <li>Wpisuj roczną energię użytkową, nie projektową moc w kW.</li>
          <li>Stosuj sezonową sprawność na tej samej granicy systemu.</li>
          <li>Sprawdź prosty zwrot, zwrot zdyskontowany, TCO i NPV.</li>
          <li>Policz co najmniej trzy scenariusze cen i sprawności.</li>
          <li>Potwierdź w projekcie, czy zakładana temperatura i przepływy są realne.</li>
        </ul>
        <p>Do szacowania całego budżetu eksploatacyjnego możesz wykorzystać również poradnik o <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszcie ogrzewania domu</a>. Nie łącz jednak automatycznie wyników dwóch kalkulatorów — najpierw sprawdź, czy posługują się tą samą energią, sprawnością, ceną i zakresem kosztów.</p>
      </section>

      <aside class="rk-roi-cta" aria-label="Zamówienie projektu ogrzewania podłogowego">
        <span class="rk-roi-cta-kicker">Zamknij techniczne założenia, zanim zamkniesz budżet</span>
        <h3>Zamów projekt podłogówki oparty na stratach pomieszczeń, temperaturach i hydraulice</h3>
        <p>Otrzymasz podstawę do rozmowy z wykonawcą i do własnego porównania ekonomicznego: obliczenia pomieszczeń, rozmieszczenie pętli, przepływy, rozdzielacze oraz parametry pracy dopasowane do źródła.</p>
        <a class="rk-roi-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      </aside>

      <section class="rk-pg-section" id="rk-roi-bibliografia">
        <span class="rk-pg-eyebrow">Podstawa regulacyjna i metodyczna</span>
        <h2>Źródła i dokumenty oficjalne</h2>
        <p class="rk-pg-intro">Źródła poniżej pomagają zweryfikować kontekst taryf dynamicznych, charakterystykę energetyczną budynków, metodę kosztu optymalnego i wymagania dla urządzeń. Nie zastępują danych konkretnego projektu ani oferty.</p>
        <div class="rk-pg-sources">
          <article class="rk-pg-source"><strong>Komisja Europejska — charakterystyka energetyczna budynków</strong><p>Oficjalny opis dyrektywy EPBD, jej celów oraz harmonogramu wdrażania. <a href="https://energy.ec.europa.eu/topics/energy-efficiency/energy-performance-buildings/energy-performance-buildings-directive_en" target="_blank" rel="nofollow noopener noreferrer">Otwórz źródło</a>.</p></article>
          <article class="rk-pg-source"><strong>EUR-Lex — Dyrektywa (UE) 2024/1275</strong><p>Tekst przekształconej dyrektywy w sprawie charakterystyki energetycznej budynków. <a href="https://eur-lex.europa.eu/eli/dir/2024/1275/oj/eng" target="_blank" rel="nofollow noopener noreferrer">Otwórz dokument</a>.</p></article>
          <article class="rk-pg-source"><strong>EUR-Lex — Rozporządzenie delegowane (UE) 2025/2273</strong><p>Ramy metodologii porównawczej dotyczącej poziomów optymalnych pod względem kosztów. <a href="https://eur-lex.europa.eu/eli/reg_del/2025/2273/oj" target="_blank" rel="nofollow noopener noreferrer">Otwórz dokument</a>.</p></article>
          <article class="rk-pg-source"><strong>EUR-Lex — wytyczne do obliczeń kosztu optymalnego</strong><p>Wytyczne Komisji dotyczące stosowania metodologii kosztowej w analizach budynków. <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:C_202506439" target="_blank" rel="nofollow noopener noreferrer">Otwórz wytyczne</a>.</p></article>
          <article class="rk-pg-source"><strong>URE — porównywarka ofert energii</strong><p>Oficjalne narzędzie i informacje dla odbiorców dotyczące porównywania ofert, w tym produktów dynamicznych. <a href="https://maszwybor.ure.gov.pl/" target="_blank" rel="nofollow noopener noreferrer">Otwórz serwis</a>.</p></article>
          <article class="rk-pg-source"><strong>Komisja Europejska — ogrzewacze pomieszczeń i wody</strong><p>Oficjalne informacje o ekoprojekcie i etykietowaniu energetycznym urządzeń grzewczych. <a href="https://energy-efficient-products.ec.europa.eu/ecodesign-and-energy-label/product-list/space-and-water-heaters_en" target="_blank" rel="nofollow noopener noreferrer">Otwórz źródło</a>.</p></article>
        </div>
        <div class="rk-pg-note"><p><strong>Kontekst prawny nie jest gwarancją zwrotu.</strong> Wymagania dotyczące efektywności budynków i metoda kosztu optymalnego nie oznaczają, że konkretna podłogówka podniesie wartość nieruchomości o stały procent albo zwróci się w określonej liczbie lat.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-roi-faq">
        <span class="rk-pg-eyebrow">Najczęstsze pytania inwestorów</span>
        <h2>FAQ — zwrot z inwestycji w ogrzewanie podłogowe</h2>
        <div class="rk-pg-faq">
          <details><summary>Po ilu latach zwraca się ogrzewanie podłogowe?</summary><div class="rk-pg-faq-answer"><p>Nie istnieje jeden okres dla wszystkich budynków. Trzeba porównać różnicę kosztów inwestycji z roczną różnicą kosztów energii, serwisu i wymian. Jeżeli skumulowane korzyści nie pokryją dopłaty w analizowanym czasie, kalkulator pokaże brak zwrotu w wybranym horyzoncie.</p></div></details>
          <details><summary>Czy podłogówka zawsze zużywa mniej energii niż grzejniki?</summary><div class="rk-pg-faq-answer"><p>Nie. Przy tej samej temperaturze wewnętrznej straty budynku nie zależą automatycznie od nazwy emitera. Oszczędność może wynikać z niższej wymaganej temperatury zasilania, lepszej sezonowej sprawności źródła, sterowania i rzeczywistego sposobu użytkowania.</p></div></details>
          <details><summary>Czy w nowym domu liczyć pełny koszt podłogówki?</summary><div class="rk-pg-faq-answer"><p>Do okresu zwrotu najczęściej należy przyjąć różnicę między kompletnym kosztem podłogówki a kompletnym kosztem realnego wariantu alternatywnego. Oba warianty powinny obejmować tę samą granicę systemu i wspólne prace.</p></div></details>
          <details><summary>Jak obliczyć zwrot podłogówki w starym domu?</summary><div class="rk-pg-faq-answer"><p>W modernizacji trzeba ująć demontaż, przygotowanie podłoża, instalację, warstwy podłogi, korekty wysokości, prace odtworzeniowe i osprzęt. Następnie porównuje się ten koszt z realnym wariantem pozostawienia lub przebudowy istniejącego ogrzewania.</p></div></details>
          <details><summary>Czym różni się prosty zwrot od NPV?</summary><div class="rk-pg-faq-answer"><p>Prosty zwrot wskazuje, kiedy nominalne oszczędności pokryją dopłatę. NPV dyskontuje przyszłe różnice kosztów do wartości bieżącej. Z tego powodu zdyskontowany okres zwrotu jest zwykle dłuższy, a czasem nie występuje w wybranym horyzoncie.</p></div></details>
          <details><summary>Jaki SCOP lub SPF wpisać dla pompy ciepła?</summary><div class="rk-pg-faq-answer"><p>Należy użyć sezonowego współczynnika odpowiadającego konkretnej instalacji, temperaturom pracy, klimatowi i tej samej granicy energii w obu wariantach. Pojedynczy katalogowy COP nie jest rocznym SPF.</p></div></details>
          <details><summary>Czy niższa temperatura zasilania skraca okres zwrotu?</summary><div class="rk-pg-faq-answer"><p>Może poprawić sezonowe warunki pracy pompy ciepła lub kotła kondensacyjnego, ale wielkość efektu zależy od urządzenia i instalacji. Najpierw trzeba potwierdzić, że podłoga pokryje obciążenie pomieszczeń przy założonej temperaturze.</p></div></details>
          <details><summary>Czy taryfa dynamiczna gwarantuje oszczędność na podłogówce?</summary><div class="rk-pg-faq-answer"><p>Nie. Wynik zależy od rzeczywistych cen godzinowych, możliwości przesuwania poboru, strat budynku, komfortu i sterowania. Bezwładność może dać elastyczność, ale nie gwarantuje stałego udziału energii kupowanej w tanich godzinach.</p></div></details>
          <details><summary>Czy kalkulator uwzględnia dotację i kredyt?</summary><div class="rk-pg-faq-answer"><p>Nie. Kalkulator liczy porównanie inwestycji, kosztów energii, serwisu i wpisanych wymian. Dotację można uwzględnić przez obniżenie właściwego kosztu początkowego, natomiast finansowanie wymaga osobnego modelu przepływów pieniężnych.</p></div></details>
          <details><summary>Dlaczego podłogówka może nie zwrócić się mimo niższych rachunków?</summary><div class="rk-pg-faq-answer"><p>Roczna oszczędność może być zbyt mała wobec dopłaty inwestycyjnej, zwłaszcza w budynku o niskim zapotrzebowaniu na ciepło. Wynik mogą dodatkowo zmienić stopa dyskontowa, serwis i koszt wymian.</p></div></details>
          <details><summary>Czy mniejszy rozstaw rur zawsze poprawia opłacalność?</summary><div class="rk-pg-faq-answer"><p>Nie. Rozstaw wpływa na pole temperatury, możliwą moc, temperaturę zasilania i koszt instalacji, lecz powinien wynikać z obliczeń pomieszczenia. Mechaniczne zagęszczenie rur nie daje stałego procentu oszczędności.</p></div></details>
          <details><summary>Czy wzrost wartości domu należy dodać do zwrotu?</summary><div class="rk-pg-faq-answer"><p>Tylko wtedy, gdy masz wiarygodną wycenę dla konkretnej nieruchomości i świadomie przyjmujesz ją jako scenariusz. Nie ma podstaw, aby każdej podłogówce przypisywać uniwersalny procent wzrostu wartości budynku.</p></div></details>
        </div>
      </section>

      <section class="rk-pg-section" id="rk-roi-autor">
        <div class="rk-pg-author">
          <div class="rk-pg-author-head">
            <div><span class="rk-pg-eyebrow">E-E-A-T i odpowiedzialność za treść</span><h2>Autor i weryfikacja merytoryczna</h2><p>Treść przygotowana z perspektywy projektowania cieplnego, hydrauliki i ekonomicznego porównywania wariantów instalacji.</p></div>
            <span class="rk-pg-author-mark">Aktualizacja: 13.09.2026</span>
          </div>
          <div class="rk-pg-author-layout">
            <aside class="rk-pg-author-side">
              <div class="rk-pg-author-photo"><img 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" decoding="async"></div>
              <div class="rk-pg-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
              <div class="rk-pg-author-role">Projektant instalacji sanitarnych i specjalista HVAC</div>
              <div class="rk-pg-author-social-label">Profile branżowe</div>
              <div class="rk-pg-author-social">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="Robert Kucharski na LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.86 0-2.14 1.45-2.14 2.95v5.66H9.34V8.98h3.42v1.57h.05c.48-.9 1.64-1.85 3.37-1.85 3.61 0 4.27 2.37 4.27 5.46v6.29ZM5.32 7.41a2.06 2.06 0 1 1 0-4.12 2.06 2.06 0 0 1 0 4.12ZM7.1 20.45H3.54V8.98H7.1v11.47Z"/></svg></a>
                <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M13.5 22v-9h3l.45-3.5H13.5V7.27c0-1.01.28-1.7 1.73-1.7H17V2.44A23.8 23.8 0 0 0 14.4 2C11.82 2 10 3.57 10 6.46V9.5H7V13h3v9h3.5Z"/></svg></a>
                <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer" aria-label="Projekt HVAC w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 3H22l-6.77 7.74L23.2 21h-6.24l-4.89-6.39L6.49 21H3.38l7.24-8.28L2.98 3h6.4l4.42 5.84L18.9 3Zm-1.09 16.2h1.72L8.44 4.7H6.59l11.22 14.5Z"/></svg></a>
              </div>
            </aside>
            <div class="rk-pg-author-main">
              <blockquote class="rk-pg-author-quote"><p>Moim zdaniem okres zwrotu nie jest cechą samej podłogówki. Jest wynikiem różnicy nakładów, sezonowej sprawności źródła, cen energii i czasu, przez który utrzymujemy te założenia.</p></blockquote>
              <div class="rk-pg-author-cards">
                <div class="rk-pg-author-card"><b>Praktyka projektowa</b><p>Analiza OZC, powierzchni czynnej, temperatur, rozstawów, pętli, przepływów, źródeł ciepła i automatyki.</p></div>
                <div class="rk-pg-author-card"><b>Metoda</b><p>Oddzielono energię użytkową od mocy, emiter od źródła oraz prosty zwrot od TCO, NPV i zdyskontowanego bilansu.</p></div>
                <div class="rk-pg-author-card"><b>Zakres aktualizacji</b><p>Usunięto uniwersalne okresy zwrotu, stałe procenty oszczędności, gwarantowany udział taniej taryfy i nieudokumentowany wzrost wartości domu.</p></div>
              </div>
              <div class="rk-pg-mini-label">Portale autora</div>
              <div class="rk-pg-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>
        </div>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "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"},
      "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/#robert-kucharski-image",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "caption": "Robert Kucharski — projektant instalacji sanitarnych",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image"},
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "knowsAbout": [
        "wodne ogrzewanie podłogowe",
        "obliczenia zapotrzebowania cieplnego",
        "hydraulika instalacji grzewczych",
        "pompy ciepła",
        "analiza kosztów instalacji"
      ],
      "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": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#webpage",
      "url": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/",
      "name": "Po ilu latach zwraca się podłogówka? Kalkulator 2026",
      "description": "Po ilu latach zwróci się ogrzewanie podłogowe? Kalkulator porówna na własnych danych dopłatę, koszty z grzejnikami, SCOP, NPV i bilans do 30 lat.",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#breadcrumb"},
      "dateModified": "2026-09-13",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#article"},
        {"@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#calculator"},
        {"@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#chart"},
        {"@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#educational-graphic"},
        {"@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt Ogrzewania",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Zwrot z inwestycji w ogrzewanie podłogowe",
          "item": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/"
        }
      ]
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#article",
      "headline": "Zwrot z inwestycji w ogrzewanie podłogowe – po ilu latach?",
      "alternativeHeadline": "Podłogówka czy grzejniki — kalkulator ROI, TCO i NPV",
      "description": "Poradnik pokazuje, jak policzyć prosty i zdyskontowany okres zwrotu ogrzewania podłogowego, całkowity koszt posiadania oraz NPV względem grzejników lub własnego wariantu.",
      "url": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "dateModified": "2026-09-13",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "articleSection": [
        "zwrot z inwestycji",
        "ogrzewanie podłogowe a grzejniki",
        "koszty eksploatacji",
        "pompa ciepła i SCOP",
        "TCO i NPV"
      ],
      "keywords": [
        "po ilu latach zwraca się ogrzewanie podłogowe",
        "kalkulator zwrotu z ogrzewania podłogowego",
        "ogrzewanie podłogowe czy grzejniki opłacalność",
        "koszt podłogówki a koszt grzejników",
        "SCOP pompy ciepła podłogówka a grzejniki",
        "NPV ogrzewania podłogowego"
      ],
      "citation": [
        "https://energy.ec.europa.eu/topics/energy-efficiency/energy-performance-buildings/energy-performance-buildings-directive_en",
        "https://eur-lex.europa.eu/eli/dir/2024/1275/oj/eng",
        "https://eur-lex.europa.eu/eli/reg_del/2025/2273/oj",
        "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:C_202506439",
        "https://maszwybor.ure.gov.pl/",
        "https://energy-efficient-products.ec.europa.eu/ecodesign-and-energy-label/product-list/space-and-water-heaters_en"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#calculator",
      "name": "Kalkulator zwrotu z inwestycji w ogrzewanie podłogowe",
      "url": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#rk-roi-kalkulator",
      "applicationCategory": "FinanceApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "description": "Edukacyjne narzędzie porównujące nakłady, energię kupowaną, koszty eksploatacji, prosty zwrot, zwrot zdyskontowany, TCO i NPV dwóch wariantów ogrzewania.",
      "isAccessibleForFree": true,
      "provider": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "offers": {"@type": "Offer", "price": "0", "priceCurrency": "PLN"},
      "featureList": [
        "porównanie nowego domu i modernizacji",
        "pompa ciepła, gaz, pellet i energia elektryczna",
        "prosty oraz zdyskontowany okres zwrotu",
        "TCO i NPV do 30 lat",
        "opcjonalny scenariusz taryfy dynamicznej"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#chart",
      "name": "Interaktywny wykres skumulowanego bilansu ogrzewania",
      "url": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#rk-roi-kalkulator",
      "applicationCategory": "FinanceApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "description": "Wykres pokazujący nominalny albo zdyskontowany bilans wariantu A względem wariantu B od roku zerowego do końca analizy.",
      "isAccessibleForFree": true,
      "provider": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "offers": {"@type": "Offer", "price": "0", "priceCurrency": "PLN"}
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#educational-graphic",
      "name": "Skąd bierze się oszczędność na ogrzewaniu podłogowym?",
      "url": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#rk-roi-lancuch",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "description": "Modułowa grafika wyjaśniająca zależność pomiędzy zapotrzebowaniem budynku, temperaturą emitera, sprawnością źródła, kosztem energii i bilansem inwestycji.",
      "isAccessibleForFree": true,
      "provider": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "offers": {"@type": "Offer", "price": "0", "priceCurrency": "PLN"}
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#howto",
      "name": "Jak przygotować dane do obliczenia zwrotu z podłogówki?",
      "description": "Sześć kroków prowadzących od zdefiniowania porównania do analizy wrażliwości wyniku.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Ustal wariant odniesienia", "text": "Zdecyduj, czy porównujesz podłogówkę z grzejnikami przy tym samym źródle, czy dwa kompletne systemy."},
        {"@type": "HowToStep", "position": 2, "name": "Wyznacz porównywalny nakład", "text": "W nowym domu policz różnicę kompletnych ofert, a w modernizacji uwzględnij również prace budowlane i odtworzeniowe."},
        {"@type": "HowToStep", "position": 3, "name": "Podaj energię użytkową", "text": "Użyj rocznego zapotrzebowania na ciepło w kWh, nie projektowej mocy w kW."},
        {"@type": "HowToStep", "position": 4, "name": "Wprowadź dane sezonowe", "text": "Dla obu wariantów wpisz sprawność sezonową, efektywną cenę energii i koszt serwisu na tej samej granicy."},
        {"@type": "HowToStep", "position": 5, "name": "Dodaj horyzont i dyskonto", "text": "Określ czas analizy, scenariusz zmian cen, stopę dyskontową i ewentualne wymiany."},
        {"@type": "HowToStep", "position": 6, "name": "Sprawdź wrażliwość", "text": "Zmień najważniejsze założenia i sprawdź, czy decyzja pozostaje stabilna w kilku scenariuszach."}
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#analysis-chain",
      "name": "Pięć etapów analizy ekonomicznej ogrzewania podłogowego",
      "numberOfItems": 5,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Ciepło potrzebne budynkowi", "description": "Roczna energia użytkowa stanowi wspólny punkt wyjścia porównania."},
        {"@type": "ListItem", "position": 2, "name": "Temperatura wymagana przez emiter", "description": "Obciążenie, powierzchnia i konstrukcja określają potrzebne parametry pracy."},
        {"@type": "ListItem", "position": 3, "name": "Sprawność sezonowa źródła", "description": "Parametry instalacji wpływają na ilość energii kupowanej przez cały sezon."},
        {"@type": "ListItem", "position": 4, "name": "Koszt energii i serwisu", "description": "Cena jednostkowa i koszty stałe zmieniają energię kupowaną w wydatek roczny."},
        {"@type": "ListItem", "position": 5, "name": "Bilans skumulowany", "description": "Różnica nakładów oraz kolejnych kosztów tworzy ROI, TCO i NPV."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Po ilu latach zwraca się ogrzewanie podłogowe?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie istnieje jeden okres dla wszystkich budynków. Trzeba porównać różnicę kosztów inwestycji z roczną różnicą kosztów energii, serwisu i wymian. Jeżeli skumulowane korzyści nie pokryją dopłaty w analizowanym czasie, kalkulator pokaże brak zwrotu w wybranym horyzoncie."}
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka zawsze zużywa mniej energii niż grzejniki?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Przy tej samej temperaturze wewnętrznej straty budynku nie zależą automatycznie od nazwy emitera. Oszczędność może wynikać z niższej wymaganej temperatury zasilania, lepszej sezonowej sprawności źródła, sterowania i rzeczywistego sposobu użytkowania."}
        },
        {
          "@type": "Question",
          "name": "Czy w nowym domu liczyć pełny koszt podłogówki?",
          "acceptedAnswer": {"@type": "Answer", "text": "Do okresu zwrotu najczęściej należy przyjąć różnicę między kompletnym kosztem podłogówki a kompletnym kosztem realnego wariantu alternatywnego. Oba warianty powinny obejmować tę samą granicę systemu i wspólne prace."}
        },
        {
          "@type": "Question",
          "name": "Jak obliczyć zwrot podłogówki w starym domu?",
          "acceptedAnswer": {"@type": "Answer", "text": "W modernizacji trzeba ująć demontaż, przygotowanie podłoża, instalację, warstwy podłogi, korekty wysokości, prace odtworzeniowe i osprzęt. Następnie porównuje się ten koszt z realnym wariantem pozostawienia lub przebudowy istniejącego ogrzewania."}
        },
        {
          "@type": "Question",
          "name": "Czym różni się prosty zwrot od NPV?",
          "acceptedAnswer": {"@type": "Answer", "text": "Prosty zwrot wskazuje, kiedy nominalne oszczędności pokryją dopłatę. NPV dyskontuje przyszłe różnice kosztów do wartości bieżącej. Z tego powodu zdyskontowany okres zwrotu jest zwykle dłuższy, a czasem nie występuje w wybranym horyzoncie."}
        },
        {
          "@type": "Question",
          "name": "Jaki SCOP lub SPF wpisać dla pompy ciepła?",
          "acceptedAnswer": {"@type": "Answer", "text": "Należy użyć sezonowego współczynnika odpowiadającego konkretnej instalacji, temperaturom pracy, klimatowi i tej samej granicy energii w obu wariantach. Pojedynczy katalogowy COP nie jest rocznym SPF."}
        },
        {
          "@type": "Question",
          "name": "Czy niższa temperatura zasilania skraca okres zwrotu?",
          "acceptedAnswer": {"@type": "Answer", "text": "Może poprawić sezonowe warunki pracy pompy ciepła lub kotła kondensacyjnego, ale wielkość efektu zależy od urządzenia i instalacji. Najpierw trzeba potwierdzić, że podłoga pokryje obciążenie pomieszczeń przy założonej temperaturze."}
        },
        {
          "@type": "Question",
          "name": "Czy taryfa dynamiczna gwarantuje oszczędność na podłogówce?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Wynik zależy od rzeczywistych cen godzinowych, możliwości przesuwania poboru, strat budynku, komfortu i sterowania. Bezwładność może dać elastyczność, ale nie gwarantuje stałego udziału energii kupowanej w tanich godzinach."}
        },
        {
          "@type": "Question",
          "name": "Czy kalkulator uwzględnia dotację i kredyt?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Kalkulator liczy porównanie inwestycji, kosztów energii, serwisu i wpisanych wymian. Dotację można uwzględnić przez obniżenie właściwego kosztu początkowego, natomiast finansowanie wymaga osobnego modelu przepływów pieniężnych."}
        },
        {
          "@type": "Question",
          "name": "Dlaczego podłogówka może nie zwrócić się mimo niższych rachunków?",
          "acceptedAnswer": {"@type": "Answer", "text": "Roczna oszczędność może być zbyt mała wobec dopłaty inwestycyjnej, zwłaszcza w budynku o niskim zapotrzebowaniu na ciepło. Wynik mogą dodatkowo zmienić stopa dyskontowa, serwis i koszt wymian."}
        },
        {
          "@type": "Question",
          "name": "Czy mniejszy rozstaw rur zawsze poprawia opłacalność?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Rozstaw wpływa na pole temperatury, możliwą moc, temperaturę zasilania i koszt instalacji, lecz powinien wynikać z obliczeń pomieszczenia. Mechaniczne zagęszczenie rur nie daje stałego procentu oszczędności."}
        },
        {
          "@type": "Question",
          "name": "Czy wzrost wartości domu należy dodać do zwrotu?",
          "acceptedAnswer": {"@type": "Answer", "text": "Tylko wtedy, gdy masz wiarygodną wycenę dla konkretnej nieruchomości i świadomie przyjmujesz ją jako scenariusz. Nie ma podstaw, aby każdej podłogówce przypisywać uniwersalny procent wzrostu wartości budynku."}
        }
      ]
    }
  ]
}
</script>

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

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

  var chartMode = "nominal";
  var lastResult = null;
  var svgNamespace = "http://www.w3.org/2000/svg";
  var moneyFormatter = new Intl.NumberFormat("pl-PL", {maximumFractionDigits: 0});
  var numberFormatter = new Intl.NumberFormat("pl-PL", {maximumFractionDigits: 0});
  var decimalFormatter = new Intl.NumberFormat("pl-PL", {minimumFractionDigits: 1, maximumFractionDigits: 1});

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

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

  function setValue(id, value) {
    var field = byId(id);
    if (field) {
      field.value = String(value);
    }
  }

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

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

  function formatMoney(value) {
    return moneyFormatter.format(Math.round(value)) + " zł";
  }

  function formatSignedMoney(value) {
    var prefix = "";
    if (value > 0.5) {
      prefix = "+";
    }
    return prefix + formatMoney(value);
  }

  function formatEnergy(value) {
    return numberFormatter.format(Math.round(value)) + " kWh";
  }

  function formatPayback(value, years) {
    if (value === null) {
      return "brak do " + years + " lat";
    }
    if (value <= 0.01) {
      return "0 lat";
    }
    return decimalFormatter.format(value) + " lat";
  }

  function formatCompactMoney(value) {
    var absolute = Math.abs(value);
    if (absolute >= 1000000) {
      return decimalFormatter.format(value / 1000000) + " mln";
    }
    if (absolute >= 1000) {
      return decimalFormatter.format(value / 1000) + " tys.";
    }
    return numberFormatter.format(Math.round(value));
  }

  function isElectricSource(source) {
    return source === "heatpump" || source === "electric";
  }

  function factorDescriptor(source) {
    if (source === "heatpump") {
      return "SPF / sezonowy współczynnik";
    }
    if (source === "gas") {
      return "Sprawność sezonowa kotła";
    }
    if (source === "pellet") {
      return "Sprawność sezonowa kotła";
    }
    if (source === "electric") {
      return "Sprawność zamiany energii";
    }
    return "Własny współczynnik sezonowy";
  }

  function factorPreset(source, variant) {
    if (source === "heatpump") {
      return variant === "a" ? 4.10 : 3.20;
    }
    if (source === "gas") {
      return variant === "a" ? 0.94 : 0.90;
    }
    if (source === "pellet") {
      return variant === "a" ? 0.85 : 0.82;
    }
    if (source === "electric") {
      return 0.99;
    }
    return 1;
  }

  function updateSource(variant, applyPreset) {
    var sourceField = byId("rk-roi-source-" + variant);
    if (!sourceField) {
      return;
    }
    var source = sourceField.value;
    setText("rk-roi-factor-label-" + variant, factorDescriptor(source));
    if (applyPreset) {
      setValue("rk-roi-factor-" + variant, factorPreset(source, variant));
    }
  }

  function updateDemandMode() {
    var mode = byId("rk-roi-demand-mode").value;
    byId("rk-roi-demand-direct-wrap").hidden = mode !== "direct";
    byId("rk-roi-area-wrap").hidden = mode !== "estimate";
    byId("rk-roi-index-wrap").hidden = mode !== "estimate";
  }

  function updateTariffFields() {
    var enabled = byId("rk-roi-tariff-on").checked;
    byId("rk-roi-tariff-fields").hidden = !enabled;
  }

  function effectivePrice(source, regularPrice, tariffEnabled, lowPrice, highPrice, cheapShare) {
    if (!tariffEnabled) {
      return regularPrice;
    }
    if (!isElectricSource(source)) {
      return regularPrice;
    }
    var share = clamp(cheapShare, 0, 100) / 100;
    return lowPrice * share + highPrice * (1 - share);
  }

  function findPayback(series) {
    if (series.length === 0) {
      return null;
    }
    if (series[0] >= 0) {
      return 0;
    }
    var index;
    for (index = 1; index < series.length; index += 1) {
      if (series[index] >= 0) {
        var previous = series[index - 1];
        if (previous < 0) {
          var gain = series[index] - previous;
          if (gain > 0) {
            return index - 1 + (-previous / gain);
          }
        }
      }
    }
    return null;
  }

  function collectData() {
    var mode = byId("rk-roi-demand-mode").value;
    var demand = readNumber("rk-roi-demand", 9000);
    if (mode === "estimate") {
      demand = readNumber("rk-roi-area", 150) * readNumber("rk-roi-index", 60);
    }
    demand = clamp(demand, 100, 1000000);

    var sourceA = byId("rk-roi-source-a").value;
    var sourceB = byId("rk-roi-source-b").value;
    var factorA = clamp(readNumber("rk-roi-factor-a", 1), 0.05, 20);
    var factorB = clamp(readNumber("rk-roi-factor-b", 1), 0.05, 20);
    var basePriceA = clamp(readNumber("rk-roi-price-a", 0), -2, 20);
    var basePriceB = clamp(readNumber("rk-roi-price-b", 0), -2, 20);
    var tariffEnabled = byId("rk-roi-tariff-on").checked;
    var lowPrice = clamp(readNumber("rk-roi-low-price", 0.75), -2, 20);
    var highPrice = clamp(readNumber("rk-roi-high-price", 1.35), 0, 20);
    var priceA = effectivePrice(sourceA, basePriceA, tariffEnabled, lowPrice, highPrice, readNumber("rk-roi-cheap-share-a", 0));
    var priceB = effectivePrice(sourceB, basePriceB, tariffEnabled, lowPrice, highPrice, readNumber("rk-roi-cheap-share-b", 0));

    return {
      demand: demand,
      nameA: String(byId("rk-roi-name-a").value || "Wariant A"),
      nameB: String(byId("rk-roi-name-b").value || "Wariant B"),
      sourceA: sourceA,
      sourceB: sourceB,
      factorA: factorA,
      factorB: factorB,
      priceA: priceA,
      priceB: priceB,
      capexA: clamp(readNumber("rk-roi-capex-a", 0), 0, 10000000),
      capexB: clamp(readNumber("rk-roi-capex-b", 0), 0, 10000000),
      serviceA: clamp(readNumber("rk-roi-service-a", 0), 0, 1000000),
      serviceB: clamp(readNumber("rk-roi-service-b", 0), 0, 1000000),
      years: Math.round(clamp(readNumber("rk-roi-years", 25), 5, 30)),
      growth: clamp(readNumber("rk-roi-growth", 0), -50, 100) / 100,
      serviceGrowth: clamp(readNumber("rk-roi-service-growth", 0), -50, 100) / 100,
      discount: clamp(readNumber("rk-roi-discount", 0), 0, 100) / 100,
      replaceYearA: Math.round(clamp(readNumber("rk-roi-replace-year-a", 0), 0, 30)),
      replaceYearB: Math.round(clamp(readNumber("rk-roi-replace-year-b", 0), 0, 30)),
      replaceCostA: clamp(readNumber("rk-roi-replace-cost-a", 0), 0, 10000000),
      replaceCostB: clamp(readNumber("rk-roi-replace-cost-b", 0), 0, 10000000),
      tariffEnabled: tariffEnabled
    };
  }

  function calculate(data) {
    var energyA = data.demand / data.factorA;
    var energyB = data.demand / data.factorB;
    var baseEnergyCostA = energyA * data.priceA;
    var baseEnergyCostB = energyB * data.priceB;
    var firstYearA = baseEnergyCostA + data.serviceA;
    var firstYearB = baseEnergyCostB + data.serviceB;
    var nominal = [data.capexB - data.capexA];
    var discounted = [data.capexB - data.capexA];
    var annualCostsA = [0];
    var annualCostsB = [0];
    var nominalBalance = nominal[0];
    var discountedBalance = discounted[0];
    var tcoA = data.capexA;
    var tcoB = data.capexB;
    var year;

    for (year = 1; year <= data.years; year += 1) {
      var energyFactor = Math.pow(1 + data.growth, year - 1);
      var serviceFactor = Math.pow(1 + data.serviceGrowth, year - 1);
      var replacementA = 0;
      var replacementB = 0;
      if (year === data.replaceYearA) {
        replacementA = data.replaceCostA;
      }
      if (year === data.replaceYearB) {
        replacementB = data.replaceCostB;
      }
      var costA = baseEnergyCostA * energyFactor + data.serviceA * serviceFactor + replacementA;
      var costB = baseEnergyCostB * energyFactor + data.serviceB * serviceFactor + replacementB;
      var benefitA = costB - costA;
      nominalBalance += benefitA;
      discountedBalance += benefitA / Math.pow(1 + data.discount, year);
      nominal.push(nominalBalance);
      discounted.push(discountedBalance);
      annualCostsA.push(costA);
      annualCostsB.push(costB);
      tcoA += costA;
      tcoB += costB;
    }

    return {
      data: data,
      energyA: energyA,
      energyB: energyB,
      firstYearA: firstYearA,
      firstYearB: firstYearB,
      firstYearDifference: firstYearB - firstYearA,
      extraCapex: data.capexA - data.capexB,
      nominal: nominal,
      discounted: discounted,
      annualCostsA: annualCostsA,
      annualCostsB: annualCostsB,
      payback: findPayback(nominal),
      discountedPayback: findPayback(discounted),
      npv: discounted[discounted.length - 1],
      tcoA: tcoA,
      tcoB: tcoB,
      tcoDifference: tcoB - tcoA
    };
  }

  function resultSummary(result) {
    var data = result.data;
    var horizon = data.years;
    var intro = "W tym scenariuszu " + data.nameA + " ";
    if (result.tcoDifference > 0) {
      intro += "ma niższy nominalny koszt całkowity o " + formatMoney(result.tcoDifference) + ". ";
    } else if (result.tcoDifference < 0) {
      intro += "ma wyższy nominalny koszt całkowity o " + formatMoney(Math.abs(result.tcoDifference)) + ". ";
    } else {
      intro += "ma taki sam nominalny koszt całkowity jak " + data.nameB + ". ";
    }

    if (result.payback === null) {
      intro += "Dopłata nie zostaje odzyskana do " + horizon + ". roku w bilansie nominalnym. ";
    } else if (result.payback <= 0.01) {
      intro += "Wariant A nie wymaga dodatniej dopłaty na starcie. ";
    } else {
      intro += "Nominalny próg zwrotu pojawia się około " + decimalFormatter.format(result.payback) + ". roku. ";
    }

    if (result.npv > 0) {
      intro += "Po dyskontowaniu przewaga A na końcu horyzontu wynosi " + formatMoney(result.npv) + ".";
    } else if (result.npv < 0) {
      intro += "Po dyskontowaniu przewaga B na końcu horyzontu wynosi " + formatMoney(Math.abs(result.npv)) + ".";
    } else {
      intro += "Po dyskontowaniu oba warianty mają taki sam bilans końcowy.";
    }
    return intro;
  }

  function updateOutputs(result) {
    var data = result.data;
    setText("rk-roi-out-demand", formatEnergy(data.demand) + "/rok");
    setText("rk-roi-out-extra", formatSignedMoney(result.extraCapex));
    setText("rk-roi-out-energy-a", formatEnergy(result.energyA) + "/rok");
    setText("rk-roi-out-energy-b", formatEnergy(result.energyB) + "/rok");
    setText("rk-roi-out-factor-a", data.nameA + ": współczynnik " + decimalFormatter.format(data.factorA));
    setText("rk-roi-out-factor-b", data.nameB + ": współczynnik " + decimalFormatter.format(data.factorB));
    setText("rk-roi-out-year-a", formatMoney(result.firstYearA));
    setText("rk-roi-out-year-b", formatMoney(result.firstYearB));
    setText("rk-roi-out-payback", formatPayback(result.payback, data.years));
    setText("rk-roi-out-discounted-payback", formatPayback(result.discountedPayback, data.years));
    setText("rk-roi-out-npv", formatSignedMoney(result.npv));
    setText("rk-roi-out-npv-note", "po " + data.years + " latach względem " + data.nameB);
    setText("rk-roi-out-tco-diff", formatSignedMoney(result.tcoDifference));
    setText("rk-roi-out-tco", data.nameA + ": " + formatMoney(result.tcoA) + " · " + data.nameB + ": " + formatMoney(result.tcoB));

    var summary = byId("rk-roi-out-summary");
    summary.textContent = resultSummary(result);
  }

  function clearNode(node) {
    while (node.firstChild) {
      node.removeChild(node.firstChild);
    }
  }

  function createSvg(tag, attributes, content) {
    var node = document.createElementNS(svgNamespace, tag);
    Object.keys(attributes).forEach(function (key) {
      node.setAttribute(key, String(attributes[key]));
    });
    if (typeof content === "string") {
      node.textContent = content;
    }
    return node;
  }

  function chartSeries(result) {
    return chartMode === "discounted" ? result.discounted : result.nominal;
  }

  function chartPayback(result) {
    return chartMode === "discounted" ? result.discountedPayback : result.payback;
  }

  function updateChartFocus(result, xScale, yScale) {
    var series = chartSeries(result);
    var yearField = byId("rk-roi-chart-year");
    var year = Math.round(clamp(readNumber("rk-roi-chart-year", 0), 0, result.data.years));
    yearField.max = String(result.data.years);
    yearField.value = String(year);
    var focus = byId("rk-roi-chart-focus");
    focus.setAttribute("cx", String(xScale(year)));
    focus.setAttribute("cy", String(yScale(series[year])));
    var modeLabel = chartMode === "discounted" ? "bilans zdyskontowany" : "bilans nominalny";
    setText("rk-roi-chart-year-output", "rok " + year + ": " + formatSignedMoney(series[year]) + " · " + modeLabel);
  }

  function renderMilestones(result) {
    var container = byId("rk-roi-milestones");
    clearNode(container);
    var series = chartSeries(result);
    var years = [0, 5, 10, 15, 20, 25, 30];
    if (years.indexOf(result.data.years) === -1) {
      years.push(result.data.years);
    }
    years.sort(function (a, b) {
      return a - b;
    });
    years.forEach(function (year) {
      if (year <= result.data.years) {
        var card = document.createElement("div");
        card.className = "rk-roi-milestone";
        var label = document.createElement("span");
        label.textContent = "Rok " + year;
        var value = document.createElement("strong");
        value.textContent = formatSignedMoney(series[year]);
        card.appendChild(label);
        card.appendChild(value);
        container.appendChild(card);
      }
    });
  }

  function renderChart(result) {
    var series = chartSeries(result);
    var width = 820;
    var height = 380;
    var left = 70;
    var right = 792;
    var top = 24;
    var bottom = 330;
    var values = series.slice();
    values.push(0);
    var minimum = Math.min.apply(null, values);
    var maximum = Math.max.apply(null, values);
    if (Math.abs(maximum - minimum) < 1) {
      maximum += 1;
      minimum -= 1;
    }
    var padding = (maximum - minimum) * 0.12;
    maximum += padding;
    minimum -= padding;

    function xScale(year) {
      return left + (right - left) * (year / result.data.years);
    }

    function yScale(value) {
      return top + (bottom - top) * ((maximum - value) / (maximum - minimum));
    }

    var grid = byId("rk-roi-chart-grid");
    var labels = byId("rk-roi-chart-labels");
    clearNode(grid);
    clearNode(labels);
    var horizontalCount = 5;
    var index;
    for (index = 0; index <= horizontalCount; index += 1) {
      var value = maximum - (maximum - minimum) * (index / horizontalCount);
      var y = yScale(value);
      grid.appendChild(createSvg("line", {class: "rk-grid", x1: left, y1: y, x2: right, y2: y}));
      labels.appendChild(createSvg("text", {class: "rk-axis-label", x: left - 9, y: y + 4, "text-anchor": "end"}, formatCompactMoney(value)));
    }

    var verticalYears = [0, Math.round(result.data.years * 0.25), Math.round(result.data.years * 0.5), Math.round(result.data.years * 0.75), result.data.years];
    var usedYears = {};
    verticalYears.forEach(function (year) {
      if (!usedYears[year]) {
        usedYears[year] = true;
        var x = xScale(year);
        grid.appendChild(createSvg("line", {class: "rk-grid", x1: x, y1: top, x2: x, y2: bottom}));
        labels.appendChild(createSvg("text", {class: "rk-axis-label", x: x, y: bottom + 21, "text-anchor": "middle"}, String(year)));
      }
    });

    var points = [];
    series.forEach(function (value, year) {
      points.push(xScale(year) + "," + yScale(value));
    });
    var zeroY = yScale(0);
    byId("rk-roi-chart-zero").setAttribute("y1", String(zeroY));
    byId("rk-roi-chart-zero").setAttribute("y2", String(zeroY));
    byId("rk-roi-chart-line").setAttribute("points", points.join(" "));
    byId("rk-roi-chart-area").setAttribute("points", left + "," + zeroY + " " + points.join(" ") + " " + right + "," + zeroY);

    var cross = byId("rk-roi-chart-cross");
    var payback = chartPayback(result);
    if (payback === null) {
      cross.hidden = true;
    } else {
      if (payback > 0.01) {
        cross.hidden = false;
        cross.setAttribute("cx", String(xScale(payback)));
        cross.setAttribute("cy", String(zeroY));
      } else {
        cross.hidden = true;
      }
    }

    updateChartFocus(result, xScale, yScale);
    renderMilestones(result);
    var modeDescription = chartMode === "discounted" ? "zdyskontowany" : "nominalny";
    byId("rk-roi-chart-desc").textContent = "Wykres pokazuje " + modeDescription + " bilans wariantu A względem wariantu B od roku zerowego do roku " + result.data.years + ".";
  }

  function calculateAndRender() {
    var data = collectData();
    lastResult = calculate(data);
    updateOutputs(lastResult);
    renderChart(lastResult);
  }

  function setPreset(name) {
    if (name === "new") {
      setValue("rk-roi-demand-mode", "direct");
      setValue("rk-roi-demand", 9000);
      setValue("rk-roi-name-a", "Podłogówka");
      setValue("rk-roi-name-b", "Grzejniki");
      setValue("rk-roi-source-a", "heatpump");
      setValue("rk-roi-source-b", "heatpump");
      setValue("rk-roi-factor-a", 4.10);
      setValue("rk-roi-factor-b", 3.20);
      setValue("rk-roi-price-a", 1.15);
      setValue("rk-roi-price-b", 1.15);
      setValue("rk-roi-capex-a", 48000);
      setValue("rk-roi-capex-b", 36000);
      setValue("rk-roi-service-a", 650);
      setValue("rk-roi-service-b", 650);
      setValue("rk-roi-years", 25);
    }
    if (name === "retrofit") {
      setValue("rk-roi-demand-mode", "direct");
      setValue("rk-roi-demand", 16000);
      setValue("rk-roi-name-a", "Podłogówka po modernizacji");
      setValue("rk-roi-name-b", "Modernizacja grzejników");
      setValue("rk-roi-source-a", "heatpump");
      setValue("rk-roi-source-b", "heatpump");
      setValue("rk-roi-factor-a", 4.00);
      setValue("rk-roi-factor-b", 3.10);
      setValue("rk-roi-price-a", 1.15);
      setValue("rk-roi-price-b", 1.15);
      setValue("rk-roi-capex-a", 72000);
      setValue("rk-roi-capex-b", 28000);
      setValue("rk-roi-service-a", 650);
      setValue("rk-roi-service-b", 650);
      setValue("rk-roi-years", 25);
    }
    updateSource("a", false);
    updateSource("b", false);
    updateDemandMode();
    calculateAndRender();
  }

  var stageData = {
    demand: {
      tag: "Punkt wyjścia",
      title: "Podłogówka nie zmienia strat budynku",
      copy: "Dla tej samej temperatury wewnętrznej i tych samych warunków zewnętrznych budynek potrzebuje zbliżonej ilości ciepła niezależnie od nazwy emitera. Różnice użytkowe mogą wynikać z nastaw i sposobu eksploatacji, ale nie należy wpisywać ich z góry jako stałego procentu.",
      impact: "Im większe roczne zapotrzebowanie, tym większa kwotowa różnica między wariantami o różnej sprawności.",
      check: "Roczną energię użytkową w kWh/rok — nie projektową moc w kW."
    },
    emitter: {
      tag: "Warunek techniczny",
      title: "Emiter wyznacza potrzebne parametry wody",
      copy: "Obciążenie pomieszczenia, aktywna powierzchnia, rozstaw rur i opór okładziny decydują, jakiej średniej temperatury czynnika wymaga podłoga. Grzejniki mogą być zaprojektowane na różne parametry, dlatego ich temperatury nie wolno zgadywać po samej nazwie.",
      impact: "Wyższa wymagana temperatura może pogorszyć warunki pracy pompy ciepła i zmniejszyć roczną oszczędność.",
      check: "Obciążenie pomieszczeń, powierzchnię czynną, okładzinę, rozstaw rur i wymagane temperatury."
    },
    source: {
      tag: "Energia kupowana",
      title: "Źródło zamienia parametry instalacji w sprawność sezonową",
      copy: "Dla pompy ciepła niższa temperatura po stronie instalacji może poprawić sezonowy współczynnik. Dla kotła kondensacyjnego znaczenie mają warunki kondensacji. Wielkość efektu zależy od urządzenia, klimatu, regulacji i całego sezonu.",
      impact: "Wyższy SPF zmniejsza ilość energii kupowanej, lecz znaczenie finansowe zależy również od rocznego zapotrzebowania.",
      check: "Sezonowy wynik na tej samej granicy energii dla obu wariantów — nie pojedynczy katalogowy COP."
    },
    cost: {
      tag: "Rachunek roczny",
      title: "Cena energii nie jest jedynym kosztem",
      copy: "Do kosztu energii dochodzą serwis, energia pomocnicza i ewentualne różnice opłat stałych. Taryfa dynamiczna może zmienić cenę efektywną, lecz tylko w zakresie poboru rzeczywiście przesuniętego do korzystniejszych godzin.",
      impact: "Zmiana ceny jednostkowej działa na całą energię kupowaną, a różnice serwisu powtarzają się w każdym roku analizy.",
      check: "Efektywną cenę kWh, koszty serwisu i tylko te opłaty stałe, które rzeczywiście różnią warianty."
    },
    balance: {
      tag: "Decyzja finansowa",
      title: "Dopłata i kolejne różnice tworzą bilans",
      copy: "W roku zerowym liczy się różnica nakładów. Później bilans zmieniają roczne koszty i wymiany. Prosty zwrot pokazuje przecięcie zera bez dyskonta, a NPV przelicza przyszłe różnice na wartość bieżącą.",
      impact: "Większa dopłata wydłuża prosty zwrot, a wyższa stopa dyskontowa zmniejsza dzisiejszą wartość przyszłych oszczędności.",
      check: "Pełne nakłady A i B, horyzont, wymiany oraz co najmniej trzy scenariusze cen i sprawności."
    }
  };

  root.querySelectorAll("[data-rk-roi-stage]").forEach(function (button) {
    button.addEventListener("click", function () {
      var key = button.getAttribute("data-rk-roi-stage");
      var data = stageData[key];
      if (!data) {
        return;
      }
      root.querySelectorAll("[data-rk-roi-stage]").forEach(function (item) {
        var active = item === button;
        item.classList.toggle("is-active", active);
        item.setAttribute("aria-pressed", active ? "true" : "false");
      });
      setText("rk-roi-stage-tag", data.tag);
      setText("rk-roi-stage-title", data.title);
      setText("rk-roi-stage-copy", data.copy);
      setText("rk-roi-stage-impact", data.impact);
      setText("rk-roi-stage-check", data.check);
    });
  });

  root.querySelectorAll("[data-rk-roi-preset]").forEach(function (button) {
    button.addEventListener("click", function () {
      root.querySelectorAll("[data-rk-roi-preset]").forEach(function (item) {
        var active = item === button;
        item.classList.toggle("is-active", active);
        item.setAttribute("aria-pressed", active ? "true" : "false");
      });
      setPreset(button.getAttribute("data-rk-roi-preset"));
    });
  });

  root.querySelectorAll("[data-rk-roi-chart-mode]").forEach(function (button) {
    button.addEventListener("click", function () {
      chartMode = button.getAttribute("data-rk-roi-chart-mode");
      root.querySelectorAll("[data-rk-roi-chart-mode]").forEach(function (item) {
        var active = item === button;
        item.classList.toggle("is-active", active);
        item.setAttribute("aria-pressed", active ? "true" : "false");
      });
      if (lastResult) {
        renderChart(lastResult);
      }
    });
  });

  byId("rk-roi-source-a").addEventListener("change", function () {
    updateSource("a", true);
    calculateAndRender();
  });
  byId("rk-roi-source-b").addEventListener("change", function () {
    updateSource("b", true);
    calculateAndRender();
  });
  byId("rk-roi-demand-mode").addEventListener("change", function () {
    updateDemandMode();
    calculateAndRender();
  });
  byId("rk-roi-tariff-on").addEventListener("change", function () {
    updateTariffFields();
    calculateAndRender();
  });
  byId("rk-roi-chart-year").addEventListener("input", function () {
    if (lastResult) {
      renderChart(lastResult);
    }
  });

  root.querySelectorAll("input, select").forEach(function (field) {
    var id = field.id;
    var handled = id === "rk-roi-source-a" || id === "rk-roi-source-b" || id === "rk-roi-demand-mode" || id === "rk-roi-tariff-on" || id === "rk-roi-chart-year";
    if (!handled) {
      field.addEventListener("input", calculateAndRender);
      field.addEventListener("change", calculateAndRender);
    }
  });

  updateSource("a", false);
  updateSource("b", false);
  updateDemandMode();
  updateTariffFields();
  calculateAndRender();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">Zwrot z inwestycji w ogrzewanie podłogowe – po ilu latach?</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>
		<item>
		<title>Pompa ciepła do domu – jak działa, ile zużywa prądu i jak dobrać moc?</title>
		<link>https://projekt-ogrzewania.pl/pompa-ciepla/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 03 Jan 2026 16:18:37 +0000</pubDate>
				<category><![CDATA[Budownictwo energooszczędne]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie budynków]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Technologie OZE]]></category>
		<category><![CDATA[bufor ciepła]]></category>
		<category><![CDATA[cop]]></category>
		<category><![CDATA[dolne źródło]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[gruntowa pompa ciepła]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[pompy ciepła]]></category>
		<category><![CDATA[powietrzna pompa ciepła]]></category>
		<category><![CDATA[praca biwalentna]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[schemat hydrauliczny]]></category>
		<category><![CDATA[scop]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3039</guid>

					<description><![CDATA[<p>Pompa ciepła to dziś jedno z najbardziej zaawansowanych technologicznie rozwiązań grzewczych, które realnie zmienia sposób projektowania nowoczesnych instalacji w budownictwie jednorodzinnym i komercyjnym. W artykule szczegółowo omawiamy zasadę działania pomp ciepła w ujęciu termodynamicznym, porównujemy ich główne typy, analizujemy kryteria doboru mocy, pracę biwalentną oraz kluczowe schematy hydrauliczne. Szczególną uwagę poświęcono współpracy pompy ciepła z ogrzewaniem podłogowym, buforom ciepła oraz aspektom projektowym decydującym o rzeczywistej sprawności i trwałości całego systemu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">Pompa ciepła do domu – jak działa, ile zużywa prądu i jak dobrać moc?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-hp-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b465b;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #078fb3;
    --rk-cyan-soft: #def7fa;
    --rk-orange: #ff6846;
    --rk-orange-dark: #e44f31;
    --rk-yellow: #f2b526;
    --rk-green: #2fcda1;
    --rk-green-dark: #168267;
    --rk-red: #d7504a;
    --rk-purple: #6963ce;
    --rk-ink: #10283a;
    --rk-copy: #3c5668;
    --rk-muted: #6b8191;
    --rk-line: #d3e2e8;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.62;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

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

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

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

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

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

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

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

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

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

  #rk-hp-guide .rk-hp-kicker,
  #rk-hp-guide .rk-hp-eyebrow {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.77rem;
    font-weight: 900;
    letter-spacing: 0.13em;
    text-transform: uppercase;
  }

  #rk-hp-guide .rk-hp-kicker {
    color: #6ce5ef;
    margin: 0 0 19px 28px;
  }

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

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

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

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

  #rk-hp-guide .rk-hp-hero-tags,
  #rk-hp-guide .rk-hp-meta,
  #rk-hp-guide .rk-hp-shortcuts,
  #rk-hp-guide .rk-hp-tool-actions,
  #rk-hp-guide .rk-hp-legend {
    display: flex;
    flex-wrap: wrap;
  }

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

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

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

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

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

  #rk-hp-guide .rk-hp-shortcuts-label {
    color: var(--rk-ink);
    flex: 1 0 100%;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    margin-bottom: 3px;
    text-transform: uppercase;
  }

  #rk-hp-guide .rk-hp-shortcuts a {
    background: #f1f6f8;
    border: 1px solid transparent;
    border-radius: 999px;
    color: var(--rk-ink);
    flex: 0 1 auto;
    font-size: 0.76rem;
    font-weight: 800;
    line-height: 1.25;
    padding: 8px 12px;
    text-decoration: none;
    white-space: normal;
  }

  #rk-hp-guide .rk-hp-shortcuts a:hover,
  #rk-hp-guide .rk-hp-shortcuts a:focus-visible {
    background: var(--rk-cyan-soft);
    border-color: #a9e4eb;
    color: var(--rk-ink);
  }

  #rk-hp-guide .rk-hp-section {
    background: #ffffff;
    padding: 64px 58px;
  }

  #rk-hp-guide .rk-hp-section + .rk-hp-section {
    border-top: 1px solid #e3ecef;
  }

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

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

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

  #rk-hp-guide .rk-hp-section-dark .rk-hp-lead,
  #rk-hp-guide .rk-hp-section-dark .rk-hp-copy {
    color: #c6dce4;
  }

  #rk-hp-guide .rk-hp-eyebrow {
    margin-bottom: 12px;
  }

  #rk-hp-guide .rk-hp-section-title {
    color: var(--rk-ink);
    font-size: clamp(2rem, 4.2vw, 3.55rem);
    margin: 0;
    max-width: 1120px;
  }

  #rk-hp-guide .rk-hp-lead {
    color: var(--rk-copy);
    font-size: 1.12rem;
    line-height: 1.7;
    margin: 22px 0 0;
    max-width: 1120px;
  }

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

  #rk-hp-guide .rk-hp-grid-2,
  #rk-hp-guide .rk-hp-grid-3,
  #rk-hp-guide .rk-hp-grid-4,
  #rk-hp-guide .rk-hp-cycle-grid,
  #rk-hp-guide .rk-hp-question-grid,
  #rk-hp-guide .rk-hp-result-grid,
  #rk-hp-guide .rk-hp-source-grid,
  #rk-hp-guide .rk-hp-author-facts,
  #rk-hp-guide .rk-hp-chart-fields {
    display: grid;
    gap: 18px;
    margin-top: 28px;
  }

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

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

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

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

  #rk-hp-guide .rk-hp-card h3 {
    color: var(--rk-ink);
    font-size: 1.08rem;
    line-height: 1.27;
    margin: 12px 0 0;
  }

  #rk-hp-guide .rk-hp-card p {
    color: var(--rk-copy);
    font-size: 0.94rem;
    margin: 11px 0 0;
  }

  #rk-hp-guide .rk-hp-card-number,
  #rk-hp-guide .rk-hp-icon {
    color: var(--rk-cyan-dark);
    display: inline-block;
    font-size: 0.74rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-hp-guide .rk-hp-icon {
    align-items: center;
    background: var(--rk-cyan-soft);
    border-radius: 12px;
    display: inline-flex;
    font-size: 1rem;
    height: 40px;
    justify-content: center;
    letter-spacing: 0;
    width: 40px;
  }

  #rk-hp-guide .rk-hp-answer {
    background: linear-gradient(120deg, #e5f9fb 0%, #f7fcfd 100%);
    border: 1px solid #b8e9ee;
    border-left: 7px solid var(--rk-cyan);
    border-radius: 16px;
    margin-top: 28px;
    padding: 23px 25px;
  }

  #rk-hp-guide .rk-hp-answer > strong {
    display: block;
    font-size: 1.12rem;
    line-height: 1.5;
  }

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

  #rk-hp-guide .rk-hp-note,
  #rk-hp-guide .rk-hp-responsibility {
    background: #fff7e5;
    border-left: 6px solid var(--rk-yellow);
    border-radius: 13px;
    color: #473b1a;
    margin-top: 25px;
    padding: 18px 21px;
  }

  #rk-hp-guide .rk-hp-note p,
  #rk-hp-guide .rk-hp-responsibility p {
    margin: 0;
  }

  #rk-hp-guide .rk-hp-note-bad {
    background: #fff0eb;
    border-left-color: var(--rk-orange);
    color: #573026;
  }

  #rk-hp-guide .rk-hp-note-good {
    background: #e9fbf5;
    border-left-color: var(--rk-green);
    color: #184b3f;
  }

  #rk-hp-guide .rk-hp-bullets,
  #rk-hp-guide .rk-hp-checklist {
    color: var(--rk-copy);
    margin: 15px 0 0;
    padding-left: 20px;
  }

  #rk-hp-guide .rk-hp-bullets li,
  #rk-hp-guide .rk-hp-checklist li {
    margin: 7px 0;
  }

  #rk-hp-guide .rk-hp-formula {
    background: #e8f8fb;
    border: 1px solid #b9e8ee;
    border-radius: 14px;
    color: #08374a;
    font-family: Consolas, Monaco, monospace;
    font-size: clamp(0.96rem, 2vw, 1.22rem);
    font-weight: 800;
    line-height: 1.45;
    margin-top: 22px;
    overflow-wrap: anywhere;
    padding: 18px 20px;
  }

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

  #rk-hp-guide table {
    border-collapse: separate;
    border-spacing: 0;
    color: var(--rk-copy);
    font-size: 0.91rem;
    min-width: 760px;
    width: 100%;
  }

  #rk-hp-guide th {
    background: var(--rk-navy);
    color: #ffffff;
    font-size: 0.76rem;
    letter-spacing: 0.045em;
    padding: 15px;
    text-align: left;
    text-transform: uppercase;
  }

  #rk-hp-guide th:first-child {
    border-radius: 13px 0 0;
  }

  #rk-hp-guide th:last-child {
    border-radius: 0 13px 0 0;
  }

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

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

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

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

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

  #rk-hp-guide .rk-hp-cycle-tool,
  #rk-hp-guide .rk-hp-analyzer,
  #rk-hp-guide .rk-hp-chart-tool {
    background: var(--rk-navy);
    border: 1px solid #295166;
    border-radius: 22px;
    color: #ffffff;
    margin-top: 30px;
    padding: 30px;
    width: 100%;
  }

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

  #rk-hp-guide .rk-hp-tool-head p {
    color: #bdd4dd;
    margin: 8px 0 0;
  }

  #rk-hp-guide .rk-hp-source-switch {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 22px;
  }

  #rk-hp-guide .rk-hp-source-button,
  #rk-hp-guide .rk-hp-analyze-button,
  #rk-hp-guide .rk-hp-reset-button,
  #rk-hp-guide .rk-hp-chart-button {
    border: 0;
    border-radius: 12px;
    cursor: pointer;
    font-weight: 900;
    padding: 13px 18px;
  }

  #rk-hp-guide .rk-hp-source-button {
    background: #1b465b;
    border: 1px solid #497185;
    color: #e8f5f8;
  }

  #rk-hp-guide .rk-hp-source-button[aria-pressed="true"] {
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
    color: var(--rk-navy);
  }

  #rk-hp-guide .rk-hp-source-summary {
    background: #183c4f;
    border: 1px solid #3a6175;
    border-radius: 14px;
    color: #d5e7ec;
    margin-top: 16px;
    padding: 17px 19px;
  }

  #rk-hp-guide .rk-hp-source-summary strong {
    color: #73e8f1;
  }

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

  #rk-hp-guide .rk-hp-cycle-card {
    background: #15374a;
    border: 1px solid #365f73;
    border-radius: 16px;
    padding: 21px;
    position: relative;
  }

  #rk-hp-guide .rk-hp-cycle-card::before {
    background: var(--rk-cyan);
    border-radius: 999px;
    content: "";
    height: 5px;
    left: 20px;
    position: absolute;
    right: 20px;
    top: 0;
  }

  #rk-hp-guide .rk-hp-cycle-card:nth-child(2)::before,
  #rk-hp-guide .rk-hp-cycle-card:nth-child(4)::before {
    background: var(--rk-orange);
  }

  #rk-hp-guide .rk-hp-cycle-step {
    align-items: center;
    background: rgba(41, 196, 215, 0.14);
    border-radius: 11px;
    color: #77e9f2;
    display: inline-flex;
    font-size: 0.78rem;
    font-weight: 900;
    height: 36px;
    justify-content: center;
    width: 36px;
  }

  #rk-hp-guide .rk-hp-cycle-card h4 {
    color: #ffffff;
    font-size: 1.03rem;
    line-height: 1.3;
    margin: 14px 0 0;
  }

  #rk-hp-guide .rk-hp-cycle-card p {
    color: #bdd4dd;
    font-size: 0.9rem;
    margin: 9px 0 0;
  }

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

  #rk-hp-guide .rk-hp-question {
    background: #15374a;
    border: 1px solid #365f73;
    border-radius: 15px;
    padding: 18px;
  }

  #rk-hp-guide .rk-hp-question label {
    color: #ffffff;
    display: block;
    font-size: 0.94rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-hp-guide .rk-hp-question small {
    color: #a9c5cf;
    display: block;
    line-height: 1.45;
    margin-top: 6px;
  }

  #rk-hp-guide .rk-hp-question select,
  #rk-hp-guide .rk-hp-chart-field input,
  #rk-hp-guide .rk-hp-chart-field select {
    background: #ffffff;
    border: 1px solid #b9cbd3;
    border-radius: 10px;
    color: var(--rk-ink);
    margin-top: 12px;
    padding: 12px;
    width: 100%;
  }

  #rk-hp-guide .rk-hp-tool-actions {
    gap: 12px;
    margin-top: 20px;
  }

  #rk-hp-guide .rk-hp-analyze-button,
  #rk-hp-guide .rk-hp-chart-button {
    background: var(--rk-cyan);
    color: var(--rk-navy);
  }

  #rk-hp-guide .rk-hp-reset-button {
    background: transparent;
    border: 1px solid #5b7d8e;
    color: #ffffff;
  }

  #rk-hp-guide .rk-hp-analyzer-result {
    background: #102f41;
    border: 1px solid #3c6478;
    border-radius: 17px;
    margin-top: 22px;
    padding: 22px;
  }

  #rk-hp-guide .rk-hp-status {
    border-radius: 13px;
    font-weight: 900;
    line-height: 1.45;
    padding: 15px 17px;
  }

  #rk-hp-guide .rk-hp-status.is-neutral {
    background: #1d4658;
    color: #d8edf2;
  }

  #rk-hp-guide .rk-hp-status.is-warning {
    background: #5d4919;
    color: #ffedb4;
  }

  #rk-hp-guide .rk-hp-status.is-stop {
    background: #60312d;
    color: #ffd8cf;
  }

  #rk-hp-guide .rk-hp-status.is-good {
    background: #164b40;
    color: #c9f8e9;
  }

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

  #rk-hp-guide .rk-hp-result-column {
    background: #16394c;
    border: 1px solid #365f73;
    border-radius: 14px;
    padding: 18px;
  }

  #rk-hp-guide .rk-hp-result-column h4 {
    color: #ffffff;
    font-size: 0.95rem;
    margin: 0;
  }

  #rk-hp-guide .rk-hp-result-column ul {
    color: #c4dbe3;
    margin: 12px 0 0;
    padding-left: 18px;
  }

  #rk-hp-guide .rk-hp-result-column li {
    margin: 7px 0;
  }

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

  #rk-hp-guide .rk-hp-chart-field {
    background: #15374a;
    border: 1px solid #365f73;
    border-radius: 14px;
    padding: 15px;
  }

  #rk-hp-guide .rk-hp-chart-field label {
    color: #ffffff;
    display: block;
    font-size: 0.81rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-hp-guide .rk-hp-chart-field small {
    color: #a9c5cf;
    display: block;
    font-size: 0.74rem;
    margin-top: 7px;
  }

  #rk-hp-guide .rk-hp-capacity-title {
    color: #72e7f1;
    font-size: 0.76rem;
    font-weight: 900;
    letter-spacing: 0.09em;
    margin: 24px 0 0;
    text-transform: uppercase;
  }

  #rk-hp-guide .rk-hp-chart-canvas-wrap {
    background: #f7fbfc;
    border: 1px solid #c9dbe3;
    border-radius: 16px;
    margin-top: 22px;
    padding: 14px;
    width: 100%;
  }

  #rk-hp-guide #rk-hp-chart {
    display: block;
    height: 480px;
    max-width: 100%;
    width: 100%;
  }

  #rk-hp-guide .rk-hp-legend {
    color: #d5e6ec;
    gap: 10px 20px;
    margin-top: 17px;
  }

  #rk-hp-guide .rk-hp-legend span {
    align-items: center;
    display: inline-flex;
    font-size: 0.81rem;
    font-weight: 800;
    gap: 8px;
  }

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

  #rk-hp-guide .rk-hp-legend .is-building {
    background: var(--rk-orange);
  }

  #rk-hp-guide .rk-hp-legend .is-pump {
    background: var(--rk-cyan);
  }

  #rk-hp-guide .rk-hp-legend .is-minimum {
    background: var(--rk-purple);
  }

  #rk-hp-guide .rk-hp-chart-result {
    background: #173c4f;
    border-left: 5px solid var(--rk-cyan);
    border-radius: 12px;
    color: #d9eaf0;
    margin-top: 18px;
    padding: 17px 19px;
  }

  #rk-hp-guide .rk-hp-chart-result strong {
    color: #ffffff;
  }

  #rk-hp-guide .rk-hp-cta {
    background:
      radial-gradient(circle at 92% 117%, rgba(41, 196, 215, 0.22) 0, rgba(41, 196, 215, 0.22) 24%, transparent 24.2%),
      linear-gradient(125deg, #0b2536, #14566a);
    border-radius: 21px;
    color: #ffffff;
    margin-top: 30px;
    padding: 34px;
  }

  #rk-hp-guide .rk-hp-cta-title {
    font-size: clamp(1.55rem, 3vw, 2.35rem);
    max-width: 950px;
  }

  #rk-hp-guide .rk-hp-cta p {
    color: #d3e5eb;
    margin: 14px 0 0;
    max-width: 980px;
  }

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

  #rk-hp-guide .rk-hp-cta-button:hover,
  #rk-hp-guide .rk-hp-cta-button:focus-visible {
    background: #ff7b5d;
    color: #ffffff;
  }

  #rk-hp-guide .rk-hp-link-disclosure {
    color: #b7d0da;
    display: block;
    font-size: 0.73rem;
    margin-top: 11px;
  }

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

  #rk-hp-guide .rk-hp-source-card {
    background: #f4f9fb;
    border: 1px solid #cfdee5;
    border-radius: 15px;
    padding: 20px 22px;
  }

  #rk-hp-guide .rk-hp-source-card a {
    font-size: 1.04rem;
    font-weight: 900;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-hp-guide .rk-hp-author-name a {
    color: #ffffff;
    text-decoration: none;
  }

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

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

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

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

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

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

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

  #rk-hp-guide .rk-hp-author-main > p {
    color: var(--rk-copy);
    margin: 18px 0 0;
  }

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

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

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

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

  @media (max-width: 1080px) {
    #rk-hp-guide .rk-hp-grid-4,
    #rk-hp-guide .rk-hp-cycle-grid,
    #rk-hp-guide .rk-hp-chart-fields {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #rk-hp-guide .rk-hp-result-grid {
      grid-template-columns: minmax(0, 1fr);
    }
  }

  @media (max-width: 820px) {
    #rk-hp-guide .rk-hp-hero,
    #rk-hp-guide .rk-hp-section,
    #rk-hp-guide .rk-hp-author {
      padding-left: 28px;
      padding-right: 28px;
    }

    #rk-hp-guide .rk-hp-hero::before {
      left: 28px;
    }

    #rk-hp-guide .rk-hp-shortcuts {
      padding-left: 22px;
      padding-right: 22px;
    }

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

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

  @media (max-width: 660px) {
    #rk-hp-guide .rk-hp-hero {
      padding-bottom: 42px;
      padding-top: 52px;
    }

    #rk-hp-guide .rk-hp-section,
    #rk-hp-guide .rk-hp-author {
      padding-bottom: 46px;
      padding-top: 46px;
    }

    #rk-hp-guide .rk-hp-grid-2,
    #rk-hp-guide .rk-hp-grid-3,
    #rk-hp-guide .rk-hp-grid-4,
    #rk-hp-guide .rk-hp-cycle-grid,
    #rk-hp-guide .rk-hp-question-grid,
    #rk-hp-guide .rk-hp-chart-fields,
    #rk-hp-guide .rk-hp-source-switch,
    #rk-hp-guide .rk-hp-author-facts {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-hp-guide .rk-hp-cycle-tool,
    #rk-hp-guide .rk-hp-analyzer,
    #rk-hp-guide .rk-hp-chart-tool,
    #rk-hp-guide .rk-hp-cta {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-hp-guide .rk-hp-tool-actions {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-hp-guide .rk-hp-analyze-button,
    #rk-hp-guide .rk-hp-reset-button,
    #rk-hp-guide .rk-hp-chart-button,
    #rk-hp-guide .rk-hp-cta-button {
      text-align: center;
      width: 100%;
    }

    #rk-hp-guide #rk-hp-chart {
      height: 360px;
    }

    #rk-hp-guide .rk-hp-table-wrap {
      overflow: visible;
    }

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

    #rk-hp-guide table {
      min-width: 0;
    }

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

    #rk-hp-guide tbody {
      display: grid;
      gap: 14px;
    }

    #rk-hp-guide tbody tr {
      background: #ffffff;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      overflow: hidden;
    }

    #rk-hp-guide td,
    #rk-hp-guide tbody tr td:first-child,
    #rk-hp-guide tbody tr td:last-child {
      border: 0;
      border-bottom: 1px solid #e1ebef;
      border-radius: 0;
      padding: 13px 15px;
    }

    #rk-hp-guide td:last-child {
      border-bottom: 0;
    }

    #rk-hp-guide td::before {
      color: var(--rk-cyan-dark);
      content: attr(data-label);
      display: block;
      font-size: 0.69rem;
      font-weight: 900;
      letter-spacing: 0.07em;
      margin-bottom: 4px;
      text-transform: uppercase;
    }

    #rk-hp-guide .rk-hp-author-main {
      padding: 25px 20px;
    }
  }

  @media (max-width: 430px) {
    #rk-hp-guide .rk-hp-hero,
    #rk-hp-guide .rk-hp-section,
    #rk-hp-guide .rk-hp-author {
      padding-left: 18px;
      padding-right: 18px;
    }

    #rk-hp-guide .rk-hp-hero::before {
      left: 18px;
    }

    #rk-hp-guide .rk-hp-shortcuts {
      padding-left: 14px;
      padding-right: 14px;
    }

    #rk-hp-guide .rk-hp-shortcuts a {
      flex: 1 1 calc(50% - 9px);
      text-align: center;
    }

    #rk-hp-guide .rk-hp-hero-title {
      font-size: 2.2rem;
    }

    #rk-hp-guide .rk-hp-section-title {
      font-size: 1.87rem;
    }

    #rk-hp-guide #rk-hp-chart {
      height: 310px;
    }
  }

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

<article id="rk-hp-guide" aria-labelledby="rk-hp-visual-title">
  <div class="rk-hp-shell">
    <header class="rk-hp-hero">
      <span class="rk-hp-kicker">Pompa ciepła · aktualizacja techniczna 2026</span>
      <div class="rk-hp-hero-title" id="rk-hp-visual-title">Pompa ciepła do domu: <span>dobór bez skrótów</span></div>
      <p class="rk-hp-hero-lead">Sprawdź, jak działa obieg chłodniczy, czym różnią się COP i SCOP, jak czytać moc urządzenia przy temperaturze projektowej oraz kiedy podłogówka, grzejniki, bufor i sterowanie tworzą z pompą spójny system.</p>
      <div class="rk-hp-hero-tags" aria-label="Zakres poradnika">
        <span>dobór z OZC</span>
        <span>COP i SCOP</span>
        <span>punkt biwalentny</span>
        <span>podłogówka i grzejniki</span>
        <span>analizator + wykres</span>
      </div>
      <div class="rk-hp-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 29 minut</strong></span>
        <span>Aktualizacja techniczna: <strong>9 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-hp-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-hp-shortcuts-label">Na skróty</span>
      <a href="#rk-hp-quick">Szybka odpowiedź</a>
      <a href="#rk-hp-cycle">Jak działa</a>
      <a href="#rk-hp-cop">COP i SCOP</a>
      <a href="#rk-hp-types">Rodzaje pomp</a>
      <a href="#rk-hp-monoblock">Monoblok czy split</a>
      <a href="#rk-hp-analyzer-section">Analizator</a>
      <a href="#rk-hp-sizing">Dobór mocy</a>
      <a href="#rk-hp-curve">Wykres i biwalencja</a>
      <a href="#rk-hp-emitter">Podłogówka i grzejniki</a>
      <a href="#rk-hp-flow">Temperatura i przepływ</a>
      <a href="#rk-hp-buffer">Bufor i defrost</a>
      <a href="#rk-hp-cost">Zużycie prądu</a>
      <a href="#rk-hp-fgas">Czynniki i F-gazy</a>
      <a href="#rk-hp-renovation">Nowy i remontowany dom</a>
      <a href="#rk-hp-practical">Montaż i eksploatacja</a>
      <a href="#rk-hp-checklist">Checklista</a>
      <a href="#rk-hp-errors">Błędy</a>
      <a href="#rk-hp-summary">Podsumowanie</a>
      <a href="#rk-hp-final">Projekt podłogówki</a>
      <a href="#rk-hp-sources">Źródła</a>
      <a href="#rk-hp-faq">FAQ</a>
      <a href="#rk-hp-author">Autor</a>
    </nav>

    <section class="rk-hp-section" id="rk-hp-quick">
      <span class="rk-hp-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-hp-section-title">Kiedy pompa ciepła ma sens?</h2>
      <p class="rk-hp-lead"><strong>Pompa ciepła ma sens wtedy, gdy budynek, odbiorniki i konkretne urządzenie zostały sprawdzone w tych samych warunkach obliczeniowych.</strong> Nie wystarczy metraż domu, deklaracja „do 200 m²” ani jedna wartość mocy z katalogu.</p>
      <div class="rk-hp-answer">
        <strong>Najpierw ustala się projektową stratę ciepła budynku i wymaganą temperaturę zasilania. Dopiero potem porównuje się moc, modulację, przepływ, zład, hałas i sposób przygotowania ciepłej wody konkretnej pompy.</strong>
        <p>Dom nie musi być nowy ani mieć wyłącznie podłogówki. Musi natomiast osiągać wymagany komfort przy parametrach, które wybrane urządzenie potrafi zapewnić z akceptowalną efektywnością i bez niekontrolowanego udziału grzałki.</p>
      </div>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card">
          <span class="rk-hp-icon">1</span>
          <h3>Budynek</h3>
          <p>Potrzebne jest obciążenie cieplne przy temperaturze projektowej, a nie iloczyn powierzchni i przypadkowego wskaźnika W/m².</p>
        </article>
        <article class="rk-hp-card">
          <span class="rk-hp-icon">2</span>
          <h3>Odbiorniki</h3>
          <p>Podłoga, grzejniki lub klimakonwektory muszą oddać wymaganą moc przy ustalonej temperaturze zasilania i przepływie.</p>
        </article>
        <article class="rk-hp-card">
          <span class="rk-hp-icon">3</span>
          <h3>Urządzenie</h3>
          <p>Liczy się moc i COP w punkcie odpowiadającym projektowej temperaturze powietrza lub źródła oraz temperaturze wody.</p>
        </article>
      </div>
      <p class="rk-hp-copy">Jeżeli najważniejsze jest pytanie o współpracę z instalacją płaszczyznową, zacznij od poradnika <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">czy pompa ciepła ogrzeje dom z podłogówką</a>. Poniżej rozkładam na czynniki cały proces: od fizyki obiegu po dane potrzebne przed podpisaniem umowy.</p>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-cycle">
      <span class="rk-hp-eyebrow">Energia jest przenoszona, nie tworzona z niczego</span>
      <h2 class="rk-hp-section-title">Jak działa pompa ciepła?</h2>
      <p class="rk-hp-lead">Pompa ciepła odbiera energię ze źródła dolnego, podnosi poziom temperatury dzięki pracy sprężarki i przekazuje ciepło do instalacji budynku. Poniższy moduł pokazuje funkcje elementów bez udawania schematu konkretnego urządzenia.</p>

      <div class="rk-hp-cycle-tool" aria-labelledby="rk-hp-cycle-tool-title">
        <div class="rk-hp-tool-head">
          <h3 id="rk-hp-cycle-tool-title">Cztery etapy obiegu chłodniczego</h3>
          <p>Wybierz źródło. Zmieni się opis pierwszego etapu; funkcje sprężarki, skraplacza i zaworu rozprężnego pozostają takie same.</p>
        </div>
        <div class="rk-hp-source-switch" aria-label="Wybór źródła dolnego">
          <button class="rk-hp-source-button" type="button" data-rk-source="air" aria-pressed="true">Powietrze zewnętrzne</button>
          <button class="rk-hp-source-button" type="button" data-rk-source="ground" aria-pressed="false">Grunt</button>
        </div>
        <div class="rk-hp-source-summary" aria-live="polite">
          <strong id="rk-hp-source-name">Pompa powietrze–woda:</strong>
          <span id="rk-hp-source-description"> parownik odbiera energię z powietrza. W chłodnej i wilgotnej pogodzie na wymienniku może powstawać szron, dlatego urządzenie okresowo przeprowadza odszranianie.</span>
        </div>
        <div class="rk-hp-cycle-grid">
          <article class="rk-hp-cycle-card">
            <span class="rk-hp-cycle-step">1</span>
            <h4>Parownik pobiera energię</h4>
            <p id="rk-hp-evaporator-text">Czynnik chłodniczy odbiera ciepło od powietrza przepływającego przez wymiennik i odparowuje przy niskim ciśnieniu.</p>
          </article>
          <article class="rk-hp-cycle-card">
            <span class="rk-hp-cycle-step">2</span>
            <h4>Sprężarka podnosi ciśnienie</h4>
            <p>Energia elektryczna napędza sprężarkę. Wraz ze wzrostem ciśnienia rośnie temperatura pary czynnika chłodniczego.</p>
          </article>
          <article class="rk-hp-cycle-card">
            <span class="rk-hp-cycle-step">3</span>
            <h4>Skraplacz oddaje ciepło</h4>
            <p>Czynnik przekazuje energię wodzie instalacyjnej, skrapla się, a ogrzana woda trafia do podłogi, grzejników lub zasobnika CWU.</p>
          </article>
          <article class="rk-hp-cycle-card">
            <span class="rk-hp-cycle-step">4</span>
            <h4>Zawór obniża ciśnienie</h4>
            <p>Po rozprężeniu spadają ciśnienie i temperatura czynnika. Obieg wraca do parownika i cykl może rozpocząć się ponownie.</p>
          </article>
        </div>
        <div class="rk-hp-note rk-hp-note-good">
          <p><strong>Ważne:</strong> pompa dostarcza do instalacji sumę energii pobranej ze źródła i energii elektrycznej zużytej przez układ. Rzeczywista proporcja zmienia się wraz z temperaturami, obciążeniem, odszranianiem i pracą urządzeń pomocniczych.</p>
        </div>
      </div>
    </section>

    <section class="rk-hp-section" id="rk-hp-cop">
      <span class="rk-hp-eyebrow">Jedna liczba nie opisuje sezonu</span>
      <h2 class="rk-hp-section-title">COP, SCOP i sezonowa efektywność</h2>
      <p class="rk-hp-lead">COP dotyczy określonego punktu pracy, natomiast SCOP opisuje efektywność sezonową według przyjętej metody i profilu klimatycznego. Obie wartości są użyteczne, jeśli porównujesz je przy tych samych granicach i temperaturach.</p>
      <div class="rk-hp-formula" role="note">COP = moc cieplna oddana do instalacji ÷ moc elektryczna pobierana w danym punkcie pracy</div>
      <div class="rk-hp-table-wrap">
        <table>
          <thead>
            <tr><th>Wskaźnik</th><th>Co opisuje</th><th>Jak go czytać</th><th>Czego nie dowodzi</th></tr>
          </thead>
          <tbody>
            <tr><td data-label="Wskaźnik"><strong>COP</strong></td><td data-label="Co opisuje">Chwilowy punkt badania, np. A7/W35 albo A−7/W45.</td><td data-label="Jak go czytać">Zawsze razem z temperaturą źródła, wody i warunkami testu.</td><td data-label="Czego nie dowodzi">Nie jest rocznym wynikiem i nie określa rachunku za energię.</td></tr>
            <tr><td data-label="Wskaźnik"><strong>SCOP</strong></td><td data-label="Co opisuje">Modelowy sezon grzewczy dla określonego klimatu i zastosowania.</td><td data-label="Jak go czytać">Sprawdź temperaturę zastosowania, klimat i zakres energii pomocniczej.</td><td data-label="Czego nie dowodzi">Nie gwarantuje identycznego wyniku w konkretnym domu.</td></tr>
            <tr><td data-label="Wskaźnik"><strong>SPF z pomiaru</strong></td><td data-label="Co opisuje">Stosunek dostarczonego ciepła do energii pobranej w rzeczywistym okresie.</td><td data-label="Jak go czytać">Najpierw zdefiniuj licznik ciepła, licznik energii i granice systemu.</td><td data-label="Czego nie dowodzi">Nie da się porównać dwóch instalacji o innych granicach pomiaru.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-hp-note rk-hp-note-bad">
        <p><strong>Nie porównuj samych nagłówków katalogowych.</strong> COP dla A7/W35 nie jest równoważny COP dla A−7/W45. Niższa temperatura źródła i wyższa temperatura wody zwykle zwiększają pracę sprężarki oraz obniżają efektywność, ale skalę trzeba odczytać z danych konkretnego urządzenia.</p>
      </div>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-types">
      <span class="rk-hp-eyebrow">Źródło dolne zmienia projekt i eksploatację</span>
      <h2 class="rk-hp-section-title">Powietrzna, gruntowa czy wodna pompa ciepła?</h2>
      <p class="rk-hp-lead">Nie ma jednego rodzaju najlepszego dla każdej działki. Trzeba porównać dostępność źródła, nakład inwestycyjny, przebieg mocy w sezonie, formalności, serwis i wpływ na otoczenie.</p>
      <div class="rk-hp-table-wrap">
        <table>
          <thead><tr><th>Rodzaj</th><th>Źródło energii</th><th>Mocne strony</th><th>Warunki i ograniczenia</th></tr></thead>
          <tbody>
            <tr><td data-label="Rodzaj"><strong>Powietrze–woda</strong></td><td data-label="Źródło energii">Powietrze zewnętrzne.</td><td data-label="Mocne strony">Brak odwiertów, relatywnie prostsza realizacja i szeroka dostępność rozwiązań.</td><td data-label="Warunki i ograniczenia">Moc i COP zmieniają się z pogodą; trzeba uwzględnić odszranianie, hałas, skropliny i lokalizację jednostki.</td></tr>
            <tr><td data-label="Rodzaj"><strong>Grunt–woda</strong></td><td data-label="Źródło energii">Sondy pionowe albo kolektor poziomy.</td><td data-label="Mocne strony">Stabilniejsze warunki źródła w sezonie i brak zewnętrznego wentylatora jednostki powietrznej.</td><td data-label="Warunki i ograniczenia">Projekt dolnego źródła, miejsce lub odwierty, większy koszt wejścia i wymagania formalne zależne od rozwiązania.</td></tr>
            <tr><td data-label="Rodzaj"><strong>Woda–woda</strong></td><td data-label="Źródło energii">Woda gruntowa lub inne dopuszczone źródło wodne.</td><td data-label="Mocne strony">Potencjalnie stabilna temperatura źródła.</td><td data-label="Warunki i ograniczenia">Wydajność, jakość wody, studnie, zrzut, pozwolenia i trwałość układu wymagają indywidualnego rozpoznania.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-hp-copy">Różnica nie sprowadza się do etykiety „droższa” albo „tańsza”. W powietrznej pompie część ryzyka przenosi się na niskie temperatury i defrost, w gruntowej — na poprawne rozpoznanie i wykonanie dolnego źródła, a w wodnej — na jakość oraz pewność zasobu wody.</p>
    </section>

    <section class="rk-hp-section" id="rk-hp-monoblock">
      <span class="rk-hp-eyebrow">Dwie architektury, różne odpowiedzialności</span>
      <h2 class="rk-hp-section-title">Monoblok czy split?</h2>
      <p class="rk-hp-lead">W monobloku zasadniczy obieg chłodniczy jest fabrycznie zamknięty w jednostce, a przez przegrodę przechodzi instalacja wodna. W splicie jednostki łączy instalacja chłodnicza wykonywana na miejscu. To wpływa na montaż, ochronę przed zamarzaniem i zakres wymaganych kwalifikacji.</p>
      <div class="rk-hp-grid-2">
        <article class="rk-hp-card">
          <span class="rk-hp-card-number">MONOBLOK</span>
          <h3>Na zewnątrz znajduje się wymiennik wodny</h3>
          <ul class="rk-hp-bullets">
            <li>trzeba rozwiązać ochronę odcinka wodnego przy zaniku energii i awarii,</li>
            <li>ważne są izolacja, trasa, spadki i sposób odprowadzenia skroplin,</li>
            <li>fabrycznie zamknięty obieg chłodniczy ogranicza prace chłodnicze na budowie.</li>
          </ul>
        </article>
        <article class="rk-hp-card">
          <span class="rk-hp-card-number">SPLIT</span>
          <h3>Połączenie chłodnicze powstaje na budowie</h3>
          <ul class="rk-hp-bullets">
            <li>jakość wykonania, próżnia, szczelność i dokumentacja połączeń mają znaczenie,</li>
            <li>zakres obowiązków zależy między innymi od czynnika, ilości i obowiązujących przepisów,</li>
            <li>część wodna może pozostawać wewnątrz budynku, lecz nie usuwa to pozostałych ryzyk projektu.</li>
          </ul>
        </article>
      </div>
      <div class="rk-hp-note">
        <p><strong>Nie wybieraj wyłącznie po nazwie czynnika lub konstrukcji.</strong> Monoblok nie jest automatycznie lepszy od splitu, a split nie jest automatycznie bezpieczniejszy. Oceniaj kompletny układ, warunki montażu, serwis i dokumentację konkretnego modelu.</p>
      </div>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-analyzer-section">
      <span class="rk-hp-eyebrow">Narzędzie decyzyjne zamiast kalkulatora z metrażu</span>
      <h2 class="rk-hp-section-title">Analizator gotowości budynku i instalacji</h2>
      <p class="rk-hp-lead">Zaznacz stan przygotowania inwestycji. Analizator nie daje punktów i nie wybiera modelu. Rozdziela dane potwierdzone, informacje wymagające sprawdzenia oraz braki, które mogą unieważnić wstępny dobór.</p>

      <div class="rk-hp-analyzer" id="rk-hp-analyzer" aria-labelledby="rk-hp-analyzer-title">
        <div class="rk-hp-tool-head">
          <h3 id="rk-hp-analyzer-title">Czy dobór można już zweryfikować?</h3>
          <p>Odpowiedz na wszystkie pytania. „Nie wiem” oznacza brak danych, a nie odpowiedź negatywną.</p>
        </div>
        <div class="rk-hp-question-grid">
          <div class="rk-hp-question">
            <label for="rk-hp-q1">1. Czy masz obliczeniową stratę ciepła budynku przy temperaturze projektowej?</label>
            <small>OZC albo równoważne obliczenie, z założeniami dotyczącymi wentylacji i infiltracji.</small>
            <select id="rk-hp-q1" data-rk-name="Obciążenie cieplne budynku" data-rk-critical="true">
              <option value="unknown">Nie wiem / brak obliczeń</option><option value="yes">Tak, mam wynik i założenia</option><option value="no">Nie, dobór opiera się na metrażu</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q2">2. Czy znasz projektową temperaturę zewnętrzną przyjętą w obliczeniach?</label>
            <small>Moc pompy i strata budynku muszą być porównane dla zgodnych warunków.</small>
            <select id="rk-hp-q2" data-rk-name="Temperatura projektowa" data-rk-critical="true">
              <option value="unknown">Nie wiem</option><option value="yes">Tak, jest udokumentowana</option><option value="no">Nie została ustalona</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q3">3. Czy odbiorniki sprawdzono przy rzeczywistej temperaturze zasilania?</label>
            <small>Dotyczy podłogówki, grzejników i każdego dodatkowego odbiornika.</small>
            <select id="rk-hp-q3" data-rk-name="Moc odbiorników i temperatura wody" data-rk-critical="true">
              <option value="unknown">Nie wiem</option><option value="yes">Tak, pomieszczenie po pomieszczeniu</option><option value="no">Nie, przyjęto ogólne założenie</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q4">4. Czy znasz moc konkretnej pompy w projektowym punkcie pracy?</label>
            <small>Nie tylko nazwę modelu lub moc nominalną z pierwszej strony broszury.</small>
            <select id="rk-hp-q4" data-rk-name="Moc urządzenia w punkcie projektowym" data-rk-critical="true">
              <option value="unknown">Nie wiem / brak tabeli</option><option value="yes">Tak, z tabeli lub mapy pracy</option><option value="no">Nie, mam tylko moc nominalną</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q5">5. Czy znasz minimalną moc modulowaną w łagodnej pogodzie?</label>
            <small>Pomaga ocenić ryzyko częstych startów przy małym chwilowym obciążeniu.</small>
            <select id="rk-hp-q5" data-rk-name="Minimalna modulacja" data-rk-critical="false">
              <option value="unknown">Nie wiem</option><option value="yes">Tak, dla właściwych warunków</option><option value="no">Nie została sprawdzona</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q6">6. Czy sprawdzono minimalny przepływ i wymagany zład wody?</label>
            <small>Wraz z energią potrzebną do odszraniania i zachowaniem instalacji po zamknięciu stref.</small>
            <select id="rk-hp-q6" data-rk-name="Minimalny przepływ i zład" data-rk-critical="true">
              <option value="unknown">Nie wiem</option><option value="yes">Tak, według dokumentacji urządzenia</option><option value="no">Nie</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q7">7. Czy sterowanie strefowe przeanalizowano hydraulicznie?</label>
            <small>Zamknięcie wielu siłowników zmienia przepływ i pojemność dostępną dla pompy.</small>
            <select id="rk-hp-q7" data-rk-name="Sterowanie strefowe i hydraulika" data-rk-critical="false">
              <option value="unknown">Nie wiem</option><option value="yes">Tak</option><option value="no">Nie</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q8">8. Czy potrzeby CWU ustalono oddzielnie od ogrzewania?</label>
            <small>Wielkość zasobnika, liczba użytkowników i oczekiwany czas dogrzania nie są częścią OZC.</small>
            <select id="rk-hp-q8" data-rk-name="Ciepła woda użytkowa" data-rk-critical="false">
              <option value="unknown">Nie wiem</option><option value="yes">Tak</option><option value="no">Nie</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q9">9. Czy zweryfikowano zasilanie elektryczne i zabezpieczenia?</label>
            <small>Obejmuje pompę, grzałkę, urządzenia pomocnicze i warunki przyłączenia.</small>
            <select id="rk-hp-q9" data-rk-name="Zasilanie elektryczne" data-rk-critical="true">
              <option value="unknown">Nie wiem</option><option value="yes">Tak, przez właściwego projektanta lub instalatora</option><option value="no">Nie</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q10">10. Czy sprawdzono lokalizację, hałas i odprowadzenie skroplin?</label>
            <small>Nie wystarcza katalogowy poziom mocy akustycznej bez geometrii działki i przegród.</small>
            <select id="rk-hp-q10" data-rk-name="Lokalizacja, hałas i skropliny" data-rk-critical="false">
              <option value="unknown">Nie wiem</option><option value="yes">Tak</option><option value="no">Nie</option>
            </select>
          </div>
          <div class="rk-hp-question">
            <label for="rk-hp-q11">11. Czy rozwiązano ryzyko właściwe dla monobloku albo splitu?</label>
            <small>Dla monobloku: zamarzanie wody. Dla splitu: poprawne wykonanie obiegu chłodniczego i wymagane kwalifikacje.</small>
            <select id="rk-hp-q11" data-rk-name="Ryzyko konstrukcji monoblok lub split" data-rk-critical="true">
              <option value="unknown">Nie wiem</option><option value="yes">Tak, rozwiązanie jest opisane</option><option value="no">Nie</option>
            </select>
          </div>
        </div>
        <div class="rk-hp-tool-actions">
          <button class="rk-hp-analyze-button" id="rk-hp-analyze" type="button">Przeanalizuj warunki</button>
          <button class="rk-hp-reset-button" id="rk-hp-analyzer-reset" type="button">Wyczyść odpowiedzi</button>
        </div>
        <div class="rk-hp-analyzer-result" aria-live="polite">
          <div class="rk-hp-status is-neutral" id="rk-hp-analyzer-status">Uzupełnij odpowiedzi, aby rozdzielić dane potwierdzone, braki i warunki krytyczne.</div>
          <div class="rk-hp-result-grid">
            <div class="rk-hp-result-column"><h4>Potwierdzone</h4><ul id="rk-hp-confirmed"><li>Brak ocenionych pozycji.</li></ul></div>
            <div class="rk-hp-result-column"><h4>Do sprawdzenia</h4><ul id="rk-hp-check"><li>Wszystkie odpowiedzi „Nie wiem” trafią tutaj.</li></ul></div>
            <div class="rk-hp-result-column"><h4>Warunki krytyczne</h4><ul id="rk-hp-critical"><li>Odpowiedź „Nie” przy pozycji krytycznej trafi tutaj.</li></ul></div>
          </div>
        </div>
        <noscript><div class="rk-hp-note rk-hp-note-bad"><p>Do działania analizatora potrzebna jest obsługa JavaScript. Bez niej potraktuj wszystkie pytania jako ręczną checklistę.</p></div></noscript>
      </div>
    </section>

    <section class="rk-hp-section" id="rk-hp-sizing">
      <span class="rk-hp-eyebrow">Moc wynika z bilansu, nie z powierzchni</span>
      <h2 class="rk-hp-section-title">Jak prawidłowo dobrać moc pompy ciepła z OZC?</h2>
      <p class="rk-hp-lead">Dobór zaczyna się od obciążenia cieplnego budynku przy właściwej temperaturze zewnętrznej. Następnie trzeba ustalić temperaturę wody, sprawdzić moc pompy w tym samym punkcie, określić strategię pracy grzałki i ocenić dolny zakres modulacji.</p>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-card-number">KROK 1</span><h3>Policz budynek</h3><p>Powierzchnie i współczynniki przegród, mostki, temperatury pomieszczeń, wentylacja oraz infiltracja tworzą projektową stratę ciepła.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">KROK 2</span><h3>Ustal temperaturę wody</h3><p>Odbiorniki trzeba sprawdzić przy parametrach, które rzeczywiście mają pokryć straty pomieszczeń — z uwzględnieniem powierzchni czynnej i okładzin.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">KROK 3</span><h3>Odczytaj moc urządzenia</h3><p>Porównaj tabelę lub mapę pracy dla temperatury zewnętrznej i temperatury wody odpowiadających projektowi, nie tylko nazwę mocy modelu.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">KROK 4</span><h3>Ustal biwalencję</h3><p>Zdecyduj, przy jakich warunkach dopuszczasz źródło szczytowe i czy jego moc oraz zasilanie zostały uwzględnione.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">KROK 5</span><h3>Sprawdź minimum</h3><p>Za duża minimalna moc przy łagodnej pogodzie może prowadzić do krótkich cykli, jeśli hydraulika i sterowanie nie zapewnią odbioru energii.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">KROK 6</span><h3>Domknij system</h3><p>Przepływ, zład, odszranianie, CWU, hałas, skropliny, elektryka i warunki serwisu są częścią doboru, a nie dodatkami po zakupie.</p></article>
      </div>
      <div class="rk-hp-formula" role="note">Projektowy punkt porównania: Q̇ budynku przy T<sub>zew,proj</sub> ↔ Q̇ pompy przy tej samej T<sub>zew</sub> i wymaganej T<sub>zasilania</sub></div>
      <p class="rk-hp-copy">Jeżeli chcesz zobaczyć, skąd biorą się poszczególne składniki bilansu, przeczytaj poradnik <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne w budynkach</a>. Do wstępnego uporządkowania danych możesz 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>, pamiętając, że uproszczone narzędzie nie zastępuje pełnego OZC.</p>
      <div class="rk-hp-note rk-hp-note-bad"><p><strong>Dlaczego nie ma tu kalkulatora „m² × W/m²”?</strong> Dwa domy o tej samej powierzchni mogą mieć inne przegrody, wentylację, temperatury wewnętrzne i klimat. Ten sam wskaźnik powierzchniowy może więc jednemu urządzeniu dodać niepotrzebny zapas, a innemu nie zapewnić mocy w warunkach projektowych.</p></div>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-curve">
      <span class="rk-hp-eyebrow">Własne dane zamiast katalogowej obietnicy</span>
      <h2 class="rk-hp-section-title">Wykres mocy pompy i orientacyjny punkt biwalentny</h2>
      <p class="rk-hp-lead">Wpisz projektową stratę budynku oraz cztery punkty mocy grzewczej z dokumentacji konkretnego modelu dla tej samej temperatury wody. Narzędzie zestawi liniowy model obciążenia budynku z interpolowaną krzywą urządzenia.</p>

      <div class="rk-hp-chart-tool" aria-labelledby="rk-hp-chart-tool-title">
        <div class="rk-hp-tool-head">
          <h3 id="rk-hp-chart-tool-title">Porównanie budynku i wybranej pompy</h3>
          <p>Dane demonstracyjne nie opisują żadnego producenta. Zastąp je wartościami z tabeli mocy dla rozważanego modelu.</p>
        </div>

        <div class="rk-hp-chart-fields">
          <div class="rk-hp-chart-field">
            <label for="rk-hp-design-load">Projektowa strata ciepła [kW]</label>
            <input id="rk-hp-design-load" type="number" min="0.5" max="80" step="0.1" value="8.0" inputmode="decimal">
            <small>Wynik OZC dla całego budynku.</small>
          </div>
          <div class="rk-hp-chart-field">
            <label for="rk-hp-design-temp">Temperatura projektowa [°C]</label>
            <input id="rk-hp-design-temp" type="number" min="-35" max="0" step="1" value="-20" inputmode="numeric">
            <small>Ta sama, dla której podano stratę.</small>
          </div>
          <div class="rk-hp-chart-field">
            <label for="rk-hp-balance-temp">Temperatura bez ogrzewania [°C]</label>
            <input id="rk-hp-balance-temp" type="number" min="8" max="20" step="0.5" value="16" inputmode="decimal">
            <small>Uproszczony punkt zerowego obciążenia.</small>
          </div>
          <div class="rk-hp-chart-field">
            <label for="rk-hp-water-temp">Temperatura wody z tabeli</label>
            <select id="rk-hp-water-temp"><option value="W35">W35</option><option value="W45">W45</option><option value="W55">W55</option><option value="inna">inna, jednakowa dla punktów</option></select>
            <small>Nie mieszaj danych dla różnych W.</small>
          </div>
        </div>

        <div class="rk-hp-capacity-title">Moc grzewcza pompy z tabeli producenta</div>
        <div class="rk-hp-chart-fields">
          <div class="rk-hp-chart-field"><label for="rk-hp-cap-p7">A7 [kW]</label><input id="rk-hp-cap-p7" type="number" min="0.1" max="100" step="0.1" value="9.1" inputmode="decimal"><small>Temperatura powietrza +7°C.</small></div>
          <div class="rk-hp-chart-field"><label for="rk-hp-cap-p2">A2 [kW]</label><input id="rk-hp-cap-p2" type="number" min="0.1" max="100" step="0.1" value="8.3" inputmode="decimal"><small>Temperatura powietrza +2°C.</small></div>
          <div class="rk-hp-chart-field"><label for="rk-hp-cap-m7">A−7 [kW]</label><input id="rk-hp-cap-m7" type="number" min="0.1" max="100" step="0.1" value="7.0" inputmode="decimal"><small>Temperatura powietrza −7°C.</small></div>
          <div class="rk-hp-chart-field"><label for="rk-hp-cap-m15">A−15 [kW]</label><input id="rk-hp-cap-m15" type="number" min="0.1" max="100" step="0.1" value="5.8" inputmode="decimal"><small>Temperatura powietrza −15°C.</small></div>
        </div>

        <div class="rk-hp-chart-fields">
          <div class="rk-hp-chart-field">
            <label for="rk-hp-min-output">Orientacyjna minimalna moc [kW]</label>
            <input id="rk-hp-min-output" type="number" min="0" max="30" step="0.1" value="2.5" inputmode="decimal">
            <small>Opcjonalna linia pomocnicza; minimum także zależy od warunków.</small>
          </div>
        </div>

        <div class="rk-hp-tool-actions">
          <button class="rk-hp-chart-button" id="rk-hp-chart-update" type="button">Aktualizuj wykres</button>
          <button class="rk-hp-reset-button" id="rk-hp-chart-reset" type="button">Przywróć dane demonstracyjne</button>
        </div>

        <div class="rk-hp-chart-canvas-wrap">
          <canvas id="rk-hp-chart" width="1200" height="600" role="img" aria-label="Wykres obciążenia cieplnego budynku i mocy pompy ciepła w zależności od temperatury zewnętrznej"></canvas>
        </div>
        <div class="rk-hp-legend" aria-hidden="true">
          <span><i class="is-building"></i>obciążenie budynku</span>
          <span><i class="is-pump"></i>interpolowana moc pompy</span>
          <span><i class="is-minimum"></i>orientacyjna moc minimalna</span>
        </div>
        <div class="rk-hp-chart-result" id="rk-hp-chart-result" aria-live="polite"><strong>Wynik:</strong> zaktualizuj wykres, aby odczytać porównanie.</div>
        <div class="rk-hp-note">
          <p><strong>Zakres narzędzia:</strong> linia budynku i odcinki pomiędzy punktami pompy są uproszczeniem liniowym. Wykres nie uwzględnia pełnej mapy modulacji, defrostu, ograniczeń sprężarki, CWU, pracy grzałki ani rocznego rozkładu pogody. Nie jest doborem urządzenia i nie wylicza sezonowego udziału energii.</p>
        </div>
        <noscript><div class="rk-hp-note rk-hp-note-bad"><p>Wykres wymaga obsługi JavaScript. Bez niej porównaj ręcznie stratę budynku i tabelę mocy pompy w tym samym punkcie temperatur.</p></div></noscript>
      </div>

      <p class="rk-hp-copy">Pełny projekt wymaga połączenia takiego porównania z obciążeniem każdego pomieszczenia i hydrauliką instalacji. Zobacz, jak wygląda <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>.</p>

      <aside class="rk-hp-cta" aria-label="Projekt ogrzewania podłogowego do pompy ciepła">
        <div class="rk-hp-cta-title">Masz OZC i wybraną pompę? Sprawdź jeszcze, czy podłogówka odbierze wymaganą moc przy zakładanej temperaturze wody</div>
        <p>Projekt łączy straty poszczególnych pomieszczeń z powierzchnią czynną podłogi, oporem okładzin, rozstawem rur, długościami pętli, przepływami, stratami ciśnienia i nastawami rozdzielacza. To naturalny kolejny krok po wstępnej weryfikacji wykresu urządzenia.</p>
        <a class="rk-hp-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki do pompy ciepła</a>
        <small class="rk-hp-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-hp-section" id="rk-hp-emitter">
      <span class="rk-hp-eyebrow">Źródło i odbiornik muszą tworzyć jeden układ</span>
      <h2 class="rk-hp-section-title">Pompa ciepła z podłogówką i grzejnikami</h2>
      <p class="rk-hp-lead">Ogrzewanie podłogowe często dobrze współpracuje z pompą ciepła, ponieważ dużą powierzchnią może oddawać ciepło przy relatywnie niskiej temperaturze wody. Nie oznacza to jednak, że każda podłoga wystarczy ani że grzejniki są z definicji wykluczone.</p>
      <div class="rk-hp-table-wrap">
        <table>
          <thead><tr><th>Odbiornik</th><th>Co trzeba policzyć</th><th>Główna korzyść</th><th>Typowa pułapka</th></tr></thead>
          <tbody>
            <tr><td data-label="Odbiornik"><strong>Podłogówka</strong></td><td data-label="Co trzeba policzyć">Moc z powierzchni czynnej, opór okładziny, temperaturę powierzchni, rozstaw, przepływ i pętle.</td><td data-label="Główna korzyść">Duża powierzchnia wymiany może ograniczyć wymaganą temperaturę wody.</td><td data-label="Typowa pułapka">Założenie, że rozstaw 10 cm automatycznie pokryje każdą stratę.</td></tr>
            <tr><td data-label="Odbiornik"><strong>Grzejniki</strong></td><td data-label="Co trzeba policzyć">Moc przy rzeczywistej temperaturze zasilania i powrotu, nie przy dawnych parametrach kotłowych.</td><td data-label="Główna korzyść">Można wykorzystać lub odpowiednio powiększyć istniejące odbiorniki.</td><td data-label="Typowa pułapka">Odczyt mocy dla 75/65/20 i przeniesienie jej na znacznie niższe parametry.</td></tr>
            <tr><td data-label="Odbiornik"><strong>Klimakonwektory</strong></td><td data-label="Co trzeba policzyć">Moc, przepływ, hałas wentylatora, skropliny oraz tryb chłodzenia.</td><td data-label="Główna korzyść">Duża moc przy niższej temperaturze wody i możliwość chłodzenia w odpowiednim układzie.</td><td data-label="Typowa pułapka">Pominięcie akustyki, kondensacji i odprowadzenia skroplin.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-hp-copy">W podłogówce najpierw sprawdza się <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">dopuszczalną temperaturę zasilania</a> i <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">optymalne temperatury pracy</a>. Następnie dobiera się <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w wodnym ogrzewaniu podłogowym</a> z uwzględnieniem tego, jak <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">okładzina wpływa na wydajność podłogi</a>. Materiał i światło przewodów trzeba sprawdzić osobno — pomaga w tym poradnik o <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rurach do ogrzewania podłogowego</a>.</p>
      <div class="rk-hp-note"><p><strong>Nie istnieje uniwersalne „maksymalnie 35°C”.</strong> Wymagana i dopuszczalna temperatura wynika z obciążenia, konstrukcji podłogi, okładziny, strefy, ograniczeń komfortu i dokumentacji systemu. Im niższa temperatura wystarczy do pokrycia strat, tym korzystniejsze warunki ma zwykle pompa.</p></div>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-flow">
      <span class="rk-hp-eyebrow">Kilowaty trzeba przenieść wodą</span>
      <h2 class="rk-hp-section-title">Temperatura zasilania, przepływ i średnice</h2>
      <p class="rk-hp-lead">Pompa może wytwarzać wymaganą moc, lecz instalacja musi jeszcze przenieść ją przez określony przepływ i różnicę temperatur. Dlatego dobór średnic oraz pompy obiegowej nie powinien powstawać z jednej tabeli metrażowej.</p>
      <div class="rk-hp-formula" role="note">Q̇ [kW] ≈ 1,163 × V̇ [m³/h] × ΔT [K] &nbsp;—&nbsp; zależność orientacyjna dla wody</div>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-card-number">MOC</span><h3>Wynika z obciążenia</h3><p>W trybie ogrzewania instalacja musi rozdzielić moc pomiędzy aktywne pomieszczenia bez pozostawienia drogi krytycznej poza zakresem pompy obiegowej.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">ΔT</span><h3>Nie jest zawsze równe 5 K</h3><p>Projektowa różnica temperatur zależy od koncepcji, odbiorników, regulacji oraz warunków pracy. Nie wolno jej kopiować bez sprawdzenia.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">OPÓR</span><h3>Liczy się cała droga</h3><p>Rury, kształtki, zawory, wymienniki, rozdzielacz i urządzenia dodatkowe składają się na punkt pracy obiegu.</p></article>
      </div>
      <p class="rk-hp-copy">Przepływ i wysokość podnoszenia możesz uporządkować w <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatorze doboru pompy obiegowej</a>. Osobno trzeba zweryfikować <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnicę rury zasilającej rozdzielacz</a>, docelowe <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">przepływy na rotametrach</a> i <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalną długość pętli ogrzewania podłogowego</a>.</p>
      <div class="rk-hp-note rk-hp-note-bad"><p><strong>Nie ma jednej średnicy magistrali „dla pompy 8 kW”.</strong> Dla tej samej mocy przepływ zmienia się wraz z ΔT i właściwościami medium, a średnica wynika również z długości, armatury, dostępnego sprężu, prędkości oraz dopuszczalnych strat ciśnienia.</p></div>
    </section>

    <section class="rk-hp-section" id="rk-hp-buffer">
      <span class="rk-hp-eyebrow">Element funkcjonalny, nie obowiązkowy symbol instalacji</span>
      <h2 class="rk-hp-section-title">Bufor, minimalny zład i odszranianie</h2>
      <p class="rk-hp-lead">Bufor nie jest automatycznie konieczny w każdej instalacji i nie jest też automatycznie błędem. Jego funkcję trzeba nazwać: zwiększenie dostępnego zładu, zapewnienie energii do defrostu, ograniczenie taktowania, stabilizacja przepływu albo rozdzielenie hydrauliczne obiegów.</p>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-card-number">UKŁAD BEZPOŚREDNI</span><h3>Możliwie prosta hydraulika</h3><p>Może działać poprawnie, jeśli otwarta instalacja zapewnia wymagany przepływ i zład we wszystkich stanach sterowania, a dokumentacja urządzenia na to pozwala.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">ZWIĘKSZENIE ZŁADU</span><h3>Pojemność bez pełnego rozdziału</h3><p>Dodatkowa pojemność może ograniczyć tempo zmian temperatury, lecz sama nie rozwiązuje każdego problemu przepływowego lub regulacyjnego.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">ROZDZIAŁ HYDRAULICZNY</span><h3>Dwa obiegi wymagają obliczeń</h3><p>Sprzęgło lub bufor z króćcami może rozdzielić przepływy, ale dodaje pompy, mieszanie i straty — trzeba policzyć konsekwencje dla temperatury oraz efektywności.</p></article>
      </div>
      <p class="rk-hp-copy">Zanim dodasz kolejny zbiornik, sprawdź, jak działa <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne w instalacji podłogowej</a> i jakie konsekwencje ma <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/">większy lub mniejszy zład wody</a>. Wymagana objętość oraz minimalny przepływ powinny pochodzić z dokumentacji konkretnej pompy i modelu pracy całej instalacji.</p>
      <div class="rk-hp-note"><p><strong>Defrost nie ma jednej stałej częstotliwości.</strong> Zależy od temperatury, wilgotności, konstrukcji urządzenia i sterowania. Podczas odszraniania układ potrzebuje odpowiedniego przepływu i dostępnej energii; sposób jej zapewnienia wynika z kompletnej koncepcji hydraulicznej.</p></div>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-cost">
      <span class="rk-hp-eyebrow">Najpierw energia, potem taryfa</span>
      <h2 class="rk-hp-section-title">Ile prądu zużywa pompa ciepła i od czego zależy koszt?</h2>
      <p class="rk-hp-lead">Rocznego rachunku nie da się wiarygodnie wyprowadzić z powierzchni domu ani katalogowego COP. Potrzebne są roczne potrzeby ogrzewania i CWU, realistyczna efektywność sezonowa, udział grzałki, energia pomocnicza oraz sposób rozliczania energii.</p>
      <div class="rk-hp-formula" role="note">Energia elektryczna ogrzewania ≈ roczne ciepło dostarczone do CO ÷ rzeczywista efektywność sezonowa systemu</div>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-card-number">MODEL A</span><h3>12 000 kWh ciepła ÷ 4,0</h3><p>Około 3 000 kWh energii elektrycznej na ogrzewanie w przyjętym modelu — przed doliczeniem CWU, grzałki i urządzeń poza granicą obliczenia.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">MODEL B</span><h3>12 000 kWh ciepła ÷ 3,0</h3><p>Około 4 000 kWh. Ta sama potrzeba cieplna przy niższej efektywności oznacza o jedną trzecią większe zużycie w tym uproszczeniu.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">RACHUNEK</span><h3>kWh to jeszcze nie złote</h3><p>Koszt zależy od cen energii i dystrybucji, taryfy, autokonsumpcji, godzin pracy oraz zasad rozliczeń obowiązujących w danym okresie.</p></article>
      </div>
      <p class="rk-hp-copy">Przykłady są scenariuszami edukacyjnymi, nie prognozą dla konkretnego domu. Potrzeby cieplne można ograniczyć między innymi przez poprawę przegród i właściwie zaprojektowaną wentylację; zależność pomiędzy systemami wyjaśnia poradnik o tym, czy <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperacja i ogrzewanie podłogowe się opłacają</a>.</p>
      <div class="rk-hp-note rk-hp-note-bad"><p><strong>Nie myl mocy z efektywnością.</strong> Urządzenie może dostarczyć brakującą moc dzięki grzałce, ale nie oznacza to, że cała energia cieplna została wytworzona z wysokim COP sprężarki. W analizie trzeba oddzielić pracę sprężarki, grzałki i urządzeń pomocniczych.</p></div>
    </section>

    <section class="rk-hp-section" id="rk-hp-fgas">
      <span class="rk-hp-eyebrow">Czynnik jest częścią systemu bezpieczeństwa i serwisu</span>
      <h2 class="rk-hp-section-title">Czynniki chłodnicze i przepisy F-gazowe</h2>
      <p class="rk-hp-lead">Oznaczenia R290, R32 lub inne nie tworzą prostego rankingu urządzeń. Czynnik wpływa na konstrukcję, bezpieczeństwo, zakres zastosowania, serwis i obowiązki wynikające z przepisów, ale o jakości systemu nadal decyduje kompletny projekt oraz właściwości konkretnej pompy.</p>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-card-number">WŁAŚCIWOŚCI</span><h3>Nie tylko GWP</h3><p>Poza wpływem klimatycznym znaczenie mają klasa bezpieczeństwa, palność, ciśnienia pracy, ilość czynnika, lokalizacja i rozwiązania konstrukcyjne urządzenia.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">MONTAŻ</span><h3>Zakres zależy od układu</h3><p>Obowiązki przy urządzeniu hermetycznym, monobloku i splicie mogą być inne. Trzeba odnieść konkretną konfigurację do aktualnego prawa i instrukcji.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">SERWIS</span><h3>Dostępność ma znaczenie</h3><p>Przed zakupem sprawdź warunki gwarancji, kwalifikacje wymagane do prac, dostęp do serwisu oraz procedury na wypadek nieszczelności lub awarii.</p></article>
      </div>
      <div class="rk-hp-note"><p><strong>R290 nie oznacza automatycznie monobloku, a R32 nie definiuje samodzielnie jakości pompy.</strong> Porównuj moc, efektywność, zakres pracy, hałas, hydraulikę, bezpieczeństwo, warunki montażu i serwis tego samego urządzenia. Aktualne ramy unijne podaję w sekcji oficjalnych źródeł.</p></div>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-renovation">
      <span class="rk-hp-eyebrow">Modernizacja wymaga diagnozy stanu istniejącego</span>
      <h2 class="rk-hp-section-title">Pompa ciepła w nowym i remontowanym domu</h2>
      <p class="rk-hp-lead">W nowym budynku można od początku skoordynować przegrody, wentylację, źródło ciepła, temperaturę wody i hydraulikę. W modernizowanym domu najpierw trzeba ustalić, co rzeczywiście istnieje i jak budynek zachowuje się w chłodne dni.</p>
      <div class="rk-hp-grid-2">
        <article class="rk-hp-card">
          <span class="rk-hp-card-number">NOWY DOM</span>
          <h3>Projektowanie od wspólnego bilansu</h3>
          <ul class="rk-hp-bullets">
            <li>obliczenia pomieszczenie po pomieszczeniu,</li>
            <li>temperatura wody skoordynowana z odbiornikami,</li>
            <li>trasy, miejsce jednostek, skropliny i zasilanie zaplanowane przed wykonaniem,</li>
            <li>sterowanie dostosowane do bezwładności instalacji.</li>
          </ul>
        </article>
        <article class="rk-hp-card">
          <span class="rk-hp-card-number">REMONT</span>
          <h3>Pomiary i warianty zamiast założeń</h3>
          <ul class="rk-hp-bullets">
            <li>inwentaryzacja przegród oraz istniejących grzejników,</li>
            <li>sprawdzenie możliwej temperatury zasilania w zimie,</li>
            <li>ocena miejsca, hałasu, elektryki i obecnej hydrauliki,</li>
            <li>porównanie wariantu przed i po termomodernizacji.</li>
          </ul>
        </article>
      </div>
      <p class="rk-hp-copy">Pompa ciepła może pracować w starszym budynku, jeśli po obliczeniach i inwentaryzacji odbiorniki pokrywają straty przy akceptowalnych parametrach. Jeżeli modernizacja obejmuje również podłogę, zobacz analizę <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">ogrzewania podłogowego w remontowanym budynku</a>. Czasami racjonalnym etapem jest najpierw ograniczenie strat, wymiana części odbiorników lub układ mieszany.</p>
      <div class="rk-hp-note rk-hp-note-good"><p><strong>Praktyczny test danych:</strong> zapisz temperaturę zasilania i powrotu, temperaturę zewnętrzną oraz zachowanie pomieszczeń podczas chłodnego, stabilnego okresu. Taki pomiar nie zastępuje OZC, ale pomaga wykryć założenia, które nie pasują do stanu rzeczywistego.</p></div>
    </section>

    <section class="rk-hp-section" id="rk-hp-practical">
      <span class="rk-hp-eyebrow">Dobry dobór można zepsuć detalem wykonawczym</span>
      <h2 class="rk-hp-section-title">Hałas, lokalizacja, skropliny, zasilanie i sterowanie</h2>
      <p class="rk-hp-lead">Jednostka zewnętrzna, rurociągi, zabezpieczenia, medium i automatyka powinny zostać opisane przed montażem. Katalogowa moc akustyczna, zdjęcie poglądowe i schemat uniwersalny nie zastępują oceny konkretnej działki oraz instalacji.</p>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-card-number">AKUSTYKA</span><h3>Źródło, odległość i odbicia</h3><p>Sprawdź moc akustyczną urządzenia, kierunek wydmuchu, odległość od własnych i sąsiednich okien, odbicia od ścian oraz tryby nocne.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">SKROPLINY</span><h3>Woda i lód potrzebują drogi</h3><p>Odprowadzenie kondensatu musi działać zimą, nie zalewać fundamentu lub przejścia i nie tworzyć niebezpiecznej tafli lodu.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">WIBRACJE</span><h3>Konstrukcja nie może wzmacniać dźwięku</h3><p>Posadowienie, wsporniki, przejścia przez przegrody i elastyczne połączenia trzeba dobrać do masy, sił i warunków montażu.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">ELEKTRYKA</span><h3>Sprężarka, grzałka i zabezpieczenia</h3><p>Moc przyłączeniowa, liczba faz, prądy, zabezpieczenia oraz sterowanie wymagają sprawdzenia przez osobę o właściwych kompetencjach.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">CHŁODZENIE</span><h3>Komfort bez kondensacji</h3><p>Jeśli instalacja ma chłodzić, trzeba kontrolować punkt rosy, zabezpieczyć powierzchnie i przewody oraz zapewnić odbiorniki właściwe dla wybranego trybu.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">SERWIS</span><h3>Dostęp przed estetyką</h3><p>Zachowaj przestrzeń wymaganą do przepływu powietrza, czyszczenia wymiennika, wymiany podzespołów i bezpiecznych prac.</p></article>
      </div>
      <p class="rk-hp-copy">Automatyka powinna współpracować z bezwładnością systemu. Zobacz, jak działa <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowanie pogodowe w ogrzewaniu podłogowym</a>, kiedy sens mają <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">sterowniki strefowe</a>, jaką funkcję ma <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostat podłogowy</a> oraz do czego służy <a href="https://projekt-ogrzewania.pl/czujnik-podlogowy/">czujnik temperatury podłogi</a>. Częste zamykanie obiegów bez analizy przepływu może być sprzeczne z wymaganiami pompy.</p>
      <p class="rk-hp-copy">Jakość medium i ochrona instalacji również wymagają decyzji projektowej. Ogólne wskazówki znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/czym-napelnic-instalacje-ogrzewania-podlogowego/">czym napełnić instalację ogrzewania podłogowego</a>, a funkcję urządzeń ochronnych opisuje materiał o <a href="https://projekt-ogrzewania.pl/separator-zanieczyszczen-i-powietrza-w-ogrzewaniu-podlogowym-dobor-schemat-montazu-spadek-cisnienia-i-normy/">separatorze zanieczyszczeń i powietrza</a>. Nie stosuj jednej recepty na wodę lub inhibitor bez uwzględnienia materiałów, gwarancji i wymagań wszystkich urządzeń.</p>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-checklist">
      <span class="rk-hp-eyebrow">Dokumenty ważniejsze od obietnicy sprzedawcy</span>
      <h2 class="rk-hp-section-title">Checklista przed podpisaniem umowy</h2>
      <p class="rk-hp-lead">Poproś, aby oferta na pompę ciepła odnosiła się do budynku, punktu pracy i całego systemu. Najważniejsze dane powinny dać się odnaleźć w obliczeniach, kartach urządzenia, schemacie oraz uzgodnionym zakresie wykonania.</p>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-card-number">BUDYNEK</span><h3>Dane wejściowe</h3><ul class="rk-hp-checklist"><li>OZC z temperaturą projektową,</li><li>straty pomieszczeń,</li><li>wentylacja i infiltracja,</li><li>stan przed lub po termomodernizacji,</li><li>potrzeby oraz profil CWU.</li></ul></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">URZĄDZENIE</span><h3>Parametry do porównania</h3><ul class="rk-hp-checklist"><li>moc i COP w punkcie projektowym,</li><li>zakres modulacji,</li><li>mapa lub tabela pracy,</li><li>minimalny przepływ i zład,</li><li>moc grzałki i strategia biwalencji.</li></ul></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">INSTALACJA</span><h3>Warunki wykonania</h3><ul class="rk-hp-checklist"><li>temperatura i moc odbiorników,</li><li>schemat hydrauliczny i sterowanie,</li><li>zasilanie oraz zabezpieczenia,</li><li>lokalizacja, hałas i skropliny,</li><li>rozruch, pomiary, gwarancja i serwis.</li></ul></article>
      </div>
      <p class="rk-hp-copy">Jeżeli w ofercie nie ma podstaw obliczeniowych, przeczytaj, <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">czy do ogrzewania podłogowego potrzebny jest projekt</a>. Dobra dokumentacja nie polega na dodaniu większego urządzenia „na wszelki wypadek”, lecz na pokazaniu zależności pomiędzy budynkiem, pompą i instalacją.</p>
    </section>

    <section class="rk-hp-section" id="rk-hp-errors">
      <span class="rk-hp-eyebrow">Błędy wynikają zwykle z pominiętego połączenia</span>
      <h2 class="rk-hp-section-title">Najczęstsze błędy przy pompie ciepła</h2>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 1</span><h3>Dobór z samego metrażu</h3><p>Powierzchnia nie opisuje przegród, wentylacji, temperatur pomieszczeń ani lokalnego klimatu.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 2</span><h3>Moc nominalna zamiast punktu pracy</h3><p>Nazwa modelu nie gwarantuje tej samej mocy przy mrozie i podwyższonej temperaturze wody.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 3</span><h3>SCOP jako obietnica rachunku</h3><p>Wynik etykiety nie zna rzeczywistego budynku, sterowania, taryfy, CWU ani udziału grzałki.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 4</span><h3>Bufor bez określonej funkcji</h3><p>Dodatkowy zbiornik nie naprawi automatycznie błędnych przepływów, sterowania lub temperatur.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 5</span><h3>Zamykanie wszystkich stref</h3><p>Automatyka pokojowa może pozbawić pompę minimalnego przepływu i aktywnego zładu.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 6</span><h3>Pominięcie akustyki i skroplin</h3><p>Poprawna moc urządzenia nie usuwa problemu źle ustawionej jednostki, lodu lub drgań konstrukcji.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 7</span><h3>Grzejniki ocenione na oko</h3><p>Każdy odbiornik trzeba sprawdzić przy rzeczywistej temperaturze zasilania i projektowej stracie pomieszczenia.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 8</span><h3>Brak pomiarów po uruchomieniu</h3><p>Bez temperatur, przepływów, poboru energii i konfiguracji nie da się rzetelnie ocenić pracy systemu.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-card-number">BŁĄD 9</span><h3>Marketingowy ranking czynników</h3><p>Nazwa czynnika nie zastępuje oceny bezpieczeństwa, mocy, zakresu pracy, serwisu i warunków lokalnych.</p></article>
      </div>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-summary">
      <span class="rk-hp-eyebrow">Wniosek projektowy</span>
      <h2 class="rk-hp-section-title">Pompa ciepła jest częścią instalacji, a nie samodzielną odpowiedzią</h2>
      <p class="rk-hp-lead">Dobrze dobrana pompa ciepła może ogrzewać nowy lub modernizowany dom, współpracować z podłogówką, właściwie dobranymi grzejnikami albo układem mieszanym. Warunkiem nie jest konkretne hasło technologiczne, lecz zgodność obciążenia budynku, mocy urządzenia, temperatury odbiorników, hydrauliki, automatyki i warunków montażu.</p>
      <div class="rk-hp-grid-3">
        <article class="rk-hp-card"><span class="rk-hp-icon">A</span><h3>Policz</h3><p>Projektowe straty budynku i pomieszczeń, wymagane temperatury, przepływy oraz potrzeby CWU.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-icon">B</span><h3>Porównaj</h3><p>Moc i efektywność urządzenia w rzeczywistych punktach pracy, dolną modulację oraz warunki hydrauliczne.</p></article>
        <article class="rk-hp-card"><span class="rk-hp-icon">C</span><h3>Udokumentuj</h3><p>Schemat, ustawienia, zabezpieczenia, rozruch, pomiary i odpowiedzialność za każdą część kompletnego systemu.</p></article>
      </div>
      <div class="rk-hp-note rk-hp-note-good"><p><strong>Najlepszy kolejny krok:</strong> zanim porównasz ceny urządzeń, przygotuj wspólny zestaw danych dla wszystkich ofert. Dopiero wtedy różnice w mocy, SCOP, hałasie, hydraulice i zakresie montażu są porównywalne.</p></div>
    </section>

    <section class="rk-hp-section" id="rk-hp-final">
      <span class="rk-hp-eyebrow">Końcowy krok przed wykonaniem</span>
      <h2 class="rk-hp-section-title">Połącz dobór pompy z hydrauliką ogrzewania podłogowego</h2>
      <p class="rk-hp-lead">Nawet prawidłowo dobrana pompa nie określa jeszcze rozstawu rur, długości pętli, przepływów ani nastaw rozdzielacza. Te dane wynikają z obciążeń poszczególnych pomieszczeń i konstrukcji podłogi.</p>
      <div class="rk-hp-cta">
        <div class="rk-hp-cta-title">Zamień parametry źródła ciepła w policzoną instalację podłogową</div>
        <p>Projekt obejmuje układ pomieszczeń, powierzchnie czynne, rozstaw rur, podział na pętle, długości, przepływy, opory oraz nastawy. Dzięki temu temperatura wody przyjęta dla pompy zostaje sprawdzona po stronie rzeczywistych odbiorników.</p>
        <a class="rk-hp-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
        <small class="rk-hp-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-hp-section" id="rk-hp-sources">
      <span class="rk-hp-eyebrow">Podstawa techniczna</span>
      <h2 class="rk-hp-section-title">Źródła oficjalne i zakres odpowiedzialności</h2>
      <p class="rk-hp-lead">Odnośniki prowadzą wyłącznie do oficjalnych instytucji, rejestrów i aktów prawnych. Nie linkuję tu do producentów, sklepów ani konkurencyjnych serwisów. Źródła zewnętrzne są zebrane tylko w tej sekcji.</p>
      <div class="rk-hp-source-grid">
        <article class="rk-hp-source-card"><a href="https://sklep.pkn.pl/pn-en-12831-2006p.html" target="_blank" rel="nofollow noopener noreferrer">Polski Komitet Normalizacyjny — PN-EN 12831 i dokument zastępujący</a><p>Oficjalna karta wycofanego wydania wskazuje zastąpienie go przez PN-EN 12831-1:2017-08 dotyczącą metody obliczania projektowego obciążenia cieplnego.</p></article>
        <article class="rk-hp-source-card"><a href="https://energy-efficient-products.ec.europa.eu/faqs-0/what-minimum-seasonal-space-heating-energy-efficiency-heat-pumps-are-capable-low-and-medium_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — sezonowa efektywność pomp ciepła</a><p>Oficjalne objaśnienie rozróżnia zastosowania nisko- i średniotemperaturowe oraz odnosi wymagania do sezonowej efektywności ogrzewania pomieszczeń.</p></article>
        <article class="rk-hp-source-card"><a href="https://eprel.ec.europa.eu/" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — baza EPREL</a><p>Oficjalny europejski rejestr produktów z etykietami energetycznymi i kartami informacyjnymi. Dane trzeba odnosić do dokładnego identyfikatora modelu.</p></article>
        <article class="rk-hp-source-card"><a href="https://eur-lex.europa.eu/eli/reg/2024/573/oj" target="_blank" rel="nofollow noopener noreferrer">EUR-Lex — rozporządzenie (UE) 2024/573</a><p>Aktualna podstawa unijnych zasad dotyczących fluorowanych gazów cieplarnianych, w tym ograniczeń, certyfikacji i obowiązków właściwych dla konkretnych urządzeń oraz prac.</p></article>
        <article class="rk-hp-source-card"><a href="https://www.iea.org/reports/energy-efficiency-policy-toolkit/heat-pumps-for-buildings" target="_blank" rel="nofollow noopener noreferrer">Międzynarodowa Agencja Energetyczna — heat pumps for buildings</a><p>Oficjalny materiał o roli pomp ciepła w budynkach, efektywności, integracji z modernizacją i znaczeniu właściwego wdrożenia.</p></article>
      </div>
      <div class="rk-hp-responsibility"><p><strong>Zakres poradnika:</strong> treść i narzędzia pomagają uporządkować dane, wykryć brakujące warunki oraz zrozumieć zależności. Nie są projektem instalacji, świadectwem energetycznym, audytem, doborem konkretnego modelu, analizą akustyczną, projektem elektrycznym, instrukcją chłodniczą ani potwierdzeniem zgodności z gwarancją. Obowiązują aktualne przepisy, dokumentacja wybranego urządzenia, projekt i warunki rzeczywistego budynku.</p></div>
    </section>

    <section class="rk-hp-section rk-hp-section-soft" id="rk-hp-faq">
      <span class="rk-hp-eyebrow">Pytania inwestorów</span>
      <h2 class="rk-hp-section-title">FAQ — pompa ciepła do domu</h2>
      <div class="rk-hp-faq">
        <details><summary>Czy pompa ciepła ogrzeje każdy dom?</summary><div class="rk-hp-faq-answer"><p>Nie można tego potwierdzić na podstawie samej technologii. Trzeba znać projektową stratę ciepła, wymaganą temperaturę odbiorników oraz moc konkretnej pompy w odpowiadającym punkcie pracy. Starszy dom także może być odpowiedni, jeśli te warunki zostały spełnione.</p></div></details>
        <details><summary>Jaka moc pompy ciepła jest potrzebna do domu 150 m²?</summary><div class="rk-hp-faq-answer"><p>Powierzchnia 150 m² nie wystarcza do doboru. Potrzebne jest obciążenie cieplne obliczone dla lokalnej temperatury projektowej, a następnie porównanie go z mocą urządzenia przy wymaganej temperaturze wody i ustalonej strategii biwalentnej.</p></div></details>
        <details><summary>Czy pompa ciepła wymaga ogrzewania podłogowego?</summary><div class="rk-hp-faq-answer"><p>Nie. Podłogówka często pozwala pracować przy niższej temperaturze wody, ale poprawnie dobrane grzejniki lub klimakonwektory także mogą współpracować z pompą. Każdy odbiornik musi pokryć stratę pomieszczenia przy rzeczywistych parametrach.</p></div></details>
        <details><summary>Czy do pompy ciepła zawsze potrzebny jest bufor?</summary><div class="rk-hp-faq-answer"><p>Nie zawsze. Decyzja zależy od minimalnego przepływu i zładu, odszraniania, modulacji, sterowania strefowego, schematu hydraulicznego oraz wymagań konkretnej pompy. Bufor powinien mieć zdefiniowaną funkcję, a nie być dodawany automatycznie.</p></div></details>
        <details><summary>Co to jest punkt biwalentny pompy ciepła?</summary><div class="rk-hp-faq-answer"><p>To warunek, przy którym moc pompy i obciążenie budynku są sobie równe w przyjętym modelu. Poniżej tego punktu może być potrzebne źródło szczytowe, jeśli pompa nie pokrywa całej mocy. Nie istnieje jedna uniwersalna temperatura biwalencji dla wszystkich domów.</p></div></details>
        <details><summary>Czym różni się COP od SCOP?</summary><div class="rk-hp-faq-answer"><p>COP opisuje efektywność w konkretnym punkcie badania, a SCOP — wynik sezonowy według określonej metody, klimatu i zastosowania. Żadna z tych wartości sama nie jest gwarancją rachunku konkretnego budynku.</p></div></details>
        <details><summary>Co jest lepsze: pompa monoblok czy split?</summary><div class="rk-hp-faq-answer"><p>Nie ma jednej odpowiedzi. Monoblok wymaga rozwiązania ochrony zewnętrznego obiegu wodnego, a split poprawnego wykonania połączeń chłodniczych i spełnienia właściwych obowiązków. Porównaj kompletny montaż, bezpieczeństwo, serwis i parametry urządzenia.</p></div></details>
        <details><summary>Ile prądu zużywa pompa ciepła?</summary><div class="rk-hp-faq-answer"><p>Zależy to od ilości ciepła potrzebnego do ogrzewania i CWU, rzeczywistej efektywności sezonowej, temperatury wody, klimatu, sterowania, udziału grzałki oraz energii pomocniczej. Katalogowy COP nie wystarcza do wyliczenia rocznego zużycia.</p></div></details>
        <details><summary>Czy pompa ciepła może współpracować ze zwykłymi grzejnikami?</summary><div class="rk-hp-faq-answer"><p>Może, jeśli ich moc przy osiągalnej temperaturze zasilania pokrywa straty pomieszczeń. Moc podana dla wysokich parametrów kotłowych nie może być bezpośrednio przeniesiona na niską temperaturę wody.</p></div></details>
        <details><summary>Czy R290 jest zawsze lepszy od R32?</summary><div class="rk-hp-faq-answer"><p>Nie należy wybierać pompy wyłącznie po symbolu czynnika. Trzeba porównać wpływ klimatyczny, klasę bezpieczeństwa, konstrukcję, moc, efektywność, zakres pracy, lokalizację, wymagania montażowe i dostępność serwisu konkretnego urządzenia.</p></div></details>
      </div>
    </section>

    <section class="rk-hp-author" id="rk-hp-author">
      <span class="rk-hp-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-hp-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-hp-author-layout">
        <aside class="rk-hp-author-side">
          <div class="rk-hp-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-hp-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-hp-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-hp-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-hp-author-main">
          <div class="rk-hp-author-quote">„Pompy ciepła nie dobiera się do metrażu ani do nazwy modelu. Najpierw trzeba połączyć obciążenie budynku, temperaturę odbiorników, rzeczywistą moc urządzenia i hydraulikę w jednym punkcie projektowym.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W pracy projektowej analizuje zależności pomiędzy stratami pomieszczeń, powierzchnią czynną podłogi, temperaturą zasilania, przepływami, oporami instalacji oraz wymaganiami źródła ciepła.</p>
          <p>W poradnikach oddziela deklaracje marketingowe od parametrów możliwych do sprawdzenia w obliczeniach i dokumentacji technicznej. Ten materiał został zweryfikowany pod kątem poprawnego rozróżnienia mocy i efektywności, warunków punktu pracy, doboru z OZC, funkcji bufora, wymagań przepływowych, sterowania strefowego oraz ograniczeń uproszczonych narzędzi.</p>
          <p>Treść nie promuje konkretnej marki ani czynnika chłodniczego. Jej celem jest pokazanie inwestorowi, jakie dane powinny być wspólne dla porównywanych ofert i w których miejscach potrzebna jest odpowiedzialność projektanta, instalatora chłodniczego, elektryka albo serwisu.</p>
          <p>Publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego w serwisie Projekt-Ogrzewania.pl</a>.</p>
          <div class="rk-hp-author-facts">
            <div class="rk-hp-author-fact"><strong>Zakres</strong>ogrzewanie podłogowe, bilanse cieplne i hydraulika instalacji</div>
            <div class="rk-hp-author-fact"><strong>Metoda pracy</strong>obliczenia, dokumentacja urządzeń i weryfikacja warunków rzeczywistych</div>
            <div class="rk-hp-author-fact"><strong>Aktualizacja</strong>stan techniczny materiału sprawdzony 9 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>

    
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "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/",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg"
      },
      "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": "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": [
        "pompy ciepła",
        "ogrzewanie podłogowe",
        "obliczenia obciążenia cieplnego",
        "hydraulika instalacji grzewczych",
        "dobór pomp obiegowych",
        "sterowanie pogodowe"
      ],
      "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": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Pompa-Ciepla-2026.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Pompa-Ciepla-2026.webp",
      "width": 945,
      "height": 945,
      "caption": "Pompa ciepła przy domu jednorodzinnym",
      "creditText": "Robert Kucharski"
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#webpage",
      "url": "https://projekt-ogrzewania.pl/pompa-ciepla/",
      "name": "Pompa ciepła do domu – jak działa, ile zużywa prądu i jak dobrać moc?",
      "description": "Pompa ciepła do domu: sprawdź, jak działa, jak dobrać moc z OZC, ile zużywa prądu i kiedy dobrze współpracuje z podłogówką.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#primaryimage" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#breadcrumb" },
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#article" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt Ogrzewania",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Pompa ciepła do domu",
          "item": "https://projekt-ogrzewania.pl/pompa-ciepla/"
        }
      ]
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#article",
      "url": "https://projekt-ogrzewania.pl/pompa-ciepla/",
      "headline": "Pompa ciepła do domu – jak działa, ile zużywa prądu i jak dobrać moc?",
      "description": "Techniczny poradnik o działaniu, doborze z OZC, COP, SCOP, punkcie biwalentnym, hydraulice, kosztach i współpracy pompy ciepła z podłogówką lub grzejnikami.",
      "datePublished": "2026-01-03T16:18:37+01:00",
      "dateModified": "2026-09-09T12:00:00+02:00",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#webpage" },
      "image": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#primaryimage" },
      "inLanguage": "pl-PL",
      "articleSection": [
        "Jak działa pompa ciepła",
        "COP i SCOP",
        "Dobór mocy z OZC",
        "Punkt biwalentny",
        "Pompa ciepła z podłogówką i grzejnikami",
        "Hydraulika, bufor i odszranianie",
        "Zużycie energii i koszty",
        "Czynniki chłodnicze i montaż"
      ],
      "keywords": [
        "pompa ciepła do domu",
        "jak działa pompa ciepła",
        "dobór pompy ciepła z OZC",
        "COP a SCOP",
        "punkt biwalentny",
        "pompa ciepła z podłogówką",
        "pompa ciepła do grzejników",
        "czy pompa ciepła potrzebuje bufora",
        "ile prądu zużywa pompa ciepła"
      ],
      "citation": [
        "https://sklep.pkn.pl/pn-en-12831-2006p.html",
        "https://energy-efficient-products.ec.europa.eu/faqs-0/what-minimum-seasonal-space-heating-energy-efficiency-heat-pumps-are-capable-low-and-medium_en",
        "https://eprel.ec.europa.eu/",
        "https://eur-lex.europa.eu/eli/reg/2024/573/oj",
        "https://www.iea.org/reports/energy-efficiency-policy-toolkit/heat-pumps-for-buildings"
      ],
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#readiness-tool" },
        { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#curve-tool" },
        { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#readiness-tool",
      "name": "Analizator gotowości budynku i instalacji do pompy ciepła",
      "url": "https://projekt-ogrzewania.pl/pompa-ciepla/#rk-hp-analyzer-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie porządkujące warunki potwierdzone, braki danych i krytyczne przeszkody przed doborem pompy ciepła."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#curve-tool",
      "name": "Wykres mocy pompy ciepła i obciążenia budynku",
      "url": "https://projekt-ogrzewania.pl/pompa-ciepla/#rk-hp-curve",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript oraz Canvas",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Edukacyjne porównanie liniowego modelu obciążenia budynku z mocą pompy interpolowaną pomiędzy punktami wpisanymi z dokumentacji urządzenia."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#howto",
      "name": "Jak wstępnie zweryfikować dobór mocy pompy ciepła",
      "description": "Sześć etapów porównania budynku, odbiorników i konkretnego urządzenia.",
      "inLanguage": "pl-PL",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Policz budynek", "text": "Wyznacz projektowe obciążenie cieplne z uwzględnieniem przegród, wentylacji, infiltracji i temperatur pomieszczeń." },
        { "@type": "HowToStep", "position": 2, "name": "Ustal temperaturę wody", "text": "Sprawdź wymaganą moc odbiorników przy rzeczywistej temperaturze zasilania i powrotu." },
        { "@type": "HowToStep", "position": 3, "name": "Odczytaj moc urządzenia", "text": "Porównaj tabelę lub mapę mocy pompy dla projektowej temperatury źródła i wymaganej temperatury wody." },
        { "@type": "HowToStep", "position": 4, "name": "Ustal biwalencję", "text": "Określ warunki oraz moc źródła szczytowego i uwzględnij je w bilansie elektrycznym." },
        { "@type": "HowToStep", "position": 5, "name": "Sprawdź modulację", "text": "Zweryfikuj minimalną moc urządzenia przy łagodnej pogodzie i ryzyko częstych cykli." },
        { "@type": "HowToStep", "position": 6, "name": "Domknij system", "text": "Sprawdź przepływ, zład, odszranianie, CWU, hałas, skropliny, zasilanie oraz warunki serwisu." }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla/#faq-schema",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy pompa ciepła ogrzeje każdy dom?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie można tego potwierdzić na podstawie samej technologii. Trzeba znać projektową stratę ciepła, wymaganą temperaturę odbiorników oraz moc konkretnej pompy w odpowiadającym punkcie pracy. Starszy dom także może być odpowiedni, jeśli te warunki zostały spełnione." }
        },
        {
          "@type": "Question",
          "name": "Jaka moc pompy ciepła jest potrzebna do domu 150 m²?",
          "acceptedAnswer": { "@type": "Answer", "text": "Powierzchnia 150 m² nie wystarcza do doboru. Potrzebne jest obciążenie cieplne obliczone dla lokalnej temperatury projektowej, a następnie porównanie go z mocą urządzenia przy wymaganej temperaturze wody i ustalonej strategii biwalentnej." }
        },
        {
          "@type": "Question",
          "name": "Czy pompa ciepła wymaga ogrzewania podłogowego?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Podłogówka często pozwala pracować przy niższej temperaturze wody, ale poprawnie dobrane grzejniki lub klimakonwektory także mogą współpracować z pompą. Każdy odbiornik musi pokryć stratę pomieszczenia przy rzeczywistych parametrach." }
        },
        {
          "@type": "Question",
          "name": "Czy do pompy ciepła zawsze potrzebny jest bufor?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie zawsze. Decyzja zależy od minimalnego przepływu i zładu, odszraniania, modulacji, sterowania strefowego, schematu hydraulicznego oraz wymagań konkretnej pompy. Bufor powinien mieć zdefiniowaną funkcję, a nie być dodawany automatycznie." }
        },
        {
          "@type": "Question",
          "name": "Co to jest punkt biwalentny pompy ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "To warunek, przy którym moc pompy i obciążenie budynku są sobie równe w przyjętym modelu. Poniżej tego punktu może być potrzebne źródło szczytowe, jeśli pompa nie pokrywa całej mocy. Nie istnieje jedna uniwersalna temperatura biwalencji dla wszystkich domów." }
        },
        {
          "@type": "Question",
          "name": "Czym różni się COP od SCOP?",
          "acceptedAnswer": { "@type": "Answer", "text": "COP opisuje efektywność w konkretnym punkcie badania, a SCOP — wynik sezonowy według określonej metody, klimatu i zastosowania. Żadna z tych wartości sama nie jest gwarancją rachunku konkretnego budynku." }
        },
        {
          "@type": "Question",
          "name": "Co jest lepsze: pompa monoblok czy split?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednej odpowiedzi. Monoblok wymaga rozwiązania ochrony zewnętrznego obiegu wodnego, a split poprawnego wykonania połączeń chłodniczych i spełnienia właściwych obowiązków. Porównaj kompletny montaż, bezpieczeństwo, serwis i parametry urządzenia." }
        },
        {
          "@type": "Question",
          "name": "Ile prądu zużywa pompa ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Zależy to od ilości ciepła potrzebnego do ogrzewania i CWU, rzeczywistej efektywności sezonowej, temperatury wody, klimatu, sterowania, udziału grzałki oraz energii pomocniczej. Katalogowy COP nie wystarcza do wyliczenia rocznego zużycia." }
        },
        {
          "@type": "Question",
          "name": "Czy pompa ciepła może współpracować ze zwykłymi grzejnikami?",
          "acceptedAnswer": { "@type": "Answer", "text": "Może, jeśli ich moc przy osiągalnej temperaturze zasilania pokrywa straty pomieszczeń. Moc podana dla wysokich parametrów kotłowych nie może być bezpośrednio przeniesiona na niską temperaturę wody." }
        },
        {
          "@type": "Question",
          "name": "Czy R290 jest zawsze lepszy od R32?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie należy wybierać pompy wyłącznie po symbolu czynnika. Trzeba porównać wpływ klimatyczny, klasę bezpieczeństwa, konstrukcję, moc, efektywność, zakres pracy, lokalizację, wymagania montażowe i dostępność serwisu konkretnego urządzenia." }
        }
      ]
    }
  ]
}
</script>

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

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

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

  function makeList(list, items, emptyText) {
    while (list.firstChild) {
      list.removeChild(list.firstChild);
    }
    if (items.length === 0) {
      var emptyItem = document.createElement("li");
      emptyItem.textContent = emptyText;
      list.appendChild(emptyItem);
      return;
    }
    items.forEach(function (itemText) {
      var item = document.createElement("li");
      item.textContent = itemText;
      list.appendChild(item);
    });
  }

  var sourceData = {
    air: {
      name: "Pompa powietrze–woda:",
      description: " parownik odbiera energię z powietrza. W chłodnej i wilgotnej pogodzie na wymienniku może powstawać szron, dlatego urządzenie okresowo przeprowadza odszranianie.",
      evaporator: "Czynnik chłodniczy odbiera ciepło od powietrza przepływającego przez wymiennik i odparowuje przy niskim ciśnieniu."
    },
    ground: {
      name: "Pompa grunt–woda:",
      description: " parownik odbiera energię z obiegu dolnego źródła połączonego z sondami lub kolektorem. Stabilność zależy od poprawnego zaprojektowania i regeneracji gruntu.",
      evaporator: "Czynnik chłodniczy odbiera ciepło od płynu krążącego w dolnym źródle i odparowuje przy niskim ciśnieniu."
    }
  };

  var sourceButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-source]"));
  var sourceName = byId("rk-hp-source-name");
  var sourceDescription = byId("rk-hp-source-description");
  var evaporatorText = byId("rk-hp-evaporator-text");

  function selectSource(key) {
    var selected = sourceData[key];
    if (!selected) {
      return;
    }
    sourceName.textContent = selected.name;
    sourceDescription.textContent = selected.description;
    evaporatorText.textContent = selected.evaporator;
    sourceButtons.forEach(function (button) {
      var isSelected = button.getAttribute("data-rk-source") === key;
      button.setAttribute("aria-pressed", isSelected ? "true" : "false");
    });
  }

  sourceButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      selectSource(button.getAttribute("data-rk-source"));
    });
  });

  var analyzerSelects = Array.prototype.slice.call(root.querySelectorAll("#rk-hp-analyzer select[data-rk-name]"));
  var analyzerStatus = byId("rk-hp-analyzer-status");
  var confirmedList = byId("rk-hp-confirmed");
  var checkList = byId("rk-hp-check");
  var criticalList = byId("rk-hp-critical");
  var analyzeButton = byId("rk-hp-analyze");
  var analyzerReset = byId("rk-hp-analyzer-reset");

  function analyzeReadiness() {
    var confirmed = [];
    var toCheck = [];
    var critical = [];

    analyzerSelects.forEach(function (select) {
      var label = select.getAttribute("data-rk-name");
      var isCritical = select.getAttribute("data-rk-critical") === "true";
      var value = select.value;

      if (value === "yes") {
        confirmed.push(label);
      } else if (value === "unknown") {
        toCheck.push(label + " — brak potwierdzonych danych");
      } else {
        if (isCritical) {
          critical.push(label + " — warunek nie został spełniony");
        } else {
          toCheck.push(label + " — wymaga rozwiązania przed zamówieniem");
        }
      }
    });

    makeList(confirmedList, confirmed, "Brak potwierdzonych pozycji.");
    makeList(checkList, toCheck, "Brak pozycji wymagających uzupełnienia.");
    makeList(criticalList, critical, "Nie wskazano niespełnionego warunku krytycznego.");

    if (critical.length > 0) {
      analyzerStatus.className = "rk-hp-status is-stop";
      analyzerStatus.textContent = "Wstrzymaj ostateczny dobór. Co najmniej jeden warunek krytyczny nie jest spełniony; najpierw trzeba uzupełnić obliczenia lub zmienić koncepcję.";
    } else if (toCheck.length > 0) {
      analyzerStatus.className = "rk-hp-status is-warning";
      analyzerStatus.textContent = "Dobór jest niekompletny. Nie wykryto jawnej przeszkody krytycznej, ale brakuje danych potrzebnych do odpowiedzialnej weryfikacji.";
    } else if (confirmed.length === analyzerSelects.length) {
      analyzerStatus.className = "rk-hp-status is-good";
      analyzerStatus.textContent = "Zakres danych jest wstępnie kompletny. Teraz należy sprawdzić ich spójność w obliczeniach i dokumentacji konkretnego urządzenia.";
    } else {
      analyzerStatus.className = "rk-hp-status is-neutral";
      analyzerStatus.textContent = "Uzupełnij odpowiedzi, aby rozdzielić dane potwierdzone, braki i warunki krytyczne.";
    }
  }

  analyzeButton.addEventListener("click", analyzeReadiness);
  analyzerReset.addEventListener("click", function () {
    analyzerSelects.forEach(function (select) {
      select.value = "unknown";
    });
    analyzeReadiness();
  });
  analyzerSelects.forEach(function (select) {
    select.addEventListener("change", analyzeReadiness);
  });

  var chart = byId("rk-hp-chart");
  var chartResult = byId("rk-hp-chart-result");
  var chartUpdate = byId("rk-hp-chart-update");
  var chartReset = byId("rk-hp-chart-reset");
  var chartContext = chart.getContext("2d");

  function numericValue(id) {
    return Number.parseFloat(byId(id).value);
  }

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

  function readChartData() {
    return {
      designLoad: numericValue("rk-hp-design-load"),
      designTemp: numericValue("rk-hp-design-temp"),
      balanceTemp: numericValue("rk-hp-balance-temp"),
      waterTemp: byId("rk-hp-water-temp").value,
      capP7: numericValue("rk-hp-cap-p7"),
      capP2: numericValue("rk-hp-cap-p2"),
      capM7: numericValue("rk-hp-cap-m7"),
      capM15: numericValue("rk-hp-cap-m15"),
      minimumOutput: numericValue("rk-hp-min-output")
    };
  }

  function validateChartData(data) {
    if (Number.isFinite(data.designLoad) === false) {
      return "Wpisz projektową stratę ciepła.";
    }
    if (data.designLoad <= 0) {
      return "Projektowa strata ciepła musi być większa od zera.";
    }
    if (Number.isFinite(data.designTemp) === false) {
      return "Wpisz temperaturę projektową.";
    }
    if (Number.isFinite(data.balanceTemp) === false) {
      return "Wpisz temperaturę bez ogrzewania.";
    }
    if (data.designTemp >= data.balanceTemp) {
      return "Temperatura projektowa musi być niższa od temperatury bez ogrzewania.";
    }
    var capacities = [data.capM15, data.capM7, data.capP2, data.capP7];
    for (var i = 0; i < capacities.length; i += 1) {
      if (Number.isFinite(capacities[i]) === false) {
        return "Uzupełnij wszystkie cztery punkty mocy pompy.";
      }
      if (capacities[i] <= 0) {
        return "Każdy punkt mocy pompy musi być większy od zera.";
      }
    }
    if (Number.isFinite(data.minimumOutput) === false) {
      return "Wpisz orientacyjną moc minimalną albo wartość 0, aby ukryć linię.";
    }
    if (data.minimumOutput < 0) {
      return "Moc minimalna nie może być ujemna.";
    }
    return "";
  }

  function pumpPoints(data) {
    return [
      { x: -15, y: data.capM15 },
      { x: -7, y: data.capM7 },
      { x: 2, y: data.capP2 },
      { x: 7, y: data.capP7 }
    ];
  }

  function interpolatePump(points, temperature) {
    var firstIndex = 0;
    if (temperature <= points[0].x) {
      firstIndex = 0;
    } else if (temperature >= points[points.length - 1].x) {
      firstIndex = points.length - 2;
    } else {
      for (var i = 0; i < points.length - 1; i += 1) {
        if (temperature >= points[i].x) {
          if (temperature <= points[i + 1].x) {
            firstIndex = i;
            break;
          }
        }
      }
    }
    var p1 = points[firstIndex];
    var p2 = points[firstIndex + 1];
    var fraction = (temperature - p1.x) / (p2.x - p1.x);
    return p1.y + fraction * (p2.y - p1.y);
  }

  function buildingLoad(data, temperature) {
    var value = data.designLoad * (data.balanceTemp - temperature) / (data.balanceTemp - data.designTemp);
    if (value < 0) {
      return 0;
    }
    return value;
  }

  function findIntersection(data, points, xMin, xMax) {
    var steps = 900;
    var previousX = xMin;
    var previousDifference = interpolatePump(points, previousX) - buildingLoad(data, previousX);

    for (var i = 1; i <= steps; i += 1) {
      var currentX = xMin + (xMax - xMin) * i / steps;
      var currentDifference = interpolatePump(points, currentX) - buildingLoad(data, currentX);
      var crossed = false;

      if (previousDifference === 0) {
        crossed = true;
      } else if (previousDifference < 0) {
        if (currentDifference > 0) {
          crossed = true;
        }
      } else if (currentDifference < 0) {
        crossed = true;
      }

      if (crossed) {
        var denominator = currentDifference - previousDifference;
        var fraction = 0;
        if (denominator !== 0) {
          fraction = (0 - previousDifference) / denominator;
        }
        var intersectionX = previousX + (currentX - previousX) * fraction;
        return {
          x: intersectionX,
          y: buildingLoad(data, intersectionX)
        };
      }

      previousX = currentX;
      previousDifference = currentDifference;
    }
    return null;
  }

  function drawPolyline(context, points, xScale, yScale, color, width, dash) {
    context.save();
    context.beginPath();
    points.forEach(function (point, index) {
      var x = xScale(point.x);
      var y = yScale(point.y);
      if (index === 0) {
        context.moveTo(x, y);
      } else {
        context.lineTo(x, y);
      }
    });
    context.strokeStyle = color;
    context.lineWidth = width;
    context.lineJoin = "round";
    context.lineCap = "round";
    context.setLineDash(dash);
    context.stroke();
    context.restore();
  }

  function drawPoint(context, x, y, radius, fill, stroke) {
    context.save();
    context.beginPath();
    context.arc(x, y, radius, 0, Math.PI * 2);
    context.fillStyle = fill;
    context.fill();
    context.strokeStyle = stroke;
    context.lineWidth = 3;
    context.stroke();
    context.restore();
  }

  function drawChart() {
    var data = readChartData();
    var error = validateChartData(data);
    if (error !== "") {
      chartResult.innerHTML = "<strong>Sprawdź dane:</strong> " + error;
      chartResult.style.borderLeftColor = "#ff6846";
      return;
    }

    if (!chartContext) {
      chartResult.innerHTML = "<strong>Wykres niedostępny:</strong> przeglądarka nie udostępniła powierzchni Canvas.";
      return;
    }

    var dataPoints = pumpPoints(data);
    var xMin = Math.min(data.designTemp, -15);
    var xMax = Math.max(data.balanceTemp, 7);
    var sampleBuilding = [];
    var samplePump = [];
    var sampleCount = 160;
    var maxY = data.designLoad;

    for (var i = 0; i <= sampleCount; i += 1) {
      var temperature = xMin + (xMax - xMin) * i / sampleCount;
      var loadValue = buildingLoad(data, temperature);
      var pumpValue = interpolatePump(dataPoints, temperature);
      sampleBuilding.push({ x: temperature, y: loadValue });
      samplePump.push({ x: temperature, y: pumpValue });
      maxY = Math.max(maxY, loadValue, pumpValue, data.minimumOutput);
    }

    maxY = Math.max(2, Math.ceil(maxY * 1.16));
    var parentWidth = chart.parentElement.clientWidth - 28;
    var cssWidth = Math.max(280, parentWidth);
    var cssHeight = chart.clientHeight;
    if (cssHeight < 260) {
      cssHeight = 480;
    }
    var pixelRatio = window.devicePixelRatio;
    if (Number.isFinite(pixelRatio) === false) {
      pixelRatio = 1;
    }
    pixelRatio = Math.min(2, Math.max(1, pixelRatio));
    chart.width = Math.floor(cssWidth * pixelRatio);
    chart.height = Math.floor(cssHeight * pixelRatio);
    chartContext.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);
    chartContext.clearRect(0, 0, cssWidth, cssHeight);
    chartContext.fillStyle = "#f7fbfc";
    chartContext.fillRect(0, 0, cssWidth, cssHeight);

    var compact = cssWidth < 580;
    var marginLeft = compact ? 45 : 66;
    var marginRight = compact ? 12 : 25;
    var marginTop = 28;
    var marginBottom = compact ? 58 : 64;
    var plotWidth = cssWidth - marginLeft - marginRight;
    var plotHeight = cssHeight - marginTop - marginBottom;

    function xScale(value) {
      return marginLeft + (value - xMin) / (xMax - xMin) * plotWidth;
    }

    function yScale(value) {
      return marginTop + plotHeight - value / maxY * plotHeight;
    }

    chartContext.font = compact ? "10px Arial" : "12px Arial";
    chartContext.fillStyle = "#506b7b";
    chartContext.strokeStyle = "#d5e3e8";
    chartContext.lineWidth = 1;

    for (var xTick = 0; xTick <= 6; xTick += 1) {
      var xValue = xMin + (xMax - xMin) * xTick / 6;
      var xPosition = xScale(xValue);
      chartContext.beginPath();
      chartContext.moveTo(xPosition, marginTop);
      chartContext.lineTo(xPosition, marginTop + plotHeight);
      chartContext.stroke();
      chartContext.textAlign = "center";
      chartContext.fillText(formatNumber(xValue, 0) + "°C", xPosition, marginTop + plotHeight + 22);
    }

    for (var yTick = 0; yTick <= 5; yTick += 1) {
      var yValue = maxY * yTick / 5;
      var yPosition = yScale(yValue);
      chartContext.beginPath();
      chartContext.moveTo(marginLeft, yPosition);
      chartContext.lineTo(marginLeft + plotWidth, yPosition);
      chartContext.stroke();
      chartContext.textAlign = "right";
      chartContext.fillText(formatNumber(yValue, 1), marginLeft - 8, yPosition + 4);
    }

    chartContext.save();
    chartContext.fillStyle = "#10283a";
    chartContext.font = compact ? "bold 11px Arial" : "bold 13px Arial";
    chartContext.textAlign = "center";
    chartContext.fillText("temperatura zewnętrzna [°C]", marginLeft + plotWidth / 2, cssHeight - 10);
    chartContext.translate(14, marginTop + plotHeight / 2);
    chartContext.rotate(-Math.PI / 2);
    chartContext.fillText("moc [kW]", 0, 0);
    chartContext.restore();

    drawPolyline(chartContext, sampleBuilding, xScale, yScale, "#ff6846", compact ? 3 : 4, []);
    drawPolyline(chartContext, samplePump, xScale, yScale, "#16bcd3", compact ? 3 : 4, []);

    if (data.minimumOutput > 0) {
      drawPolyline(chartContext, [{ x: xMin, y: data.minimumOutput }, { x: xMax, y: data.minimumOutput }], xScale, yScale, "#6963ce", 3, [8, 6]);
    }

    dataPoints.forEach(function (point) {
      drawPoint(chartContext, xScale(point.x), yScale(point.y), compact ? 4 : 5, "#ffffff", "#16bcd3");
    });

    drawPoint(chartContext, xScale(data.designTemp), yScale(data.designLoad), compact ? 5 : 6, "#ffffff", "#ff6846");

    var intersection = findIntersection(data, dataPoints, xMin, xMax);
    if (intersection) {
      drawPoint(chartContext, xScale(intersection.x), yScale(intersection.y), compact ? 5 : 6, "#f2b526", "#ffffff");
    }

    var capacityAtDesign = interpolatePump(dataPoints, data.designTemp);
    var differenceAtDesign = capacityAtDesign - data.designLoad;
    var designSentence = "Przy " + formatNumber(data.designTemp, 0) + "°C model budynku wymaga " + formatNumber(data.designLoad, 1) + " kW, a interpolowana lub ekstrapolowana moc pompy wynosi " + formatNumber(capacityAtDesign, 1) + " kW.";
    var differenceSentence = "";
    if (differenceAtDesign >= 0) {
      differenceSentence = " W tym punkcie model pokazuje nadwyżkę " + formatNumber(differenceAtDesign, 1) + " kW.";
    } else {
      differenceSentence = " W tym punkcie model pokazuje niedobór " + formatNumber(Math.abs(differenceAtDesign), 1) + " kW, który wymaga sprawdzenia w pełnej mapie pracy i strategii źródła szczytowego.";
    }

    var intersectionSentence = "";
    if (intersection) {
      intersectionSentence = " Orientacyjne przecięcie krzywych wypada przy " + formatNumber(intersection.x, 1) + "°C i mocy około " + formatNumber(intersection.y, 1) + " kW.";
    } else {
      intersectionSentence = " W pokazanym zakresie temperatur nie znaleziono przecięcia krzywych.";
    }

    var extrapolationSentence = "";
    if (data.designTemp < -15) {
      extrapolationSentence = " Uwaga: temperatura projektowa leży poniżej najniższego wpisanego punktu, więc moc pompy została ekstrapolowana; koniecznie zastąp ten fragment rzeczywistą tabelą lub mapą producenta.";
    } else if (data.designTemp > 7) {
      extrapolationSentence = " Uwaga: temperatura projektowa leży powyżej najwyższego wpisanego punktu, więc moc pompy została ekstrapolowana.";
    }

    chartResult.innerHTML = "<strong>Wynik dla " + data.waterTemp + ":</strong> " + designSentence + differenceSentence + intersectionSentence + extrapolationSentence;
    chartResult.style.borderLeftColor = "#29c4d7";
    chart.setAttribute("aria-label", designSentence + differenceSentence + intersectionSentence + extrapolationSentence);
  }

  function resetChart() {
    byId("rk-hp-design-load").value = "8.0";
    byId("rk-hp-design-temp").value = "-20";
    byId("rk-hp-balance-temp").value = "16";
    byId("rk-hp-water-temp").value = "W35";
    byId("rk-hp-cap-p7").value = "9.1";
    byId("rk-hp-cap-p2").value = "8.3";
    byId("rk-hp-cap-m7").value = "7.0";
    byId("rk-hp-cap-m15").value = "5.8";
    byId("rk-hp-min-output").value = "2.5";
    drawChart();
  }

  chartUpdate.addEventListener("click", drawChart);
  chartReset.addEventListener("click", resetChart);

  var resizeTimer = 0;
  window.addEventListener("resize", function () {
    window.clearTimeout(resizeTimer);
    resizeTimer = window.setTimeout(drawChart, 160);
  });

  selectSource("air");
  analyzeReadiness();
  drawChart();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">Pompa ciepła do domu – jak działa, ile zużywa prądu i jak dobrać moc?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rura PERT do ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 04 May 2025 08:20:51 +0000</pubDate>
				<category><![CDATA[Budownictwo]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Energooszczędność]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Materiały instalacyjne]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projekty instalacyjne]]></category>
		<category><![CDATA[Rury grzewcze]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[izolacja podłogówki]]></category>
		<category><![CDATA[koszt rury pert]]></category>
		<category><![CDATA[montaż rur pert]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pert vs pex]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[rura pert]]></category>
		<category><![CDATA[rura pert 16 mm]]></category>
		<category><![CDATA[rura pert do pompy ciepła]]></category>
		<category><![CDATA[rury do podłogówki]]></category>
		<category><![CDATA[systemy niskotemperaturowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2559</guid>

					<description><![CDATA[<p>Szukasz niezawodnych materiałów do ogrzewania podłogowego? Rura PERT do ogrzewania podłogowego to wybór łączący elastyczność, trwałość i oszczędność energii. W naszym artykule poznasz zalety rur PERT, koszty, wskazówki montażowe i sekrety efektywnego projektowania. Dowiedz się, jak rury do podłogówki PERT przewyższają PEX i miedź. Zamów na projekt-ogrzewania.pl i zyskaj darmowy projekt instalacji!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/">Rura PERT do ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-pert-guide {
    --rk-dark: #102536;
    --rk-navy: #153c52;
    --rk-blue: #078fbe;
    --rk-cyan: #27c8d8;
    --rk-cyan-soft: #eafcff;
    --rk-orange: #ff6d38;
    --rk-red: #df4537;
    --rk-red-soft: #fff0ee;
    --rk-yellow: #efb93d;
    --rk-yellow-soft: #fff8df;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-purple: #6657c8;
    --rk-ink: #1f2937;
    --rk-text: #475968;
    --rk-muted: #6b7d89;
    --rk-line: #d5e5ec;
    --rk-soft: #f4f9fb;
    --rk-warm: #fff3ec;
    --rk-white: #fff;
    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.76;
  }

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

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

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

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

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

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

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

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

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

  #rk-pert-guide h4 {
    margin-bottom: 8px;
    font-size: 1rem;
    line-height: 1.3;
  }

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

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

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

  #rk-pert-guide .rk-pert-progress-track {
    position: sticky;
    z-index: 50;
    top: 0;
    height: 5px;
    background: rgba(213, 229, 236, .88);
  }

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

  #rk-pert-guide .rk-pert-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 76px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 89% 16%, rgba(255,109,56,.38), transparent 29%),
      radial-gradient(circle at 76% 100%, rgba(39,200,216,.22), transparent 35%),
      linear-gradient(126deg, #0f2233, #143e55 72%, #394247);
  }

  #rk-pert-guide .rk-pert-hero::after {
    content: "";
    position: absolute;
    right: -76px;
    bottom: -116px;
    width: 370px;
    height: 370px;
    border: 44px solid rgba(255,255,255,.045);
    border-radius: 50%;
  }

  #rk-pert-guide .rk-pert-hero > * { position: relative; z-index: 2; }

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

  #rk-pert-guide .rk-pert-eyebrow {
    padding: 9px 14px;
    border: 1px solid rgba(255,255,255,.24);
    border-radius: 999px;
    color: #ddfbff;
    background: rgba(255,255,255,.055);
  }

  #rk-pert-guide .rk-pert-eyebrow b {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255,109,56,.16);
  }

  #rk-pert-guide .rk-pert-hero-title {
    max-width: 1030px;
    margin-bottom: 22px;
    color: var(--rk-white) !important;
    font-size: clamp(2.12rem, 5.2vw, 4.25rem);
    font-weight: 980;
    letter-spacing: -.058em;
    line-height: 1;
  }

  #rk-pert-guide .rk-pert-hero-title em {
    color: #7bf0fa;
    font-style: normal;
  }

  #rk-pert-guide .rk-pert-hero-lead {
    max-width: 930px;
    margin-bottom: 24px;
    color: #d8e9f0;
    font-size: clamp(1rem, 2vw, 1.22rem);
    line-height: 1.68;
  }

  #rk-pert-guide .rk-pert-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 11px 24px;
    color: #c6dbe4;
    font-size: .72rem;
    font-weight: 800;
  }

  #rk-pert-guide .rk-pert-meta span { display: inline-flex; gap: 8px; align-items: center; }
  #rk-pert-guide .rk-pert-meta i { width: 7px; height: 7px; border-radius: 50%; background: var(--rk-orange); }

  #rk-pert-guide .rk-pert-author-strip {
    display: flex;
    gap: 13px;
    align-items: center;
    width: fit-content;
    max-width: 100%;
    margin-top: 28px;
    padding: 9px 15px 9px 9px;
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 999px;
    background: rgba(6,26,38,.28);
  }

  #rk-pert-guide .rk-pert-author-strip img {
    width: 48px;
    height: 48px;
    flex: 0 0 48px;
    border: 2px solid rgba(255,255,255,.76);
    border-radius: 50%;
    object-fit: cover;
  }

  #rk-pert-guide .rk-pert-author-strip b,
  #rk-pert-guide .rk-pert-author-strip small { display: block; }
  #rk-pert-guide .rk-pert-author-strip b { color: var(--rk-white); font-size: .88rem; }
  #rk-pert-guide .rk-pert-author-strip small { color: #c9e0e8; font-size: .66rem; line-height: 1.35; }

  #rk-pert-guide .rk-pert-body { padding: clamp(24px, 5.7vw, 66px); }

  #rk-pert-guide .rk-pert-intro-grid,
  #rk-pert-guide .rk-pert-grid-2,
  #rk-pert-guide .rk-pert-grid-3,
  #rk-pert-guide .rk-pert-grid-4 {
    display: grid;
    gap: 18px;
  }

  #rk-pert-guide .rk-pert-intro-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 0 30px; }
  #rk-pert-guide .rk-pert-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-pert-guide .rk-pert-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-pert-guide .rk-pert-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

  #rk-pert-guide .rk-pert-stat,
  #rk-pert-guide .rk-pert-card {
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }

  #rk-pert-guide .rk-pert-stat { padding: 22px; }
  #rk-pert-guide .rk-pert-stat b { display: block; margin-bottom: 7px; color: var(--rk-orange); font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; }
  #rk-pert-guide .rk-pert-stat strong { display: block; color: var(--rk-dark); font-size: 1.04rem; line-height: 1.32; }
  #rk-pert-guide .rk-pert-stat span { display: block; margin-top: 7px; color: var(--rk-muted); font-size: .8rem; line-height: 1.55; }

  #rk-pert-guide .rk-pert-toc {
    margin-bottom: 54px;
    padding: 23px;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    background: var(--rk-soft);
  }

  #rk-pert-guide .rk-pert-toc strong { display: block; margin-bottom: 13px; color: var(--rk-dark); }
  #rk-pert-guide .rk-pert-toc-links { display: flex; flex-wrap: wrap; gap: 9px; }
  #rk-pert-guide .rk-pert-toc a {
    display: inline-flex;
    padding: 8px 12px;
    border: 1px solid #c8dfe8;
    border-radius: 999px;
    color: var(--rk-navy);
    background: var(--rk-white);
    font-size: .72rem;
    line-height: 1.3;
    text-decoration: none;
  }

  #rk-pert-guide .rk-pert-toc a:hover,
  #rk-pert-guide .rk-pert-toc a:focus-visible { border-color: var(--rk-blue); color: var(--rk-blue); }

  #rk-pert-guide .rk-pert-section { margin-top: 62px; }
  #rk-pert-guide .rk-pert-lead { max-width: 960px; color: var(--rk-text); font-size: 1.05rem; }

  #rk-pert-guide .rk-pert-card { padding: 25px; }
  #rk-pert-guide .rk-pert-card-number {
    display: inline-flex;
    margin-bottom: 14px;
    color: var(--rk-blue);
    font-size: .67rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }

  #rk-pert-guide .rk-pert-card p:last-child,
  #rk-pert-guide .rk-pert-callout p:last-child,
  #rk-pert-guide .rk-pert-result-copy p:last-child { margin-bottom: 0; }

  #rk-pert-guide .rk-pert-callout {
    margin-top: 24px;
    padding: 22px 24px;
    border-left: 5px solid var(--rk-blue);
    border-radius: 14px;
    background: var(--rk-cyan-soft);
  }

  #rk-pert-guide .rk-pert-callout.is-warning { border-left-color: var(--rk-yellow); background: var(--rk-yellow-soft); }
  #rk-pert-guide .rk-pert-callout.is-danger { border-left-color: var(--rk-red); background: var(--rk-red-soft); }
  #rk-pert-guide .rk-pert-callout.is-success { border-left-color: var(--rk-green); background: var(--rk-green-soft); }

  #rk-pert-guide .rk-pert-definition {
    display: grid;
    grid-template-columns: minmax(0, 1.12fr) minmax(280px, .88fr);
    gap: 24px;
    align-items: stretch;
  }

  #rk-pert-guide .rk-pert-wordmark {
    display: grid;
    place-items: center;
    min-height: 270px;
    padding: 28px;
    overflow: hidden;
    border-radius: 24px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 72% 25%, rgba(255,109,56,.28), transparent 28%),
      linear-gradient(145deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-pert-guide .rk-pert-wordmark strong { color: var(--rk-white); font-size: clamp(3.2rem, 9vw, 6.6rem); letter-spacing: -.08em; line-height: .9; }
  #rk-pert-guide .rk-pert-wordmark span { display: block; margin-top: 16px; color: #92f3fa; font-size: .75rem; font-weight: 900; letter-spacing: .12em; text-align: center; text-transform: uppercase; }

  #rk-pert-guide .rk-pert-layer-tool {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: linear-gradient(180deg, #fbfeff, #f1f8fa);
  }

  #rk-pert-guide .rk-pert-layer-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-pert-guide .rk-pert-layer-tab {
    min-height: 72px;
    padding: 14px;
    border: 0;
    border-right: 1px solid var(--rk-line);
    color: var(--rk-muted);
    background: transparent;
    font-size: .76rem;
    font-weight: 900;
    line-height: 1.35;
    cursor: pointer;
  }

  #rk-pert-guide .rk-pert-layer-tab:last-child { border-right: 0; }
  #rk-pert-guide .rk-pert-layer-tab[aria-selected="true"] { color: var(--rk-dark); background: var(--rk-cyan-soft); box-shadow: inset 0 -4px 0 var(--rk-cyan); }

  #rk-pert-guide .rk-pert-layer-panel {
    display: grid;
    grid-template-columns: minmax(280px, .9fr) minmax(0, 1.1fr);
    gap: 26px;
    align-items: center;
    padding: clamp(24px, 4.5vw, 48px);
  }

  #rk-pert-guide .rk-pert-layer-panel[hidden] { display: none; }
  #rk-pert-guide .rk-pert-pipe-svg { display: block; width: min(100%, 420px); margin: 0 auto; filter: drop-shadow(0 18px 22px rgba(16,37,54,.14)); }

  #rk-pert-guide .rk-pert-layer-list { display: grid; gap: 10px; margin: 20px 0 0; padding: 0; list-style: none; }
  #rk-pert-guide .rk-pert-layer-list li { display: grid; grid-template-columns: 14px 1fr; gap: 10px; align-items: start; margin: 0; color: var(--rk-text); font-size: .88rem; }
  #rk-pert-guide .rk-pert-layer-list i { width: 12px; height: 12px; margin-top: 8px; border-radius: 4px; background: var(--rk-blue); }

  #rk-pert-guide .rk-pert-audit {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 20px 48px rgba(16,37,54,.09);
  }

  #rk-pert-guide .rk-pert-audit-head {
    padding: clamp(25px, 4.6vw, 44px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 25%, rgba(255,109,56,.32), transparent 27%),
      linear-gradient(128deg, var(--rk-dark), #15516a);
  }

  #rk-pert-guide .rk-pert-audit-head h3 { color: var(--rk-white) !important; font-size: clamp(1.45rem, 3vw, 2.25rem); }
  #rk-pert-guide .rk-pert-audit-head p { max-width: 880px; margin-bottom: 0; color: #d3e7ee; }
  #rk-pert-guide .rk-pert-audit-body { padding: clamp(22px, 4.5vw, 44px); }

  #rk-pert-guide .rk-pert-sample-print {
    margin-bottom: 28px;
    padding: 17px 19px;
    overflow-wrap: anywhere;
    border: 1px dashed #9dcbd8;
    border-radius: 15px;
    color: #d9f8fb;
    background: #163344;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .78rem;
    font-weight: 800;
    line-height: 1.75;
  }

  #rk-pert-guide .rk-pert-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
  #rk-pert-guide .rk-pert-field { display: grid; gap: 7px; }
  #rk-pert-guide .rk-pert-field > label,
  #rk-pert-guide .rk-pert-field > span { color: var(--rk-dark); font-size: .78rem; font-weight: 900; }
  #rk-pert-guide .rk-pert-field small { color: var(--rk-muted); font-size: .68rem; line-height: 1.45; }

  #rk-pert-guide .rk-pert-field select {
    width: 100%;
    min-height: 50px;
    padding: 10px 42px 10px 13px;
    border: 1px solid #bfd7e0;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
  }

  #rk-pert-guide .rk-pert-check-group {
    display: grid;
    gap: 9px;
    padding: 14px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-soft);
  }

  #rk-pert-guide .rk-pert-check {
    display: grid;
    grid-template-columns: 20px 1fr;
    gap: 9px;
    align-items: start;
    color: var(--rk-text);
    font-size: .76rem;
    cursor: pointer;
  }

  #rk-pert-guide .rk-pert-check input { width: 18px; height: 18px; margin: 5px 0 0; accent-color: var(--rk-blue); }

  #rk-pert-guide .rk-pert-audit-action {
    display: inline-flex;
    justify-content: center;
    margin-top: 22px;
    padding: 14px 21px;
    border: 0;
    border-radius: 13px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-orange), #ef4939);
    box-shadow: 0 12px 24px rgba(223,69,55,.19);
    font-weight: 950;
    cursor: pointer;
  }

  #rk-pert-guide .rk-pert-audit-action:hover,
  #rk-pert-guide .rk-pert-audit-action:focus-visible { transform: translateY(-2px); filter: brightness(1.03); }

  #rk-pert-guide .rk-pert-result {
    display: grid;
    grid-template-columns: 190px minmax(0, 1fr);
    gap: 25px;
    align-items: center;
    margin-top: 30px;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-radius: 21px;
    background: var(--rk-soft);
  }

  #rk-pert-guide .rk-pert-score-ring {
    --rk-score: 0;
    display: grid;
    place-items: center;
    width: 154px;
    height: 154px;
    margin: 0 auto;
    border-radius: 50%;
    background: conic-gradient(var(--rk-green) calc(var(--rk-score) * 1%), #dce9ee 0);
  }

  #rk-pert-guide .rk-pert-score-inner {
    display: grid;
    place-items: center;
    width: 116px;
    height: 116px;
    border-radius: 50%;
    color: var(--rk-dark);
    background: var(--rk-white);
    box-shadow: inset 0 0 0 1px var(--rk-line);
  }

  #rk-pert-guide .rk-pert-score-inner strong { font-size: 2rem; line-height: 1; }
  #rk-pert-guide .rk-pert-score-inner span { color: var(--rk-muted); font-size: .65rem; font-weight: 850; }
  #rk-pert-guide .rk-pert-result-copy h3 { margin-bottom: 7px; }
  #rk-pert-guide .rk-pert-result-copy p { color: var(--rk-text); }

  #rk-pert-guide .rk-pert-result-list { display: grid; gap: 9px; margin: 19px 0 0; padding: 0; list-style: none; }
  #rk-pert-guide .rk-pert-result-item { display: grid; grid-template-columns: 94px 1fr; gap: 11px; align-items: start; margin: 0; padding: 11px 12px; border-radius: 11px; background: var(--rk-white); }
  #rk-pert-guide .rk-pert-result-badge { display: inline-flex; justify-content: center; padding: 5px 7px; border-radius: 999px; color: var(--rk-white); background: var(--rk-green); font-size: .58rem; font-weight: 950; letter-spacing: .05em; text-transform: uppercase; }
  #rk-pert-guide .rk-pert-result-item.is-warning .rk-pert-result-badge { color: #5b4300; background: var(--rk-yellow); }
  #rk-pert-guide .rk-pert-result-item.is-danger .rk-pert-result-badge { background: var(--rk-red); }
  #rk-pert-guide .rk-pert-result-item span:last-child { color: var(--rk-text); font-size: .76rem; line-height: 1.5; }

  #rk-pert-guide .rk-pert-inline-cta,
  #rk-pert-guide .rk-pert-final-cta {
    position: relative;
    overflow: hidden;
    padding: clamp(30px, 5.4vw, 58px);
    border-radius: 26px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 93% 10%, rgba(255,109,56,.42), transparent 29%),
      linear-gradient(127deg, #102536, #17495f 76%);
    box-shadow: 0 23px 55px rgba(16,37,54,.15);
  }

  #rk-pert-guide .rk-pert-inline-cta { margin-top: 34px; }
  #rk-pert-guide .rk-pert-final-cta { margin-top: 52px; }
  #rk-pert-guide .rk-pert-inline-cta h2,
  #rk-pert-guide .rk-pert-final-cta h2 { max-width: 980px; color: var(--rk-white) !important; }
  #rk-pert-guide .rk-pert-inline-cta p,
  #rk-pert-guide .rk-pert-final-cta p { max-width: 940px; color: #d1e4ea; }

  #rk-pert-guide .rk-pert-cta-button {
    display: inline-flex;
    justify-content: center;
    margin-top: 6px;
    padding: 15px 22px;
    border-radius: 13px;
    color: var(--rk-white) !important;
    background: linear-gradient(135deg, var(--rk-orange), #f04438);
    box-shadow: 0 14px 27px rgba(223,69,55,.24);
    font-weight: 950;
    line-height: 1.3;
    text-align: center;
    text-decoration: none;
  }

  #rk-pert-guide .rk-pert-cta-button:hover,
  #rk-pert-guide .rk-pert-cta-button:focus-visible { color: var(--rk-white) !important; transform: translateY(-2px); filter: brightness(1.04); }
  #rk-pert-guide .rk-pert-cta-disclosure { display: block; margin-top: 16px; color: #bcd3dd; font-size: .65rem; }

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

  #rk-pert-guide .rk-pert-steps,
  #rk-pert-guide .rk-pert-errors { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
  #rk-pert-guide .rk-pert-step,
  #rk-pert-guide .rk-pert-error { position: relative; padding: 24px 24px 24px 66px; border: 1px solid var(--rk-line); border-radius: 18px; background: var(--rk-white); }
  #rk-pert-guide .rk-pert-step::before,
  #rk-pert-guide .rk-pert-error::before { position: absolute; top: 23px; left: 22px; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; color: var(--rk-white); background: var(--rk-blue); font-size: .67rem; font-weight: 950; }
  #rk-pert-guide .rk-pert-step:nth-child(1)::before { content: "1"; }
  #rk-pert-guide .rk-pert-step:nth-child(2)::before { content: "2"; }
  #rk-pert-guide .rk-pert-step:nth-child(3)::before { content: "3"; }
  #rk-pert-guide .rk-pert-step:nth-child(4)::before { content: "4"; }
  #rk-pert-guide .rk-pert-step:nth-child(5)::before { content: "5"; }
  #rk-pert-guide .rk-pert-step:nth-child(6)::before { content: "6"; }
  #rk-pert-guide .rk-pert-error::before { content: "!"; background: var(--rk-red); }
  #rk-pert-guide .rk-pert-step p,
  #rk-pert-guide .rk-pert-error p { margin-bottom: 0; color: var(--rk-text); font-size: .84rem; }

  #rk-pert-guide .rk-pert-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 18px; margin: 0; padding: 0; list-style: none; }
  #rk-pert-guide .rk-pert-checklist li { position: relative; margin: 0; padding: 14px 15px 14px 48px; border: 1px solid var(--rk-line); border-radius: 13px; color: var(--rk-text); background: var(--rk-white); font-size: .83rem; }
  #rk-pert-guide .rk-pert-checklist li::before { content: "✓"; position: absolute; top: 13px; left: 15px; display: grid; place-items: center; width: 23px; height: 23px; border-radius: 50%; color: var(--rk-white); background: var(--rk-green); font-size: .7rem; font-weight: 950; }

  #rk-pert-guide .rk-pert-faq { display: grid; gap: 11px; }
  #rk-pert-guide .rk-pert-faq details { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
  #rk-pert-guide .rk-pert-faq summary { position: relative; padding: 18px 52px 18px 19px; color: var(--rk-dark); font-weight: 900; line-height: 1.42; cursor: pointer; list-style: none; }
  #rk-pert-guide .rk-pert-faq summary::-webkit-details-marker { display: none; }
  #rk-pert-guide .rk-pert-faq summary::after { content: "+"; position: absolute; top: 50%; right: 18px; display: grid; place-items: center; width: 25px; height: 25px; border-radius: 50%; color: var(--rk-white); background: var(--rk-blue); transform: translateY(-50%); }
  #rk-pert-guide .rk-pert-faq details[open] summary::after { content: "−"; background: var(--rk-orange); }
  #rk-pert-guide .rk-pert-faq-answer { padding: 0 19px 18px; color: var(--rk-text); }
  #rk-pert-guide .rk-pert-faq-answer p:last-child { margin-bottom: 0; }

  #rk-pert-guide .rk-pert-sources-box { padding: 22px 24px; border: 1px solid var(--rk-line); border-radius: 18px; background: var(--rk-soft); }
  #rk-pert-guide .rk-pert-sources-box p:last-child { margin-bottom: 0; }

  #rk-pert-guide .rk-pert-author {
    margin-top: 60px;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 29px;
    background: var(--rk-white);
    box-shadow: 0 23px 55px rgba(16,37,54,.1);
  }

  #rk-pert-guide .rk-pert-author > input { position: absolute; opacity: 0; pointer-events: none; }
  #rk-pert-guide .rk-pert-author-head { display: flex; justify-content: space-between; gap: 22px; align-items: flex-start; padding: 30px 38px; border-bottom: 7px solid var(--rk-cyan); color: var(--rk-white); background: var(--rk-dark); }
  #rk-pert-guide .rk-pert-author-head h2 { margin-bottom: 7px; color: var(--rk-white) !important; }
  #rk-pert-guide .rk-pert-author-head p { margin-bottom: 0; color: #d8e9ef; }
  #rk-pert-guide .rk-pert-author-mark { flex: 0 0 auto; padding: 10px 14px; border: 1px solid #237289; border-radius: 999px; color: #7bf0fa; font-size: .66rem; font-weight: 950; letter-spacing: .07em; text-transform: uppercase; }
  #rk-pert-guide .rk-pert-author-layout { display: grid; grid-template-columns: minmax(260px, .34fr) minmax(0, .66fr); }
  #rk-pert-guide .rk-pert-author-side { padding: 40px 28px; border-right: 1px solid var(--rk-line); background: var(--rk-soft); text-align: center; }
  #rk-pert-guide .rk-pert-author-photo { width: 172px; height: 172px; margin: 0 auto 21px; padding: 8px; border-radius: 50%; background: var(--rk-white); box-shadow: 0 15px 34px rgba(16,37,54,.13); }
  #rk-pert-guide .rk-pert-author-photo img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
  #rk-pert-guide .rk-pert-author-name { color: var(--rk-dark); font-size: 1.25rem; font-weight: 950; }
  #rk-pert-guide .rk-pert-author-role { margin-top: 7px; color: var(--rk-blue); font-size: .7rem; font-weight: 900; line-height: 1.5; text-transform: uppercase; }
  #rk-pert-guide .rk-pert-author-social-label { margin-top: 24px; color: var(--rk-muted); font-size: .67rem; font-weight: 850; }
  #rk-pert-guide .rk-pert-author-social { display: flex; gap: 10px; justify-content: center; margin-top: 10px; }
  #rk-pert-guide .rk-pert-author-social a { display: grid; place-items: center; width: 43px; height: 43px; border: 1px solid #badce6; border-radius: 50%; color: var(--rk-dark); background: var(--rk-white); text-decoration: none; }
  #rk-pert-guide .rk-pert-author-social a:hover,
  #rk-pert-guide .rk-pert-author-social a:focus-visible { color: var(--rk-white); border-color: var(--rk-blue); background: var(--rk-blue); transform: translateY(-2px); }
  #rk-pert-guide .rk-pert-author-social svg { width: 20px; height: 20px; fill: currentColor; }
  #rk-pert-guide .rk-pert-author-main { padding: 38px; }
  #rk-pert-guide .rk-pert-author-quote { margin: 0 0 25px; padding: 24px 28px; border-radius: 18px; background: var(--rk-cyan-soft); }
  #rk-pert-guide .rk-pert-author-quote p { margin: 0; color: var(--rk-dark); font-size: 1.03rem; font-style: italic; font-weight: 850; }
  #rk-pert-guide .rk-pert-author-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--rk-line); border-radius: 14px 14px 0 0; background: var(--rk-soft); }
  #rk-pert-guide .rk-pert-author-tab { padding: 13px 8px; border-right: 1px solid var(--rk-line); color: var(--rk-muted); font-size: .7rem; font-weight: 950; text-align: center; text-transform: uppercase; cursor: pointer; }
  #rk-pert-guide .rk-pert-author-tab:last-child { border-right: 0; }
  #rk-pert-guide .rk-pert-author-panel { display: none; min-height: 150px; padding: 25px; border: 1px solid var(--rk-line); border-top: 0; border-radius: 0 0 14px 14px; }
  #rk-pert-guide .rk-pert-author-panel p:last-child { margin-bottom: 0; }
  #rk-pert-author-about:checked ~ .rk-pert-author-layout .rk-pert-author-panel-about,
  #rk-pert-author-exp:checked ~ .rk-pert-author-layout .rk-pert-author-panel-exp,
  #rk-pert-author-sites:checked ~ .rk-pert-author-layout .rk-pert-author-panel-sites { display: block; }
  #rk-pert-author-about:checked ~ .rk-pert-author-layout label[for="rk-pert-author-about"],
  #rk-pert-author-exp:checked ~ .rk-pert-author-layout label[for="rk-pert-author-exp"],
  #rk-pert-author-sites:checked ~ .rk-pert-author-layout label[for="rk-pert-author-sites"] { color: var(--rk-blue); background: var(--rk-white); box-shadow: inset 0 -4px 0 var(--rk-blue); }
  #rk-pert-guide .rk-pert-site-links { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 16px; }
  #rk-pert-guide .rk-pert-site-links a { padding: 8px 11px; border: 1px solid var(--rk-line); border-radius: 999px; font-size: .7rem; text-decoration: none; }

  @media (max-width: 920px) {
    #rk-pert-guide .rk-pert-intro-grid,
    #rk-pert-guide .rk-pert-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-pert-guide .rk-pert-grid-3 { grid-template-columns: 1fr; }
    #rk-pert-guide .rk-pert-definition,
    #rk-pert-guide .rk-pert-layer-panel,
    #rk-pert-guide .rk-pert-author-layout { grid-template-columns: 1fr; }
    #rk-pert-guide .rk-pert-author-side { border-right: 0; border-bottom: 1px solid var(--rk-line); }
  }

  @media (max-width: 700px) {
    #rk-pert-guide { margin: 16px auto 42px; font-size: 16px; }
    #rk-pert-guide .rk-pert-shell { border-radius: 22px; }
    #rk-pert-guide .rk-pert-hero { padding: 34px 22px 38px; }
    #rk-pert-guide .rk-pert-body { padding: 22px 16px 34px; }
    #rk-pert-guide .rk-pert-author-strip { width: 100%; border-radius: 18px; }
    #rk-pert-guide .rk-pert-intro-grid,
    #rk-pert-guide .rk-pert-grid-2,
    #rk-pert-guide .rk-pert-grid-4,
    #rk-pert-guide .rk-pert-form-grid,
    #rk-pert-guide .rk-pert-result,
    #rk-pert-guide .rk-pert-steps,
    #rk-pert-guide .rk-pert-errors,
    #rk-pert-guide .rk-pert-checklist { grid-template-columns: 1fr; }
    #rk-pert-guide .rk-pert-layer-tabs { grid-template-columns: 1fr; }
    #rk-pert-guide .rk-pert-layer-tab { min-height: 54px; border-right: 0; border-bottom: 1px solid var(--rk-line); }
    #rk-pert-guide .rk-pert-layer-tab:last-child { border-bottom: 0; }
    #rk-pert-guide .rk-pert-layer-tab[aria-selected="true"] { box-shadow: inset 4px 0 0 var(--rk-cyan); }
    #rk-pert-guide .rk-pert-result-item { grid-template-columns: 82px 1fr; }
    #rk-pert-guide .rk-pert-inline-cta,
    #rk-pert-guide .rk-pert-final-cta { padding: 30px 22px; border-radius: 21px; }
    #rk-pert-guide .rk-pert-cta-button { width: 100%; }
    #rk-pert-guide .rk-pert-author-head { display: block; padding: 28px 22px; }
    #rk-pert-guide .rk-pert-author-mark { display: inline-flex; margin-top: 16px; }
    #rk-pert-guide .rk-pert-author-main { padding: 25px 18px; }
    #rk-pert-guide .rk-pert-author-tabs { grid-template-columns: 1fr; }
    #rk-pert-guide .rk-pert-author-tab { border-right: 0; border-bottom: 1px solid var(--rk-line); }
    #rk-pert-guide .rk-pert-author-tab:last-child { border-bottom: 0; }
    #rk-pert-author-about:checked ~ .rk-pert-author-layout label[for="rk-pert-author-about"],
    #rk-pert-author-exp:checked ~ .rk-pert-author-layout label[for="rk-pert-author-exp"],
    #rk-pert-author-sites:checked ~ .rk-pert-author-layout label[for="rk-pert-author-sites"] { box-shadow: inset 4px 0 0 var(--rk-blue); }

    #rk-pert-guide .rk-pert-table-wrap { overflow: visible; border: 0; border-radius: 0; }
    #rk-pert-guide .rk-pert-table,
    #rk-pert-guide .rk-pert-table tbody,
    #rk-pert-guide .rk-pert-table tr,
    #rk-pert-guide .rk-pert-table td { display: block; width: 100%; }
    #rk-pert-guide .rk-pert-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
    #rk-pert-guide .rk-pert-table tr { margin-bottom: 14px; overflow: hidden; border: 1px solid var(--rk-line); border-radius: 16px; background: var(--rk-white); }
    #rk-pert-guide .rk-pert-table td { display: grid; grid-template-columns: minmax(112px, .42fr) minmax(0, .58fr); gap: 12px; padding: 13px 14px; border-bottom: 1px solid var(--rk-line); }
    #rk-pert-guide .rk-pert-table td:last-child { border-bottom: 0; }
    #rk-pert-guide .rk-pert-table td::before { content: attr(data-label); color: var(--rk-dark); font-size: .69rem; font-weight: 950; }
  }

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

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

    <header class="rk-pert-hero">
      <span class="rk-pert-eyebrow"><b></b>Poradnik techniczny • aktualizacja 2026</span>
      <h2 class="rk-pert-hero-title">Rura <em>PE-RT</em> do ogrzewania podłogowego: materiał to dopiero początek wyboru</h2>
      <p class="rk-pert-hero-lead">Sprawdź różnicę między PE-RT Type I i Type II, rurą z barierą EVOH oraz konstrukcją PE-RT/Al/PE-RT. Naucz się czytać nadruk, klasę zastosowania, ciśnienie projektowe i dokumentację systemu — bez rankingów kolorów i marketingowych skrótów.</p>
      <div class="rk-pert-meta">
        <span><i></i>Aktualizacja: 29 sierpnia 2026 r.</span>
        <span><i></i>ISO 22391 • ISO 21003 • ISO 10508 • DIN 4726:2024</span>
        <span><i></i>Poziom: inwestor • instalator • projektant</span>
      </div>
      <div class="rk-pert-author-strip" itemprop="author" itemscope itemtype="https://schema.org/Person">
        <img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych" width="96" height="96" loading="eager" decoding="async" itemprop="image">
        <span><b itemprop="name">Robert Kucharski</b><small itemprop="jobTitle">Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</small></span>
      </div>
    </header>

    <div class="rk-pert-body">
      <div class="rk-pert-intro-grid" aria-label="Najważniejsze informacje">
        <div class="rk-pert-stat"><b>Najczęstszy wymiar</b><strong>16×2,0 mm</strong><span>Punkt wyjścia dla wielu domów, a nie automatyczny dobór do każdego obwodu.</span></div>
        <div class="rk-pert-stat"><b>Kluczowa ochrona</b><strong>Bariera tlenowa</strong><span>Liczy się deklarowana zgodność, a nie samo słowo EVOH na opakowaniu.</span></div>
        <div class="rk-pert-stat"><b>Norma materiałowa</b><strong>ISO 22391</strong><span>Seria ISO 15875 dotyczy PE-X, dlatego nie może być podstawą dla samego PE-RT.</span></div>
        <div class="rk-pert-stat"><b>Najważniejsza zasada</b><strong>Rura jako system</strong><span>Sprawdź również złączki, narzędzia, instrukcję i warunki gwarancji.</span></div>
      </div>

      <nav class="rk-pert-toc" aria-label="Na skróty">
        <strong>Na skróty</strong>
        <div class="rk-pert-toc-links">
          <a href="#rk-pert-answer">Szybka odpowiedź</a>
          <a href="#rk-pert-definition">Co oznacza PE-RT?</a>
          <a href="#rk-pert-types">Type I i Type II</a>
          <a href="#rk-pert-build">Budowa rury</a>
          <a href="#rk-pert-barrier">Bariera tlenowa</a>
          <a href="#rk-pert-decoder">Dekoder nadruku</a>
          <a href="#rk-pert-standards">Normy</a>
          <a href="#rk-pert-diameter">Średnica i hydraulika</a>
          <a href="#rk-pert-temperature">Temperatura i ciśnienie</a>
          <a href="#rk-pert-compare">PE-RT czy PEX?</a>
          <a href="#rk-pert-checklist">Checklista</a>
          <a href="#rk-pert-faq">FAQ</a>
        </div>
      </nav>

      <section class="rk-pert-section" id="rk-pert-answer">
        <span class="rk-pert-kicker">Szybka odpowiedź</span>
        <h2>Jaka rura PE-RT będzie właściwa do podłogówki?</h2>
        <p class="rk-pert-lead">W typowym domu częstym punktem wyjścia jest rura PE-RT 16×2,0 mm przeznaczona do klasy zastosowania 4, z potwierdzoną barierą ograniczającą dyfuzję tlenu, czytelnym nadrukiem produkcyjnym i dokumentacją kompatybilnego systemu. Nie jest to jednak uniwersalna recepta.</p>

        <div class="rk-pert-grid-3">
          <div class="rk-pert-card"><span class="rk-pert-card-number">MUSI WYNIKAĆ Z PRODUKTU</span><h3>Materiał, warstwy i klasa pracy</h3><p>Sprawdź Type I albo Type II, układ warstw, normę produktu, klasę zastosowania, ciśnienie projektowe i deklarację bariery tlenowej.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">MUSI WYNIKAĆ Z PROJEKTU</span><h3>Średnica, długość i przepływ</h3><p>Dobór hydrauliczny zależy od mocy pomieszczenia, przepływu, średnicy wewnętrznej, długości dobiegów oraz dopuszczalnego oporu pętli.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">MUSI WYNIKAĆ Z SYSTEMU</span><h3>Złączki, narzędzia i montaż</h3><p>Identyczny wymiar zewnętrzny nie gwarantuje zgodności z każdą złączką. Liczy się instrukcja oraz potwierdzone zestawienie elementów.</p></div>
        </div>

        <div class="rk-pert-callout is-warning"><p><strong>Kolor rury nie jest parametrem technicznym.</strong> Niebieska, czerwona, biała albo naturalna powłoka może ułatwiać identyfikację produktu, ale nie potwierdza materiału, klasy pracy, bariery tlenowej ani jakości całego systemu.</p></div>
      </section>

      <section class="rk-pert-section" id="rk-pert-definition">
        <span class="rk-pert-kicker">Materiał bez procesu sieciowania</span>
        <h2>Co oznacza PE-RT?</h2>
        <div class="rk-pert-definition">
          <div>
            <p><strong>PE-RT</strong> to polietylen o podwyższonej odporności temperaturowej. W przeciwieństwie do PE-X nie uzyskuje parametrów przez chemiczne albo fizyczne sieciowanie gotowej rury. Odpowiednie właściwości długotrwałe wynikają ze struktury zastosowanego tworzywa oraz konstrukcji produktu.</p>
            <p>Ta różnica technologiczna nie oznacza automatycznie, że jeden materiał jest lepszy. Zarówno prawidłowo dobrany PE-RT, jak i PE-X mogą pracować w ogrzewaniu podłogowym. Trzeba porównywać kompletne rury, ich klasy zastosowania, warstwy, parametry hydrauliczne i dokumentację, a nie wyłącznie nazwę tworzywa.</p>
            <p>Szczegółowe omówienie sieciowania znajduje się w poradniku <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rura PEX do ogrzewania podłogowego</a>.</p>
          </div>
          <div class="rk-pert-wordmark" aria-label="PE-RT – polietylen o podwyższonej odporności temperaturowej"><div><strong>PE-RT</strong><span>Polyethylene of Raised Temperature Resistance</span></div></div>
        </div>
      </section>

      <section class="rk-pert-section" id="rk-pert-types">
        <span class="rk-pert-kicker">Oznaczenie tworzywa, nie gotowy ranking</span>
        <h2>PE-RT Type I i PE-RT Type II – co rzeczywiście mówi typ materiału?</h2>
        <p class="rk-pert-lead">ISO 22391 obejmuje PE-RT Type I i Type II. Typ opisuje kategorię materiału i jego długotrwałą wytrzymałość odniesioną do temperatury, ale nie zastępuje parametrów gotowej rury.</p>
        <div class="rk-pert-grid-2">
          <div class="rk-pert-card"><span class="rk-pert-card-number">PE-RT TYPE I</span><h3>Materiał dopuszczany do określonych klas pracy</h3><p>Może być stosowany w odpowiednio zaprojektowanych systemach, jeżeli gotowa rura ma wymagane klasy, ciśnienie, wymiary i dokumentację. Sama obecność napisu Type I nie rozstrzyga o przydatności do konkretnego obwodu.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">PE-RT TYPE II</span><h3>Inna charakterystyka wytrzymałości długotrwałej</h3><p>Często pojawia się w nowoczesnych rurach grzewczych, lecz również tutaj trzeba sprawdzić klasę zastosowania, ciśnienie projektowe, barierę, normę produktu i instrukcję systemową.</p></div>
        </div>
        <div class="rk-pert-callout"><p><strong>Nie kupuj samego granulatu opisanego na etykiecie.</strong> Kupujesz gotową rurę z określoną geometrią, warstwami, kontrolą produkcji, połączeniami i przeznaczeniem. To ten komplet powinien być oceniany.</p></div>
      </section>

      <section class="rk-pert-section" id="rk-pert-build">
        <span class="rk-pert-kicker">Interaktywny przekrój</span>
        <h2>PE-RT/EVOH/PE-RT, zewnętrzne EVOH czy PE-RT/Al/PE-RT?</h2>
        <p class="rk-pert-lead">Wybierz konstrukcję i zobacz, którą funkcję pełni każda warstwa. Liczba warstw nie jest samodzielną oceną jakości — ważne są ich materiał, położenie oraz potwierdzone właściwości gotowego wyrobu.</p>

        <div class="rk-pert-layer-tool" id="rk-pert-layer-tool">
          <div class="rk-pert-layer-tabs" role="tablist" aria-label="Konstrukcje rur PE-RT">
            <button class="rk-pert-layer-tab" type="button" id="rk-pert-tab-five" role="tab" aria-selected="true" aria-controls="rk-pert-panel-five" data-target="rk-pert-panel-five">PE-RT/EVOH/PE-RT</button>
            <button class="rk-pert-layer-tab" type="button" id="rk-pert-tab-outer" role="tab" aria-selected="false" aria-controls="rk-pert-panel-outer" data-target="rk-pert-panel-outer" tabindex="-1">EVOH na zewnątrz</button>
            <button class="rk-pert-layer-tab" type="button" id="rk-pert-tab-al" role="tab" aria-selected="false" aria-controls="rk-pert-panel-al" data-target="rk-pert-panel-al" tabindex="-1">PE-RT/Al/PE-RT</button>
          </div>

          <div class="rk-pert-layer-panel" id="rk-pert-panel-five" role="tabpanel" aria-labelledby="rk-pert-tab-five">
            <svg class="rk-pert-pipe-svg" viewBox="0 0 360 280" role="img" aria-label="Przekrój pięciowarstwowej rury PE-RT z chronioną warstwą EVOH">
              <circle cx="180" cy="140" r="116" fill="#0c8db4"/>
              <circle cx="180" cy="140" r="101" fill="#f6b841"/>
              <circle cx="180" cy="140" r="94" fill="#e95b65"/>
              <circle cx="180" cy="140" r="86" fill="#f6b841"/>
              <circle cx="180" cy="140" r="78" fill="#40c8d4"/>
              <circle cx="180" cy="140" r="49" fill="#eef8fb"/>
              <text x="180" y="145" fill="#153c52" font-size="18" font-weight="900" text-anchor="middle">WODA</text>
            </svg>
            <div><h3>Pięć warstw z barierą osłoniętą tworzywem</h3><p>Warstwa EVOH znajduje się pomiędzy warstwami tworzywa i kleju. Zewnętrzna powłoka PE-RT ogranicza ryzyko jej zarysowania podczas transportu, mocowania i chodzenia po instalacji.</p><ul class="rk-pert-layer-list"><li><i style="background:#0c8db4"></i><span>Zewnętrzna warstwa PE-RT – ochrona mechaniczna i część konstrukcji rury.</span></li><li><i style="background:#f6b841"></i><span>Warstwy łączące – utrzymują spójność układu materiałów.</span></li><li><i style="background:#e95b65"></i><span>EVOH – ogranicza przenikanie tlenu przez ściankę.</span></li><li><i style="background:#40c8d4"></i><span>Wewnętrzna warstwa PE-RT – kontakt z czynnikiem grzewczym.</span></li></ul></div>
          </div>

          <div class="rk-pert-layer-panel" id="rk-pert-panel-outer" role="tabpanel" aria-labelledby="rk-pert-tab-outer" hidden>
            <svg class="rk-pert-pipe-svg" viewBox="0 0 360 280" role="img" aria-label="Przekrój rury PE-RT z zewnętrzną warstwą EVOH">
              <circle cx="180" cy="140" r="116" fill="#e95b65"/>
              <circle cx="180" cy="140" r="108" fill="#f6b841"/>
              <circle cx="180" cy="140" r="99" fill="#28bfd0"/>
              <circle cx="180" cy="140" r="49" fill="#eef8fb"/>
              <text x="180" y="145" fill="#153c52" font-size="18" font-weight="900" text-anchor="middle">WODA</text>
            </svg>
            <div><h3>Bariera umieszczona blisko powierzchni zewnętrznej</h3><p>Taka konstrukcja również może spełniać wymagania dla ogrzewania płaszczyznowego. Podczas składowania i montażu trzeba jednak szczególnie przestrzegać instrukcji dotyczących ochrony powierzchni przed zarysowaniem oraz wilgocią.</p><ul class="rk-pert-layer-list"><li><i style="background:#e95b65"></i><span>EVOH – bariera tlenowa po zewnętrznej stronie konstrukcji.</span></li><li><i style="background:#f6b841"></i><span>Warstwa łącząca – wiąże barierę z korpusem rury.</span></li><li><i style="background:#28bfd0"></i><span>PE-RT – zasadnicza warstwa ciśnieniowa.</span></li></ul></div>
          </div>

          <div class="rk-pert-layer-panel" id="rk-pert-panel-al" role="tabpanel" aria-labelledby="rk-pert-tab-al" hidden>
            <svg class="rk-pert-pipe-svg" viewBox="0 0 360 280" role="img" aria-label="Przekrój rury PE-RT z warstwą aluminium">
              <circle cx="180" cy="140" r="116" fill="#0c8db4"/>
              <circle cx="180" cy="140" r="100" fill="#f6b841"/>
              <circle cx="180" cy="140" r="92" fill="#aebbc3"/>
              <circle cx="180" cy="140" r="81" fill="#f6b841"/>
              <circle cx="180" cy="140" r="73" fill="#40c8d4"/>
              <circle cx="180" cy="140" r="49" fill="#eef8fb"/>
              <text x="180" y="145" fill="#153c52" font-size="18" font-weight="900" text-anchor="middle">WODA</text>
            </svg>
            <div><h3>Rura zespolona z warstwą aluminium</h3><p>Aluminium pełni funkcję bariery tlenowej, ogranicza rozszerzalność i zwiększa stabilność nadanego kształtu. Zmienia również zachowanie podczas gięcia oraz wymagania dotyczące przygotowania końcówki i połączeń.</p><ul class="rk-pert-layer-list"><li><i style="background:#0c8db4"></i><span>Zewnętrzna warstwa PE-RT – ochrona rury zespolonej.</span></li><li><i style="background:#aebbc3"></i><span>Aluminium – bariera oraz warstwa wpływająca na stabilność wymiarową.</span></li><li><i style="background:#f6b841"></i><span>Warstwy łączące – zapewniają współpracę metalu z tworzywem.</span></li><li><i style="background:#40c8d4"></i><span>Wewnętrzna warstwa PE-RT – powierzchnia przewodząca wodę.</span></li></ul></div>
          </div>
        </div>
      </section>

      <section class="rk-pert-section" id="rk-pert-barrier">
        <span class="rk-pert-kicker">EVOH nie podnosi mocy podłogi</span>
        <h2>Dlaczego bariera antydyfuzyjna jest potrzebna?</h2>
        <p class="rk-pert-lead">Bariera ogranicza przenikanie tlenu z otoczenia przez ściankę rury do wody instalacyjnej. Chroni w ten sposób metalowe elementy układu przed warunkami sprzyjającymi korozji. Nie jest warstwą termoizolacyjną i nie zwiększa wydajności cieplnej podłogi.</p>
        <div class="rk-pert-grid-3">
          <div class="rk-pert-card"><span class="rk-pert-card-number">EVOH</span><h3>Bariera polimerowa</h3><p>Jej obecność i położenie powinny wynikać z przekroju oraz karty produktu. Sam nadruk „EVOH” nie zastępuje deklarowanej zgodności z wymaganiami dla dyfuzji tlenu.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">ALUMINIUM</span><h3>Bariera metalowa</h3><p>W rurze zespolonej warstwa aluminium ogranicza przenikanie tlenu, a dodatkowo wpływa na rozszerzalność i zachowanie rury po wygięciu.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">DIN 4726:2024</span><h3>Weryfikacja zamiast hasła</h3><p>Aktualne wydanie dokumentu obejmuje wymagania wobec rur z tworzyw i rur wielowarstwowych z warstwą ograniczającą dyfuzję tlenu.</p></div>
        </div>
        <p>Szersze omówienie znajduje się w artykułach o <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">rurze z barierą EVOH</a> oraz <a href="https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/">normie DIN 4726 w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-pert-section" id="rk-pert-decoder">
        <span class="rk-pert-kicker">Interaktywny audyt przed zakupem</span>
        <h2>Dekoder nadruku rury PE-RT</h2>
        <p class="rk-pert-lead">Ustaw dane widoczne na rurze, etykiecie i w dokumentacji. Wynik nie tworzy certyfikatu produktu — pokazuje, które informacje zostały potwierdzone, a których nadal brakuje.</p>

        <div class="rk-pert-audit" id="rk-pert-audit">
          <div class="rk-pert-audit-head">
            <h3>Sprawdź, czy nazwa handlowa ma pokrycie w danych</h3>
            <p>Przykładowy kompletny nadruk zawiera materiał i konstrukcję, wymiar, normę, klasę zastosowania, ciśnienie projektowe, informację o barierze, producenta, identyfikację partii oraz metraż.</p>
          </div>
          <div class="rk-pert-audit-body">
            <div class="rk-pert-sample-print" aria-label="Przykładowy układ nadruku">PE-RT TYPE II / EVOH / 16×2,0 / CLASS 4 / 6 BAR / NORMA PRODUKTU / BARIERA TLENOWA / PRODUCENT / PARTIA / DATA / METRAŻ</div>

            <div class="rk-pert-form-grid">
              <div class="rk-pert-field">
                <label for="rk-pert-construction">Materiał i konstrukcja</label>
                <select id="rk-pert-construction">
                  <option value="five" selected>PE-RT Type II / EVOH / PE-RT</option>
                  <option value="outer">PE-RT z zewnętrznym EVOH</option>
                  <option value="al">PE-RT / Al / PE-RT</option>
                  <option value="type1">PE-RT Type I – budowa potwierdzona</option>
                  <option value="name">Tylko nazwa „PE-RT”</option>
                  <option value="missing">Brak czytelnej informacji</option>
                </select>
                <small>Type II nie jest automatycznie oceną całej rury. Potrzebne są dalsze dane.</small>
              </div>

              <div class="rk-pert-field">
                <label for="rk-pert-standard">Norma produktu</label>
                <select id="rk-pert-standard">
                  <option value="22391" selected>ISO 22391 / EN ISO 22391</option>
                  <option value="21003">ISO 21003 / EN ISO 21003</option>
                  <option value="other">Inna norma – mam jej pełne oznaczenie</option>
                  <option value="15875">ISO 15875 jako jedyna podstawa</option>
                  <option value="missing">Brak oznaczenia normy</option>
                </select>
                <small>ISO 15875 dotyczy PE-X. Dla rury oznaczonej wyłącznie PE-RT wymaga wyjaśnienia.</small>
              </div>

              <div class="rk-pert-field">
                <label for="rk-pert-size">Wymiar rury</label>
                <select id="rk-pert-size">
                  <option value="16x2" selected>16×2,0 mm</option>
                  <option value="17x2">17×2,0 mm</option>
                  <option value="20x2">20×2,0 mm</option>
                  <option value="other">Inny, zapisany jako średnica × ścianka</option>
                  <option value="missing">Brak grubości ścianki</option>
                </select>
                <small>Sam symbol Ø16 bez grubości ścianki nie określa średnicy wewnętrznej.</small>
              </div>

              <div class="rk-pert-field">
                <label for="rk-pert-class">Klasa zastosowania</label>
                <select id="rk-pert-class">
                  <option value="4" selected>Klasa 4</option>
                  <option value="45">Klasa 4 i 5</option>
                  <option value="other">Inna klasa – sprawdzam przeznaczenie</option>
                  <option value="temp">Podano tylko temperaturę maksymalną</option>
                  <option value="missing">Brak klasy</option>
                </select>
                <small>Dla podłogówki klasa pracy jest bardziej użyteczna niż samotne „95°C”.</small>
              </div>

              <div class="rk-pert-field">
                <label for="rk-pert-pressure">Ciśnienie projektowe</label>
                <select id="rk-pert-pressure">
                  <option value="6" selected>6 bar</option>
                  <option value="8">8 bar</option>
                  <option value="10">10 bar</option>
                  <option value="other">Inne – zgodne z dokumentacją</option>
                  <option value="missing">Brak wartości</option>
                </select>
                <small>Wyższa liczba nie oznacza automatycznie lepszej rury do niskotemperaturowej podłogówki.</small>
              </div>

              <div class="rk-pert-field">
                <label for="rk-pert-barrier-select">Bariera tlenowa</label>
                <select id="rk-pert-barrier-select">
                  <option value="din" selected>Potwierdzona zgodność z DIN 4726</option>
                  <option value="al">Aluminium i dokumentacja konstrukcji</option>
                  <option value="evoh">Jest napis EVOH, brak kryterium</option>
                  <option value="none">Brak bariery</option>
                  <option value="missing">Brak informacji</option>
                </select>
                <small>Sprawdzamy właściwość gotowej rury, a nie tylko nazwę materiału barierowego.</small>
              </div>

              <div class="rk-pert-field">
                <span>Identyfikowalność produktu</span>
                <div class="rk-pert-check-group">
                  <label class="rk-pert-check"><input type="checkbox" id="rk-pert-maker" checked><span>Producent albo jednoznaczny właściciel systemu</span></label>
                  <label class="rk-pert-check"><input type="checkbox" id="rk-pert-batch" checked><span>Numer partii lub kod produkcyjny</span></label>
                  <label class="rk-pert-check"><input type="checkbox" id="rk-pert-meter" checked><span>Data i oznaczenie kolejnych metrów</span></label>
                </div>
              </div>

              <div class="rk-pert-field">
                <span>Dokumentacja i kompatybilność</span>
                <div class="rk-pert-check-group">
                  <label class="rk-pert-check"><input type="checkbox" id="rk-pert-card" checked><span>Karta techniczna lub deklaracja produktu</span></label>
                  <label class="rk-pert-check"><input type="checkbox" id="rk-pert-system-doc" checked><span>Potwierdzona zgodność ze złączkami i narzędziami</span></label>
                  <label class="rk-pert-check"><input type="checkbox" id="rk-pert-install" checked><span>Instrukcja gięcia, mocowania i wykonywania połączeń</span></label>
                </div>
              </div>
            </div>

            <button class="rk-pert-audit-action" type="button" id="rk-pert-run">Sprawdź kompletność danych</button>

            <div class="rk-pert-result" aria-live="polite">
              <div class="rk-pert-score-ring" id="rk-pert-score-ring"><div class="rk-pert-score-inner"><strong id="rk-pert-score">100</strong><span>na 100 punktów</span></div></div>
              <div class="rk-pert-result-copy">
                <h3 id="rk-pert-result-title">Dane przykładowe są kompletne</h3>
                <p id="rk-pert-result-text">To dobry punkt wyjścia do oceny produktu. Nadal trzeba porównać wpisane informacje z oryginalną dokumentacją oraz wymaganiami konkretnego projektu.</p>
                <ul class="rk-pert-result-list" id="rk-pert-result-list"></ul>
              </div>
            </div>
          </div>
        </div>

        <div class="rk-pert-callout is-warning"><p><strong>Wynik 100/100 nie dobiera rury hydraulicznie.</strong> Potwierdza jedynie kompletność informacji wprowadzonych przez użytkownika. Narzędzie nie sprawdza autentyczności dokumentów, badań, certyfikatów ani zgodności dostawy z zamówieniem.</p></div>

        <div class="rk-pert-inline-cta">
          <span class="rk-pert-kicker" style="color:#79f1ff">Rura została sprawdzona — teraz trzeba policzyć system</span>
          <h2>Dobra rura nie naprawi źle zaprojektowanych pętli</h2>
          <p>Dekoder może potwierdzić materiał, konstrukcję, barierę i klasę zastosowania. Nie wyznaczy jednak rozstawu, długości obwodów, przepływów, oporów hydraulicznych, temperatury zasilania ani nastaw rozdzielacza. Te wartości muszą wynikać z obciążenia cieplnego każdego pomieszczenia i obliczeń całej instalacji.</p>
          <a class="rk-pert-cta-button rk-pert-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z długościami pętli i przepływami</a>
          <small class="rk-pert-cta-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>

      <section class="rk-pert-section" id="rk-pert-standards">
        <span class="rk-pert-kicker">Cztery dokumenty, cztery różne funkcje</span>
        <h2>Jakie normy sprawdzić przy rurze PE-RT?</h2>
        <div class="rk-pert-table-wrap">
          <table class="rk-pert-table">
            <thead><tr><th>Dokument</th><th>Zakres</th><th>Jak wykorzystać przy zakupie?</th></tr></thead>
            <tbody>
              <tr><td data-label="Dokument"><strong>ISO 22391</strong></td><td data-label="Zakres">Systemy rurowe z PE-RT do instalacji ciepłej i zimnej wody oraz ogrzewania, w tym rury Type I i Type II.</td><td data-label="Zastosowanie">Porównaj pełne oznaczenie rury, jej klasę zastosowania, ciśnienie projektowe i dokumentację systemu.</td></tr>
              <tr><td data-label="Dokument"><strong>ISO 21003</strong></td><td data-label="Zakres">Systemy wielowarstwowe zawierające warstwy z tworzyw oraz inne materiały.</td><td data-label="Zastosowanie">Sprawdź, czy producent klasyfikuje daną konstrukcję jako system wielowarstwowy oraz jakie elementy tworzą kompletny system.</td></tr>
              <tr><td data-label="Dokument"><strong>ISO 10508</strong></td><td data-label="Zakres">Klasyfikacja warunków pracy systemów ciśnieniowych z rur z tworzyw.</td><td data-label="Zastosowanie">Nie oceniaj produktu wyłącznie po maksymalnej temperaturze. Odczytaj klasę i odpowiadający jej profil pracy.</td></tr>
              <tr><td data-label="Dokument"><strong>DIN 4726:2024</strong></td><td data-label="Zakres">Rury z tworzyw i rury wielowarstwowe z barierą ograniczającą dyfuzję tlenu do ogrzewania płaszczyznowego i podłączeń grzejników.</td><td data-label="Zastosowanie">Szukaj deklarowanej zgodności gotowej rury, zamiast opierać się na samym haśle „EVOH”.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-pert-callout is-danger"><p><strong>EN ISO 15875 nie jest podstawową normą materiałową dla PE-RT.</strong> Seria ta dotyczy polietylenu sieciowanego PE-X. Jeżeli widzisz ją jako jedyne odniesienie na rurze opisanej PE-RT, wyjaśnij rozbieżność przed zakupem.</p></div>
      </section>

      <section class="rk-pert-section" id="rk-pert-diameter">
        <span class="rk-pert-kicker">Średnica domu nie istnieje</span>
        <h2>Czy rura PE-RT 16×2,0 mm zawsze będzie właściwa?</h2>
        <p class="rk-pert-lead">Wymiar 16×2,0 mm jest popularny, ponieważ stanowi praktyczny kompromis pomiędzy elastycznością, pojemnością wodną, przepływem i oporem. Nie dobiera się go jednak według zasady „do 150 m²”, ponieważ całkowity metraż domu nie opisuje hydrauliki pojedynczej pętli.</p>
        <div class="rk-pert-grid-4">
          <div class="rk-pert-card"><span class="rk-pert-card-number">MOC</span><h3>Obciążenie pomieszczenia</h3><p>Od wymaganej mocy i projektowej różnicy temperatur wynika przepływ, który ma przenieść obwód.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">TRASA</span><h3>Długość z dobiegami</h3><p>Do oporu liczy się cała droga od rozdzielacza, przez pole grzewcze i z powrotem.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">GEOMETRIA</span><h3>Średnica wewnętrzna</h3><p>O przepływie nie decyduje sama średnica zewnętrzna. Potrzebna jest także grubość ścianki.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">POMPA</span><h3>Dostępny spręż</h3><p>Opór nie może być analizowany bez rozdzielacza, zaworów, magistrali i charakterystyki pompy.</p></div>
        </div>
        <p>Obliczenia pozostawiamy wyspecjalizowanym poradnikom o <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicach rur w ogrzewaniu podłogowym</a>, <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli</a> i <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">rozmieszczeniu obwodów</a>.</p>
      </section>

      <section class="rk-pert-section" id="rk-pert-temperature">
        <span class="rk-pert-kicker">Największa liczba nie opisuje całego życia rury</span>
        <h2>Temperatura, ciśnienie i klasa zastosowania</h2>
        <p class="rk-pert-lead">Oznaczenia 90°C, 95°C, 6 bar albo 10 bar nie powinny być czytane jako jedna, stała para parametrów dostępna przez cały okres eksploatacji. Systemy z tworzyw ocenia się w klasach obejmujących określone temperatury, czasy pracy i ciśnienie projektowe.</p>
        <div class="rk-pert-grid-3">
          <div class="rk-pert-card"><span class="rk-pert-card-number">TD</span><h3>Temperatura projektowa</h3><p>Warunki przewidziane dla zasadniczej części eksploatacji w ramach danej klasy zastosowania.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">TMAX</span><h3>Temperatura maksymalna</h3><p>Parametr związany z ograniczonym czasem w profilu klasy, a nie zachęta do stałej pracy instalacji przy tej wartości.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">TMAL</span><h3>Temperatura awaryjna</h3><p>Warunek zakłócenia przewidziany na ściśle ograniczony czas. Nie jest normalnym punktem pracy podłogówki.</p></div>
        </div>
        <div class="rk-pert-callout"><p><strong>Podłogówkę projektuje się na możliwie niski, ale wystarczający parametr wody.</strong> Wysoka odporność deklarowana dla rury jest rezerwą wynikającą z klasy produktu, a nie powodem do podnoszenia temperatury zasilania.</p></div>
      </section>

      <section class="rk-pert-section" id="rk-pert-installation">
        <span class="rk-pert-kicker">Różna konstrukcja — różne zachowanie na budowie</span>
        <h2>Gięcie, rozszerzalność i wykonywanie pętli</h2>
        <div class="rk-pert-grid-2">
          <div class="rk-pert-card"><span class="rk-pert-card-number">RURA PE-RT Z EVOH</span><h3>Elastyczność nie zwalnia z promienia gięcia</h3><p>Minimalny promień należy przyjąć z instrukcji konkretnej rury i metody gięcia. Załamanie, zbielenie, spłaszczenie albo uszkodzenie warstwy zewnętrznej wymaga oceny według procedury systemowej.</p></div>
          <div class="rk-pert-card"><span class="rk-pert-card-number">RURA Z ALUMINIUM</span><h3>Stabilność kształtu zmienia montaż</h3><p>Warstwa aluminium ogranicza sprężynowanie i rozszerzalność, ale może wymagać innego przygotowania końcówki, narzędzi oraz kontroli geometrii przed połączeniem.</p></div>
        </div>
        <ul class="rk-pert-checklist" style="margin-top:18px">
          <li>Rozwijaj zwój zgodnie z kierunkiem, zamiast zrzucać kolejne kręgi z boku.</li>
          <li>Chroń powierzchnię przed ostrymi krawędziami, zbrojeniem i ruchem innych ekip.</li>
          <li>Nie podgrzewaj załamania przypadkową opalarką bez dopuszczenia takiej naprawy.</li>
          <li>Nie wykonuj przypadkowych połączeń w polu podłogi; planuj pełne odcinki od rozdzielacza.</li>
          <li>Przejścia przez dylatacje i progi prowadź w osłonach zgodnie z dokumentacją.</li>
          <li>Przed jastrychem wykonaj próbę szczelności i dokumentację fotograficzną tras.</li>
        </ul>
        <p style="margin-top:18px">Procedurę odbiorową opisuje osobny poradnik o <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbie szczelności ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-pert-section" id="rk-pert-system">
        <span class="rk-pert-kicker">16×2,0 nie oznacza „pasuje do wszystkiego”</span>
        <h2>Złączki, kalibracja i kompatybilność systemowa</h2>
        <p class="rk-pert-lead">Połączenie zależy od geometrii rury, tolerancji wymiarowych, materiału warstwy wewnętrznej, konstrukcji złączki, tulei, uszczelnienia, profilu szczęk oraz sposobu przygotowania końcówki.</p>
        <div class="rk-pert-steps">
          <div class="rk-pert-step"><h3>Sprawdź tabelę kompatybilności</h3><p>Nie zakładaj zgodności na podstawie samego wymiaru 16×2,0 mm. Potrzebne jest jednoznaczne dopuszczenie zestawu.</p></div>
          <div class="rk-pert-step"><h3>Ustal sposób cięcia i przygotowania</h3><p>Cięcie powinno być prostopadłe. Kalibrację, fazowanie albo ich brak wykonuj dokładnie według instrukcji.</p></div>
          <div class="rk-pert-step"><h3>Dobierz narzędzie i profil</h3><p>Wygląd szczęki nie przesądza o właściwym profilu. Sprawdź również zakres średnic i stan techniczny narzędzia.</p></div>
          <div class="rk-pert-step"><h3>Nie chowaj przypadkowych połączeń</h3><p>Pętle ogrzewania podłogowego planuje się z jednego odcinka rury pomiędzy belkami rozdzielacza.</p></div>
          <div class="rk-pert-step"><h3>Zapisz partię i produkt</h3><p>Zachowaj etykietę, fragment nadruku, kartę techniczną oraz dowód zakupu przed zakryciem instalacji.</p></div>
          <div class="rk-pert-step"><h3>Wykonaj próbę i fotografie</h3><p>Szczelność oraz trasy rur dokumentuje się, gdy wszystkie elementy są jeszcze dostępne do kontroli.</p></div>
        </div>
      </section>

      <section class="rk-pert-section" id="rk-pert-compare">
        <span class="rk-pert-kicker">Porównujemy kompletne produkty, nie trzy litery</span>
        <h2>PE-RT czy PEX do ogrzewania podłogowego?</h2>
        <div class="rk-pert-table-wrap">
          <table class="rk-pert-table">
            <thead><tr><th>Kryterium</th><th>PE-RT z barierą EVOH</th><th>PE-RT/Al/PE-RT</th><th>PE-X z barierą EVOH</th></tr></thead>
            <tbody>
              <tr><td data-label="Kryterium"><strong>Materiał bazowy</strong></td><td data-label="PE-RT + EVOH">Polietylen o podwyższonej odporności temperaturowej, bez sieciowania gotowej rury.</td><td data-label="PE-RT/Al/PE-RT">Konstrukcja zespolona z PE-RT, warstwami łączącymi i aluminium.</td><td data-label="PE-X + EVOH">Polietylen sieciowany jedną z metod określanych literami a, b lub c.</td></tr>
              <tr><td data-label="Kryterium"><strong>Bariera tlenowa</strong></td><td data-label="PE-RT + EVOH">Warstwa EVOH, zewnętrzna albo osłonięta w konstrukcji.</td><td data-label="PE-RT/Al/PE-RT">Warstwa aluminium pełniąca również funkcję bariery.</td><td data-label="PE-X + EVOH">Najczęściej EVOH, którego położenie zależy od budowy rury.</td></tr>
              <tr><td data-label="Kryterium"><strong>Norma materiałowa</strong></td><td data-label="PE-RT + EVOH">ISO 22391 lub inna właściwa norma zadeklarowana dla konkretnej konstrukcji.</td><td data-label="PE-RT/Al/PE-RT">System wielowarstwowy, często oceniany w odniesieniu do ISO 21003.</td><td data-label="PE-X + EVOH">ISO 15875 dla systemów z PE-X.</td></tr>
              <tr><td data-label="Kryterium"><strong>Zachowanie po wygięciu</strong></td><td data-label="PE-RT + EVOH">Zależne od odmiany materiału, geometrii i konstrukcji; zwykle wyraźne sprężynowanie.</td><td data-label="PE-RT/Al/PE-RT">Większa stabilność nadanego kształtu dzięki aluminium.</td><td data-label="PE-X + EVOH">Zależne od metody sieciowania, geometrii i budowy gotowej rury.</td></tr>
              <tr><td data-label="Kryterium"><strong>Rozszerzalność</strong></td><td data-label="PE-RT + EVOH">Typowa dla konstrukcji polimerowej; wartość trzeba odczytać z karty.</td><td data-label="PE-RT/Al/PE-RT">Zwykle istotnie ograniczona przez warstwę aluminium.</td><td data-label="PE-X + EVOH">Typowa dla konstrukcji polimerowej; zależna od produktu.</td></tr>
              <tr><td data-label="Kryterium"><strong>Co przesądza o wyborze?</strong></td><td data-label="PE-RT + EVOH">Klasa, bariera, hydraulika, montaż i dokumentacja.</td><td data-label="PE-RT/Al/PE-RT">Klasa, budowa, narzędzia, promień gięcia i kompatybilność.</td><td data-label="PE-X + EVOH">Klasa, bariera, rodzaj rury, hydraulika i kompletność systemu.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-pert-callout is-success"><p><strong>Wniosek:</strong> poprawnie udokumentowana i zaprojektowana rura PE-RT nie jest „tańszym zamiennikiem z definicji”, a PE-X nie jest automatycznie produktem wyższej klasy. Dla użytkownika ważniejsze są parametry gotowej rury, jakość wykonania i hydraulika obwodów.</p></div>
      </section>

      <section class="rk-pert-section" id="rk-pert-errors">
        <span class="rk-pert-kicker">Skróty, które prowadzą do złych decyzji</span>
        <h2>Najczęstsze błędy przy wyborze i montażu rury PE-RT</h2>
        <div class="rk-pert-errors">
          <div class="rk-pert-error"><h3>Zakup na podstawie koloru i ceny za metr</h3><p>Brak porównania warstw, klasy, bariery, partii produkcyjnej, systemu połączeń oraz warunków gwarancji.</p></div>
          <div class="rk-pert-error"><h3>Traktowanie 95°C i 10 bar jako stałej pracy</h3><p>Pomijanie klasy zastosowania i czasowego profilu temperatur, z którego wynikają deklarowane parametry.</p></div>
          <div class="rk-pert-error"><h3>Uznanie każdego EVOH za równoważną barierę</h3><p>Nie sprawdza się położenia warstwy, deklarowanego kryterium dyfuzji ani stanu powierzchni po montażu.</p></div>
          <div class="rk-pert-error"><h3>Dobór średnicy do powierzchni domu</h3><p>Metraż całego budynku zastępuje obliczenia przepływu i oporu pojedynczego obwodu.</p></div>
          <div class="rk-pert-error"><h3>Łączenie elementów „bo mają 16×2”</h3><p>Brak systemowej kompatybilności może zmienić głębokość osadzenia, zacisk i pracę uszczelnienia.</p></div>
          <div class="rk-pert-error"><h3>Załamanie prostowane bez instrukcji</h3><p>Przypadkowe podgrzewanie lub mechaniczne formowanie może uszkodzić geometrię i warstwy rury.</p></div>
          <div class="rk-pert-error"><h3>Połączenie pozostawione w polu jastrychu</h3><p>Zamiast poprawić podział pętli, wykonawca ukrywa dodatkowe miejsce ryzyka i utrudnia późniejszą kontrolę.</p></div>
          <div class="rk-pert-error"><h3>Brak zapisu produktu przed wylewką</h3><p>Po zakryciu rur nie wiadomo, jaka partia, konstrukcja i instrukcja były podstawą wykonania instalacji.</p></div>
        </div>
      </section>

      <section class="rk-pert-section" id="rk-pert-checklist">
        <span class="rk-pert-kicker">Ostatnia kontrola przed zamówieniem</span>
        <h2>Checklista rury PE-RT do ogrzewania podłogowego</h2>
        <ul class="rk-pert-checklist">
          <li>Pełna nazwa materiału i konstrukcji warstw jest czytelna.</li>
          <li>Znam średnicę zewnętrzną oraz grubość ścianki.</li>
          <li>Rura ma wskazaną normę odpowiednią do zadeklarowanej konstrukcji.</li>
          <li>Klasa zastosowania obejmuje planowane ogrzewanie podłogowe.</li>
          <li>Ciśnienie projektowe jest podane razem z klasą pracy.</li>
          <li>Bariera tlenowa ma potwierdzoną właściwość, nie tylko nazwę EVOH.</li>
          <li>Producent, partia, data i metraż pozwalają zidentyfikować dostawę.</li>
          <li>Dostępna jest aktualna karta techniczna i instrukcja montażu.</li>
          <li>Złączki, tuleje i narzędzia mają potwierdzoną kompatybilność.</li>
          <li>Projekt określa średnicę, rozstaw, długości pętli i przepływy.</li>
          <li>Długość zwojów pozwala wykonać obwody bez połączeń w podłodze.</li>
          <li>Zaplanowano próbę szczelności oraz zdjęcia przed jastrychem.</li>
        </ul>
      </section>

      <section class="rk-pert-section" id="rk-pert-faq">
        <span class="rk-pert-kicker">Najczęstsze pytania</span>
        <h2>FAQ – rura PE-RT do ogrzewania podłogowego</h2>
        <div class="rk-pert-faq">
          <details><summary>Czy rura PE-RT nadaje się do ogrzewania podłogowego?</summary><div class="rk-pert-faq-answer"><p>Tak, jeżeli gotowa rura jest przeznaczona do ogrzewania, ma odpowiednią klasę zastosowania i ciśnienie projektowe, barierę ograniczającą dyfuzję tlenu oraz dokumentację kompatybilnego systemu.</p></div></details>
          <details><summary>Czym różni się PE-RT Type I od Type II?</summary><div class="rk-pert-faq-answer"><p>Są to dwie kategorie materiału o różnej charakterystyce długotrwałej wytrzymałości w temperaturze. Typ nie zastępuje oceny gotowej rury, jej wymiarów, klasy pracy, bariery oraz dokumentacji.</p></div></details>
          <details><summary>Czy PE-RT Type II zawsze jest lepszy?</summary><div class="rk-pert-faq-answer"><p>Nie należy tworzyć rankingu wyłącznie na podstawie typu tworzywa. Produkt trzeba ocenić w kontekście deklarowanej klasy, ciśnienia, konstrukcji, jakości systemu połączeń i przeznaczenia projektowego.</p></div></details>
          <details><summary>Czy każda rura PE-RT ma barierę EVOH?</summary><div class="rk-pert-faq-answer"><p>Nie. ISO 22391 obejmuje rury z warstwami barierowymi i bez nich. Obecność, położenie oraz deklarowaną skuteczność bariery trzeba potwierdzić dla konkretnego produktu.</p></div></details>
          <details><summary>Czy PE-RT/Al/PE-RT to to samo co PE-RT/EVOH/PE-RT?</summary><div class="rk-pert-faq-answer"><p>Nie. Pierwsza konstrukcja zawiera aluminium, które pełni funkcję bariery i wpływa na stabilność oraz rozszerzalność. Druga wykorzystuje polimerową barierę EVOH i zachowuje charakter rury zasadniczo tworzywowej.</p></div></details>
          <details><summary>Czy rura pięciowarstwowa jest zawsze lepsza od trzywarstwowej?</summary><div class="rk-pert-faq-answer"><p>Nie sama liczba warstw decyduje o jakości. Pięciowarstwowa konstrukcja może lepiej osłaniać EVOH, ale trzeba również sprawdzić spójność warstw, klasę pracy, normę, badania i dokumentację całego systemu.</p></div></details>
          <details><summary>Czy do domu jednorodzinnego zawsze wybiera się PE-RT 16×2,0 mm?</summary><div class="rk-pert-faq-answer"><p>To bardzo częsty wymiar, ale ostateczny dobór zależy od przepływu, długości pętli z dobiegami, wymaganej mocy, dopuszczalnego oporu i możliwości regulacyjnych rozdzielacza.</p></div></details>
          <details><summary>Ile metrów może mieć pętla z rury PE-RT 16×2,0 mm?</summary><div class="rk-pert-faq-answer"><p>Nie istnieje jeden limit wynikający wyłącznie z nazwy PE-RT. Długość trzeba sprawdzić dla wymaganego przepływu, średnicy wewnętrznej, oporu jednostkowego, dobiegów i dostępnego sprężu pompy.</p></div></details>
          <details><summary>Czy PE-RT jest bardziej elastyczny od PEX?</summary><div class="rk-pert-faq-answer"><p>Nie można tego stwierdzić dla wszystkich produktów. Na zachowanie rury wpływają odmiana tworzywa, metoda wytwarzania, średnica, grubość ścianki, liczba warstw i obecność aluminium.</p></div></details>
          <details><summary>Czy rura PE-RT obniża rachunki za ogrzewanie?</summary><div class="rk-pert-faq-answer"><p>Sam materiał rury nie zmniejsza zapotrzebowania budynku na ciepło. Zużycie energii zależy przede wszystkim od strat budynku, temperatury zasilania, źródła ciepła, regulacji, rozstawu, przepływów i konstrukcji podłogi.</p></div></details>
          <details><summary>Czy napis 95°C lub 10 bar wystarcza do oceny rury?</summary><div class="rk-pert-faq-answer"><p>Nie. Trzeba odczytać klasę zastosowania, ciśnienie projektowe i pełną dokumentację profilu pracy. Temperatura maksymalna lub awaryjna nie jest temperaturą przeznaczoną do ciągłej eksploatacji.</p></div></details>
          <details><summary>Czy można łączyć rurę i złączki różnych producentów?</summary><div class="rk-pert-faq-answer"><p>Tylko wtedy, gdy istnieje jednoznacznie udokumentowana kompatybilność całego połączenia. Zbieżny wymiar zewnętrzny nie potwierdza tolerancji, głębokości osadzenia, profilu zacisku ani warunków gwarancji.</p></div></details>
        </div>
      </section>

      <section class="rk-pert-section" id="rk-pert-sources">
        <span class="rk-pert-kicker">Podstawa techniczna opracowania</span>
        <h2>Normy i źródła wykorzystane w artykule</h2>
        <p>Zakres rur z PE-RT Type I i Type II opisuje <a href="https://www.iso.org/standard/46396.html" target="_blank" rel="noopener nofollow">ISO 22391-2:2009 z poprawką z 2020 r.</a>. Dokument pozostaje opublikowany i został potwierdzony w przeglądzie w 2025 r.; rozpoczęto prace nad kolejnym wydaniem.</p>
        <p>Systemy wielowarstwowe opisuje <a href="https://www.iso.org/standard/43515.html" target="_blank" rel="noopener nofollow">ISO 21003-2</a>, a klasyfikację warunków pracy systemów z tworzyw przedstawia <a href="https://www.iso.org/standard/35045.html" target="_blank" rel="noopener nofollow">ISO 10508</a>. Aktualne wymagania dla rur z warstwą ograniczającą dyfuzję tlenu zawiera <a href="https://www.dinmedia.de/en/standard/din-4726/380677149" target="_blank" rel="noopener nofollow">DIN 4726:2024</a>.</p>
        <div class="rk-pert-sources-box"><p><strong>Ostatnia aktualizacja merytoryczna: 29 sierpnia 2026 r.</strong></p><p>Artykuł i dekoder nie zastępują pełnych norm, dokumentacji konkretnego produktu, projektu instalacji ani oceny dostarczonej partii na budowie.</p></div>
      </section>

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

        <header class="rk-pert-author-head">
          <div><span class="rk-pert-kicker">Autor opracowania</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div>
          <span class="rk-pert-author-mark">PE-RT • OGRZEWANIE PODŁOGOWE</span>
        </header>

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

          <div class="rk-pert-author-main">
            <blockquote class="rk-pert-author-quote"><p>„Nie wybieram rury na podstawie koloru ani największej temperatury na etykiecie. Najpierw sprawdzam konstrukcję, klasę, barierę i system połączeń, a następnie liczę hydraulikę każdej pętli.”</p></blockquote>
            <div class="rk-pert-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-pert-author-tab" for="rk-pert-author-about">O autorze</label>
              <label class="rk-pert-author-tab" for="rk-pert-author-exp">Doświadczenie</label>
              <label class="rk-pert-author-tab" for="rk-pert-author-sites">Portale</label>
            </div>
            <div class="rk-pert-author-panel rk-pert-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia strat ciepła, temperatur powierzchni, rozstawów, długości pętli, przepływów i oporów hydraulicznych z dokumentacją wykonawczą.</p></div>
            <div class="rk-pert-author-panel rk-pert-author-panel-exp"><p>W projektach określam średnice, podział pomieszczeń na obwody, przebieg i długości rur, parametry zasilania, przepływy oraz nastawy rozdzielacza. Dobór materiału rury jest częścią systemu, a nie osobną decyzją oderwaną od obliczeń.</p></div>
            <div class="rk-pert-author-panel rk-pert-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-pert-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div></div>
          </div>
        </div>
      </section>

      <section class="rk-pert-final-cta" aria-label="Projekt ogrzewania podłogowego z doborem rur">
        <span class="rk-pert-kicker" style="color:#79f1ff">Od właściwej rury do prawidłowo działającej instalacji</span>
        <h2>Otrzymaj projekt z rozstawami, długościami pętli, przepływami i nastawami</h2>
        <p>Dobór rury jest ważny, ale o komforcie i kosztach pracy instalacji decyduje cały układ. Projekt porządkuje moc każdego pomieszczenia, podział na obwody, hydraulikę, parametry źródła ciepła oraz dokumentację potrzebną instalatorowi.</p>
        <a class="rk-pert-cta-button rk-pert-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-pert-cta-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#article",
      "url": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/",
      "headline": "Rura PE-RT do ogrzewania podłogowego – jak wybrać? EVOH, oznaczenia i porównanie z PEX",
      "description": "Techniczny poradnik o rurach PE-RT do ogrzewania podłogowego: Type I i II, konstrukcje z EVOH oraz aluminium, normy, oznaczenia, bariera tlenowa i porównanie z PE-X.",
      "inLanguage": "pl-PL",
      "datePublished": "2025-05-11",
      "dateModified": "2026-08-29",
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#webpage"},
      "about": [
        {"@type": "Thing", "name": "Rura PE-RT do ogrzewania podłogowego"},
        {"@type": "Thing", "name": "PE-RT Type I i Type II"},
        {"@type": "Thing", "name": "Bariera EVOH"},
        {"@type": "Thing", "name": "PE-RT/Al/PE-RT"},
        {"@type": "Thing", "name": "ISO 22391"}
      ],
      "mentions": [
        {"@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#decoder"},
        {"@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#faq"}
      ],
      "citation": [
        "https://www.iso.org/standard/46396.html",
        "https://www.iso.org/standard/43515.html",
        "https://www.iso.org/standard/35045.html",
        "https://www.dinmedia.de/en/standard/din-4726/380677149"
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/",
      "name": "Rura PE-RT do ogrzewania podłogowego – jak wybrać? EVOH, oznaczenia i porównanie z PEX",
      "inLanguage": "pl-PL",
      "datePublished": "2025-05-11",
      "dateModified": "2026-08-29",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#breadcrumb"},
      "primaryImageOfPage": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image"},
      "mainEntity": {"@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#article"}
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Projekt-Ogrzewania.pl", "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": "Rura PE-RT do ogrzewania podłogowego", "item": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#decoder",
      "name": "Dekoder oznaczeń rury PE-RT",
      "url": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#rk-pert-decoder",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Interaktywny audyt kompletności oznaczeń, bariery tlenowej, klasy zastosowania, identyfikowalności i dokumentacji rury PE-RT.",
      "featureList": [
        "Przełączany przekrój trzech konstrukcji rur",
        "Kontrola normy produktu",
        "Kontrola klasy zastosowania i ciśnienia projektowego",
        "Weryfikacja deklaracji bariery tlenowej",
        "Ocena identyfikowalności i dokumentacji systemu"
      ],
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#howto",
      "name": "Jak sprawdzić rurę PE-RT przed zakupem",
      "description": "Sześć etapów weryfikacji rury PE-RT, jej oznaczeń, dokumentacji, kompatybilności i przygotowania do montażu.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Sprawdź tabelę kompatybilności", "text": "Potwierdź zgodność rury ze złączkami, tulejami i narzędziami, nie opierając się wyłącznie na wspólnym wymiarze zewnętrznym."},
        {"@type": "HowToStep", "position": 2, "name": "Ustal sposób przygotowania końcówki", "text": "Sprawdź w instrukcji wymagania dotyczące prostopadłego cięcia, kalibracji, fazowania albo ich braku."},
        {"@type": "HowToStep", "position": 3, "name": "Dobierz narzędzie i profil", "text": "Potwierdź profil szczęk, zakres średnic oraz wymagania wobec narzędzia montażowego."},
        {"@type": "HowToStep", "position": 4, "name": "Zaplanuj pętle bez połączeń", "text": "Dobierz długości zwojów i podział obwodów tak, aby każda pętla była jednym odcinkiem pomiędzy belkami rozdzielacza."},
        {"@type": "HowToStep", "position": 5, "name": "Zapisz produkt i partię", "text": "Zachowaj etykietę, fragment nadruku, kartę techniczną, numer partii i dowód zakupu przed zakryciem instalacji."},
        {"@type": "HowToStep", "position": 6, "name": "Wykonaj próbę i fotografie", "text": "Przed jastrychem przeprowadź właściwą próbę szczelności i wykonaj zdjęcia tras, przejść oraz rozdzielacza."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/#faq",
      "mainEntity": [
        {"@type": "Question", "name": "Czy rura PE-RT nadaje się do ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Tak, jeżeli gotowa rura jest przeznaczona do ogrzewania, ma odpowiednią klasę zastosowania i ciśnienie projektowe, barierę ograniczającą dyfuzję tlenu oraz dokumentację kompatybilnego systemu."}},
        {"@type": "Question", "name": "Czym różni się PE-RT Type I od Type II?", "acceptedAnswer": {"@type": "Answer", "text": "Są to dwie kategorie materiału o różnej charakterystyce długotrwałej wytrzymałości w temperaturze. Typ nie zastępuje oceny gotowej rury, jej wymiarów, klasy pracy, bariery oraz dokumentacji."}},
        {"@type": "Question", "name": "Czy PE-RT Type II zawsze jest lepszy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie należy tworzyć rankingu wyłącznie na podstawie typu tworzywa. Produkt trzeba ocenić w kontekście klasy, ciśnienia, konstrukcji, jakości systemu połączeń i przeznaczenia projektowego."}},
        {"@type": "Question", "name": "Czy każda rura PE-RT ma barierę EVOH?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. ISO 22391 obejmuje rury z warstwami barierowymi i bez nich. Obecność, położenie i skuteczność bariery trzeba potwierdzić dla konkretnego produktu."}},
        {"@type": "Question", "name": "Czy PE-RT/Al/PE-RT to to samo co PE-RT/EVOH/PE-RT?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Pierwsza konstrukcja zawiera aluminium, które pełni funkcję bariery i wpływa na stabilność oraz rozszerzalność. Druga wykorzystuje polimerową barierę EVOH."}},
        {"@type": "Question", "name": "Czy rura pięciowarstwowa jest zawsze lepsza od trzywarstwowej?", "acceptedAnswer": {"@type": "Answer", "text": "Nie sama liczba warstw decyduje o jakości. Trzeba sprawdzić ich położenie, spójność, klasę pracy, normę, badania i dokumentację całego systemu."}},
        {"@type": "Question", "name": "Czy do domu jednorodzinnego zawsze wybiera się PE-RT 16×2,0 mm?", "acceptedAnswer": {"@type": "Answer", "text": "To częsty wymiar, ale ostateczny dobór zależy od przepływu, długości pętli z dobiegami, wymaganej mocy, dopuszczalnego oporu i możliwości regulacyjnych rozdzielacza."}},
        {"@type": "Question", "name": "Ile metrów może mieć pętla z rury PE-RT 16×2,0 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Nie istnieje jeden limit wynikający wyłącznie z nazwy PE-RT. Długość trzeba sprawdzić dla wymaganego przepływu, średnicy wewnętrznej, oporu jednostkowego, dobiegów i dostępnego sprężu pompy."}},
        {"@type": "Question", "name": "Czy PE-RT jest bardziej elastyczny od PEX?", "acceptedAnswer": {"@type": "Answer", "text": "Nie można tego stwierdzić dla wszystkich produktów. Na zachowanie rury wpływają odmiana tworzywa, metoda wytwarzania, średnica, grubość ścianki, liczba warstw i obecność aluminium."}},
        {"@type": "Question", "name": "Czy rura PE-RT obniża rachunki za ogrzewanie?", "acceptedAnswer": {"@type": "Answer", "text": "Sam materiał rury nie zmniejsza zapotrzebowania budynku na ciepło. Zużycie energii zależy od strat budynku, temperatury zasilania, źródła ciepła, regulacji, rozstawu, przepływów i konstrukcji podłogi."}},
        {"@type": "Question", "name": "Czy napis 95°C lub 10 bar wystarcza do oceny rury?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Trzeba odczytać klasę zastosowania, ciśnienie projektowe i pełną dokumentację profilu pracy. Temperatura maksymalna lub awaryjna nie jest temperaturą ciągłej eksploatacji."}},
        {"@type": "Question", "name": "Czy można łączyć rurę i złączki różnych producentów?", "acceptedAnswer": {"@type": "Answer", "text": "Tylko wtedy, gdy istnieje jednoznacznie udokumentowana kompatybilność całego połączenia. Zbieżny wymiar zewnętrzny nie potwierdza tolerancji, profilu zacisku ani warunków gwarancji."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "image": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image"},
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "caption": "Robert Kucharski – projektant instalacji sanitarnych i specjalista ogrzewania podłogowego",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "sameAs": ["https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "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 initPertGuide() {
    var root = document.getElementById("rk-pert-guide");
    if (!root) { return; }
    if (root.getAttribute("data-rk-ready") === "true") { return; }
    root.setAttribute("data-rk-ready", "true");

    var progress = root.querySelector("#rk-pert-progress");
    function updateProgress() {
      if (!progress) { return; }
      var rect = root.getBoundingClientRect();
      var total = root.offsetHeight - window.innerHeight;
      var passed = -rect.top;
      var value = 0;
      if (total > 0) { value = passed / total * 100; }
      if (value < 0) { value = 0; }
      if (value > 100) { value = 100; }
      progress.style.width = value.toFixed(2) + "%";
    }
    window.addEventListener("scroll", updateProgress, {passive: true});
    window.addEventListener("resize", updateProgress);
    updateProgress();

    var layerTabs = Array.prototype.slice.call(root.querySelectorAll(".rk-pert-layer-tab"));
    var layerPanels = Array.prototype.slice.call(root.querySelectorAll(".rk-pert-layer-panel"));

    function activateLayer(tab, moveFocus) {
      var target = tab.getAttribute("data-target");
      layerTabs.forEach(function (item) {
        var active = item === tab;
        item.setAttribute("aria-selected", active ? "true" : "false");
        item.setAttribute("tabindex", active ? "0" : "-1");
      });
      layerPanels.forEach(function (panel) { panel.hidden = panel.id !== target; });
      if (moveFocus) { tab.focus(); }
    }

    layerTabs.forEach(function (tab, index) {
      tab.addEventListener("click", function () { activateLayer(tab, false); });
      tab.addEventListener("keydown", function (event) {
        var nextIndex = index;
        if (event.key === "ArrowRight") { nextIndex = (index + 1) % layerTabs.length; }
        if (event.key === "ArrowLeft") { nextIndex = (index - 1 + layerTabs.length) % layerTabs.length; }
        if (event.key === "Home") { nextIndex = 0; }
        if (event.key === "End") { nextIndex = layerTabs.length - 1; }
        if (nextIndex !== index) {
          event.preventDefault();
          activateLayer(layerTabs[nextIndex], true);
        }
      });
    });

    var construction = root.querySelector("#rk-pert-construction");
    var standard = root.querySelector("#rk-pert-standard");
    var size = root.querySelector("#rk-pert-size");
    var pipeClass = root.querySelector("#rk-pert-class");
    var pressure = root.querySelector("#rk-pert-pressure");
    var barrier = root.querySelector("#rk-pert-barrier-select");
    var maker = root.querySelector("#rk-pert-maker");
    var batch = root.querySelector("#rk-pert-batch");
    var meter = root.querySelector("#rk-pert-meter");
    var card = root.querySelector("#rk-pert-card");
    var system = root.querySelector("#rk-pert-system-doc");
    var install = root.querySelector("#rk-pert-install");
    var run = root.querySelector("#rk-pert-run");
    var scoreNode = root.querySelector("#rk-pert-score");
    var scoreRing = root.querySelector("#rk-pert-score-ring");
    var titleNode = root.querySelector("#rk-pert-result-title");
    var textNode = root.querySelector("#rk-pert-result-text");
    var listNode = root.querySelector("#rk-pert-result-list");

    function addResult(status, label, message) {
      if (!listNode) { return; }
      var item = document.createElement("li");
      item.className = "rk-pert-result-item";
      if (status === "warning") { item.className += " is-warning"; }
      if (status === "danger") { item.className += " is-danger"; }
      var badge = document.createElement("span");
      badge.className = "rk-pert-result-badge";
      badge.textContent = label;
      var copy = document.createElement("span");
      copy.textContent = message;
      item.appendChild(badge);
      item.appendChild(copy);
      listNode.appendChild(item);
    }

    function allChecked(nodes) {
      var result = true;
      nodes.forEach(function (node) {
        if (!node) { result = false; }
        else if (!node.checked) { result = false; }
      });
      return result;
    }

    function runAudit() {
      if (!construction) { return; }
      if (!standard) { return; }
      if (!size) { return; }
      if (!pipeClass) { return; }
      if (!pressure) { return; }
      if (!barrier) { return; }
      if (!listNode) { return; }

      var score = 0;
      var critical = false;
      listNode.textContent = "";

      if (construction.value === "missing") {
        critical = true;
        addResult("danger", "BRAK", "Nie można jednoznacznie ustalić materiału ani konstrukcji rury.");
      } else if (construction.value === "name") {
        score += 5;
        addResult("warning", "SPRAWDŹ", "Nazwa PE-RT jest podana, ale brakuje typu albo budowy warstw.");
      } else {
        score += 12;
        addResult("ok", "POTWIERDZONE", "Materiał i konstrukcja rury zostały wskazane.");
      }

      if (standard.value === "missing") {
        critical = true;
        addResult("danger", "BRAK", "Brakuje normy produktu lub innej jednoznacznej podstawy oceny.");
      } else if (standard.value === "15875") {
        score += 3;
        critical = true;
        addResult("danger", "NIEZGODNOŚĆ", "ISO 15875 dotyczy PE-X. Dla rury opisanej PE-RT wymaga to wyjaśnienia.");
      } else if (standard.value === "other") {
        score += 10;
        addResult("warning", "SPRAWDŹ", "Zweryfikuj zakres wskazanej normy i jej odniesienie do konkretnej konstrukcji.");
      } else {
        score += 16;
        addResult("ok", "POTWIERDZONE", "Wskazano normę właściwą dla rury PE-RT albo systemu wielowarstwowego.");
      }

      if (size.value === "missing") {
        addResult("danger", "BRAK", "Bez grubości ścianki nie można wyznaczyć średnicy wewnętrznej.");
      } else {
        score += 10;
        addResult("ok", "POTWIERDZONE", "Wymiar zawiera średnicę zewnętrzną i grubość ścianki.");
      }

      if (pipeClass.value === "missing") {
        critical = true;
        addResult("danger", "BRAK", "Brakuje klasy zastosowania potrzebnej do oceny profilu pracy.");
      } else if (pipeClass.value === "temp") {
        score += 4;
        critical = true;
        addResult("warning", "ZA MAŁO", "Sama temperatura maksymalna nie zastępuje klasy zastosowania.");
      } else if (pipeClass.value === "other") {
        score += 9;
        addResult("warning", "SPRAWDŹ", "Potwierdź, czy wskazana klasa obejmuje planowane ogrzewanie podłogowe.");
      } else {
        score += 16;
        addResult("ok", "POTWIERDZONE", "Wskazano klasę obejmującą ogrzewanie podłogowe.");
      }

      if (pressure.value === "missing") {
        addResult("danger", "BRAK", "Brakuje ciśnienia projektowego powiązanego z klasą pracy.");
      } else {
        score += 10;
        addResult("ok", "POTWIERDZONE", "Ciśnienie projektowe zostało wskazane; nie traktuj wyższej wartości jako rankingu jakości.");
      }

      if (barrier.value === "none") {
        critical = true;
        addResult("danger", "RYZYKO", "Brak bariery tlenowej nie jest właściwym punktem wyjścia dla typowej zamkniętej instalacji grzewczej z metalowymi elementami.");
      } else if (barrier.value === "missing") {
        critical = true;
        addResult("danger", "BRAK", "Nie potwierdzono ochrony przed dyfuzją tlenu.");
      } else if (barrier.value === "evoh") {
        score += 7;
        addResult("warning", "SPRAWDŹ", "Napis EVOH potwierdza materiał warstwy, ale nie jej deklarowaną skuteczność.");
      } else {
        score += 16;
        addResult("ok", "POTWIERDZONE", "Wskazano barierę wraz z podstawą jej oceny lub dokumentacją konstrukcji aluminiowej.");
      }

      var traceNodes = [maker, batch, meter];
      var traceCount = 0;
      traceNodes.forEach(function (node) { if (node) { if (node.checked) { traceCount += 1; } } });
      score += Math.round(traceCount / 3 * 10);
      if (allChecked(traceNodes)) {
        addResult("ok", "POTWIERDZONE", "Producent, partia, data i metraż pozwalają powiązać rurę z dostawą.");
      } else if (traceCount === 0) {
        addResult("danger", "BRAK", "Dostawa nie ma wystarczającej identyfikowalności.");
      } else {
        addResult("warning", "NIEPEŁNE", "Uzupełnij brakujące dane partii, daty, metrażu albo właściciela systemu.");
      }

      var docNodes = [card, system, install];
      var docCount = 0;
      docNodes.forEach(function (node) { if (node) { if (node.checked) { docCount += 1; } } });
      score += Math.round(docCount / 3 * 10);
      if (allChecked(docNodes)) {
        addResult("ok", "POTWIERDZONE", "Dokumentacja produktu, kompatybilność i instrukcja montażu są dostępne.");
      } else if (docCount === 0) {
        critical = true;
        addResult("danger", "BRAK", "Bez dokumentacji nie można bezpiecznie zweryfikować produktu ani połączeń.");
      } else {
        addResult("warning", "NIEPEŁNE", "Przed zakupem uzupełnij dokumentację i potwierdzenie kompatybilności.");
      }

      if (score > 100) { score = 100; }
      if (scoreNode) { scoreNode.textContent = String(score); }
      if (scoreRing) {
        scoreRing.style.setProperty("--rk-score", String(score));
        if (score < 55) { scoreRing.style.background = "conic-gradient(var(--rk-red) " + score + "%, #dce9ee 0)"; }
        else if (score < 80) { scoreRing.style.background = "conic-gradient(var(--rk-yellow) " + score + "%, #dce9ee 0)"; }
        else { scoreRing.style.background = "conic-gradient(var(--rk-green) " + score + "%, #dce9ee 0)"; }
      }

      if (critical) {
        if (titleNode) { titleNode.textContent = "Nie zamykaj wyboru — brakuje danych krytycznych"; }
        if (textNode) { textNode.textContent = "Uzupełnij pozycje oznaczone jako brak, ryzyko albo niezgodność. Wysoka suma pozostałych punktów nie kompensuje braku klasy, normy, bariery lub dokumentacji."; }
      } else if (score >= 80) {
        if (titleNode) { titleNode.textContent = "Dane wyglądają na kompletne"; }
        if (textNode) { textNode.textContent = "To dobry punkt wyjścia do oceny produktu. Porównaj teraz wpisane informacje z oryginalną dokumentacją i wymaganiami projektu."; }
      } else if (score >= 55) {
        if (titleNode) { titleNode.textContent = "Produkt wymaga uzupełnienia informacji"; }
        if (textNode) { textNode.textContent = "Niektóre elementy są potwierdzone, ale przed zakupem trzeba uzyskać brakujące oznaczenia, dokumenty albo zgodność systemową."; }
      } else {
        if (titleNode) { titleNode.textContent = "Za mało danych do świadomego wyboru"; }
        if (textNode) { textNode.textContent = "Nie opieraj decyzji na cenie, kolorze ani pojedynczym haśle. Poproś o pełną kartę produktu i jednoznaczne oznaczenia."; }
      }
    }

    if (run) { run.addEventListener("click", runAudit); }
    var auditControls = Array.prototype.slice.call(root.querySelectorAll("#rk-pert-audit select, #rk-pert-audit input"));
    auditControls.forEach(function (control) { control.addEventListener("change", runAudit); });
    runAudit();
  }

  if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", initPertGuide); }
  else { initPertGuide(); }
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/">Rura PERT do ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</title>
		<link>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/</link>
					<comments>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 22 Dec 2024 11:02:08 +0000</pubDate>
				<category><![CDATA[Ekologiczne ogrzewanie]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Niskotemperaturowe systemy grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Oszczędzanie energii]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Projekty grzewcze]]></category>
		<category><![CDATA[Rozstaw rur ogrzewania]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[izolacja budynku]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędne ogrzewanie]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[system grzewczy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1823</guid>

					<description><![CDATA[<p>Ogrzewanie domu za pomocą pompy ciepła to oszczędne i ekologiczne rozwiązanie. Kluczem do efektywności systemu jest odpowiednio zaprojektowany rozstaw rur ogrzewania podłogowego przy pompie ciepła oraz utrzymanie niskiej temperatury zasilania na poziomie 35 stopni Celsjusza. Dowiedz się, jak optymalnie zaplanować układ grzewczy, zadbać o izolację budynku oraz jakich zasad przestrzegać, aby pompa ciepła pracowała wydajnie i ekonomicznie przez długie lata.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-sp-guide {
    --rk-sp-dark: #102536;
    --rk-sp-navy: #14384d;
    --rk-sp-graphite: #2b3f4d;
    --rk-sp-blue: #078fbe;
    --rk-sp-cyan: #28c9da;
    --rk-sp-cyan-soft: #eafcff;
    --rk-sp-orange: #ff7438;
    --rk-sp-red: #e33d35;
    --rk-sp-green: #16856b;
    --rk-sp-green-soft: #eaf8f4;
    --rk-sp-yellow: #d99a13;
    --rk-sp-yellow-soft: #fff8df;
    --rk-sp-ink: #1f2937;
    --rk-sp-text: #465866;
    --rk-sp-muted: #687986;
    --rk-sp-line: #dce8ee;
    --rk-sp-soft: #f5f9fb;
    --rk-sp-warm: #fff4ed;
    --rk-sp-white: #ffffff;
    width: 100%;
    max-width: 1080px;
    margin: 34px auto 70px;
    color: var(--rk-sp-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.78;
  }

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

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

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

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

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

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

  #rk-sp-guide h2 {
    margin-bottom: 18px;
    font-size: clamp(1.65rem, 3.7vw, 2.6rem);
  }

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

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

  /* Ochrona przed dekoracjami nagłówków dodawanymi przez motyw po publikacji. */
  #rk-sp-guide h2::before,
  #rk-sp-guide h2::after,
  #rk-sp-guide h3::before,
  #rk-sp-guide h3::after,
  #rk-sp-guide h4::before,
  #rk-sp-guide h4::after {
    content: none !important;
    display: none !important;
  }

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

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

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

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

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

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

  #rk-sp-guide .rk-sp-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(38px, 6.5vw, 78px);
    color: var(--rk-sp-white);
    background:
      radial-gradient(circle at 88% 12%, rgba(255, 116, 56, 0.35), transparent 27%),
      radial-gradient(circle at 82% 78%, rgba(40, 201, 218, 0.24), transparent 31%),
      linear-gradient(135deg, #0d2230 0%, #143b50 58%, #095e78 100%);
  }

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

  #rk-sp-guide .rk-sp-hero::before {
    right: -115px;
    bottom: -170px;
    width: 390px;
    height: 390px;
    border: 58px solid rgba(255, 255, 255, 0.055);
  }

  #rk-sp-guide .rk-sp-hero::after {
    right: 115px;
    bottom: -130px;
    width: 230px;
    height: 230px;
    border: 34px solid rgba(255, 116, 56, 0.11);
  }

  #rk-sp-guide .rk-sp-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-sp-white);
    background: rgba(255, 255, 255, 0.08);
    font-size: 0.74rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    line-height: 1.35;
    text-transform: uppercase;
  }

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

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

  #rk-sp-guide .rk-sp-hero h2 span {
    color: #84edf5;
  }

  #rk-sp-guide .rk-sp-hook {
    max-width: 930px;
    margin: 0 0 26px;
    padding: clamp(20px, 3.6vw, 30px);
    border: 1px solid rgba(255, 255, 255, 0.17);
    border-left: 5px solid var(--rk-sp-orange);
    border-radius: 0 18px 18px 0;
    background: rgba(255, 255, 255, 0.09);
  }

  #rk-sp-guide .rk-sp-hook p {
    margin: 0;
    color: #f3f8fa;
    font-size: clamp(1.02rem, 2.1vw, 1.23rem);
    font-weight: 620;
    line-height: 1.7;
  }

  #rk-sp-guide .rk-sp-hook strong {
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-hero-lead {
    max-width: 920px;
    color: #dcecf1;
    font-size: clamp(1rem, 2vw, 1.15rem);
  }

  #rk-sp-guide .rk-sp-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 18px;
    margin-top: 28px;
  }

  #rk-sp-guide .rk-sp-hero-meta span {
    display: inline-flex;
    gap: 8px;
    align-items: center;
    color: #d8e8ee;
    font-size: 0.76rem;
    font-weight: 780;
  }

  #rk-sp-guide .rk-sp-hero-meta i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--rk-sp-orange);
  }

  #rk-sp-guide .rk-sp-author-strip {
    display: flex;
    gap: 14px;
    align-items: center;
    margin-top: 30px;
  }

  #rk-sp-guide .rk-sp-author-strip img {
    width: 58px;
    height: 58px;
    border: 3px solid rgba(255, 255, 255, 0.85);
    border-radius: 50%;
    object-fit: cover;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.2);
  }

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

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

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

  #rk-sp-guide .rk-sp-nav {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    padding: 24px clamp(20px, 4vw, 52px);
    border-bottom: 1px solid var(--rk-sp-line);
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-nav a {
    display: flex;
    gap: 10px;
    align-items: center;
    min-height: 54px;
    padding: 11px 14px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 14px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-white);
    font-size: 0.74rem;
    font-weight: 850;
    line-height: 1.35;
    text-decoration: none;
  }

  #rk-sp-guide .rk-sp-nav a:hover,
  #rk-sp-guide .rk-sp-nav a:focus-visible {
    border-color: var(--rk-sp-cyan);
    color: var(--rk-sp-blue);
  }

  #rk-sp-guide .rk-sp-nav-num {
    display: inline-flex;
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 0.65rem;
    font-weight: 900;
  }

  #rk-sp-guide .rk-sp-content {
    padding: clamp(28px, 5vw, 64px);
  }

  #rk-sp-guide .rk-sp-section {
    margin-top: clamp(54px, 8vw, 92px);
  }

  #rk-sp-guide .rk-sp-section:first-child {
    margin-top: 0;
  }

  #rk-sp-guide .rk-sp-section-head {
    max-width: 880px;
    margin-bottom: 28px;
  }

  #rk-sp-guide .rk-sp-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-sp-red);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.12em;
    text-transform: uppercase;
  }

  #rk-sp-guide .rk-sp-lead {
    color: var(--rk-sp-graphite);
    font-size: clamp(1.02rem, 2vw, 1.18rem);
  }

  #rk-sp-guide .rk-sp-dropcap::first-letter {
    float: left;
    margin: 0.08em 0.12em 0 0;
    color: var(--rk-sp-orange);
    font-size: 3.5em;
    font-weight: 900;
    line-height: 0.82;
  }

  #rk-sp-guide .rk-sp-verdict {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 28px;
    align-items: center;
    margin: 30px 0;
    padding: clamp(25px, 4.5vw, 42px);
    border: 1px solid #ffcbb7;
    border-radius: 24px;
    background: linear-gradient(135deg, #fff9f5, var(--rk-sp-warm));
  }

  #rk-sp-guide .rk-sp-verdict p:last-child {
    margin-bottom: 0;
  }

  #rk-sp-guide .rk-sp-verdict-number {
    min-width: 190px;
    padding: 20px;
    border-radius: 21px;
    color: var(--rk-sp-white);
    background: linear-gradient(145deg, var(--rk-sp-orange), var(--rk-sp-red));
    text-align: center;
    box-shadow: 0 17px 38px rgba(227, 61, 53, 0.22);
  }

  #rk-sp-guide .rk-sp-verdict-number b,
  #rk-sp-guide .rk-sp-verdict-number small {
    display: block;
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-verdict-number b {
    font-size: clamp(2.1rem, 5vw, 3.4rem);
    line-height: 1;
  }

  #rk-sp-guide .rk-sp-verdict-number small {
    margin-top: 8px;
    font-size: 0.67rem;
    font-weight: 850;
    line-height: 1.35;
  }

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

  #rk-sp-guide .rk-sp-formula {
    padding: 24px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 19px;
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-formula-code {
    display: block;
    margin: 12px 0;
    color: var(--rk-sp-dark);
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: clamp(1rem, 2.6vw, 1.35rem);
    font-weight: 800;
    line-height: 1.45;
  }

  #rk-sp-guide .rk-sp-formula small {
    display: block;
    color: var(--rk-sp-muted);
    font-size: 0.72rem;
    line-height: 1.55;
  }

  #rk-sp-guide .rk-sp-grid-4,
  #rk-sp-guide .rk-sp-grid-3,
  #rk-sp-guide .rk-sp-grid-2 {
    display: grid;
    gap: 16px;
  }

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

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

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

  #rk-sp-guide .rk-sp-card {
    min-width: 0;
    padding: 23px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 19px;
    background: var(--rk-sp-white);
    box-shadow: 0 10px 26px rgba(16, 37, 54, 0.06);
  }

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

  #rk-sp-guide .rk-sp-pitch {
    display: inline-flex;
    min-width: 68px;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    margin-bottom: 18px;
    padding: 8px 12px;
    border-radius: 13px;
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 1rem;
    font-weight: 900;
  }

  #rk-sp-guide .rk-sp-card.rk-sp-special {
    border-color: #ffd2bf;
    background: var(--rk-sp-warm);
  }

  #rk-sp-guide .rk-sp-card.rk-sp-recommended {
    border-color: #9ee8ee;
    background: var(--rk-sp-cyan-soft);
  }

  #rk-sp-guide .rk-sp-card.rk-sp-caution {
    border-color: #ead58e;
    background: var(--rk-sp-yellow-soft);
  }

  #rk-sp-guide .rk-sp-mini-list {
    margin: 13px 0 0;
    padding: 0;
    list-style: none;
  }

  #rk-sp-guide .rk-sp-mini-list li {
    display: grid;
    grid-template-columns: 8px minmax(0, 1fr);
    gap: 9px;
    margin: 8px 0;
    color: var(--rk-sp-text);
    font-size: 0.78rem;
    line-height: 1.5;
  }

  #rk-sp-guide .rk-sp-mini-list li span:first-child {
    width: 7px;
    height: 7px;
    margin-top: 0.55em;
    border-radius: 50%;
    background: var(--rk-sp-orange);
  }

  #rk-sp-guide .rk-sp-table-wrap {
    margin: 28px 0;
  }

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

  #rk-sp-guide .rk-sp-table th,
  #rk-sp-guide .rk-sp-table td {
    padding: 14px 13px;
    border-bottom: 1px solid var(--rk-sp-line);
    vertical-align: top;
    text-align: left;
    line-height: 1.5;
  }

  #rk-sp-guide .rk-sp-table th {
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 0.68rem;
    font-weight: 900;
    letter-spacing: 0.035em;
    text-transform: uppercase;
  }

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

  #rk-sp-guide .rk-sp-table td strong {
    white-space: nowrap;
  }

  #rk-sp-guide .rk-sp-note {
    margin: 24px 0;
    padding: 20px 22px;
    border-left: 5px solid var(--rk-sp-blue);
    border-radius: 0 15px 15px 0;
    background: var(--rk-sp-cyan-soft);
  }

  #rk-sp-guide .rk-sp-note.rk-sp-note-warn {
    border-left-color: var(--rk-sp-orange);
    background: var(--rk-sp-warm);
  }

  #rk-sp-guide .rk-sp-note p:last-child {
    margin-bottom: 0;
  }

  #rk-sp-guide .rk-sp-lab {
    overflow: hidden;
    margin: 30px 0;
    border: 1px solid #b8e9ee;
    border-radius: 25px;
    background: #fbfeff;
    box-shadow: 0 20px 55px rgba(7, 143, 190, 0.1);
  }

  #rk-sp-guide .rk-sp-lab-head {
    padding: clamp(24px, 4vw, 36px);
    color: var(--rk-sp-white);
    background: linear-gradient(135deg, var(--rk-sp-dark), #12546c);
  }

  #rk-sp-guide .rk-sp-lab-head h3,
  #rk-sp-guide .rk-sp-lab-head p,
  #rk-sp-guide .rk-sp-lab-head strong {
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-lab-head p:last-child {
    margin-bottom: 0;
    color: #d5e9ef;
  }

  #rk-sp-guide .rk-sp-lab-body {
    padding: clamp(22px, 4vw, 36px);
  }

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

  #rk-sp-guide .rk-sp-control {
    min-width: 0;
    padding: 17px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 16px;
    background: var(--rk-sp-white);
  }

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

  #rk-sp-guide .rk-sp-control output {
    color: var(--rk-sp-red);
    font-size: 0.74rem;
    font-weight: 900;
    white-space: nowrap;
  }

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

  #rk-sp-guide .rk-sp-control select {
    width: 100%;
    min-height: 46px;
    padding: 9px 10px;
    border: 1px solid #c8d8df;
    border-radius: 10px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-white);
    font-size: 0.76rem;
    font-weight: 700;
  }

  #rk-sp-guide .rk-sp-control small {
    display: block;
    margin-top: 8px;
    color: var(--rk-sp-muted);
    font-size: 0.64rem;
    line-height: 1.45;
  }

  #rk-sp-guide .rk-sp-live-summary {
    margin: 22px 0;
    padding: 18px 20px;
    border-radius: 15px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-cyan-soft);
    font-size: 0.83rem;
    font-weight: 760;
  }

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

  #rk-sp-guide .rk-sp-result {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 18px;
    background: var(--rk-sp-white);
  }

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

  #rk-sp-guide .rk-sp-result-title {
    color: var(--rk-sp-dark);
    font-size: 1.08rem;
    font-weight: 900;
  }

  #rk-sp-guide .rk-sp-status {
    display: inline-flex;
    align-items: center;
    min-height: 31px;
    padding: 6px 10px;
    border-radius: 999px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-soft);
    font-size: 0.62rem;
    font-weight: 900;
    line-height: 1.25;
    text-align: center;
  }

  #rk-sp-guide .rk-sp-status.is-good {
    color: #0d5d4a;
    background: var(--rk-sp-green-soft);
  }

  #rk-sp-guide .rk-sp-status.is-warn {
    color: #765200;
    background: var(--rk-sp-yellow-soft);
  }

  #rk-sp-guide .rk-sp-status.is-bad {
    color: #9f2b27;
    background: #ffebe8;
  }

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

  #rk-sp-guide .rk-sp-result-value {
    padding: 12px;
    border-radius: 12px;
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-result-value span,
  #rk-sp-guide .rk-sp-result-value b {
    display: block;
  }

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

  #rk-sp-guide .rk-sp-result-value b {
    margin-top: 3px;
    color: var(--rk-sp-dark);
    font-size: 0.9rem;
    line-height: 1.3;
  }

  #rk-sp-guide .rk-sp-result-foot {
    margin-top: 13px;
    color: var(--rk-sp-muted);
    font-size: 0.65rem;
    line-height: 1.5;
  }

  #rk-sp-guide .rk-sp-chart-panel {
    margin: 25px 0;
    padding: clamp(19px, 3vw, 28px);
    border: 1px solid var(--rk-sp-line);
    border-radius: 19px;
    background: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-chart-panel h4 {
    margin-bottom: 5px;
  }

  #rk-sp-guide .rk-sp-chart-caption {
    margin-bottom: 16px;
    color: var(--rk-sp-muted);
    font-size: 0.71rem;
    line-height: 1.55;
  }

  #rk-sp-guide .rk-sp-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 15px;
    margin-bottom: 12px;
    color: var(--rk-sp-text);
    font-size: 0.66rem;
    font-weight: 800;
  }

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

  #rk-sp-guide .rk-sp-chart-legend i {
    width: 22px;
    height: 4px;
    border-radius: 99px;
  }

  #rk-sp-guide .rk-sp-chart-svg {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
  }

  #rk-sp-guide .rk-sp-eff-list {
    display: grid;
    gap: 13px;
  }

  #rk-sp-guide .rk-sp-eff-row {
    display: grid;
    grid-template-columns: 76px minmax(0, 1fr) minmax(130px, auto);
    gap: 12px;
    align-items: center;
  }

  #rk-sp-guide .rk-sp-eff-label,
  #rk-sp-guide .rk-sp-eff-value {
    color: var(--rk-sp-dark);
    font-size: 0.7rem;
    font-weight: 850;
  }

  #rk-sp-guide .rk-sp-eff-value {
    text-align: right;
  }

  #rk-sp-guide .rk-sp-eff-track {
    height: 15px;
    overflow: hidden;
    border-radius: 999px;
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-eff-bar {
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-sp-cyan), var(--rk-sp-blue));
    transition: width 240ms ease;
  }

  #rk-sp-guide .rk-sp-equation {
    margin: 26px 0;
    padding: clamp(22px, 4vw, 34px);
    border-radius: 22px;
    color: var(--rk-sp-white);
    background: linear-gradient(135deg, var(--rk-sp-dark), #173f55);
  }

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

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

  #rk-sp-guide .rk-sp-equation-card {
    min-width: 0;
    padding: 17px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 15px;
    background: rgba(255, 255, 255, 0.07);
  }

  #rk-sp-guide .rk-sp-equation-card b,
  #rk-sp-guide .rk-sp-equation-card small {
    display: block;
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-equation-card b {
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: 0.9rem;
    line-height: 1.45;
  }

  #rk-sp-guide .rk-sp-equation-card small {
    margin-top: 7px;
    color: #c8dce4;
    font-size: 0.63rem;
    line-height: 1.45;
  }

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

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

  #rk-sp-guide .rk-sp-diagram svg {
    display: block;
    width: 100%;
    height: auto;
  }

  #rk-sp-guide .rk-sp-diagram figcaption {
    margin-top: 13px;
    color: var(--rk-sp-muted);
    font-size: 0.68rem;
    line-height: 1.55;
  }

  #rk-sp-guide .rk-sp-checklist {
    display: grid;
    gap: 12px;
    margin: 24px 0;
    padding: 0;
    counter-reset: rk-sp-check;
    list-style: none;
  }

  #rk-sp-guide .rk-sp-checklist li {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    padding: 18px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 16px;
    background: var(--rk-sp-white);
    counter-increment: rk-sp-check;
  }

  #rk-sp-guide .rk-sp-checklist li::before {
    content: counter(rk-sp-check, decimal-leading-zero);
    display: inline-flex;
    width: 42px;
    height: 42px;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 0.67rem;
    font-weight: 900;
  }

  #rk-sp-guide .rk-sp-checklist strong,
  #rk-sp-guide .rk-sp-checklist span {
    display: block;
  }

  #rk-sp-guide .rk-sp-checklist span {
    margin-top: 4px;
    color: var(--rk-sp-text);
    font-size: 0.78rem;
    line-height: 1.55;
  }

  #rk-sp-guide .rk-sp-faq {
    display: grid;
    gap: 12px;
  }

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

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

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

  #rk-sp-guide .rk-sp-faq summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 18px;
    display: inline-flex;
    width: 28px;
    height: 28px;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 1rem;
    transform: translateY(-50%);
  }

  #rk-sp-guide .rk-sp-faq details[open] summary::after {
    content: "−";
    background: var(--rk-sp-orange);
  }

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

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

  #rk-sp-guide .rk-sp-cta {
    display: grid;
    grid-template-columns: 1fr;
    gap: 24px;
    margin: 46px 0;
    padding: clamp(26px, 5vw, 42px);
    border-radius: 23px;
    color: var(--rk-sp-white);
    background:
      radial-gradient(circle at 92% 18%, rgba(255, 106, 42, 0.3), transparent 30%),
      linear-gradient(135deg, var(--rk-sp-dark), #173f55);
  }

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

  #rk-sp-guide .rk-sp-cta p {
    margin-bottom: 0;
    color: #d7e7ec;
  }

  #rk-sp-guide .rk-sp-cta-actions {
    display: grid;
    gap: 9px;
    min-width: 0;
  }

  #rk-sp-guide .rk-sp-button {
    display: inline-flex;
    min-height: 54px;
    align-items: center;
    justify-content: center;
    padding: 13px 18px;
    border-radius: 13px;
    color: var(--rk-sp-white);
    background: linear-gradient(145deg, var(--rk-sp-orange), var(--rk-sp-red));
    box-shadow: 0 12px 26px rgba(227, 61, 53, 0.22);
    font-size: 0.8rem;
    font-weight: 900;
    text-align: center;
    text-decoration: none;
  }

  #rk-sp-guide .rk-sp-button:hover,
  #rk-sp-guide .rk-sp-button:focus-visible {
    color: var(--rk-sp-white);
    transform: translateY(-1px);
  }

  #rk-sp-guide .rk-sp-cta small {
    color: #afc8d1;
    font-size: 0.66rem;
    line-height: 1.45;
    text-align: center;
  }

  #rk-sp-guide .rk-sp-sources {
    margin-top: 44px;
    padding: 23px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 17px;
    background: var(--rk-sp-soft);
    color: var(--rk-sp-muted);
    font-size: 0.69rem;
    line-height: 1.65;
  }

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

  #rk-sp-guide .rk-sp-author-box {
    overflow: hidden;
    margin-top: 52px;
    border: 1px solid #cfe1e9;
    border-radius: 25px;
    background: var(--rk-sp-white);
    box-shadow: 0 20px 52px rgba(16, 37, 54, 0.09);
  }

  #rk-sp-guide .rk-sp-author-box,
  #rk-sp-guide .rk-sp-author-box * {
    box-sizing: border-box;
  }

  #rk-sp-guide .rk-sp-author-box h2::before,
  #rk-sp-guide .rk-sp-author-box h2::after,
  #rk-sp-guide .rk-sp-author-box h3::before,
  #rk-sp-guide .rk-sp-author-box h3::after,
  #rk-sp-guide .rk-sp-author-box p::before,
  #rk-sp-guide .rk-sp-author-box p::after,
  #rk-sp-guide .rk-sp-author-box a::before,
  #rk-sp-guide .rk-sp-author-box a::after,
  #rk-sp-guide .rk-sp-author-box button::before,
  #rk-sp-guide .rk-sp-author-box button::after {
    content: none !important;
    display: none !important;
  }

  #rk-sp-guide .rk-sp-author-head {
    display: flex;
    gap: 18px;
    align-items: center;
    justify-content: space-between;
    padding: clamp(24px, 4vw, 38px);
    border-bottom: 5px solid var(--rk-sp-cyan);
    color: var(--rk-sp-white);
    background: linear-gradient(135deg, var(--rk-sp-dark), #17465c);
  }

  #rk-sp-guide .rk-sp-author-head h2 {
    margin-bottom: 6px;
    color: var(--rk-sp-white);
    font-size: clamp(1.55rem, 3.5vw, 2.45rem);
  }

  #rk-sp-guide .rk-sp-author-head p {
    margin: 0;
    color: #d7e9ef;
    font-size: 0.8rem;
  }

  #rk-sp-guide .rk-sp-author-badge {
    flex: 0 0 auto;
    padding: 10px 15px;
    border: 1px solid rgba(40, 201, 218, 0.45);
    border-radius: 13px;
    color: #7cebf2;
    background: rgba(40, 201, 218, 0.08);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.08em;
  }

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

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

  #rk-sp-guide .rk-sp-author-photo {
    display: block;
    width: 148px;
    height: 148px;
    margin: 0 auto 19px;
    border: 5px solid var(--rk-sp-white);
    border-radius: 50%;
    object-fit: cover;
    box-shadow: 0 16px 32px rgba(16, 37, 54, 0.15);
  }

  #rk-sp-guide .rk-sp-author-name {
    margin-bottom: 7px;
    font-size: 1.28rem;
  }

  #rk-sp-guide .rk-sp-author-role {
    display: block;
    color: var(--rk-sp-blue);
    font-size: 0.71rem;
    font-weight: 900;
    letter-spacing: 0.055em;
    line-height: 1.55;
    text-transform: uppercase;
  }

  #rk-sp-guide .rk-sp-author-links {
    display: grid;
    gap: 8px;
    margin-top: 22px;
  }

  #rk-sp-guide .rk-sp-author-link {
    display: flex;
    min-height: 43px;
    align-items: center;
    justify-content: center;
    padding: 9px 12px;
    border: 1px solid #cadde5;
    border-radius: 11px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-white);
    font-size: 0.72rem;
    font-weight: 850;
    text-decoration: none;
  }

  #rk-sp-guide .rk-sp-author-link:hover,
  #rk-sp-guide .rk-sp-author-link:focus-visible {
    border-color: var(--rk-sp-cyan);
    color: var(--rk-sp-blue);
  }

  #rk-sp-guide .rk-sp-author-main {
    min-width: 0;
  }

  #rk-sp-guide .rk-sp-author-quote {
    position: relative;
    margin: 0;
    padding: clamp(30px, 5vw, 52px);
    border-bottom: 1px solid var(--rk-sp-line);
  }

  #rk-sp-guide .rk-sp-author-quote-mark {
    display: block;
    height: 38px;
    color: var(--rk-sp-cyan);
    font-family: Georgia, serif;
    font-size: 3.8rem;
    font-weight: 900;
    line-height: 0.9;
  }

  #rk-sp-guide .rk-sp-author-quote p {
    margin: 8px 0 0;
    color: var(--rk-sp-dark);
    font-size: clamp(1rem, 2vw, 1.22rem);
    font-style: italic;
    font-weight: 760;
    line-height: 1.72;
  }

  #rk-sp-guide .rk-sp-author-quote footer {
    margin-top: 14px;
    color: var(--rk-sp-muted);
    font-size: 0.69rem;
    font-weight: 820;
  }

  #rk-sp-guide .rk-sp-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-bottom: 1px solid var(--rk-sp-line);
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-author-tab {
    min-height: 53px;
    padding: 11px;
    border: 0;
    border-right: 1px solid var(--rk-sp-line);
    color: var(--rk-sp-muted);
    background: transparent;
    cursor: pointer;
    font-size: 0.68rem;
    font-weight: 900;
    letter-spacing: 0.035em;
    text-transform: uppercase;
  }

  #rk-sp-guide .rk-sp-author-tab:last-child {
    border-right: 0;
  }

  #rk-sp-guide .rk-sp-author-tab:hover,
  #rk-sp-guide .rk-sp-author-tab:focus-visible {
    color: var(--rk-sp-blue);
    background: var(--rk-sp-cyan-soft);
  }

  #rk-sp-guide .rk-sp-author-tab[aria-selected="true"] {
    color: var(--rk-sp-blue);
    background: var(--rk-sp-white);
    box-shadow: inset 0 -4px 0 var(--rk-sp-blue);
  }

  #rk-sp-guide .rk-sp-author-panels {
    padding: clamp(25px, 4vw, 40px);
  }

  #rk-sp-guide .rk-sp-author-panel[hidden] {
    display: none;
  }

  #rk-sp-guide .rk-sp-author-panel p:last-child {
    margin-bottom: 0;
  }

  #rk-sp-guide .rk-sp-portal-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-top: 18px;
  }

  #rk-sp-guide .rk-sp-portal-list a {
    display: flex;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    padding: 10px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 12px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-soft);
    font-size: 0.72rem;
    font-weight: 900;
    text-align: center;
    text-decoration: none;
  }

  #rk-sp-guide .rk-sp-disclaimer {
    margin-top: 28px;
    padding-top: 22px;
    border-top: 1px solid var(--rk-sp-line);
    color: var(--rk-sp-muted);
    font-size: 0.69rem;
    line-height: 1.65;
  }

  #rk-sp-guide .rk-sp-sr-only {
    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 (prefers-reduced-motion: reduce) {
    #rk-sp-guide .rk-sp-eff-bar {
      transition: none;
    }
  }

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

    #rk-sp-guide .rk-sp-verdict {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-verdict-number {
      justify-self: start;
    }

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

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

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

    #rk-sp-guide .rk-sp-author-profile {
      padding: 26px 20px;
    }
  }

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

    #rk-sp-guide .rk-sp-shell {
      border-radius: 21px;
    }

    #rk-sp-guide .rk-sp-hero,
    #rk-sp-guide .rk-sp-content {
      padding: 27px 20px;
    }

    #rk-sp-guide .rk-sp-nav {
      grid-template-columns: 1fr;
      padding: 18px;
    }

    #rk-sp-guide .rk-sp-formulas,
    #rk-sp-guide .rk-sp-grid-4,
    #rk-sp-guide .rk-sp-grid-3,
    #rk-sp-guide .rk-sp-grid-2,
    #rk-sp-guide .rk-sp-controls,
    #rk-sp-guide .rk-sp-results,
    #rk-sp-guide .rk-sp-diagram-grid,
    #rk-sp-guide .rk-sp-equation-grid {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-card,
    #rk-sp-guide .rk-sp-result,
    #rk-sp-guide .rk-sp-chart-panel {
      padding: 18px;
    }

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

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

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

    #rk-sp-guide .rk-sp-table tr {
      margin-bottom: 14px;
      padding: 9px 15px;
      border: 1px solid var(--rk-sp-line);
      border-radius: 16px;
      background: var(--rk-sp-white);
      box-shadow: 0 8px 22px rgba(16, 37, 54, 0.05);
    }

    #rk-sp-guide .rk-sp-table td {
      display: grid;
      grid-template-columns: minmax(105px, 0.8fr) minmax(0, 1.2fr);
      gap: 12px;
      padding: 10px 0;
      border-bottom: 1px solid var(--rk-sp-line);
    }

    #rk-sp-guide .rk-sp-table td::before {
      content: attr(data-label);
      color: var(--rk-sp-dark);
      font-size: 0.64rem;
      font-weight: 900;
      letter-spacing: 0.02em;
      line-height: 1.45;
      text-transform: uppercase;
    }

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

    #rk-sp-guide .rk-sp-eff-row {
      grid-template-columns: 66px minmax(0, 1fr);
    }

    #rk-sp-guide .rk-sp-eff-value {
      grid-column: 1 / -1;
      margin-top: -6px;
      text-align: left;
    }

    #rk-sp-guide .rk-sp-author-head {
      display: block;
    }

    #rk-sp-guide .rk-sp-author-badge {
      display: inline-block;
      margin-top: 14px;
    }

    #rk-sp-guide .rk-sp-author-layout {
      grid-template-columns: 1fr;
    }

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

    #rk-sp-guide .rk-sp-author-tabs {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-author-tab,
    #rk-sp-guide .rk-sp-author-tab:last-child {
      border-right: 0;
      border-bottom: 1px solid var(--rk-sp-line);
    }

    #rk-sp-guide .rk-sp-author-tab:last-child {
      border-bottom: 0;
    }

    #rk-sp-guide .rk-sp-author-tab[aria-selected="true"] {
      box-shadow: inset 4px 0 0 var(--rk-sp-blue);
    }

    #rk-sp-guide .rk-sp-portal-list {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 430px) {
    #rk-sp-guide .rk-sp-hero,
    #rk-sp-guide .rk-sp-content {
      padding-right: 16px;
      padding-left: 16px;
    }

    #rk-sp-guide .rk-sp-result-values {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-table td {
      grid-template-columns: 1fr;
      gap: 3px;
    }

    #rk-sp-guide .rk-sp-author-strip {
      align-items: flex-start;
    }

    #rk-sp-guide .rk-sp-cta {
      padding: 24px 18px;
    }
  }
</style>

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

    <header class="rk-sp-hero">
      <div class="rk-sp-badge"><span class="rk-sp-badge-dot" aria-hidden="true"></span>Analiza techniczna • pompa ciepła</div>
      <h2 itemprop="alternativeHeadline">Rozstaw rur ogrzewania podłogowego przy pompie ciepła – <span>5, 10, 15 czy 20 cm?</span></h2>

      <div class="rk-sp-hook">
        <p><strong>Rozstaw rur nie jest ustawieniem wybieranym z katalogu.</strong> Decyduje, czy pomieszczenie otrzyma potrzebną moc przy wodzie o temperaturze korzystnej dla pompy ciepła, czy instalacja będzie wymagała podnoszenia temperatury zasilania.</p>
      </div>

      <p class="rk-sp-hero-lead">W poradniku porównuję cztery rozstawy, pokazuję zużycie rury, przepływy i opory hydrauliczne oraz udostępniam interaktywny przykład: ten sam pokój, ta sama strata ciepła, ale cztery różne warianty ułożenia rur.</p>

      <div class="rk-sp-hero-meta" aria-label="Informacje o opracowaniu">
        <span><i aria-hidden="true"></i>Autor: Robert Kucharski</span>
        <span><i aria-hidden="true"></i>Pierwotna publikacja: 3 marca 2025 r.</span>
        <span><i aria-hidden="true"></i>Aktualizacja: 22 sierpnia 2026 r.</span>
      </div>

      <div class="rk-sp-author-strip">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych" width="58" height="58" loading="eager">
        <div>
          <b>Robert Kucharski</b>
          <small>Projektant instalacji sanitarnych • HVAC • ogrzewanie podłogowe • obliczenia hydrauliczne</small>
        </div>
      </div>
    </header>

    <nav class="rk-sp-nav" aria-label="Spis treści artykułu">
      <a href="#rk-sp-zasada"><span class="rk-sp-nav-num">01</span>Dlaczego rozstaw jest ważny?</a>
      <a href="#rk-sp-porownanie"><span class="rk-sp-nav-num">02</span>Porównanie 5–20 cm</a>
      <a href="#rk-sp-kalkulator"><span class="rk-sp-nav-num">03</span>Interaktywny przykład</a>
      <a href="#rk-sp-wykres"><span class="rk-sp-nav-num">04</span>Moc i temperatura wody</a>
      <a href="#rk-sp-hydraulika"><span class="rk-sp-nav-num">05</span>Przepływ i opory</a>
      <a href="#rk-sp-strefy"><span class="rk-sp-nav-num">06</span>Łazienki i przeszklenia</a>
      <a href="#rk-sp-schematy"><span class="rk-sp-nav-num">07</span>Przekrój i układ pętli</a>
      <a href="#rk-sp-dobor"><span class="rk-sp-nav-num">08</span>Procedura doboru</a>
      <a href="#rk-sp-faq"><span class="rk-sp-nav-num">09</span>FAQ</a>
    </nav>

    <div class="rk-sp-content" itemprop="articleBody">
      <section class="rk-sp-section" id="rk-sp-zasada" aria-labelledby="rk-sp-h-zasada">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Najpierw obciążenie cieplne, później rozstaw</span>
          <h2 id="rk-sp-h-zasada">Dlaczego rozstaw rur ogrzewania podłogowego przy pompie ciepła ma tak duże znaczenie?</h2>
        </div>

        <p class="rk-sp-lead rk-sp-dropcap">Pompa ciepła nie potrzebuje „zawsze 10 cm”. Potrzebuje instalacji zdolnej przekazać projektową moc przy możliwie niskiej temperaturze wody. Punktem wyjścia jest obciążenie cieplne konkretnego pomieszczenia, a nie rodzaj źródła ciepła zapisany na tabliczce urządzenia.</p>

        <p>Jeżeli salon traci obliczeniowo 900 W, a aktywna powierzchnia grzewcza wynosi 20 m², podłoga musi przekazać średnio 45 W/m². Tę samą moc można próbować uzyskać przy rozstawie 10, 15 albo 20 cm, lecz każdy wariant będzie wymagał innej średniej temperatury wody i da inny rozkład temperatury na powierzchni. Dlatego poprawny projekt zaczyna się od obciążenia cieplnego zgodnego z metodą EN 12831, następnie przechodzi przez obliczenia wydajności powierzchni według EN 1264, a dopiero później ustala rozstaw i przepływ.</p>

        <div class="rk-sp-verdict">
          <div>
            <span class="rk-sp-eyebrow">Najważniejszy wniosek</span>
            <h3>Gęstszy rozstaw nie oszczędza energii sam z siebie.</h3>
            <p>Może jednak pozwolić przekazać wymaganą moc przy niższej temperaturze zasilania. Mniejsza różnica temperatur między źródłem dolnym a instalacją grzewczą tworzy lepsze warunki termodynamiczne dla pompy ciepła.</p>
          </div>
          <div class="rk-sp-verdict-number" aria-label="Typowy cel temperatury zasilania dla instalacji niskotemperaturowej">
            <b>30–35°C</b>
            <small>częsty zakres projektowy, ale nie uniwersalna gwarancja</small>
          </div>
        </div>

        <div class="rk-sp-formulas">
          <div class="rk-sp-formula">
            <h3>Wymagana moc jednostkowa</h3>
            <span class="rk-sp-formula-code">q<sub>req</sub> = Φ<sub>HL</sub> / A<sub>H</sub></span>
            <small>q<sub>req</sub> — wymagany strumień ciepła [W/m²], Φ<sub>HL</sub> — projektowe obciążenie pomieszczenia [W], A<sub>H</sub> — aktywna powierzchnia podłogi [m²].</small>
          </div>
          <div class="rk-sp-formula">
            <h3>Średnia różnica temperatur</h3>
            <span class="rk-sp-formula-code">Δθ<sub>H</sub> = (θ<sub>V</sub> − θ<sub>R</sub>) / ln[(θ<sub>V</sub> − θ<sub>i</sub>)/(θ<sub>R</sub> − θ<sub>i</sub>)]</span>
            <small>W obliczeniach powierzchni grzewczej liczy się temperatura zasilania, powrotu i pomieszczenia, a nie samo hasło „zasilanie 35°C”.</small>
          </div>
        </div>

        <p>Więcej o granicach temperatury wody opisuję w analizie <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperatury zasilania podłogówki</a>, natomiast metodykę cieplną rozwija opracowanie dotyczące <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normy PN-EN 1264</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-porownanie" aria-labelledby="rk-sp-h-porownanie">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Cztery rozstawy, cztery różne konsekwencje</span>
          <h2 id="rk-sp-h-porownanie">Techniczne porównanie rozstawów rur 5, 10, 15 i 20 cm</h2>
          <p>Żaden z poniższych rozstawów nie jest automatycznie dobry albo zły. Ocenie podlegają równocześnie moc cieplna, temperatura powierzchni, temperatura wody, długość pętli i opór hydrauliczny.</p>
        </div>

        <div class="rk-sp-grid-4">
          <article class="rk-sp-card rk-sp-special">
            <span class="rk-sp-pitch">5 cm</span>
            <h3>Rozstaw specjalny</h3>
            <p>Największe zagęszczenie rur, ale również największe zużycie materiału i liczba obwodów.</p>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>około 21 m rury na 1 m² z zapasem trasowym 5%</span></li>
              <li><span aria-hidden="true"></span><span>strefy brzegowe i małe powierzchnie o dużym obciążeniu</span></li>
              <li><span aria-hidden="true"></span><span>konieczna kontrola promienia gięcia i długości pętli</span></li>
            </ul>
          </article>

          <article class="rk-sp-card rk-sp-recommended">
            <span class="rk-sp-pitch">10 cm</span>
            <h3>Rozstaw gęsty</h3>
            <p>Częsty wybór dla instalacji niskotemperaturowych, ale nadal powinien wynikać z obliczeń.</p>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>około 10,5 m rury na 1 m²</span></li>
              <li><span aria-hidden="true"></span><span>niższa wymagana temperatura wody niż przy 15–20 cm</span></li>
              <li><span aria-hidden="true"></span><span>większa liczba pętli i sekcji rozdzielacza</span></li>
            </ul>
          </article>

          <article class="rk-sp-card">
            <span class="rk-sp-pitch">15 cm</span>
            <h3>Rozstaw pośredni</h3>
            <p>Może być poprawny w dobrze izolowanych pomieszczeniach o umiarkowanym obciążeniu cieplnym.</p>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>około 7,0 m rury na 1 m²</span></li>
              <li><span aria-hidden="true"></span><span>mniejszy koszt materiału i mniej pętli</span></li>
              <li><span aria-hidden="true"></span><span>wymaga sprawdzenia mocy przy wybranej okładzinie</span></li>
            </ul>
          </article>

          <article class="rk-sp-card rk-sp-caution">
            <span class="rk-sp-pitch">20 cm</span>
            <h3>Rozstaw rzadki</h3>
            <p>Nie jest zakazany, lecz ma mniejszą rezerwę mocy i większe różnice temperatury powierzchni.</p>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>około 5,25 m rury na 1 m²</span></li>
              <li><span aria-hidden="true"></span><span>tylko dla niskiego obciążenia potwierdzonego obliczeniami</span></li>
              <li><span aria-hidden="true"></span><span>ryzyko potrzeby podniesienia temperatury zasilania</span></li>
            </ul>
          </article>
        </div>

        <div class="rk-sp-table-wrap">
          <table class="rk-sp-table">
            <thead>
              <tr>
                <th scope="col">Rozstaw</th>
                <th scope="col">Geometria rury</th>
                <th scope="col">Z zapasem 5%</th>
                <th scope="col">Wpływ na temperaturę wody</th>
                <th scope="col">Najczęstsze zastosowanie</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Rozstaw"><strong>5 cm</strong></td>
                <td data-label="Geometria rury">20,0 m/m²</td>
                <td data-label="Z zapasem 5%">21,0 m/m²</td>
                <td data-label="Temperatura wody">najniższa z porównywanych</td>
                <td data-label="Zastosowanie">strefa specjalna, brzegowa, mała aktywna powierzchnia</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>10 cm</strong></td>
                <td data-label="Geometria rury">10,0 m/m²</td>
                <td data-label="Z zapasem 5%">10,5 m/m²</td>
                <td data-label="Temperatura wody">niska przy typowych obciążeniach</td>
                <td data-label="Zastosowanie">łazienki, panele o wyższym oporze, strefy obciążone</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>15 cm</strong></td>
                <td data-label="Geometria rury">6,67 m/m²</td>
                <td data-label="Z zapasem 5%">7,0 m/m²</td>
                <td data-label="Temperatura wody">umiarkowana, zależna od okładziny</td>
                <td data-label="Zastosowanie">dobrze izolowane pokoje o małych stratach</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>20 cm</strong></td>
                <td data-label="Geometria rury">5,0 m/m²</td>
                <td data-label="Z zapasem 5%">5,25 m/m²</td>
                <td data-label="Temperatura wody">najwyższa z porównywanych</td>
                <td data-label="Zastosowanie">pomieszczenia o bardzo niskim obciążeniu, po weryfikacji</td>
              </tr>
            </tbody>
          </table>
        </div>

        <div class="rk-sp-note rk-sp-note-warn">
          <p><strong>Skąd wartości metrów rury?</strong> Dla regularnego pola grzewczego długość geometryczna wynosi w przybliżeniu 1/s, gdzie s jest rozstawem w metrach. Zapas 5% uwzględnia łuki i niedoskonałość geometrii, ale nie obejmuje doprowadzeń od rozdzielacza. Szczegółowe wyjaśnienie zawiera poradnik <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/">ile rury potrzeba na 1 m² ogrzewania podłogowego</a>.</p>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-kalkulator" aria-labelledby="rk-sp-h-kalkulator">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Ten sam pokój, cztery warianty</span>
          <h2 id="rk-sp-h-kalkulator">Interaktywny przykład: dlaczego rozstaw rur przy pompie ciepła jest tak ważny?</h2>
          <p>Ustaw parametry pomieszczenia. Narzędzie porówna jednocześnie rozstawy 5, 10, 15 i 20 cm, aby pokazać kompromis między temperaturą wody, długością rury, liczbą obwodów i hydrauliką.</p>
        </div>

        <div class="rk-sp-lab" aria-label="Interaktywny model porównawczy rozstawu rur">
          <div class="rk-sp-lab-head">
            <h3>Model porównawczy dla rury 16×2 mm</h3>
            <p>Założenie bazowe: mokry system podłogowy, typowa wylewka, woda jako czynnik grzewczy. Obliczenia mają charakter edukacyjny i nie zastępują projektu zgodnego z EN 1264.</p>
          </div>

          <div class="rk-sp-lab-body">
            <div class="rk-sp-controls">
              <div class="rk-sp-control">
                <label for="rk-sp-area">Aktywna powierzchnia <output id="rk-sp-area-out" for="rk-sp-area">20 m²</output></label>
                <input id="rk-sp-area" type="range" min="6" max="50" step="1" value="20">
                <small>Powierzchnia rzeczywiście pokryta rurami, bez stałej zabudowy.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-load">Obciążenie jednostkowe <output id="rk-sp-load-out" for="rk-sp-load">50 W/m²</output></label>
                <input id="rk-sp-load" type="range" min="20" max="100" step="5" value="50">
                <small>Projektowa strata ciepła podzielona przez aktywną powierzchnię.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-floor">Opór okładziny podłogowej</label>
                <select id="rk-sp-floor">
                  <option value="0.01">Płytki / kamień — R 0,01</option>
                  <option value="0.05">Winyl / cienka okładzina — R 0,05</option>
                  <option value="0.10" selected="">Panele / drewno — R 0,10</option>
                  <option value="0.15">Okładzina graniczna — R 0,15</option>
                </select>
                <small>R<sub>λ,B</sub> w m²K/W. Do projektu wpisuje się wartość konkretnego produktu.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-zone">Rodzaj strefy</label>
                <select id="rk-sp-zone">
                  <option value="20|29" selected="">Pokój — 20°C / podłoga maks. 29°C</option>
                  <option value="24|33">Łazienka — 24°C / podłoga maks. 33°C</option>
                  <option value="20|35">Strefa brzegowa — 20°C / podłoga maks. 35°C</option>
                </select>
                <small>Temperatura pomieszczenia i orientacyjna granica temperatury powierzchni.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-delta">Spadek temperatury wody ΔT</label>
                <select id="rk-sp-delta">
                  <option value="3">3 K</option>
                  <option value="5" selected="">5 K</option>
                  <option value="7">7 K</option>
                </select>
                <small>Różnica między zasilaniem i powrotem wpływa na przepływ oraz średnią temperaturę wody.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-loop-max">Przyjęty limit długości pętli</label>
                <select id="rk-sp-loop-max">
                  <option value="80">80 m</option>
                  <option value="90" selected="">90 m</option>
                  <option value="100">100 m</option>
                </select>
                <small>To parametr modelu, nie uniwersalna wartość normowa.</small>
              </div>
            </div>

            <div class="rk-sp-live-summary" id="rk-sp-live-summary" aria-live="polite">Pomieszczenie 20 m² wymaga 1000 W mocy grzewczej, czyli 50 W/m².</div>

            <div class="rk-sp-results" id="rk-sp-results" aria-live="polite"></div>

            <div class="rk-sp-chart-panel" id="rk-sp-wykres">
              <h4>Moc podłogi a rozstaw rur i temperatura zasilania</h4>
              <p class="rk-sp-chart-caption">Wykres aktualizuje się po zmianie okładziny, rodzaju strefy i ΔT. Linia limitu powierzchni pokazuje, że brakującej mocy nie wolno zawsze „dobić” wyższą temperaturą.</p>
              <div class="rk-sp-chart-legend" aria-hidden="true">
                <span><i style="background:#28c9da"></i>30°C</span>
                <span><i style="background:#078fbe"></i>35°C</span>
                <span><i style="background:#ff7438"></i>40°C</span>
                <span><i style="background:#e33d35"></i>45°C</span>
                <span><i style="height:2px;background:#687986"></i>limit powierzchni</span>
              </div>
              <div id="rk-sp-power-chart"></div>
            </div>

            <div class="rk-sp-chart-panel">
              <h4>Wymagana temperatura zasilania i względny indeks warunków pracy pompy</h4>
              <p class="rk-sp-chart-caption">Indeks nie jest katalogowym COP. Porównuje wyłącznie wpływ wymaganego podniesienia temperatury przy tej samej temperaturze źródła 0°C; najlepszy wariant w bieżącym porównaniu otrzymuje 100%.</p>
              <div class="rk-sp-eff-list" id="rk-sp-eff-list" aria-live="polite"></div>
            </div>

            <div class="rk-sp-note">
              <p><strong>Jak czytać wynik?</strong> Najpierw sprawdź, czy moc mieści się w limicie temperatury powierzchni. Następnie oceń temperaturę zasilania, liczbę pętli i opór hydrauliczny. Najniższa temperatura wody nie zawsze oznacza najlepszy projekt, jeśli wymaga nieproporcjonalnej liczby obwodów i rozdzielaczy.</p>
            </div>
          </div>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-wplyw" aria-labelledby="rk-sp-h-wplyw">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Temperatura podnoszenia decyduje o warunkach pracy</span>
          <h2 id="rk-sp-h-wplyw">Wpływ rozstawu rur na temperaturę zasilania i sprawność pompy ciepła</h2>
        </div>

        <p>W pompie ciepła sprężarka przenosi energię z niższego poziomu temperatury na wyższy. Im większa jest różnica między źródłem a temperaturą wymaganą przez instalację, tym trudniejsze są warunki pracy. Dlatego rozstaw rur wpływa na efektywność pośrednio: zmienia zdolność podłogi do przekazania mocy przy określonej temperaturze wody.</p>

        <div class="rk-sp-grid-3">
          <article class="rk-sp-card rk-sp-recommended">
            <span class="rk-sp-pitch">1</span>
            <h3>Gęstszy rozstaw</h3>
            <p>Zmniejsza opór przewodzenia między rurą a powierzchnią i ogranicza różnice temperatury na podłodze.</p>
          </article>
          <article class="rk-sp-card">
            <span class="rk-sp-pitch">2</span>
            <h3>Niższa temperatura wody</h3>
            <p>Ta sama moc może zostać oddana przy mniejszej średniej różnicy temperatur między wodą a pomieszczeniem.</p>
          </article>
          <article class="rk-sp-card rk-sp-special">
            <span class="rk-sp-pitch">3</span>
            <h3>Mniejszy skok temperatury</h3>
            <p>Pompa ciepła pracuje w korzystniejszych warunkach, ale rzeczywisty COP zależy także od temperatury zewnętrznej i konkretnego urządzenia.</p>
          </article>
        </div>

        <div class="rk-sp-note rk-sp-note-warn">
          <p><strong>Nie wpisuję sztywnego „2–3% COP na każdy stopień”.</strong> Taki skrót nie jest uniwersalny. Zmiana zależy od konstrukcji pompy, czynnika chłodniczego, temperatury źródła, modulacji, odszraniania i mapy pracy producenta. Wiarygodne porównanie kosztów wymaga danych urządzenia dla konkretnych punktów pracy.</p>
        </div>

        <p>Rozwinięcie tej zależności znajdziesz w artykule o tym, dlaczego <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niska temperatura zasilania jest korzystna dla podłogówki z pompą ciepła</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-hydraulika" aria-labelledby="rk-sp-h-hydraulika">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Ciepło musi jeszcze przepłynąć przez instalację</span>
          <h2 id="rk-sp-h-hydraulika">Obliczenia przepływu, długości pętli i strat ciśnienia</h2>
          <p>Dobór cieplny i hydrauliczny są nierozłączne. Zagęszczenie rur zwiększa ich łączną długość, dlatego tę samą powierzchnię trzeba podzielić na większą liczbę pętli.</p>
        </div>

        <div class="rk-sp-equation">
          <h3>Trzy równania, które kontrolują projekt</h3>
          <div class="rk-sp-equation-grid">
            <div class="rk-sp-equation-card">
              <b>V̇ ≈ 0,86 · Φ / ΔT</b>
              <small>Przepływ objętościowy w l/h dla wody; Φ w W, ΔT w K.</small>
            </div>
            <div class="rk-sp-equation-card">
              <b>L ≈ A / s · 1,05</b>
              <small>Orientacyjna długość pola grzewczego; doprowadzenia liczy się oddzielnie.</small>
            </div>
            <div class="rk-sp-equation-card">
              <b>Δp = λ · L/D · ρv²/2</b>
              <small>Równanie Darcy’ego-Weisbacha dla straty liniowej rury.</small>
            </div>
          </div>
        </div>

        <p>Przepływ wynika z mocy przenoszonej przez pętlę i przyjętego spadku temperatury. Zbyt mały przepływ zwiększa różnicę między początkiem i końcem obwodu. Zbyt duży przepływ podnosi prędkość oraz opory. Dlatego rotametr nie służy do ustawiania „wszędzie 2 l/min”, lecz do realizacji wartości policzonych dla konkretnej pętli.</p>

        <div class="rk-sp-grid-2">
          <article class="rk-sp-card">
            <h3>Co obejmuje wynik interaktywny?</h3>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>łączną długość pola wraz z 5% zapasu geometrycznego</span></li>
              <li><span aria-hidden="true"></span><span>liczbę pętli wynikającą z przyjętego limitu długości</span></li>
              <li><span aria-hidden="true"></span><span>przepływ całkowity i średni przepływ jednej pętli</span></li>
              <li><span aria-hidden="true"></span><span>orientacyjną stratę rury 16×2 mm z rezerwą 15%</span></li>
            </ul>
          </article>
          <article class="rk-sp-card rk-sp-caution">
            <h3>Czego wynik nie obejmuje?</h3>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>oporów rozdzielacza, zaworów, rotametrów i przewodów zasilających</span></li>
              <li><span aria-hidden="true"></span><span>rzeczywistej długości doprowadzeń do każdego pomieszczenia</span></li>
              <li><span aria-hidden="true"></span><span>indywidualnej chropowatości, temperatury i dodatku glikolu</span></li>
              <li><span aria-hidden="true"></span><span>doboru pompy obiegowej i nastaw równoważących cały układ</span></li>
            </ul>
          </article>
        </div>

        <p>W praktycznym projekcie należy jeszcze porównać najbardziej niekorzystny obwód z dostępną wysokością podnoszenia. Osobno omawiam <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadek temperatury ΔT</a>, dobór <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicy rur ogrzewania podłogowego</a> oraz funkcję <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacza do podłogówki</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-strefy" aria-labelledby="rk-sp-h-strefy">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Jedna reguła nie obsłuży całego domu</span>
          <h2 id="rk-sp-h-strefy">Łazienki, strefy brzegowe i duże przeszklenia</h2>
          <p>Pomieszczenia różnią się temperaturą obliczeniową, aktywną powierzchnią i stratami przez przegrody. To dlatego jednolity rozstaw w całym budynku bywa rozwiązaniem wygodnym wykonawczo, lecz niekoniecznie poprawnym projektowo.</p>
        </div>

        <div class="rk-sp-grid-3">
          <article class="rk-sp-card rk-sp-recommended">
            <span class="rk-sp-pitch">Ł</span>
            <h3>Łazienka</h3>
            <p>Temperatura obliczeniowa jest zwykle wyższa, a aktywną powierzchnię ograniczają wanna, brodzik lub stała zabudowa. Rozstaw 10 cm jest częsty, ale 5 cm nie naprawi zbyt małej powierzchni ani przekroczenia dopuszczalnej temperatury podłogi.</p>
          </article>

          <article class="rk-sp-card rk-sp-special">
            <span class="rk-sp-pitch">B</span>
            <h3>Strefa brzegowa</h3>
            <p>Zagęszczenie rur w pasie przy przegrodzie zewnętrznej może ograniczyć spadek temperatury powierzchni. Szerokość i moc strefy powinny wynikać z rozkładu strat, a nie z automatycznego pasa „metr od okna”.</p>
          </article>

          <article class="rk-sp-card rk-sp-caution">
            <span class="rk-sp-pitch">G</span>
            <h3>Duże przeszklenie</h3>
            <p>Liczy się powierzchnia szyby, współczynnik U, temperatura zewnętrzna, szczelność i geometria pomieszczenia. Nowoczesne przeszklenie nie zawsze wymaga 5 cm, a słabe może wymagać dodatkowego emitera.</p>
          </article>
        </div>

        <div class="rk-sp-note">
          <p><strong>Strefa brzegowa powinna być policzona.</strong> Jeżeli ma inne obciążenie niż część wewnętrzna, można wydzielić ją osobnym obwodem albo odpowiednio poprowadzić zasilanie pętli. Więcej przykładów zawiera opracowanie o <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefie brzegowej w ogrzewaniu podłogowym</a>.</p>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-schematy" aria-labelledby="rk-sp-h-schematy">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Schematy podporządkowane tematowi rozstawu</span>
          <h2 id="rk-sp-h-schematy">Co rozstaw zmienia w przekroju podłogi i układzie pętli?</h2>
          <p>Przekrój nie służy tu do opisywania wszystkich warstw budowlanych. Pokazuje wyłącznie drogę ciepła od rury do pomieszczenia oraz miejsce, w którym opór okładziny i odległość między rurami wpływają na wynik.</p>
        </div>

        <div class="rk-sp-diagram-grid">
          <figure class="rk-sp-diagram">
            <svg viewBox="0 0 520 330" role="img" aria-labelledby="rk-sp-cross-title rk-sp-cross-desc">
              <title id="rk-sp-cross-title">Przekrój ogrzewanej podłogi i droga przepływu ciepła</title>
              <desc id="rk-sp-cross-desc">Dwie rury w warstwie jastrychu, okładzina podłogowa nad nimi oraz strzałki przepływu ciepła do pomieszczenia.</desc>
              <rect x="20" y="35" width="480" height="54" rx="8" fill="#eafcff" stroke="#078fbe" stroke-width="2"></rect>
              <text x="260" y="67" text-anchor="middle" fill="#14384d" font-size="18" font-weight="800">okładzina i jej opór Rλ,B</text>
              <rect x="20" y="90" width="480" height="150" fill="#e8edf0" stroke="#b5c6ce" stroke-width="2"></rect>
              <text x="260" y="120" text-anchor="middle" fill="#465866" font-size="16" font-weight="700">jastrych — rozprowadzenie ciepła</text>
              <circle cx="155" cy="190" r="28" fill="#ff7438" stroke="#e33d35" stroke-width="6"></circle>
              <circle cx="365" cy="190" r="28" fill="#ff7438" stroke="#e33d35" stroke-width="6"></circle>
              <path d="M155 158 C145 125 135 112 125 96" fill="none" stroke="#078fbe" stroke-width="5" stroke-linecap="round"></path>
              <path d="M365 158 C375 125 385 112 395 96" fill="none" stroke="#078fbe" stroke-width="5" stroke-linecap="round"></path>
              <path d="M220 190 H300" stroke="#102536" stroke-width="3"></path>
              <path d="M220 181 V199 M300 181 V199" stroke="#102536" stroke-width="3"></path>
              <text x="260" y="178" text-anchor="middle" fill="#102536" font-size="17" font-weight="900">rozstaw T</text>
              <rect x="20" y="241" width="480" height="55" rx="0 0 8 8" fill="#dce8ee" stroke="#b5c6ce" stroke-width="2"></rect>
              <text x="260" y="274" text-anchor="middle" fill="#465866" font-size="16" font-weight="700">izolacja ograniczająca strumień w dół</text>
            </svg>
            <figcaption>Większy rozstaw wydłuża boczną drogę przewodzenia ciepła i zwiększa różnice temperatury na powierzchni. Okładzina o większym oporze dodatkowo ogranicza strumień do pomieszczenia.</figcaption>
          </figure>

          <figure class="rk-sp-diagram">
            <svg viewBox="0 0 520 330" role="img" aria-labelledby="rk-sp-loop-title rk-sp-loop-desc">
              <title id="rk-sp-loop-title">Porównanie pola rur przy rozstawie 10 i 20 cm</title>
              <desc id="rk-sp-loop-desc">Dwa pola o tej samej powierzchni. Po lewej więcej linii rur w rozstawie 10 cm, po prawej mniej linii w rozstawie 20 cm.</desc>
              <rect x="18" y="36" width="226" height="250" rx="14" fill="#f5f9fb" stroke="#28c9da" stroke-width="3"></rect>
              <rect x="276" y="36" width="226" height="250" rx="14" fill="#fff4ed" stroke="#ff7438" stroke-width="3"></rect>
              <text x="131" y="68" text-anchor="middle" fill="#102536" font-size="19" font-weight="900">10 cm</text>
              <text x="389" y="68" text-anchor="middle" fill="#102536" font-size="19" font-weight="900">20 cm</text>
              <path d="M50 92 H212 V116 H50 V140 H212 V164 H50 V188 H212 V212 H50 V236 H212 V260 H50" fill="none" stroke="#078fbe" stroke-width="8" stroke-linejoin="round" stroke-linecap="round"></path>
              <path d="M308 100 H470 V150 H308 V200 H470 V250 H308" fill="none" stroke="#e33d35" stroke-width="8" stroke-linejoin="round" stroke-linecap="round"></path>
              <text x="131" y="310" text-anchor="middle" fill="#465866" font-size="15" font-weight="700">więcej rury i pętli</text>
              <text x="389" y="310" text-anchor="middle" fill="#465866" font-size="15" font-weight="700">mniejsza rezerwa mocy</text>
            </svg>
            <figcaption>Ta sama powierzchnia przy 10 cm zużywa około dwa razy więcej rury niż przy 20 cm. Projekt musi więc równocześnie dobrać liczbę pętli i sekcji rozdzielacza.</figcaption>
          </figure>
        </div>

        <p>Na schemacie widoczna jest także przyczyna, dla której nie wolno oceniać rozstawu bez okładziny. Panele o dużym oporze cieplnym mogą wymusić niższą odległość między rurami lub wyższą temperaturę wody, natomiast cienka ceramika przekazuje ciepło łatwiej. Nie oznacza to jednak automatycznie, że pod płytkami zawsze można zastosować 15 albo 20 cm.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-dobor" aria-labelledby="rk-sp-h-dobor">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Procedura zamiast zasady „wszędzie 10 cm”</span>
          <h2 id="rk-sp-h-dobor">Jak prawidłowo dobrać rozstaw rur do pompy ciepła?</h2>
        </div>

        <ol class="rk-sp-checklist" id="rk-sp-selection-checklist">
          <li><div><strong>Oblicz projektowe obciążenie każdego pomieszczenia.</strong><span>Średnia dla całego domu nie pokaże problemu małej łazienki albo narożnego pokoju z dużą powierzchnią szkła.</span></div></li>
          <li><div><strong>Wyznacz aktywną powierzchnię grzewczą.</strong><span>Stała zabudowa może istotnie zmniejszyć pole, z którego podłoga rzeczywiście oddaje ciepło.</span></div></li>
          <li><div><strong>Ustal opór cieplny planowanej okładziny.</strong><span>Do obliczeń przyjmij wartość konkretnego zestawu: okładzina, podkład i ewentualne warstwy pośrednie.</span></div></li>
          <li><div><strong>Porównaj wydajność rozstawów przy temperaturze projektowej.</strong><span>Sprawdź 5, 10, 15 i 20 cm zamiast zakładać jeden wariant dla całego budynku.</span></div></li>
          <li><div><strong>Zweryfikuj temperaturę powierzchni podłogi.</strong><span>Jeżeli limit zostaje przekroczony, samo dalsze podnoszenie temperatury zasilania nie jest poprawnym rozwiązaniem.</span></div></li>
          <li><div><strong>Podziel powierzchnię na hydraulicznie wykonalne pętle.</strong><span>Uwzględnij doprowadzenia, średnicę rury, wymagane przepływy i najbardziej niekorzystny obwód.</span></div></li>
          <li><div><strong>Sprawdź punkt pracy pompy obiegowej i nastawy rozdzielacza.</strong><span>Projekt kończy się wartościami przepływu dla każdej sekcji, a nie samym rysunkiem rury na rzucie.</span></div></li>
        </ol>

        <div class="rk-sp-note rk-sp-note-warn">
          <p><strong>Rozstaw 10 czy 15 cm?</strong> Odpowiedź może być inna w każdym pomieszczeniu. Osobne porównanie tych dwóch wariantów znajdziesz w artykule <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur ogrzewania podłogowego co 10 czy 15 cm</a>.</p>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-faq" aria-labelledby="rk-sp-h-faq">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Pytania inwestorów i wykonawców</span>
          <h2 id="rk-sp-h-faq">FAQ – rozstaw rur ogrzewania podłogowego przy pompie ciepła</h2>
        </div>

        <div class="rk-sp-faq">
          <details id="rk-sp-faq-1">
            <summary>Jaki rozstaw rur ogrzewania podłogowego jest najlepszy przy pompie ciepła?</summary>
            <div class="rk-sp-faq-answer"><p>Nie istnieje jeden najlepszy rozstaw dla wszystkich pomieszczeń. W wielu nowych domach stosuje się 10 lub 15 cm, ale ostateczny wybór powinien wynikać z obciążenia cieplnego, aktywnej powierzchni, oporu okładziny, temperatury wody i obliczeń hydraulicznych.</p></div>
          </details>

          <details id="rk-sp-faq-2">
            <summary>Czy przy pompie ciepła rury zawsze trzeba układać co 10 cm?</summary>
            <div class="rk-sp-faq-answer"><p>Nie. Rozstaw 10 cm zwiększa wydajność przy niskiej temperaturze wody, lecz w pomieszczeniu o małej stracie ciepła poprawny może być również rozstaw 15 cm. Zastosowanie 10 cm bez obliczeń może niepotrzebnie zwiększyć liczbę pętli i rozdzielaczy.</p></div>
          </details>

          <details id="rk-sp-faq-3">
            <summary>Czy rozstaw 15 cm będzie wystarczający dla pompy ciepła?</summary>
            <div class="rk-sp-faq-answer"><p>Może być wystarczający, jeżeli przy projektowej temperaturze zasilania podłoga pokrywa obciążenie pomieszczenia bez przekroczenia dopuszczalnej temperatury powierzchni. Sam fakt zastosowania pompy ciepła nie przesądza o wyborze 10 albo 15 cm.</p></div>
          </details>

          <details id="rk-sp-faq-4">
            <summary>Kiedy można zastosować rozstaw rur co 20 cm?</summary>
            <div class="rk-sp-faq-answer"><p>Rozstaw 20 cm można rozważyć w pomieszczeniach o bardzo małym obciążeniu i korzystnej okładzinie, po potwierdzeniu wydajności. Trzeba również ocenić równomierność temperatury powierzchni i ewentualną konieczność podniesienia temperatury wody.</p></div>
          </details>

          <details id="rk-sp-faq-5">
            <summary>Czy warto układać podłogówkę co 5 cm?</summary>
            <div class="rk-sp-faq-answer"><p>Rozstaw 5 cm jest rozwiązaniem specjalnym. Zwiększa zużycie rury do około 21 m/m² wraz z niewielkim zapasem, wymaga większej liczby krótkich pętli i kontroli promienia gięcia. Najczęściej wykorzystuje się go lokalnie, a nie na całej powierzchni domu.</p></div>
          </details>

          <details id="rk-sp-faq-6">
            <summary>Jaki rozstaw rur zastosować pod panelami, a jaki pod płytkami?</summary>
            <div class="rk-sp-faq-answer"><p>Rodzaj okładziny jest tylko jednym z parametrów. Panele i podkład mają zwykle większy opór cieplny niż płytki, dlatego mogą wymagać gęstszego rozstawu lub wyższej temperatury wody. Nie można jednak przypisać rozstawu wyłącznie na podstawie nazwy materiału.</p></div>
          </details>

          <details id="rk-sp-faq-7">
            <summary>Ile rury potrzeba na 1 m² podłogówki?</summary>
            <div class="rk-sp-faq-answer"><p>Orientacyjnie z zapasem geometrycznym 5% potrzeba około 21 m/m² przy rozstawie 5 cm, 10,5 m/m² przy 10 cm, 7 m/m² przy 15 cm oraz 5,25 m/m² przy 20 cm. Do wyniku należy dodać doprowadzenia do rozdzielacza.</p></div>
          </details>

          <details id="rk-sp-faq-8">
            <summary>Jak rozstaw rur wpływa na temperaturę zasilania pompy ciepła?</summary>
            <div class="rk-sp-faq-answer"><p>Przy tej samej mocy i konstrukcji podłogi gęstszy rozstaw zwykle pozwala zastosować niższą średnią temperaturę wody. Dokładna różnica zależy od budowy systemu, okładziny, temperatury powrotu oraz wymaganej mocy jednostkowej.</p></div>
          </details>

          <details id="rk-sp-faq-9">
            <summary>Czy mniejszy rozstaw rur zawsze podnosi COP pompy ciepła?</summary>
            <div class="rk-sp-faq-answer"><p>Nie bezpośrednio. Korzyść pojawia się wtedy, gdy gęstszy rozstaw umożliwia realne obniżenie temperatury zasilania. Rzeczywisty COP zależy również od temperatury źródła, konstrukcji urządzenia, modulacji, odszraniania i sterowania.</p></div>
          </details>

          <details id="rk-sp-faq-10">
            <summary>Jaki rozstaw rur zastosować w łazience?</summary>
            <div class="rk-sp-faq-answer"><p>W łazienkach często stosuje się 10 cm ze względu na wyższą temperaturę obliczeniową i małą aktywną powierzchnię. Jeżeli podłoga nie pokrywa obciążenia bez przekroczenia temperatury powierzchni, potrzebny może być dodatkowy emiter zamiast dalszego zagęszczania rur.</p></div>
          </details>

          <details id="rk-sp-faq-11">
            <summary>Czy przy dużym przeszkleniu trzeba wykonać strefę brzegową co 5 cm?</summary>
            <div class="rk-sp-faq-answer"><p>Nie zawsze. Strefa brzegowa powinna wynikać z obliczonej straty przez przeszklenie i rozkładu temperatury w pomieszczeniu. W nowym, ciepłym oknie może wystarczyć standardowy rozstaw, natomiast przy dużym obciążeniu nawet 5 cm może nie zastąpić dodatkowego emitera.</p></div>
          </details>

          <details id="rk-sp-faq-12">
            <summary>Jaka powinna być maksymalna długość pętli przy rurze 16×2 mm?</summary>
            <div class="rk-sp-faq-answer"><p>Nie ma jednej długości właściwej dla każdego układu. W praktyce często przyjmuje się około 80–100 m łącznie z doprowadzeniami, ale prawidłowy limit wynika z przepływu, średnicy wewnętrznej, oporu pętli, dostępnego ciśnienia i możliwości zrównoważenia instalacji.</p></div>
          </details>

          <details id="rk-sp-faq-13">
            <summary>Czy można zastosować jeden rozstaw rur w całym domu?</summary>
            <div class="rk-sp-faq-answer"><p>Można, jeżeli obliczenia potwierdzą spełnienie wymagań wszystkich pomieszczeń. Najczęściej jednak łazienki, pomieszczenia narożne i strefy przy dużych przeszkleniach wymagają innego podejścia niż sypialnie lub komunikacja.</p></div>
          </details>
        </div>
      </section>

      <div class="rk-sp-cta" aria-label="Projekt ogrzewania podłogowego">
        <div>
          <h3>Potrzebujesz rozstawów i przepływów wynikających z obliczeń?</h3>
          <p>Projekt określa obciążenie każdego pomieszczenia, rozstaw i przebieg rur, liczbę pętli, temperaturę pracy, wymagane przepływy oraz opory hydrauliczne instalacji.</p>
        </div>
        <div class="rk-sp-cta-actions">
          <a class="rk-sp-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
          <small>Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl, serwisu należącego do autora artykułu.</small>
        </div>
      </div>

      <div class="rk-sp-sources" aria-label="Źródła techniczne opracowania">
        <strong>Źródła i podstawa techniczna opracowania</strong>
        Metodyka cieplna: <a href="https://www.dinmedia.de/en/standard/din-en-1264-2/332537063" target="_blank" rel="noopener noreferrer">DIN Media – EN 1264-2:2021</a>, <a href="https://www.dinmedia.de/en/standard/din-en-1264-3/332537135" target="_blank" rel="noopener noreferrer">DIN Media – EN 1264-3:2021</a> oraz <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="noopener noreferrer">ISO 11855-2:2021</a>. Obciążenie cieplne: <a href="https://www.dinmedia.de/en/standard/din-en-12831-1/261292587" target="_blank" rel="noopener noreferrer">DIN Media – EN 12831-1:2017</a>. Wpływ różnicy temperatur na pompy ciepła: <a href="https://publications.jrc.ec.europa.eu/repository/bitstream/JRC99264/2015%20jrc%20geothermal%20energy%20status%20report_online.pdf" target="_blank" rel="noopener noreferrer">Joint Research Centre – Geothermal Energy Status Report</a>. Hydraulika: <a href="https://ecommons.udayton.edu/cgi/viewcontent.cgi?article=1013&amp;context=cee_coursenotes" target="_blank" rel="noopener noreferrer">University of Dayton – Head Loss in Pipes</a> oraz <a href="https://webbook.nist.gov/chemistry/fluid/" target="_blank" rel="noopener noreferrer">NIST – Thermophysical Properties of Fluid Systems</a>.
      </div>

      <aside class="rk-sp-author-box" aria-labelledby="rk-sp-author-title" itemprop="author" itemscope="" itemtype="https://schema.org/Person">
        <div class="rk-sp-author-head">
          <div>
            <h2 id="rk-sp-author-title">Autor opracowania</h2>
            <p>Praktyka projektowa, wiedza techniczna i język zrozumiały dla inwestora.</p>
          </div>
          <span class="rk-sp-author-badge" aria-label="Doświadczenie, eksperckość, autorytet i wiarygodność w branży HVAC">E-E-A-T • HVAC</span>
        </div>

        <div class="rk-sp-author-layout">
          <div class="rk-sp-author-profile">
            <img decoding="async" class="rk-sp-author-photo" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych i specjalista ogrzewania podłogowego" width="180" height="180" loading="lazy" itemprop="image">
            <h3 class="rk-sp-author-name" itemprop="name">Robert Kucharski</h3>
            <span class="rk-sp-author-role" itemprop="jobTitle">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</span>

            <div class="rk-sp-author-links" aria-label="Profile Roberta Kucharskiego">
              <a class="rk-sp-author-link" href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">Facebook</a>
              <a class="rk-sp-author-link" href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">LinkedIn</a>
              <a class="rk-sp-author-link" href="https://projekt-ogrzewania.pl/author/admin3399/" itemprop="url">Profil autora</a>
            </div>
          </div>

          <div class="rk-sp-author-main">
            <blockquote class="rk-sp-author-quote">
              <span class="rk-sp-author-quote-mark" aria-hidden="true">“</span>
              <p>Przy pompie ciepła rozstaw rur nie jest kwestią estetyki ani przyzwyczajenia wykonawcy. To parametr, który decyduje, czy wymagana moc zostanie przekazana przy niskiej temperaturze wody, czy inwestor będzie zmuszony podnosić temperaturę zasilania.</p>
              <footer>Robert Kucharski — autor i projektant instalacji</footer>
            </blockquote>

            <div class="rk-sp-author-tabs" role="tablist" aria-label="Szczegółowe informacje o autorze">
              <button class="rk-sp-author-tab" id="rk-sp-author-tab-about" type="button" role="tab" aria-selected="true" aria-controls="rk-sp-author-panel-about">O autorze</button>
              <button class="rk-sp-author-tab" id="rk-sp-author-tab-experience" type="button" role="tab" aria-selected="false" aria-controls="rk-sp-author-panel-experience" tabindex="-1">Doświadczenie</button>
              <button class="rk-sp-author-tab" id="rk-sp-author-tab-portals" type="button" role="tab" aria-selected="false" aria-controls="rk-sp-author-panel-portals" tabindex="-1">Portale</button>
            </div>

            <div class="rk-sp-author-panels">
              <div class="rk-sp-author-panel" id="rk-sp-author-panel-about" role="tabpanel" aria-labelledby="rk-sp-author-tab-about" itemprop="description">
                <p>Specjalizuję się w projektowaniu wodnego ogrzewania podłogowego, obliczeniach obciążenia cieplnego i hydrauliki instalacji. Łączę wymagania techniczne z praktycznym spojrzeniem inwestora: dokumentacja ma być policzona, czytelna i możliwa do poprawnego wykonania.</p>
              </div>

              <div class="rk-sp-author-panel" id="rk-sp-author-panel-experience" role="tabpanel" aria-labelledby="rk-sp-author-tab-experience" hidden="">
                <p>W projektach określam straty ciepła poszczególnych pomieszczeń, temperatury pracy, rozstawy, długości i przebieg pętli, wymagane przepływy, opory hydrauliczne, liczbę sekcji rozdzielaczy oraz założenia regulacji. Publikacje techniczne opieram na tej samej kolejności obliczeń, która obowiązuje przy przygotowaniu dokumentacji dla konkretnego budynku.</p>
                <p itemprop="knowsAbout">Zakres specjalizacji: ogrzewanie podłogowe, pompy ciepła, hydraulika instalacji, obliczenia OZC, systemy HVAC i efektywność energetyczna budynków.</p>
              </div>

              <div class="rk-sp-author-panel" id="rk-sp-author-panel-portals" role="tabpanel" aria-labelledby="rk-sp-author-tab-portals" hidden="">
                <p>Jestem właścicielem trzech serwisów branżowych. Informację tę podaję jawnie, aby czytelnik znał autorstwo opracowania oraz kontekst linkowania między portalami.</p>
                <div class="rk-sp-portal-list">
                  <a href="https://projekt-ogrzewania.pl/" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">Projekt-Ogrzewania.pl</a>
                  <a href="https://remont.biz.pl/" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">Remont.biz.pl</a>
                  <a href="https://sobir.pl/" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">Sobir.pl</a>
                </div>
              </div>
            </div>
          </div>
        </div>
      </aside>

      <p class="rk-sp-disclaimer"><strong>Nota techniczna:</strong> Interaktywny moduł służy do porównania wpływu rozstawu przy jednakowych założeniach. Współczynniki zastępcze opisują typowy mokry system z rurą 16×2 mm i nie są charakterystyką konkretnego produktu. Projekt wykonawczy powinien wykorzystywać zweryfikowane dane systemowe, rzeczywistą konstrukcję podłogi, obliczenia EN 1264, obciążenie cieplne EN 12831 i pełny bilans hydrauliczny.</p>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#article",
      "url": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/",
      "headline": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła.",
      "alternativeHeadline": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła – 5, 10, 15 czy 20 cm?",
      "description": "Techniczny poradnik o rozstawie rur podłogówki przy pompie ciepła: moc podłogi, temperatura zasilania, długość pętli, przepływ, opory i kalkulator porównawczy.",
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#webpage"
      },
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "datePublished": "2025-03-03",
      "dateModified": "2026-08-22",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "proficiencyLevel": "Intermediate",
      "articleSection": [
        "Ogrzewanie podłogowe",
        "Pompy ciepła",
        "Projektowanie instalacji",
        "Hydraulika instalacji",
        "Efektywność energetyczna",
        "Normy techniczne"
      ],
      "keywords": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła, jaki rozstaw rur do podłogówki przy pompie ciepła, rozstaw rur 10 czy 15 cm, rozstaw podłogówki co 20 cm, podłogówka co 5 cm, ile rury na m2, temperatura zasilania pompy ciepła, długość pętli podłogówki, przepływ podłogówki, opory hydrauliczne",
      "about": [
        {
          "@type": "Thing",
          "name": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła"
        },
        {
          "@type": "Thing",
          "name": "Wodne ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Pompa ciepła"
        },
        {
          "@type": "Thing",
          "name": "Hydraulika instalacji grzewczych"
        }
      ],
      "mentions": [
        {
          "@type": "DefinedTerm",
          "name": "Rozstaw rur",
          "description": "Odległość osiowa między sąsiednimi przewodami ogrzewania podłogowego."
        },
        {
          "@type": "DefinedTerm",
          "name": "Projektowe obciążenie cieplne",
          "description": "Moc potrzebna do utrzymania wymaganej temperatury wewnętrznej w projektowych warunkach zewnętrznych."
        },
        {
          "@type": "DefinedTerm",
          "name": "Średnia logarytmiczna różnica temperatur",
          "description": "Różnica temperatur medium grzewczego względem pomieszczenia uwzględniająca temperaturę zasilania i powrotu."
        },
        {
          "@type": "Thing",
          "name": "EN 1264:2021"
        },
        {
          "@type": "Thing",
          "name": "EN 12831-1:2017"
        },
        {
          "@type": "Thing",
          "name": "ISO 11855-2:2021"
        },
        {
          "@type": "Thing",
          "name": "Równanie Darcy-Weisbacha"
        }
      ],
      "citation": [
        {
          "@type": "CreativeWork",
          "name": "DIN EN 1264-2:2021 – Floor heating: thermal output",
          "url": "https://www.dinmedia.de/en/standard/din-en-1264-2/332537063"
        },
        {
          "@type": "CreativeWork",
          "name": "DIN EN 1264-3:2021 – Dimensioning",
          "url": "https://www.dinmedia.de/en/standard/din-en-1264-3/332537135"
        },
        {
          "@type": "CreativeWork",
          "name": "ISO 11855-2:2021 – Determination of design heating and cooling capacity",
          "url": "https://www.iso.org/standard/74683.html"
        },
        {
          "@type": "CreativeWork",
          "name": "DIN EN 12831-1:2017 – Method for calculation of design heat load",
          "url": "https://www.dinmedia.de/en/standard/din-en-12831-1/261292587"
        },
        {
          "@type": "Report",
          "name": "2015 JRC Geothermal Energy Status Report",
          "url": "https://publications.jrc.ec.europa.eu/repository/bitstream/JRC99264/2015%20jrc%20geothermal%20energy%20status%20report_online.pdf"
        },
        {
          "@type": "CreativeWork",
          "name": "Head Loss in Pipes – University of Dayton",
          "url": "https://ecommons.udayton.edu/cgi/viewcontent.cgi?article=1013&context=cee_coursenotes"
        },
        {
          "@type": "WebPage",
          "name": "Thermophysical Properties of Fluid Systems – NIST",
          "url": "https://webbook.nist.gov/chemistry/fluid/"
        }
      ],
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#calculator"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-selection-checklist"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-1"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-2"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-3"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-4"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-5"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-6"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-7"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-8"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-9"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-10"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-11"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-12"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-13"
        }
      ]
    },
    {
      "@type": [
        "WebPage",
        "FAQPage"
      ],
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#webpage",
      "url": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/",
      "name": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła.",
      "description": "Porównanie rozstawów 5, 10, 15 i 20 cm: moc podłogi, temperatura wody, długość pętli, przepływ, opory i interaktywny przykład.",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#breadcrumb"
      },
      "datePublished": "2025-03-03",
      "dateModified": "2026-08-22",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-1"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-2"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-3"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-4"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-5"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-6"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-7"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-8"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-9"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-10"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-11"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-12"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-13"
        }
      ],
      "potentialAction": {
        "@type": "ReadAction",
        "target": [
          "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/"
        ]
      }
    },
    {
      "@type": "SoftwareApplication",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#calculator",
      "name": "Porównywarka rozstawu rur ogrzewania podłogowego przy pompie ciepła",
      "description": "Interaktywny model porównujący rozstawy 5, 10, 15 i 20 cm pod względem wymaganej temperatury zasilania, długości rury, liczby pętli, przepływu i orientacyjnej straty ciśnienia.",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Engineering calculator",
      "operatingSystem": "Web browser",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#article"
      },
      "featureList": [
        "Porównanie rozstawów 5, 10, 15 i 20 cm",
        "Orientacyjna temperatura zasilania",
        "Długość rury i liczba pętli",
        "Przepływ całkowity i przepływ pętli",
        "Orientacyjna strata ciśnienia rury 16×2 mm",
        "Wykres mocy podłogi",
        "Względny indeks warunków pracy pompy ciepła"
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "caption": "Robert Kucharski – projektant instalacji sanitarnych i specjalista HVAC"
      },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista branży budowlano-instalacyjnej",
      "description": "Projektant instalacji sanitarnych, specjalista ogrzewania podłogowego, hydrauliki instalacji, obliczeń obciążenia cieplnego i systemów HVAC. Właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl i Sobir.pl.",
      "worksFor": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "affiliation": [
        {
          "@id": "https://projekt-ogrzewania.pl/#website"
        },
        {
          "@id": "https://remont.biz.pl/#website"
        },
        {
          "@id": "https://sobir.pl/#website"
        }
      ],
      "knowsAbout": [
        "HVAC",
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "projektowanie instalacji sanitarnych",
        "hydraulika instalacji grzewczych",
        "obliczenia OZC",
        "EN 1264",
        "efektywność energetyczna"
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "logo": {
        "@type": "ImageObject",
        "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"
      },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebSite",
      "@id": "https://remont.biz.pl/#website",
      "url": "https://remont.biz.pl/",
      "name": "Remont.biz.pl",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebSite",
      "@id": "https://sobir.pl/#website",
      "url": "https://sobir.pl/",
      "name": "Sobir.pl",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła",
          "item": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/"
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-selection-checklist",
      "name": "Procedura doboru rozstawu rur ogrzewania podłogowego do pompy ciepła",
      "numberOfItems": 7,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Obliczenie obciążenia cieplnego",
          "description": "Określenie projektowej straty ciepła każdego pomieszczenia."
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Aktywna powierzchnia grzewcza",
          "description": "Wyznaczenie powierzchni rzeczywiście dostępnej dla rur."
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Opór cieplny okładziny",
          "description": "Przyjęcie oporu konkretnego zestawu okładziny i podkładu."
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Porównanie wydajności rozstawów",
          "description": "Sprawdzenie 5, 10, 15 i 20 cm przy projektowej temperaturze wody."
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Temperatura powierzchni podłogi",
          "description": "Weryfikacja granicy komfortu i bezpieczeństwa okładziny."
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Podział na pętle",
          "description": "Dobór liczby obwodów, długości i średnicy rur."
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Bilans hydrauliczny",
          "description": "Obliczenie przepływów, oporów, punktu pracy pompy i nastaw rozdzielacza."
        }
      ]
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-1",
      "name": "Jaki rozstaw rur ogrzewania podłogowego jest najlepszy przy pompie ciepła?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie istnieje jeden najlepszy rozstaw dla wszystkich pomieszczeń. W wielu nowych domach stosuje się 10 lub 15 cm, ale ostateczny wybór powinien wynikać z obciążenia cieplnego, aktywnej powierzchni, oporu okładziny, temperatury wody i obliczeń hydraulicznych."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-2",
      "name": "Czy przy pompie ciepła rury zawsze trzeba układać co 10 cm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie. Rozstaw 10 cm zwiększa wydajność przy niskiej temperaturze wody, lecz w pomieszczeniu o małej stracie ciepła poprawny może być również rozstaw 15 cm. Zastosowanie 10 cm bez obliczeń może niepotrzebnie zwiększyć liczbę pętli i rozdzielaczy."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-3",
      "name": "Czy rozstaw 15 cm będzie wystarczający dla pompy ciepła?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Może być wystarczający, jeżeli przy projektowej temperaturze zasilania podłoga pokrywa obciążenie pomieszczenia bez przekroczenia dopuszczalnej temperatury powierzchni. Sam fakt zastosowania pompy ciepła nie przesądza o wyborze 10 albo 15 cm."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-4",
      "name": "Kiedy można zastosować rozstaw rur co 20 cm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Rozstaw 20 cm można rozważyć w pomieszczeniach o bardzo małym obciążeniu i korzystnej okładzinie, po potwierdzeniu wydajności. Trzeba również ocenić równomierność temperatury powierzchni i ewentualną konieczność podniesienia temperatury wody."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-5",
      "name": "Czy warto układać podłogówkę co 5 cm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Rozstaw 5 cm jest rozwiązaniem specjalnym. Zwiększa zużycie rury do około 21 m/m² wraz z niewielkim zapasem, wymaga większej liczby krótkich pętli i kontroli promienia gięcia. Najczęściej wykorzystuje się go lokalnie, a nie na całej powierzchni domu."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-6",
      "name": "Jaki rozstaw rur zastosować pod panelami, a jaki pod płytkami?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Rodzaj okładziny jest tylko jednym z parametrów. Panele i podkład mają zwykle większy opór cieplny niż płytki, dlatego mogą wymagać gęstszego rozstawu lub wyższej temperatury wody. Nie można jednak przypisać rozstawu wyłącznie na podstawie nazwy materiału."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-7",
      "name": "Ile rury potrzeba na 1 m² podłogówki?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Orientacyjnie z zapasem geometrycznym 5% potrzeba około 21 m/m² przy rozstawie 5 cm, 10,5 m/m² przy 10 cm, 7 m/m² przy 15 cm oraz 5,25 m/m² przy 20 cm. Do wyniku należy dodać doprowadzenia do rozdzielacza."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-8",
      "name": "Jak rozstaw rur wpływa na temperaturę zasilania pompy ciepła?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Przy tej samej mocy i konstrukcji podłogi gęstszy rozstaw zwykle pozwala zastosować niższą średnią temperaturę wody. Dokładna różnica zależy od budowy systemu, okładziny, temperatury powrotu oraz wymaganej mocy jednostkowej."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-9",
      "name": "Czy mniejszy rozstaw rur zawsze podnosi COP pompy ciepła?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie bezpośrednio. Korzyść pojawia się wtedy, gdy gęstszy rozstaw umożliwia realne obniżenie temperatury zasilania. Rzeczywisty COP zależy również od temperatury źródła, konstrukcji urządzenia, modulacji, odszraniania i sterowania."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-10",
      "name": "Jaki rozstaw rur zastosować w łazience?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "W łazienkach często stosuje się 10 cm ze względu na wyższą temperaturę obliczeniową i małą aktywną powierzchnię. Jeżeli podłoga nie pokrywa obciążenia bez przekroczenia temperatury powierzchni, potrzebny może być dodatkowy emiter zamiast dalszego zagęszczania rur."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-11",
      "name": "Czy przy dużym przeszkleniu trzeba wykonać strefę brzegową co 5 cm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie zawsze. Strefa brzegowa powinna wynikać z obliczonej straty przez przeszklenie i rozkładu temperatury w pomieszczeniu. W nowym, ciepłym oknie może wystarczyć standardowy rozstaw, natomiast przy dużym obciążeniu nawet 5 cm może nie zastąpić dodatkowego emitera."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-12",
      "name": "Jaka powinna być maksymalna długość pętli przy rurze 16×2 mm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie ma jednej długości właściwej dla każdego układu. W praktyce często przyjmuje się około 80–100 m łącznie z doprowadzeniami, ale prawidłowy limit wynika z przepływu, średnicy wewnętrznej, oporu pętli, dostępnego ciśnienia i możliwości zrównoważenia instalacji."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-13",
      "name": "Czy można zastosować jeden rozstaw rur w całym domu?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Można, jeżeli obliczenia potwierdzą spełnienie wymagań wszystkich pomieszczeń. Najczęściej jednak łazienki, pomieszczenia narożne i strefy przy dużych przeszkleniach wymagają innego podejścia niż sypialnie lub komunikacja."
      }
    }
  ]
}
</script>

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

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

    var progress = root.querySelector(".rk-sp-progress");
    var areaInput = root.querySelector("#rk-sp-area");
    var areaOutput = root.querySelector("#rk-sp-area-out");
    var loadInput = root.querySelector("#rk-sp-load");
    var loadOutput = root.querySelector("#rk-sp-load-out");
    var floorInput = root.querySelector("#rk-sp-floor");
    var zoneInput = root.querySelector("#rk-sp-zone");
    var deltaInput = root.querySelector("#rk-sp-delta");
    var loopMaxInput = root.querySelector("#rk-sp-loop-max");
    var liveSummary = root.querySelector("#rk-sp-live-summary");
    var resultsHost = root.querySelector("#rk-sp-results");
    var chartHost = root.querySelector("#rk-sp-power-chart");
    var efficiencyHost = root.querySelector("#rk-sp-eff-list");

    var configs = [
      { pitch: 5, spacingResistance: 0.030, label: "specjalny" },
      { pitch: 10, spacingResistance: 0.045, label: "gęsty" },
      { pitch: 15, spacingResistance: 0.065, label: "pośredni" },
      { pitch: 20, spacingResistance: 0.090, label: "rzadki" }
    ];

    var chartSeries = [
      { supply: 30, color: "#28c9da" },
      { supply: 35, color: "#078fbe" },
      { supply: 40, color: "#ff7438" },
      { supply: 45, color: "#e33d35" }
    ];

    var number0 = new Intl.NumberFormat("pl-PL", { maximumFractionDigits: 0 });
    var number1 = new Intl.NumberFormat("pl-PL", { minimumFractionDigits: 1, maximumFractionDigits: 1 });

    function readState() {
      var zone = zoneInput.value.split("|").map(Number);
      return {
        area: Number(areaInput.value),
        load: Number(loadInput.value),
        floorResistance: Number(floorInput.value),
        roomTemperature: zone[0],
        maxFloorTemperature: zone[1],
        delta: Number(deltaInput.value),
        loopMax: Number(loopMaxInput.value)
      };
    }

    function logMeanDifference(supply, returnTemperature, roomTemperature) {
      var upper = supply - roomTemperature;
      var lower = returnTemperature - roomTemperature;
      if (upper <= 0 || lower <= 0) return 0;
      if (Math.abs(upper - lower) < 0.000001) return upper;
      return (upper - lower) / Math.log(upper / lower);
    }

    function heatFlux(config, supply, state) {
      var returnTemperature = supply - state.delta;
      var meanDifference = logMeanDifference(supply, returnTemperature, state.roomTemperature);
      if (!meanDifference) return 0;
      var surfaceResistance = 0.0926;
      var totalResistance = surfaceResistance + state.floorResistance + config.spacingResistance;
      return meanDifference / totalResistance;
    }

    function requiredSupply(config, state) {
      var low = state.roomTemperature + state.delta + 0.2;
      var high = 55;
      if (heatFlux(config, high, state) < state.load) return null;
      for (var i = 0; i < 60; i += 1) {
        var middle = (low + high) / 2;
        if (heatFlux(config, middle, state) >= state.load) high = middle;
        else low = middle;
      }
      return high;
    }

    function surfaceTemperatureForFlux(flux, roomTemperature) {
      if (flux <= 0) return roomTemperature;
      return roomTemperature + Math.pow(flux / 8.92, 1 / 1.1);
    }

    function surfaceFluxLimit(state) {
      var difference = state.maxFloorTemperature - state.roomTemperature;
      return difference > 0 ? 8.92 * Math.pow(difference, 1.1) : 0;
    }

    function pipeLength(config, state) {
      return state.area * (100 / config.pitch) * 1.05;
    }

    function hydraulicLoss(length, flowLitresPerHour) {
      if (length <= 0 || flowLitresPerHour <= 0) return 0;
      var diameter = 0.012;
      var density = 994;
      var viscosity = 0.000719;
      var roughness = 0.000007;
      var volumeFlow = flowLitresPerHour / 3600000;
      var sectionArea = Math.PI * diameter * diameter / 4;
      var velocity = volumeFlow / sectionArea;
      var reynolds = density * velocity * diameter / viscosity;
      var friction;

      if (reynolds < 2300) {
        friction = 64 / Math.max(reynolds, 1);
      } else {
        friction = 0.25 / Math.pow(Math.log10(roughness / (3.7 * diameter) + 5.74 / Math.pow(reynolds, 0.9)), 2);
      }

      return friction * (length / diameter) * (density * velocity * velocity / 2) / 1000 * 1.15;
    }

    function carnotIndicator(supply) {
      if (supply === null) return null;
      var sourceKelvin = 273.15;
      var condenserKelvin = 273.15 + supply + 5;
      return condenserKelvin / (condenserKelvin - sourceKelvin);
    }

    function calculate(config, state) {
      var demand = state.area * state.load;
      var length = pipeLength(config, state);
      var loops = Math.max(1, Math.ceil(length / state.loopMax));
      var averageLength = length / loops;
      var totalFlow = 0.86 * demand / state.delta;
      var flowPerLoop = totalFlow / loops;
      var pressureLoss = hydraulicLoss(averageLength, flowPerLoop);
      var supply = requiredSupply(config, state);
      var surfaceTemperature = surfaceTemperatureForFlux(state.load, state.roomTemperature);
      var limitFlux = surfaceFluxLimit(state);
      var status;

      if (state.load > limitFlux) {
        status = { className: "is-bad", text: "limit powierzchni" };
      } else if (supply === null) {
        status = { className: "is-bad", text: "poza zakresem" };
      } else if (supply <= 35) {
        status = { className: "is-good", text: "bardzo niska Tz" };
      } else if (supply <= 40) {
        status = { className: "is-warn", text: "wymaga weryfikacji" };
      } else {
        status = { className: "is-bad", text: "wysoka Tz" };
      }

      return {
        config: config,
        demand: demand,
        length: length,
        loops: loops,
        averageLength: averageLength,
        totalFlow: totalFlow,
        flowPerLoop: flowPerLoop,
        pressureLoss: pressureLoss,
        supply: supply,
        surfaceTemperature: surfaceTemperature,
        limitFlux: limitFlux,
        status: status,
        indicator: carnotIndicator(supply)
      };
    }

    function renderResults(state, calculations) {
      areaOutput.textContent = number0.format(state.area) + " m²";
      loadOutput.textContent = number0.format(state.load) + " W/m²";
      liveSummary.textContent = "Pomieszczenie " + number0.format(state.area) + " m² wymaga " + number0.format(state.area * state.load) + " W mocy grzewczej, czyli " + number0.format(state.load) + " W/m². Temperatura powierzchni wynikająca z tego strumienia to około " + number1.format(calculations[0].surfaceTemperature) + "°C.";

      resultsHost.innerHTML = calculations.map(function (result) {
        var supplyText = result.supply === null ? "> 55°C" : number1.format(result.supply) + "°C";
        return "" +
          "<article class=\"rk-sp-result\">" +
            "<div class=\"rk-sp-result-head\">" +
              "<span class=\"rk-sp-result-title\">Rozstaw " + result.config.pitch + " cm</span>" +
              "<span class=\"rk-sp-status " + result.status.className + "\">" + result.status.text + "</span>" +
            "</div>" +
            "<div class=\"rk-sp-result-values\">" +
              "<div class=\"rk-sp-result-value\"><span>Wymagana temperatura zasilania</span><b>" + supplyText + "</b></div>" +
              "<div class=\"rk-sp-result-value\"><span>Rura bez doprowadzeń</span><b>" + number0.format(result.length) + " m</b></div>" +
              "<div class=\"rk-sp-result-value\"><span>Liczba pętli</span><b>" + result.loops + "</b></div>" +
              "<div class=\"rk-sp-result-value\"><span>Przepływ całkowity</span><b>" + number0.format(result.totalFlow) + " l/h</b></div>" +
            "</div>" +
            "<div class=\"rk-sp-result-foot\">Średnia pętla: " + number1.format(result.averageLength) + " m · przepływ pętli: " + number0.format(result.flowPerLoop) + " l/h · orientacyjna strata rury: " + number1.format(result.pressureLoss) + " kPa.</div>" +
          "</article>";
      }).join("");
    }

    function renderEfficiency(calculations) {
      var valid = calculations.filter(function (result) { return result.indicator !== null; });
      var best = valid.length ? Math.max.apply(null, valid.map(function (result) { return result.indicator; })) : 1;

      efficiencyHost.innerHTML = calculations.map(function (result) {
        var index = result.indicator === null ? 0 : result.indicator / best * 100;
        var value = result.supply === null
          ? "wymagana Tz powyżej 55°C"
          : "Tz " + number1.format(result.supply) + "°C · indeks " + number0.format(index) + "%";
        return "" +
          "<div class=\"rk-sp-eff-row\">" +
            "<span class=\"rk-sp-eff-label\">" + result.config.pitch + " cm</span>" +
            "<div class=\"rk-sp-eff-track\" aria-hidden=\"true\"><div class=\"rk-sp-eff-bar\" style=\"width:" + Math.max(0, Math.min(100, index)) + "%\"></div></div>" +
            "<span class=\"rk-sp-eff-value\">" + value + "</span>" +
          "</div>";
      }).join("");
    }

    function renderPowerChart(state) {
      if (!chartHost) return;
      var width = Math.max(300, Math.round(chartHost.getBoundingClientRect().width || 700));
      var height = width < 470 ? 355 : 390;
      var margin = { top: 24, right: 16, bottom: 52, left: 48 };
      var plotWidth = width - margin.left - margin.right;
      var plotHeight = height - margin.top - margin.bottom;
      var limit = surfaceFluxLimit(state);
      var allValues = [limit];

      chartSeries.forEach(function (series) {
        configs.forEach(function (config) {
          allValues.push(heatFlux(config, series.supply, state));
        });
      });

      var maxValue = Math.max.apply(null, allValues.concat([80]));
      var yMax = Math.ceil(maxValue / 20) * 20;
      var x = function (index) {
        return margin.left + (configs.length === 1 ? plotWidth / 2 : index * plotWidth / (configs.length - 1));
      };
      var y = function (value) {
        return margin.top + plotHeight - value / yMax * plotHeight;
      };

      var grid = "";
      for (var tick = 0; tick <= 5; tick += 1) {
        var tickValue = yMax * tick / 5;
        var tickY = y(tickValue);
        grid += "<line x1=\"" + margin.left + "\" y1=\"" + tickY + "\" x2=\"" + (width - margin.right) + "\" y2=\"" + tickY + "\" stroke=\"#dce8ee\" stroke-width=\"1\"/>";
        grid += "<text x=\"" + (margin.left - 9) + "\" y=\"" + (tickY + 4) + "\" text-anchor=\"end\" fill=\"#687986\" font-size=\"11\">" + number0.format(tickValue) + "</text>";
      }

      var xLabels = configs.map(function (config, index) {
        return "<text x=\"" + x(index) + "\" y=\"" + (height - 18) + "\" text-anchor=\"middle\" fill=\"#465866\" font-size=\"12\" font-weight=\"800\">" + config.pitch + " cm</text>";
      }).join("");

      var seriesMarkup = chartSeries.map(function (series) {
        var points = configs.map(function (config, index) {
          return { x: x(index), y: y(heatFlux(config, series.supply, state)), value: heatFlux(config, series.supply, state) };
        });
        var path = points.map(function (point, index) {
          return (index === 0 ? "M" : "L") + point.x + " " + point.y;
        }).join(" ");
        var circles = points.map(function (point) {
          return "<circle cx=\"" + point.x + "\" cy=\"" + point.y + "\" r=\"4.5\" fill=\"#ffffff\" stroke=\"" + series.color + "\" stroke-width=\"3\"><title>" + series.supply + "°C, " + number1.format(point.value) + " W/m²</title></circle>";
        }).join("");
        return "<path d=\"" + path + "\" fill=\"none\" stroke=\"" + series.color + "\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>" + circles;
      }).join("");

      var limitY = y(limit);
      var limitMarkup = "<line x1=\"" + margin.left + "\" y1=\"" + limitY + "\" x2=\"" + (width - margin.right) + "\" y2=\"" + limitY + "\" stroke=\"#687986\" stroke-width=\"2\" stroke-dasharray=\"7 6\"/>" +
        "<text x=\"" + (width - margin.right) + "\" y=\"" + Math.max(13, limitY - 7) + "\" text-anchor=\"end\" fill=\"#465866\" font-size=\"11\" font-weight=\"800\">limit " + number0.format(limit) + " W/m²</text>";

      chartHost.innerHTML = "" +
        "<svg class=\"rk-sp-chart-svg\" viewBox=\"0 0 " + width + " " + height + "\" role=\"img\" aria-labelledby=\"rk-sp-chart-title rk-sp-chart-desc\">" +
          "<title id=\"rk-sp-chart-title\">Moc podłogi w zależności od rozstawu rur i temperatury zasilania</title>" +
          "<desc id=\"rk-sp-chart-desc\">Cztery linie przedstawiają orientacyjną moc dla temperatur zasilania 30, 35, 40 i 45 stopni Celsjusza przy rozstawach 5, 10, 15 i 20 centymetrów.</desc>" +
          "<text x=\"" + margin.left + "\" y=\"14\" fill=\"#465866\" font-size=\"11\" font-weight=\"800\">W/m²</text>" +
          grid + limitMarkup + seriesMarkup + xLabels +
        "</svg>";
    }

    function update() {
      var state = readState();
      var calculations = configs.map(function (config) { return calculate(config, state); });
      renderResults(state, calculations);
      renderEfficiency(calculations);
      renderPowerChart(state);
    }

    [areaInput, loadInput, floorInput, zoneInput, deltaInput, loopMaxInput].forEach(function (control) {
      control.addEventListener("input", update);
      control.addEventListener("change", update);
    });

    function updateProgress() {
      if (!progress) return;
      var rect = root.getBoundingClientRect();
      var total = root.offsetHeight + window.innerHeight;
      var current = window.innerHeight - rect.top;
      var ratio = Math.max(0, Math.min(1, current / total));
      progress.style.width = ratio * 100 + "%";
    }

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

    if ("ResizeObserver" in window && chartHost) {
      var resizeObserver = new ResizeObserver(function () {
        renderPowerChart(readState());
      });
      resizeObserver.observe(chartHost);
    } else {
      window.addEventListener("resize", function () {
        renderPowerChart(readState());
      });
    }

    var authorTabs = Array.prototype.slice.call(root.querySelectorAll(".rk-sp-author-tab"));
    var authorPanels = Array.prototype.slice.call(root.querySelectorAll(".rk-sp-author-panel"));

    function activateAuthorTab(tab, shouldFocus) {
      authorTabs.forEach(function (item) {
        var selected = item === tab;
        item.setAttribute("aria-selected", selected ? "true" : "false");
        item.tabIndex = selected ? 0 : -1;
      });

      authorPanels.forEach(function (panel) {
        panel.hidden = panel.id !== tab.getAttribute("aria-controls");
      });

      if (shouldFocus) tab.focus();
    }

    authorTabs.forEach(function (tab, index) {
      tab.addEventListener("click", function () {
        activateAuthorTab(tab, false);
      });

      tab.addEventListener("keydown", function (event) {
        var nextIndex = index;
        if (event.key === "ArrowRight" || event.key === "ArrowDown") nextIndex = (index + 1) % authorTabs.length;
        else if (event.key === "ArrowLeft" || event.key === "ArrowUp") nextIndex = (index - 1 + authorTabs.length) % authorTabs.length;
        else if (event.key === "Home") nextIndex = 0;
        else if (event.key === "End") nextIndex = authorTabs.length - 1;
        else return;

        event.preventDefault();
        activateAuthorTab(authorTabs[nextIndex], true);
      });
    });

    update();
    updateProgress();
  }());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
